Problem kod komande

Boketa Započeo boky.
pre 2 godine
1,114
pregleda
29
postova
Boketa
Shot Caller
pre 2 godine
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:
Vaš odgovor

Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
[18:24:39] 
[18:24:39] Parameter count corrections:
[18:24:39]
[18:24:39] The 1st mangled argments (e.g. `<1073741823 arguments>`) below should read `<2 arguments>`
[18:24:39]
[18:24:39] Run time error 4: "Array index out of bounds"
[18:24:39] AMX backtrace:
[18:24:39] #0 0021f764 in ?? (0, 2967376, 0) from sp-rpg.amx
[18:24:39] #1 00048128 in ?? (0, 2967324, 0) from sp-rpg.amx
[18:24:39] #2 0004ac80 in ?? (0, 2967324, 0, 0, 0, 0, 8, 0, 2967324, 0, ... <1073741813 arguments>) from sp-rpg.amx
[18:24:39] #3 000178c0 in public OnPlayerCommandText (0, 2967324) from sp-rpg.amx

Slika/video ingame problema(obavezno ako je ingame problem): link slike
FIAME
Hustler
pre 2 godine
daj cmd cijelu
Boketa
Shot Caller
pre 2 godine
bepo wrote on June 5, 2023, 5:18 pm:
daj cmd cijelu


Evo ga
YCMD:createhouse(playerid, const string: params[], help) 
{
    if(player_ADMIN < 5)
        return Error(playerid, "Nemate dozvolu za ovu komandu - niste admin level 5.");

    if(admin_DUZNOST == 0)
        return Error(playerid, "Niste na admin duznosti - koristite /aduty kako bi koristili komande!");

    new kucaID = NextHouseID(), vrsta, Float:Poz;
    if(sscanf(params, "i", vrsta))
    {
        Usage(playerid, "/createhouse ");
        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, Poz, Poz);
    switch(vrsta)
    {
        case 1:
        {
            kuca_INT_X = 2308.7529;
            kuca_INT_Y = -1212.5588;
            kuca_INT_Z = 1049.0234;
            kuca_ID = MALAKUCA;
            kuca_INT_ID = 6;
           
            kuca_CENA = 350000;
            kuca_LEVEL = 5;
        }   
        case 2:
        {
            kuca_INT_X = 318.6055;
            kuca_INT_Y = 1114.9292;
            kuca_INT_Z = 1083.8828;
            kuca_ID = SREDNJAKUCA;
            kuca_INT_ID = 5;
           
            kuca_CENA = 600000;
            kuca_LEVEL = 10;
        }
        case 3:
        {
            kuca_INT_X = 386.6623;
            kuca_INT_Y = 1471.7719;
            kuca_INT_Z = 1080.1875;
            kuca_ID = VELIKAKUCA;
            kuca_INT_ID = 15;
           
            kuca_CENA = 800000;
            kuca_LEVEL = 15;
        }
        case 4:
        {
            kuca_INT_X = 2324.3840;
            kuca_INT_Y = -1149.0188;
            kuca_INT_Z = 1050.7101;
            kuca_ID = VILLA;
            kuca_INT_ID = 12;
           
            kuca_CENA = 1200000;
            kuca_LEVEL = 15;
        }
    }   
    kuca_VW_ID = kucaID;
    kuca_OWNERPROVERA = 0;
    strmid(kuca_OWNERIME, "Niko", 0, strlen("Niko"), 255);
    kuca_EXT_X = Poz;
    kuca_EXT_Y = Poz;
    kuca_EXT_Z = Poz;
    kuca_NOVAC = 0;
    kuca_ZAKLJUCANO = 1;
    kuca_NEAKTIVNOST = 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), kuca_CENA, kuca_LEVEL);
   
    adminPoruka(0x5DA335AA, "Admin Info: Admin %s je kreirao kucu id: %d, vrsta: %s, cena: $%d, level: %d.",
        ReturnPlayerName(playerid), kucaID, HouseID(kuca_ID), kuca_CENA, kuca_LEVEL);

    Log_Write(ADMINLOG, "(%s) Admin %s je kreirao kucu id: %d, vrsta: %s, cena: $%d, level: %d.",
            ReturnDate(), ReturnPlayerName(playerid), kucaID, HouseID(kuca_ID), kuca_CENA, kuca_LEVEL);
    return 1;
}
FIAME
Hustler
pre 2 godine
na koliko ti je prije bilo max kuca
Boketa
Shot Caller
pre 2 godine
bepo wrote on June 5, 2023, 6:02 pm:
na koliko ti je prije bilo max kuca


non stop je na 50.
realnaith
Crime Lord
pre 2 godine
Opisi detaljnije problem
Boketa
Shot Caller
pre 2 godine
realnaith wrote on June 5, 2023, 6:21 pm:
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.
realnaith
Crime Lord
pre 2 godine
hexx. wrote on June 5, 2023, 6:25 pm:
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
Boketa
Shot Caller
pre 2 godine
realnaith wrote on June 5, 2023, 6:39 pm:
Posalji delove vezane za kuce kao i logove kreiranja kuce


https://pastebin.com/43z6KzSH
realnaith
Crime Lord
pre 2 godine
hexx. wrote on June 5, 2023, 6:42 pm:
https://pastebin.com/43z6KzSH


DM
NegativeIQ
Kingpin
pre 2 godine

new kucaID = NextHouseID(),

//....

    if(kucaID >= MAX_KUCA)
        return Error(playerid, "Maximum kuca je ogranicen ne mozete ici iznad!");

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.
Boketa
Shot Caller
pre 2 godine
Sniffie White wrote on June 5, 2023, 7:28 pm:

new kucaID = NextHouseID(),

//....

    if(kucaID >= MAX_KUCA)
        return Error(playerid, "Maximum kuca je ogranicen ne mozete ici iznad!");

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.

NextHouseID() 
{
    new id = -1;
    for(new loop = (0), provera = (-1), Data_ = "\0"; loop != MAX_KUCA; ++ loop)
    {
      provera = (loop + 1);
      format(Data_, (sizeof Data_), KUCE_FILE, provera);
      if(!fexist(Data_))
      {
          id = (provera);
          break;
      }
    }
    return id;
}


Probao sam, stavio sam Pawn.CMD isto mi se desava, samo sa tom komandom. Ce da vidimo, resava mi ovo realnaith.
NegativeIQ
Kingpin
pre 2 godine
Eto ti problem, ako je invalid vraca -1

U sustini trebao bi da proveravas ovako

//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!");


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.
Boketa
Shot Caller
pre 2 godine
Sniffie White wrote on June 5, 2023, 7:37 pm:
Eto ti problem, ako je invalid vraca -1

U sustini trebao bi da proveravas ovako

//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!");


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.

if(kucaID == -1)
        return Error(playerid, "Maximum kuca je ogranicen ne mozete ici iznad!");


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.
NegativeIQ
Kingpin
pre 2 godine
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

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava