Advertisement
Eduardo_AC

[FilterScript] Ban Temporário [SQLite]

Aug 28th, 2017
542
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.25 KB | None | 0 0
  1. /*      ______________________________________
  2.         |_____FILTERSCRIPT_TEMP_BAN_SYSTEM___|
  3.         |______________BY_F1N4L______________|
  4.         |_______Initialized_29_03_2016_______|
  5.         |_________Updated_30_03_2016_________|
  6.         |___________v_0.3z__v.2.0____________|
  7.        
  8.         STOCKS:
  9.         BanirPlayer(Nome[], IP[], Banido_Por[], Data[], Motivo[], GetTime, Tempo[])
  10.         BanirIpPlayer(Nome[], IP[], Banido_Por[], Data[], Motivo[], GetTime, Tempo[])
  11.         DesbanirPlayer(Conta[])
  12. */
  13.  
  14. #include a_samp // By SA:MP Team
  15. #include sscanf2 // By Y_Less
  16. #include zcmd // By Zeex
  17.  
  18. #define             BAN_TABLE               "BANIMENTOS"
  19. #define             BAN_DB                  "Bans.db"
  20.  
  21. #define             DIALOG_BAN              222
  22.  
  23. new
  24.     DB:Ban_Database
  25. ;
  26.  
  27. public OnFilterScriptInit()
  28. {
  29.     new
  30.         BAN_STR[500]
  31.     ;
  32.    
  33.     Ban_Database = db_open(BAN_DB);
  34.     strcat(BAN_STR, "CREATE TABLE IF NOT EXISTS `"BAN_TABLE"` (");
  35.     strcat(BAN_STR, "`ID` INTEGER PRIMARY KEY AUTOINCREMENT,");
  36.     strcat(BAN_STR, "`NOME` TEXT DEFAULT 'N/A',");
  37.     strcat(BAN_STR, "`IP` TEXT DEFAULT '0.0.0.0',");
  38.     strcat(BAN_STR, "`BANIDO POR` TEXT DEFAULT 'N/A',");
  39.     strcat(BAN_STR, "`DATA` TEXT DEFAULT 'N/A',");
  40.     strcat(BAN_STR, "`MOTIVO` TEXT DEFAULT 'N/A',");
  41.     strcat(BAN_STR, "`GETTIME` NUMERIC DEFAULT '0',");
  42.     strcat(BAN_STR, "`TEMPO` TEXT DEFAULT 'N/A')");
  43.     db_free_result(db_query(Ban_Database, BAN_STR));
  44.    
  45.     return 1;
  46. }
  47.  
  48. public OnFilterScriptExit()
  49. {
  50.     db_close(Ban_Database);
  51.     return 1;
  52. }
  53.  
  54. public OnPlayerConnect(playerid)
  55. {
  56.     new
  57.         String[350],
  58.         Strcat[500],
  59.         GetTime,
  60.         GetIp[30],
  61.         DBResult:Resultado
  62.     ;
  63.    
  64.     format(String,sizeof(String),"SELECT * FROM `"BAN_TABLE"` WHERE `IP` = '%s' OR `NOME` = '%s' COLLATE NOCASE", GetIP(playerid), GetName(playerid));
  65.     Resultado = db_query(Ban_Database,String);
  66.     if(db_num_rows(Resultado))
  67.     {
  68.         db_get_field_assoc(Resultado, "GETTIME", String, 40);
  69.         GetTime = strval(String);
  70.         if(GetTime > gettime())
  71.         {
  72.             format(String,sizeof(String), "NOME: %s\n", GetName(playerid));strcat(Strcat, String);
  73.             db_get_field_assoc(Resultado, "IP", GetIp, 30);
  74.             format(String,sizeof(String), "IP: %s\n", GetIp);strcat(Strcat, String);
  75.             db_get_field_assoc(Resultado, "BANIDO POR", String, 30);
  76.             format(String,sizeof(String), "BANIDO POR: %s\n", String);strcat(Strcat, String);
  77.             db_get_field_assoc(Resultado, "MOTIVO", String, 40);
  78.             format(String,sizeof(String), "MOTIVO: %s\n", String);strcat(Strcat, String);
  79.             db_get_field_assoc(Resultado, "DATA", String, 40);
  80.             format(String,sizeof(String), "DATA: %s\n", String);strcat(Strcat, String);
  81.             db_get_field_assoc(Resultado, "TEMPO", String, 50);
  82.             format(String,sizeof(String), "TEMPO: %s\n", String);strcat(Strcat, String);
  83.             format(String,sizeof(String), "TEMPO RESTANTE: %s", ConvertTime(GetTime - gettime()));strcat(Strcat, String);
  84.             ShowPlayerDialog(playerid, DIALOG_BAN, DIALOG_STYLE_MSGBOX, "Painel de Banimento:", Strcat, "SAIR","");
  85.            
  86.             SetTimerEx("Kickar", 500, false, "i", playerid);
  87.         }
  88.         else if(GetTime < gettime())
  89.         {
  90.             format(String,sizeof(String),"DELETE FROM `"BAN_TABLE"` WHERE `NOME` = '%s'", GetName(playerid));
  91.             Resultado = db_query(Ban_Database,String);
  92.            
  93.             SendClientMessage(playerid, 0xFF0000FF, "Sua conta foi desbanida.");
  94.         }
  95.     }
  96.     db_free_result(db_query(Ban_Database, String));
  97.    
  98.     return 1;
  99. }
  100.  
  101. public OnPlayerSpawn(playerid)
  102. {
  103.     return 1;
  104. }
  105.  
  106. CMD:ban(playerid, params[])
  107. {
  108.     new
  109.         TARGET,
  110.         MOTIVO[30],
  111.         DATA[50],
  112.         STRING[300],
  113.         Data[3],
  114.         Hora[3],
  115.         GetTime,
  116.         TEMPO
  117.     ;
  118.    
  119.     if(!IsPlayerAdmin(playerid))
  120.         return SendClientMessage(playerid, -1, "Você precisa ser Admin RCON para realizar esta ação.");
  121.    
  122.     if(sscanf(params, "us[300]is[30]", TARGET, STRING, TEMPO, MOTIVO))
  123.         return SendClientMessage(playerid, -1, "/BAN [ID] [DIAS(D) ou HORAS(H) ou MINUTOS(M)] [TEMPO] [MOTIVO]");
  124.        
  125.     if(strlen(MOTIVO) < 3 || strlen(MOTIVO) > 30)
  126.         return SendClientMessage(playerid, -1, "Motivo inválido. Utilize entre 3 - 30  caracteres.");
  127.    
  128.     if(TEMPO < 1 || TEMPO > 1000)
  129.         return SendClientMessage(playerid, -1, "Tempo inválido. Utilize entre 1 - 1000  minutos/horas/dias.");
  130.    
  131.     if(!IsPlayerConnected(TARGET))
  132.         return SendClientMessage(playerid, -1, "Player não está conectado.");
  133.    
  134.     getdate(Data[0], Data[1], Data[2]);
  135.     gettime(Hora[0], Hora[1], Hora[2]);
  136.    
  137.     format(DATA, sizeof(DATA), "%02i/%02i/%02i | %02i:%02i:%02i", Data[2], Data[1], Data[0], Hora[0], Hora[1], Hora[2]);
  138.    
  139.     if(strcmp(STRING, "D", true) == 0)
  140.         GetTime = TEMPO * 24 * 60 * 60,
  141.         BanirPlayer(GetName(TARGET), GetIP(TARGET), GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
  142.         db_free_result(db_query(Ban_Database, STRING));
  143.     else if(strcmp(STRING, "H", true) == 0)
  144.         GetTime = TEMPO * 60 * 60,
  145.         BanirPlayer(GetName(TARGET), GetIP(TARGET), GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
  146.         db_free_result(db_query(Ban_Database, STRING));
  147.     else if(strcmp(STRING, "M", true) == 0)
  148.         GetTime = TEMPO * 60,
  149.         BanirPlayer(GetName(TARGET), GetIP(TARGET), GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
  150.         db_free_result(db_query(Ban_Database, STRING));
  151.     else return SendClientMessage(playerid, -1, "/BAN [ID] [MOTIVO] [DIAS(D) ou HORAS(H) ou MINUTOS(M)] [TEMPO]");
  152.    
  153.     format(STRING,sizeof(STRING), "Admin '%s' baniu temporariamente o jogador '%s [ID: %i]'. Motivo: '%s'. TEMPO: '%s'", GetName(playerid), GetName(TARGET), TARGET, MOTIVO, ConvertTime(GetTime));
  154.     SendClientMessageToAll(-1, STRING);
  155.    
  156.     return 1;
  157. }
  158.  
  159. CMD:banip(playerid, params[])
  160. {
  161.     new
  162.         IP[30],
  163.         MOTIVO[30],
  164.         DATA[50],
  165.         STRING[300],
  166.         Data[3],
  167.         Hora[3],
  168.         GetTime,
  169.         TEMPO
  170.     ;
  171.    
  172.     if(!IsPlayerAdmin(playerid))
  173.         return SendClientMessage(playerid, -1, "Você precisa ser Admin RCON para realizar esta ação.");
  174.    
  175.     if(sscanf(params, "s[30]s[300]is[30]", IP, STRING, TEMPO, MOTIVO))
  176.         return SendClientMessage(playerid, -1, "/BANIP [IP] [DIAS(D) ou HORAS(H) ou MINUTOS(H)] [TEMPO] [MOTIVO]");
  177.    
  178.     if(strlen(MOTIVO) < 3 || strlen(MOTIVO) > 30)
  179.         return SendClientMessage(playerid, -1, "Motivo inválido. Utilize entre 3 - 30  caracteres.");
  180.    
  181.     if(strlen(IP) < 1 || strlen(IP) > 30)
  182.         return SendClientMessage(playerid, -1, "Tamanho de IP inválido.");
  183.    
  184.     if(TEMPO < 1 || TEMPO > 1000)
  185.         return SendClientMessage(playerid, -1, "Tempo inválido. Utilize entre 1 - 1000  minutos/horas/dias.");
  186.    
  187.     getdate(Data[0], Data[1], Data[2]);
  188.     gettime(Hora[0], Hora[1], Hora[2]);
  189.    
  190.     format(DATA, sizeof(DATA), "%02i/%02i/%02i | %02i:%02i:%02i", Data[2], Data[1], Data[0], Hora[0], Hora[1], Hora[2]);
  191.    
  192.     if(strcmp(STRING, "D", true) == 0)
  193.         GetTime = TEMPO * 24 * 60 * 60,
  194.         BanirIpPlayer("N/A", IP, GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
  195.         db_free_result(db_query(Ban_Database, STRING));
  196.     else if(strcmp(STRING, "H", true) == 0)
  197.         GetTime = TEMPO * 60 * 60,
  198.         BanirIpPlayer("N/A", IP, GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
  199.         db_free_result(db_query(Ban_Database, STRING));
  200.     else if(strcmp(STRING, "M", true) == 0)
  201.         GetTime = TEMPO * 60,
  202.         BanirIpPlayer("N/A", IP, GetName(playerid), DATA, MOTIVO, GetTime, ConvertTime(GetTime)),
  203.         db_free_result(db_query(Ban_Database, STRING));
  204.     else return SendClientMessage(playerid, -1, "/BAN [ID] [DIAS(D) ou HORAS(H) ou MINUTOS(M)] [TEMPO] [MOTIVO]");
  205.    
  206.     format(STRING,sizeof(STRING), "Admin '%s' baniu temporariamente o IP '%s'. Motivo: '%s'. TEMPO: '%s'", GetName(playerid), IP, MOTIVO, ConvertTime(GetTime));
  207.     SendClientMessageToAll(-1, STRING);
  208.    
  209.     return 1;
  210. }
  211.  
  212. CMD:desban(playerid, params[])
  213. {
  214.     new
  215.         DESBAN[30],
  216.         CONTA[30],
  217.         STRING[200],
  218.         DBResult:Resultado
  219.     ;
  220.    
  221.     if(!IsPlayerAdmin(playerid))
  222.         return SendClientMessage(playerid, -1, "Você precisa ser Admin RCON para realizar esta ação.");
  223.    
  224.     if(sscanf(params, "s[30]s[30]", DESBAN, CONTA))
  225.         return SendClientMessage(playerid, -1, "/DESBAN IP [IP] | /DESBAN NOME [NOME]");
  226.    
  227.     if(strcmp(DESBAN, "IP", true) == 0)
  228.     {
  229.         format(STRING, sizeof(STRING),"SELECT * FROM `"BAN_TABLE"` WHERE `IP` = '%s'", CONTA);
  230.     }
  231.     else if(strcmp(DESBAN, "NOME", true) == 0)
  232.     {
  233.         format(STRING, sizeof(STRING),"SELECT * FROM `"BAN_TABLE"` WHERE `NOME` = '%s' COLLATE NOCASE", CONTA);
  234.     }
  235.     else return SendClientMessage(playerid, -1, "/DESBAN IP [IP] | /DESBAN NOME [NOME]");
  236.  
  237.     Resultado = db_query(Ban_Database, STRING);
  238.     if(db_num_rows(Resultado))
  239.     {
  240.         DesbanirPlayer(CONTA);
  241.         SendClientMessage(playerid, -1, "Conta desbanida com sucesso.");
  242.     }
  243.     else SendClientMessage(playerid, -1, "Conta inexistente no Banco de Dados.");
  244.  
  245.     db_free_result(db_query(Ban_Database, STRING));
  246.    
  247.     return 1;
  248. }
  249.  
  250. stock BanirPlayer(xNome[], xIP[], xBanido_Por[], xData[], xMotivo[], xGetTime, xTempo[])
  251. {
  252.     new
  253.         STRING[500],
  254.         STRCAT[300],
  255.         DBResult:Resultado
  256.     ;
  257.    
  258.     format(STRING,sizeof(STRING),"SELECT * FROM `"BAN_TABLE"` WHERE `NOME` = '%s' COLLATE NOCASE", xNome);
  259.     Resultado = db_query(Ban_Database,STRING);
  260.     if(!db_num_rows(Resultado))
  261.         format(STRING, sizeof(STRING), "INSERT INTO `"BAN_TABLE"` (`NOME`, `IP`, `BANIDO POR`, `DATA`, `MOTIVO`, `GETTIME`, `TEMPO`)VALUES('%s', '%s', '%s', '%s', '%s', '%i', '%s')", xNome, xIP, xBanido_Por, xData, xMotivo, xGetTime + gettime(), xTempo);
  262.     db_free_result(db_query(Ban_Database, STRING));
  263.    
  264.     for(new i = 0; i < MAX_PLAYERS; i++)
  265.     {
  266.         if(strcmp(GetName(i), xNome, false) == 0)
  267.         {
  268.             format(STRING, sizeof(STRING), "NOME: %s\n", xNome);strcat(STRCAT, STRING);
  269.             format(STRING, sizeof(STRING), "IP: %s\n", xIP);strcat(STRCAT, STRING);
  270.             format(STRING, sizeof(STRING), "BANIDO POR: %s\n", xBanido_Por);strcat(STRCAT, STRING);
  271.             format(STRING, sizeof(STRING), "MOTIVO: %s\n", xMotivo);strcat(STRCAT, STRING);
  272.             format(STRING, sizeof(STRING), "DATA: %s\n", xData);strcat(STRCAT, STRING);
  273.             format(STRING, sizeof(STRING), "TEMPO: %s\n", ConvertTime(xGetTime));strcat(STRCAT, STRING);
  274.             format(STRING, sizeof(STRING), "TEMPO RESTANTE: %s", ConvertTime(xGetTime));strcat(STRCAT, STRING);
  275.             ShowPlayerDialog(i, DIALOG_BAN, DIALOG_STYLE_MSGBOX, "Painel de Banimento:", STRCAT, "SAIR","");
  276.            
  277.             SetTimerEx("Kickar", 500, false, "i", i);
  278.         }
  279.     }
  280.    
  281.     return 1;
  282. }
  283.  
  284. stock BanirIpPlayer(xNome[], xIP[], xBanido_Por[], xData[], xMotivo[], xGetTime, xTempo[])
  285. {
  286.     new
  287.         STRING[500],
  288.         STRCAT[300],
  289.         DBResult:Resultado
  290.     ;
  291.    
  292.     format(STRING, sizeof(STRING),"SELECT * FROM `"BAN_TABLE"` WHERE `IP` = '%s'", xIP);
  293.     Resultado = db_query(Ban_Database, STRING);
  294.     if(db_num_rows(Resultado))
  295.         format(STRING, sizeof(STRING), "UPDATE `"BAN_TABLE"` SET `DATA` = '%s', `MOTIVO` = '%s', `GETTIME` = '%i', `TEMPO` = '%s' WHERE `IP` = '%s'", xData, xMotivo, xGetTime + gettime(), xTempo, xIP);
  296.     else
  297.         format(STRING, sizeof(STRING), "INSERT INTO `"BAN_TABLE"` (`NOME`, `IP`, `BANIDO POR`, `DATA`, `MOTIVO`, `GETTIME`, `TEMPO`)VALUES('%s', '%s', '%s', '%s', '%s', '%i', '%s')", xNome, xIP, xBanido_Por, xData, xMotivo, xGetTime + gettime(), xTempo);
  298.     db_free_result(db_query(Ban_Database, STRING));
  299.    
  300.     for(new i = 0; i < MAX_PLAYERS; i++)
  301.     {
  302.         if(strcmp(GetIP(i), xIP, true) == 0)
  303.         {
  304.             format(STRING, sizeof(STRING), "NOME: %s\n", GetName(i));strcat(STRCAT, STRING);
  305.             format(STRING, sizeof(STRING), "IP: %s\n", xIP);strcat(STRCAT, STRING);
  306.             format(STRING, sizeof(STRING), "BANIDO POR: %s\n", xBanido_Por);strcat(STRCAT, STRING);
  307.             format(STRING, sizeof(STRING), "MOTIVO: %s\n", xMotivo);strcat(STRCAT, STRING);
  308.             format(STRING, sizeof(STRING), "DATA: %s\n", xData);strcat(STRCAT, STRING);
  309.             format(STRING, sizeof(STRING), "TEMPO: %s\n", ConvertTime(xGetTime));strcat(STRCAT, STRING);
  310.             format(STRING, sizeof(STRING), "TEMPO RESTANTE: %s", ConvertTime(xGetTime));strcat(STRCAT, STRING);
  311.             ShowPlayerDialog(i, DIALOG_BAN, DIALOG_STYLE_MSGBOX, "Painel de Banimento:", STRCAT, "SAIR","");
  312.            
  313.             SetTimerEx("Kickar", 500, false, "i", i);
  314.         }
  315.     }
  316.    
  317.     return 1;
  318. }
  319.  
  320. stock DesbanirPlayer(xConta[])
  321. {
  322.     new
  323.         STRING[500],
  324.         DBResult:Resultado
  325.     ;
  326.    
  327.     format(STRING, sizeof(STRING),"SELECT * FROM `"BAN_TABLE"` WHERE `IP` = '%s' OR `NOME` = '%s' COLLATE NOCASE", xConta, xConta);
  328.     Resultado = db_query(Ban_Database, STRING);
  329.     if(db_num_rows(Resultado))
  330.         format(STRING, sizeof(STRING), "DELETE FROM `"BAN_TABLE"` WHERE `IP` = '%s' OR `NOME` = '%s' COLLATE NOCASE", xConta, xConta),
  331.     db_free_result(db_query(Ban_Database, STRING));
  332.    
  333.     return 1;
  334. }
  335.  
  336. forward Kickar(playerid);
  337. public Kickar(playerid)
  338. {
  339.     return Kick(playerid);
  340. }
  341.  
  342. stock ConvertTime(SEGUNDOS)
  343. {
  344.     new
  345.         MINUTOS,
  346.         HORAS,
  347.         DIAS,
  348.         String[200]
  349.     ;
  350.    
  351.     if(SEGUNDOS > 59)
  352.     {
  353.         MINUTOS = SEGUNDOS / 60;
  354.         SEGUNDOS = SEGUNDOS - MINUTOS * 60;
  355.     }
  356.     if(MINUTOS > 59)
  357.     {
  358.         HORAS = MINUTOS / 60;
  359.         MINUTOS = MINUTOS - HORAS * 60;
  360.     }
  361.     if(HORAS > 23)
  362.     {
  363.         DIAS = HORAS / 24;
  364.         HORAS = HORAS - DIAS * 24;
  365.     }
  366.    
  367.     format(String, sizeof(String), "%02d Dias e %02d Horas e %02d Minutos e %02d Segundos", DIAS, HORAS, MINUTOS, SEGUNDOS);
  368.     if(DIAS == 0) format(String, sizeof(String),"%02d Horas e %02d Minutos e %02d Segundos", HORAS, MINUTOS, SEGUNDOS);
  369.     if(DIAS == 0 && HORAS == 0) format(String, sizeof(String),"%02d Minutos e %02d Segundos", MINUTOS, SEGUNDOS);
  370.     if(DIAS == 0 && HORAS == 0 && MINUTOS == 0) format(String, sizeof(String),"%02d Segundos", SEGUNDOS);
  371.     return String;
  372. }
  373.  
  374. stock GetName(playerid)
  375. {
  376.     new
  377.         GetName_[24]
  378.     ;
  379.    
  380.     GetPlayerName(playerid, GetName_, sizeof(GetName_));
  381.    
  382.     return GetName_;
  383. }
  384.  
  385. stock GetIP(playerid)
  386. {
  387.     new
  388.         GetIP_[30]
  389.     ;
  390.    
  391.     GetPlayerIp(playerid, GetIP_, sizeof(GetIP_));
  392.    
  393.     return GetIP_;
  394. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement