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): //
[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.