ViniBorn

VBan - Sistema de bans + TempBan - DOF2- By: ViniBorn 2017

Apr 9th, 2017
1,355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.01 KB | None | 0 0
  1. /*
  2.     Nome: VBan
  3.     Descrição: Sistema de bans
  4.     Autor: ViniBorn
  5.     Contato : [email protected]
  6.  
  7.  
  8.         ***        ***   ***   *****     ***   ***   *** ***       *****      ********    ******    ***
  9.          ***      ***    ***   *** ***   ***   ***   ***   **    ***   ***    ***  ***    *** ***   ***
  10.           ***    ***     ***   ***  ***  ***   ***   *** **      ***   ***    *** ***     ***  ***  ***
  11.            ***  ***      ***   ***   *** ***   ***   ***   **    ***   ***    ***  ***    ***   *** ***
  12.             ******       ***   ***    ******   ***   *** ****      *****      ***   ***   ***    ******
  13.  
  14.  
  15.  
  16.  
  17.  
  18.         Não retire os créditos.
  19.         Seu nome é valioso, não suje-o.
  20.  
  21.  
  22.         Observações :
  23.  
  24.         - O diretório padrão para salvar os bans é : scriptfiles/bans.  Crie a pasta bans.
  25.  
  26.  
  27. */
  28.  
  29. #include <a_samp>
  30. #include <DOF2>
  31.  
  32. #define BanDir     "Bans/%s.ini"     // Diretório dos bans
  33. #define CorErro        0xAFAFAFAA
  34. #define CorBan        0xE11D36AA
  35.  
  36. new VIP[32],Vnewban[32],Vstring[128],NICKBAN[20],DiasBan;
  37.  
  38. stock VBanID(playerid,giveid,motivo[])
  39. {
  40.     format(NICKBAN,20,VBanPlayer(giveid));
  41.     if(playerid > -1)
  42.     {
  43.         format(Vstring,128,"'- VBan -' O jogador %s foi banido por %s. Motivo: %s",VBanPlayer(giveid),VBanPlayer(playerid),motivo);
  44.         SendClientMessageToAll(CorBan,Vstring);
  45.         GetPlayerIp(giveid, VIP, sizeof(VIP));
  46.         format(Vnewban,32,BanDir,VIP);
  47.         DOF2_CreateFile(Vnewban);
  48.         VBanSaveInfo(playerid,Vnewban,motivo,false);
  49.         format(Vnewban,32,BanDir,VBanPlayer(giveid));
  50.         DOF2_CreateFile(Vnewban);
  51.         VBanSaveInfo(playerid,Vnewban,motivo,false);
  52.     }
  53.     else
  54.     {
  55.         format(Vnewban,32,BanDir,VBanPlayer(giveid));
  56.         format(Vstring,128,"'- VBan -' O jogador %s foi banido por VBot Admin(%s). Motivo: %s",VBanPlayer(giveid),DOF2_GetString(Vnewban,"Admin"),motivo);
  57.         SendClientMessageToAll(CorBan,Vstring);
  58.         DOF2_CreateFile(Vnewban);
  59.         VBanSaveInfo(-1,Vnewban,motivo,false);
  60.     }
  61.     if(IsPlayerConnected(giveid))
  62.         VBanLoadInfo(giveid,Vnewban);
  63.  
  64.     SetTimerEx("VBKick",300, false, "i", giveid);
  65.     return 1;
  66. }
  67.  
  68. stock VTempBan(playerid,giveid,tempo,motivo[])
  69. {
  70.     DiasBan = tempo;
  71.     format(NICKBAN,20,VBanPlayer(giveid));
  72.     format(Vstring,128,"'- VBan -' O jogador %s foi temporariamente banido por %s. Tempo: %d dias. Motivo: %s",VBanPlayer(giveid),VBanPlayer(playerid),tempo,motivo);
  73.     SendClientMessageToAll(CorBan,Vstring);
  74.     GetPlayerIp(giveid, VIP, sizeof(VIP));
  75.     format(Vnewban,32,BanDir,VIP);
  76.     DOF2_CreateFile(Vnewban);
  77.     VBanSaveInfo(playerid,Vnewban,motivo,true);
  78.     format(Vnewban,32,BanDir,VBanPlayer(giveid));
  79.     DOF2_CreateFile(Vnewban);
  80.     VBanSaveInfo(playerid,Vnewban,motivo,true);
  81.     SetTimerEx("VBKick",300, false, "i", giveid);
  82. }
  83.  
  84. stock VBanNick(playerid,nick[],motivo[])
  85. {
  86.     format(Vnewban,32,BanDir,nick);
  87.  
  88.     if(DOF2_FileExists(Vnewban))
  89.         return SendClientMessage(playerid, CorErro,"'- VBan -' Este nick já está banido.");
  90.  
  91.     new giveid;
  92.     giveid = VBReturnUser(nick);
  93.     if(!IsPlayerConnected(giveid))
  94.     {
  95.         format(NICKBAN,20,nick);
  96.         format(Vstring,128,"'- VBan -' O nick %s foi banido por %s. Motivo: %s",nick,VBanPlayer(playerid),motivo);
  97.         SendClientMessageToAll(CorBan,Vstring);
  98.         DOF2_CreateFile(Vnewban);
  99.         return VBanSaveInfo(playerid,Vnewban,motivo,false);
  100.     }
  101.     else
  102.         return VBanID(playerid,giveid,motivo);
  103. }
  104.  
  105. stock VBanIP(playerid,IP2[],motivo[])
  106. {
  107.     format(Vnewban,32,BanDir,IP2);
  108.  
  109.     if(DOF2_FileExists(Vnewban))
  110.         return SendClientMessage(playerid, CorErro,"'- VBan -' Este IP já está banido");
  111.  
  112.     if(playerid > -1)
  113.     {
  114.         new ban;
  115.         for(new i=0, j = GetMaxPlayers(); i < j; i++)
  116.             if(IsPlayerConnected(i))
  117.             {
  118.                 GetPlayerIp(i, VIP, sizeof(VIP));
  119.                 if(!strcmp(VIP, IP2))
  120.                 {
  121.                     ban++;
  122.                     VBanID(playerid,i,motivo);
  123.                 }
  124.             }
  125.  
  126.         if(ban == 0)
  127.         {
  128.             DOF2_CreateFile(Vnewban);
  129.             format(Vstring,128,"'- VBan -' O IP %s foi banido por %s. Motivo: %s",IP2,VBanPlayer(playerid),motivo);
  130.             SendClientMessageToAll(CorBan,Vstring);
  131.             VBanSaveInfo(playerid,Vnewban,motivo,false);
  132.         }
  133.     }
  134.     else
  135.     {
  136.         format(Vnewban,32,BanDir,IP2);
  137.         DOF2_CreateFile(Vnewban);
  138.         VBanSaveInfo(-1,Vnewban,"Ban evade",false);
  139.         format(Vstring,128,"'- VBan -' O IP %s foi banido por VBot Admin(%s). Motivo: Ban evade",IP2,DOF2_GetString(Vnewban,"Nick"));
  140.         SendClientMessageToAll(CorBan,Vstring);
  141.     }
  142.     return 1;
  143. }
  144.  
  145. stock VUnBan(playerid,Arq[])
  146. {
  147.     format(Vnewban,32,BanDir,Arq);
  148.     if(!DOF2_FileExists(Vnewban))
  149.         return SendClientMessage(playerid, CorErro,"'- VBan -' Ban inexistente.");
  150.  
  151.     new BANNEDIP[32];
  152.     format(BANNEDIP,32,BanDir,DOF2_GetString(Vnewban,"IP"));
  153.     if(DOF2_FileExists(BANNEDIP))
  154.     {
  155.         new BANNEDACC[32];
  156.         if(VBIsIP(Arq))
  157.         {
  158.             if(playerid > -1)
  159.                 format(Vstring,128,"'- VBan -' O IP %s(%s) foi desbanido por %s.",Arq,DOF2_GetString(Vnewban,"Nick"),VBanPlayer(playerid));
  160.             else
  161.                 format(Vstring,128,"'- VBan -' O IP %s(%s) foi desbanido por VBot Admin.",Arq,DOF2_GetString(Vnewban,"Nick"));
  162.         }
  163.         else
  164.         {
  165.             if(playerid > -1)
  166.                 format(Vstring,128,"'- VBan -' A conta %s(%s) foi desbanida por %s.",Arq,DOF2_GetString(Vnewban,"IP"),VBanPlayer(playerid));
  167.             else
  168.                 format(Vstring,128,"'- VBan -' A conta %s(%s) foi desbanida por VBot Admin.",Arq,DOF2_GetString(Vnewban,"IP"));
  169.         }
  170.  
  171.         format(BANNEDACC,32,BanDir,DOF2_GetString(Vnewban,"Nick"));
  172.         DOF2_RemoveFile(BANNEDACC);
  173.         DOF2_RemoveFile(BANNEDIP);
  174.     }
  175.     else
  176.         format(Vstring,128,"'- VBan -' A conta %s foi desbanida por %s.",Arq,VBanPlayer(playerid));
  177.  
  178.     //SendClientMessageToAll(0x10B4EEAA,Vstring);
  179.     SendClientMessageToAll(0xF7A26FFF,Vstring);
  180.     DOF2_RemoveFile(Vnewban);
  181.     return 1;
  182. }
  183.  
  184. stock VBanCheck(playerid)
  185. {
  186.     format(Vnewban,32,BanDir,VBanPlayer(playerid));
  187.     if(DOF2_FileExists(Vnewban) && DOF2_GetInt(Vnewban,"DiaBan") != 0)
  188.     {
  189.         new Vvano, Vvmes, Vvdia;
  190.         getdate(Vvano, Vvmes, Vvdia);
  191.         new diaban = DOF2_GetInt(Vnewban,"DiaBan");
  192.         new tempban = DOF2_GetInt(Vnewban,"TempBan");
  193.  
  194.         if(DOF2_GetInt(Vnewban,"MesBan") != Vvmes)
  195.         {
  196.             new LastMonth = VBDiasMes(Vvmes)-diaban;
  197.             if((Vvdia+LastMonth) < tempban)
  198.             {
  199.                 format(Vstring,128,"Ainda banido. Aguarde %d dia(s)",tempban-(Vvdia+LastMonth));
  200.                 SendClientMessage(playerid,0x10B4EEAA,Vstring);
  201.             }
  202.             else
  203.             {
  204.                 VUnBan(-1,VBanPlayer(playerid));
  205.                 return SendClientMessage(playerid,0x10B4EEAA,"Seu ban temporário acabou");
  206.             }
  207.         }
  208.         else
  209.         {
  210.             if(Vvdia-diaban < tempban)
  211.             {
  212.                 format(Vstring,128,"Ainda banido. Aguarde %d dia(s)",tempban-(Vvdia));
  213.                 SendClientMessage(playerid,0x10B4EEAA,Vstring);
  214.             }
  215.             else
  216.             {
  217.                 VUnBan(-1,VBanPlayer(playerid));
  218.                 return SendClientMessage(playerid,0x10B4EEAA,"Seu ban temporário acabou");
  219.             }
  220.         }
  221.     }
  222.  
  223.     if(DOF2_FileExists(Vnewban))
  224.     {
  225.         VBanLoadInfo(playerid,Vnewban);
  226.         GetPlayerIp(playerid, VIP, sizeof(VIP));
  227.         VBanIP(-1,VIP,DOF2_GetString(Vnewban,"Motivo"));
  228.         SetTimerEx("VBKick",300, false, "i", playerid);
  229.         return true;
  230.     }
  231.     GetPlayerIp(playerid, VIP, sizeof(VIP));
  232.     format(Vnewban,32,BanDir,VIP);
  233.     if(DOF2_FileExists(Vnewban))
  234.     {
  235.         VBanLoadInfo(playerid,Vnewban);
  236.         format(NICKBAN,20,VBanPlayer(playerid));
  237.         DOF2_SetString(Vnewban,"Nick",NICKBAN);
  238.         DOF2_SaveFile();
  239.         VBanID(-1,playerid,DOF2_GetString(Vnewban,"Motivo"));
  240.         SetTimerEx("VBKick",300, false, "i", playerid);
  241.     }
  242.     return 1;
  243. }
  244.  
  245. forward VBKick(playerid);public VBKick(playerid) Kick(playerid);
  246.  
  247. stock VBanLoadInfo(playerid,Varq[])
  248. {
  249.     if(!DOF2_FileExists(Varq))
  250.         return SendClientMessage(playerid, CorErro,"'- VBan -' Ban inexistente.");
  251.  
  252.     new InfoString[300];
  253.     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"));
  254.     ShowPlayerDialog(playerid, 231, DIALOG_STYLE_MSGBOX, "        {FFFFFF}VBan - BanInfo - By: ViniBorn",InfoString,"Fechar", "");
  255.     return 1;
  256. }
  257.  
  258. stock VBanSaveInfo(playerid,Varq[],motivo[],bool:BanType)
  259. {
  260.     new Vano, Vmes, Vdia, Vhora, Vminuto, Vsegundo;
  261.     getdate(Vano, Vmes, Vdia); gettime(Vhora, Vminuto, Vsegundo);
  262.     DOF2_SetString(Varq,"IP",VIP);
  263.     DOF2_SetString(Varq,"Nick",NICKBAN);
  264.     if(playerid > -1)
  265.         DOF2_SetString(Varq,"Admin",VBanPlayer(playerid));
  266.     else
  267.         DOF2_SetString(Varq,"Admin","VBot Admin");
  268.     format(Vstring,32,"%02d:%02d:%02d", Vhora, Vminuto, Vsegundo);
  269.     DOF2_SetString(Varq,"Hora",Vstring);
  270.     format(Vstring,32,"%02d/%02d/%d", Vdia, Vmes, Vano);
  271.     DOF2_SetString(Varq,"Data",Vstring);
  272.     DOF2_SetString(Varq,"Motivo",motivo);
  273.     if(BanType == true)
  274.     {
  275.         DOF2_SetInt(Varq,"TempBan",DiasBan);
  276.         DOF2_SetInt(Varq,"DiaBan",Vdia);
  277.         DOF2_SetInt(Varq,"MesBan",Vmes);
  278.     }
  279.     DOF2_SaveFile();
  280.     return 1;
  281. }
  282.  
  283. stock VBanPlayer(playerid)
  284. {
  285.     new pname[MAX_PLAYER_NAME];
  286.     GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
  287.     return pname;
  288. }
  289.  
  290. stock VBReturnUser(PlayerName[])
  291. {
  292.     if(VBIsNumeric(PlayerName))
  293.         return strval(PlayerName);
  294.     else
  295.     {
  296.         new found=0, id;
  297.         for(new i=0; i < GetMaxPlayers(); i++)
  298.         {
  299.             if(IsPlayerConnected(i))
  300.             {
  301.                 new foundname[MAX_PLAYER_NAME];
  302.                 GetPlayerName(i, foundname, MAX_PLAYER_NAME);
  303.                 new namelen = strlen(foundname);
  304.                 new bool:searched=false;
  305.                 for(new pos=0; pos <= namelen; pos++)
  306.                 {
  307.                     if(searched != true)
  308.                     {
  309.                         if(strfind(foundname,PlayerName,true) == pos)
  310.                         {
  311.                             found++;
  312.                             id = i;
  313.                         }
  314.                     }
  315.                 }
  316.             }
  317.         }
  318.         if(found == 1)
  319.             return id;
  320.         else
  321.             return INVALID_PLAYER_ID;
  322.     }
  323. }
  324.  
  325. stock VBDiasMes(Month)
  326. {
  327.     switch(Month-1)
  328.     {
  329.         case 0:
  330.             Month = 31;
  331.         case 1:
  332.             Month = 31;
  333.         case 2:
  334.             Month = 28;
  335.         case 3:
  336.             Month = 31;
  337.         case 4:
  338.             Month = 30;
  339.         case 5:
  340.             Month = 31;
  341.         case 6:
  342.             Month = 30;
  343.         case 7:
  344.             Month = 31;
  345.         case 8:
  346.             Month = 31;
  347.         case 9:
  348.             Month = 30;
  349.         case 10:
  350.             Month = 31;
  351.         case 11:
  352.             Month = 30;
  353.     }
  354.     return Month;
  355. }
  356.  
  357. stock VBIsIP(const string[])
  358. {
  359.     new count;
  360.     for (new i = 0, j = strlen(string); i < j; i++)
  361.         if(string[i] > 47 && string[i] < 58)
  362.             count++;
  363.  
  364.     if(count > 5)
  365.         return 1;
  366.  
  367.     return 0;
  368. }
  369.  
  370. stock VBIsNumeric(const string[])
  371. {
  372.     for (new i = 0, j = strlen(string); i < j; i++)
  373.         if(string[i] > '9' || string[i] < '0') return 0;
  374.  
  375.     return 1;
  376. }
Advertisement
Add Comment
Please, Sign In to add comment