Ne radi nijedna komanda gde koristim ||

Započeo .Drakula., Jun 17, 2022, 22:24:31 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Problem(error/warning): Bilo koja komanda gde koristim  || jednostavno ne radi lepo obijasnicu dole
Ako sklonim proveru, komanda radi normalno.
Deo skripte: [pawn]
//u koli kojoj komandi ako dodam proveru
if(PI[playerid][pAdmin] < 1 || PI[playerid][pHelper] < 2) return Error(playerid, "Upisali ste komandu koja ne postoji.");
//komanda ne radi vec samo ispisuje Error poruku

//primer:
CMD:spec(playerid, params[])
{
   if(PI[playerid][pAdmin] < 1 || PI[playerid][pHelper] < 2) return Error(playerid, "Upisali ste komandu koja ne postoji.");  //samo ce ispisivati Error
   new id;
   if(sscanf(params,"u",id)) return Cmd(playerid, "/spec [ ID ]");
   else if(id == IPI) return Error(playerid, "Taj igrac ne postoji.");
        else if(id == playerid) return Error(playerid, "Ne mozete specati sami sebe.");
        .......
        .......
   return 1;
}

CMD:prison(playerid, params[])
{
    if(IsPlayerConnected(playerid))
    {
        if(PI[playerid][pAdmin] < 1 || PI[playerid][pHelper] < 2) return Error(playerid, "Upisali ste komandu koja ne postoji.");  // samo Error poruka
        .......
        .......
        .......
   }
    return 1;
}
[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): //
Slika/video ingame problema(obavezno ako je ingame problem): //
Poslednja Izmena: Jun 19, 2022, 17:28:21 POSLE PODNE od Deleted User

[pawn]if(PI[playerid][pAdmin] < 1 || PI[playerid][pHelper] < 2) return Error(playerid, "Upisali ste komandu koja ne postoji.");[/pawn]

U prijevodu, ako je igrač manje razine admina od 1 ILI mu je razina helper-a manja od 2, ispiši grešku.

Nešto mi govori, ako je igrač već admin 1, garant nije helper 2 i eto problema.

Nije da nece, vec pogresno koristis simbole.

|| - ILI
&& - I

Ako igrac nije admin ili nije helper, vratice gresku. Sto znaci da mora imati oba var-a da server ne bi vratio gresku.
Resenje: Zameni || sa && ukoliko u komandi imas 2 provere, odnosno proveravas 2 varijable igracu. Ukoliko imas samo jednu varijablu za proveriti, koristices ||.

To je samo za nacin kada returnas nesto. Kada otvaras brackete korsitices || iako tu postoje 2 ili vise varijabli za proveriti.

Citat: Shavershian poslato Jun 17, 2022, 22:27:43 POSLE PODNE
[pawn]if(PI[playerid][pAdmin] < 1 || PI[playerid][pHelper] < 2) return Error(playerid, "Upisali ste komandu koja ne postoji.");[/pawn]

U prijevodu, ako je igrač manje razine admina od 1 ILI mu je razina helper-a manja od 2, ispiši grešku.

Nešto mi govori, ako je igrač već admin 1, garant nije helper 2 i eto problema.
Ako bi odradio ovako:


CMD:spec(playerid, params[])
{
if(PI[playerid][pAdmin] >= 1 || PI[playerid][pHelper] > 1)
{
new id;
if(sscanf(params,"u",id)) return Cmd(playerid, "/spec [ ID ]");
else if(id == IPI) return Error(playerid, "Taj igrac ne postoji.");
    else if(id == playerid) return Error(playerid, "Ne mozete specati sami sebe.");
    .......
    .......
}
else return Error(playerid, "Upisali ste komandu koja ne postoji.");
return 1;
}

Citat: ryco poslato Jun 17, 2022, 22:55:23 POSLE PODNE
Nije da nece, vec pogresno koristis simbole.

|| - ILI
&& - I

Ako igrac nije admin ili nije helper, vratice gresku. Sto znaci da mora imati oba var-a da server ne bi vratio gresku.
Resenje: Zameni || sa && ukoliko u komandi imas 2 provere, odnosno proveravas 2 varijable igracu. Ukoliko imas samo jednu varijablu za proveriti, koristices ||.

To je samo za nacin kada returnas nesto. Kada otvaras brackete korsitices || iako tu postoje 2 ili vise varijabli za proveriti.
Hvala.
Ja i moja logika, nisam provalio.