/* Nome: VBan Descrição: Sistema de bans Autor: ViniBorn Contato : vini-elite@hotmail.com *** *** *** ***** *** *** *** *** ***** ******** ****** *** *** *** *** *** *** *** *** *** ** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ** *** *** *** *** *** *** *** ****** *** *** ****** *** *** **** ***** *** *** *** ****** Não retire os créditos. Seu nome é valioso, não suje-o. Observações : - O diretório padrão para salvar os bans é : scriptfiles/bans. Crie a pasta bans. */ #include #include #define BanDir "Bans/%s.ini" // Diretório dos bans #define CorErro 0xAFAFAFAA #define CorBan 0xE11D36AA new VIP[32],Vnewban[32],Vstring[128],NICKBAN[20],DiasBan; stock VBanID(playerid,giveid,motivo[]) { format(NICKBAN,20,VBanPlayer(giveid)); if(playerid > -1) { format(Vstring,128,"'- VBan -' O jogador %s foi banido por %s. Motivo: %s",VBanPlayer(giveid),VBanPlayer(playerid),motivo); SendClientMessageToAll(CorBan,Vstring); GetPlayerIp(giveid, VIP, sizeof(VIP)); format(Vnewban,32,BanDir,VIP); DOF2_CreateFile(Vnewban); VBanSaveInfo(playerid,Vnewban,motivo,false); format(Vnewban,32,BanDir,VBanPlayer(giveid)); DOF2_CreateFile(Vnewban); VBanSaveInfo(playerid,Vnewban,motivo,false); } else { format(Vnewban,32,BanDir,VBanPlayer(giveid)); format(Vstring,128,"'- VBan -' O jogador %s foi banido por VBot Admin(%s). Motivo: %s",VBanPlayer(giveid),DOF2_GetString(Vnewban,"Admin"),motivo); SendClientMessageToAll(CorBan,Vstring); DOF2_CreateFile(Vnewban); VBanSaveInfo(-1,Vnewban,motivo,false); } if(IsPlayerConnected(giveid)) VBanLoadInfo(giveid,Vnewban); SetTimerEx("VBKick",300, false, "i", giveid); return 1; } stock VTempBan(playerid,giveid,tempo,motivo[]) { DiasBan = tempo; format(NICKBAN,20,VBanPlayer(giveid)); format(Vstring,128,"'- VBan -' O jogador %s foi temporariamente banido por %s. Tempo: %d dias. Motivo: %s",VBanPlayer(giveid),VBanPlayer(playerid),tempo,motivo); SendClientMessageToAll(CorBan,Vstring); GetPlayerIp(giveid, VIP, sizeof(VIP)); format(Vnewban,32,BanDir,VIP); DOF2_CreateFile(Vnewban); VBanSaveInfo(playerid,Vnewban,motivo,true); format(Vnewban,32,BanDir,VBanPlayer(giveid)); DOF2_CreateFile(Vnewban); VBanSaveInfo(playerid,Vnewban,motivo,true); SetTimerEx("VBKick",300, false, "i", giveid); } stock VBanNick(playerid,nick[],motivo[]) { format(Vnewban,32,BanDir,nick); if(DOF2_FileExists(Vnewban)) return SendClientMessage(playerid, CorErro,"'- VBan -' Este nick já está banido."); new giveid; giveid = VBReturnUser(nick); if(!IsPlayerConnected(giveid)) { format(NICKBAN,20,nick); format(Vstring,128,"'- VBan -' O nick %s foi banido por %s. Motivo: %s",nick,VBanPlayer(playerid),motivo); SendClientMessageToAll(CorBan,Vstring); DOF2_CreateFile(Vnewban); return VBanSaveInfo(playerid,Vnewban,motivo,false); } else return VBanID(playerid,giveid,motivo); } stock VBanIP(playerid,IP2[],motivo[]) { format(Vnewban,32,BanDir,IP2); if(DOF2_FileExists(Vnewban)) return SendClientMessage(playerid, CorErro,"'- VBan -' Este IP já está banido"); if(playerid > -1) { new ban; for(new i=0, j = GetMaxPlayers(); i < j; i++) if(IsPlayerConnected(i)) { GetPlayerIp(i, VIP, sizeof(VIP)); if(!strcmp(VIP, IP2)) { ban++; VBanID(playerid,i,motivo); } } if(ban == 0) { DOF2_CreateFile(Vnewban); format(Vstring,128,"'- VBan -' O IP %s foi banido por %s. Motivo: %s",IP2,VBanPlayer(playerid),motivo); SendClientMessageToAll(CorBan,Vstring); VBanSaveInfo(playerid,Vnewban,motivo,false); } } else { format(Vnewban,32,BanDir,IP2); DOF2_CreateFile(Vnewban); VBanSaveInfo(-1,Vnewban,"Ban evade",false); format(Vstring,128,"'- VBan -' O IP %s foi banido por VBot Admin(%s). Motivo: Ban evade",IP2,DOF2_GetString(Vnewban,"Nick")); SendClientMessageToAll(CorBan,Vstring); } return 1; } stock VUnBan(playerid,Arq[]) { format(Vnewban,32,BanDir,Arq); if(!DOF2_FileExists(Vnewban)) return SendClientMessage(playerid, CorErro,"'- VBan -' Ban inexistente."); new BANNEDIP[32]; format(BANNEDIP,32,BanDir,DOF2_GetString(Vnewban,"IP")); if(DOF2_FileExists(BANNEDIP)) { new BANNEDACC[32]; if(VBIsIP(Arq)) { if(playerid > -1) format(Vstring,128,"'- VBan -' O IP %s(%s) foi desbanido por %s.",Arq,DOF2_GetString(Vnewban,"Nick"),VBanPlayer(playerid)); else format(Vstring,128,"'- VBan -' O IP %s(%s) foi desbanido por VBot Admin.",Arq,DOF2_GetString(Vnewban,"Nick")); } else { if(playerid > -1) format(Vstring,128,"'- VBan -' A conta %s(%s) foi desbanida por %s.",Arq,DOF2_GetString(Vnewban,"IP"),VBanPlayer(playerid)); else format(Vstring,128,"'- VBan -' A conta %s(%s) foi desbanida por VBot Admin.",Arq,DOF2_GetString(Vnewban,"IP")); } format(BANNEDACC,32,BanDir,DOF2_GetString(Vnewban,"Nick")); DOF2_RemoveFile(BANNEDACC); DOF2_RemoveFile(BANNEDIP); } else format(Vstring,128,"'- VBan -' A conta %s foi desbanida por %s.",Arq,VBanPlayer(playerid)); //SendClientMessageToAll(0x10B4EEAA,Vstring); SendClientMessageToAll(0xF7A26FFF,Vstring); DOF2_RemoveFile(Vnewban); return 1; } stock VBanCheck(playerid) { format(Vnewban,32,BanDir,VBanPlayer(playerid)); if(DOF2_FileExists(Vnewban) && DOF2_GetInt(Vnewban,"DiaBan") != 0) { new Vvano, Vvmes, Vvdia; getdate(Vvano, Vvmes, Vvdia); new diaban = DOF2_GetInt(Vnewban,"DiaBan"); new tempban = DOF2_GetInt(Vnewban,"TempBan"); if(DOF2_GetInt(Vnewban,"MesBan") != Vvmes) { new LastMonth = VBDiasMes(Vvmes)-diaban; if((Vvdia+LastMonth) < tempban) { format(Vstring,128,"Ainda banido. Aguarde %d dia(s)",tempban-(Vvdia+LastMonth)); SendClientMessage(playerid,0x10B4EEAA,Vstring); } else { VUnBan(-1,VBanPlayer(playerid)); return SendClientMessage(playerid,0x10B4EEAA,"Seu ban temporário acabou"); } } else { if(Vvdia-diaban < tempban) { format(Vstring,128,"Ainda banido. Aguarde %d dia(s)",tempban-(Vvdia)); SendClientMessage(playerid,0x10B4EEAA,Vstring); } else { VUnBan(-1,VBanPlayer(playerid)); return SendClientMessage(playerid,0x10B4EEAA,"Seu ban temporário acabou"); } } } if(DOF2_FileExists(Vnewban)) { VBanLoadInfo(playerid,Vnewban); GetPlayerIp(playerid, VIP, sizeof(VIP)); VBanIP(-1,VIP,DOF2_GetString(Vnewban,"Motivo")); SetTimerEx("VBKick",300, false, "i", playerid); return true; } GetPlayerIp(playerid, VIP, sizeof(VIP)); format(Vnewban,32,BanDir,VIP); if(DOF2_FileExists(Vnewban)) { VBanLoadInfo(playerid,Vnewban); format(NICKBAN,20,VBanPlayer(playerid)); DOF2_SetString(Vnewban,"Nick",NICKBAN); DOF2_SaveFile(); VBanID(-1,playerid,DOF2_GetString(Vnewban,"Motivo")); SetTimerEx("VBKick",300, false, "i", playerid); } return 1; } forward VBKick(playerid);public VBKick(playerid) Kick(playerid); stock VBanLoadInfo(playerid,Varq[]) { if(!DOF2_FileExists(Varq)) return SendClientMessage(playerid, CorErro,"'- VBan -' Ban inexistente."); new InfoString[300]; format(InfoString,300,"\n\t{FFFFFF}Nick : {E11D36}%s\n\t{FFFFFF}IP : {E11D36}%s\n\t{FFFFFF}Admin : {E11D36}%s\n\t{FFFFFF}Motivo : {E11D36}%s\n\t{FFFFFF}Data : {E11D36}%s\n\t{FFFFFF}Horário : {E11D36}%s",DOF2_GetString(Varq,"Nick"),DOF2_GetString(Varq,"IP"),DOF2_GetString(Varq,"Admin"),DOF2_GetString(Varq,"Motivo"),DOF2_GetString(Varq,"Data"),DOF2_GetString(Varq,"Hora")); ShowPlayerDialog(playerid, 231, DIALOG_STYLE_MSGBOX, " {FFFFFF}VBan - BanInfo - By: ViniBorn",InfoString,"Fechar", ""); return 1; } stock VBanSaveInfo(playerid,Varq[],motivo[],bool:BanType) { new Vano, Vmes, Vdia, Vhora, Vminuto, Vsegundo; getdate(Vano, Vmes, Vdia); gettime(Vhora, Vminuto, Vsegundo); DOF2_SetString(Varq,"IP",VIP); DOF2_SetString(Varq,"Nick",NICKBAN); if(playerid > -1) DOF2_SetString(Varq,"Admin",VBanPlayer(playerid)); else DOF2_SetString(Varq,"Admin","VBot Admin"); format(Vstring,32,"%02d:%02d:%02d", Vhora, Vminuto, Vsegundo); DOF2_SetString(Varq,"Hora",Vstring); format(Vstring,32,"%02d/%02d/%d", Vdia, Vmes, Vano); DOF2_SetString(Varq,"Data",Vstring); DOF2_SetString(Varq,"Motivo",motivo); if(BanType == true) { DOF2_SetInt(Varq,"TempBan",DiasBan); DOF2_SetInt(Varq,"DiaBan",Vdia); DOF2_SetInt(Varq,"MesBan",Vmes); } DOF2_SaveFile(); return 1; } stock VBanPlayer(playerid) { new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, MAX_PLAYER_NAME); return pname; } stock VBReturnUser(PlayerName[]) { if(VBIsNumeric(PlayerName)) return strval(PlayerName); else { new found=0, id; for(new i=0; i < GetMaxPlayers(); i++) { if(IsPlayerConnected(i)) { new foundname[MAX_PLAYER_NAME]; GetPlayerName(i, foundname, MAX_PLAYER_NAME); new namelen = strlen(foundname); new bool:searched=false; for(new pos=0; pos <= namelen; pos++) { if(searched != true) { if(strfind(foundname,PlayerName,true) == pos) { found++; id = i; } } } } } if(found == 1) return id; else return INVALID_PLAYER_ID; } } stock VBDiasMes(Month) { switch(Month-1) { case 0: Month = 31; case 1: Month = 31; case 2: Month = 28; case 3: Month = 31; case 4: Month = 30; case 5: Month = 31; case 6: Month = 30; case 7: Month = 31; case 8: Month = 31; case 9: Month = 30; case 10: Month = 31; case 11: Month = 30; } return Month; } stock VBIsIP(const string[]) { new count; for (new i = 0, j = strlen(string); i < j; i++) if(string[i] > 47 && string[i] < 58) count++; if(count > 5) return 1; return 0; } stock VBIsNumeric(const string[]) { for (new i = 0, j = strlen(string); i < j; i++) if(string[i] > '9' || string[i] < '0') return 0; return 1; }