31.01.2012, 13:06
(
Последний раз редактировалось Tanush123; 26.05.2013 в 14:15.
)
How to make a easy /setvip command (zcmd & sscanf)
Well hello everyone, i will teach you how to make /setvip and well this is like almost same as my other tutorial how to make a easy /setadmin command (zcmd & sscanf) but in this tutorial i will try to explain the best i can.What is this?
Well this is a command that is called /setvip, you can decide what commands you can add for vips in this server and you can also set other people vip by using /setvip [playerid / partofname] [level]. You will need this required things to do this.Zcmd - By Zeex
Sscanf - By ******
The reason i picked to use Zcmd and Sscanf because they are more easier to use if your coding commands like /ban [playerid / partofname], /sethealth [playerid / partofname] or many more.
How to make this
Well first you will need to log in your rcon in order to make this work (so players cannot set their self vip and do stupid stuff)Under your includes add
pawn Код:
enum pData
{
vip
};
new PlayerData[MAX_PLAYERS][pData];
Under that add
pawn Код:
new vlevel,Nam[MAX_PLAYER_NAME],pname[MAX_PLAYER_NAME],str[128],ID;
vlevel: so you can set the other player levels
Nam[MAX_PLAYER_NAME]: So it will define the playerid Nam
pname[MAX_PLAYER_NAME]: This will define the ID name
str[128]: A String that will send to you and the other person
ID: The other person your using /setvip on
Now lets get to the command, i will explain what it means with // so you guys can read
pawn Код:
CMD:setvip(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return 0;//This will make the command work for rcon, if your not rcon it will do SERVER: Unknown Command
if(sscanf(params,"ui",ID,vlevel)) return SendClientMessage(playerid,0xFF9900AA, "USAGE: /setvip [playerid / partofname] [Level 1-3]");//If you do not use the format /setvip properly it will show how to
if(ID == INVALID_PLAYER_ID) return SendClientMessage(playerid,0xFF0000FF, "That user is not connected.");//if its an unknown ID, it will show that person is not connected
if(vlevel > 3) return SendClientMessage(playerid,0xFF0000FF,"AVAILABLE VIP LEVELS 1-3!"); //If you add a number over 3 for /setvip, ex: /setvip Tanush 1000, it will show that message
if(vlevel == 0)//if you select vip level 0
{
if(PlayerData[ID][vip] == 0) return SendClientMessage(playerid,0xFF0000FF,"ERROR: That person is already level 0 vip!");// If the person you attempt to /setvip that is already level 0 vip, it will show that
GetPlayerName(playerid,Nam, MAX_PLAYER_NAME);//Defines the playerid name
GetPlayerName(ID,pname,MAX_PLAYER_NAME);//Defines the other player name
format(str, sizeof(str),"%s has set your VIP Level to 0!",Nam);//string
SendClientMessage(ID,0xFF9900AA,str);//It will send the other person a message that %s has set your vip level to 0
format(str,sizeof(str),"You had set %s VIP Level to 0!",pname);//string
SendClientMessage(playerid,0xFF9900AA,str);//This will send you that you had set %s vip level to 0
PlayerData[ID][vip] = 0;//Sets the other person vip level to 0
}
if(vlevel == 1)//if you select vip level 1
{
if(PlayerData[ID][vip] == 1) return SendClientMessage(playerid,0xFF0000FF,"ERROR: That person is already level 1 vip!");//If the person you attempt to /setvip that is already level 1 vip, it will show that
GetPlayerName(playerid,Nam, MAX_PLAYER_NAME);//defines the playerid name
GetPlayerName(ID,pname,MAX_PLAYER_NAME);//defines the other player name
format(str, sizeof(str),"%s has set your VIP Level to 1 (BRONZE VIP)!",Nam);//string
SendClientMessage(ID,0xFF9900AA,str);//Sends the other person a message
format(str, sizeof(str),"You had set %s VIP Level to 1 (BRONZE VIP)!",pname);//string
SendClientMessage(playerid,0xFF9900AA,str);//Sends you a message
PlayerData[ID][vip] = 1;//Sets the other person vip level to 1
}
if(vlevel == 2)//if you select vip level 2
{
if(PlayerData[ID][vip] == 2) return SendClientMessage(playerid,0xFF0000FF,"ERROR: That person is already level 2 vip!");//If the person you attempt to /setvip that is already level 2 vip, it will show that
GetPlayerName(playerid,Nam, MAX_PLAYER_NAME);//defines playerid name
GetPlayerName(ID,pname,MAX_PLAYER_NAME);//defines other person name
format(str, sizeof(str),"%s has set your VIP Level to 2 (SILVER VIP)!",Nam);//string
SendClientMessage(ID,0xFF9900AA,str);// Sends the other person a message
format(str, sizeof(str),"You had set %s VIP Level to 2 (SILVER VIP)!",pname);//string
SendClientMessage(playerid,0xFF9900AA,str);//sends you a message
PlayerData[ID][vip] = 2;//sets the other person vip level to 2
}
if(vlevel == 3)// if you select vip level 3
{
if(PlayerData[ID][vip] == 3) return SendClientMessage(playerid,0xFF0000FF,"ERROR: That person is already level 3 vip!");//if the person you attempt to /setvip that is already level 3 vip, it will show that
GetPlayerName(playerid,Nam, MAX_PLAYER_NAME);//defines playerid name
GetPlayerName(ID,pname,MAX_PLAYER_NAME);//defines the other person name
format(str, sizeof(str),"%s has set your VIP Level to 3 (GOLD VIP)!",Nam);//string
SendClientMessage(ID,0xFF9900AA,str);//sends the other person a message
format(str, sizeof(str),"You had set %s VIP Level to 3 (GOLD VIP)!",pname);//String
SendClientMessage(playerid,0xFF9900AA,str);//Sends you a message
PlayerData[ID][vip] = 3;//sets the other person vip level to 3
}
return 1;
}
pawn Код:
CMD:healme(playerid,params[])//command
{
if(PlayerData[playerid][vip] < 1) return 0;//well i entered 1 so it will work for vip level 1 and above, if somebody that uses /healme and is under vip level 1 (thats obviously 0), it will send them SERVER: Unknown Command.
SetPlayerHealth(playerid,100);//just heals the player
SendClientMessage(playerid,0xFF9900AA,"You have healed your self");//a nice message :)
return 1;
}
Download
These are the includes i used for thisZcmd - By Zeex
Sscanf - By ******
And here is pastebin
pastebin
Sorry about the indention , for some reason all my pawn files just indented.