[Pomoc] Ispravnost komande


Započeo CADILAB, Januar 19, 2014, 16:57:06 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

CADILAB

*

Balkan Underground Owner

Skripta koju koristim: Bezveze nesto od 0
Detaljan opis problema: Zanima me da li je ova komanda ispravna. Komanda u bazi namjesti admin level na koji ja hocu, ali u igri ne reaguje.

CMD:postaviadmina(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] > HEAD || !IsPlayerAdmin(playerid)) return NoPremission(playerid);
 	{
 	new id, kol;
 	if(sscanf(params, "ui", id, kol)) return SCM(playerid, GRAD3, "Koristite: /postaviadmina [Igracev ID] [Level 1-6)");
 	if(!IsPlayerConnected(id)) return SCM(playerid, CRVENA, "Taj igrac nije u igri");
 	new var[200];
 	format(var, sizeof(var), "Postavili ste %s za administratora level %d", id, kol);
	SCM(playerid, ZELENA, var);
	format(var, sizeof(var), "Postavljeni ste za administratora nivo %d, Admin: %s", kol, playerid);
	SCM(id, SVETLOPLAVA, var);
	PlayerInfo[id][pAdmin] = kol;
	new Query[150];
	format(Query, sizeof(Query), "UPDATE `korisnici` SET `Admin` = '%d' WHERE `Ime` = '%s' LIMIT 1", kol, ImeIgraca(id));
	mysql_query(Query);
 	}
	return 1;
}


kada ga iskucam u ovoj komandi, nece da izbaci

CMD:admini(playerid, params[])
{
	new ime[MAX_PLAYER_NAME];
	SCM(playerid, CRVENA,	"________________ Administratori ________________");
	foreach(Player, i)
	{
	    if(PlayerInfo[i][pAdmin] > 0 && PlayerInfo[i][pAdmin] < HEAD && IsPlayerConnected(i))
	    {
	        GetPlayerName(i,ime,MAX_PLAYER_NAME);
	        format(CmdString, 128, "Admin: {FFFFFF}%s | {33CCFF}Nivo: {FFFFFF}%d", ime, PlayerInfo[i][pAdmin]);
	        SCM(playerid, CRVENA, CmdString);
		}
	}
	return 1;
}


Dio skripte:
Neke slike/video za lakse dobivanje pomoci(neobavezno):

http://balkan-samp.com/forum/index.php?topic=15196.msg109693#msg109693 Prouči ovo.

Dakle vidi, ti si stavio ovu provjeru na komandu /admini
if(PlayerInfo[i][pAdmin] > 0 && PlayerInfo[i][pAdmin] < HEAD && IsPlayerConnected(i))
To znači ako je igračeva var veća od admina manja od head admina i još ako je konektovan. Nema logike.

Ovo ti je ispravno.
CMD:admini(playerid, params[])
{
	new ime[MAX_PLAYER_NAME];
	SCM(playerid, CRVENA,	"________________ Administratori ________________");
	foreach(Player, i)
	{
	    if(PlayerInfo[i][pAdmin] > 0 || PlayerInfo[i][pAdmin] < HEAD && IsPlayerConnected(i))
	    {
	        GetPlayerName(i,ime,MAX_PLAYER_NAME);
	        format(CmdString, 128, "Admin: {FFFFFF}%s | {33CCFF}Nivo: {FFFFFF}%d", ime, PlayerInfo[i][pAdmin]);
	        SCM(playerid, CRVENA, CmdString);
		}
	}
	return 1;
}
Komanda /postaviadmina ti djeluje sasvim uredu.
Poslednja Izmena: Januar 19, 2014, 17:20:00 POSLE PODNE od Vegas.

if(PlayerInfo[i][pAdmin] > 0 || PlayerInfo[i][pAdmin] < HEAD && IsPlayerConnected(i))


fali ti nula poslije prve provjere, prije ILI. Ako si ubacio for petlju koja vrti od 0 do MAX_PLAYERS, šta će ti onda provjera da li je igrač konektovan?
[Tutorial] public OnPlayerText - malo poigravanja

Nudim usluge skriptanja, tražim team sa kojim bi radio. PM ili Facebook: www.facebook.com/keton.dirigent

Nije bilo potrebe da komentarišeš, to što on pravi duple provjere neke to je krajnje njegova stvar, ja sam samo editovo kod kako bi radio.

Da nije bilo potrebe za mojim komentarom, ne bi znao za 0 sigurno. Vidim kako si editovao, nimalo ne čitaš kod, ofrljoke si kopirao samo, falio ti najbitniji dio. Samo ne znam koja svrha te provjere, kad provjera igrača od ID 0 do maksimalnog broja IDova, mislim stvarno, kranje ne potrebno.
[Tutorial] public OnPlayerText - malo poigravanja

Nudim usluge skriptanja, tražim team sa kojim bi radio. PM ili Facebook: www.facebook.com/keton.dirigent

