Problem(error/warning): Koristim YSI 5.1. Komanda /createhouse je radila top, cim je dosla do 23 id ona vise kao ne postoji komanda na serveru. A max kuca 50. Ubacio sam crashdetect i izbacio mi je ovo, malo sam cesljao po netu nesto za MALLOC ali opet isto se desava.
Deo skripte: [pawn]Vaš odgovor[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [pawn][18:24:39] [debug]
[18:24:39] [debug] Parameter count corrections:
[18:24:39] [debug]
[18:24:39] [debug] The 1st mangled argments (e.g. `<1073741823 arguments>`) below should read `<2 arguments>`
[18:24:39] [debug]
[18:24:39] [debug] Run time error 4: "Array index out of bounds"
[18:24:39] [debug] AMX backtrace:
[18:24:39] [debug] #0 0021f764 in ?? (0, 2967376, 0) from sp-rpg.amx
[18:24:39] [debug] #1 00048128 in ?? (0, 2967324, 0) from sp-rpg.amx
[18:24:39] [debug] #2 0004ac80 in ?? (0, 2967324, 0, 0, 0, 0, 8, 0, 2967324, 0, ... <1073741813 arguments>) from sp-rpg.amx
[18:24:39] [debug] #3 000178c0 in public OnPlayerCommandText (0, 2967324) from sp-rpg.amx[/pawn]
Slika/video ingame problema(obavezno ako je ingame problem): link slike
daj cmd cijelu
Citat: bepo poslato Jun 05, 2023, 19:18:40 POSLE PODNE
daj cmd cijelu
Evo ga
[pawn]YCMD:createhouse(playerid, const string: params[], help)
{
if(player_ADMIN[playerid] < 5)
return Error(playerid, "Nemate dozvolu za ovu komandu - niste admin level 5.");
if(admin_DUZNOST[playerid] == 0)
return Error(playerid, "Niste na admin duznosti - koristite /aduty kako bi koristili komande!");
new kucaID = NextHouseID(), vrsta, Float:Poz[3];
if(sscanf(params, "i", vrsta))
{
Usage(playerid, "/createhouse <vrsta>");
Info(playerid, "1. Mala kuca. | 2. Srednja kuca. | 3. Velika kuca. | 4. Villa.");
return 1;
}
if(vrsta < 1 || vrsta > 4)
return Error(playerid, "Vrsta ne moze biti iznad 4 i ispod 1!");
if(kucaID >= MAX_KUCA)
return Error(playerid, "Maximum kuca je ogranicen ne mozete ici iznad!");
GetPlayerPos(playerid, Poz[0], Poz[1], Poz[2]);
switch(vrsta)
{
case 1:
{
kuca_INT_X[kucaID] = 2308.7529;
kuca_INT_Y[kucaID] = -1212.5588;
kuca_INT_Z[kucaID] = 1049.0234;
kuca_ID[kucaID] = MALAKUCA;
kuca_INT_ID[kucaID] = 6;
kuca_CENA[kucaID] = 350000;
kuca_LEVEL[kucaID] = 5;
}
case 2:
{
kuca_INT_X[kucaID] = 318.6055;
kuca_INT_Y[kucaID] = 1114.9292;
kuca_INT_Z[kucaID] = 1083.8828;
kuca_ID[kucaID] = SREDNJAKUCA;
kuca_INT_ID[kucaID] = 5;
kuca_CENA[kucaID] = 600000;
kuca_LEVEL[kucaID] = 10;
}
case 3:
{
kuca_INT_X[kucaID] = 386.6623;
kuca_INT_Y[kucaID] = 1471.7719;
kuca_INT_Z[kucaID] = 1080.1875;
kuca_ID[kucaID] = VELIKAKUCA;
kuca_INT_ID[kucaID] = 15;
kuca_CENA[kucaID] = 800000;
kuca_LEVEL[kucaID] = 15;
}
case 4:
{
kuca_INT_X[kucaID] = 2324.3840;
kuca_INT_Y[kucaID] = -1149.0188;
kuca_INT_Z[kucaID] = 1050.7101;
kuca_ID[kucaID] = VILLA;
kuca_INT_ID[kucaID] = 12;
kuca_CENA[kucaID] = 1200000;
kuca_LEVEL[kucaID] = 15;
}
}
kuca_VW_ID[kucaID] = kucaID;
kuca_OWNERPROVERA[kucaID] = 0;
strmid(kuca_OWNERIME[kucaID], "Niko", 0, strlen("Niko"), 255);
kuca_EXT_X[kucaID] = Poz[0];
kuca_EXT_Y[kucaID] = Poz[1];
kuca_EXT_Z[kucaID] = Poz[2];
kuca_NOVAC[kucaID] = 0;
kuca_ZAKLJUCANO[kucaID] = 1;
kuca_NEAKTIVNOST[kucaID] = 0;
create_House(kucaID);
save_House(kucaID);
Torq(playerid, "Info: Kreirali ste kucu id: %d, vrsta: %s, cena: $%d, level: %d.", kucaID, HouseID(kuca_ID[kucaID]), kuca_CENA[kucaID], kuca_LEVEL[kucaID]);
adminPoruka(0x5DA335AA, "Admin Info: Admin %s je kreirao kucu id: %d, vrsta: %s, cena: $%d, level: %d.",
ReturnPlayerName(playerid), kucaID, HouseID(kuca_ID[kucaID]), kuca_CENA[kucaID], kuca_LEVEL[kucaID]);
Log_Write(ADMINLOG, "(%s) Admin %s je kreirao kucu id: %d, vrsta: %s, cena: $%d, level: %d.",
ReturnDate(), ReturnPlayerName(playerid), kucaID, HouseID(kuca_ID[kucaID]), kuca_CENA[kucaID], kuca_LEVEL[kucaID]);
return 1;
}[/pawn]
na koliko ti je prije bilo max kuca
Opisi detaljnije problem
Citat: realnaith poslato Jun 05, 2023, 20:21:11 POSLE PODNE
Opisi detaljnije problem
Ovako, krenuo sam da kreiram kuce po serveru i kada je doslo od id 23 kuce, od tada mi server prikazuje SERVER: unknown command, kao da ne postoji. A jos veca fora kada samo upisem /createhouse radi, ali cim upisem /createhouse vrstu(1/2/3/4) nece komanda. Max kuca mi je 50. Ubacio sam crashdetect i to mi izaslo. Nmg da provalim koji je djavo.
Citat: hexx. poslato Jun 05, 2023, 20:25:59 POSLE PODNE
Ovako, krenuo sam da kreiram kuce po serveru i kada je doslo od id 23 kuce, od tada mi server prikazuje SERVER: unknown command, kao da ne postoji. A jos veca fora kada samo upisem /createhouse radi, ali cim upisem /createhouse vrstu(1/2/3/4) nece komanda. Max kuca mi je 50. Ubacio sam crashdetect i to mi izaslo. Nmg da provalim koji je djavo.
Posalji delove vezane za kuce kao i logove kreiranja kuce
Citat: realnaith poslato Jun 05, 2023, 20:39:06 POSLE PODNE
Posalji delove vezane za kuce kao i logove kreiranja kuce
https://pastebin.com/43z6KzSH
[pawn]
new kucaID = NextHouseID(),
//....
if(kucaID >= MAX_KUCA)
return Error(playerid, "Maximum kuca je ogranicen ne mozete ici iznad!");
[/pawn]
Ovo je sve kako treba, jedino mozda NextHouseID ako vraca negativni broj kao invalid pa da te to jebe.
Ali izgleda ko da je radio neko ko je razumeo koliko toliko, ili je makar kopirao iz neceg sto je donekle ok.
Vidi NextHouseID funkciju, ili je posalji ovde. A mozes probat YCMD da zamenis sa ZCMD ukoliko ne koristis nista osim command processora.
Citat: Sniffie White poslato Jun 05, 2023, 21:28:06 POSLE PODNE
[pawn]
new kucaID = NextHouseID(),
//....
if(kucaID >= MAX_KUCA)
return Error(playerid, "Maximum kuca je ogranicen ne mozete ici iznad!");
[/pawn]
Ovo je sve kako treba, jedino mozda NextHouseID ako vraca negativni broj kao invalid pa da te to jebe.
Ali izgleda ko da je radio neko ko je razumeo koliko toliko, ili je makar kopirao iz neceg sto je donekle ok.
Vidi NextHouseID funkciju, ili je posalji ovde. A mozes probat YCMD da zamenis sa ZCMD ukoliko ne koristis nista osim command processora.
[pawn]NextHouseID()
{
new id = -1;
for(new loop = (0), provera = (-1), Data_[64] = "\0"; loop != MAX_KUCA; ++ loop)
{
provera = (loop + 1);
format(Data_, (sizeof Data_), KUCE_FILE, provera);
if(!fexist(Data_))
{
id = (provera);
break;
}
}
return id;
}[/pawn]
Probao sam, stavio sam Pawn.CMD isto mi se desava, samo sa tom komandom. Ce da vidimo, resava mi ovo realnaith.
Eto ti problem, ako je invalid vraca -1
U sustini trebao bi da proveravas ovako
[pawn]
//Umesto ovoga:
if(kucaID >= MAX_KUCA)
return Error(playerid, "Maximum kuca je ogranicen ne mozete ici iznad!");
//Ovako:
if(kucaID == -1)
return Error(playerid, "Maximum kuca je ogranicen ne mozete ici iznad!");
[/pawn]
To pricam samo za taj slucaj, za druge ne znam. To receno, NextHouseID je po meni sam po sebi glupo napravljen zato sto umesto da loop kroz niz on proverava fajlove. Ali necu ulaziti u to, ne bi trebalo da je to problem.
PS: Poruku bih isto izmenio umesto maximum kuca na nesto tipa nije pronadjen slobodnan ID za novu kucu ili nesto slicno.
Citat: Sniffie White poslato Jun 05, 2023, 21:37:30 POSLE PODNE
Eto ti problem, ako je invalid vraca -1
U sustini trebao bi da proveravas ovako
[pawn]
//Umesto ovoga:
if(kucaID >= MAX_KUCA)
return Error(playerid, "Maximum kuca je ogranicen ne mozete ici iznad!");
//Ovako:
if(kucaID == -1)
return Error(playerid, "Maximum kuca je ogranicen ne mozete ici iznad!");
[/pawn]
To pricam samo za taj slucaj, za druge ne znam. To receno, NextHouseID je po meni sam po sebi glupo napravljen zato sto umesto da loop kroz niz on proverava fajlove. Ali necu ulaziti u to, ne bi trebalo da je to problem.
PS: Poruku bih isto izmenio umesto maximum kuca na nesto tipa nije pronadjen slobodnan ID za novu kucu ili nesto slicno.
[pawn]if(kucaID == -1)
return Error(playerid, "Maximum kuca je ogranicen ne mozete ici iznad!");[/pawn]
Nije do toga ista je prica. Kako mi je rekao realnaith, problem je izgleda do YSI paketa 5.1. Takodje sam isto citao na github da je Y_Less nesto vezano za paket sredjivao, ali izgleda je opet ne radi.
Zato sam ti rekao da probas zameniti YCMD na ZCMD, ne lupam bezveze ko vecina ovde. Isto tako cini mi se da nemas -d3 flag, zato su ti upitnici umesto imena funkcije.
Ali ono sto sam ti iznad rekao, da ide -1 to stoji (iako mozda nije vezano za problem).
Ako zamenis ycmd na zcmd (ili pawn.cmd kako si rekao), a isto ti se desava, onda downgrade YSI na recimo v5.05.0505 (po ideji bilo koja 5.x.x verzija bi trebala da ti radi iako je
Citat: Sniffie White poslato Jun 05, 2023, 21:51:18 POSLE PODNE
Zato sam ti rekao da probas zameniti YCMD na ZCMD, ne lupam bezveze ko vecina ovde. Isto tako cini mi se da nemas -d3 flag, zato su ti upitnici umesto imena funkcije.
Ali ono sto sam ti iznad rekao, da ide -1 to stoji (iako mozda nije vezano za problem).
Ako zamenis ycmd na zcmd (ili pawn.cmd kako si rekao), a isto ti se desava, onda downgrade YSI na recimo v5.05.0505 (po ideji bilo koja 5.x.x verzija bi trebala da ti radi iako je
Videcu, sacekacu realnaith da vidim sta ce kaze.
Citat: hexx. poslato Jun 05, 2023, 21:57:01 POSLE PODNE
Znm nisam dodao -d3, bas cu sada dodam -d3 flag pa da vidim. Citao sam isto na netu da su to stavljali i da je resilo probleme.
Nece to resiti problem kao takav, samo ce ti reci tacan problem, posto recimo YSI "popravlja bagove" od fopen, fread i slicno, da ne crash nego kao vrati 0, ili sta vec. Tako mozda se hook i na fexists i tu mozda crash iz bog zna kojeg razloga. Uglavnom da ne ulazim previse u stack/heap i slicno, imas OnPlayerText, pa onda 3 nepoznate funkcije koje se pozovu. Jedna od njih je komanda sama, druge 2 ne znam, ali moze biti bas da je NextHouseID, i onda da crash na nekoj nativnoj.
Vidi sa -d3 compile, pa daj log ako pokaze nesto novo (mislim trebao bi da pokaze).
Citat: Sniffie White poslato Jun 05, 2023, 22:00:46 POSLE PODNE
Nece to resiti problem kao takav, samo ce ti reci tacan problem, posto recimo YSI "popravlja bagove" od fopen, fread i slicno, da ne crash nego kao vrati 0, ili sta vec. Tako mozda se hook i na fexists i tu mozda crash iz bog zna kojeg razloga. Uglavnom da ne ulazim previse u stack/heap i slicno, imas OnPlayerText, pa onda 3 nepoznate funkcije koje se pozovu. Jedna od njih je komanda sama, druge 2 ne znam, ali moze biti bas da je NextHouseID, i onda da crash na nekoj nativnoj.
Vidi sa -d3 compile, pa daj log ako pokaze nesto novo (mislim trebao bi da pokaze).
[pawn][debug]
[22:04:18] [debug] Parameter count corrections:
[22:04:18] [debug]
[22:04:18] [debug] The 1st mangled argments (e.g. `<1073741823 arguments>`) below should read `<2 arguments>`
[22:04:18] [debug]
[22:04:18] [debug] Run time error 4: "Array index out of bounds"
[22:04:18] [debug] AMX backtrace:
[22:04:18] [debug] #0 002b7444 in ?? (... <3 arguments>) at C:\Users\Bojan\Desktop\Smart Project\gamemodes\sp-rpg.pwn:8973
[22:04:18] [debug] #1 000540cc in Command_ReProcess (... <3 arguments>) at C:\Users\Bojan\Desktop\Smart Project\pawno\include\ysilib\YSI_Visual\y_commands\y_commands_impl.inc:541
[22:04:18] [debug] #2 000575a4 in ?? (... <1073741823 arguments>) at C:\Users\Bojan\Desktop\Smart Project\pawno\include\ysilib\YSI_Visual\y_commands\y_commands_impl.inc:1397
[22:04:18] [debug] #3 0001b31c in public OnPlayerCommandText (... <2 arguments>) at C:\Users\Bojan\Desktop\Smart Project\pawno\include\ysilib\YSI_Storage\y_ini\..\..\YSI_Coding\y_inline\..\y_cgen\y_cgen.inc:133
[/pawn]
Je verovatno YSI jebe stvar, probaj da downgrade kako sam ti napisao, mozes i koju verziju ispod samo da je 5.x.x (sumnjam ja da ti ista koristis od najnovijih stvari)
Citat: Sniffie White poslato Jun 05, 2023, 22:14:21 POSLE PODNE
Je verovatno YSI jebe stvar, probaj da downgrade kako sam ti napisao, mozes i koju verziju ispod samo da je 5.x.x (sumnjam ja da ti ista koristis od najnovijih stvari)
Ovo mi je trenutna verzija YSI [pawn]YSI: 5.06.1932 [/pawn]
Takodje sam i compiler stavio na 3.10.10
Nije problem YSI nego code, reseno...
(https://imgur.com/zH5UQwS.png)
Citat: realnaith poslato Jun 05, 2023, 23:11:18 POSLE PODNE
Nije problem YSI nego code, reseno...
(https://imgur.com/zH5UQwS.png)
Privremeno je reseno, ali hvala ti na pomoci. Ipak cu ja da borisem ceo code i da napisem novi.
Citat: realnaith poslato Jun 05, 2023, 23:11:18 POSLE PODNE
Nije problem YSI nego code, reseno...
(https://imgur.com/zH5UQwS.png)
Argumenti su zamesani kod ysi, tako da je problem. Jednostavno umesto broja argumenata proslesjuje memorijsku adresu kod komand reprocess. Ne znam ni ja koji je djavo, mada nisam ni gledao ysi, ali to ne sme da se desi.
Citat: Sniffie White poslato Jun 06, 2023, 10:25:03 PRE PODNE
Argumenti su zamesani kod ysi, tako da je problem. Jednostavno umesto broja argumenata proslesjuje memorijsku adresu kod komand reprocess. Ne znam ni ja koji je djavo, mada nisam ni gledao ysi, ali to ne sme da se desi.
Kad nisam koristio ovu verziju YSI sto je sada, nisam imao problema nikavih. A ce napisem novi kod i jebes ga, ako bude zezalo, vrati cu na stariju verziju i jbg
i onda do cega je bilo
Citat: bepo poslato Jun 06, 2023, 21:23:41 POSLE PODNE
i onda do cega je bilo
Nije jos reseno, sad je problem i oko kreiranja firma, isto zeza.
Citat: bepo poslato Jun 06, 2023, 21:23:41 POSLE PODNE
i onda do cega je bilo
Code mora biti prilagodjen novom YSI-u logicno, tako da sto je zajebao u kucama, zajebao je i u firmama, ali resit cu mu sve kad stignem, posto krecem skriptat za BJ pa neam bas mnogo vremena
Problem je resen! Hvala
@Sniffie White!