Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include a_samp
- #include sscanf2
- #include zcmd
- #define DATABASE "Vip.db"
- static DB: Database;
- new DBResult: Resultado;
- enum vInfo
- {
- pLevel,
- pKey[11],
- pDias,
- pGetTime
- }
- new Vip[MAX_PLAYERS][vInfo];
- new Str[256], Key[11], gNome[MAX_PLAYER_NAME], GetData[50];
- public OnFilterScriptInit()
- {
- SetTimer("VerificarVIP", 5000, true);
- Database = db_open(DATABASE);
- db_query(Database, "CREATE TABLE IF NOT EXISTS `VIP` (`ID` INTEGER PRIMARY KEY AUTOINCREMENT, `NOME` TEXT, `LEVEL` INTEGER, `KEY` TEXT, `DIAS` INTEGER, `GETTIME` INTEGER)");
- }
- public OnFilterScriptExit()
- {
- db_close(Database);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- GetPlayerName(playerid, gNome, sizeof gNome);
- format(Str, sizeof Str, "SELECT * FROM `VIP` WHERE `NOME` = '%s'", gNome);
- Resultado = db_query(Database, Str);
- if(db_num_rows(Resultado))
- {
- db_get_field_assoc(Resultado, "LEVEL", GetData, sizeof GetData);
- Vip[playerid][pLevel] = strval(GetData);
- db_get_field_assoc(Resultado, "KEY", Vip[playerid][pKey], 11);
- db_get_field_assoc(Resultado, "DIAS", GetData, sizeof GetData);
- Vip[playerid][pDias] = strval(GetData);
- db_get_field_assoc(Resultado, "GETTIME", GetData, sizeof GetData);
- Vip[playerid][pGetTime] = strval(GetData);
- if(gettime() > Vip[playerid][pGetTime])
- {
- format(Str, sizeof Str, "DELETE FROM `VIP` WHERE `NOME` = '%s'", gNome);
- db_query(Database, Str);
- ResetVipStats(playerid);
- SendClientMessage(playerid, -1, "Seu VIP acabou! Obrigado por adquirir nosso plano.");
- }
- else
- {
- SendClientMessage(playerid, -1, "Você é um jogador VIP! Digite /meuvip para mais detalhes.");
- }
- }
- return 1;
- }
- CMD:criarkey(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid)) return 0;
- new Time, Level;
- if(sscanf(params, "s[11]iii", Key, Level, Time)) return SendClientMessage(playerid, -1, "/criarkey [KEY (max 10 dígitos)] [LEVEL] [TEMPO (dias)]");
- if(Level < 1 || Level > 3) return SendClientMessage(playerid, -1, "Level inválido. Deve ser entre 1 e 3.");
- if(strlen(Key) > 10) return SendClientMessage(playerid, -1, "Insira no máximo 10 caracteres.");
- format(Str, sizeof Str, "SELECT `KEY` FROM `VIP` WHERE `KEY` = '%s'", Key);
- Resultado = db_query(Database, Str);
- if(db_num_rows(Resultado))
- {
- SendClientMessage(playerid, -1, "Essa Key já existe, tente outra.");
- }
- else
- {
- format(Str, sizeof Str, "INSERT INTO `VIP` (`NOME`, `LEVEL`, `KEY`, `DIAS`, `GETTIME`) VALUES ('N/A', '%i', '%s', '%i', '0')", Level, Key, Time);
- db_query(Database, Str);
- format(Str, sizeof Str, "Key criada com sucesso, repasse-a para um jogador. Key: %s | Tempo: %s", Key, ConvertTime(Time * 60 * 60 * 24));
- SendClientMessage(playerid, -1, Str);
- }
- db_free_result(Resultado);
- return 1;
- }
- CMD:removerkey(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid)) return 0;
- new Nome[MAX_PLAYER_NAME];
- if(isnull(params)) return SendClientMessage(playerid, -1, "/removerkey [Key]");
- format(Str, sizeof Str, "SELECT `NOME`, `KEY` FROM `VIP` WHERE `KEY` = '%s'", params);
- Resultado = db_query(Database, Str);
- if(db_num_rows(Resultado))
- {
- db_get_field_assoc(Resultado, "NOME", Nome, sizeof Nome);
- format(Str, sizeof Str, "DELETE FROM `VIP` WHERE `KEY` = '%s'", params);
- db_query(Database, Str);
- for(new i = 0; i < MAX_PLAYERS; ++ i)
- {
- GetPlayerName(i, gNome, sizeof gNome);
- if(strcmp(gNome, Nome, false) == 0)
- {
- SendClientMessage(i, -1, "Um administrador removeu a sua Key VIP. Caso houver equívoco, tire um print e passe-o para o administrador.");
- ResetVipStats(i);
- break;
- }
- }
- SendClientMessage(playerid, -1, "Key removida com sucesso.");
- }
- else
- {
- SendClientMessage(playerid, -1, "Essa Key não existe.");
- }
- db_free_result(Resultado);
- return 1;
- }
- CMD:keysusadas(playerid)
- {
- if(!IsPlayerAdmin(playerid)) return 0;
- static GetKey;
- SendClientMessage(playerid, -1, "Lista de Keys usadas:");
- Resultado = db_query(Database, "SELECT `KEY` FROM `VIP` WHERE `NOME` <> 'N/A'");
- GetKey = db_num_rows(Resultado);
- if(GetKey)
- {
- for(new i = 0; i < GetKey; ++ i)
- {
- db_get_field_assoc(Resultado, "KEY", GetData, sizeof GetData);
- SendClientMessage(playerid, -1, GetData);
- db_next_row(Resultado);
- }
- }
- db_free_result(Resultado);
- format(Str, sizeof Str, "Verificação completada com sucesso! %i Keys em uso.", GetKey);
- SendClientMessage(playerid, -1, Str);
- return 1;
- }
- CMD:keysnaousadas(playerid)
- {
- if(!IsPlayerAdmin(playerid)) return 0;
- static GetKey;
- SendClientMessage(playerid, -1, "Lista de Keys não usadas:");
- Resultado = db_query(Database, "SELECT `KEY` FROM `VIP` WHERE `NOME` = 'N/A'");
- GetKey = db_num_rows(Resultado);
- if(GetKey)
- {
- for(new i = 0; i < GetKey; ++ i)
- {
- db_get_field_assoc(Resultado, "KEY", GetData, sizeof GetData);
- SendClientMessage(playerid, -1, GetData);
- db_next_row(Resultado);
- }
- }
- db_free_result(Resultado);
- format(Str, sizeof Str, "Verificação completada com sucesso! %i Keys sem uso.", GetKey);
- SendClientMessage(playerid, -1, Str);
- return 1;
- }
- CMD:verkey(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid)) return 0;
- if(isnull(params)) return SendClientMessage(playerid, -1, "/verkey [Nome do Jogador]");
- format(Str, sizeof Str, "SELECT `KEY` FROM `VIP` WHERE `NOME` = '%s'", params);
- Resultado = db_query(Database, Str);
- if(db_num_rows(Resultado))
- {
- db_get_field_assoc(Resultado, "KEY", GetData, sizeof GetData);
- format(Str, sizeof Str, "A Key do jogador %s é %s", params, GetData);
- SendClientMessage(playerid, -1, Str);
- }
- else
- {
- SendClientMessage(playerid, -1, "Este jogador não possui VIP.");
- }
- return 1;
- }
- CMD:servip(playerid, params[])
- {
- new sDias[6], Nome[MAX_PLAYER_NAME];
- if(isnull(params)) return SendClientMessage(playerid, -1, "/servip [Key]");
- if(VipLevel(playerid)) return SendClientMessage(playerid, -1, "Você já é jogador VIP");
- format(Str, sizeof Str, "SELECT * FROM `VIP` WHERE `KEY` = '%s'", params);
- Resultado = db_query(Database, Str);
- GetPlayerName(playerid, gNome, sizeof gNome);
- if(db_num_rows(Resultado))
- {
- db_get_field_assoc(Resultado, "NOME", Nome, sizeof Nome);
- if(strcmp("N/A", Nome, false) == 0)
- {
- db_get_field_assoc(Resultado, "DIAS", sDias, sizeof sDias);
- Vip[playerid][pDias] = strval(sDias);
- format(Str, sizeof Str, "UPDATE `VIP` SET `NOME` = '%s', `GETTIME` = '%i' WHERE `KEY` = '%s'", gNome, (Vip[playerid][pDias] * 60 * 60 * 24) + gettime(), params);
- db_query(Database, Str);
- }
- else
- {
- SendClientMessage(playerid, -1, "Esta Key já foi utilizada.");
- }
- }
- else
- {
- SendClientMessage(playerid, -1, "Esta Key não existe, verifique-a novamente ou entre em contato com o administrador que a forneceu.");
- }
- db_free_result(Resultado);
- format(Str, sizeof Str, "SELECT * FROM `VIP` WHERE `KEY` = '%s'", params);
- Resultado = db_query(Database, Str);
- {
- db_get_field_assoc(Resultado, "KEY", Vip[playerid][pKey], 11);
- db_get_field_assoc(Resultado, "GETTIME", GetData, sizeof GetData);
- Vip[playerid][pGetTime] = strval(GetData);
- db_get_field_assoc(Resultado, "LEVEL", GetData, sizeof GetData);
- Vip[playerid][pLevel] = strval(GetData);
- format(Str, sizeof Str, "Agora você é um jogador VIP! Level: %i | Key: %s | Dias adquiridos: %i | Tempo restante: %s", Vip[playerid][pLevel], Vip[playerid][pKey], Vip[playerid][pDias], ConvertTime(Vip[playerid][pGetTime] - gettime()));
- SendClientMessage(playerid, -1, Str);
- }
- return 1;
- }
- CMD:meuvip(playerid)
- {
- new sDias[5];
- if(!VipLevel(playerid)) return SendClientMessage(playerid, -1, "Você não é jogador VIP.");
- GetPlayerName(playerid, gNome, sizeof gNome);
- format(Str, sizeof Str, "SELECT * FROM `VIP` WHERE `NOME` = '%s'", gNome);
- Resultado = db_query(Database, Str);
- if(db_num_rows(Resultado))
- {
- SendClientMessage(playerid, -1, "Seus dados VIP:");
- db_get_field_assoc(Resultado, "DIAS", sDias, sizeof sDias);
- Vip[playerid][pDias] = strval(sDias);
- db_get_field_assoc(Resultado, "KEY", Vip[playerid][pKey], 11);
- db_get_field_assoc(Resultado, "LEVEL", GetData, sizeof GetData);
- Vip[playerid][pLevel] = strval(GetData);
- db_get_field_assoc(Resultado, "GETTIME", GetData, sizeof GetData);
- Vip[playerid][pGetTime] = strval(GetData);
- format(Str, sizeof Str, "Level: %i | Key: %s | Dias adquiridos: %i | Tempo restante: %s", Vip[playerid][pLevel], Vip[playerid][pKey], Vip[playerid][pDias], ConvertTime(Vip[playerid][pGetTime] - gettime()));
- SendClientMessage(playerid, -1, Str);
- }
- return 1;
- }
- stock VipLevel(playerid)
- {
- return Vip[playerid][pLevel];
- }
- stock ConvertTime(SEGUNDOS)
- {
- new MINUTOS_, HORAS_, DIAS_, String[200];
- if(SEGUNDOS > 59)
- {
- MINUTOS_ = SEGUNDOS / 60;
- SEGUNDOS = SEGUNDOS - MINUTOS_ * 60;
- }
- if(MINUTOS_ > 59)
- {
- HORAS_ = MINUTOS_ / 60;
- MINUTOS_ = MINUTOS_ - HORAS_ * 60;
- }
- if(HORAS_ > 23)
- {
- DIAS_ = HORAS_ / 24;
- HORAS_ = HORAS_ - DIAS_ * 24;
- }
- format(String, sizeof(String), "%02d Dias e %02d Horas e %02d Minutos e %02d Segundos", DIAS_, HORAS_, MINUTOS_, SEGUNDOS);
- if(DIAS_ < 1) format(String, sizeof(String), "%02d Horas e %02d Minutos e %02d Segundos", HORAS_, MINUTOS_, SEGUNDOS);
- if(DIAS_ < 1 && HORAS_ < 1) format(String, sizeof(String), "%02d Minutos e %02d Segundos", MINUTOS_, SEGUNDOS);
- if(DIAS_ < 1 && HORAS_ < 1 && MINUTOS_ < 1) format(String, sizeof(String), "%02d Segundos", SEGUNDOS);
- return String;
- }
- stock ResetVipStats(playerid)
- {
- Vip[playerid][pLevel] = 0;
- Vip[playerid][pKey] = '\0';
- Vip[playerid][pDias] = 0;
- Vip[playerid][pGetTime] = -1;
- return 1;
- }
- forward VerificarVIP();
- public VerificarVIP()
- {
- for(new i = 0; i < MAX_PLAYERS; ++ i)
- {
- if(!IsPlayerConnected(i)) continue;
- if(gettime() > Vip[i][pGetTime] && VipLevel(i))
- {
- printf("var: %i | gettime: %i", Vip[i][pGetTime], gettime());
- GetPlayerName(i, gNome, sizeof gNome);
- format(Str, sizeof Str, "DELETE FROM `VIP` WHERE `NOME` = '%s'", gNome);
- db_query(Database, Str);
- ResetVipStats(i);
- SendClientMessage(i, -1, "Seu VIP acabou! Obrigado por adquirir nosso plano.");
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment