Cooldown Tutorial By: Shadow
U ovome tutorijalu cu vam pokazati kako igracu mozete prikazati koliko sekundi mora cekati prije nego li moze ponovno koristiti neku komandu.
Za ovaj tutorial cu koristiti zcmd include, link mozete naci ispod:
> https://forum.sa-mp.com/showthread.php?t=91354
#include < a_samp >
#include < zcmd >
new GlobalnaVarijabla[ MAX_PLAYERS ];Prvo napravimo globalnu varijablu, ona ce nam trebati za kasnije
Ja sam je nazvao "GlobalnaVarijabla", vi ju mozete nazvati bilokako, npr. "HelpCooldown", svejedno je
Kada smo napravili globalnu varijablu, idemo napraviti komandu, ja cu je nazvati cooldownkomanda
CMD:cooldownkomanda( playerid ) Ovo gore je prvi set-up za komandu, definirate playerid, ( params[ ] ) < ne mora se u slucaju ako ne koristite sscanf ili slicno
new now = gettime( ); Napravimo lokalnu varijablu u kojoj uzmemo vrijeme kada je igrac koristio komandu, trebat ce za kasnije
SendClientMessage( playerid, -1, "Komanda uspjesno iskoristena." ); Posalje igracu koji je napisao /cooldownkomanda poruku "Komanda uspjesno iskoristena"
GlobalnaVarijabla[ playerid ] = now; Spremimo sekunde od kada je igrac iskoristio komandu u globalnu varijablu koju smo napravili maloprije
if( now < ( GlobalnaVarijabla[ playerid ] + 20 ) ) Uzme vrijeme od kada je igrac iskoristio komandu i provjerava da li je proslo dvadeset sekundi od tada
SendClientMessageEx( playerid, -1, "Morate pricekati jos %d sekundi kako bi ste mogli koristiti ovu komandu!", ( GlobalnaVarijabla[ playerid ] + 20 ) - now ) Provjera koliko je sekundi proslo od kako je igrac iskoristio komandu, i prikazuje koliko jos mora cekati
SendClientMessageEx automacki formira string za vas tako da ne morate koristiti format(...) sendclientmessage(...)
SendClientMessageEx mozete naci ispod:
stock SendClientMessageEx( playerid, color, const text[], {Float, _}:... )
{
static
args,
str;
if( ( args = numargs( ) ) == 3)
{
SendClientMessage( playerid, color, text );
}
else
{
while (--args >= 3)
{
#emit LCTRL 5
#emit LOAD.alt args
#emit SHL.C.alt 2
#emit ADD.C 12
#emit ADD
#emit LOAD.I
#emit PUSH.pri
}
#emit PUSH.S text
#emit PUSH.C 144
#emit PUSH.C str
#emit PUSH.S 8
#emit SYSREQ.C format
#emit LCTRL 5
#emit SCTRL 4
SendClientMessage( playerid, color, str );
#emit RETN
}
return 1;
}Cijela komanda bi trebala izgledati ovako:
#include < a_samp >
#include < zcmd >
new GlobalnaVarijabla[ MAX_PLAYERS ];
CMD:cooldownkomanda( playerid ){
new now = gettime( );
if( now < ( GlobalnaVarijabla[ playerid ] + 20 ) ) SendClientMessageEx( playerid, -1, "Morate pricekati jos %d sekundi kako bi ste mogli koristiti ovu komandu!", ( GlobalnaVarijabla[ playerid ] + 20 ) - now );
else
{
SendClientMessage( playerid, -1, "Komanda uspjesno iskoristena." );
GlobalnaVarijabla[ playerid ] = now;
}
return 1;
}