Linkovi:
http://forum.sa-mp.com/showthread.php?t=602923 - SSCANF 2
http://forum.sa-mp.com/showthread.php?t=91354 - ZCMD
Pre svega idemo include ta dva plugina:
#include
#include Kada smo includovali ove 2 baze podataka, idemo na pravljenje komandi.Nadjete mesto kod ostalih komandi i napravite mesta za novu.
Prva linija ce biti :
CMD:fine[playerid, params[]) Sada smo kreirali novu komandu fine,playerid se odnosi na igraca.Uglavnom sada idu { } simboli.Oni oznacavaju kraj i pocetak komande.
CMD:fine[playerid, params[])
{
}
Sada cemo unutar { } simboli odraditi ono sto ce nasa komanda raditi.Uglavnom se na pocetku komande nalaze provere za admine,lidere,gamemastere itd.Tako da ukoliko je neko tipa Admin manji od 2 ne moze koristiti komandu.
Provera se radi sa IF sto prevedeno sa engleskog znaci AKO.Znaci mi postavljamo pitanje "Ako je igrac admin manji od 1 uradi sledece..."
To bi izgledalo ovako :
if(PlayerInfo < 1 ) return SendClientMessage(playerid, -1, "Ne mozes koristiti ovo zato sto nisi admin!");Sada ukoliko neko ukuca komandu /fine a nije admin ispisuje mu tekst Ne mozes koristititi ovo zato sto nisi admin!.Takodje mozete da umesto SendClientMessage da stavite sledece:
if(PlayerInfo < 1) return Kick(playerid);Ukoliko neko kukuca /fine a nije admin kikovace ga 😄 .
Sada nakon provere idemo da dodamo par stvari:
new igrac,tekst,novac,razlog;Sada smo bukvalno dodali varijable igrac(to ce nam biti igrac na kome primenjujemo komandu),tekst(tekst koji pisemo igrac-u i playerid-u.512 oznacava duzinu teksta),novac(novac koji cemo oduzeti igracu).
Napomena - playerid je za onoga ko koristi komandu a na "igrac" se upotrebljava komanda.Igrac je poremljiva,znaci moze se menjati.
Sada cemo iskoristiti sscanf2 plugin
if(sscanf(params, "uds",target,novac,razlog)) return SendClientMessage(playerid, -1, "UPOTREBA | /fine ");Znaci sada ako korisnik ukuca samo /fine ili ne ispuni podatke iz sscanf-a onda mu izbaci poruku za upotrebu.
E sada znaci verovatno se pitate sta je "ud" ?
U zavisnosti sta smo prvo stavili,posto sam ja prvo stavio target znaci to je igrac onda koristimo "u " ,zatim se menja u novac sto je broj, i posle razlog
sto je string.Znaci idemo "u" pa zatim ide broj sto je "d" i string "s[broj duzine]".Sada kada se to spoji u jedno, ispada "uds"
Tutorial samo za sscanf mozete naci klikom na : LINK
Da nastavimo dalje...
Nakon sto smo odradili deo za sscanf,znaci ukoliko igrac ne ukuca sve potrebne podatke,izbacuje mu upotrebu.
Sada cemo da dodamo ispod svega ovoga
else
{
}Znaci ako je igrac prosao sve provere,ide na sledece izmedju ovih zagrada ispod else :
Posto pravimo komandu za fine,hocemo da se igracu oduzme novac
Za to koristimo:
GivePlayerMoney(igrac,-novac);U ovoj funkciji ce da igracu(onom kome smo uneli ID) oduzeti vrednost novca koju smo uneli.Jos jedna upotreba ove funkcije je da se da igracu odredjen novac,ako je taj slucaj obrise se "-novac" i ubacite svoj novac.Ako cete da se oduzima ide - ispred.Ukoliko hocete da date sebi umesto "igrac" ide "playerid".
Sada cemo da stavimo da igracu pise nekakva poruka.To radimo preko funkcije :
format(string,sizeof(string), "Oduzet ti je novac od strane admina : %s | Kolicina : %d | Razlog: %s ",GetPlayerName(playerid),novac,razlog);Pomocu ovoga smo samo formatirali tekst unutar " " .
%s - to je za stringove,tacnije tekst
%d - za brojeve
Posle zareza stavljamo vrednosti koje ce da se ispisu pomocu %s ili %d.Znaci vrednosti idu redom,znaci ako je prvo %s na redu,mora posle zarezi biti string,tacnije tekst.
GetPlayerName(playerid) - Uzima ime od playerid-a tacnije onoga ko je kucao i iskoristio komandu.
novac - varijabla novca koji ce biti oduzet/dat
razlog - razlog koji smo upisali
Sada cemo tu poruku poslati igracu kome je oduzet novac :
SendClientMessage(igrac, -1, string);SendClientMessage - sluzi da se neka poruka posalje igracu
igrac - Onaj kome ce poruka biti poslata,ukoliko stavimo playerid,poruku ce slati igracu koji je ukucao komandu
-1 - Boja,boje takodje mozete dodavati u tekstu ukoliko su definisane primer : ""CRVENA"Cao
string - to je ona varijabla koju smo formatirali,tacnije tekst
Sada mozete odraditi isto tako samo sto umesto igrac stoji playerid pri SendClientMessage.Pod format ce biti sve isto umesto teksta
Primer :
format(string,sizeof(string), "Oduzeo si igracu novac : %d | Razlog:%s",novac,razlog);
SendClientMessage(playerid, -1, string);Ista stvar kao i gore samo sta salje drugaciju poruku igracu koji je iskoristio komandu.
Sve u svemu komanda izgleda ovako :
CMD:fine[playerid, params[])
{
if(PlayerInfo < 1 ) return SendClientMessage(playerid, -1, "Ne mozes koristiti ovo zato sto nisi admin!");
new igrac,tekst,novac,razlog;
if(sscanf(params, "uds",target,novac,razlog)) return SendClientMessage(playerid, -1, "UPOTREBA | /fine ");
else
{
GivePlayerMoney(igrac,-novac);
format(string,sizeof(string), "Oduzet ti je novac od strane admina : %s | Kolicina : %d | Razlog: %s ",GetPlayerName(playerid),novac,razlog);
SendClientMessage(igrac, -1, string);
format(string,sizeof(string), "Oduzeo si igracu novac : %d | Razlog:%s",novac,razlog);
SendClientMessage(playerid, -1, string);
}
return 1;
}
To bi bilo to,ukoliko imate pitanje,slobodno pitajte ili ukoliko vam nesto nije bilo jasno.Ovo je moj prvi tutorial tako da budite blagi 🙂 😄 😎



