Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Nome: VBan2
- Descrição: Sistema de bans
- Autor: ViniBorn
- Contato : www.facebook.com/vinibornpawn
- *** *** *** ***** *** *** *** *** ***** ******** ****** ***
- *** *** *** *** *** *** *** *** ** *** *** *** *** *** *** ***
- *** *** *** *** *** *** *** *** ** *** *** *** *** *** *** ***
- *** *** *** *** *** *** *** *** ** *** *** *** *** *** *** ***
- ****** *** *** ****** *** *** **** ***** *** *** *** ******
- 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.
- - Adicione ao seu GM o código abaixo, adaptando à sua variável de admin
- forward GetAdmin(playerid); public GetAdmin(playerid) return Admin[playerid];
- */
- #include <a_samp>
- #include <zcmd>
- #include <DOF2>
- #include <sscanf2>
- #define DIALOG_VBAN 10000
- #define CorErro 0xFF0000AA
- #define CorBan 0xE11D36AA
- #define Bissexto(%0) !(%0 % 400)
- new VBString[128], LastArq[35];
- CMD:ban(playerid, params[])
- {
- if(CallRemoteFunction("GetAdmin", "d", playerid) < 1)
- return SendClientMessage(playerid, CorErro, "ERRO: Você não tem permissão para usar este comando!");
- new ID, Motivo[32];
- if(sscanf(params, "ds[32]", ID, Motivo))
- return SendClientMessage(playerid, CorErro, "USO: /ban [ID] [Motivo]");
- VBan(ID, playerid, Motivo);
- return true;
- }
- CMD:banip(playerid, params[])
- {
- if(CallRemoteFunction("GetAdmin", "d", playerid) < 1)
- return SendClientMessage(playerid, CorErro, "ERRO: Você não tem permissão para usar este comando!");
- new vIP[16], Motivo[32];
- if(sscanf(params, "s[16]s[32]", vIP, Motivo))
- return SendClientMessage(playerid, CorErro, "USO: /banip [IP] [Motivo]");
- VBanIP(vIP, playerid, Motivo);
- return true;
- }
- CMD:bannick(playerid, params[])
- {
- if(CallRemoteFunction("GetAdmin", "d", playerid) < 1)
- return SendClientMessage(playerid, CorErro, "ERRO: Você não tem permissão para usar este comando!");
- new Nick[25], Motivo[32];
- if(sscanf(params, "s[25]s[32]", Nick, Motivo))
- return SendClientMessage(playerid, CorErro, "USO: /bannick [Nick] [Motivo]");
- VBanNick(Nick, playerid, Motivo);
- return true;
- }
- CMD:tempban(playerid, params[])
- {
- if(CallRemoteFunction("GetAdmin", "d", playerid) < 1)
- return SendClientMessage(playerid, CorErro, "ERRO: Você não tem permissão para usar este comando!");
- new ID, Dias, Motivo[32];
- if(sscanf(params, "uds[32]", ID, Dias, Motivo))
- return SendClientMessage(playerid, CorErro, "USO: /tempban [ID] [Dias] [Motivo]");
- if(Dias < 1 || Dias > 30)
- return SendClientMessage(playerid, CorErro, "ERRO: Mínimo de 1 e máximo de 30 dias.");
- VBanTemp(ID, playerid, Motivo, Dias);
- return true;
- }
- CMD:desbanir(playerid, params[])
- {
- if(CallRemoteFunction("GetAdmin", "d", playerid) < 2)
- return SendClientMessage(playerid, CorErro, "ERRO: Você não tem permissão para usar este comando!");
- new Arq[45];
- if(sscanf(params, "s[45]", Arq))
- return SendClientMessage(playerid, CorErro, "USO: /desbanir [Nick/IP]");
- VBUnBan(playerid,Arq);
- return true;
- }
- CMD:baninfo(playerid, params[])
- {
- if(CallRemoteFunction("GetAdmin", "d", playerid) < 1)
- return SendClientMessage(playerid, CorErro, "ERRO: Você não tem permissão para usar este comando!");
- new Arq[24];
- if(sscanf(params, "s[24]", Arq))
- return SendClientMessage(playerid, CorErro, "USO: /baninfo [IP/Nick]");
- format(VBString, 35, "/Bans/%s.ini", Arq);
- format(LastArq, 24, Arq);
- VBanLoadInfo(playerid,VBString);
- return true;
- }
- VBan(playerid, admin, Motivo[])
- {
- if(IsPlayerConnected(playerid))
- {
- new AdminNick[MAX_PLAYER_NAME];
- if(admin == -1) format(AdminNick, MAX_PLAYER_NAME, "VBot");
- else format(AdminNick, MAX_PLAYER_NAME, Player(admin));
- format(VBString,128,"'- VBan -' O jogador %s foi banido por %s. Motivo: %s",Player(playerid),AdminNick,Motivo);
- SendClientMessageToAll(CorBan,VBString);
- format(VBString, 35, "/Bans/%s.ini", Player(playerid));
- VBanSaveInfo(VBString, Player(playerid), AdminNick, PlayerIP(playerid), getdate()-1, Motivo);
- format(VBString, 35, "/Bans/%s.ini", PlayerIP(playerid));
- VBanSaveInfo(VBString, Player(playerid), AdminNick, PlayerIP(playerid), getdate()-1, Motivo);
- VBanLoadInfo(playerid,VBString);
- SetTimerEx("VBKick",300, false, "i", playerid);
- }
- else SendClientMessage(admin, CorErro, "Jogador não conectado.");
- return true;
- }
- VBanIP(pIP[], admin, Motivo[])
- {
- new playerid = GetIDIP(pIP);
- if(playerid != INVALID_PLAYER_ID)
- {
- format(VBString, 35, "/Bans/%s.ini", Player(playerid));
- VBanSaveInfo(VBString, Player(playerid), Player(admin), PlayerIP(playerid), getdate()-1, Motivo);
- format(VBString, 35, "/Bans/%s.ini", PlayerIP(playerid));
- VBanSaveInfo(VBString, Player(playerid), Player(admin), PlayerIP(playerid), getdate()-1, Motivo);
- VBanLoadInfo(playerid,VBString);
- SetTimerEx("VBKick",300, false, "i", playerid);
- }
- else
- {
- format(VBString, 35, "/Bans/%s.ini", pIP);
- VBanSaveInfo(VBString, "Nenhum", Player(admin), pIP, getdate()-1, Motivo);
- }
- format(VBString,128,"'- VBan -' O IP %s foi banido por %s. Motivo: %s",pIP,Player(admin),Motivo);
- SendClientMessageToAll(CorBan,VBString);
- return true;
- }
- VBanNick(Nick[], admin, Motivo[])
- {
- new playerid = GetIDName(Nick);
- if(playerid != INVALID_PLAYER_ID)
- {
- format(VBString, 35, "/Bans/%s.ini", Player(playerid));
- VBanSaveInfo(VBString, Player(playerid), Player(admin), PlayerIP(playerid), getdate()-1, Motivo);
- format(VBString, 35, "/Bans/%s.ini", PlayerIP(playerid));
- VBanSaveInfo(VBString, Player(playerid), Player(admin), PlayerIP(playerid), getdate()-1, Motivo);
- VBanLoadInfo(playerid,VBString);
- SetTimerEx("VBKick",300, false, "i", playerid);
- }
- else
- {
- format(VBString, 35, "/Bans/%s.ini", Nick);
- VBanSaveInfo(VBString, Nick, Player(admin), "Nenhum", getdate()-1, Motivo);
- }
- format(VBString,128,"'- VBan -' O nick %s foi banido por %s. Motivo: %s",Nick,Player(admin),Motivo);
- SendClientMessageToAll(CorBan,VBString);
- return true;
- }
- VBanTemp(playerid, admin, Motivo[], dias)
- {
- if(IsPlayerConnected(playerid))
- {
- format(VBString,128,"'- VBan -' O jogador %s foi banido temporariamente por %s (%d dias). Motivo: %s",Player(playerid),Player(admin),dias,Motivo);
- SendClientMessageToAll(CorBan,VBString);
- new Data[3], MaxDias, Final;
- getdate(Data[0], Data[1], Data[2]);
- if(Bissexto(Data[0])) MaxDias = 366;
- else MaxDias = 365;
- if(getdate()+dias > MaxDias) Final = (getdate()+dias)-MaxDias;
- else Final = getdate()+dias;
- format(VBString, 35, "/Bans/%s.ini", Player(playerid));
- VBanSaveInfo(VBString, Player(playerid), Player(admin), PlayerIP(playerid), Final, Motivo);
- format(VBString, 35, "/Bans/%s.ini", PlayerIP(playerid));
- VBanSaveInfo(VBString, Player(playerid), Player(admin), PlayerIP(playerid), Final, Motivo);
- VBanLoadInfo(playerid,VBString);
- SetTimerEx("VBKick",300, false, "i", playerid);
- }
- else SendClientMessage(admin, CorErro, "Jogador não conectado.");
- return true;
- }
- VBanSaveInfo(File[], nick[], admin[], ip[], tempban, motivo[])
- {
- new Data[6], Aux[32];
- getdate(Data[0], Data[1], Data[2]);
- gettime(Data[3], Data[4], Data[5]);
- DOF2_CreateFile(File);
- DOF2_SetString(File,"Nick",nick);
- DOF2_SetString(File,"Admin",admin);
- DOF2_SetString(File,"IP",ip);
- DOF2_SetInt(File,"TempBan",tempban);
- if(getdate() > tempban) DOF2_SetInt(File,"AnoTempBan",Data[0]+1);
- else DOF2_SetInt(File,"AnoTempBan",Data[0]);
- DOF2_SetString(File,"Motivo",motivo);
- format(Aux, sizeof Aux, "%02d/%02d/%d", Data[2], Data[1], Data[0]);
- DOF2_SetString(File,"Data",Aux);
- format(Aux, sizeof Aux, "%02d:%02d:%02d", Data[3], Data[4], Data[5]);
- DOF2_SetString(File,"Hora",Aux);
- DOF2_SaveFile();
- }
- VBanLoadInfo(playerid,Varq[])
- {
- if(!DOF2_FileExists(Varq))
- return SendClientMessage(playerid, CorErro,"'- VBan -' Ban inexistente.");
- new InfoString[300], Data[3], TempoDesban;
- getdate(Data[0], Data[1], Data[2]);
- if(DOF2_GetInt(Varq,"AnoTempBan") == Data[0])
- TempoDesban = DOF2_GetInt(Varq,"TempBan") - getdate();
- else
- {
- new MaxDias;
- if(Bissexto(Data[0])) MaxDias = 366;
- else MaxDias = 365;
- TempoDesban = (DOF2_GetInt(Varq,"TempBan")+MaxDias) - getdate();
- }
- 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\n\n\t%d dia(s) para ser desbanido(a).",DOF2_GetString(Varq,"Nick"),DOF2_GetString(Varq,"IP"),DOF2_GetString(Varq,"Admin"),DOF2_GetString(Varq,"Motivo"),DOF2_GetString(Varq,"Data"),DOF2_GetString(Varq,"Hora"),TempoDesban);
- if(CallRemoteFunction("GetAdmin", "d", playerid) < 2)
- ShowPlayerDialog(playerid, DIALOG_VBAN, DIALOG_STYLE_MSGBOX, "{FFFFFF}VBan - BanInfo - By: ViniBorn",InfoString,"Fechar", "");
- else
- ShowPlayerDialog(playerid, DIALOG_VBAN, DIALOG_STYLE_MSGBOX, "{FFFFFF}VBan - BanInfo - By: ViniBorn",InfoString,"Fechar", "Desbanir");
- return true;
- }
- VBUnBan(playerid,Varq[], Automatico = 0)
- {
- format(VBString, 35, "/Bans/%s.ini",Varq);
- if(!DOF2_FileExists(VBString))
- return SendClientMessage(playerid, CorErro,"'- VBan -' Ban inexistente.");
- new tNick[25], tIP[16];
- format(tNick, 25, DOF2_GetString(VBString, "Nick"));
- format(tIP, 16, DOF2_GetString(VBString, "IP"));
- format(VBString, 35, "/Bans/%s.ini",tNick);
- if(DOF2_FileExists(VBString))
- DOF2_RemoveFile(VBString);
- format(VBString, 35, "/Bans/%s.ini",tIP);
- if(DOF2_FileExists(VBString))
- DOF2_RemoveFile(VBString);
- DOF2_Exit();
- if(Automatico == 0)
- format(VBString,128,"'- VBan -' O nick/IP %s foi desbanido por %s.",Varq,Player(playerid));
- else
- format(VBString,128,"'- VBan -' O nick/IP %s cumpriu sua punição e foi desbanido.",Varq);
- SendClientMessageToAll(0x0080FFFF, VBString);
- return true;
- }
- VBCheck(playerid)
- {
- new File[35];
- format(File, 35, "/Bans/%s.ini", Player(playerid));
- if(DOF2_FileExists(File))
- {
- new Data[3];
- getdate(Data[0], Data[1], Data[2]);
- if(DOF2_GetInt(File,"TempBan") <= getdate() && DOF2_GetInt(File,"AnoTempBan") == Data[0])
- VBUnBan(playerid,Player(playerid), 1);
- else
- {
- VBanLoadInfo(playerid,File);
- SetTimerEx("VBKick",300, false, "i", playerid);
- return true;
- }
- }
- format(File, 35, "/Bans/%s.ini", PlayerIP(playerid));
- if(DOF2_FileExists(File))
- {
- new Data[3];
- getdate(Data[0], Data[1], Data[2]);
- if(DOF2_GetInt(File,"TempBan") <= getdate() && DOF2_GetInt(File,"AnoTempBan") == Data[0])
- VBUnBan(playerid,PlayerIP(playerid), 1);
- else
- {
- VBanLoadInfo(playerid,File);
- SetTimerEx("VBKick",300, false, "i", playerid);
- return true;
- }
- }
- return false;
- }
- GetIDIP(vIP[])
- {
- new vvIP[16];
- for(new v, b = GetMaxPlayers(); v != b; v++)
- if(IsPlayerConnected(v))
- {
- GetPlayerIp(v, vvIP, sizeof vvIP);
- if(strfind(vIP, vvIP) != -1)
- return v;
- }
- return INVALID_PLAYER_ID;
- }
- GetIDName(vName[])
- {
- new VBNome[MAX_PLAYER_NAME];
- for(new v, b = GetMaxPlayers(); v != b; v++)
- if(IsPlayerConnected(v))
- {
- GetPlayerName(v, VBNome, MAX_PLAYER_NAME);
- if(!strcmp(vName, VBNome))
- return v;
- }
- return INVALID_PLAYER_ID;
- }
- Player(playerid)
- {
- new Nome[24];
- GetPlayerName(playerid, Nome, 24);
- return Nome;
- }
- PlayerIP(playerid)
- {
- new vbIP[16];
- GetPlayerIp(playerid, vbIP, 16);
- return vbIP;
- }
- forward VBKick(playerid);public VBKick(playerid) Kick(playerid);
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- new Arq[35];
- format(Arq, 35, "/Bans/%s.ini", LastArq);
- if(dialogid == DIALOG_VBAN)
- {
- if(!response)
- {
- if(strcmp(DOF2_GetString(Arq, "Nick"),"Nenhum")) format(VBString, 64, "Você realmente deseja desbanir o nick %s ?",DOF2_GetString(Arq, "Nick"));
- else if(strcmp(DOF2_GetString(Arq, "IP"),"Nenhum")) format(VBString, 64, "Você realmente deseja desbanir o IP %s ?",DOF2_GetString(Arq, "IP"));
- if(CallRemoteFunction("GetAdmin", "d", playerid) > 1)
- ShowPlayerDialog(playerid, DIALOG_VBAN+1, DIALOG_STYLE_MSGBOX, "{FFFFFF}Desbanir",VBString,"Sim", "Não");
- }
- }
- else if(dialogid == DIALOG_VBAN+1)
- if(response)
- VBUnBan(playerid,LastArq);
- return false;
- }
- public OnPlayerRequestClass(playerid,classid)
- {
- VBCheck(playerid);
- return true;
- }
- public OnFilterScriptInit()
- {
- print("\n\nVBan2 iniciado.\t\t\tAutor: ViniBorn\n\n");
- return true;
- }
- public OnFilterScriptExit()
- {
- print("\n\nVBan2 finalizado.\t\t\tAutor: ViniBorn\n\n");
- DOF2_Exit();
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement