new banned[MAX_PLAYERS], leftBANdia[MAX_PLAYERS], leftBANmes[MAX_PLAYERS], leftBANano[MAX_PLAYERS];
CMD:ban(playerid, params[]) { if(admin[playerid] < 3) return 0; new id, days; new string[80], motivo[50]; if(sscanf(params,"uis", id, days, motivo)) { SendClientMessage(playerid, -1, "Use: /ban [id] [days] [motivo]"); return 1; } new Year, Month, Day; getdate(Year, Month, Day); leftBANdia[playerid] = Day; leftBANmes[playerid] = Month; leftBANano[playerid] = Year; Ban(id); format(string, sizeof(string), "AdmCmd: %s foi banido pelo admin %s. Razгo: %s.", PlayerName(id), PlayerName(playerid), motivo ); SendClientMessageToAll(COLOR_LIGHTRED, string); return 1; }
// BANIDO? if(banned[playerid] >= 1) { new Year, Month, Day; getdate(Year, Month, Day); if(Year != startVIPano[playerid]) { banned[playerid] = 0; leftBANdia[playerid] = 0; leftBANmes[playerid] = 0; leftBANano[playerid] = 0; } else if(Year == startVIPano[playerid] && Month > startVIPmes[playerid] && Day >= startVIPdia[playerid]) { banned[playerid] = 0; leftBANdia[playerid] = 0; leftBANmes[playerid] = 0; leftBANano[playerid] = 0; } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Vocк estб banido e seu BAN sу sai %i, %i, %i"); Kick(playerid); } }
expirar = gettime() + (dias * 86400);
if(gettime() < expirar) {
// ainda banido
}
else {
// banimento expirou
}
Ao invйs de salvar dia, mкs e ano separadamente, salve a timestamp em que o ban deve expirar.
PHP код:
PHP код:
|
// BANIDO? if(banned[playerid] >= 1) { if(gettime() < expirarban[playerid]) { SendClientMessage(playerid, COLOR_LIGHTRED, "Essa conta esґta banida e o banimento dela expira em: ..."); Kick(playerid); } else { banned[playerid] = 0; } }
Putz bem mais simples!!! Obrigadгo!!! +rep
E pra mandar na msg qnt tempo falta? Код:
// BANIDO? if(banned[playerid] >= 1) { if(gettime() < expirarban[playerid]) { SendClientMessage(playerid, COLOR_LIGHTRED, "Essa conta esґta banida e o banimento dela expira em: ..."); Kick(playerid); } else { banned[playerid] = 0; } } |
new Float:days = ((expirarban[playerid] - gettime()) / 86400);
format(message, sizeof message, "Faltam %.2f dias.", days);
SendClientMessage(playerid, -1, message);
new stringdialog[256]; format(stringdialog,sizeof(stringdialog),"AdmCmd: %s foi banido pelo admin %s. Razгo: %s.", PlayerName(id), PlayerName(playerid), motivo ); ShowPlayerDialog(id,10000,DIALOG_STYLE_MSGBOX,"BANIDO:",stringdialog,"Ok",""); // nao pode banir um adm porra banned[id] = 1; expirarban[id] = gettime() + (days * 86400); format(string, sizeof(string), "AdmCmd: %s foi banido pelo admin %s. Razгo: %s.", PlayerName(id), PlayerName(playerid), motivo ); SendClientMessageToAll(COLOR_LIGHTRED, string);
CMD:ban(playerid, params[]) { if(admin[playerid] < 3) return 0; new id, days; new string[80], motivo[50]; if(sscanf(params,"uis", id, days, motivo)) { SendClientMessage(playerid, -1, "Use: /ban [id] [days] [motivo]"); return 1; } new stringdialog[256]; format(stringdialog,sizeof(stringdialog),"AdmCmd: %s foi banido pelo admin %s. Razгo: %s.", PlayerName(id), PlayerName(playerid), motivo ); ShowPlayerDialog(id,10000,DIALOG_STYLE_MSGBOX,"BANIDO:",stringdialog,"Ok",""); // nao pode banir um adm porra banned[id] = 1; expirarban[id] = gettime() + (days * 86400); format(string, sizeof(string), "AdmCmd: %s foi banido pelo admin %s. Razгo: %s.", PlayerName(id), PlayerName(playerid), motivo ); SendClientMessageToAll(COLOR_LIGHTRED, string); OnPlayerSave(playerid); Kick(id); //Ban(id); banned[id] = 0; // pro proximo q logar nгo entrar com a variavel banido = 1 return 1; }
Conforme dito acima, vocк pode usar o CTime pra informar a data em que o registro expira.
Para informar quantos dias faltam, pode fazer o seguinte. PHP код:
|
new bandays = (unixfinal - unixinicial) / dias; // dias
new horas = ((unixfinal - unixinicial) % dias) / 3600; // horas que sobraram