02.11.2014, 16:25
Hello I would like to ask the VIP on the number of days for example.
/setvip ID 30 Days VIP expire in 30 days Thanks
/setvip ID 30 Days VIP expire in 30 days Thanks
CMD:setvip(playerid,params[])
{
if(IsPlayerAdmin(playerid))
{
new ID;
new LVL;
new Days = 30;
if(sscanf(params,"iii", ID, LVL, Days)) return SendClientMessage(playerid,-1,"{FF0000}USAGE: {15FF00}/GiveVip [ID] [Vip Level] [30 Days]");
PlayerInfo[playerid][Vip] = LVL;
SetTimer("NoVip", 2628000000, false);
}
else
{
SendClientMessage(playerid, -1, "{FF0000}ERROR: {15FF00}You are not authorized to use this command, or the Days are Invalid !");
}
return 1;
}
forward NoVip();
public NoVip()
{
new playerid;
PlayerInfo[playerid][Vip] = 0;
SendClientMessage(playerid, -1, "{FF0000}[INFO]: {15FF00}Your temporally Vip System has been finished !");
}
enum pInfo
{
Vip,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
That won't work. Most people won't have their server running constantly for a whole month without a restart, and chances are the player won't even be connected/online by the time the timer ends.
I'd recommend keeping the expire date/time in a variable, and when they login check if the time has passed or not. |
pawn Код:
- I converted 1 month in miliseconds, and after 1 month, he won't have VIP ! - Anyway, my enums : pawn Код:
// EDIT: Look now at the code. I just made a little mistake wich will cause to you errors. I solved . |
// PlayerData[playerid][pVip] is used to store VIP time, you may set this to anything you like
CMD:makevip(playerid, parasm[])
{
new days;
if(sscanf(params, "d", days)) return SendClientMessage(playerid, -1, "Usage: /makevip [days]");
PlayerData[playerid][pVip] = gettime() + days * 86400; // you are adding number of days in seconds to the current time
return 1;
}