Acб les dejo los dos comandos: dcmd_setvip(playerid,params[]) { if(PlayerInfo[playerid][LoggedIn] == 1) { new pame[MAX_PLAYER_NAME]; GetPlayerName(playerid, pame, sizeof(pame)); if(!strcmp(NickAutorizado1,pame,true) ||!strcmp(NickAutorizado2,pame,true) ||!strcmp(NickAutorizado3,pame,true)) { if(PlayerInfo[playerid][Level] >= 7 || IsPlayerAdmin(playerid)) { new tmp [256]; new Index; tmp = strtok(params,Index); tmp2 = strtok(params,Index); if(!strlen(params)) return SendClientMessage(playerid, LIGHTBLUE2, "Usage: /setvip [PlayerID] [AccountType (0-5)]") && SendClientMessage(playerid, orange, "Funciуn: Especifique el Tipo de Cuenta (0-NormalAcc,1-Silver,2-Gold,3-Premium,4-Platinum,5-ExTrema)"); new player1, type, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME]; player1 = strval(tmp); if(!strlen(tmp2)) return SendClientMessage(playerid, LIGHTBLUE2, "Usage: /setvip [PlayerID] [AccountType (0-5)]") && SendClientMessage(playerid, orange, "Funciуn: Especifique el Tipo de Cuenta (1-Silver,2-Gold,3-Premium,4-Platinum,5-ExTrema)"); type = strval(tmp2); if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID) { if(PlayerInfo[player1][LoggedIn] == 1) { if(type > 5) return SendClientMessage(playerid,red,"ERROR: Tipo de Cuenta Invalida!"); if(type == PlayerInfo[player1][pVip]) return SendClientMessage(playerid,red,"ERROR: Este Player Ya Tiene Este Tipo de Cuenta!"); CMDMessageToAdmins(playerid,"SetVip"); GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname)); new year,month,day; new hour,minute,second; getdate(year, month, day); gettime(hour,minute,second); switch(type) { case 1: AccType = "Silver"; case 2: AccType = "Gold"; case 3: AccType = "Premium"; case 4: AccType = "Platinum"; case 5: AccType = "ExTrema"; } if(type > 0) format(string2,sizeof(string2),"|- Administrador %s a Cambiado Tu Cuenta a: %s",adminname,AccType); else format(string2,sizeof(string2),"|- Administrador %s a Cambiado Tu Cuenta a: 'Cuenta Normal!",adminname); SendClientMessage(player1,0x66C178AA,string2); if(type > PlayerInfo[player1][pVip]) GameTextPlayer(player1,"Promoted", 2000, 3); else GameTextPlayer(player1,"Demoted", 2000, 3); format(string2,sizeof(string2),"Usted ha dado a %s El Tipo de Cuenta: %s on '%d/%d/%d' at '%d:%d:%d'", playername, AccType, day, month, year, hour, minute, second); SendClientMessage(playerid,0x00C378AA,string2); format(string2,sizeof(string2),"Administrador %s ha hecho a %s el Tipo de Cuenta: %s",adminname, playername, AccType); SaveToFile("VipLog",string2); dUserSetINT(PlayerName2(player1)).("AccountType",( type)); PlayerInfo[player1][pVip] = type; return PlayerPlaySound(player1,1057,0.0,0.0,0.0); } else return SendClientMessage(playerid,red,"ERROR: This player is not Registred or Logged!"); } else return SendClientMessage(playerid,red,"ERROR: Tu No Tienes El Lvl Suficiente Para Usar Este Comando!"); } else return SendClientMessage(playerid,red,"ERROR: El Jugador No Esta Conectado!"); } else return SendClientMessage(playerid,red,"Lo Sentimos solo Samuel, Puede Dar Cuenta VIP"); } else return SendClientMessage(playerid,red,"ERROR: Tu Debes Estar Logeado (/login) para Usar Este Comando"); } dcmd_listavip(playerid,params[]) { #pragma unused params new conteo, vips[7000],texto[128],titulo[128]; for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) { if(PlayerInfo[i][pVip] >= 1) { conteo++; } } if(conteo == 0)return SendClientMessage(playerid,red,"No hay miembros Vips Conectados"); //Si no hay Vips format(titulo,128,"{40FF00}|| Vips Conectados ||: {FFFFFF}>> %d <<",conteo); //Se contaron los vips conectados for(new i = 0; i < MAX_PLAYERS; i++) { if(PlayerInfo[i][pVip] >= 1) { //Si el player es VIP format(texto,128,"{FFFFFF}%s [ID: %d] {00FFFF}[Cuenta: %d] \n",PlayerName2(i),i,PlayerInfo[i][pVip]); strcat(vips,texto); } } ShowPlayerDialog(playerid,79,DIALOG_STYLE_LIST,tit ulo,vips,"Cerrar",""); return 1; } |
new caducidadVIP[MAX_PLAYERS];
stock DarVIP(playerid, dias) {
// en segundos. Decimos que la fecha de caducidad es de tiempoactual + dнas.
caducidadVIP [playerid]=gettime() + (3600*24*dias);
}
stock leCaducoElVIP(playerid) {
return gettime() > caducidadVIP [playerid];
}
Almacena en una variable la fecha de caducidad del vio, las fechas se pueden representar con enteros que cuentan la famosa Unix timestamp. Un ejemplo:
pawn Код:
|
stock DarVIP(playerid) { new dia,mes,ano; getdate(ano,mes,dia); if(mes == 12) { MesVIP[playerid] = 1; AnoVIP[playerid] = ano+1; } else { DiaVIP[playerid] = dia; AnoVIP[playerid] = ano; MesVIP[playerid] = mes; } }
stock VerVIP(playerid) { new dia,mes,ano; getdate(ano,mes,dia); if(MesVIP[playerid] <= mes && DiaVIP[playerid] <= dia && AnoVIP[playerid] <= ano && VariableVip[playerid] == 1) { VariableVip[playerid] = 0; SendClientMessage(playerid,-1,"Mensaje de que se le fue el VIP"); } return 1; }
if(gettime() > dias_vip)
{
// El VIP caduca porque el tiempo UNIX ha sobrepasado el tiempo UNIX de los dias vip.
}
else
{
// Tiene VIP, no ha caducado.
}