Jump to content

ForestCZE

Uživatel
  • Příspěvků

    111
  • Registrován

  • Aktivní

Everything posted by ForestCZE

  1. Zdravím, vůbec netuším, od kdy to začalo, ani co to způsobuje. Vyvíjím mód a jednou za čas smažu všechny účty. Když se zaregistruju a přihlásím, vyberu postavu a spawnu se, tak spadne hra. Pawno mi ukazuje rekurzi: Header size: 4508 bytes Code size: 125708 bytes Data size: 673772 bytes Stack/heap size: 262144 bytes; estimated max. usage: unknown, due to recursion Total requirements: 1066132 bytes A ta rekurze se objeví, jakmile naincluduju dof2. Crashdetect mi v serverlogu nic neukáže. Jak to odhalit? Díky
  2. [13:48:17] [13:48:17] Server Plugins [13:48:17] -------------- [13:48:17] Loading plugin: crashdetect.dll [13:48:17] CrashDetect v4.18.1 is OK. [13:48:17] Loaded. [13:48:17] Loaded 1 plugins. A nikde žádné zprávy o crash EDIT: A ta rekurze mě taky děsí Header size: 4508 bytes Code size: 125640 bytes Data size: 673772 bytes Stack/heap size: 262144 bytes; estimated max. usage: unknown, due to recursion Total requirements: 1066064 bytes EDIT2: Rekurzi způsobuje include na registraci <dof2> .. je to normální?
  3. A poradíš prosím tě, jak na to?
  4. Dobře, díky za vysvětlení. A teď zpět k tomu problému. Netuším, proč, ale mám to takto: new slot1[128], slot2[128], allslots[128]; if(personalvehicle[playerid][0] != 0) { format(slot1, sizeof(slot1), "%s", vehName[personalvehicle[playerid][0]]); } else { format(slot1, sizeof(slot1), "Prázdný slot 1"); } if(personalvehicle[playerid][1] != 0) { format(slot2, sizeof(slot2), "%s", vehName[personalvehicle[playerid][1]]); } else { format(slot2, sizeof(slot2), "Prázdný slot 2"); } format(allslots, sizeof(allslots), "%s\n%s", slot1, slot2); ShowPlayerDialog(playerid, D_PERSONALVEHICLES, DIALOG_STYLE_LIST, "Osobní vozidla", allslots, "Potvrdit", "Zpět"); A dialog to vůbec nezobrazí... EDIT: Zapomněl jsem odečíst 400
  5. Super A zeptám se všeobecně. Když je 128 moc, jak mám vědět, kolik nastavit? To mám jít a počítat znak po znaku? (bez sarkasmu, ironie a špatného mínění) EDIT: Nevím, co je špatně, ale dialog se vůbec nezobrazí...
  6. Zdravím ve spolek, mám tento kód: new slot1[128], slot2[128], allslots[128]; if(personalvehicle[playerid][0] != 0) { format(slot1, sizeof(slot1), "%s", vehName[personalvehicle[playerid][0]]); } else { format(slot1, sizeof(slot1), "Prázdný slot 1"); } if(personalvehicle[playerid][1] != 0) { format(slot2, sizeof(slot2), "%s", vehName[personalvehicle[playerid][1]]); } else { format(slot2, sizeof(slot2), "Prázdný slot 2"); } A potřeboval bych tyto dva stringy sečíst do jednoho. Nějak takto: new result[128]; result = slot1."\n".slot2; ShowPlayerDialog(playerid, 0, "Menu", result, "Potvrdit", ""); Jsem zvyklý z PHP, ale v pawnu nevím, jak to bude. Našel jsem, že by to mělo být fcí strcat, ale nejde mi to. Díky předem za pomoc
  7. Jo, díky :-) Podělím se teda ještě o řešení, snad dává smysl public OnPlayerSpawn(playerid) { ... if(spawned[playerid] == false) { ... spawned[playerid] = true; } if(isskinset[playerid] == false) { skin[playerid] = GetPlayerSkin(playerid); isskinset[playerid] = true; } else { SetPlayerSkin(playerid, skin[playerid]); } return 1; }
  8. Už to funguje, jsem vůl. Až jak jsi napsal, ať pošlu OnPlayerSpawn, tak jsem se na něj ještě jednou podíval. Ale když už jsem tu začal, tak vysvětlím, o co šlo. Registrace: DOF2_SetBool(file, "isskinset", false); DOF2_SetInt(file, "skin", 0); Ukládání: DOF2_SetBool(file, "isskinset", isskinset[playerid]); DOF2_SetInt(file, "skin", GetPlayerSkin(playerid)); Načítání: isskinset[playerid] = DOF2_GetBool(file, "isskinset"); skin[playerid] = DOF2_GetInt(file, "skin"); OnPlayerSpawn: public OnPlayerSpawn(playerid) { //různy fce if(spawned[playerid] == false) { //Vše, co hci, aby se stalo jen po prvním spawnu spawned[playerid] = true; //A pak jsem tady měl další podmínku if(isskinset[playerid] == false) //aby to poprvé nenačetlo skin, když je tam 0 po registraci { isskinset[playerid] = true; } else { SetPlayerSkin(playerid, skin[playerid]); } } return 1; } No jenže pak mi došlo, že je to celé vložené v té podmínce if(spawned..., takže se to splní jen poprvé, respektive nikdy...
  9. Zdravím, tak jsem tu zase a dost zoufalý. Když zapnu server a poprvé přijdu na server, tak po spawnutí crashne hra. Jakmile přijdu znovu a server zůstane zapnutý, po spawnutí normálně hraju a žádný crash. Absolutně to nechápu. Kdyby to crashovalo pořád, tak je asi chyba v módu, ale takhle? Crash message: SA-MP 0.3.7-R2 Exception At Address: 0x005E5815 Base: 0x06A70000 Registers: EAX: 0x00000000 EBX: 0x47C34F00 ECX: 0x00000000 EDX: 0x00003F80 ESI: 0x10BC6B60 EDI: 0x06100000 EBP: 0x00000100 ESP: 0x0177FC40 EFLAGS: 0x00210246 Stack: +0000: 0x14EF8F70 0x06100000 0x10BC6B60 0x47C34F00 +0010: 0x00000000 0x00000000 0x00000000 0x00000001 +0020: 0x00000000 0x00000000 0x6DB3C00B 0x307C13D6 +0030: 0x3037C782 0x3FEFFADB 0x10BC6B60 0x00829B97 +0040: 0xE0000000 0x3FEFFB19 0xE0000000 0x3FF0CCCC +0050: 0x00000100 0x0177FD7C 0x0083D978 0xFFFFFFFF +0060: 0x005E92CD 0x00001091 0x10BC6B60 0x0177FD8C +0070: 0x00000000 0x06101000 0x06B0ACB3 0x0177FCC0 +0080: 0xBF3C08A9 0x0060EB2B 0x0060EB72 0x10B9A460 +0090: 0x10BC6B60 0x0177FD8C 0x00000000 0x0177FD28 +00A0: 0x00000000 0x00000000 0x3F800000 0x10BC6B60 +00B0: 0x44FD6258 0xC4B1AC30 0x418A2D5D 0x10BC6B60 +00C0: 0x071E3DA0 0x0177FD7C 0x06B3E8EB 0xFFFFFFFF +00D0: 0x06B0E0B0 0x10B9A460 0x10BC6B60 0x0177FD8C +00E0: 0x0177FD34 0x00000800 0x082000A1 0x10BC6B60 +00F0: 0x0086D168 0x00568642 0x00000001 0xAE030D00 +0100: 0x00000099 0x0053C09A 0x0000001A 0xFFFFFFFF +0110: 0x00000000 0x27FC62DE 0x06AD4506 0xFFFFFFFF +0120: 0x06B0DBDE 0x0000001A 0xAE028AD0 0x00000000 +0130: 0x16494B80 0x0177FD64 0x0177F604 0x0177FF70 +0140: 0x06B25F34 0x06B4A688 0x00000002 0x7541DEE0 +0150: 0x0053E986 0x00000001 0x00000000 0x00000001 +0160: 0x0053ECC2 0x00000001 0x00619B71 0x0000001A +0170: 0x00000001 0x00000001 0x0000000A 0x00748DA0 +0180: 0x0000001A 0x00000001 0x74AF4FB0 0x00000000 +0190: 0x0177FF80 0x002EC000 0x01828CBE 0x4F2E0277 +01A0: 0x073F0330 0x00000008 0x00000100 0x00000008 +01B0: 0x00000102 0x43C80000 0x43960000 0x00000000 +01C0: 0x00000000 0x00000320 0x00000258 0x00000000 +01D0: 0x00000001 0x0010017C 0x00000200 0x00000000 +01E0: 0x012C0190 0x000B6183 0x00000190 0x0000012C +01F0: 0x0000002C 0x7451A8BF 0x00825EA4 0x0177FF70 +0200: 0x00825EA4 0x00000000 0x002EC000 0x00821D17 +0210: 0x00821D27 0xE195367C 0x0177FF80 0x008246F1 +0220: 0x00400000 0x00000000 0x03C76DEB 0x0000000A +0230: 0x00000094 0x00000004 0x0000000A 0x040A08AE +0240: 0x00000001 0x00000000 0x00000000 0x00000000 +0250: 0x00000000 0x00000000 0x00000000 0x00000000 +0260: 0x00000000 0x00000000 0x00000000 0x00000000 +0270: 0x00000000 0x00000000 0x00000000 0x00000000 SCM Op: 0x77E, lDbg: 0 LastRendObj: 1226 Game Version: US 1.0 State Information: Ped Context: 0 Zachrání mě někdo prosím? Díky EDIT: Zakomentoval jsem vše v OnPlayerSpawn a hra necrashuje. Takže beru zpět a přece jen je asi chyba v módu... EDIT2: Tak jo, už vím, jak to je. Při přihlášení si načítám skin z proměnné a v OnPlayerSpawn mám: SetPlayerSkin(playerid, skin[playerid]); Takže na začátku si vyberu třeba CJe ID 0 a po spawnu se mi načte například holka ID 193. Problém je v tom, že po smrti se mi načte zpět skin, který jsem si vybral na začátku, tedy CJ ID 0. Zajímavost na tom je ta, že když mi to vrátí toho CJe a nechám si vypsat aktuální skin, tak mám 193. Z toho plyne, že je to jako kdyby nějaký bug ve vykreslení nebo co. No a tak jsem na prasáka do OnPlayerSpawn dal: SetPlayerSkin(plaayerid, GetPlayerSkin(playerid)); Abych si jakože jenom zaktualizoval postavu. A to mi crashuje hru... Netuším, jak z toho ven...
  10. Na konci závorka navíc, ale jinak bez errors. Díky EDIT: Už to šlape, jak má
  11. Asi je to nesmysl tak, jak jsem to napsal. Jde o to, že to out je string a já to celé potřebuji přetypovat na integer :-) A potom jednotlivé hodnoty na indexech 0-3 sečíst.
  12. Moc nechápu dotaz. Jede to normálně po sobě. Např: new id[3]; new getnick[MAX_PLAYER_NAME], nick[16]; GetPlayerName(playerid, getnick, sizeof(getnick)); format(id, sizeof(id), "Tvoje id je: %i", playerid); SendClientMessage(playerid, C_WHITE, id); //Vypíše ID format(nick, sizeof(nick), "Tvůj nick je: %s", getnick); SendClientMessage(playerid, C_WHITE, nick); //Vypíše nick
  13. A jak máme vědět, že řádek 80 je zrovna ten a ten a 91 ten atd.?
  14. Zkusil jsem s tím pracovat dál nějak takto: new out[4][4], count; count = strexplode(out, inputtext, " "); for(new i = 0; i < count; i++) strval(out[i]); new total = (out[0]*86400) + (out[1]*3600) + (out[2]*60) + out[3]); if(total > promenna) Tvuj aktualni cas je mensi nez zadany... A errrors: error 033: array must be indexed (variable "out") error 029: invalid expression, assumed zero warning 215: expression has no effect Předpokládám, že ta proměnná total musí být také pole. Asi?
  15. Zdravím, existuje v pawn stejná funkce jako explode(); v PHP? Mám dialog (viz příloha) a potřeboval bych dle mezer vyexplodovat do pole: new pole[128] = explode(" ", inputtext); strval(pole[0]); strval(pole[1]); strval(pole[2]); strval(pole[3]); Nějak tak, abych s těmi čísly mohl pracovat dál. Jak na to? Díky předem za pomoc.
  16. Zdravím, potřeboval bych poradit. Mám tento kód v OnDialogResponse: new test[128]; format(test, sizeof(test), "Heslo: %s", inputtext); SendClientMessage(playerid, C_RED, test); Všechno funguje v pořádku, to heslo mi to vypíše. Já si to heslo potřebuji uložit, abych s ním mohl pracovat dál mimo funkci, takže mám něco jako: new pass[MAX_PLAYERS]; pass[playerid] = inputtext; To mi ale hází, že to musí být pole. error 006: must be assigned to an array Dokázal by mi někdo poradit? Díky
  17. Podle toho includu by to mělo být: DOF2::num_hash(password) Je to možné? EDIT: Include mám odtud
  18. Zdravím, po dlouhé době se vracím k pawnu a zjistil jsem, že je plno nových funkcí a možností. Narazil jsem na DOF2 systém. Když vytvořím soubor DOF2_CreateFile("soubor.txt", "mojeheslo"); Tak to uloží něco jako: password = 218956422 O jaký systém hashování se jedná? Když si to vytáhnu pomocí: DOF2_GetInt("soubor.txt", "password"); Tak to pak porovnám se zadaným stringem. Jak zadaný string zahashovat, aby to sedělo s tím, který je v souboru? Děkuji předem za pomoc
  19. Dobře, díky moc všem za objasnění
  20. Tak kdy je tedy potřeba? Třeba tady je TuT na Fuel System a je tam public timer_fuel_lower() a public timer_refuel(playerid) Ten první má return a druhý ne, tak jako já to nechápu
  21. Jo, pravda je to funkce A ten příklad třeba: public UkazPenize() { for(new all; all < MAX_PLAYERS; all++){ if(IsPlayerConnected(all)){ SetPlayerScore(all, GetPlayerMoney(all)); } } }
  22. Neptám se na funkce, ale na publicy a každý public daný od SA-MP má return 1 popřípadě 0, tak proto se ptám, jestli i můj vytvořený public musí mít return a kdy.
  23. Zdravím, chtěl bych objasnit jednu věc. Když si vytvořím libovolný public - Kdy v něm dát return 1; a kdy ne? Vždycky jsem měl za to, že pokud je obsah publicu vyvolán SetTimerem, tak tam return být nemá a pokud je zavolán třeba v příkazu, tak tam return patří. Koukám na nějaké návody a všímám si, že je to asi obráceně, než jsem si celou dobu myslel Tak jak to tedy je? Díky moc za objasnění
  24. Snížil jsem vykreslovanou vzdálenost a vypnul frame limiter s antialisingem. Od té chvíle už to necrashuje.
×
×
  • Create New...