Pa šta desilo se i šta, slučajno kako sam briso a nisam ni gledo. Pa provjera nema svrhe al' ako on tako radi nek radi šta mu mi možemo tu, nemoj dalje komentarisat bespotrebno je i spam.

CADILAB

*

Balkan Underground Owner

Hvala radi, al sad mi je problem sto komande za admine ne rade, pise Nemate ovlastenje

CMD:postaviadmina(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] > HEAD || !IsPlayerAdmin(playerid)) return NoPremission(playerid);
 	{
 	new id, kol;
 	if(sscanf(params, "ui", id, kol)) return SCM(playerid, GRAD3, "Koristite: /postaviadmina [Igracev ID] [Level 1-6)");
 	if(!IsPlayerConnected(id)) return SCM(playerid, CRVENA, "Taj igrac nije u igri");
 	new var[200];
 	format(var, sizeof(var), "Postavili ste %s za administratora level %d", id, kol);
	SCM(playerid, ZELENA, var);
	format(var, sizeof(var), "Postavljeni ste za administratora nivo %d, Admin: %s", kol, playerid);
	SCM(id, SVETLOPLAVA, var);
	PlayerInfo[id][pAdmin] = kol;
	new Query[150];
	format(Query, sizeof(Query), "UPDATE `korisnici` SET `Admin` = '%d' WHERE `Ime` = '%s' LIMIT 1", kol, ImeIgraca(id));
	mysql_query(Query);
 	}
	return 1;
}

CMD:kick(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] > 1 && !IsPlayerAdmin(playerid)) return NoPremission(playerid);
	{
	new id, razlog[128];
	if(sscanf(params, "us[128]", id, razlog)) return SCM(playerid, GRAD2, "Koristite: /kick [Igracev ID] [Razlog]");
	if(!IsPlayerConnected(id)) return SCM(playerid, CRVENA, "Taj igrac nije u igri");
	new kickstr[200];
	format(kickstr, sizeof(kickstr), "Igrac %s je uspesko kikovan, Razlog: %s", ImeIgraca(id), razlog);
	SCM(playerid, SVETLOCRVENA, kickstr);
	format(kickstr, sizeof(kickstr), "Admin %s vas je kikovao sa servera. Razlog: %s", ImeIgraca(playerid), razlog);
	SCM(playerid, SVETLOPLAVA, kickstr);
 	SetTimerEx("KickTimer", 1000, false, "i", id);
	}
	return 1;
}

Gresis provere da li je admin
Ti si uradio ovako
if(PlayerInfo[playerid][pAdmin] > 1 && !IsPlayerAdmin(playerid)) return NoPremission(playerid); // sto znaci da ako je Admin level 1 ili vise znaci da nema permisiju


A ovako treba :
if(PlayerInfo[playerid][pAdmin] < 1 && !IsPlayerAdmin(playerid)) return NoPremission(playerid);  // ako je manji admin od 1 znaci da moze.  Presudan ti je znak ">, < , ="


CMD:postaviadmina(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] < HEAD || !IsPlayerAdmin(playerid)) return NoPremission(playerid);
 	{
 	new id, kol;
 	if(sscanf(params, "ui", id, kol)) return SCM(playerid, GRAD3, "Koristite: /postaviadmina [Igracev ID] [Level 1-6)");
 	if(!IsPlayerConnected(id)) return SCM(playerid, CRVENA, "Taj igrac nije u igri");
 	new var[200];
 	format(var, sizeof(var), "Postavili ste %s za administratora level %d", id, kol);
	SCM(playerid, ZELENA, var);
	format(var, sizeof(var), "Postavljeni ste za administratora nivo %d, Admin: %s", kol, playerid);
	SCM(id, SVETLOPLAVA, var);
	PlayerInfo[id][pAdmin] = kol;
	new Query[150];
	format(Query, sizeof(Query), "UPDATE `korisnici` SET `Admin` = '%d' WHERE `Ime` = '%s' LIMIT 1", kol, ImeIgraca(id));
	mysql_query(Query);
 	}
	return 1;
}

CMD:kick(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] < 1 && !IsPlayerAdmin(playerid)) return NoPremission(playerid);
	{
	new id, razlog[128];
	if(sscanf(params, "us[128]", id, razlog)) return SCM(playerid, GRAD2, "Koristite: /kick [Igracev ID] [Razlog]");
	if(!IsPlayerConnected(id)) return SCM(playerid, CRVENA, "Taj igrac nije u igri");
	new kickstr[200];
	format(kickstr, sizeof(kickstr), "Igrac %s je uspesko kikovan, Razlog: %s", ImeIgraca(id), razlog);
	SCM(playerid, SVETLOCRVENA, kickstr);
	format(kickstr, sizeof(kickstr), "Admin %s vas je kikovao sa servera. Razlog: %s", ImeIgraca(playerid), razlog);
	SCM(playerid, SVETLOPLAVA, kickstr);
 	SetTimerEx("KickTimer", 1000, false, "i", id);
	}
	return 1;
}