Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: CADILAB poslato Januar 19, 2014, 16:57:06 POSLE PODNE

Naslov: [Pomoc] Ispravnost komande
Poruka od: CADILAB poslato Januar 19, 2014, 16:57:06 POSLE PODNE
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):
Naslov: Odg: [Pomoc] Ispravnost komande
Poruka od: Vegas. poslato Januar 19, 2014, 17:07:28 POSLE PODNE
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.
Naslov: Odg: [Pomoc] Ispravnost komande
Poruka od: CH | FuDo poslato Januar 19, 2014, 17:10:29 POSLE PODNE
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?
Naslov: Odg: [Pomoc] Ispravnost komande
Poruka od: Vegas. poslato Januar 19, 2014, 17:15:36 POSLE PODNE
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.
Naslov: Odg: [Pomoc] Ispravnost komande
Poruka od: CH | FuDo poslato Januar 19, 2014, 17:27:30 POSLE PODNE
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.
Naslov: Odg: [Pomoc] Ispravnost komande
Poruka od: Vegas. poslato Januar 19, 2014, 17:40:07 POSLE PODNE
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.
Naslov: Odg: [Pomoc] Ispravnost komande
Poruka od: CADILAB poslato Januar 19, 2014, 18:49:57 POSLE PODNE
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;
}
Naslov: Odg: [Pomoc] Ispravnost komande
Poruka od: Vitez El arambasa poslato Januar 19, 2014, 19:37:26 POSLE PODNE
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;
}