Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

The hidden face

Ověřený uživatel
  • Příspěvků

    797
  • Registrován

  • Aktivní

  • Vítězných dnů

    17

The hidden face last won the day on Červenec 14 2018

The hidden face had the most liked content!

Reputace

72 Jethro

About The hidden face

  • Moto
    It's not a bug it's a feature
  • Narozeniny 1.1.1970

Návštěvníci

1 011 profile views
  1. The hidden face

    pomoc Existuje?

    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.
  2. The hidden face

    pomoc ParadiseWorld

    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!
  3. 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.
  4. Dej sem kód, konkrétně tu sekci kde kontroluješ, zda je hráč poblíž zatýkajícího policisty.
  5. The hidden face

    pomoc Registrace?

    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.
  6. 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á...
  7. 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..
  8. //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ší...
  9. 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.. )
  10. 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 :/
  11. Tak ještě ukaž kód, kde voláš ShowPlayerDialog.
  12. 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ý....
  13. Promiň, nějak mi uniklo, že sis ho koupil bez OS Já myslel, že jen reinstaluješ, ale OK Tak pak teda zkus to, co radí Tanga
  14. Zkus toto řešení: ZDE. Pokud nepomůže, tak updatni BIOS: Na stránkách výrobce desky si stáhni nejaktuálnější BIOS tvé konkrétní MB a updatni ho. - Též v nastavení BIOSU přes nástroj M-Flash. Na YT určitě bude nějaký návod!! Důležité je počítač nevypínat a ani nevytahovat při upgradu flash disk. Pokud víš, že máš s nějakou flash problémy, nebo snad s někým USB portem (že by třeba trpěl samovolným odpojováním flash), tak využij jen ten, který víš, že najisto funguje.. Je to dost důležité, protože jinak by sis mohl dost zavařit.... Pokud snad i často vypadává proud, tak se vyplatí si někde půjčit záložní zdroj Hodně štěstí přeji!
  15. Néééé, to rozhodně nemusíš. Stačí nějakým odhadem vydedukovat.. Někdy samozřejmě nemůžeš vědět a prostě si tipneš - radši více než méně, ale zrovna u názvů aut si to zjistit dokážeš. Určitě máš nějaké pole s názvy aut, stačí se porozhlédnout po nejdelším názvu, mě třeba až na druhý pohled přišel největší tento: "Luggage Trailer A", což má 17 znaků. Dejme tomu, že jsem nenašel ten největší tak si dám rezervu třeba 25 nebo 30. Tady vidíš, že jsi zrovna ušetřil zbytečných 100 znaků. U spousty věcí máš třeba už velikost pevně danou (zde). Například jméno hráče může nabýt maximálně 24 znaků, ale dává se jich 25 pro nulový znak (konečný znak - EOS). Takže třeba zde by bylo úplně zbytečně dělat pole znaků na jméno o velikosti 128 znaků... a divil by ses kolik lidí to dělá. Samozřejmě s dnešní technikou už je to celkem zanedbatelný, když tvůj server nepoběží na bramboře.... ale není špatný se snažit pamětí šetřit.. pokud jednou budeš programovat, taky po tobě bude požadováno, aby tvůj program byl co nejúčinnější, ale zároveň nesebral spoustu výkonu (=optimalizovaný). Takže rozhodně není na škodu se naučit šetřit
×
×
  • Create New...