Advertisement
ViniBorn

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

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