Svi se vjerojatno sjećate ove teme i mog tutoriala oko statsa u textdrawu http://balkan-samp.com/forum/index.php?topic=25931.0
Uvidio sam u zadnje vrijeme da nema viÅ¡e pravih odnosno dobrih tutoriala pa sam odluÄio napraviti par ovo je jedan od njih (ostale će te moći pronaći na mom oficijalnom sajtu uskoro viÅ¡e o tome )...
U ovom ću vam tut-u pokazati kako pomoću jednoga textdrawa uraditi isti stats system puno bolji i optimiziraniji .
Tutorijal je naravno raden za gamemodove od 0 ali moze i za editane samo se trebaju podesiti varijable ...
Da ne duljim idemo na prvi korak 🙂
Prvi korak :
idemo na vrh i kreiramo varijable :
new Text:StatsText;
new Pokrenuti;Drugi korak :
u drugom koraku pravimo textdraw (možete na dosta naÄina Textdraw editori i sl.. )
StatsText = TextDrawCreate(260.000000, 150.000000,"Racun");//1
TextDrawAlignment(StatsText,0);
TextDrawBackgroundColor(StatsText,255);
TextDrawFont(StatsText,1);
TextDrawLetterSize(StatsText,0.259999,0.600000);
TextDrawColor(StatsText,-1);
TextDrawSetOutline(StatsText,1);
TextDrawSetProportional(StatsText,1);
TextDrawSetShadow(StatsText,1);pa da malo objasnimo :
TextDrawCreate(260.000000, 150.000000,"Racun");373.0 - x kordinata
182.0 - y kordinata
"Racun" - tu ide tekst u ovom sluÄaju to je nebitno .
TextDrawAlignment(StatsText,0);StatsText - naziv koji smo staviti za textdraw
0,1,2,3 - lijevo , centralno , desno poravnavanje
TextDrawColor(StatsText,-1);StatsText - naziv koji smo staviti za textdraw
0xF5DEB3AA - boja textdrawa
TextDrawFont(StatsText,1);StatsText - naziv koji smo staviti za textdraw
1 - Font
Treći korak:
nakon pravljenja textdrawa prelazimo na stats system .
za pocetak pravimo stock :
stock Stats(playerid, player)
{
return 1;
}
u stock cemo stavljati varijable i ostalo pojasnjavat cu vam posebno za svaku :
stock Stats(playerid, player)
{
new string;
format(string,sizeof(string),"Ime i prezime : %s~n~~n~Novac: %d$",GetName(playerid),GetPlayerMoney(playerid));
TextDrawSetString(StatsText, string); //s
return 1;
}Ovo je osnovno sto ce biti u ovom tutorialu tj. u statsima sada možete dodavati naprimjer za posao uradite :
new text;
if(GetPVarInt(playerid, "Posao") == 1) { text = "Naziv posla za id 1"; }
else if(GetPVarInt(playerid, "Posao") == 2) { text = "Naziv posla za id 2"; }
else { text = "Nezaposlen"; } // ako je id posla 0 odnosno ako je igrac nezaposlenili ako koristite enum
new text;
if(PlayerInfo == 1) { text = "Naziv posla za id 1"; }
else if(PlayerInfo == 1) { text = "Naziv posla za id 2"; }
else { text = "Nezaposlen"; } // ako je id posla 0 odnosno ako je igrac nezaposlenNaravno vi će te ovo sve prilagodavati svome gamemodu .
onda ce stock izgledati ovako :
stock Stats(playerid, player)
{
new string,text;
//posao
if(GetPVarInt(playerid, "Posao") == 1) { text = "Naziv posla za id 1"; }
else if(GetPVarInt(playerid, "Posao") == 2) { text = "Naziv posla za id 2"; }
else { text = "Nezaposlen"; } // ako je id posla 0 odnosno ako je igrac nezaposlen
//
format(string,sizeof(string),"Ime i prezime : %s~n~~n~Novac: %d$~n~~n~Posao: %s",GetName(playerid),GetPlayerMoney(playerid),text);
TextDrawSetString(StatsText, string); //
ShowStats(playerid, player);//ovo ću objasniti u idućem koraku (korak 4 )
return 1;
}tako možete raditi za sve .
NAPOMENA :nemojte samo copy/paste nego proÄitajte sta vam piÅ¡e pokraj svega i prilagodite svome gamemodu .
ÄŒetvrti korak :
u Äetvrtom koraku radimo pokazivanje igracu textdraw , destroy te hide textdraw pomoću stock-ova pa da krenemo .
stock ShowStats(playerid, player)
{
TextDrawShowForPlayer(player,StatsText);
return 0;
}
stock HideStats(playerid,player)
{
TextDrawHideForPlayer(player,StatsText);
}
stock DestroyStats(playerid)
{
TextDrawDestroy(StatsText);
return 0;
}ovdje se nema sto previÅ¡e objaÅ¡njavati znaÄi napravili smo 3 stock za pokazivanje / micanje / i uniÅ¡tavanje textdrawa tako da idemo na sljedeći korak.
Peti korak :
evo došli smo i do pravljenje komande za prikazivanje statsa pa da krenemo :
radimo sa ZCMD tako da vam u gamemodu treba include od Zeex-a
CMD:stats(playerid, params[])
{
return 1;
}CMD:stats(playerid, params[])
{
if(GetPlayerState(playerid) != 2)
{
if(Pokrenuti == 0)
{
Stats(playerid,playerid);
Pokrenuti = 1;
}else{SCM(playerid, -1, " Nemozete gledati statse tijekom vožnje !");}
}
return 1;
}Ako nema definiran SCM onda stavite na vrh gamemoda :
#define SCM SendClientMessage
Å esti korak :
u šestom koraku radimo micanje statsa na tipku enter ili slovo f i uništavanje textdrawa prilikom izlaska iz igrice :
public OnPlayerDisconnect(playerid, reason)
{
DestroyStats(playerid);
return 1;
}Ako želimo da pritiskom na tipku enter ili slovo f statsi maknu radimo sljedeće
pod :
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)stavljamo :
if (PRESSED(KEY_SECONDARY_ATTACK))
{
if(Pokrenuti == 1)
{HideStats(playerid,playerid);
Pokrenuti = 0;}
} Takoder provjerite da li imate :
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))S time zavrÅ¡avamo tutorial zahvaljujem i vidimo se u sljedećem tutorialu 😉
Izgled statsa :

Kraj : Ako imate kakvih problema obratite mi se u ovoj temi ili preko PP
Hvala i dovidenja 😛