Advertisement
iSmirnoff

[FilterScript] Sistema de Bans v2.0

Dec 3rd, 2013
747
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.87 KB | None | 0 0
  1. /*                              *
  2.  *             INCLUDES         *
  3.  *                              */
  4. #include <  A_SAMP  >
  5. #include <   DOF2   >
  6. #include <  SSCANF2 >
  7.  
  8. #define useCmd 1 // 1 = Zcmd    2 = iCmd
  9.  
  10. #if useCmd == 1
  11.     #include <   ZCMD   >
  12. #else
  13.     #include <   iCmd7  >
  14. #endif
  15.  
  16. /*                                 *
  17. *           MACROS                 *
  18. *                                  */
  19. #define isnull(%1) \
  20.     ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  21.    
  22. /*                          *
  23.  *            DIALOGS       *
  24.  *                          */
  25. #define dialogBan    (0)
  26.  
  27. /*                          *
  28.  *            CORES         *
  29.  *                          */
  30. #define corAzul        0x33CCFFAA
  31.  
  32. /*                              *
  33.  *             FORWARDS         *
  34.  *                              */
  35. forward loadBanned(playerid);
  36.  
  37. /*                              *
  38.  *             ENUM'S           *
  39.  *                              */
  40. enum pBanned {
  41.     motivoBanned[40],
  42.     adminBanned[21],
  43.     dataBanned[10],
  44.     horaBanned[10],
  45.     ipBanned[16]
  46. };
  47.  
  48. /*                              *
  49.  *             VARÍAVEIS       *
  50.  *                              */
  51. new playerBanned[MAX_PLAYERS][pBanned];
  52. new Segundo, Minuto, Hora, Dia, Mes, Ano;
  53. /*                              *
  54.  *             STOCKS           *
  55.  *                              */
  56. stock nomePlayer(playerid) {
  57.     new PlayerName[21];
  58.     GetPlayerName(playerid, PlayerName, 21);
  59.     return PlayerName;
  60. }
  61.  
  62. /*                              *
  63.  *             CALLBACKS        *
  64.  *                              */
  65.  
  66. public loadBanned(playerid) {
  67.  
  68.     new ArquivoOne[64], ArquivoTwo[64], ArquivoThree[64];
  69.     format(ArquivoOne, 64, "Agendados/%s.ini", nomePlayer(playerid));
  70.     if(DOF2::FileExists(ArquivoOne)) {
  71.         strmid(playerBanned[playerid][adminBanned], DOF2::GetString(ArquivoOne, "Admin"), 0, strlen(DOF2::GetString(ArquivoOne, "Admin")), 21);
  72.         strmid(playerBanned[playerid][motivoBanned], DOF2::GetString(ArquivoOne, "Motivo"), 0, strlen(DOF2::GetString(ArquivoOne, "Motivo")), 21);
  73.         strmid(playerBanned[playerid][dataBanned], DOF2::GetString(ArquivoOne, "Data"), 0, strlen(DOF2::GetString(ArquivoOne, "Data")), 21);
  74.         strmid(playerBanned[playerid][horaBanned], DOF2::GetString(ArquivoOne, "Hora"), 0, strlen(DOF2::GetString(ArquivoOne, "Hora")), 21);
  75.     }
  76.     format(ArquivoTwo, 64, "iPsBanidos/%s.ini", nomePlayer(playerid));
  77.     if(DOF2::FileExists(ArquivoTwo)) {
  78.         strmid(playerBanned[playerid][adminBanned], DOF2::GetString(ArquivoTwo, "Admin"), 0, strlen(DOF2::GetString(ArquivoTwo, "Admin")), 21);
  79.         strmid(playerBanned[playerid][motivoBanned], DOF2::GetString(ArquivoTwo, "Motivo"), 0, strlen(DOF2::GetString(ArquivoTwo, "Motivo")), 21);
  80.         strmid(playerBanned[playerid][dataBanned], DOF2::GetString(ArquivoTwo, "Data"), 0, strlen(DOF2::GetString(ArquivoTwo, "Data")), 21);
  81.         strmid(playerBanned[playerid][horaBanned], DOF2::GetString(ArquivoTwo, "Hora"), 0, strlen(DOF2::GetString(ArquivoTwo, "Hora")), 21);
  82.     }
  83.     format(ArquivoThree, 64, "Banidos/%s.ini", nomePlayer(playerid));
  84.     if(DOF2::FileExists(ArquivoThree)) {
  85.         strmid(playerBanned[playerid][adminBanned], DOF2::GetString(ArquivoThree, "Admin"), 0, strlen(DOF2::GetString(ArquivoThree, "Admin")), 21);
  86.         strmid(playerBanned[playerid][motivoBanned], DOF2::GetString(ArquivoThree, "Motivo"), 0, strlen(DOF2::GetString(ArquivoThree, "Motivo")), 21);
  87.         strmid(playerBanned[playerid][dataBanned], DOF2::GetString(ArquivoThree, "Data"), 0, strlen(DOF2::GetString(ArquivoThree, "Data")), 21);
  88.         strmid(playerBanned[playerid][horaBanned], DOF2::GetString(ArquivoThree, "Hora"), 0, strlen(DOF2::GetString(ArquivoThree, "Hora")), 21);
  89.     }
  90.     return true;
  91. }
  92.  
  93. public OnFilterScriptInit () {
  94.  
  95.     return true;
  96. }
  97.  
  98. public OnFilterScriptExit () {
  99.  
  100.     DOF2::Exit();
  101.     return true;
  102. }
  103. forward checkBan(playerid);
  104.  
  105. public checkBan(playerid) {
  106.     new String[250], ArquivoOne[64], ArquivoTwo[64], ArquivoThree[64], getIP[16];
  107.  
  108.     format(ArquivoOne, 64, "Agendados/%s.ini", nomePlayer(playerid));
  109.     if(DOF2::FileExists(ArquivoOne)) {
  110.         format(String, 250, "Você está banido do Servidor\n\n\nAdmin: %s\n\nMotivo: %s\n\nConta: %s\n\nData: %s\n\nHorário: %s\n\n\nPara revisões vá até o fórum", playerBanned[playerid][adminBanned], playerBanned[playerid][motivoBanned], nomePlayer(playerid), playerBanned[playerid][dataBanned], playerBanned[playerid][horaBanned]);
  111.         ShowPlayerDialog(playerid, dialogBan, DIALOG_STYLE_MSGBOX, "Banido", String, "Fechar", "");
  112.     }
  113.  
  114.     format(ArquivoTwo, 64, "Banidos/%s.ini", nomePlayer(playerid));
  115.     if(DOF2::FileExists(ArquivoTwo)) {
  116.         format(String, 250, "Você está banido do Servidor\n\n\nAdmin: %s\n\nMotivo: %s\n\nConta: %s\n\nIP: %s\n\nData: %s\n\nHorário: %s\n\n\nPara revisões vá até o fórum", playerBanned[playerid][adminBanned], playerBanned[playerid][motivoBanned], nomePlayer(playerid), playerBanned[playerid][ipBanned], playerBanned[playerid][dataBanned], playerBanned[playerid][horaBanned]);
  117.         ShowPlayerDialog(playerid, dialogBan, DIALOG_STYLE_MSGBOX, "Banido", String, "Fechar", "");
  118.     }
  119.  
  120.     GetPlayerIp(playerid, getIP, 16);
  121.     format(ArquivoThree, 64, "iPsBanidos/%s.ini", getIP);
  122.     if(DOF2::FileExists(ArquivoThree)) {
  123.         format(String, 250, "Você está banido do Servidor\n\n\nAdmin: %s\n\nMotivo: %s\n\nConta: %s\n\nIP: %s\n\nData: %s\n\nHorário: %s\n\n\nPara revisões vá até o fórum", playerBanned[playerid][adminBanned], playerBanned[playerid][motivoBanned], nomePlayer(playerid), getIP, playerBanned[playerid][dataBanned], playerBanned[playerid][horaBanned]);
  124.         ShowPlayerDialog(playerid, dialogBan, DIALOG_STYLE_MSGBOX, "Banido", String, "Fechar", "");
  125.     }
  126.     return true;
  127. }
  128. public OnPlayerConnect(playerid) {
  129.  
  130.     loadBanned(playerid);
  131.     SetTimerEx("checkBan", 5000, true, "i", playerid);
  132.     SendClientMessage(playerid, -1, "Aguarde 5 Segundos...");
  133.     return true;
  134. }
  135. #if useCmd == 1
  136.     command(banir, playerid, params[]) {
  137.  
  138.         new idBan, getIP[16], motivBanned[50], ArquivoOne[64], ArquivoTwo[64], formatHora[15], formatData[15];
  139.  
  140.         if(sscanf(params, "us[50]", idBan, motivBanned))
  141.             return SendClientMessage(playerid, -1, "[ USE ]: /agendarban [ID] [Motivo]");
  142.  
  143.         getdate(Ano, Mes, Dia);
  144.         gettime(Hora, Minuto, Segundo);
  145.         GetPlayerIp(idBan, getIP, 16);
  146.         format(formatData, 15, "%d/%d/%d", Dia, Mes, Ano);
  147.         format(formatHora, 15, "%d:%d:%d", Hora, Minuto, Segundo);
  148.  
  149.         format(ArquivoOne, 64, "Banidos/%s.ini", nomePlayer(idBan));
  150.         DOF2::CreateFile(ArquivoOne);
  151.         DOF2::SetString(ArquivoOne, "Admin", nomePlayer(playerid));
  152.         DOF2::SetString(ArquivoOne, "Motivo", motivBanned);
  153.         DOF2::SetString(ArquivoOne, "Data", formatData);
  154.         DOF2::SetString(ArquivoOne, "Hora", formatHora);
  155.         DOF2::SetString(ArquivoOne, "IP", getIP);
  156.         DOF2::SaveFile();
  157.  
  158.         format(ArquivoTwo, 64, "iPsBanidos/%s.ini", getIP);
  159.         DOF2::CreateFile(ArquivoTwo);
  160.         DOF2::SetString(ArquivoTwo, "Nick", nomePlayer(idBan));
  161.         DOF2::SetString(ArquivoTwo, "Admin", nomePlayer(playerid));
  162.         DOF2::SetString(ArquivoTwo, "Motivo", motivBanned);
  163.         DOF2::SetString(ArquivoTwo, "Data", formatData);
  164.         DOF2::SetString(ArquivoTwo, "Hora", formatHora);
  165.         DOF2::SaveFile();
  166.         return true ;
  167.     }
  168.     command(agendarban, playerid, params[]) {
  169.    
  170.         new nicBanned[21], motivBanned[50], ArquivoOne[64], ArquivoTwo[64], formatHora[15], formatData[15];
  171.         if(sscanf(params, "s[21]s[50]", nicBanned, motivBanned))
  172.             return SendClientMessage(playerid, -1, "[ USE ]: /agendarban [Nick] [Motivo]");
  173.  
  174.         format(ArquivoOne, 64, "Users/%s.ini", nicBanned);
  175.         if(!DOF2::FileExists(ArquivoOne))
  176.             return SendClientMessage(playerid, -1, "[ ERRO ]: Este nick não está registrado!");
  177.  
  178.         getdate(Ano, Mes, Dia);
  179.         gettime(Hora, Minuto, Segundo);
  180.         format(formatData, 15, "%d/%d/%d", Dia, Mes, Ano);
  181.         format(formatHora, 15, "%d:%d:%d", Hora, Minuto, Segundo);
  182.  
  183.         format(ArquivoTwo, 64, "Agendados/%s.ini", nicBanned);
  184.         if(!DOF2::FileExists(ArquivoTwo)) {
  185.  
  186.             DOF2::CreateFile(ArquivoTwo);
  187.             DOF2::SetString(ArquivoTwo, "Admin", nomePlayer(playerid));
  188.             DOF2::SetString(ArquivoTwo, "Motivo", motivBanned);
  189.             DOF2::SetString(ArquivoTwo, "Data", formatData);
  190.             DOF2::SetString(ArquivoTwo, "Hora", formatHora);
  191.             DOF2::SaveFile();
  192.         }
  193.         else return SendClientMessage(playerid, -1, "[ ERRO ]: Este nick já foi agendado!");
  194.         return true;
  195.     }
  196.     command(retiraragendaban, playerid, params[]) {
  197.  
  198.         new nicBanned[21], ArquivoOne[64], ArquivoTwo[64], String[128];
  199.         if(sscanf(params, "s[21]s[50]", nicBanned))
  200.             return SendClientMessage(playerid, -1, "[ USE ]: /retirarAgendaBan [Nick]");
  201.  
  202.         format(ArquivoOne, 64, "Users/%s.ini", nicBanned);
  203.         if(!DOF2::FileExists(ArquivoOne))
  204.             return SendClientMessage(playerid, -1, "[ ERRO ]: Este nick não está registrado!");
  205.  
  206.         format(ArquivoTwo, 64, "Agendados/%s.ini", nicBanned);
  207.        
  208.         if(DOF2::FileExists(ArquivoTwo)) {
  209.             DOF2::RemoveFile(ArquivoTwo);
  210.             format(String, 128, "Admin %s retirou o agendaBan de %s", nomePlayer(playerid), nicBanned);
  211.             SendClientMessageToAll(-1, String);
  212.         }
  213.         else return SendClientMessage(playerid, -1, "[ ERRO ]: Este nick não está agendado!");
  214.         return true;
  215.     }
  216.     command(desbanirnick, playerid, params[]) {
  217.    
  218.         new nick[21];
  219.         if(sscanf(params, "s[21]", nick))
  220.             return SendClientMessage(playerid, -1, "[ USE ]: /desbanirnick (Nick)");
  221.  
  222.         new ArquivoOne[64], String[128];
  223.                
  224.         format(ArquivoOne, 64, "Banidos/%s.ini", nick);
  225.         if(DOF2::FileExists(ArquivoOne)) {
  226.             DOF2::RemoveFile(ArquivoOne);
  227.             format(String, 128, "Admin %s desbaniu Nick: %s", nomePlayer(playerid), nick);
  228.             SendClientMessageToAll(-1, String);
  229.         }
  230.         else return SendClientMessage(playerid, -1, "[ ERRO ]: Este nick não está banido");
  231.         return true ;
  232.     }
  233.     command(desbanirip, playerid, params[]) {
  234.  
  235.         new ipBan[21];
  236.         if(sscanf(params, "s[21]", ipBan))
  237.             return SendClientMessage(playerid, -1, "[ USE ]: /desbanirip (IP)");
  238.  
  239.         new ArquivoOne[64], String[128];
  240.  
  241.         format(ArquivoOne, 64, "iPsBanidos/%s.ini", ipBan);
  242.         if(DOF2::FileExists(ArquivoOne)) {
  243.             DOF2::RemoveFile(ArquivoOne);
  244.             format(String, 128, "Admin %s desbaniu o IP: %s", nomePlayer(playerid), ipBan);
  245.             SendClientMessageToAll(-1, String);
  246.         }
  247.         else return SendClientMessage(playerid, -1, "[ ERRO ]: Este IP não está banido");
  248.         return true ;
  249.     }
  250. #else
  251.     public OnPlayerCommandText(playerid, commandid, params[]) {
  252.  
  253.         switch(commandid) {
  254.  
  255.             case iscmd ("a,g,e,n,d,a,r,b,a,n") : {
  256.  
  257.                 new nicBanned[21], motivBanned[50], ArquivoOne[64], ArquivoTwo[64], formatHora[15], formatData[15];
  258.                 if(sscanf(params, "s[21]s[50]", nicBanned, motivBanned))
  259.                     return SendClientMessage(playerid, -1, "[ USE ]: /agendarban [Nick] [Motivo]");
  260.                    
  261.                 format(ArquivoOne, 64, "Users/%s.ini", nicBanned);
  262.                 if(!DOF2::FileExists(ArquivoOne))
  263.                     return SendClientMessage(playerid, -1, "[ ERRO ]: Este nick não está registrado!");
  264.                    
  265.                 getdate(Ano, Mes, Dia);
  266.                 gettime(Hora, Minuto, Segundo);
  267.                 format(formatData, 15, "%d/%d/%d", Dia, Mes, Ano);
  268.                 format(formatHora, 15, "%d:%d:%d", Hora, Minuto, Segundo);
  269.                
  270.                 format(ArquivoTwo, 64, "Agendados/%s.ini", nicBanned);
  271.                 if(!DOF2::FileExists(ArquivoTwo)) {
  272.                
  273.                     DOF2::CreateFile(ArquivoTwo);
  274.                     DOF2::SetString(ArquivoTwo, "Admin", nomePlayer(playerid));
  275.                     DOF2::SetString(ArquivoTwo, "Motivo", motivBanned);
  276.                     DOF2::SetString(ArquivoTwo, "Data", formatData);
  277.                     DOF2::SetString(ArquivoTwo, "Hora", formatHora);
  278.                     DOF2::SaveFile();
  279.                 }
  280.                 else return SendClientMessage(playerid, -1, "[ ERRO ]: Este nick já foi agendado!");
  281.             }
  282.             case iscmd("r,e,t,i,r,a,r,a,g,e,n,d,a,b,a,n"): {
  283.            
  284.                 new ArquivoOne[64], ArquivoTwo[64], String[128];
  285.                
  286.                 if(isnull(params))
  287.                     return SendClientMessage(playerid, -1, "[ USE ]: /retirarAgendaBan [Nick]");
  288.  
  289.                 format(ArquivoOne, 64, "Users/%s.ini", params);
  290.                 if(!DOF2::FileExists(ArquivoOne))
  291.                     return SendClientMessage(playerid, -1, "[ ERRO ]: Este nick não está registrado!");
  292.  
  293.                 format(ArquivoTwo, 64, "Agendados/%s.ini", params);
  294.                 if(DOF2::FileExists(ArquivoTwo)) {
  295.  
  296.                     DOF2::RemoveFile(ArquivoTwo);
  297.                     format(String, 128, "Admin %s retirou o agendaBan de %s", nomePlayer(playerid), params);
  298.                     SendClientMessageToAll(-1, String);
  299.                 }
  300.                 else return SendClientMessage(playerid, -1, "[ ERRO ]: Este nick não está agendado!");
  301.             }
  302.             case iscmd("d,e,s,b,a,n,i,r,n,i,c,k"): {
  303.  
  304.                 new nick[21];
  305.                 if(sscanf(params, "s[21]", nick))
  306.                     return SendClientMessage(playerid, -1, "[ USE ]: /desbanirnick (Nick)");
  307.  
  308.                 new ArquivoOne[64], String[128];
  309.  
  310.                 format(ArquivoOne, 64, "Banidos/%s.ini", nick);
  311.                 if(DOF2::FileExists(ArquivoOne)) {
  312.                     DOF2::RemoveFile(ArquivoOne);
  313.                     format(String, 128, "Admin %s desbaniu Nick: %s", nomePlayer(playerid), nick);
  314.                     SendClientMessageToAll(-1, String);
  315.                 }
  316.                 else{ SendClientMessage(playerid, -1, "[ ERRO ]: Este nick não está banido"); return true; }
  317.                 return true ;
  318.             }
  319.             case iscmd("d,e,s,b,a,n,i,r,i,p"): {
  320.  
  321.                 new ipBan[21];
  322.                 if(sscanf(params, "s[21]", ipBan))
  323.                     return SendClientMessage(playerid, -1, "[ USE ]: /desbanirip (IP)");
  324.  
  325.                 new ArquivoOne[64], String[128];
  326.  
  327.                 format(ArquivoOne, 64, "iPsBanidos/%s.ini", ipBan);
  328.                 if(DOF2::FileExists(ArquivoOne)) {
  329.                     DOF2::RemoveFile(ArquivoOne);
  330.                     format(String, 128, "Admin %s desbaniu o IP: %s", nomePlayer(playerid), ipBan);
  331.                     SendClientMessageToAll(-1, String);
  332.                 }
  333.                 else return SendClientMessage(playerid, -1, "[ ERRO ]: Este IP não está banido");
  334.                 return true ;
  335.             }
  336.             case iscmd("b,a,n,i,r"): {
  337.  
  338.                 new nicBanned[21], idBan, getIP[16], motivBanned[50], ArquivoOne[64], ArquivoTwo[64], formatHora[15], formatData[15];
  339.  
  340.                 if(sscanf(params, "us[50]", idBan, motivBanned))
  341.                     return SendClientMessage(playerid, -1, "[ USE ]: /agendarban [ID] [Motivo]");
  342.  
  343.                 getdate(Ano, Mes, Dia);
  344.                 gettime(Hora, Minuto, Segundo);
  345.                 GetPlayerIp(idBan, getIP, 16);
  346.                 format(formatData, 15, "%d/%d/%d", Dia, Mes, Ano);
  347.                 format(formatHora, 15, "%d:%d:%d", Hora, Minuto, Segundo);
  348.  
  349.                 format(ArquivoOne, 64, "Banidos/%s.ini", nomePlayer(idBan));
  350.                 DOF2::CreateFile(ArquivoOne);
  351.                 DOF2::SetString(ArquivoOne, "Admin", nomePlayer(playerid));
  352.                 DOF2::SetString(ArquivoOne, "Motivo", motivBanned);
  353.                 DOF2::SetString(ArquivoOne, "Data", formatData);
  354.                 DOF2::SetString(ArquivoOne, "Hora", formatHora);
  355.                 DOF2::SetString(ArquivoOne, "IP", getIP);
  356.                 DOF2::SaveFile();
  357.                
  358.                 format(ArquivoTwo, 64, "iPsBanidos/%s.ini", getIP);
  359.                 DOF2::CreateFile(ArquivoTwo);
  360.                 DOF2::SetString(ArquivoTwo, "Nick", nomePlayer(idBan));
  361.                 DOF2::SetString(ArquivoTwo, "Admin", nomePlayer(playerid));
  362.                 DOF2::SetString(ArquivoTwo, "Motivo", motivBanned);
  363.                 DOF2::SetString(ArquivoTwo, "Data", formatData);
  364.                 DOF2::SetString(ArquivoTwo, "Hora", formatHora);
  365.                 DOF2::SaveFile();
  366.                 return true ;
  367.             }
  368.         }
  369.         return false;
  370.     }
  371. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement