hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 15:05



Jelenlévő felhasználók

Jelenleg 239 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 238 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 15 hozzászólás ]  Oldal 1 2 Következő
Szerző Üzenet
 Hozzászólás témája: Advanced Ban web felület
HozzászólásElküldve: 2016.04.18. 21:19 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.01.15. 19:04
Hozzászólások: 407
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 176 alkalommal
Sziasztok. :xicon_e_biggrin:

Bevezető:
Még anno unalmamban készítettem egy web felületet az advanced bans pluginhoz, ahol a banlistát lehet megtekinteni, illetve van pár extra is pl.: lehet regisztrálni és a regisztrált felhasználók tudnak unban kérelmet küldeni az adminisztrátoroknak. A főadminisztrátor (amit a telepítés során adunk meg), tud adminisztrátorokat hozzáadni, akik a továbbiakban megtekinthetik az unban kérelmeket és törölhetik a banolt játékosokat.

Telepítés:
A telepítés nagyon egyszerű, csak annyit kell tenned, hogy a fájlokat felmásolod ftp-n keresztül, majd ha ez kész akkor megnyitod a böngésződben az weboldaladon az install mappát (http://www.teoldalad.hu/install). Ezt követően megfelelően kitöltöd a mezőket a mysql adatokkal.
Figyelem: Az admin felhasználó adataira vigyázz mert ez a felhasználó lesz a főadminisztrátor, és csak ő tud újabb admint hozzáadni az oldalhoz.

Ha a connect.php fájlt nem tudja írni a telepítés során akkor kézileg kell bemásolni az adatokat, amit a mezők kitöltése után kiír az oldal.
Pl.:
  1. <?php
  2.     $chost = "localhost"; // MYSQL Host
  3.     $cuser = "user"; // MYSQL Felhasználó
  4.     $cpw = "password"; // MYSQL Jelszó
  5.  
  6.     $cdb = "db"; // Adatbázis neve
  7.  
  8.     $connect = mysql_connect($chost,$cuser,$cpw)or die("Nem lehet csatlakozni az adabazishoz!");
  9.     mysql_select_db($cdb, $connect) or die("Hibás adatbázis név.");
  10. ?>

Ha a telepítés sikeres akkor az install mappára már nincs szükség ezért töröljük.

Használat:
A bejelentkezést követően már tudsz unban kérelmet írni az "Unban kérés" menüpont alatt.
A "Banlista" menüpont alatt a banolt játékos fognak megjelenni. Az adott sorra kattintva lenyílik egy ablak szerűség ahol még több infó található, illetve az adminok fent az ablak jobb sarkában találnak egy kis X jelet, amire kattintva törlik az adott bant.
A főadminisztrátor a "Tagok" menüpont alatt a sor végén a kis képekre (YES, NO) kattintva tud hozzáadni adminisztrátort illetve törölni.
Az adminok az "Unban kérelmek" menüpont alatt tudják megtekinteni, törölni azokat a kérelmeket amelyeket a felhasználók írtak (az adott sorra kattintva lenyílik egy ablak).

Letöltés:
Csatolmány:
web.zip [211.67 KiB]
Letöltve 380 alkalommal.


Kép:
Kép

Utószó:
Mikor ebbe belefogtam még csak kezdtem tanulni a php-t és mysql-t. Ha valami hülyeség van benne ne rágjátok le a fejem. :lol:
Az oldal soha nem lett használatba véve, így lehetnek benne különböző hibák.
Mivel ezeket a fájlokat a gépemről töröltem volna, ezért gondoltam, hogy előtte megosztom veletek.

Ha valami kérdésetek lenne akkor nyugodtan kérdezzetek. :D


A hozzászólást 4 alkalommal szerkesztették, utoljára demon 2016.08.02. 16:34-kor.

Ők köszönték meg demon nek ezt a hozzászólást (összesen 2): kengurumancs (2016.04.18. 21:25) • *GrafitY* (2016.04.19. 17:45)
  Népszerűség: 4.55%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Advanced Ban web felület
HozzászólásElküldve: 2016.04.19. 17:41 
Offline
GFX-Designer
Avatar

Csatlakozott: 2015.03.12. 15:06
Hozzászólások: 624
Megköszönt másnak: 199 alkalommal
Megköszönték neki: 78 alkalommal
demon írta:
Sziasztok. :xicon_e_biggrin:

Bevezető:
Még anno unalmamban készítettem egy web felületet az advanced bans pluginhoz, ahol a banlistát lehet megtekinteni, illetve van pár extra is pl.: lehet regisztrálni és a regisztrált felhasználók tudnak unban kérelmet küldeni az adminisztrátoroknak. A főadminisztrátor (amit a telepítés során adunk meg), tud adminisztrátorokat hozzáadni, akik a továbbiakban megtekinthetik az unban kérelmeket és törölhetik a banolt játékosokat.

Telepítés:
A telepítés nagyon egyszerű, csak annyit kell tenned, hogy a fájlokat felmásolod ftp-n keresztül, majd ha ez kész akkor megnyitod a böngésződben az weboldaladon az install mappát (http://www.teoldalad.hu/install). Ezt követően megfelelően kitöltöd a mezőket a mysql adatokkal.
Figyelem: Az admin felhasználó adataira vigyázz mert ez a felhasználó lesz a főadminisztrátor, és csak ő tud újabb admint hozzáadni az oldalhoz.

Ha a connect.php fájlt nem tudja írni a telepítés során akkor kézileg kell bemásolni az adatokat, amit a mezők kitöltése után kiír az oldal.
Pl.:
  1. <?php
  2.     $chost = "localhost"; // MYSQL Host
  3.     $cuser = "user"; // MYSQL Felhasználó
  4.     $cpw = "password"; // MYSQL Jelszó
  5.  
  6.     $cdb = "db"; // Adatbázis neve
  7.  
  8.     $connect = mysql_connect($chost,$cuser,$cpw)or die("Nem lehet csatlakozni az adabazishoz!");
  9.     mysql_select_db($cdb, $connect) or die("Hibás adatbázis név.");
  10. ?>

Ha a telepítés sikeres akkor az install mappára már nincs szükség ezért töröljük.

Használat:
A bejelentkezést követően már tudsz unban kérelmet írni az "Unban kérés" menüpont alatt.
A "Banlista" menüpont alatt a banolt játékos fognak megjelenni. Az adott sorra kattintva lenyílik egy ablak szerűség ahol még több infó található, illetve az adminok fent az ablak jobb sarkában találnak egy kis X jelet, amire kattintva törlik az adott bant.
A főadminisztrátor a "Tagok" menüpont alatt a sor végén a kis képekre (YES, NO) kattintva tud hozzáadni adminisztrátort illetve törölni.
Az adminok az "Unban kérelmek" menüpont alatt tudják megtekinteni, törölni azokat a kérelmeket amelyeket a felhasználók írtak (az adott sorra kattintva lenyílik egy ablak).

Fájlok:
Web:
Csatolmány:
web.rar

Kompatibilis advanced bans plugin:
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <regex>
  5.  
  6. #define PLUGIN_NAME "Advanced Bans"
  7. #define PLUGIN_VERSION  "0.8.1"
  8. #define PLUGIN_AUTHOR   "Exolent"
  9.  
  10. #pragma semicolon 1
  11.  
  12. // uncomment the line below if you want this plugin to
  13. // load old bans from the banned.cfg and listip.cfg files
  14. //#define KEEP_DEFAULT_BANS
  15.  
  16. // uncomment the line below if you want the history to be in one file
  17. //#define HISTORY_ONE_FILE
  18.  
  19. // if you must have a maximum amount of bans to be compatible with AMXX versions before 1.8.0
  20. // change this number to your maximum amount
  21. // if you would rather have unlimited (requires AMXX 1.8.0 or higher) then set it to 0
  22. #define MAX_BANS 0
  23.  
  24. #include <sqlx>
  25.  
  26. #define TABLE_NAME      "advanced_bans"
  27. #define KEY_NAME        "name"
  28. #define KEY_STEAMID     "steamid"
  29. #define KEY_BANLENGTH       "banlength"
  30. #define KEY_UNBANTIME       "unbantime"
  31. #define KEY_REASON      "reason"
  32. #define KEY_ADMIN_NAME      "admin_name"
  33. #define KEY_ADMIN_STEAMID   "admin_steamid"
  34.  
  35. #define RELOAD_BANS_INTERVAL    60.0
  36.  
  37. #define REGEX_IP_PATTERN "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
  38. #define REGEX_STEAMID_PATTERN "^^STEAM_0:(0|1):\d+$"
  39.  
  40. new Regex:g_IP_pattern;
  41. new Regex:g_SteamID_pattern;
  42. new g_regex_return;
  43.  
  44. #define IsValidIP(%1) (regex_match_c(%1, g_IP_pattern, g_regex_return) > 0)
  45. #define IsValidAuthid(%1) (regex_match_c(%1, g_SteamID_pattern, g_regex_return) > 0)
  46.  
  47. enum // for name displaying
  48. {
  49.     ACTIVITY_NONE, // nothing is shown
  50.     ACTIVITY_HIDE, // admin name is hidden
  51.     ACTIVITY_SHOW  // admin name is shown
  52. };
  53. new const g_admin_activity[] =
  54. {
  55.     ACTIVITY_NONE, // amx_show_activity 0 = show nothing to everyone
  56.     ACTIVITY_HIDE, // amx_show_activity 1 = hide admin name from everyone
  57.     ACTIVITY_SHOW, // amx_show_activity 2 = show admin name to everyone
  58.     ACTIVITY_SHOW, // amx_show_activity 3 = show name to admins but hide it from normal users
  59.     ACTIVITY_SHOW, // amx_show_activity 4 = show name to admins but show nothing to normal users
  60.     ACTIVITY_HIDE  // amx_show_activity 5 = hide name from admins but show nothing to normal users
  61. };
  62. new const g_normal_activity[] =
  63. {
  64.     ACTIVITY_NONE, // amx_show_activity 0 = show nothing to everyone
  65.     ACTIVITY_HIDE, // amx_show_activity 1 = hide admin name from everyone
  66.     ACTIVITY_SHOW, // amx_show_activity 2 = show admin name to everyone
  67.     ACTIVITY_HIDE, // amx_show_activity 3 = show name to admins but hide it from normal users
  68.     ACTIVITY_NONE, // amx_show_activity 4 = show name to admins but show nothing to normal users
  69.     ACTIVITY_NONE  // amx_show_activity 5 = hide name from admins but show nothing to normal users
  70. };
  71.  
  72.  
  73. #if MAX_BANS <= 0
  74. enum _:BannedData
  75. {
  76.     bd_name[32],
  77.     bd_steamid[35],
  78.     bd_banlength,
  79.     bd_unbantime[32],
  80.     bd_reason[128],
  81.     bd_admin_name[64],
  82.     bd_admin_steamid[35]
  83. };
  84.  
  85. new Trie:g_trie;
  86. new Array:g_array;
  87. #else
  88. new g_names[MAX_BANS][32];
  89. new g_steamids[MAX_BANS][35];
  90. new g_banlengths[MAX_BANS];
  91. new g_unbantimes[MAX_BANS][32];
  92. new g_reasons[MAX_BANS][128];
  93. new g_admin_names[MAX_BANS][64];
  94. new g_admin_steamids[MAX_BANS][35];
  95. #endif
  96. new g_total_bans;
  97.  
  98. new Handle:g_SqlTuple;
  99.  
  100. new Host[] = "localhost";
  101. new User[] = "root";
  102. new Pass[] = "password";
  103. new Db[] = "demon";
  104.  
  105. new bool:g_loading_bans = true;
  106.  
  107. new const Prefix[] = "[AdvancedBans]";
  108. new ab_website;
  109. new ab_immunity;
  110. new ab_bandelay;
  111. new ab_unbancheck;
  112.  
  113. new amx_show_activity;
  114.  
  115. #if MAX_BANS <= 0
  116. new Array:g_maxban_times;
  117. new Array:g_maxban_flags;
  118. #else
  119. #define MAX_BANLIMITS   30
  120. new g_maxban_times[MAX_BANLIMITS];
  121. new g_maxban_flags[MAX_BANLIMITS];
  122. #endif
  123. new g_total_maxban_times;
  124.  
  125. new g_unban_entity;
  126.  
  127. new g_max_clients;
  128.  
  129. new g_msgid_SayText;
  130. new timp[64];
  131.  
  132. public plugin_init()
  133. {
  134.     register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
  135.     register_cvar("advanced_bans", PLUGIN_VERSION, FCVAR_SPONLY);
  136.    
  137.     register_dictionary("advanced_bans.txt");
  138.    
  139.     register_concmd("amx_ban", "CmdBan", ADMIN_BAN, "<nick, #userid, authid> <time in minutes> <reason>");
  140.     register_concmd("amx_banip", "CmdBanIp", ADMIN_BAN, "<nick, #userid, authid> <time in minutes> <reason>");
  141.     register_concmd("amx_addban", "CmdAddBan", ADMIN_BAN, "<name> <authid or ip> <time in minutes> <reason>");
  142.     register_concmd("amx_unban", "CmdUnban", ADMIN_BAN, "<authid or ip>");
  143.     register_concmd("amx_banlist", "CmdBanList", ADMIN_BAN, "[start] -- shows everyone who is banned");
  144.     register_srvcmd("amx_addbanlimit", "CmdAddBanLimit", -1, "<flag> <time in minutes>");
  145.    
  146.     ab_website = register_cvar("ab_website", "");
  147.     ab_immunity = register_cvar("ab_immunity", "1");
  148.     ab_bandelay = register_cvar("ab_bandelay", "1.0");
  149.     ab_unbancheck = register_cvar("ab_unbancheck", "5.0");
  150.    
  151.     amx_show_activity = register_cvar("amx_show_activity", "2");
  152.    
  153.     #if MAX_BANS <= 0
  154.     g_trie = TrieCreate();
  155.     g_array = ArrayCreate(BannedData);
  156.     #endif
  157.    
  158.     #if !defined MAX_BANLIMITS
  159.     g_maxban_times = ArrayCreate(1);
  160.     g_maxban_flags = ArrayCreate(1);
  161.     #endif
  162.    
  163.     makeTuple();
  164.     createTable();
  165.    
  166.     new error[2];
  167.     g_IP_pattern = regex_compile(REGEX_IP_PATTERN, g_regex_return, error, sizeof(error) - 1);
  168.     g_SteamID_pattern = regex_compile(REGEX_STEAMID_PATTERN, g_regex_return, error, sizeof(error) - 1);
  169.    
  170.     g_max_clients = get_maxplayers();
  171.    
  172.     g_msgid_SayText = get_user_msgid("SayText");
  173. }
  174.  
  175. public makeTuple()
  176. {
  177.     g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db);
  178. }
  179. public createTable()
  180. {
  181.     new query[1024];
  182.     formatex(query, sizeof(query) - 1,\
  183.         "CREATE TABLE IF NOT EXISTS `%s` (`id` int(11) NOT NULL AUTO_INCREMENT,`%s` varchar(32) NOT NULL, `%s` varchar(35) NOT NULL, `%s` int(10) NOT NULL, `%s` varchar(32) NOT NULL, `%s` varchar(128) NOT NULL, `%s` varchar(64) NOT NULL, `%s` varchar(35) NOT NULL, PRIMARY KEY(`id`));",\
  184.         TABLE_NAME, KEY_NAME, KEY_STEAMID, KEY_BANLENGTH, KEY_UNBANTIME, KEY_REASON, KEY_ADMIN_NAME, KEY_ADMIN_STEAMID
  185.         );
  186.    
  187.     SQL_ThreadQuery(g_SqlTuple, "QueryCreateTable", query);
  188. }
  189.  
  190. public QueryCreateTable(failstate, Handle:query, error[], errcode, data[], datasize, Float:queuetime)
  191. {
  192.     if( failstate == TQUERY_CONNECT_FAILED )
  193.     {
  194.         set_fail_state("Could not connect to database.");
  195.     }
  196.     else if( failstate == TQUERY_QUERY_FAILED )
  197.     {
  198.         set_fail_state("Query failed.");
  199.     }
  200.     else if( errcode )
  201.     {
  202.         log_amx("Error on query: %s", error);
  203.     }
  204.     else
  205.     {
  206.         LoadBans();
  207.     }
  208. }
  209.  
  210. public plugin_cfg()
  211. {
  212.     CreateUnbanEntity();
  213. }
  214.  
  215. public CreateUnbanEntity()
  216. {
  217.     static failtimes;
  218.    
  219.     g_unban_entity = create_entity("info_target");
  220.    
  221.     if( !is_valid_ent(g_unban_entity) )
  222.     {
  223.         ++failtimes;
  224.        
  225.         log_amx("[ERROR] Failed to create unban entity (%i/10)", failtimes);
  226.        
  227.         if( failtimes < 10 )
  228.         {
  229.             set_task(1.0, "CreateUnbanEntity");
  230.         }
  231.         else
  232.         {
  233.             log_amx("[ERROR] Could not create unban entity!");
  234.         }
  235.        
  236.         return;
  237.     }
  238.    
  239.     entity_set_string(g_unban_entity, EV_SZ_classname, "unban_entity");
  240.     entity_set_float(g_unban_entity, EV_FL_nextthink, get_gametime() + 1.0);
  241.    
  242.     register_think("unban_entity", "FwdThink");
  243. }
  244.  
  245. public client_authorized(client)
  246. {
  247.     static authid[35];
  248.     get_user_authid(client, authid, sizeof(authid) - 1);
  249.    
  250.     static ip[35];
  251.     get_user_ip(client, ip, sizeof(ip) - 1, 1);
  252.    
  253.     #if MAX_BANS > 0
  254.     static banned_authid[35], bool:is_ip;
  255.     for( new i = 0; i < g_total_bans; i++ )
  256.     {
  257.         copy(banned_authid, sizeof(banned_authid) - 1, g_steamids[i]);
  258.        
  259.         is_ip = bool:(containi(banned_authid, ".") != -1);
  260.        
  261.         if( is_ip && equal(ip, banned_authid) || !is_ip && equal(authid, banned_authid) )
  262.         {
  263.             static name[32], reason[128], unbantime[32], admin_name[32], admin_steamid[64];
  264.             copy(name, sizeof(name) - 1, g_names[i]);
  265.             copy(reason, sizeof(reason) - 1, g_reasons[i]);
  266.             new banlength = g_banlengths[i];
  267.             copy(unbantime, sizeof(unbantime) - 1, g_unbantimes[i]);
  268.             copy(admin_name, sizeof(admin_name) - 1, g_admin_names[i]);
  269.             copy(admin_steamid, sizeof(admin_steamid) - 1, g_admin_steamids[i]);
  270.            
  271.             PrintBanInformation(client, name, banned_authid, reason, banlength, unbantime, admin_name, admin_steamid, true, true);
  272.            
  273.             set_task(get_pcvar_float(ab_bandelay), "TaskDisconnectPlayer", client);
  274.             break;
  275.         }
  276.     }
  277.     #else
  278.     static array_pos;
  279.    
  280.     if( TrieGetCell(g_trie, authid, array_pos) || TrieGetCell(g_trie, ip, array_pos) )
  281.     {
  282.         static data[BannedData];
  283.         ArrayGetArray(g_array, array_pos, data);
  284.        
  285.         PrintBanInformation(client, data[bd_name], data[bd_steamid], data[bd_reason], data[bd_banlength], data[bd_unbantime], data[bd_admin_name], data[bd_admin_steamid], true, true);
  286.        
  287.         set_task(get_pcvar_float(ab_bandelay), "TaskDisconnectPlayer", client);
  288.     }
  289.     #endif
  290. }
  291.  
  292. public CmdBan(client, level, cid)
  293. {
  294.     if( !cmd_access(client, level, cid, 4) ) return PLUGIN_HANDLED;
  295.    
  296.     static arg[128];
  297.     read_argv(1, arg, sizeof(arg) - 1);
  298.    
  299.     new target = cmd_target(client, arg, GetTargetFlags(client));
  300.     if( !target ) return PLUGIN_HANDLED;
  301.    
  302.     static target_authid[35];
  303.     get_user_authid(target, target_authid, sizeof(target_authid) - 1);
  304.    
  305.     if( !IsValidAuthid(target_authid) )
  306.     {
  307.         console_print(client, "%s %L", Prefix, client, "AB_NOT_AUTHORIZED");
  308.         return PLUGIN_HANDLED;
  309.     }
  310.    
  311.     #if MAX_BANS <= 0
  312.     if( TrieKeyExists(g_trie, target_authid) )
  313.     {
  314.         console_print(client, "%s %L", Prefix, client, "AB_ALREADY_BANNED_STEAMID");
  315.         return PLUGIN_HANDLED;
  316.     }
  317.     #else
  318.     for( new i = 0; i < g_total_bans; i++ )
  319.     {
  320.         if( !strcmp(target_authid, g_steamids[i], 1) )
  321.         {
  322.             console_print(client, "%s %L", Prefix, client, "AB_ALREADY_BANNED_STEAMID");
  323.             return PLUGIN_HANDLED;
  324.         }
  325.     }
  326.     #endif
  327.    
  328.     read_argv(2, arg, sizeof(arg) - 1);
  329.    
  330.     new length = str_to_num(arg);
  331.     new maxlength = GetMaxBanTime(client);
  332.    
  333.     if( maxlength && (!length || length > maxlength) )
  334.     {
  335.         console_print(client, "%s %L", Prefix, client, "AB_MAX_BAN_TIME", maxlength);
  336.         return PLUGIN_HANDLED;
  337.     }
  338.    
  339.     static unban_time[64];
  340.     if( length == 0 )
  341.     {
  342.         formatex(unban_time, sizeof(unban_time) - 1, "%L", client, "AB_PERMANENT_BAN");
  343.     }
  344.     else
  345.     {
  346.         GenerateUnbanTime(length, unban_time, sizeof(unban_time) - 1);
  347.     }
  348.    
  349.     read_argv(3, arg, sizeof(arg) - 1);
  350.    
  351.     static admin_name[64], target_name[32];
  352.     get_user_name(client, admin_name, sizeof(admin_name) - 1);
  353.     get_user_name(target, target_name, sizeof(target_name) - 1);
  354.    
  355.     static admin_authid[35];
  356.     get_user_authid(client, admin_authid, sizeof(admin_authid) - 1);
  357.    
  358.     AddBan(target_name, target_authid, arg, length, unban_time, admin_name, admin_authid);
  359.    
  360.     PrintBanInformation(target, target_name, target_authid, arg, length, unban_time, admin_name, admin_authid, true, true);
  361.     PrintBanInformation(client, target_name, target_authid, arg, length, unban_time, admin_name, admin_authid, false, false);
  362.    
  363.     get_time("%Y.%m.%d / %H:%M:%S",timp,63);
  364.     set_task( 0.1, "snapshot1", target );
  365.     set_task( 0.9, "snapshot2", target );  
  366.  
  367.     GetBanTime(length, unban_time, sizeof(unban_time) - 1);
  368.    
  369.     //ChatColorM( target, "!t%s Admin neve: !g %s", Prefix, admin_name);
  370.     ChatColorM( target, "!t%s Játékos neved:!g %s", Prefix, target_name);
  371.     ChatColorM( target, "!t%s Indok:!g %s", Prefix, arg);
  372.     ChatColorM( target, "!t%s 2 kép készült rólad!  Dátum / Idõ:!g %s", Prefix, timp);
  373.     PrintActivity(admin_name, "^x03%s^x04 $name^x03 :  bannolta^x04 %s^x03. Indok:^x04 %s^x03. Idõ:^x04 %s", Prefix, target_name, arg, unban_time);
  374.     set_task(get_pcvar_float(ab_bandelay), "TaskDisconnectPlayer", target);
  375.    
  376.     Log("%s <%s> Kitiltotta %s <%s> || Indok: ^"%s^" || IdÅ‘: %s", admin_name, admin_authid, target_name, target_authid, arg, unban_time);
  377.    
  378.     return PLUGIN_HANDLED;
  379. }
  380.  
  381. public snapshot1( tempid )
  382. {
  383.     client_cmd( tempid, "snapshot" );
  384.     static website[64];
  385.     get_pcvar_string(ab_website, website, sizeof(website) - 1);
  386.     ChatColorM( tempid, "!t%s Unban kérelem: !g%s", Prefix, website );
  387. }
  388. public snapshot2( tempid )
  389. {
  390.         client_cmd( tempid, "snapshot" );
  391. }
  392.  
  393. stock ChatColorM(const id, const input[], any:...)
  394. {
  395.     new count = 1, players[32];
  396.     static msg[191];
  397.     vformat(msg, 190, input, 3);
  398.    
  399.     replace_all(msg, 190, "!g", "^4"); // Green Color
  400.     replace_all(msg, 190, "!y", "^1"); // Default Color
  401.     replace_all(msg, 190, "!t", "^3"); // Team Color
  402.    
  403.     if (id) players[0] = id; else get_players(players, count, "ch");
  404.     {
  405.         for (new i = 0; i < count; i++)
  406.         {
  407.             if (is_user_connected(players[i]))
  408.             {
  409.                 message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
  410.                 write_byte(players[i]);
  411.                 write_string(msg);
  412.                 message_end();
  413.             }
  414.         }
  415.     }
  416. }
  417.  
  418. public CmdBanIp(client, level, cid)
  419. {
  420.     if( !cmd_access(client, level, cid, 4) ) return PLUGIN_HANDLED;
  421.    
  422.     static arg[128];
  423.     read_argv(1, arg, sizeof(arg) - 1);
  424.    
  425.     new target = cmd_target(client, arg, GetTargetFlags(client));
  426.     if( !target ) return PLUGIN_HANDLED;
  427.    
  428.     static target_ip[35];
  429.     get_user_ip(target, target_ip, sizeof(target_ip) - 1, 1);
  430.    
  431.     #if MAX_BANS <= 0
  432.     if( TrieKeyExists(g_trie, target_ip) )
  433.     {
  434.         console_print(client, "%s %L", Prefix, client, "AB_ALREADY_BANNED_IP");
  435.         return PLUGIN_HANDLED;
  436.     }
  437.     #else
  438.     for( new i = 0; i < g_total_bans; i++ )
  439.     {
  440.         if( !strcmp(target_ip, g_steamids[i], 1) )
  441.         {
  442.             console_print(client, "%s %L", Prefix, client, "AB_ALREADY_BANNED_IP");
  443.             return PLUGIN_HANDLED;
  444.         }
  445.     }
  446.     #endif
  447.    
  448.     read_argv(2, arg, sizeof(arg) - 1);
  449.    
  450.     new length = str_to_num(arg);
  451.     new maxlength = GetMaxBanTime(client);
  452.    
  453.     if( maxlength && (!length || length > maxlength) )
  454.     {
  455.         console_print(client, "%s %L", Prefix, client, "AB_MAX_BAN_TIME", maxlength);
  456.         return PLUGIN_HANDLED;
  457.     }
  458.    
  459.     static unban_time[32];
  460.    
  461.     if( length == 0 )
  462.     {
  463.         formatex(unban_time, sizeof(unban_time) - 1, "%L", client, "AB_PERMANENT_BAN");
  464.     }
  465.     else
  466.     {
  467.         GenerateUnbanTime(length, unban_time, sizeof(unban_time) - 1);
  468.     }
  469.    
  470.     read_argv(3, arg, sizeof(arg) - 1);
  471.    
  472.     static admin_name[64], target_name[32];
  473.     get_user_name(client, admin_name, sizeof(admin_name) - 1);
  474.     get_user_name(target, target_name, sizeof(target_name) - 1);
  475.    
  476.     static admin_authid[35];
  477.     get_user_authid(client, admin_authid, sizeof(admin_authid) - 1);
  478.    
  479.     AddBan(target_name, target_ip, arg, length, unban_time, admin_name, admin_authid);
  480.    
  481.     PrintBanInformation(target, target_name, target_ip, arg, length, unban_time, admin_name, admin_authid, true, true);
  482.     PrintBanInformation(client, target_name, target_ip, arg, length, unban_time, admin_name, admin_authid, false, false);
  483.    
  484.     get_time("%Y.%m.%d / %H:%M:%S",timp,63);
  485.     set_task( 0.1, "snapshot1", target );
  486.     set_task( 0.9, "snapshot2", target );  
  487.  
  488.     GetBanTime(length, unban_time, sizeof(unban_time) - 1);
  489.    
  490.     //ChatColorM( target, "!t%s Admin neve: !g %s", Prefix, admin_name);
  491.     ChatColorM( target, "!t%s Játékos neved:!g %s", Prefix, target_name);
  492.     ChatColorM( target, "!t%s Indok:!g %s", Prefix, arg);
  493.     ChatColorM( target, "!t%s 2 kép készült rólad!  Dátum / Idõ:!g %s", Prefix, timp);
  494.     PrintActivity(admin_name, "^x03%s^x04 $name^x03 :  bannolta^x04 %s^x03. Indok:^x04 %s^x03. Idõ:^x04 %s", Prefix, target_name, arg, unban_time);
  495.     set_task(get_pcvar_float(ab_bandelay), "TaskDisconnectPlayer", target);
  496.    
  497.     Log("%s <%s> banned %s <%s> || Reason: ^"%s^" || Ban Length: %s", admin_name, admin_authid, target_name, target_ip, arg, unban_time);
  498.    
  499.     return PLUGIN_HANDLED;
  500. }
  501.  
  502. public CmdAddBan(client, level, cid)
  503. {
  504.     if( !cmd_access(client, level, cid, 5) ) return PLUGIN_HANDLED;
  505.    
  506.     static target_name[32], target_authid[35], bantime[10], reason[128];
  507.     read_argv(1, target_name, sizeof(target_name) - 1);
  508.     read_argv(2, target_authid, sizeof(target_authid) - 1);
  509.     read_argv(3, bantime, sizeof(bantime) - 1);
  510.     read_argv(4, reason, sizeof(reason) - 1);
  511.    
  512.     new bool:is_ip = bool:(containi(target_authid, ".") != -1);
  513.    
  514.     if( !is_ip && !IsValidAuthid(target_authid) )
  515.     {
  516.         console_print(client, "%s %L", Prefix, client, "AB_INVALID_STEAMID");
  517.         console_print(client, "%s %L", Prefix, client, "AB_VALID_STEAMID_FORMAT");
  518.        
  519.         return PLUGIN_HANDLED;
  520.     }
  521.     else if( is_ip )
  522.     {
  523.         new pos = contain(target_authid, ":");
  524.         if( pos > 0 )
  525.         {
  526.             target_authid[pos] = 0;
  527.         }
  528.        
  529.         if( !IsValidIP(target_authid) )
  530.         {
  531.             console_print(client, "%s %L", Prefix, client, "AB_INVALID_IP");
  532.            
  533.             return PLUGIN_HANDLED;
  534.         }
  535.     }
  536.    
  537.     #if MAX_BANS <= 0
  538.     if( TrieKeyExists(g_trie, target_authid) )
  539.     {
  540.         console_print(client, "%s %L", Prefix, client, is_ip ? "AB_ALREADY_BANNED_IP" : "AB_ALREADY_BANNED_STEAMID");
  541.         return PLUGIN_HANDLED;
  542.     }
  543.     #else
  544.     for( new i = 0; i < g_total_bans; i++ )
  545.     {
  546.         if( !strcmp(target_authid, g_steamids[i], 1) )
  547.         {
  548.             console_print(client, "%s %L", Prefix, client, is_ip ? "AB_ALREADY_BANNED_IP" : "AB_ALREADY_BANNED_STEAMID");
  549.             return PLUGIN_HANDLED;
  550.         }
  551.     }
  552.     #endif
  553.    
  554.     new length = str_to_num(bantime);
  555.     new maxlength = GetMaxBanTime(client);
  556.    
  557.     if( maxlength && (!length || length > maxlength) )
  558.     {
  559.         console_print(client, "%s %L", Prefix, client, "AB_MAX_BAN_TIME", maxlength);
  560.         return PLUGIN_HANDLED;
  561.     }
  562.    
  563.     if( is_user_connected(find_player(is_ip ? "d" : "c", target_authid)) )
  564.     {
  565.         client_cmd(client, "amx_ban ^"%s^" %i ^"%s^"", target_authid, length, reason);
  566.         return PLUGIN_HANDLED;
  567.     }
  568.    
  569.     static unban_time[32];
  570.     if( length == 0 )
  571.     {
  572.         formatex(unban_time, sizeof(unban_time) - 1, "%L", client, "AB_PERMANENT_BAN");
  573.     }
  574.     else
  575.     {
  576.         GenerateUnbanTime(length, unban_time, sizeof(unban_time) - 1);
  577.     }
  578.    
  579.     static admin_name[64], admin_authid[35];
  580.     get_user_name(client, admin_name, sizeof(admin_name) - 1);
  581.     get_user_authid(client, admin_authid, sizeof(admin_authid) - 1);
  582.    
  583.     AddBan(target_name, target_authid, reason, length, unban_time, admin_name, admin_authid);
  584.    
  585.     PrintBanInformation(client, target_name, target_authid, reason, length, unban_time, "", "", false, false);
  586.    
  587.     GetBanTime(length, unban_time, sizeof(unban_time) - 1);
  588.    
  589.     PrintActivity(admin_name, "^x04%s $name^x01 :^x03  ban %s %s. Indok: %s. IdÅ‘: %s", Prefix, is_ip ? "IP" : "SteamID", target_authid, reason, unban_time);
  590.    
  591.     Log("%s <%s> banned %s <%s> || Reason: ^"%s^" || Ban Length: %s", admin_name, admin_authid, target_name, target_authid, reason, unban_time);
  592.    
  593.     return PLUGIN_HANDLED;
  594. }
  595.  
  596. public CmdUnban(client, level, cid)
  597. {
  598.     if( !cmd_access(client, level, cid, 2) ) return PLUGIN_HANDLED;
  599.    
  600.     static arg[35];
  601.     read_argv(1, arg, sizeof(arg) - 1);
  602.    
  603.     #if MAX_BANS > 0
  604.     static banned_authid[35];
  605.     for( new i = 0; i < g_total_bans; i++ )
  606.     {
  607.         copy(banned_authid, sizeof(banned_authid) - 1, g_steamids[i]);
  608.        
  609.         if( equal(arg, banned_authid) )
  610.         {
  611.             static admin_name[64];
  612.             get_user_name(client, admin_name, sizeof(admin_name) - 1);
  613.            
  614.             static name[32], reason[128];
  615.             copy(name, sizeof(name) - 1, g_names[i]);
  616.             copy(reason, sizeof(reason) - 1, g_reasons[i]);
  617.            
  618.             PrintActivity(admin_name, "^x04%s $name^x01 :^x03  feloldotta %s^x01 [%s] [Indok: %s]", Prefix, name, arg, reason);
  619.            
  620.             static authid[35];
  621.             get_user_authid(client, authid, sizeof(authid) - 1);
  622.            
  623.             Log("%s <%s> unbanned %s <%s> || Ban Reason: ^"%s^"", admin_name, authid, name, arg, reason);
  624.            
  625.             RemoveBan(i);
  626.            
  627.             return PLUGIN_HANDLED;
  628.         }
  629.     }
  630.     #else
  631.     if( TrieKeyExists(g_trie, arg) )
  632.     {
  633.         static array_pos;
  634.         TrieGetCell(g_trie, arg, array_pos);
  635.        
  636.         static data[BannedData];
  637.         ArrayGetArray(g_array, array_pos, data);
  638.        
  639.         static unban_name[32];
  640.         get_user_name(client, unban_name, sizeof(unban_name) - 1);
  641.        
  642.         PrintActivity(unban_name, "^x04%s $name^x01 :^x03 feloldotta %s^x01 [%s] [Indok: %s]", Prefix, data[bd_name], data[bd_steamid], data[bd_reason]);
  643.        
  644.         static admin_name[64];
  645.         get_user_name(client, admin_name, sizeof(admin_name) - 1);
  646.        
  647.         static authid[35];
  648.         get_user_authid(client, authid, sizeof(authid) - 1);
  649.        
  650.         Log("%s <%s> unbanned %s <%s> || Ban Reason: ^"%s^"", admin_name, authid, data[bd_name], data[bd_steamid], data[bd_reason]);
  651.        
  652.         RemoveBan(array_pos, data[bd_steamid]);
  653.        
  654.         return PLUGIN_HANDLED;
  655.     }
  656.     #endif
  657.    
  658.     console_print(client, "%s %L", Prefix, client, "AB_NOT_IN_BAN_LIST", arg);
  659.    
  660.     return PLUGIN_HANDLED;
  661. }
  662.  
  663. public CmdBanList(client, level, cid)
  664. {
  665.     if( !cmd_access(client, level, cid, 1) ) return PLUGIN_HANDLED;
  666.    
  667.     if( !g_total_bans )
  668.     {
  669.         console_print(client, "%s %L", Prefix, client, "AB_NO_BANS");
  670.         return PLUGIN_HANDLED;
  671.     }
  672.    
  673.     static start;
  674.    
  675.     if( read_argc() > 1 )
  676.     {
  677.         static arg[5];
  678.         read_argv(1, arg, sizeof(arg) - 1);
  679.        
  680.         start = min(str_to_num(arg), g_total_bans) - 1;
  681.     }
  682.     else
  683.     {
  684.         start = 0;
  685.     }
  686.    
  687.     new last = min(start + 10, g_total_bans);
  688.    
  689.     if( client == 0 )
  690.     {
  691.         server_cmd("echo ^"%L^"", client, "AB_BAN_LIST_NUM", start + 1, last);
  692.     }
  693.     else
  694.     {
  695.         client_cmd(client, "echo ^"%L^"", client, "AB_BAN_LIST_NUM", start + 1, last);
  696.     }
  697.    
  698.     for( new i = start; i < last; i++ )
  699.     {
  700.         #if MAX_BANS <= 0
  701.         static data[BannedData];
  702.         ArrayGetArray(g_array, i, data);
  703.        
  704.         PrintBanInformation(client, data[bd_name], data[bd_steamid], data[bd_reason], data[bd_banlength], data[bd_unbantime], data[bd_admin_name], data[bd_admin_steamid], true, false);
  705.         #else
  706.         static name[32], steamid[35], reason[128], banlength, unbantime[32], admin_name[32], admin_steamid[35];
  707.        
  708.         copy(name, sizeof(name) - 1, g_names[i]);
  709.         copy(steamid, sizeof(steamid) - 1, g_steamids[i]);
  710.         copy(reason, sizeof(reason) - 1, g_reasons[i]);
  711.         banlength = g_banlengths[i];
  712.         copy(unbantime, sizeof(unbantime) - 1, g_unbantimes[i]);
  713.         copy(admin_name, sizeof(admin_name) - 1, g_admin_names[i]);
  714.         copy(admin_steamid, sizeof(admin_steamid) - 1, g_admin_steamids[i]);
  715.        
  716.         PrintBanInformation(client, name, steamid, reason, banlength, unbantime, admin_name, admin_steamid, true, false);
  717.         #endif
  718.     }
  719.    
  720.     if( ++last < g_total_bans )
  721.     {
  722.         if( client == 0 )
  723.         {
  724.             server_cmd("echo ^"%L^"", client, "AB_BAN_LIST_NEXT", last);
  725.         }
  726.         else
  727.         {
  728.             client_cmd(client, "echo ^"%L^"", client, "AB_BAN_LIST_NEXT", last);
  729.         }
  730.     }
  731.    
  732.     return PLUGIN_HANDLED;
  733. }
  734.  
  735. public CmdAddBanLimit()
  736. {
  737.     if( read_argc() != 3 )
  738.     {
  739.         log_amx("amx_addbanlimit was used with incorrect parameters!");
  740.         log_amx("Usage: amx_addbanlimit <flags> <time in minutes>");
  741.         return PLUGIN_HANDLED;
  742.     }
  743.    
  744.     static arg[16];
  745.    
  746.     read_argv(1, arg, sizeof(arg) - 1);
  747.     new flags = read_flags(arg);
  748.    
  749.     read_argv(2, arg, sizeof(arg) - 1);
  750.     new minutes = str_to_num(arg);
  751.    
  752.     #if !defined MAX_BANLIMITS
  753.     ArrayPushCell(g_maxban_flags, flags);
  754.     ArrayPushCell(g_maxban_times, minutes);
  755.     #else
  756.     if( g_total_maxban_times >= MAX_BANLIMITS )
  757.     {
  758.         static notified;
  759.         if( !notified )
  760.         {
  761.             log_amx("The amx_addbanlimit has reached its maximum!");
  762.             notified = 1;
  763.         }
  764.         return PLUGIN_HANDLED;
  765.     }
  766.    
  767.     g_maxban_flags[g_total_maxban_times] = flags;
  768.     g_maxban_times[g_total_maxban_times] = minutes;
  769.     #endif
  770.     g_total_maxban_times++;
  771.    
  772.     return PLUGIN_HANDLED;
  773. }
  774.  
  775. public FwdThink(entity)
  776. {
  777.     if( entity != g_unban_entity ) return;
  778.    
  779.     if( g_total_bans > 0 && !g_loading_bans )
  780.     {
  781.         static _hours[5], _minutes[5], _seconds[5], _month[5], _day[5], _year[7];
  782.         format_time(_hours, sizeof(_hours) - 1, "%H");
  783.         format_time(_minutes, sizeof(_minutes) - 1, "%M");
  784.         format_time(_seconds, sizeof(_seconds) - 1, "%S");
  785.         format_time(_month, sizeof(_month) - 1, "%m");
  786.         format_time(_day, sizeof(_day) - 1, "%d");
  787.         format_time(_year, sizeof(_year) - 1, "%Y");
  788.        
  789.         // c = current
  790.         // u = unban
  791.        
  792.         new c_hours = str_to_num(_hours);
  793.         new c_minutes = str_to_num(_minutes);
  794.         new c_seconds = str_to_num(_seconds);
  795.         new c_month = str_to_num(_month);
  796.         new c_day = str_to_num(_day);
  797.         new c_year = str_to_num(_year);
  798.        
  799.         static unban_time[32];
  800.         static u_hours, u_minutes, u_seconds, u_month, u_day, u_year;
  801.        
  802.         for( new i = 0; i < g_total_bans; i++ )
  803.         {
  804.             #if MAX_BANS <= 0
  805.             static data[BannedData];
  806.             ArrayGetArray(g_array, i, data);
  807.            
  808.             if( data[bd_banlength] == 0 ) continue;
  809.             #else
  810.             if( g_banlengths[i] == 0 ) continue;
  811.             #endif
  812.            
  813.             #if MAX_BANS <= 0
  814.             copy(unban_time, sizeof(unban_time) - 1, data[bd_unbantime]);
  815.             #else
  816.             copy(unban_time, sizeof(unban_time) - 1, g_unbantimes[i]);
  817.             #endif
  818.             replace_all(unban_time, sizeof(unban_time) - 1, ":", " ");
  819.             replace_all(unban_time, sizeof(unban_time) - 1, "/", " ");
  820.            
  821.             parse(unban_time,\
  822.                 _hours, sizeof(_hours) - 1,\
  823.                 _minutes, sizeof(_minutes) - 1,\
  824.                 _seconds, sizeof(_seconds) - 1,\
  825.                 _month, sizeof(_month) - 1,\
  826.                 _day, sizeof(_day) - 1,\
  827.                 _year, sizeof(_year) - 1
  828.                 );
  829.            
  830.             u_hours = str_to_num(_hours);
  831.             u_minutes = str_to_num(_minutes);
  832.             u_seconds = str_to_num(_seconds);
  833.             u_month = str_to_num(_month);
  834.             u_day = str_to_num(_day);
  835.             u_year = str_to_num(_year);
  836.            
  837.             if( u_year < c_year
  838.             || u_year == c_year && u_month < c_month
  839.             || u_year == c_year && u_month == c_month && u_day < c_day
  840.             || u_year == c_year && u_month == c_month && u_day == c_day && u_hours < c_hours
  841.             || u_year == c_year && u_month == c_month && u_day == c_day && u_hours == c_hours && u_minutes < c_minutes
  842.             || u_year == c_year && u_month == c_month && u_day == c_day && u_hours == c_hours && u_minutes == c_minutes && u_seconds <= c_seconds )
  843.             {
  844.                 #if MAX_BANS <= 0
  845.                 Log("Ban time is up for: %s [%s]", data[bd_name], data[bd_steamid]);
  846.                
  847.                 Print("^x04%s^x03 %s^x01[^x04%s^x01]^x03 Lejárt a ban!^x01 [Indok: %s]", Prefix, data[bd_name], data[bd_steamid], data[bd_reason]);
  848.                
  849.                 RemoveBan(i, data[bd_steamid]);
  850.                 #else
  851.                 Log("Ban time is up for: %s [%s]", g_names[i], g_steamids[i]);
  852.                
  853.                 Print("^x04%s^x03 %s^x01[^x04%s^x01]^x03 lejárt a ban idÅ‘!^x01 [Indok: %s]", Prefix, g_names[i], g_steamids[i], g_reasons[i]);
  854.                
  855.                 RemoveBan(i);
  856.                 #endif
  857.                
  858.                 i--; // current pos was replaced with another ban, so we need to check it again.
  859.             }
  860.         }
  861.     }
  862.    
  863.     entity_set_float(g_unban_entity, EV_FL_nextthink, get_gametime() + get_pcvar_float(ab_unbancheck));
  864. }
  865.  
  866. public TaskDisconnectPlayer(client)
  867. {
  868.     server_cmd("kick #%i ^"Bannolva lettel. Nezd meg a konzolod!^"", get_user_userid(client));
  869. }
  870.  
  871. AddBan(const target_name[], const target_steamid[], const reason[], const length, const unban_time[], const admin_name[], const admin_steamid[])
  872. {
  873.     #if MAX_BANS > 0
  874.     if( g_total_bans == MAX_BANS )
  875.     {
  876.         log_amx("Ban list is full! (%i)", g_total_bans);
  877.         return;
  878.     }
  879.     #endif
  880.    
  881.     static target_name2[32], reason2[128], admin_name2[32];
  882.     MakeStringSQLSafe(target_name, target_name2, sizeof(target_name2) - 1);
  883.     MakeStringSQLSafe(reason, reason2, sizeof(reason2) - 1);
  884.     MakeStringSQLSafe(admin_name, admin_name2, sizeof(admin_name2) - 1);
  885.    
  886.     static query[1024];
  887.     formatex(query, sizeof(query) - 1,\
  888.         "INSERT INTO `%s` (`id`, `%s`, `%s`, `%s`, `%s`, `%s`, `%s`, `%s`) VALUES ('', '%s', '%s', '%i', '%s', '%s', '%s', '%s');",\
  889.         TABLE_NAME, KEY_NAME, KEY_STEAMID, KEY_BANLENGTH, KEY_UNBANTIME, KEY_REASON, KEY_ADMIN_NAME, KEY_ADMIN_STEAMID,\
  890.         target_name2, target_steamid, length, unban_time, reason2, admin_name2, admin_steamid
  891.         );
  892.    
  893.     SQL_ThreadQuery(g_SqlTuple, "QueryAddBan", query);
  894.    
  895.     #if MAX_BANS <= 0
  896.     static data[BannedData];
  897.     copy(data[bd_name], sizeof(data[bd_name]) - 1, target_name);
  898.     copy(data[bd_steamid], sizeof(data[bd_steamid]) - 1, target_steamid);
  899.     data[bd_banlength] = length;
  900.     copy(data[bd_unbantime], sizeof(data[bd_unbantime]) - 1, unban_time);
  901.     copy(data[bd_reason], sizeof(data[bd_reason]) - 1, reason);
  902.     copy(data[bd_admin_name], sizeof(data[bd_admin_name]) - 1, admin_name);
  903.     copy(data[bd_admin_steamid], sizeof(data[bd_admin_steamid]) - 1, admin_steamid);
  904.    
  905.     TrieSetCell(g_trie, target_steamid, g_total_bans);
  906.     ArrayPushArray(g_array, data);
  907.     #else
  908.     copy(g_names[g_total_bans], sizeof(g_names[]) - 1, target_name);
  909.     copy(g_steamids[g_total_bans], sizeof(g_steamids[]) - 1, target_steamid);
  910.     g_banlengths[g_total_bans] = length;
  911.     copy(g_unbantimes[g_total_bans], sizeof(g_unbantimes[]) - 1, unban_time);
  912.     copy(g_reasons[g_total_bans], sizeof(g_reasons[]) - 1, reason);
  913.     copy(g_admin_names[g_total_bans], sizeof(g_admin_names[]) - 1, admin_name);
  914.     copy(g_admin_steamids[g_total_bans], sizeof(g_admin_steamids[]) - 1, admin_steamid);
  915.     #endif
  916.    
  917.     g_total_bans++;
  918.    
  919.     #if MAX_BANS > 0
  920.     if( g_total_bans == MAX_BANS )
  921.     {
  922.         log_amx("Ban list is full! (%i)", g_total_bans);
  923.     }
  924.     #endif
  925. }
  926. public QueryAddBan(failstate, Handle:query, error[], errcode, data[], datasize, Float:queuetime)
  927. {
  928.     if( failstate == TQUERY_CONNECT_FAILED )
  929.     {
  930.         set_fail_state("Could not connect to database.");
  931.     }
  932.     else if( failstate == TQUERY_QUERY_FAILED )
  933.     {
  934.         set_fail_state("Query failed.");
  935.     }
  936.     else if( errcode )
  937.     {
  938.         log_amx("Error on query: %s", error);
  939.     }
  940.     else
  941.     {
  942.         // Yay, ban was added! We can all rejoice!
  943.     }
  944. }
  945.  
  946. public QueryDeleteBan(failstate, Handle:query, error[], errcode, data[], datasize, Float:queuetime)
  947. {
  948.     if( failstate == TQUERY_CONNECT_FAILED )
  949.     {
  950.         set_fail_state("Could not connect to database.");
  951.     }
  952.     else if( failstate == TQUERY_QUERY_FAILED )
  953.     {
  954.         set_fail_state("Query failed.");
  955.     }
  956.     else if( errcode )
  957.     {
  958.         log_amx("Error on query: %s", error);
  959.     }
  960.     else
  961.     {
  962.         // Yay, ban was deleted! We can all rejoice!
  963.     }
  964. }
  965.  
  966. public QueryLoadBans(failstate, Handle:query, error[], errcode, data[], datasize, Float:queuetime)
  967. {
  968.     if( failstate == TQUERY_CONNECT_FAILED )
  969.     {
  970.         set_fail_state("Could not connect to database.");
  971.     }
  972.     else if( failstate == TQUERY_QUERY_FAILED )
  973.     {
  974.         set_fail_state("Query failed.");
  975.     }
  976.     else if( errcode )
  977.     {
  978.         log_amx("Error on query: %s", error);
  979.     }
  980.     else
  981.     {
  982.         if( SQL_NumResults(query) )
  983.         {
  984.             #if MAX_BANS <= 0
  985.             static data[BannedData];
  986.             while( SQL_MoreResults(query) )
  987.             #else
  988.             while( SQL_MoreResults(query) && g_total_bans < MAX_BANS )
  989.             #endif
  990.             {
  991.                 #if MAX_BANS <= 0
  992.                 SQL_ReadResult(query, 0, data[bd_name], sizeof(data[bd_name]) - 1);
  993.                 SQL_ReadResult(query, 1, data[bd_steamid], sizeof(data[bd_steamid]) - 1);
  994.                 data[bd_banlength] = SQL_ReadResult(query, 2);
  995.                 SQL_ReadResult(query, 3, data[bd_unbantime], sizeof(data[bd_unbantime]) - 1);
  996.                 SQL_ReadResult(query, 4, data[bd_reason], sizeof(data[bd_reason]) - 1);
  997.                 SQL_ReadResult(query, 5, data[bd_admin_name], sizeof(data[bd_admin_name]) - 1);
  998.                 SQL_ReadResult(query, 6, data[bd_admin_steamid], sizeof(data[bd_admin_steamid]) - 1);
  999.                
  1000.                 ArrayPushArray(g_array, data);
  1001.                 TrieSetCell(g_trie, data[bd_steamid], g_total_bans);
  1002.                 #else
  1003.                 SQL_ReadResult(query, 0, g_names[g_total_bans], sizeof(g_names[]) - 1);
  1004.                 SQL_ReadResult(query, 1, g_steamids[g_total_bans], sizeof(g_steamids[]) - 1);
  1005.                 g_banlengths[g_total_bans] = SQL_ReadResult(query, 2);
  1006.                 SQL_ReadResult(query, 3, g_unbantimes[g_total_bans], sizeof(g_unbantimes[]) - 1);
  1007.                 SQL_ReadResult(query, 4, g_reasons[g_total_bans], sizeof(g_reasons[]) - 1);
  1008.                 SQL_ReadResult(query, 5, g_admin_names[g_total_bans], sizeof(g_admin_names[]) - 1);
  1009.                 SQL_ReadResult(query, 6, g_admin_steamids[g_total_bans], sizeof(g_admin_steamids[]) - 1);
  1010.                 #endif
  1011.                
  1012.                 g_total_bans++;
  1013.                
  1014.                 SQL_NextRow(query);
  1015.             }
  1016.         }
  1017.        
  1018.         set_task(RELOAD_BANS_INTERVAL, "LoadBans");
  1019.        
  1020.         g_loading_bans = false;
  1021.     }
  1022. }
  1023.  
  1024. #if MAX_BANS > 0
  1025. RemoveBan(remove)
  1026. {
  1027.     static query[128];
  1028.     formatex(query, sizeof(query) - 1,\
  1029.         "DELETE FROM `%s` WHERE `%s` = '%s';",\
  1030.         TABLE_NAME, KEY_STEAMID, g_steamids[remove]
  1031.         );
  1032.    
  1033.     SQL_ThreadQuery(g_SqlTuple, "QueryDeleteBan", query);
  1034.    
  1035.     for( new i = remove; i < g_total_bans; i++ )
  1036.     {
  1037.         if( (i + 1) == g_total_bans )
  1038.         {
  1039.             copy(g_names[i], sizeof(g_names[]) - 1, "");
  1040.             copy(g_steamids[i], sizeof(g_steamids[]) - 1, "");
  1041.             g_banlengths[i] = 0;
  1042.             copy(g_unbantimes[i], sizeof(g_unbantimes[]) - 1, "");
  1043.             copy(g_reasons[i], sizeof(g_reasons[]) - 1, "");
  1044.             copy(g_admin_names[i], sizeof(g_admin_names[]) - 1, "");
  1045.             copy(g_admin_steamids[i], sizeof(g_admin_steamids[]) - 1, "");
  1046.         }
  1047.         else
  1048.         {
  1049.             copy(g_names[i], sizeof(g_names[]) - 1, g_names[i + 1]);
  1050.             copy(g_steamids[i], sizeof(g_steamids[]) - 1, g_steamids[i + 1]);
  1051.             g_banlengths[i] = g_banlengths[i + 1];
  1052.             copy(g_unbantimes[i], sizeof(g_unbantimes[]) - 1, g_unbantimes[i + 1]);
  1053.             copy(g_reasons[i], sizeof(g_reasons[]) - 1, g_reasons[i + 1]);
  1054.             copy(g_admin_names[i], sizeof(g_admin_names[]) - 1, g_admin_names[i + 1]);
  1055.             copy(g_admin_steamids[i], sizeof(g_admin_steamids[]) - 1, g_admin_steamids[i + 1]);
  1056.         }
  1057.     }
  1058.    
  1059.     g_total_bans--;
  1060. }
  1061. #else
  1062. RemoveBan(pos, const authid[])
  1063. {
  1064.     TrieDeleteKey(g_trie, authid);
  1065.     ArrayDeleteItem(g_array, pos);
  1066.    
  1067.     g_total_bans--;
  1068.    
  1069.     static query[128];
  1070.     formatex(query, sizeof(query) - 1,\
  1071.         "DELETE FROM `%s` WHERE `%s` = '%s';",\
  1072.         TABLE_NAME, KEY_STEAMID, authid
  1073.         );
  1074.    
  1075.     SQL_ThreadQuery(g_SqlTuple, "QueryDeleteBan", query);
  1076.    
  1077.     new data[BannedData];
  1078.     for( new i = 0; i < g_total_bans; i++ )
  1079.     {
  1080.         ArrayGetArray(g_array, i, data);
  1081.         TrieSetCell(g_trie, data[bd_steamid], i);
  1082.     }
  1083. }
  1084. #endif
  1085.  
  1086. #if defined KEEP_DEFAULT_BANS
  1087. LoadOldBans(filename[])
  1088. {
  1089.     if( file_exists(filename) )
  1090.     {
  1091.         new f = fopen(filename, "rt");
  1092.        
  1093.         static data[96];
  1094.         static command[10], minutes[10], steamid[35], length, unban_time[32];
  1095.        
  1096.         while( !feof(f) )
  1097.         {
  1098.             fgets(f, data, sizeof(data) - 1);
  1099.             if( !data[0] ) continue;
  1100.            
  1101.             parse(data, command, sizeof(command) - 1, minutes, sizeof(minutes) - 1, steamid, sizeof(steamid) - 1);
  1102.             if( filename[0] == 'b' && !equali(command, "banid") || filename[0] == 'l' && !equali(command, "addip") ) continue;
  1103.            
  1104.             length = str_to_num(minutes);
  1105.             GenerateUnbanTime(length, unban_time, sizeof(unban_time) - 1);
  1106.            
  1107.             AddBan("", steamid, "", length, unban_time, "", "");
  1108.         }
  1109.        
  1110.         fclose(f);
  1111.        
  1112.         static filename2[32];
  1113.        
  1114.         // copy current
  1115.         copy(filename2, sizeof(filename2) - 1, filename);
  1116.        
  1117.         // cut off at the "."
  1118.         // banned.cfg = banned
  1119.         // listip.cfg = listip
  1120.         filename2[containi(filename2, ".")] = 0;
  1121.        
  1122.         // add 2.cfg
  1123.         // banned = banned2.cfg
  1124.         // listip = listip2.cfg
  1125.         add(filename2, sizeof(filename2) - 1, "2.cfg");
  1126.        
  1127.         // rename file so that it isnt loaded again
  1128.         while( !rename_file(filename, filename2, 1) ) { }
  1129.     }
  1130. }
  1131. #endif
  1132.  
  1133. public LoadBans()
  1134. {
  1135.     if( g_total_bans )
  1136.     {
  1137.         #if MAX_BANS <= 0
  1138.         TrieClear(g_trie);
  1139.         ArrayClear(g_array);
  1140.         #endif
  1141.        
  1142.         g_total_bans = 0;
  1143.     }
  1144.    
  1145.     static query[128];
  1146.     formatex(query, sizeof(query) - 1,\
  1147.         "SELECT * FROM `%s`;",\
  1148.         TABLE_NAME
  1149.         );
  1150.    
  1151.     SQL_ThreadQuery(g_SqlTuple, "QueryLoadBans", query);
  1152.    
  1153.     g_loading_bans = true;
  1154.    
  1155.     // load these after, so when they are added to the file with AddBan(), they aren't loaded again from above.
  1156.    
  1157.     #if defined KEEP_DEFAULT_BANS
  1158.     LoadOldBans("banned.cfg");
  1159.     LoadOldBans("listip.cfg");
  1160.     #endif
  1161. }
  1162.  
  1163. MakeStringSQLSafe(const input[], output[], len)
  1164. {
  1165.     copy(output, len, input);
  1166.     replace_all(output, len, "'", "*");
  1167.     replace_all(output, len, "^"", "*");
  1168.     replace_all(output, len, "`", "*");
  1169. }
  1170.  
  1171. GetBanTime(const bantime, length[], len)
  1172. {
  1173.     new minutes = bantime;
  1174.     new hours = 0;
  1175.     new days = 0;
  1176.    
  1177.     while( minutes >= 60 )
  1178.     {
  1179.         minutes -= 60;
  1180.         hours++;
  1181.     }
  1182.    
  1183.     while( hours >= 24 )
  1184.     {
  1185.         hours -= 24;
  1186.         days++;
  1187.     }
  1188.    
  1189.     new bool:add_before;
  1190.     if( minutes )
  1191.     {
  1192.         formatex(length, len, "%i perc", minutes);
  1193.        
  1194.         add_before = true;
  1195.     }
  1196.     if( hours )
  1197.     {
  1198.         if( add_before )
  1199.         {
  1200.             format(length, len, "%i óra, %s", hours, length);
  1201.         }
  1202.         else
  1203.         {
  1204.             formatex(length, len, "%i óra", hours);
  1205.            
  1206.             add_before = true;
  1207.         }
  1208.     }
  1209.     if( days )
  1210.     {
  1211.         if( add_before )
  1212.         {
  1213.             format(length, len, "%i nap, %s", days, length);
  1214.         }
  1215.         else
  1216.         {
  1217.             formatex(length, len, "%i nap", days);
  1218.            
  1219.             add_before = true;
  1220.         }
  1221.     }
  1222.     if( !add_before )
  1223.     {
  1224.         // minutes, hours, and days = 0
  1225.         // assume permanent ban
  1226.         copy(length, len, "Orokos Ban");
  1227.     }
  1228. }
  1229.  
  1230. GenerateUnbanTime(const bantime, unban_time[], len)
  1231. {
  1232.     static _hours[5], _minutes[5], _seconds[5], _month[5], _day[5], _year[7];
  1233.     format_time(_hours, sizeof(_hours) - 1, "%H");
  1234.     format_time(_minutes, sizeof(_minutes) - 1, "%M");
  1235.     format_time(_seconds, sizeof(_seconds) - 1, "%S");
  1236.     format_time(_month, sizeof(_month) - 1, "%m");
  1237.     format_time(_day, sizeof(_day) - 1, "%d");
  1238.     format_time(_year, sizeof(_year) - 1, "%Y");
  1239.    
  1240.     new hours = str_to_num(_hours);
  1241.     new minutes = str_to_num(_minutes);
  1242.     new seconds = str_to_num(_seconds);
  1243.     new month = str_to_num(_month);
  1244.     new day = str_to_num(_day);
  1245.     new year = str_to_num(_year);
  1246.    
  1247.     minutes += bantime;
  1248.    
  1249.     while( minutes >= 60 )
  1250.     {
  1251.         minutes -= 60;
  1252.         hours++;
  1253.     }
  1254.    
  1255.     while( hours >= 24 )
  1256.     {
  1257.         hours -= 24;
  1258.         day++;
  1259.     }
  1260.    
  1261.     new max_days = GetDaysInMonth(month, year);
  1262.     while( day > max_days )
  1263.     {
  1264.         day -= max_days;
  1265.         month++;
  1266.     }
  1267.    
  1268.     while( month > 12 )
  1269.     {
  1270.         month -= 12;
  1271.         year++;
  1272.     }
  1273.    
  1274.     formatex(unban_time, len, "%i:%02i:%02i %i/%i/%i", hours, minutes, seconds, month, day, year);
  1275. }
  1276.  
  1277. GetDaysInMonth(month, year=0)
  1278. {
  1279.     switch( month )
  1280.     {
  1281.         case 1:     return 31; // january
  1282.         case 2:     return ((year % 4) == 0) ? 29 : 28; // february
  1283.         case 3:     return 31; // march
  1284.         case 4:     return 30; // april
  1285.         case 5:     return 31; // may
  1286.         case 6:     return 30; // june
  1287.         case 7:     return 31; // july
  1288.         case 8:     return 31; // august
  1289.         case 9:     return 30; // september
  1290.         case 10:    return 31; // october
  1291.         case 11:    return 30; // november
  1292.         case 12:    return 31; // december
  1293.     }
  1294.    
  1295.     return 30;
  1296. }
  1297.  
  1298. GetTargetFlags(client)
  1299. {
  1300.     static const flags_no_immunity = (CMDTARGET_ALLOW_SELF|CMDTARGET_NO_BOTS);
  1301.     static const flags_immunity = (CMDTARGET_ALLOW_SELF|CMDTARGET_NO_BOTS|CMDTARGET_OBEY_IMMUNITY);
  1302.    
  1303.     switch( get_pcvar_num(ab_immunity) )
  1304.     {
  1305.         case 1: return flags_immunity;
  1306.         case 2: return access(client, ADMIN_IMMUNITY) ? flags_no_immunity : flags_immunity;
  1307.     }
  1308.    
  1309.     return flags_no_immunity;
  1310. }
  1311.  
  1312. GetMaxBanTime(client)
  1313. {
  1314.     if( !g_total_maxban_times ) return 0;
  1315.    
  1316.     new flags = get_user_flags(client);
  1317.    
  1318.     for( new i = 0; i < g_total_maxban_times; i++ )
  1319.     {
  1320.         #if !defined MAX_BANLIMITS
  1321.         if( flags & ArrayGetCell(g_maxban_flags, i) )
  1322.         {
  1323.             return ArrayGetCell(g_maxban_times, i);
  1324.         }
  1325.         #else
  1326.         if( flags & g_maxban_flags[i] )
  1327.         {
  1328.             return g_maxban_times[i];
  1329.         }
  1330.         #endif
  1331.     }
  1332.    
  1333.     return 0;
  1334. }
  1335.  
  1336. PrintBanInformation(client, const target_name[], const target_authid[], const reason[], const length, const unban_time[], const admin_name[], const admin_authid[], bool:show_admin, bool:show_website)
  1337. {
  1338.     static website[64], ban_length[64];
  1339.     if( client == 0 )
  1340.     {
  1341.         server_print("************************************************");
  1342.         server_print("%L", client, "AB_BAN_INFORMATION");
  1343.         server_print("%L: %s", client, "AB_NAME", target_name);
  1344.         server_print("%L: %s", client, IsValidAuthid(target_authid) ? "AB_STEAMID" : "AB_IP", target_authid);
  1345.         server_print("%L: %s", client, "AB_REASON", reason);
  1346.         if( length > 0 )
  1347.         {
  1348.             GetBanTime(length, ban_length, sizeof(ban_length) - 1);
  1349.             server_print("%L: %s", client, "AB_BAN_LENGTH", ban_length);
  1350.         }
  1351.         server_print("%L: %s", client, "AB_UNBAN_TIME", unban_time);
  1352.         if( show_admin )
  1353.         {
  1354.             server_print("%L: %s", client, "AB_ADMIN_NAME", admin_name);
  1355.             server_print("%L: %s", client, "AB_ADMIN_STEAMID", admin_authid);
  1356.         }
  1357.         if( show_website )
  1358.         {
  1359.             get_pcvar_string(ab_website, website, sizeof(website) - 1);
  1360.             if( website[0] )
  1361.             {
  1362.                 server_print("");
  1363.                 server_print("%L", client, "AB_WEBSITE");
  1364.                 server_print("%s", website);
  1365.             }
  1366.         }
  1367.         server_print("************************************************");
  1368.     }
  1369.     else
  1370.     {
  1371.         client_cmd(client, "echo ^"************************************************^"");
  1372.         client_cmd(client, "echo ^"%L^"", client, "AB_BAN_INFORMATION");
  1373.         client_cmd(client, "echo ^"%L: %s^"", client, "AB_NAME", target_name);
  1374.         client_cmd(client, "echo ^"%L: %s^"", client, IsValidAuthid(target_authid) ? "AB_STEAMID" : "AB_IP", target_authid);
  1375.         client_cmd(client, "echo ^"%L: %s^"", client, "AB_REASON", reason);
  1376.         if( length > 0 )
  1377.         {
  1378.             GetBanTime(length, ban_length, sizeof(ban_length) - 1);
  1379.             client_cmd(client, "echo ^"%L: %s^"", client, "AB_BAN_LENGTH", ban_length);
  1380.         }
  1381.         client_cmd(client, "echo ^"%L: %s^"", client, "AB_UNBAN_TIME", unban_time);
  1382.         if( show_admin )
  1383.         {
  1384.             client_cmd(client, "echo ^"%L: %s^"", client, "AB_ADMIN_NAME", admin_name);
  1385.             client_cmd(client, "echo ^"%L: %s^"", client, "AB_ADMIN_STEAMID", admin_authid);
  1386.         }
  1387.         if( show_website )
  1388.         {
  1389.             get_pcvar_string(ab_website, website, sizeof(website) - 1);
  1390.             if( website[0] )
  1391.             {
  1392.                 client_cmd(client, "echo ^"^"");
  1393.                 client_cmd(client, "echo ^"%L^"", client, "AB_WEBSITE");
  1394.                 client_cmd(client, "echo ^"%s^"", website);
  1395.             }
  1396.         }
  1397.         client_cmd(client, "echo ^"************************************************^"");
  1398.     }
  1399. }
  1400.  
  1401. PrintActivity(const admin_name[], const message_fmt[], any:...)
  1402. {
  1403.     if( !get_playersnum() ) return;
  1404.    
  1405.     new activity = get_pcvar_num(amx_show_activity);
  1406.     if( !(0 <= activity <= 5) )
  1407.     {
  1408.         set_pcvar_num(amx_show_activity, (activity = 2));
  1409.     }
  1410.    
  1411.     static message[192], temp[192];
  1412.     vformat(message, sizeof(message) - 1, message_fmt, 3);
  1413.    
  1414.     for( new client = 1; client <= g_max_clients; client++ )
  1415.     {
  1416.         if( !is_user_connected(client) ) continue;
  1417.        
  1418.         switch( is_user_admin(client) ? g_admin_activity[activity] : g_normal_activity[activity] )
  1419.         {
  1420.             case ACTIVITY_NONE:
  1421.             {
  1422.                
  1423.             }
  1424.             case ACTIVITY_HIDE:
  1425.             {
  1426.                 copy(temp, sizeof(temp) - 1, message);
  1427.                 replace(temp, sizeof(temp) - 1, "$name", "ADMIN");
  1428.                
  1429.                 message_begin(MSG_ONE_UNRELIABLE, g_msgid_SayText, _, client);
  1430.                 write_byte(client);
  1431.                 write_string(temp);
  1432.                 message_end();
  1433.             }
  1434.             case ACTIVITY_SHOW:
  1435.             {
  1436.                 copy(temp, sizeof(temp) - 1, message);
  1437.                 replace(temp, sizeof(temp) - 1, "$name", admin_name);
  1438.                
  1439.                 message_begin(MSG_ONE_UNRELIABLE, g_msgid_SayText, _, client);
  1440.                 write_byte(client);
  1441.                 write_string(temp);
  1442.                 message_end();
  1443.             }
  1444.         }
  1445.     }
  1446. }
  1447.  
  1448. Print(const message_fmt[], any:...)
  1449. {
  1450.     if( !get_playersnum() ) return;
  1451.    
  1452.     static message[192];
  1453.     vformat(message, sizeof(message) - 1, message_fmt, 2);
  1454.    
  1455.     for( new client = 1; client <= g_max_clients; client++ )
  1456.     {
  1457.         if( !is_user_connected(client) ) continue;
  1458.        
  1459.         message_begin(MSG_ONE_UNRELIABLE, g_msgid_SayText, _, client);
  1460.         write_byte(client);
  1461.         write_string(message);
  1462.         message_end();
  1463.     }
  1464. }
  1465.  
  1466. Log(const message_fmt[], any:...)
  1467. {
  1468.     static message[256];
  1469.     vformat(message, sizeof(message) - 1, message_fmt, 2);
  1470.    
  1471.     static filename[96];
  1472.     #if defined HISTORY_ONE_FILE
  1473.     if( !filename[0] )
  1474.     {
  1475.         get_basedir(filename, sizeof(filename) - 1);
  1476.         add(filename, sizeof(filename) - 1, "/logs/ban_history.log");
  1477.     }
  1478.     #else
  1479.     static dir[64];
  1480.     if( !dir[0] )
  1481.     {
  1482.         get_basedir(dir, sizeof(dir) - 1);
  1483.         add(dir, sizeof(dir) - 1, "/logs");
  1484.     }
  1485.    
  1486.     format_time(filename, sizeof(filename) - 1, "%m%d%Y");
  1487.     format(filename, sizeof(filename) - 1, "%s/BAN_HISTORY_%s.log", dir, filename);
  1488.     #endif
  1489.    
  1490.     log_amx("%s", message);
  1491.     log_to_file(filename, "%s", message);
  1492. }

Ez a plugin csak mysql adatbázisba képes menteni!

Kép:
Kép

Utószó:
Mikor ebbe belefogtam még csak kezdtem tanulni a php-t és mysql-t. Ha valami hülyeség van benne ne rágjátok le a fejem. :lol:
Az oldal soha nem lett használatba véve, így lehetnek benne különböző hibák.
Mivel ezeket a fájlokat a gépemről töröltem volna, ezért gondoltam, hogy előtte megosztom veletek.

Ha valami kérdésetek lenne akkor nyugodtan kérdezzetek. :D



Köszönöm! Lehet ez lessz a banlistám :D
ui: Többen is tölthetnének fel ilyen banlistákat, nagyon hasznosak mostanság!

_________________
„Nem azért felejtünk el játszani, mert megöregszünk, hanem attól öregszünk meg, hogy elfelejtünk játszani.”

-MAXHACKED Website-
-HERViD Website-
► Spoiler mutatása


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Advanced Ban web felület
HozzászólásElküldve: 2016.04.24. 16:23 
Offline
Fanatikus
Avatar

Csatlakozott: 2014.06.08. 10:25
Hozzászólások: 164
Megköszönt másnak: 38 alkalommal
Megköszönték neki: 19 alkalommal
Valamiért nem megy :/ Esetleg a pluginhoz tartozó plmenu, adminvote.amxx -et is csatolni tudnád, kérlek?

_________________
Kép

87.229.77.40:27020


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Advanced Ban web felület
HozzászólásElküldve: 2016.04.24. 19:06 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.01.15. 19:04
Hozzászólások: 407
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 176 alkalommal
Pluginnal nincs hiba.
Webes telepítőnél az install.php fájlban kimaradt az advanced_bans tábla létrehozásánál az id mező.

Ebben javítva van a hiba.
Csatolmány:
web.zip [211.67 KiB]
Letöltve 299 alkalommal.


Töröld ki az advanced_bans táblát és kézileg a phpmyadminban az adatbázis kiválasztása után SQL fül alá írd be ezt a parancssort.:
  1. CREATE TABLE IF NOT EXISTS `advanced_bans` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(32) NOT NULL,`steamid` VARCHAR(35) NOT NULL,`banlength` INT(10) NOT NULL,`unbantime` VARCHAR(32) NOT NULL,`reason` VARCHAR(128) NOT NULL,`admin_name` VARCHAR(32) NOT NULL,`admin_steamid` VARCHAR(35) NOT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Advanced Ban web felület
HozzászólásElküldve: 2016.04.28. 18:59 
Offline
GFX-Designer
Avatar

Csatlakozott: 2015.03.12. 15:06
Hozzászólások: 624
Megköszönt másnak: 199 alkalommal
Megköszönték neki: 78 alkalommal
Sziasztok!
Ez mi lenne?
Kép

Be van írva minden, ami a leírásban követelmény.

_________________
„Nem azért felejtünk el játszani, mert megöregszünk, hanem attól öregszünk meg, hogy elfelejtünk játszani.”

-MAXHACKED Website-
-HERViD Website-
► Spoiler mutatása


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Advanced Ban web felület
HozzászólásElküldve: 2016.04.28. 23:32 
Offline
Lelkes
Avatar

Csatlakozott: 2012.04.03. 21:07
Hozzászólások: 18
Megköszönték neki: 1 alkalommal
*GrafitY* írta:
Sziasztok!
Ez mi lenne?
Kép

Be van írva minden, ami a leírásban követelmény.


Ne MySQL -t használj, hanem PDO -t vagy MySQLi -t. :)

_________________
„Ne sikeres ember próbálj lenni, hanem értékes.” - Albert Einstein


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Advanced Ban web felület
HozzászólásElküldve: 2016.04.30. 17:35 
Offline
GFX-Designer
Avatar

Csatlakozott: 2015.03.12. 15:06
Hozzászólások: 624
Megköszönt másnak: 199 alkalommal
Megköszönték neki: 78 alkalommal
player írta:
Ne MySQL -t használj, hanem PDO -t vagy MySQLi -t. :)


demon írta:
Ez a plugin csak mysql adatbázisba képes menteni!

_________________
„Nem azért felejtünk el játszani, mert megöregszünk, hanem attól öregszünk meg, hogy elfelejtünk játszani.”

-MAXHACKED Website-
-HERViD Website-
► Spoiler mutatása


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Advanced Ban web felület
HozzászólásElküldve: 2016.04.30. 20:58 
Offline
Lelkes
Avatar

Csatlakozott: 2012.04.03. 21:07
Hozzászólások: 18
Megköszönték neki: 1 alkalommal
*GrafitY* írta:
player írta:
Ne MySQL -t használj, hanem PDO -t vagy MySQLi -t. :)


demon írta:
Ez a plugin csak mysql adatbázisba képes menteni!


Ne nevettess már :D Át kell írni, hogy MySQLi be mentsen... A mysql már lejárt lemez. Nekem PDO ba menti. Ezt írtam át én is.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Advanced Ban web felület
HozzászólásElküldve: 2016.04.30. 21:04 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Nagyon nagy segítség vagy az embereknek kedves [profil]player[/profil]

_________________
GitHub - mforce


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Advanced Ban web felület
HozzászólásElküldve: 2016.05.13. 09:48 
Offline
GFX-Designer
Avatar

Csatlakozott: 2015.03.12. 15:06
Hozzászólások: 624
Megköszönt másnak: 199 alkalommal
Megköszönték neki: 78 alkalommal
Valaki nem tudná ezt kék árnyalatu témává alakítani zöld helyett?

_________________
„Nem azért felejtünk el játszani, mert megöregszünk, hanem attól öregszünk meg, hogy elfelejtünk játszani.”

-MAXHACKED Website-
-HERViD Website-
► Spoiler mutatása


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 15 hozzászólás ]  Oldal 1 2 Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 0 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole