Komanda /setadmin uz pomoc ZCMD i sscanf

Započeo Deken, Decembar 22, 2018, 19:19:07 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Zdravo danas cu pokazati kako na veoma lak nacin napraviti komandu da date igracu bilo koji level admina : Napomena igrac da bi mu se sacuvao admin i da bi mogao da ga koristi mora da izadje i da opet udje na server!
Pa krecemo ovako:
Prvo sto uradite je sastavite enum player info a to bi trebalo da izgleda ovako
[pawn]

enum pInfo
{
   pAdmin,
   Ulogovan


}
new PlayerInfo[MAX_PLAYERS][pInfo];
[/pawn]
takodje  ispod include kao define upisete
[pawn]
#undef MAX_PLAYERS
#define MAX_PLAYERS 100
[/pawn]
I krecemo sa komandom
Na zeljeno mesto na skripti ja bar radim na dnu skripte pisete ovako
[pawn]  CMD:setadmin(playerid,params[]) // to vam je ono sto ce vlasnik servera ukucati kada bude zeleo da da nekom admina [/pawn]
a zatim radite ovo
[pawn] {
   new targetid,alevel,string[300],name[MAX_PLAYER_NAME]; // to vam predstavlja ono sto ce igrac koristiti u toj komandi targetid je id igraca koji dobija admina alevel je level admina string je poruka koja ce da se ispise adminu igracu i ako vi zelite serveru ja sam stavio a name je ime admina igraca koji dobija admina zavisi[/pawn]
Onda stavljate ovo
[pawn] if(PlayerInfo[playerid][Ulogovan] == 0) return SendClientMessage(playerid,-1,""CRVENA"[BD:RP]"BELA"Niste mozete koristiti ovu komandu jer niste ulogovani."); // ovo vam predstavlja proveru da li je igrac ulogovan  ako nemate register sistem ubacen u skriptu izbrisite ovo ne treba vam [/pawn]
Zatim stavljate sledecu varijantu
[pawn] if(PlayerInfo[playerid][pAdmin] >=7) // to znaci da niko osim vlasnika ne moze dati admina igracu
         { [/pawn]
Prelazimo na centar komande sad pazljivo pratite sta pricam ovo je najvazniji deo
[pawn] if(sscanf(params,"ui",targetid,alevel)) return SendClientMessage(playerid,-1,""CRVENA"[BD:RP]"BELA"Koristi /setadmin [ID] [LEVEL ADMINA]"); // ovo predstavlja komandu koju igrac koristi znaci ako igrac upise samo /giveadmin id  a ne upise alevel nece se izvrisiti komanda
            if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid,-1,""CRVENA"[BD:RP]"BELA"Igrac kome zelite da postavite admina nije online!"); // ovo je provera kojom igrac proverava  da li je zeljeni korisnik na serveru ili ne ako je na serveru komanda ce se izvrisiti ako nije nece
            GetPlayerName(playerid,name,sizeof(name)); // dobija ime od igraca koji daje admina
            GetPlayerName(targetid,name,sizeof(name)); // dobija ime od igraca koji dobija admina
            PlayerInfo[playerid][pAdmin] = alevel; // ovo u vasu bazu podataka tj enum koji smo gore naveli upisuje alevel koji je igrac dobio
if(targetid == playerid) return SendClientMessage(playerid,-1,""CRVENA"[BD:RP]"BELA"Ne mozete sebi dati admina!"); // ovo vam predstavlja ako je igrac koji prima admina isto i igrac koji je admin to ga sprecava i komanda se ne izvrsava
            format(string,sizeof(string), ""CRVENA"[BD:RP]"BELA"Dali ste igracu [%d]%s admina level %i!",targetid,name,alevel); // ovo vam je takozvani string to jeste poruka koja se ispisuje vlasniku jer sadrzi playerid sto znaci id igraca koji daje admina
            SendClientMessage(playerid,-1,string); // ovo je obavezno pisati da bi se string ispisao
            format(string,sizeof(string), ""CRVENA"[BD:RP]"BELA"Cestitam! Dobili ste admina level %i od strane Vlasnika %s,Ne nateraj Vlasnika da ti ga skine! Srecno u poslu!",alevel,name); // ovo predstavlja poruku koja stize igracu koji je primio admina jer sadrzi u sebi targetid sto znaci id igraca koji prima admina
            SendClientMessage(targetid,-1,string); // takodje ko i za prvo
            format(string,sizeof(string), ""CRVENA"[BD:RP]"BELA"Cestitamo igracu %s koji je dobio Admina level %i!",name,alevel); // ovo ce da ispisuje svim igracima na serveru da je igrac taj i taj dobio taj admin level mislim ovo sam stavio radi reda vama ne treba
            SendClientMessageToAll(playerid,string); // ovo salje poruku svima sa zadnjeg stringa (Napome ovo vam ne treba ako necete da svi igraci vide da je igrac taj i taj dobio admina)
[/pawn]
   { [/pawn]
i za kraj dopisujete ovo
[pawn]
}
         else return SendClientMessage(playerid,-1,""CRVENA"[BD:RP]"BELA"Niste ovlasteni da korisite ovu komandu!"); // naravno ovo sluzi sa if(PlayerInfo[playerid][pAdmin] >= 7) jer to kaze igracu koji nije admin uopste ili je manji admin level od admina 7 da mu se poruka ispisuje
           }
   return 1; // ovo uspesno izvrsava komandu
}
[/pawn]
To je to sto se tice komande ja sam je licno pravio i ove poruke slobodno izmenite jer to sam ja svom serveru prilagodjavao to bi bilo to za ovu komandu



