Jump to content

The hidden face

Uživatel
  • Příspěvků

    810
  • Registrován

  • Aktivní

  • Vítězných dnů

    22

Everything posted by The hidden face

  1. Díky za odpověď a za radu. Bylo to opravdu antivirákem. Používám Bitdefender a tohle mi nikdy nedělal. Pokud vypnu ochranu, tak začnou weby fungovat. Bohužel tyto události nijak nezaznamenává. V logu jsou pouze informace o aktualizacích a o hrozbách v PC ne však na webu. Free verze nicméně nemá žádné nastavení, co se webu týče, takže se asi budu muset kouknout po něčem jiném. :D Ještě jednou moc díky!
  2. Určitě. Nešlo mi to například zde na tomto eshopu nebo například tento přihlašovací formulář. Dlouhou dobu jsem měl problémy s aktualizací Windows 10, stále to někde selhávalo. Včera se mi konečně povedlo aktualizovat, ale bohužel to nebyl kámen úrazu. Co je ještě zvláštnější, tak to nejde ani na druhém PC a na NTB. Čekal bych, že to může být třeba špatným doplňkem ve Chromu, jelikož jsem přihlášený na všech PC pod stejným účtem se zapnutou synchronizací, ale to by přeci neovlivnilo i ostatní prohlížeče? Zatím se zkusím odhlásit a vyčistit veškerá data prohlížečů.
  3. Zdravím, poslední dobou mám velmi zvláštní problém. Na mém druhém PC nejdou odesílat na spoustě webů formuláře - nejde se registrovat, přihlásit či přidávat produkty do košíku na eshopech. Čekal bych, že to bude problém na straně prohlížeče v něčem jako je cache. Nicméně to nejde v žádném prohlížeči ( zkoušel jsem Chrome / Operu / Microsoft Edge a dokonce IE). Stránka se vždy refreshne, nicméně samotná akce, která má následovat se již neprovede. Zajímavé je, že na některých webech jako je například Facebook se přihlásím v pohodě. Má někdo s něčím podobným zkušenosti?
  4. Takže to vlastně odpovídá té druhé konfiguraci. Díky za odpověď.
  5. Zdravím ve spolek, měl bych dotaz na někoho zkušeného ohledně nastavení httacces souboru, bohužel se v něm úplně nevyznám. Na webu jsme měli problém, že se nám automaticky doplňovalo druhé www, tudíž uživatelům vyskočila hláška o problému se zabezpečením. Odstranil jsem tedy z httacces část starající se o přesměrování na https a na www. Po několika testech jsem došel k závěru, že si to ošéfuje prohlížeč sám a nemusím tedy nic řešit. To se ovšem týká pouze indexu. Jak mile už je nějaká URL odkazující na konkrétní obsah na webu, tak se ani www a ani https samo nedoplní. Vysvětlí mi někdo proč tomu tak je, a zda je nějaký univerzální konfigurace, která automaticky doplní www jen v případě, že ji nedoplnil sám prohlížeč a automaticky bude používat zabezpečené připojení? Bohužel jsem se díky cache dozvěděl o problému až od uživatele a nerad bych, aby se tato situace někdy opakovala. Vyzkoušel jsem již různé konfigurace ze stackoverflow, nicméně dost často chybí nějaké dovysvětlení, jak to funguje, nebo konfigurace není funkční. Ta chybná konfigurace (podle reakcí však správná), kterou jsem doteď používal byla též tam odtud, takže bych byl radši, kdyby mi k tomu někdo dal i menší vysvětlení. Děkuji za každou odpověď. Edit: Pro ukázku, popsané chování dělala tato konfigurace: RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} ^(.*)$ [NC] RewriteRule (.*) https://www.%1/$1 [R=301,L] Nyní jsem narazil na tuto konfiguraci: RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] V čem se liší? Bude ta druhá fungovat korektně?
  6. The hidden face

    pomoc CHROMECAST 3

    Pokud ostatní služby jdou v pořádku, tak by neměl být problém v tom, v čem jsem psal. Vypadá to. že má Chromecast s Youtube problém. Ignoruje to totiž nastavení tvého telefonu a automaticky začíná přehrávat video při kvalitě 480p. Někomu se to po pár vteřinách rozjede na FullHD (Chromecast by se měl přizpůsobovat rychlosti sítě), ale většina uživatelů to musí řešit tak, že nejprve video pustí v telefonu, manuálně to nastaví na FullHD a až potom to odešlou do CC. Nicméně je to prý potřeba dělat skoro po každém videu, takže to je dost debilní. Možná to je jen kvůli dočasným omezením, které YouTube provedel v závislosti na velké vytíženosti (defaultní kvalitu změnil na 480p), ale nevím, zda je toto omezení stále aktuální.
  7. The hidden face

    pomoc CHROMECAST 3

    Záleží asi jak, kde. Co jsem se já koukal, tak třeba u CZC dávají adaptér k tomu. Ale to není úplně předmětem tohoto topicu. Vyzkoušej, prosím, ty tipy a poděl se o výsledky...
  8. The hidden face

    pomoc CHROMECAST 3

    Já ti rozumím. Jenže různé adaptéry poskytují různé napěti. Nicméně jsem se dočetl, že jejich adaptér dodává napětí o 5V, 1A. Což je poměrně standard. Proto se mrkni na adaptér (měl by tam být štítek, nebo něco takového), kolik napětí má na výstupu. Jak jsem psal minimum je 5V, 1A. Každopádně, pokud má být v balení i ethernet adaptér a není tam, tak bych zboží vrátil. Už i kvůli případným reklamacím, kdy ti reklamaci nemusí uznat jen díky používání neoriginálního adaptéru. Ethernetový adaptér použiješ, když chceš Chromecast připojit po kabelu a zároveň ho napájet. Takže by mělo být jedno. zda máš ethernet adaptér či normální.
  9. The hidden face

    pomoc CHROMECAST 3

    Zdravím, zřejmě nejsi jediný, kdo řeší podobný problém, je toho plný internet. Každopádně nejdříve bych se koukl do nastavení v telefonu a zkusil na pevno nastavit kvalitu obrazu na FullHD (automatická kvalita nemusí fungovat správně). Další, co by mě napadlo, tak v nastavení routeru zvednout pro Chromecast prioritu. A velmi často byl problém právě v napájení. Zkontroluj, jaký výstup poskytuje tvůj adaptér a zda je to vůbec dostačující pro Chromecast.
  10. Mohu poskytnout Easeus, jestli máš zájem, tak mě kontaktuj přes PM.
  11. Zdravím, dej sem prosím ještě kód, kde pickupy vytváříš. Proč ukládáš vůbec pickupid do pole, když máš pouze jeden? Rozhodně zde nedoporučuji používat ELSE, už jen díky tomu že hodnotu v Package[PICKUP] nuluješ, což ti může způsobovat právě toto chování (například pickup pro vyléčení bude mít právě id 0, ty jdeš sebrat pickup s penězi, který má id 1, sebereš jej a proměnnou pickupu s penězi nastavíš na 0, pak jdeš sebrat ten pro vyléčení, nojo, jenže proměnná, už je vynulovaná, tudíž pickupid s id 0 zachytí první blok a do else se to už nedostane). Když už, tak nenastavovat nulu, ale nějakou zápornou hodnotu, které createPickup nevrací. Nějak se ztrácím v těch tvých proměnných, určitě by bylo lepší ty proměnné pro pickupy nějak sjednotit. Např.: enum pickups{ //vytvoříš enum, kde si pojmenuješ pickupy podle funkce, enum pak použíješ pro tvorbu pole MONEY, HEALTH }; new PICKUP[pickups]; //vytvoříš pole pro pickupy o velikosti enumu (2) //a pak už jen vytváříš pickup PICKUP[MONEY] = createPickup(...); PICKUP[HEALTH] = createPickup(...); //a v OnPlayerPickUpPickup() if(pickupid == PICKUP[MONEY]) { ... } else if(pickupid == PICKUP[HEALTH]) { ... } //a pro stronování proměnných rozhodně nepoužívej nulu (může ji mít totiž nějaký jiný pickup), ale záporné hodnoty A ještě jestli můžu doporučit, nepoužívej v cyklu pro odstranění ikony hráčům pevně danou hodnotu - 100, ale nějakou konstantu, kterou můžeš kdykoliv změnit (obecně využívej proměnných a konstant v cyklech, nejen zde). A ještě lépe můžeš použít funkci GetPlayerPoolSize(), která ti vrátí největší id připojeného hráče.
  12. Zdravím, aby tvé téma bylo prospěšné komunitě, rozepiš, prosím, svůj problém (stačí třeba ten error) a jak si jej řešil. Cílem help topiců není jen pomoc autorům, ale i dalším uživatelům, kteří by mohli mít stejný problém. Díky!
  13. Vytvoříš si vlastní funkci... Stačí ti na to Fopen. Naformátuješ si cestu a zkusíš tam vytvořit soubor (režim io_write). Pak jen zkontroluješ, zda se ti soubor otevřel. Pokud ano, tak soubor uzavřeš a poté ho smažeš (jelikož ho už nepotřebuješ) a vrátíš úspěch - 1 -> podařilo se soubor vytvořit, takže složka/y logicky musela/y existovat. Pokud se ovšem soubor otevřít (vytvořit) nepovedlo, tak neexistovaly složka/y, kde ten soubor měl být, takže vrátíš neúspěch - 0.
  14. Vyřešeno? Když tak napiš, jak si svůj problém vyřešil //Edit: Zakladatel topicu nereaguje na pokusy o pomoc dalších uživatelů. Jako nejlepší odpověď bude označena ta, co mohla navést zakladatele na správné řešení. Lock!
  15. Sice měníš defaultní hodnoty nepovinných parametrů, nicméně pokud sis kód s objekty nějak vygeneroval, tak generátory dost často do parametrů zadávají i tyto nepovinné údaje, čímž samozřejmě přepíší ty tvé "defaultní" hodnoty. Koukni se proto, do kódu, zda při vytváření dynamického objektu tam nedopatřením nezadáváš i nepovinné parametry.
  16. Dej sem kód, konkrétně tu sekci kde kontroluješ, zda je hráč poblíž zatýkajícího policisty.
  17. Záleží hlavně na tobě. Budu opakovat to, co se zde na fóru pořád píše. Dini je starý, pomalý a neoptimalizovaný systém. Existuje za něho spousta náhrad - třeba jak už jsi zmínil dof2. Práce s dof2 je prakticky totožná jako s dini, až na pár malých rozdílů. Myslím si, že zde, je více než podrobný návod (srovnání rozdílů použitelnosti). Nebo y_ini (ten už se používá zase trochu jinak... - návod zde). Objevilo se i dini2 (gini). Možností je opravdu mnoho a pokud budeš hledat, tak nějaké rychlostní testy najdeš sám, třeba na offiko fóru. Jak píše xhunterx další alternativou je SQL - super. Když máš třeba i web a chceš ho mít propojený s daty tvého serveru - nejednoduší cesta. Nicméně SQL je sám osobně jazyk (dotazovací) a měl by ses ho naučit nejdříve správně používat. Je úplně jiný oproti systémům výše, ale pokud se ho naučíš a budeš ho používat, rozhodně neprohloupíš. SQL má široké využití, takže se ti jeho znalost bude rozhodně hodit.
  18. Pokud používáš 0.3.7, bude lepší, když použiješ GetPlayerPoolSize() místo MAX_PLAYERS_EX. Fce GetPlayerPoolSize() vrací nejvyšší playerid připojené na serveru. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) { //tady kód } K tvému problému, v podmíkách v cyklu máš místo info[i][ALevel] == 1 toto info[playerid][ALevel] == 1 Takže porovnáváš admin level toho hráče, co zavolal příkaz, ne toho, kterého momentálně procházíš cyklem. To vysvětluje to, proč to vypisuje hráče, který admin level nemá. Příkaz voláš ty.. projdeš podmínkou, ale v cyklus prochází jiného hráče a zjistí jméno toho dotyčného hráče, ale vypíše ho s tvým levelem. Stejně tak je divná i tato podmínka if(info[playerid][ALevel] == 0) return ShowPlayerDialog(playerid,d_admins1,DIALOG_STYLE_MSGBOX,"Online A-Team","Momentálne nie je prítomný žiaden člen A-Teamu","Potvrdiť",""); která opět kontroluje admin level hráče, který příkaz volá...
  19. A co pořád ten cyklus v CreatePaska? Neříkej, že ti to pracuje korektně.. :/ Když jsi ještě jednou přečteš, co jsem ti psal, tak zjištíš, že ne.. Vždyť na jednom místě nevytváříš jednu pásku, ale hned několik... A když už by jsi to chtěl, tak použij tvojí konstantu MAX_PASKA a ne velikost proměnné paska..
  20. //Edit: Tak je to koukám všechno úplně jinak... Ty ve stokcu CreatePaska vyžaduješ parametry, které vůbec nepoužíváš? Proč? Nejdřív vše zjištíš v bloku pro položit, tam zavoláš stock a ve stocku je zjišťuješ znovu? A ke všemu špatně - jak píši výše? Nejpřehlednější by pro tebe bylo chtít jen parametr playerid, a pozice si zjistit až v tom stocku. Stejně tak i to editování.. Proč ten kód vypadá, jak když ho psali minimálně 2 lidi? Vždyť máš pokaždé jinou strukturu :/ Kdyby jsi dodržel tu strukturu psaní kódu, jak máš u DeletePaska, koukni se jak by tvůj příkaz byl o dost přehlednější...
  21. A to není jediný problém... stock CreatePaska funguje na stejném principu, jak ten případ zmíněný výše. Místo playerid využíváš proměnné pro cyklus.. :/ Takže tyhle funkce: GetPlayerPos(i, px, py, pz); GetXYInFrontOfPlayer(i, px, py, 1.5); Ti opravdu nemohou pracovat korektně. To za prvé.. Za druhé. Proč je vytváření pásky v cyklu? Neznám pravý smysl tvého kódu, ale takhle vytvoříš na jednom místě sizeof(paska) pásek. Což je další věc co nechápu... V DeleteClosestPaska využíváš konstanty MAX_PASKA a tady ZJIŠŤUJEŠ VELIKOST PROMĚNNÉ, NIKOLIV JEJÍ HODNOTU. Teoreticky je díky chybě ve tvém kódu nevytvoříš na jednom místě, ale tam kde se zrovna pohybuje hráč s id, které zrovna procházíš. Pro pochopení: zavoláš příkaz, za předpokladu, že jsi id 0 se první páska vytvoří opravdu u tebe, v dalším cyklu ovšem zjišťuješ pozice úplně jiného hráče (id 1) a u něho se vytvoří další páska, a takhle dál a dál... Takže rozhodně smaž cyklus ve vytváření pásky, protože předpokládám, že chceš na jednom místě vytvořit pouze jednu pásku. Nezapomeň do tvého stocku přidat parametr playerid a využít ho. A jak zprovoznit, aby jsi zjistil volné ID pro pásku? Stačí ti k tomu globální proměnná, kam budeš ukládat aktuální ID pásek - při vytváření pásky ID použiješ a následně ho navýšíš. Ovšem díky tomu, že pásky můžeš i odstranit, by ti vznikaly prázdná místa... Tam by bylo řešení též jednoduché, stačilo by si vytvořit pole a tam ukládat ID, která jsou opět volná. V praxi se to ovšem moc nedělá a vždy se používá nové ID, vracet se ke starému je risk a akorát si zakládáš na zmatky. Proto si myslím, že by bylo nejlepší řešení vytvořit si tu globální proměnnou pro ID a dále pro počet vytvořených pásek. Kdy ID by samozřejmě uchovávalo další volné ID pro pásku a počet pásek aktuální počet vytvořených pásek, takže při vytváření by jsi proměnnou navýšil a při mazání snížil. Pak by jsi jen při volání příkazu kontroloval, zda hráči nepoložili více pásek než jsi chtěl (určitě to budeš limitovat - přeci na serveru nechceš mít přepáskováno.. )
  22. Tak musí být chyba někde jinde... Zkus si s tím různě pohrát, změnit id, nebo vypni všechny ostatní fs,... musí tam být nějaký malinký zádrhel :/
  23. Tak ještě ukaž kód, kde voláš ShowPlayerDialog.
  24. V OnDialogResponse(...) musíš rozlišovat návratové hodnoty. Pokud podle id najdeš nějaký dialog a popřípadě vykonáš nějaký kód, tak vrátíš 1 (return 1;). Tím řekneš dialog byl nalezen, dále v hledání nepokračuj. Pokud ovšem dojedeš až na konec callbacku bez toho, aniž bys našel správný dialog, tak vrať 0 (return 0;). Tím řekneš, že jsi dialog nenašel a má pokračovat v dalších skriptech. Jelikož se OnDialogResponse(...) volá nejdřív ve filtersciptech, tak máš chybu nejspíš v nějakým z těch fs, jelikož nejspíš vracíš vždy 1, nehledě na to zda jsi dialog našel nebo ne. Takže tvůj kód by ve všech FS a GM měl vypadat nějak takto: public OnDialogResponse (playerid, dialogid, response, listitem, inputtext []) { switch(dialogid) { case DIALOG_1: { //nějaký kód dialogu - response, listitem, atd... return 1; //dialog si našel a vykonal jsi, co jsi chtěl - vracíš 1; } case DIALOG_2: { //nějaký kód dialogu - response, listitem, atd... return 1; //dialog si našel a vykonal jsi, co jsi chtěl - vracíš 1; } //po posledním dialogu - tedy na konci callbacku vracíš 0 } return 0; //vracíš 0 jako že dialog nebyl nalezen a má hledat dále někde jinde } Ještě by byla možnost, že by se ti to mohlo krýt s jiným (stejná ID), ale to by se ti zobrazil aspoň nějaký jiný....
×
×
  • Create New...