Salut, azi vreau sa va arat cum sa faceti comanda </setskin> cu sscanf si zcmd.
Sa incepem:
Descarcam:SSCANF,ZCMD si le punem in: /pawno/include.
Acum deschidem un GM/FS si sus scriem #include <zcmd> si #include <sscanf>.
Ex:
#include <a_samp>
#include <zcmd>
#include <sscanf>
Acum definim niste culori pentru aspect.(le punem dupa #include).
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_ADD 0x63FF60AA
Pentru inceput vom face o comanda 'goala':
CMD:setskin(playerid, params[])
{
return 1;
}
Putem sa punem aceasta comanda 'goala' oriunde deoarece zcmd permite plasarea comenzilor in afara callback-urilor.
Acum vom defini id care inseamna 'cui sa ii setam skinul' si skinid care inseamna 'ce skin ii setam'
CMD:setskin(playerid, params[])
{
new id;
new skinid;
return 1;
}
Acum vom pune conditia ca adminul/playerul ce foloseste comanda sa fie logat pe seerver.
CMD:setskin(playerid, params[])
{
new id;
new skinid;
if(IsPlayerConnected(playerid))//Aici verifica daca playerul este logat.
return 1;
}
Daca vrem ca aceasta comanda sa fie folosita doar de admini punem conditia ca playerul sa fie admin.
CMD:setskin(playerid, params[])
{
new id;
new skinid;
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[ p layerid ][AdminLevel] >=1)//Acest ">=1" inseamna ca trebuie sa aiba admin 1 sau mai mare.
}
return 1;
}
Acum vom face ca si comanda sa ii fie atribuita unui alt player
CMD:setskin(playerid, params[])
{
new id;
new skinid;
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[ p layerid ][AdminLevel] >=1)//Acest ">=1" inseamna ca trebuie sa aiba admin 1 sau mai mare.
{
if(!sscanf(params, "ui", id, skinid))//"ui" ne spune ca in comanda noastra este minim o litera si minim o cifra.
{
if(skinid >= 0 && skinid <= 299)//Aici vom defini skin-urile si ii vom spune ca ele incep de la 0 inclusiv pana la 299
{
new string[64];// acest string va fi pus 'in miscare' de SendClientMessage
new name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];//name ne ajuta cand spune x ti-a setat skinul pe y GetPlayerName(playerid, name, sizeof(name));// la fel ca mai sus GetPlayerName(id, PlayerName, sizeof(PlayerName));// la fel ca mai sus
format(string, sizeof(string), "%s ti-a setat skinul pe %d.", name, skinid);
SendClientMessage(id, COLOR_ADD, string);//aceasta functie trimite string-ul de mai sus
format(string, sizeof(string), "AdmCmd:I-ai setat skinul lui %s pe %d.", PlayerName, skinid); SendClientMessage(playerid, COLOR_ADD, string);//la fel ca mai sus
SetPlayerSkin(id, skinid);//aceasta functie ne seteaza skinul
return 1;
}
else return SendClientMessage(playerid, COLOR_LIGHTBLUE, "Invalid skin ID");//Asta ne spune ca am pus un skin id gresit.
}
else return SendClientMessage(playerid, COLOR_LIGHTBLUE, "FOLOSIRE:/setskin <ID/PartOfName> <skinID>");
//asta ne arata cum sa folosim comanda.
}
else return SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nu ai rangul administrativ necesar!");//asta ne spune ca nu avem admin 1 sau mai mare
}
else return SendClientMessage(playerid, COLOR_LIGHTBLUE, "Acel jucator nueste conectat");//asta este clar ce ne zice
return 1;
}
Daca aveti vreo nelamurire lasati un reply
Multumesc.
Edit:Am scris [ p layerid ] deoarece se considera userbar, normal este legat totul.