Citat: Deken poslato Decembar 22, 2018, 19:19:07 POSLE PODNE
Zdravo danas cu pokazati kako na veoma lak nacin napraviti komandu da date igracu bilo koji level admina : Napomena igrac da bi mu se sacuvao admin i da bi mogao da ga koristi mora da izadje i da opet udje na server!
Pa krecemo ovako:
Prvo sto uradite je sastavite enum player info a to bi trebalo da izgleda ovako
[pawn]

enum pInfo
{
   pAdmin,
   Ulogovan


}
new PlayerInfo[MAX_PLAYERS][pInfo];
[/pawn]
takodje  ispod include kao define upisete
[pawn]
#undef MAX_PLAYERS
#define MAX_PLAYERS 100
[/pawn]
zatim napravite ovako dva falja
[pawn]
new name[MAX_PLAYER_NAME], string[24+MAX_PLAYER_NAME];
GetPlayerName(targetid,name,sizeof(name));

new playername[MAX_PLAYER_NAME], string[24+MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
[/pawn]
I krecemo sa komandom
Na zeljeno mesto na skripti ja bar radim na dnu skripte pisete ovako
[pawn]  CMD:setadmin(playerid,params[]) // to vam je ono sto ce vlasnik servera ukucati kada bude zeleo da da nekom admina [/pawn]
a zatim radite ovo
[pawn] {
   new targetid,alevel,string[300],name[MAX_PLAYER_NAME]; // to vam predstavlja ono sto ce igrac koristiti u toj komandi targetid je id igraca koji dobija admina alevel je level admina string je poruka koja ce da se ispise adminu igracu i ako vi zelite serveru ja sam stavio a name je ime admina igraca koji dobija admina zavisi[/pawn]
Onda stavljate ovo
[pawn] if(PlayerInfo[playerid][Ulogovan] == 0) return SendClientMessage(playerid,-1,""CRVENA"[BD:RP]"BELA"Niste mozete koristiti ovu komandu jer niste ulogovani."); // ovo vam predstavlja proveru da li je igrac ulogovan  ako nemate register sistem ubacen u skriptu izbrisite ovo ne treba vam [/pawn]
Zatim stavljate sledecu varijantu
[pawn] if(PlayerInfo[playerid][pAdmin] >=7) // to znaci da niko osim vlasnika ne moze dati admina igracu
         { [/pawn]
Prelazimo na centar komande sad pazljivo pratite sta pricam ovo je najvazniji deo
[pawn] if(sscanf(params,"ui",targetid,alevel)) return SendClientMessage(playerid,-1,""CRVENA"[BD:RP]"BELA"Koristi /setadmin [ID] [LEVEL ADMINA]"); //  // ovo predstavlja komandu koju igrac koristi znaci ako igrac upise samo /giveadmin id  a ne upise id i alevel  nece se izvrisiti komanda
            if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid,-1,""CRVENA"[BD:RP]"BELA"Igrac kome zelite da postavite admina nije online!");
            GetPlayerName(playerid,playername,sizeof(playername)); // dobija ime igraca  koji daje komandu
            GetPlayerName(targetid,name,sizeof(name));
            PlayerInfo[playerid][pAdmin] = alevel;  //updajtuje faljove na scriptfiles korisnici to jeste enum koji smo gore spomenuli
            format(string1,sizeof(string1), ""CRVENA"[BD:RP]"BELA"Dali ste igracu [%d]%s admina level %i!",targetid,name,alevel); // predstavlja poruku adminu da je igracu tom i tom dao admina
            SendClientMessage(playerid,-1,string1); // ispisuje poruku
            format(string2,sizeof(string2), ""CRVENA"[BD:RP]"BELA"Cestitam! Dobili ste admina level %i od strane Vlasnika %s,uradi relog da bi ti se admin uspesno sacuvao!",alevel,playername); // salje poruku igracu tom i tom da je dobio admina
            SendClientMessage(targetid,-1,string2); // ispisuje poruku
            format(string3,sizeof(string3), ""CRVENA"[BD:RP]"BELA"Cestitamo igracu %s koji je dobio Admina level %i!",name,alevel); // salje poruku svim igracima da je on dobio admina level taj i taj
            SendClientMessageToAll(playerid,string3); // ispisuje poruku
[/pawn]
   { [/pawn]
i za kraj dopisujete ovo
[pawn]
}
         else return SendClientMessage(playerid,-1,""CRVENA"[BD:RP]"BELA"Niste ovlasteni da korisite ovu komandu!"); // naravno ovo sluzi sa if(PlayerInfo[playerid][pAdmin] >= 7) jer to kaze igracu koji nije admin uopste ili je manji admin level od admina 7 da mu se poruka ispisuje
           }
   return 1; // ovo uspesno izvrsava komandu
}
[/pawn]
To je to sto se tice komande ja sam je licno pravio i ove poruke slobodno izmenite jer to sam ja svom serveru prilagodjavao to bi bilo to za ovu komandu
izmena za komandu malu sam gresku napravio ne bi se fino ispisalo
inace izmenjeno je vec samo uradite ovo sto gore pise i radice

Takodje igrac ne mora raditi relog napravite onplayerupdate  na svaki minut