hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.05. 11:26



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: nincs regisztrált felhasználó 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  [ 1 hozzászólás ] 
Szerző Üzenet
HozzászólásElküldve: 2016.01.17. 22:26 
Offline
Senior Tag
Avatar

Csatlakozott: 2015.04.10. 23:40
Hozzászólások: 283
Megköszönt másnak: 6 alkalommal
Megköszönték neki: 12 alkalommal
sziasztok.

valaki betudná nekem állítani, hogy akik nem regisztráltak a szerverre azoknak is sötét legyen a képernyő??

vagy hogy addig ne lehessen használni a menüt (zombi mod) amíg nem regisztráltak.
tehát csak akkor tudom használni a menüt ha regisztráltam.

  1. #include <amxmodx>
  2. #include <celltrie>
  3. #include <cstrike>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. #include <sqlx>
  7.  
  8. #define VERSION "8.0"
  9. #define TASK_MESS 1000
  10. #define TASK_KICK 2000
  11. #define TASK_MENU 3000
  12. #define TASK_TIMER 4000
  13. #define TASK_ADVERT 5000
  14. #define TASK_AJC 6000
  15. #define MENU_TASK_TIME 0.5
  16. #define AJC_TASK_TIME 0.1
  17. #define AJC_ADMIN_FLAG ADMIN_IMMUNITY
  18. #define SALT "8c4f4370c53e0c1e1ae9acd577dddbed"
  19.  
  20. //Start of CVAR pointers
  21. new g_on;
  22. new g_save;
  23. new g_host;
  24. new g_user;
  25. new g_pass;
  26. new g_db;
  27. new g_setinfo_pr;
  28. new g_regtime;
  29. new g_logtime;
  30. new g_pass_length;
  31. new g_attempts;
  32. new g_chp_time;
  33. new g_reg_log;
  34. new g_chp_log;
  35. new g_aulog_log;
  36. new g_blind;
  37. new g_comm;
  38. new g_logout;
  39. new g_count
  40. new g_advert;
  41. new g_advert_int;
  42. new g_ajc_team;
  43. new g_ajc_admin;
  44. new g_ajc_class[2];
  45. new g_ajc_change;
  46. new g_member;
  47. new g_time;
  48. new g_time_pass;
  49. //End of CVAR pointers
  50.  
  51. //Start of Arrays
  52. new configs_dir[64]
  53. new cfg_file[256];
  54. new reg_file[256];
  55. new commands_file[256];
  56. new count;
  57. new sz_time[9];
  58. new line = 0;
  59. new text[512];
  60. new params[2];
  61. new check_name[32];
  62. new check_pass[34];
  63. new check_status[11];
  64. new query[512];
  65. new Handle:g_sqltuple;
  66. new password[33][34];
  67. new typedpass[32];
  68. new new_pass[33][32];
  69. new hash[34];
  70. new pass_prefix[32];
  71. new attempts[33];
  72. new times[33];
  73. new g_player_time[33];
  74. new g_client_data[33][35];
  75. new value;
  76. new menu[512];
  77. new keys;
  78. new length;
  79. new g_maxplayers;
  80. new g_saytxt
  81. new g_screenfade
  82. new g_sync_hud
  83. //End fo Arrays
  84.  
  85. //Start of Booleans
  86. new bool:error = false
  87. new bool:data_ready = false;
  88. new bool:is_logged[33];
  89. new bool:is_registered[33];
  90. new bool:is_autolog[33];
  91. new bool:cant_change_pass[33];
  92. new bool:changing_name[33];
  93. //End of Booleans
  94.  
  95. //Start of Trie handles
  96. new Trie:g_commands;
  97. new Trie:g_login_times;
  98. new Trie:g_cant_login_time;
  99. new Trie:g_pass_change_times;
  100. new Trie:g_cant_change_pass_time;
  101. //End of Trie handles
  102.  
  103. //Start of Constants
  104. new const separator_1[] = "==============================================================================="
  105. new const separator_2[] = "-------------------------------------------------------------------------------"
  106. new const prefix[] = "[rezidencia Reg.]";
  107. new const log_file[] = "register_system_log.txt";
  108. new const JOIN_TEAM_MENU_FIRST[] = "#Team_Select";
  109. new const JOIN_TEAM_MENU_FIRST_SPEC[] = "#Team_Select_Spect";
  110. new const JOIN_TEAM_MENU_INGAME[] = "#IG_Team_Select";
  111. new const JOIN_TEAM_MENU_INGAME_SPEC[] = "#IG_Team_Select_Spect";
  112. new const JOIN_TEAM_VGUI_MENU = 2;
  113.  
  114. //Start of CVARs
  115. new const g_cvars[29][] =
  116. {
  117.     "rs_on",
  118.     "rs_save_type",
  119.     "rs_host",
  120.     "rs_user",
  121.     "rs_pass",
  122.     "rs_db",
  123.     "rs_password_prefix",
  124.     "rs_register_time",
  125.     "rs_login_time",
  126.     "rs_password_len",
  127.     "rs_attempts",
  128.     "rs_chngpass_times",
  129.     "rs_register_log",
  130.     "rs_chngpass_log",
  131.     "rs_autologin_log",
  132.     "rs_blind",
  133.     "rs_commands",
  134.     "rs_logout",
  135.     "rs_count",
  136.     "rs_advert",
  137.     "rs_advert_int",
  138.     "rs_ajc_team",
  139.     "rs_ajc_class_t",
  140.     "rs_ajc_class_ct",
  141.     "rs_ajc_admin",
  142.     "rs_ajc_change",
  143.     "rs_remember_punish_by",
  144.     "rs_cant_login_time",
  145.     "rs_cant_change_pass_time"
  146. };
  147. //End of CVARs
  148. //End of Constants
  149.  
  150. /*==============================================================================
  151.     Start of Plugin Init
  152. ================================================================================*/
  153. public client_connect(id)
  154.      {
  155.       set_task(1.0,"ShowMenu",id)
  156.      }
  157.      
  158. public plugin_init()
  159. {
  160.     register_plugin("Register System", VERSION, "m0skVi4a ;]")
  161.  
  162.     g_on = register_cvar(g_cvars[0], "1")
  163.     g_save = register_cvar(g_cvars[1], "0")
  164.     g_host = register_cvar(g_cvars[2], "127.0.0.1")
  165.     g_user = register_cvar(g_cvars[3], "root")
  166.     g_pass = register_cvar(g_cvars[4], "123456")
  167.     g_db = register_cvar(g_cvars[5], "registersystem")
  168.     g_setinfo_pr = register_cvar(g_cvars[6], "_rspass")
  169.     g_regtime = register_cvar(g_cvars[7], "0")
  170.     g_logtime = register_cvar(g_cvars[8], "60.0")
  171.     g_pass_length = register_cvar(g_cvars[9], "6")
  172.     g_attempts = register_cvar(g_cvars[10], "3")
  173.     g_chp_time = register_cvar(g_cvars[11], "3")
  174.     g_reg_log = register_cvar(g_cvars[12], "1")
  175.     g_chp_log = register_cvar(g_cvars[13], "1")
  176.     g_aulog_log = register_cvar(g_cvars[14], "1")
  177.     g_blind = register_cvar(g_cvars[15], "1")
  178.     g_comm = register_cvar(g_cvars[16], "1")
  179.     g_logout = register_cvar(g_cvars[17], "0")
  180.     g_count = register_cvar(g_cvars[18], "1")
  181.     g_advert = register_cvar(g_cvars[19], "1")
  182.     g_advert_int = register_cvar(g_cvars[20], "60")
  183.     g_ajc_team = register_cvar(g_cvars[21], "0")
  184.     g_ajc_class[0] = register_cvar(g_cvars[22], "5")
  185.     g_ajc_class[1] = register_cvar(g_cvars[23], "5")
  186.     g_ajc_admin = register_cvar(g_cvars[24], "1")
  187.     g_ajc_change = register_cvar(g_cvars[25], "0")
  188.     g_member = register_cvar(g_cvars[26], "0")
  189.     g_time = register_cvar(g_cvars[27], "300")
  190.     g_time_pass = register_cvar(g_cvars[28], "300")
  191.  
  192.     get_localinfo("amxx_configsdir", configs_dir, charsmax(configs_dir))
  193.     formatex(cfg_file, charsmax(cfg_file), "%s/registersystem.cfg", configs_dir)
  194.     formatex(reg_file, charsmax(reg_file), "%s/regusers.ini", configs_dir)
  195.     formatex(commands_file, charsmax(commands_file), "%s/registersystem_commands.ini", configs_dir)
  196.  
  197.     register_message(get_user_msgid("ShowMenu"), "TextMenu")
  198.     register_message(get_user_msgid("VGUIMenu"), "VGUIMenu")
  199.     register_menucmd(register_menuid("Register System Main Menu"), 1023, "HandlerMainMenu")
  200.     register_menucmd(register_menuid("Password Menu"), 1023, "HandlerConfirmPasswordMenu")
  201.     register_clcmd("jointeam", "HookTeamCommands")
  202.     register_clcmd("chooseteam", "HookTeamCommands")
  203.     register_clcmd("LOGIN_PASS", "Login")
  204.     register_clcmd("REGISTER_PASS", "Register")
  205.     register_clcmd("CHANGE_PASS_NEW", "ChangePasswordNew")
  206.     register_clcmd("CHANGE_PASS_OLD", "ChangePasswordOld")
  207.     register_clcmd("AUTO_LOGIN_PASS", "AutoLoginPassword")
  208.     RegisterHam(Ham_Spawn, "player", "HookPlayerSpawn", 1)
  209.     register_forward(FM_PlayerPreThink, "PlayerPreThink")
  210.     register_forward(FM_ClientUserInfoChanged, "ClientInfoChanged")
  211.  
  212.     register_dictionary("register_system.txt")
  213.     g_maxplayers = get_maxplayers()
  214.     g_saytxt = get_user_msgid("SayText")
  215.     g_screenfade = get_user_msgid("ScreenFade")
  216.     g_sync_hud = CreateHudSyncObj()
  217.     g_commands = TrieCreate()
  218.     g_login_times = TrieCreate()
  219.     g_cant_login_time = TrieCreate()
  220.     g_pass_change_times = TrieCreate()
  221.     g_cant_change_pass_time = TrieCreate()
  222. }
  223. /*==============================================================================
  224.     End of Plugin Init
  225. ================================================================================*/
  226.  
  227. /*==============================================================================
  228.     Start of Plugin Natives
  229. ================================================================================*/
  230. public plugin_natives()
  231. {
  232.     register_library("register_system")
  233.     register_native("is_registered", "_is_registered")
  234.     register_native("is_logged", "_is_logged")
  235.     register_native("is_autologged", "_is_autologged")
  236.     register_native("get_cant_login_time", "_get_cant_login_time")
  237.     register_native("get_cant_change_pass_time", "_get_cant_change_pass_time")
  238. }
  239.  
  240. public _is_registered(plugin, parameters)
  241. {
  242.     if(parameters != 1)
  243.         return false
  244.  
  245.     new id = get_param(1)
  246.  
  247.     if(!id)
  248.         return false
  249.  
  250.     if(is_registered[id])
  251.     {
  252.         return true
  253.     }
  254.  
  255.     return false
  256. }
  257.  
  258. public _is_logged(plugin, parameters)
  259. {
  260.     if(parameters != 1)
  261.         return false
  262.  
  263.     new id = get_param(1)
  264.  
  265.     if(!id)
  266.         return false
  267.  
  268.     if(is_logged[id])
  269.     {
  270.         return true
  271.     }
  272.  
  273.     return false
  274. }
  275.  
  276. public _is_autologged(plugin, parameters)
  277. {
  278.     if(parameters != 1)
  279.         return -1
  280.  
  281.     new id = get_param(1)
  282.  
  283.     if(!id)
  284.         return -1
  285.  
  286.     if(is_autolog[id])
  287.     {
  288.         return true
  289.     }
  290.  
  291.     return false
  292. }
  293.  
  294. public _get_cant_login_time(plugin, parameters)
  295. {
  296.     if(parameters != 1)
  297.         return -1
  298.  
  299.     new id = get_param(1)
  300.  
  301.     if(!id)
  302.         return -1
  303.  
  304.     new data[35];
  305.  
  306.     switch(get_pcvar_num(g_member))
  307.     {
  308.         case 0:
  309.         {
  310.             get_user_name(id, data, charsmax(data))
  311.         }
  312.         case 1:
  313.         {
  314.             get_user_ip(id, data, charsmax(data))
  315.         }
  316.         case 2:
  317.         {
  318.             get_user_authid(id, data, charsmax(data))
  319.         }      
  320.         default:
  321.         {
  322.             get_user_name(id, data, charsmax(data))
  323.         }
  324.     }
  325.  
  326.     if(TrieGetCell(g_cant_login_time, data, value))
  327.     {
  328.         new cal_time = get_pcvar_num(g_time) - (time() - value)
  329.         return cal_time
  330.     }
  331.  
  332.     return -1
  333. }
  334.  
  335. public _get_cant_change_pass_time(plugin, parameters)
  336. {
  337.     if(parameters != 1)
  338.         return -1
  339.  
  340.     new id = get_param(1)
  341.  
  342.     if(!id)
  343.         return -1
  344.  
  345.     new data[35];
  346.  
  347.     switch(get_pcvar_num(g_member))
  348.     {
  349.         case 0:
  350.         {
  351.             get_user_name(id, data, charsmax(data))
  352.         }
  353.         case 1:
  354.         {
  355.             get_user_ip(id, data, charsmax(data))
  356.         }
  357.         case 2:
  358.         {
  359.             get_user_authid(id, data, charsmax(data))
  360.         }      
  361.         default:
  362.         {
  363.             get_user_name(id, data, charsmax(data))
  364.         }
  365.     }
  366.  
  367.     if(TrieGetCell(g_cant_change_pass_time, data, value))
  368.     {
  369.         new cal_time = get_pcvar_num(g_time_pass) - (time() - value)
  370.         return cal_time
  371.     }
  372.  
  373.     return -1
  374. }
  375. /*==============================================================================
  376.     End of Plugin Natives
  377. ================================================================================*/
  378.  
  379. /*==============================================================================
  380.     Start of Executing plugin's config and choose the save mode
  381. ================================================================================*/
  382. public plugin_cfg()
  383. {
  384.     if(!get_pcvar_num(g_on))
  385.         return PLUGIN_HANDLED
  386.  
  387.     server_print(" ")
  388.     server_print(separator_1)
  389.     server_print("Title : Register System")
  390.     server_print("Version   : %s", VERSION)
  391.     server_print("Author    : m0skVi4a ;]")
  392.     server_print("Site  : https://forums.alliedmods.net/showthread.php?t=171460"&#41;
  393.     server_print(separator_2)
  394.  
  395.     get_time("%H:%M:%S", sz_time, charsmax(sz_time))
  396.  
  397.     if(!file_exists(cfg_file))
  398.     {
  399.         server_print("[%s] [ERROR] > File registersystem.cfg not found!", sz_time)
  400.     }
  401.     else
  402.     {
  403.         server_print("[%s] > Loading settings from registersystem.cfg", sz_time)
  404.  
  405.         line = 0, length = 0, count = 0;
  406.  
  407.         while(read_file(cfg_file, line++ , text, charsmax(text), length))
  408.         {
  409.             if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
  410.                 continue
  411.  
  412.             new cvar[32], param[32], bool:error_1 = true, bool:error_2 = true
  413.  
  414.             trim(text)
  415.             parse(text, cvar, charsmax(cvar), param, charsmax(param))
  416.  
  417.             for(new i = 0; i <= 28; i++)
  418.             {
  419.                 if(equal(cvar, g_cvars[i]))
  420.                 {
  421.                     error_1 = false
  422.                 }
  423.             }
  424.  
  425.             if(param[0] && !(equali(param, " ")))
  426.             {
  427.                 error_2 = false
  428.             }
  429.  
  430.             if(error_1)
  431.             {
  432.                 server_print("[%s] [ERROR] > Unknown CVAR ^"%s^"", sz_time, cvar)
  433.                 error = true
  434.             }
  435.             else
  436.             {
  437.                 if(error_2)
  438.                 {
  439.                     server_print("[%s] [ERROR] > Bad value for ^"%s^"", sz_time, cvar)
  440.                     error = true
  441.                 }
  442.                 else
  443.                 {
  444.                     server_print("[%s] [OK] > Read cvar ^"%s^" ^"%s^"", sz_time, cvar, param)
  445.                     server_cmd("%s %s", cvar, param)
  446.                     count++
  447.                 }
  448.             }
  449.         }
  450.  
  451.         if(!count)
  452.         {
  453.             server_print("[%s] [ERROR] > There were no CVARs in registersystem.cfg", sz_time)
  454.             error = true
  455.         }
  456.     }
  457.  
  458.     server_print(separator_2)
  459.  
  460.     if(error)
  461.     {
  462.         server_print("[%s] [WARNING] > Reading some data from configuration file failed!", sz_time)
  463.         server_print("> Please check [ERROR] messages above for solving this problem!")
  464.     }
  465.     else
  466.     {
  467.         server_print("[%s] [OK] > All settings loaded successfully!", sz_time)
  468.     }
  469.  
  470.     server_print(separator_1)
  471.     server_print(" ")
  472.  
  473.     set_task(1.0, "LoadData")
  474.    
  475.     return PLUGIN_CONTINUE
  476. }
  477.  
  478. public LoadData()
  479. {
  480.     if(get_pcvar_num(g_save))
  481.     {
  482.         Init_MYSQL()
  483.     }
  484.     else
  485.     {
  486.         if(!file_exists(reg_file))
  487.         {
  488.             write_file(reg_file,";Register System file^n;Modifying may cause the clients to can not Login!^n^n")
  489.             server_print("%s Could not find Register System file -  %s   Creating new...", prefix, reg_file)
  490.         }
  491.  
  492.         data_ready = true
  493.  
  494.         for(new i = 1 ; i <= g_maxplayers ; i++)
  495.         {
  496.             if(!is_user_connecting(i) && !is_user_connected(i))
  497.                 continue
  498.  
  499.             CheckClient(i)
  500.         }
  501.     }
  502.    
  503.     if(get_pcvar_num(g_comm))
  504.     {
  505.         line = 0, length = 0, count = 0, error = false;
  506.         get_time("%H:%M:%S", sz_time, charsmax(sz_time))
  507.  
  508.         server_print(" ")
  509.         server_print(separator_1)
  510.         server_print(prefix)
  511.         server_print(separator_2)
  512.  
  513.         if(!file_exists(commands_file))
  514.         {
  515.             server_print("[%s] [ERROR] > File registersystem_commands.ini not found!", sz_time)
  516.             error = true
  517.         }
  518.         else
  519.         {
  520.             server_print("[%s] > Loading settings from registersystem_commands.ini", sz_time)
  521.  
  522.             line = 0, length = 0, count = 0;
  523.  
  524.             while(read_file(commands_file, line++ , text, charsmax(text), length))
  525.             {
  526.                 if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
  527.                     continue
  528.  
  529.                 trim(text)
  530.                 parse(text, text, charsmax(text))
  531.  
  532.                 TrieSetCell(g_commands, text, 1)
  533.                 count++
  534.             }
  535.  
  536.             if(count)
  537.             {
  538.                 server_print("[%s] [OK] > %d command%s loaded!", sz_time, count, count > 1 ? "s" : "")
  539.             }
  540.             else
  541.             {
  542.                 server_print("[%s] [ERROR] > There were no commands in registersystem_commands.ini", sz_time)
  543.                 error = true
  544.             }
  545.         }
  546.  
  547.         server_print(separator_2)
  548.  
  549.         if(error)
  550.         {
  551.             server_print("[%s] [WARNING] > Reading some data from commands file failed!", sz_time)
  552.             server_print("> Please check [ERROR] messages above for solving this problem!")
  553.         }
  554.         else
  555.         {
  556.             server_print("[%s] [OK] > Commands file loaded successfully!", sz_time)
  557.         }
  558.  
  559.         server_print(separator_1)
  560.         server_print(" ")
  561.     }
  562. }
  563.  
  564. public Init_MYSQL()
  565. {
  566.     new host[64], user[32], pass[32], db[128];
  567.  
  568.     get_pcvar_string(g_host, host, charsmax(host))
  569.     get_pcvar_string(g_user, user, charsmax(user))
  570.     get_pcvar_string(g_pass, pass, charsmax(pass))
  571.     get_pcvar_string(g_db, db, charsmax(db))
  572.  
  573.     g_sqltuple = SQL_MakeDbTuple(host, user, pass, db)
  574.     formatex(query, charsmax(query), "CREATE TABLE IF NOT EXISTS registersystem (Name VARCHAR(32), Password VARCHAR(34), Status VARCHAR(10))")
  575.     SQL_ThreadQuery(g_sqltuple, "QueryCreateTable", query)
  576. }
  577.  
  578. public QueryCreateTable(failstate, Handle:query, error[], errcode, data[], datasize, Float:queuetime)
  579. {
  580.     if(failstate == TQUERY_CONNECT_FAILED)
  581.     {
  582.         set_fail_state("[REGISTER SYSTEM] Could not connect to database!")
  583.     }
  584.     else if(failstate == TQUERY_QUERY_FAILED)
  585.     {
  586.         set_fail_state("[REGISTER SYSTEM] Query failed!")
  587.     }
  588.     else if(errcode)
  589.     {
  590.         server_print("%s Error on query: %s", prefix, error)
  591.     }
  592.     else
  593.     {
  594.         server_print("%s MYSQL connection succesful!", prefix)
  595.  
  596.         data_ready = true
  597.  
  598.         for(new i = 1 ; i <= g_maxplayers ; i++)
  599.         {
  600.             if(!is_user_connecting(i) && !is_user_connected(i))
  601.                 continue
  602.  
  603.             CheckClient(i)
  604.         }
  605.     }  
  606. }
  607. /*==============================================================================
  608.     End of Executing plugin's config and choose the save mode
  609. ================================================================================*/
  610.  
  611. /*==============================================================================
  612.     Start of plugin's end function
  613. ================================================================================*/
  614. public plugin_end()
  615. {
  616.     TrieDestroy(g_commands)
  617.     TrieDestroy(g_login_times)
  618.     TrieDestroy(g_cant_login_time)
  619.     TrieDestroy(g_pass_change_times)
  620.     TrieDestroy(g_cant_change_pass_time)
  621. }
  622. /*==============================================================================
  623.     End of plugin's end function
  624. ================================================================================*/
  625.  
  626. /*==============================================================================
  627.     Start of Client's connect and disconenct functions
  628. ================================================================================*/
  629. public client_authorized(id)
  630. {
  631.     is_logged[id] = false
  632.     is_registered[id] = false
  633.     is_autolog[id] = false
  634.     cant_change_pass[id] = false
  635.     changing_name[id] = false
  636.     attempts[id] = 0
  637.     times[id] = 0
  638.     remove_tasks(id)
  639.  
  640.     switch(get_pcvar_num(g_member))
  641.     {
  642.         case 0:
  643.         {
  644.             get_user_name(id, g_client_data[id], charsmax(g_client_data))
  645.         }
  646.         case 1:
  647.         {
  648.             get_user_ip(id, g_client_data[id], charsmax(g_client_data))
  649.         }
  650.         case 2:
  651.         {
  652.             get_user_authid(id, g_client_data[id], charsmax(g_client_data))
  653.         }      
  654.         default:
  655.         {
  656.             get_user_name(id, g_client_data[id], charsmax(g_client_data))
  657.         }
  658.     }
  659.  
  660.     if(TrieGetCell(g_login_times, g_client_data[id], value))
  661.     {
  662.         attempts[id] = value
  663.  
  664.         if(attempts[id] >= get_pcvar_num(g_attempts))
  665.         {
  666.             params[0] = id
  667.             params[1] = 2
  668.             set_task(1.0, "KickPlayer", id+TASK_KICK, params, sizeof params)
  669.         }
  670.     }
  671.  
  672.     if(TrieGetCell(g_pass_change_times, g_client_data[id], value))
  673.     {
  674.         times[id] = value
  675.  
  676.         if(times[id] >= get_pcvar_num(g_chp_time))
  677.         {
  678.             cant_change_pass[id] = true
  679.         }
  680.     }
  681.    
  682.     if(data_ready)
  683.     {
  684.         CheckClient(id)
  685.     }
  686. }
  687.  
  688. public client_putinserver(id)
  689. {
  690.     if(data_ready)
  691.     {
  692.         ShowMsg(id)
  693.    
  694.         if(get_pcvar_num(g_advert) && get_pcvar_num(g_advert_int))
  695.         {
  696.             set_task(get_pcvar_float(g_advert_int), "ShowAdvert", id+TASK_ADVERT)
  697.         }
  698.     }
  699. }
  700.  
  701. public client_disconnect(id)
  702. {
  703.     is_logged[id] = false
  704.     is_registered[id] = false
  705.     is_autolog[id] = false
  706.     cant_change_pass[id] = false
  707.     changing_name[id] = false
  708.     attempts[id] = 0
  709.     times[id] = 0
  710.     remove_tasks(id)
  711. }
  712. /*==============================================================================
  713.     End of Client's connect and disconenct functions
  714. ================================================================================*/
  715.  
  716. /*==============================================================================
  717.     Start of Check Client functions
  718. ================================================================================*/
  719. public CheckClient(id)
  720. {
  721.     if(!get_pcvar_num(g_on) || is_user_bot(id) || is_user_hltv(id) || !data_ready)
  722.         return PLUGIN_HANDLED
  723.  
  724.     remove_tasks(id)
  725.     is_registered[id] = false
  726.     is_logged[id] = false
  727.     is_autolog[id] = false
  728.  
  729.     new name[32];
  730.     get_user_name(id, name, charsmax(name))
  731.  
  732.     if(get_pcvar_num(g_save))
  733.     {
  734.         new data[1]
  735.         data[0] = id
  736.  
  737.         formatex(query, charsmax(query), "SELECT `Password`, `Status` FROM `registersystem` WHERE Name = ^"%s^";", name)
  738.  
  739.         SQL_ThreadQuery(g_sqltuple, "QuerySelectData", query, data, 1)
  740.     }
  741.     else
  742.     {
  743.         line = 0, length = 0;
  744.  
  745.         while(read_file(reg_file, line++ , text, charsmax(text), length))
  746.         {
  747.             if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
  748.                 continue
  749.  
  750.             parse(text, check_name, charsmax(check_name), check_pass, charsmax(check_pass), check_status, charsmax(check_status))
  751.  
  752.             if(!(equal(check_name, name)))
  753.                 continue
  754.  
  755.             is_registered[id] = true
  756.             password[id] = check_pass
  757.  
  758.             if(equal(check_status, "LOGGED_IN"))
  759.             {
  760.                 is_autolog[id] = true
  761.                 CheckAutoLogin(id)
  762.             }
  763.  
  764.             if(is_user_connected(id))
  765.             {
  766.                 user_silentkill(id)
  767.                 cs_set_user_team(id, CS_TEAM_UNASSIGNED)
  768.                 ShowMsg(id)
  769.                
  770.                 if(get_pcvar_num(g_advert) && get_pcvar_num(g_advert_int))
  771.                 {
  772.                     set_task(get_pcvar_float(g_advert_int), "ShowAdvert", id+TASK_ADVERT)
  773.                 }
  774.             }
  775.  
  776.             break
  777.         }
  778.     }
  779.     return PLUGIN_CONTINUE
  780. }
  781.  
  782. public QuerySelectData(FailState, Handle:Query, error[], errorcode, data[], datasize, Float:fQueueTime)
  783. {
  784.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  785.     {
  786.         log_amx("%s", error)
  787.         return
  788.     }
  789.     else
  790.     {
  791.         new id = data[0];
  792.         new col_pass = SQL_FieldNameToNum(Query, "Password")
  793.         new col_status = SQL_FieldNameToNum(Query, "Status")
  794.  
  795.         while(SQL_MoreResults(Query))
  796.         {
  797.             SQL_ReadResult(Query, col_pass, check_pass, charsmax(check_pass))
  798.             SQL_ReadResult(Query, col_status, check_status, charsmax(check_status))
  799.             is_registered[id] = true
  800.             password[id] = check_pass
  801.  
  802.             if(equal(check_status, "LOGGED_IN"))
  803.             {
  804.                 is_autolog[id] = true
  805.                 CheckAutoLogin(id)
  806.             }
  807.  
  808.             if(is_user_connected(id))
  809.             {
  810.                 user_silentkill(id)
  811.                 cs_set_user_team(id, CS_TEAM_UNASSIGNED)
  812.                 ShowMsg(id)
  813.                
  814.                 if(get_pcvar_num(g_advert) && get_pcvar_num(g_advert_int))
  815.                 {
  816.                     set_task(get_pcvar_float(g_advert_int), "ShowAdvert", id+TASK_ADVERT)
  817.                 }
  818.             }
  819.  
  820.             SQL_NextRow(Query)
  821.         }
  822.     }
  823. }
  824.  
  825. public CheckAutoLogin(id)
  826. {
  827.     new client_password[32];
  828.  
  829.     get_pcvar_string(g_setinfo_pr, pass_prefix, charsmax(pass_prefix))
  830.     get_user_info(id, pass_prefix, client_password, charsmax(client_password))
  831.     hash = convert_password(client_password)
  832.  
  833.     if(equal(hash, password[id]))
  834.     {
  835.         is_logged[id] = true
  836.     }
  837.     else
  838.     {
  839.         is_autolog[id] = false
  840.     }
  841. }
  842. /*==============================================================================
  843.     End of Check Client functions
  844. ================================================================================*/
  845.  
  846. /*==============================================================================
  847.     Start of Show Client's informative messages
  848. ================================================================================*/
  849. public ShowMsg(id)
  850. {
  851.     if(!get_pcvar_num(g_on))
  852.         return PLUGIN_HANDLED
  853.        
  854.     remove_tasks(id)
  855.  
  856.     set_task(5.0, "Messages", id+TASK_MESS)
  857.  
  858.     params[0] = id
  859.  
  860.     if(!is_registered[id])
  861.     {
  862.         if(get_pcvar_float(g_regtime) != 0)
  863.         {
  864.             if(!changing_name[id])
  865.             {
  866.                 CreateMainMenuTask(id+TASK_MENU)
  867.  
  868.                 if(get_pcvar_num(g_count))
  869.                 {
  870.                     g_player_time[id] = get_pcvar_num(g_regtime)
  871.                     ShowTimer(id+TASK_TIMER)
  872.                 }
  873.                 params[1] = 1
  874.                 set_task(get_pcvar_float(g_regtime) + 3, "KickPlayer", id+TASK_KICK, params, sizeof params)
  875.                 return PLUGIN_HANDLED
  876.             }
  877.             else
  878.             {
  879.                 g_player_time[id] = -1
  880.                 set_task(1.0, "ShowTimer", id+TASK_TIMER)
  881.             }
  882.         }
  883.     }
  884.     else if(!is_logged[id])
  885.     {
  886.         if(!changing_name[id])
  887.         {
  888.             CreateMainMenuTask(id+TASK_MENU)
  889.    
  890.             if(get_pcvar_num(g_count))
  891.             {
  892.                 g_player_time[id] = get_pcvar_num(g_logtime)
  893.                 ShowTimer(id+TASK_TIMER)
  894.             }
  895.             params[1] = 2
  896.             set_task(get_pcvar_float(g_logtime) + 3, "KickPlayer", id+TASK_KICK, params, sizeof params)
  897.             return PLUGIN_HANDLED
  898.         }
  899.         else
  900.         {
  901.             g_player_time[id] = -1
  902.             set_task(1.0, "ShowTimer", id+TASK_TIMER)
  903.         }
  904.     }
  905.     return PLUGIN_CONTINUE
  906. }
  907.  
  908. public ShowTimer(id)
  909. {
  910.     id -= TASK_TIMER
  911.  
  912.     if(!is_user_connected(id))
  913.         return PLUGIN_HANDLED
  914.  
  915.     switch(g_player_time[id])
  916.     {
  917.         case 10..19:
  918.         {
  919.             set_hudmessage(255, 255, 0, -1.0, -1.0, 0, 0.02, 1.0,_,_, -1)
  920.         }
  921.         case 0..9:
  922.         {
  923.             set_hudmessage(255, 0, 0, -1.0, -1.0, 1, 0.02, 1.0,_,_, -1)
  924.         }
  925.         case -1:
  926.         {
  927.             set_hudmessage(255, 255, 255, -1.0, -1.0, 1, 0.02, 1.0,_,_, -1)
  928.         }
  929.         default:
  930.         {
  931.             set_hudmessage(0, 255, 0, -1.0, -1.0, 0, 0.02, 1.0,_,_, -1)
  932.         }
  933.     }
  934.  
  935.     if(g_player_time[id] == 0)
  936.     {
  937.         ShowSyncHudMsg(id, g_sync_hud, "%L", LANG_SERVER, "KICK_HUD")
  938.         return PLUGIN_CONTINUE
  939.     }
  940.     else if(!is_registered[id] && get_pcvar_float(g_regtime))
  941.     {
  942.         if(g_player_time[id] == -1)
  943.         {
  944.             ShowSyncHudMsg(id, g_sync_hud, "%L", LANG_SERVER, "REGISTER_AFTER")
  945.             set_task(1.0, "ShowTimer", id+TASK_TIMER)
  946.             return PLUGIN_HANDLED
  947.         }
  948.  
  949.         ShowSyncHudMsg(id, g_sync_hud, "%L", LANG_SERVER, g_player_time[id] > 1 ? "REGISTER_HUD" : "REGISTER_HUD_SEC", g_player_time[id])
  950.     }
  951.     else if(is_registered[id] && !is_logged[id])
  952.     {
  953.         if(g_player_time[id] == -1)
  954.         {
  955.             ShowSyncHudMsg(id, g_sync_hud, "%L", LANG_SERVER, "LOGIN_AFTER")
  956.             set_task(1.0, "ShowTimer", id+TASK_TIMER)
  957.             return PLUGIN_HANDLED
  958.         }
  959.  
  960.         ShowSyncHudMsg(id, g_sync_hud, "%L ", LANG_SERVER, g_player_time[id] > 1 ? "LOGIN_HUD" : "LOGIN_HUD_SEC", g_player_time[id])
  961.     }
  962.     else return PLUGIN_HANDLED
  963.  
  964.     g_player_time[id]--
  965.  
  966.     set_task(1.0, "ShowTimer", id+TASK_TIMER)
  967.  
  968.     return PLUGIN_CONTINUE
  969. }
  970.  
  971. public Messages(id)
  972. {
  973.     id -= TASK_MESS
  974.  
  975.     if(!is_registered[id])
  976.     {
  977.         if(get_pcvar_float(g_regtime) != 0)
  978.         {
  979.             client_printcolor(id, "%L", LANG_SERVER, "REGISTER_CHAT", prefix, get_pcvar_num(g_regtime))
  980.         }
  981.         else
  982.         {
  983.             client_printcolor(id, "%L", LANG_SERVER, "YOUCANREG_CHAT", prefix)
  984.         }
  985.     }
  986.     else if(!is_logged[id])
  987.     {
  988.         client_printcolor(id, "%L", LANG_SERVER, "LOGIN_CHAT", prefix, get_pcvar_num(g_logtime))
  989.     }
  990.     else if(is_autolog[id])
  991.     {
  992.         client_printcolor(id, "%L", LANG_SERVER, "AUTO_LOGIN_CHAT", prefix)
  993.     }
  994. }
  995. /*==============================================================================
  996.     End of Show Client's informative messages
  997. ================================================================================*/
  998.  
  999. /*==============================================================================
  1000.     Start of Client's Auto Login Changer function
  1001. ================================================================================*/
  1002. public AutoLoginPassword(id)
  1003. {
  1004.     if(!get_pcvar_num(g_on))
  1005.         return PLUGIN_HANDLED
  1006.  
  1007.     read_args(typedpass, charsmax(typedpass))
  1008.     remove_quotes(typedpass)
  1009.  
  1010.     hash = convert_password(typedpass)
  1011.  
  1012.     if(!equal(hash, password[id]))
  1013.     {
  1014.         TrieSetCell(g_login_times, g_client_data[id], ++attempts[id])
  1015.         client_printcolor(id, "%L", LANG_SERVER, "LOG_PASS_INVALID", prefix, attempts[id], get_pcvar_num(g_attempts))
  1016.  
  1017.         if(attempts[id] >= get_pcvar_num(g_attempts))
  1018.         {
  1019.             if(get_pcvar_num(g_count))
  1020.             {
  1021.                 g_player_time[id] = 0
  1022.                 ShowTimer(id+TASK_TIMER)
  1023.             }
  1024.  
  1025.             if(get_pcvar_num(g_time))
  1026.             {
  1027.                 TrieSetCell(g_cant_login_time, g_client_data[id], time())
  1028.             }
  1029.             else
  1030.             {
  1031.                 TrieSetCell(g_cant_login_time, g_client_data[id], 0)
  1032.             }
  1033.             params[0] = id
  1034.             params[1] = 3
  1035.             set_task(2.0, "KickPlayer", id+TASK_KICK, params, sizeof params)
  1036.  
  1037.             if(get_pcvar_num(g_time))
  1038.             {  
  1039.                 set_task(get_pcvar_float(g_time), "RemoveCantLogin", 0, g_client_data[id], sizeof g_client_data)
  1040.             }
  1041.             return PLUGIN_HANDLED
  1042.         }
  1043.         else
  1044.         {
  1045.             client_cmd(id, "messagemode AUTO_LOGIN_PASS")
  1046.         }
  1047.  
  1048.         return PLUGIN_HANDLED
  1049.     }
  1050.     else
  1051.     {
  1052.         get_pcvar_string(g_setinfo_pr, pass_prefix, charsmax(pass_prefix))
  1053.         client_cmd(id, "setinfo %s %s", pass_prefix, typedpass)
  1054.         AutoLogin(id, true)
  1055.         MainMenu(id)
  1056.     }
  1057.     return PLUGIN_CONTINUE
  1058. }
  1059.  
  1060. AutoLogin(id, bool:enabled = true)
  1061. {
  1062.     if(!is_registered[id] || !is_logged[id])
  1063.         return PLUGIN_HANDLED
  1064.  
  1065.     new name[32];
  1066.     get_user_name(id, name, charsmax(name))
  1067.  
  1068.     if(get_pcvar_num(g_save))
  1069.     {
  1070.         formatex(query, charsmax(query), "UPDATE registersystem SET Status = ^"%s^" WHERE Name = ^"%s^";", enabled ? "LOGGED_IN" : "LOGGED_OUT", name)
  1071.         SQL_ThreadQuery(g_sqltuple, "QuerySetData", query)
  1072.     }
  1073.     else
  1074.     {
  1075.         line = 0, length = 0;
  1076.  
  1077.         while(read_file(reg_file, line++ , text, charsmax(text), length))
  1078.         {
  1079.             parse(text, text, charsmax(text))
  1080.  
  1081.             if(!(equal(text, name)))
  1082.                 continue
  1083.  
  1084.             formatex(text, charsmax(text), "^"%s^" ^"%s^" ^"%s^"", name, password[id], enabled ? "LOGGED_IN" : "LOGGED_OUT")
  1085.             write_file(reg_file, text, line - 1)                           
  1086.  
  1087.             break
  1088.         }
  1089.     }
  1090.  
  1091.     if(enabled)
  1092.     {
  1093.         is_autolog[id] = true
  1094.         client_printcolor(id, "%L", LANG_SERVER, "AUTO_LOGIN_ON", prefix)
  1095.  
  1096.         if(get_pcvar_num(g_aulog_log))
  1097.         {
  1098.             log_to_file(log_file, "%L", LANG_SERVER, "LOGFILE_AUTO_ON", name)
  1099.         }
  1100.     }
  1101.     else
  1102.     {
  1103.         is_autolog[id] = false
  1104.         client_printcolor(id, "%L", LANG_SERVER, "AUTO_LOGIN_OFF", prefix)
  1105.         get_pcvar_string(g_setinfo_pr, pass_prefix, charsmax(pass_prefix))
  1106.         client_cmd(id, "setinfo %s ^"^"", pass_prefix)
  1107.        
  1108.         if(get_pcvar_num(g_aulog_log))
  1109.         {
  1110.             log_to_file(log_file, "%L", LANG_SERVER, "LOGFILE_AUTO_OFF", name)
  1111.         }
  1112.     }
  1113.  
  1114.     return PLUGIN_CONTINUE
  1115. }
  1116. /*==============================================================================
  1117.     End of Client's Auto Login Changer function
  1118. ================================================================================*/
  1119.  
  1120. /*==============================================================================
  1121.     Start of the Main Menu function
  1122. ================================================================================*/
  1123. public CreateMainMenuTask(id)
  1124. {
  1125.     id -= TASK_MENU
  1126.  
  1127.     if((!is_registered[id] && get_pcvar_float(g_regtime)) || (is_registered[id] && !is_logged[id]))
  1128.     {
  1129.         MainMenu(id)
  1130.         set_task(MENU_TASK_TIME, "CreateMainMenuTask", id+TASK_MENU)
  1131.     }
  1132. }
  1133.  
  1134. public MainMenu(id)
  1135. {
  1136.     if(!get_pcvar_num(g_on) || !is_user_connected(id) || !data_ready)
  1137.         return PLUGIN_HANDLED
  1138.  
  1139.     length = 0
  1140.  
  1141.     if(is_registered[id])
  1142.     {
  1143.         if(is_logged[id])
  1144.         {
  1145.             length += formatex(menu[length], charsmax(menu) - length, "%L", LANG_SERVER, "MAIN_MENU_LOG", LANG_SERVER, is_autolog[id] ? "AUTO_LOG_DIS" : "AUTO_LOG_EN")
  1146.             keys = MENU_KEY_1|MENU_KEY_4|MENU_KEY_5|MENU_KEY_9|MENU_KEY_0
  1147.         }
  1148.         else
  1149.         {
  1150.             length += formatex(menu[length], charsmax(menu) - length, "%L", LANG_SERVER, "MAIN_MENU_REG")
  1151.             keys = MENU_KEY_1|MENU_KEY_9
  1152.         }
  1153.     }
  1154.     else
  1155.     {      
  1156.         if(get_pcvar_float(g_regtime) == 0)
  1157.         {
  1158.             length += formatex(menu[length], charsmax(menu) - length, "%L", LANG_SERVER, "MAIN_MENU_NOTREG")
  1159.             keys = MENU_KEY_2|MENU_KEY_9|MENU_KEY_0
  1160.         }
  1161.         else
  1162.         {
  1163.             length += formatex(menu[length], charsmax(menu) - length, "%L", LANG_SERVER, "MAIN_MENU_NOTREG_FORCE")
  1164.             keys = MENU_KEY_2|MENU_KEY_9
  1165.         }
  1166.     }
  1167.     show_menu(id, keys, menu, -1, "Register System Main Menu")
  1168.  
  1169.     return PLUGIN_CONTINUE
  1170. }
  1171.  
  1172. public HandlerMainMenu(id, key)
  1173. {
  1174.     switch(key)
  1175.     {
  1176.         case 0:
  1177.         {
  1178.             if(!is_logged[id])
  1179.             {
  1180.                 client_cmd(id, "messagemode LOGIN_PASS")
  1181.             }
  1182.             else
  1183.             {
  1184.                 AutoLogin(id, false)
  1185.  
  1186.                 if(get_pcvar_num(g_logout))
  1187.                 {
  1188.                     CheckClient(id)
  1189.                     CreateMainMenuTask(id+TASK_MENU)
  1190.                 }
  1191.                 else
  1192.                 {
  1193.                     if(get_pcvar_num(g_count))
  1194.                     {
  1195.                         g_player_time[id] = 0
  1196.                         ShowTimer(id+TASK_TIMER)
  1197.                     }
  1198.  
  1199.                     params[0] = id
  1200.                     params[1] = 4
  1201.                     set_task(2.0, "KickPlayer", id+TASK_KICK, params, sizeof params)
  1202.                 }
  1203.                 client_printcolor(id, "%L", LANG_SERVER, "LOG_OUT", prefix)
  1204.                 is_logged[id] = false
  1205.             }
  1206.         }
  1207.         case 1:
  1208.         {
  1209.             client_cmd(id, "messagemode REGISTER_PASS")
  1210.         }
  1211.         case 3:
  1212.         {
  1213.             if(!is_logged[id])
  1214.                 return PLUGIN_HANDLED
  1215.  
  1216.             if(cant_change_pass[id])
  1217.             {
  1218.                 client_printcolor(id, "%L", LANG_SERVER, "CHANGE_TIMES", prefix, get_pcvar_num(g_chp_time))
  1219.                 MainMenu(id)
  1220.                 return PLUGIN_HANDLED
  1221.             }
  1222.             else
  1223.             {
  1224.                 client_cmd(id, "messagemode CHANGE_PASS_NEW")
  1225.                 MainMenu(id)
  1226.             }
  1227.         }
  1228.         case 4:
  1229.         {
  1230.             if(!is_logged[id])
  1231.             {
  1232.                 MainMenu(id)
  1233.                 return PLUGIN_HANDLED
  1234.             }
  1235.  
  1236.             if(is_autolog[id])
  1237.             {
  1238.                 AutoLogin(id, false)
  1239.             }
  1240.             else
  1241.             {
  1242.                 client_cmd(id, "messagemode AUTO_LOGIN_PASS")
  1243.             }
  1244.             MainMenu(id)
  1245.         }
  1246.         case 8:
  1247.         {
  1248.             Info(id)
  1249.             MainMenu(id)
  1250.         }
  1251.         case 9:
  1252.         {
  1253.             return PLUGIN_HANDLED
  1254.         }
  1255.     }
  1256.     return PLUGIN_HANDLED
  1257. }
  1258. /*==============================================================================
  1259.     End of the Main Menu function
  1260. ================================================================================*/
  1261.  
  1262. /*==============================================================================
  1263.     Start of Login function
  1264. ================================================================================*/
  1265. public Login(id)
  1266. {
  1267.     if(!get_pcvar_num(g_on) || !data_ready)
  1268.         return PLUGIN_HANDLED
  1269.  
  1270.     if(changing_name[id])
  1271.     {
  1272.         client_printcolor(id, "%L", LANG_SERVER, "LOGIN_AFTER")
  1273.         return PLUGIN_HANDLED
  1274.     }
  1275.  
  1276.     if(!is_registered[id])
  1277.     {  
  1278.         client_printcolor(id, "%L", LANG_SERVER, "LOG_NOTREG", prefix)
  1279.         return PLUGIN_HANDLED
  1280.     }
  1281.  
  1282.     if(is_logged[id])
  1283.     {
  1284.         client_printcolor(id, "%L", LANG_SERVER, "LOG_LOGGED", prefix);
  1285.         return PLUGIN_HANDLED
  1286.     }
  1287.    
  1288.     read_args(typedpass, charsmax(typedpass))
  1289.     remove_quotes(typedpass)
  1290.  
  1291.     if(equal(typedpass, ""))
  1292.         return PLUGIN_HANDLED
  1293.  
  1294.     hash = convert_password(typedpass)
  1295.  
  1296.     if(!equal(hash, password[id]))
  1297.     {  
  1298.         TrieSetCell(g_login_times, g_client_data[id], ++attempts[id])
  1299.         client_printcolor(id, "%L", LANG_SERVER, "LOG_PASS_INVALID", prefix, attempts[id], get_pcvar_num(g_attempts))
  1300.  
  1301.         if(attempts[id] >= get_pcvar_num(g_attempts))
  1302.         {
  1303.             if(get_pcvar_num(g_count))
  1304.             {
  1305.                 g_player_time[id] = 0
  1306.                 ShowTimer(id+TASK_TIMER)
  1307.             }
  1308.  
  1309.             if(get_pcvar_num(g_time))
  1310.             {
  1311.                 TrieSetCell(g_cant_login_time, g_client_data[id], time())
  1312.             }
  1313.             else
  1314.             {
  1315.                 TrieSetCell(g_cant_login_time, g_client_data[id], 0)
  1316.             }
  1317.             params[0] = id
  1318.             params[1] = 3
  1319.             set_task(2.0, "KickPlayer", id+TASK_KICK, params, sizeof params)
  1320.  
  1321.             if(get_pcvar_num(g_time))
  1322.             {  
  1323.                 set_task(get_pcvar_float(g_time), "RemoveCantLogin", 0, g_client_data[id], sizeof g_client_data)
  1324.             }
  1325.             return PLUGIN_HANDLED
  1326.         }
  1327.         else
  1328.         {
  1329.             client_cmd(id, "messagemode LOGIN_PASS")
  1330.         }
  1331.         return PLUGIN_HANDLED
  1332.     }
  1333.     else
  1334.     {
  1335.         is_logged[id] = true
  1336.         attempts[id] = 0
  1337.         remove_task(id+TASK_KICK)
  1338.         client_printcolor(id, "%L", LANG_SERVER, "LOG_LOGING", prefix)
  1339.         MainMenu(id)
  1340.         client_cmd(id, "jointeam")
  1341.     }
  1342.     return PLUGIN_CONTINUE
  1343. }
  1344. /*==============================================================================
  1345.     End of Login function
  1346. ================================================================================*/
  1347.  
  1348. /*==============================================================================
  1349.     Start of Register function
  1350. ================================================================================*/
  1351. public Register(id)
  1352. {
  1353.     if(!get_pcvar_num(g_on) || !data_ready)
  1354.         return PLUGIN_HANDLED
  1355.  
  1356.     if(changing_name[id])
  1357.     {
  1358.         client_printcolor(id, "%L", LANG_SERVER, "REGISTER_AFTER")
  1359.         return PLUGIN_HANDLED
  1360.     }
  1361.  
  1362.     read_args(typedpass, charsmax(typedpass))
  1363.     remove_quotes(typedpass)
  1364.  
  1365.     new passlength = strlen(typedpass)
  1366.  
  1367.     if(equal(typedpass, ""))
  1368.         return PLUGIN_HANDLED
  1369.    
  1370.     if(is_registered[id])
  1371.     {
  1372.         client_printcolor(id, "%L", LANG_SERVER, "REG_EXISTS", prefix)
  1373.         return PLUGIN_HANDLED
  1374.     }
  1375.  
  1376.     if(passlength < get_pcvar_num(g_pass_length))
  1377.     {
  1378.         client_printcolor(id, "%L", LANG_SERVER, "REG_LEN", prefix, get_pcvar_num(g_pass_length))
  1379.         client_cmd(id, "messagemode REGISTER_PASS")
  1380.         return PLUGIN_HANDLED
  1381.     }
  1382.  
  1383.     new_pass[id] = typedpass
  1384.     remove_task(id+TASK_MENU)
  1385.     ConfirmPassword(id)
  1386.     return PLUGIN_CONTINUE
  1387. }
  1388. /*==============================================================================
  1389.     End of Register function
  1390. ================================================================================*/
  1391.  
  1392. /*==============================================================================
  1393.     Start of Change Password function
  1394. ================================================================================*/
  1395. public ChangePasswordNew(id)
  1396. {
  1397.     if(!get_pcvar_num(g_on) || !is_registered[id] || !is_logged[id] || changing_name[id] || !data_ready)
  1398.         return PLUGIN_HANDLED
  1399.  
  1400.     if(cant_change_pass[id])
  1401.     {
  1402.         client_printcolor(id, "%L", LANG_SERVER, "CHANGE_TIMES", prefix, get_pcvar_num(g_chp_time))
  1403.         return PLUGIN_HANDLED
  1404.     }
  1405.  
  1406.     read_args(typedpass, charsmax(typedpass))
  1407.     remove_quotes(typedpass)
  1408.  
  1409.     new passlenght = strlen(typedpass)
  1410.  
  1411.     if(equal(typedpass, ""))
  1412.         return PLUGIN_HANDLED
  1413.  
  1414.     if(passlenght < get_pcvar_num(g_pass_length))
  1415.     {
  1416.         client_printcolor(id, "%L", LANG_SERVER, "REG_LEN", prefix, get_pcvar_num(g_pass_length))
  1417.         client_cmd(id, "messagemode CHANGE_PASS_NEW")
  1418.         return PLUGIN_HANDLED
  1419.     }
  1420.  
  1421.     new_pass[id] = typedpass
  1422.     client_cmd(id, "messagemode CHANGE_PASS_OLD")
  1423.     return PLUGIN_CONTINUE
  1424. }
  1425.  
  1426. public ChangePasswordOld(id)
  1427. {
  1428.     if(!get_pcvar_num(g_on) || !is_registered[id] || !is_logged[id] || changing_name[id] || !data_ready)
  1429.         return PLUGIN_HANDLED
  1430.  
  1431.     if(cant_change_pass[id])
  1432.     {
  1433.         client_printcolor(id, "%L", LANG_SERVER, "CHANGE_TIMES", prefix, get_pcvar_num(g_chp_time))
  1434.         return PLUGIN_HANDLED
  1435.     }
  1436.  
  1437.     read_args(typedpass, charsmax(typedpass))
  1438.     remove_quotes(typedpass)
  1439.  
  1440.     if(equal(typedpass, "") || equal(new_pass[id], ""))
  1441.         return PLUGIN_HANDLED
  1442.  
  1443.     hash = convert_password(typedpass)
  1444.  
  1445.     if(!equali(hash, password[id]))
  1446.     {
  1447.         TrieSetCell(g_login_times, g_client_data[id], ++attempts[id])
  1448.         client_printcolor(id, "%L", LANG_SERVER, "LOG_PASS_INVALID", prefix, attempts[id], get_pcvar_num(g_attempts))
  1449.  
  1450.         if(attempts[id] >= get_pcvar_num(g_attempts))
  1451.         {
  1452.             if(get_pcvar_num(g_count))
  1453.             {
  1454.                 g_player_time[id] = 0
  1455.                 ShowTimer(id+TASK_TIMER)
  1456.             }
  1457.            
  1458.             if(get_pcvar_num(g_time))
  1459.             {
  1460.                 TrieSetCell(g_cant_login_time, g_client_data[id], time())
  1461.             }
  1462.             else
  1463.             {
  1464.                 TrieSetCell(g_cant_login_time, g_client_data[id], 0)
  1465.             }
  1466.             params[0] = id
  1467.             params[1] = 3
  1468.             set_task(2.0, "KickPlayer", id+TASK_KICK, params, sizeof params)
  1469.  
  1470.             if(get_pcvar_num(g_time))
  1471.             {  
  1472.                 set_task(get_pcvar_float(g_time), "RemoveCantLogin", 0, g_client_data[id], sizeof g_client_data)
  1473.             }
  1474.             return PLUGIN_HANDLED
  1475.         }
  1476.         else
  1477.         {
  1478.             client_cmd(id, "messagemode CHANGE_PASS_OLD")
  1479.         }
  1480.         return PLUGIN_HANDLED
  1481.     }
  1482.  
  1483.     ConfirmPassword(id)
  1484.     return PLUGIN_CONTINUE
  1485. }
  1486. /*==============================================================================
  1487.     End of Change Password function
  1488. ================================================================================*/
  1489.  
  1490. /*==============================================================================
  1491.     Start of Confirming Register's or Change Password's password function
  1492. ================================================================================*/
  1493. public ConfirmPassword(id)
  1494. {
  1495.     if(!get_pcvar_num(g_on) || !is_user_connected(id))
  1496.         return PLUGIN_HANDLED
  1497.  
  1498.     length = 0
  1499.        
  1500.     formatex(menu, charsmax(menu) - length, "%L", LANG_SERVER, "MENU_PASS", new_pass[id])
  1501.     keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_0
  1502.  
  1503.     show_menu(id, keys, menu, -1, "Password Menu")
  1504.     return PLUGIN_CONTINUE
  1505. }
  1506.  
  1507. public HandlerConfirmPasswordMenu(id, key)
  1508. {
  1509.     switch(key)
  1510.     {
  1511.         case 0:
  1512.         {
  1513.             hash = convert_password(new_pass[id])
  1514.             new name[32];
  1515.             get_user_name(id, name, charsmax(name))
  1516.  
  1517.             if(is_registered[id])
  1518.             {
  1519.                 if(get_pcvar_num(g_save))
  1520.                 {
  1521.                     formatex(text, charsmax(text), "UPDATE `registersystem` SET Password = ^"%s^", Status = ^"%s^" WHERE Name = ^"%s^";", hash, is_autolog[id] == true ? "LOGGED_IN" : "LOGGED_OUT", name)
  1522.                     SQL_ThreadQuery(g_sqltuple, "QuerySetData", text)
  1523.                 }
  1524.                 else
  1525.                 {
  1526.                     line = 0, length = 0;
  1527.  
  1528.                     while(read_file(reg_file, line++ , text, charsmax(text), length))
  1529.                     {
  1530.                         parse(text, text, charsmax(text))
  1531.  
  1532.                         if(!(equal(text, name)))
  1533.                             continue
  1534.  
  1535.                         formatex(text, charsmax(text), "^"%s^" ^"%s^" ^"%s^"", name, hash, is_autolog[id] == true ? "LOGGED_IN" : "LOGGED_OUT")
  1536.                         write_file(reg_file, text, line - 1)                           
  1537.  
  1538.                         break
  1539.                     }
  1540.                 }
  1541.  
  1542.                 password[id] = hash
  1543.                 TrieSetCell(g_pass_change_times, g_client_data[id], ++times[id])
  1544.                 client_printcolor(id, "%L", LANG_SERVER, "CHANGE_NEW", prefix, new_pass[id])
  1545.  
  1546.                 if(is_autolog[id])
  1547.                 {
  1548.                     get_pcvar_string(g_setinfo_pr, pass_prefix, charsmax(pass_prefix))
  1549.                     client_cmd(id, "setinfo %s %s", pass_prefix, new_pass[id])
  1550.                 }
  1551.  
  1552.                 if(times[id] >= get_pcvar_num(g_chp_time))
  1553.                 {
  1554.                     cant_change_pass[id] = true
  1555.                    
  1556.                     if(get_pcvar_num(g_time_pass))
  1557.                     {
  1558.                         TrieSetCell(g_cant_change_pass_time, g_client_data[id], time())
  1559.                     }
  1560.                     else
  1561.                     {
  1562.                         TrieSetCell(g_cant_change_pass_time, g_client_data[id], 0)
  1563.                     }
  1564.  
  1565.                     if(get_pcvar_num(g_time_pass))
  1566.                     {  
  1567.                         set_task(get_pcvar_float(g_time), "RemoveCantChangePass", 0, g_client_data[id], sizeof g_client_data)
  1568.                     }
  1569.                 }
  1570.  
  1571.                 if(get_pcvar_num(g_chp_log))
  1572.                 {
  1573.                     log_to_file(log_file, "%L", LANG_SERVER, "LOGFILE_CHNG_PASS", name)
  1574.                 }
  1575.  
  1576.                 MainMenu(id)
  1577.             }
  1578.             else
  1579.             {
  1580.                 if(get_pcvar_num(g_save))
  1581.                 {
  1582.                     formatex(text, charsmax(text), "INSERT INTO `registersystem` (`Name`, `Password`, `Status`) VALUES (^"%s^", ^"%s^", ^"LOGGED_OUT^");", name, hash)
  1583.                     SQL_ThreadQuery(g_sqltuple, "QuerySetData", text)
  1584.                 }
  1585.                 else
  1586.                 {
  1587.                     new file_pointer = fopen(reg_file, "a")
  1588.                     format(text, charsmax(text), "^n^"%s^" ^"%s^" ^"^"", name, hash)
  1589.                     fprintf(file_pointer, text)
  1590.                     fclose(file_pointer)
  1591.                 }
  1592.  
  1593.                 is_registered[id] = true
  1594.                 password[id] = hash
  1595.                 new_pass[id] = ""
  1596.                
  1597.                 if(get_pcvar_num(g_reg_log))
  1598.                 {
  1599.                     log_to_file(log_file, "%L", LANG_SERVER, "LOGFILE_REG", name)
  1600.                 }
  1601.                
  1602.                 if(is_user_connected(id))
  1603.                 {
  1604.                     user_silentkill(id)
  1605.                     cs_set_user_team(id, CS_TEAM_UNASSIGNED)
  1606.                     ShowMsg(id)
  1607.                 }
  1608.             }
  1609.         }
  1610.         case 1:
  1611.         {
  1612.             if(is_registered[id])
  1613.             {
  1614.                 client_cmd(id, "messagemode CHANGE_PASS_NEW")
  1615.             }
  1616.             else
  1617.             {
  1618.                 client_cmd(id, "messagemode REGISTER_PASS")
  1619.                 CreateMainMenuTask(id+TASK_MENU)
  1620.             }
  1621.         }
  1622.         case 9:
  1623.         {
  1624.             MainMenu(id)
  1625.             CreateMainMenuTask(id+TASK_MENU)
  1626.             return PLUGIN_HANDLED
  1627.         }
  1628.     }
  1629.     return PLUGIN_HANDLED
  1630. }
  1631.  
  1632. public QuerySetData(FailState, Handle:Query, error[],errcode, data[], datasize)
  1633. {
  1634.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  1635.     {
  1636.         log_amx("%s", error)
  1637.         return
  1638.     }
  1639. }
  1640. /*==============================================================================
  1641.     End of Confirming Register's or Change Password's password function
  1642. ================================================================================*/
  1643.  
  1644. /*==============================================================================
  1645.     Start of Jointeam menus and commands functions
  1646. ================================================================================*/
  1647. public HookTeamCommands(id)
  1648. {
  1649.     if(!get_pcvar_num(g_on) || !is_user_connected(id))
  1650.         return PLUGIN_CONTINUE
  1651.  
  1652.     if(!data_ready)
  1653.         return PLUGIN_HANDLED
  1654.  
  1655.     if((!is_registered[id] && get_pcvar_float(g_regtime)) || (is_registered[id] && !is_logged[id]))
  1656.     {
  1657.         MainMenu(id)
  1658.         return PLUGIN_HANDLED
  1659.     }  
  1660.     else if(get_pcvar_num(g_ajc_change) && cs_get_user_team(id) != CS_TEAM_UNASSIGNED && (!get_pcvar_num(g_ajc_admin) || !(get_user_flags(id) & AJC_ADMIN_FLAG)))
  1661.     {
  1662.         return PLUGIN_HANDLED
  1663.     }  
  1664.     return PLUGIN_CONTINUE
  1665. }
  1666.  
  1667. public TextMenu(msgid, dest, id)
  1668. {
  1669.     if(!get_pcvar_num(g_on) || !is_user_connected(id))
  1670.         return PLUGIN_CONTINUE
  1671.  
  1672.     if(!data_ready)
  1673.         return PLUGIN_HANDLED
  1674.  
  1675.     new menu_text[64];
  1676.  
  1677.     get_msg_arg_string(4, menu_text, charsmax(menu_text))
  1678.  
  1679.     if(equal(menu_text, JOIN_TEAM_MENU_FIRST) || equal(menu_text, JOIN_TEAM_MENU_FIRST_SPEC))
  1680.     {
  1681.         if((!is_registered[id] && get_pcvar_float(g_regtime)) || (is_registered[id] && !is_logged[id]))
  1682.         {
  1683.             MainMenu(id)
  1684.             return PLUGIN_HANDLED
  1685.         }
  1686.         else if((get_pcvar_num(g_ajc_team) && cs_get_user_team(id) == CS_TEAM_UNASSIGNED) && !task_exists(TASK_AJC) && (!get_pcvar_num(g_ajc_admin) || !(get_user_flags(id) & AJC_ADMIN_FLAG)))
  1687.         {
  1688.             SetAutoJoinTask(id, msgid)
  1689.             return PLUGIN_HANDLED
  1690.         }      
  1691.     }
  1692.     else if(equal(menu_text, JOIN_TEAM_MENU_INGAME) || equal(menu_text, JOIN_TEAM_MENU_INGAME_SPEC))
  1693.     {
  1694.         if((!is_registered[id] && get_pcvar_float(g_regtime)) || (is_registered[id] && !is_logged[id]))
  1695.         {
  1696.             MainMenu(id)
  1697.             return PLUGIN_HANDLED
  1698.         }
  1699.         else if(get_pcvar_num(g_ajc_change) && (!get_pcvar_num(g_ajc_admin) || !(get_user_flags(id) & AJC_ADMIN_FLAG)))
  1700.         {
  1701.             return PLUGIN_HANDLED
  1702.         }  
  1703.     }
  1704.     return PLUGIN_CONTINUE
  1705. }
  1706.  
  1707. public VGUIMenu(msgid, dest, id)
  1708. {
  1709.     if(!get_pcvar_num(g_on) || get_msg_arg_int(1) != JOIN_TEAM_VGUI_MENU || !is_user_connected(id))
  1710.         return PLUGIN_CONTINUE
  1711.  
  1712.     if(!data_ready)
  1713.         return PLUGIN_HANDLED
  1714.  
  1715.     if((!is_registered[id] && get_pcvar_float(g_regtime)) || (is_registered[id] && !is_logged[id]))
  1716.     {
  1717.         MainMenu(id)
  1718.         return PLUGIN_HANDLED
  1719.     }  
  1720.     else if(get_pcvar_num(g_ajc_team))
  1721.     {
  1722.         if((!get_pcvar_num(g_ajc_admin) || !(get_user_flags(id) & AJC_ADMIN_FLAG)))
  1723.         {
  1724.             if(cs_get_user_team(id) == CS_TEAM_UNASSIGNED && !task_exists(TASK_AJC))
  1725.             {
  1726.                 SetAutoJoinTask(id, msgid)
  1727.                 return PLUGIN_HANDLED
  1728.             }
  1729.             else if(get_pcvar_num(g_ajc_change))
  1730.             {
  1731.                 return PLUGIN_HANDLED
  1732.             }
  1733.         }
  1734.     }
  1735.     else if(get_pcvar_num(g_ajc_change) && (!get_pcvar_num(g_ajc_admin) || !(get_user_flags(id) & AJC_ADMIN_FLAG)))
  1736.     {
  1737.         return PLUGIN_HANDLED
  1738.     }  
  1739.     return PLUGIN_CONTINUE
  1740. }
  1741. /*==============================================================================
  1742.     End of Jointeam menus and commands functions
  1743. ================================================================================*/
  1744.  
  1745. /*==============================================================================
  1746.     Start of Auto Join function
  1747. ================================================================================*/
  1748. public AutoJoin(parameters[])
  1749. {
  1750.     new id = parameters[0]
  1751.  
  1752.     if(!is_user_connected(id))
  1753.         return PLUGIN_HANDLED
  1754.    
  1755.     if(cs_get_user_team(id) != CS_TEAM_UNASSIGNED)
  1756.         return PLUGIN_HANDLED
  1757.  
  1758.     new g_team[2], g_team_num = get_pcvar_num(g_ajc_team)
  1759.  
  1760.     if(g_team_num == 6)
  1761.     {
  1762.         num_to_str(g_team_num, g_team, charsmax(g_team))
  1763.         engclient_cmd(id, "jointeam", g_team)
  1764.         return PLUGIN_CONTINUE
  1765.     }
  1766.  
  1767.     if(g_team_num == 5)
  1768.     {
  1769.         g_team_num = random_num(1, 2)
  1770.     }
  1771.     else if(g_team_num != 1 && g_team_num != 2)
  1772.         return PLUGIN_HANDLED
  1773.  
  1774.     new g_class_num = get_pcvar_num(g_ajc_class[g_team_num - 1])
  1775.     num_to_str(g_team_num, g_team, charsmax(g_team))
  1776.    
  1777.     if(g_class_num == 5)
  1778.     {
  1779.         g_class_num = random_num(1, 4)
  1780.     }
  1781.  
  1782.     if(g_class_num == 0 || (g_class_num != 1 && g_class_num != 2 && g_class_num != 3 && g_class_num != 4))
  1783.     {
  1784.         engclient_cmd(id, "jointeam", g_team)
  1785.         return PLUGIN_CONTINUE
  1786.     }  
  1787.  
  1788.     new g_class[2], msg_block = get_msg_block(parameters[1])
  1789.  
  1790.     num_to_str(g_class_num, g_class, charsmax(g_class))
  1791.  
  1792.     set_msg_block(parameters[1], BLOCK_SET)
  1793.     engclient_cmd(id, "jointeam", g_team)
  1794.     engclient_cmd(id, "joinclass", g_class)
  1795.     set_msg_block(parameters[1], msg_block)
  1796.  
  1797.     return PLUGIN_CONTINUE
  1798. }
  1799. /*==============================================================================
  1800.     End of Auto Join functions
  1801. ================================================================================*/
  1802.  
  1803. /*==============================================================================
  1804.     Start of Hook Client's commands
  1805. ================================================================================*/
  1806. public client_command(id)
  1807. {
  1808.     if(!get_pcvar_num(g_on) || !data_ready)
  1809.         return PLUGIN_HANDLED
  1810.  
  1811.     new command[64], arg[16];
  1812.  
  1813.     read_argv(0, command, charsmax(command))
  1814.     read_argv(1, arg, charsmax(arg))
  1815.  
  1816.     if((equali(command, "say") || equali(command, "say_team")) && equali(arg, "/reg"))
  1817.     {
  1818.         MainMenu(id)
  1819.         return PLUGIN_CONTINUE
  1820.     }
  1821.  
  1822.     if(get_pcvar_num(g_comm))
  1823.     {
  1824.         if(TrieKeyExists(g_commands, command))
  1825.         {
  1826.             if(!is_registered[id] && get_pcvar_float(g_regtime))
  1827.             {
  1828.                 console_print(id, "%s %L", prefix, LANG_SERVER, "COMMAND_REG")
  1829.                 client_printcolor(id, "!g%s!t %L", prefix, LANG_SERVER, "COMMAND_REG")
  1830.                 return PLUGIN_HANDLED
  1831.             }
  1832.             else if(is_registered[id] && !is_logged[id])
  1833.             {
  1834.                 console_print(id, "%s %L", prefix, LANG_SERVER, "COMMAND_LOG")
  1835.                 client_printcolor(id, "!g%s!t %L", prefix, LANG_SERVER, "COMMAND_LOG")
  1836.                 return PLUGIN_HANDLED
  1837.             }  
  1838.         }
  1839.     }
  1840.  
  1841.     return PLUGIN_CONTINUE
  1842. }
  1843.  
  1844. /*==============================================================================
  1845.     End of Hook Client's commands
  1846. ================================================================================*/
  1847.  
  1848. /*==============================================================================
  1849.     Start of Info/Help MOTD function
  1850. ================================================================================*/
  1851. public Info(id)
  1852. {
  1853.     show_motd(id, "rshelpmotd.txt", "Register System Help")
  1854. }
  1855. /*==============================================================================
  1856.     End of Info/Help MOTD function
  1857. ================================================================================*/
  1858.  
  1859. /*==============================================================================
  1860.     Start of Advret function
  1861. ================================================================================*/
  1862. public ShowAdvert(id)
  1863. {
  1864.     id -= TASK_ADVERT
  1865.    
  1866.     if(!get_pcvar_num(g_on) || !get_pcvar_num(g_advert) || !is_user_connected(id) || is_registered[id])
  1867.         return PLUGIN_HANDLED
  1868.  
  1869.     client_printcolor(id, "%L", LANG_SERVER, "YOUCANREG_CHAT", prefix)
  1870.     set_task(get_pcvar_float(g_advert_int), "ShowAdvert", id+TASK_ADVERT)
  1871.  
  1872.     return PLUGIN_CONTINUE
  1873. }
  1874. /*==============================================================================
  1875.     End of Advret function
  1876. ================================================================================*/
  1877.  
  1878. /*==============================================================================
  1879.     Start of Player Spawn function
  1880. ================================================================================*/
  1881. public HookPlayerSpawn(id)
  1882. {
  1883.     if(get_pcvar_num(g_on) && is_user_connected(id))
  1884.     {
  1885.         show_menu(id, 0, "^n", 1)
  1886.     }
  1887. }
  1888. /*==============================================================================
  1889.     End of Player Spawn function
  1890. ================================================================================*/
  1891.  
  1892. /*==============================================================================
  1893.     Start of Player PreThink function for the blind function
  1894. ================================================================================*/
  1895. public PlayerPreThink(id)
  1896. {
  1897.     if(!get_pcvar_num(g_on) || !get_pcvar_num(g_blind) || !is_user_connected(id) || changing_name[id])
  1898.         return PLUGIN_HANDLED
  1899.  
  1900.     if((!is_registered[id] && get_pcvar_float(g_regtime)) || (is_registered[id] && !is_logged[id]))
  1901.     {
  1902.         message_begin(MSG_ONE_UNRELIABLE, g_screenfade, {0,0,0}, id)
  1903.         write_short(1<<12)
  1904.         write_short(1<<12)
  1905.         write_short(0x0000)
  1906.         write_byte(0)
  1907.         write_byte(0)
  1908.         write_byte(0)
  1909.         write_byte(255)
  1910.         message_end()
  1911.     }
  1912.  
  1913.     return PLUGIN_CONTINUE
  1914. }
  1915. /*==============================================================================
  1916.     End of Player PreThink function for the blind function
  1917. ================================================================================*/
  1918.  
  1919. /*==============================================================================
  1920.     Start of Client Info Change function for hooking name change of clients
  1921. ================================================================================*/
  1922. public ClientInfoChanged(id)
  1923. {
  1924.     if(!get_pcvar_num(g_on) || !is_user_connected(id))
  1925.         return FMRES_IGNORED
  1926.    
  1927.     new oldname[32], newname[32];
  1928.        
  1929.     get_user_name(id, oldname, charsmax(oldname))
  1930.     get_user_info(id, "name", newname, charsmax(newname))
  1931.  
  1932.     if(!equal(oldname, newname))
  1933.     {
  1934.         replace_all(newname, charsmax(newname), "%", " ")
  1935.  
  1936.         changing_name[id] = false
  1937.  
  1938.         if(!is_user_alive(id))
  1939.         {
  1940.             changing_name[id] = true
  1941.         }
  1942.         else
  1943.         {
  1944.             if(is_logged[id])
  1945.             {
  1946.                 set_user_info(id, "name", oldname)
  1947.                 client_printcolor(id, "%L", LANG_SERVER, "NAME_CHANGE_LOG", prefix)
  1948.                 return FMRES_HANDLED
  1949.             }
  1950.    
  1951.             set_task(1.0, "CheckClient", id)
  1952.         }
  1953.     }
  1954.     return FMRES_IGNORED
  1955. }
  1956. /*==============================================================================
  1957.     End of Client Info Change function for hooking name change of clients
  1958. ================================================================================*/
  1959.  
  1960. /*==============================================================================
  1961.     Start of Kick Player function
  1962. ================================================================================*/
  1963. public KickPlayer(parameters[])
  1964. {
  1965.     new id = parameters[0]
  1966.     new reason = parameters[1]
  1967.  
  1968.     if(!is_user_connecting(id) && !is_user_connected(id))
  1969.         return PLUGIN_HANDLED
  1970.  
  1971.     new userid = get_user_userid(id)
  1972.  
  1973.     switch(reason)
  1974.     {
  1975.         case 1:
  1976.         {
  1977.             if(is_registered[id])
  1978.                 return PLUGIN_HANDLED
  1979.  
  1980.             console_print(id, "%L", LANG_SERVER, "KICK_INFO")
  1981.             server_cmd("kick #%i ^"%L^"", userid, LANG_PLAYER, "KICK_REG")
  1982.         }
  1983.         case 2:
  1984.         {
  1985.             if(is_logged[id])
  1986.                 return PLUGIN_HANDLED
  1987.  
  1988.             console_print(id, "%L", LANG_SERVER, "KICK_INFO")
  1989.             server_cmd("kick #%i ^"%L^"", userid, LANG_PLAYER, "KICK_LOGIN")
  1990.         }
  1991.         case 3:
  1992.         {
  1993.             if(TrieGetCell(g_cant_login_time, g_client_data[id], value))
  1994.             {
  1995.                 console_print(id, "%L", LANG_SERVER, "KICK_INFO")
  1996.  
  1997.                 if(!value)
  1998.                 {
  1999.                     server_cmd("kick #%i ^"%s^"", userid, LANG_PLAYER, "KICK_ATMP_MAP", get_pcvar_num(g_attempts))
  2000.                 }
  2001.                 else
  2002.                 {
  2003.                     new cal_time = get_pcvar_num(g_time) - (time() - value)
  2004.                     server_cmd("kick #%i ^"%s^"", userid, LANG_PLAYER, "KICK_ATMP_TIME", get_pcvar_num(g_attempts), cal_time)
  2005.                 }
  2006.             }
  2007.         }
  2008.         case 4:
  2009.         {
  2010.             console_print(id, "%L", LANG_SERVER, "KICK_INFO")
  2011.             server_cmd("kick #%i ^"%L^"", userid, LANG_SERVER, "KICK_LOGOUT")
  2012.         }
  2013.     }
  2014.     return PLUGIN_CONTINUE
  2015. }
  2016. /*==============================================================================
  2017.     End of Kick Player function
  2018. ================================================================================*/
  2019.  
  2020. /*==============================================================================
  2021.     Start of Removing Punishes function
  2022. ================================================================================*/
  2023. public RemoveCantLogin(data[])
  2024. {
  2025.     TrieDeleteKey(g_login_times, data)
  2026.     TrieDeleteKey(g_cant_login_time, data)
  2027. }
  2028.  
  2029. public RemoveCantChangePass(data[])
  2030. {
  2031.     TrieDeleteKey(g_cant_change_pass_time, data)
  2032.     TrieDeleteKey(g_pass_change_times, data)
  2033.  
  2034.     new target;
  2035.    
  2036.     switch(get_pcvar_num(g_member))
  2037.     {
  2038.         case 0:
  2039.         {
  2040.             target = find_player("a", data)
  2041.         }
  2042.         case 1:
  2043.         {
  2044.             target = find_player("d", data)
  2045.         }
  2046.         case 2:
  2047.         {
  2048.             target = find_player("c", data)
  2049.         }
  2050.         default:
  2051.         {
  2052.             target = find_player("a", data)
  2053.         }
  2054.     }
  2055.  
  2056.     if(!target)
  2057.         return PLUGIN_HANDLED
  2058.  
  2059.     cant_change_pass[target] = false
  2060.     client_printcolor(target, "%L", LANG_SERVER, "CHANGE_CAN", prefix)
  2061.     return PLUGIN_CONTINUE
  2062. }
  2063. /*==============================================================================
  2064.     End of Removing Punish function
  2065. ================================================================================*/
  2066.  
  2067. /*==============================================================================
  2068.     Start of Plugin's stocks
  2069. ================================================================================*/
  2070. stock client_printcolor(const id, const message[], any:...)
  2071. {
  2072.     new g_message[191];
  2073.  
  2074.     vformat(g_message, charsmax(g_message), message, 3)
  2075.  
  2076.     replace_all(g_message, charsmax(g_message), "!g", "^4")
  2077.     replace_all(g_message, charsmax(g_message), "!n", "^1")
  2078.     replace_all(g_message, charsmax(g_message), "!t", "^3")
  2079.  
  2080.     if(is_user_connected(id))
  2081.     {
  2082.         message_begin(MSG_ONE_UNRELIABLE, g_saytxt,_, id)
  2083.         write_byte(id)
  2084.         write_string(g_message)
  2085.         message_end()
  2086.     }
  2087. }
  2088.  
  2089. stock convert_password(const password[])
  2090. {
  2091.     new pass_salt[64], converted_password[34];
  2092.  
  2093.     formatex(pass_salt, charsmax(pass_salt), "%s%s", password, SALT)
  2094.     md5(pass_salt, converted_password)
  2095.    
  2096.     return converted_password
  2097. }
  2098.  
  2099. stock SetAutoJoinTask(id, menu_msgid)
  2100. {
  2101.     params[0] = id
  2102.     params[1] = menu_msgid
  2103.  
  2104.     set_task(AJC_TASK_TIME, "AutoJoin", id+TASK_AJC, params, sizeof params)
  2105. }
  2106.  
  2107. stock remove_tasks(const id)
  2108. {
  2109.     remove_task(id+TASK_MESS)
  2110.     remove_task(id+TASK_KICK)
  2111.     remove_task(id+TASK_MENU)
  2112.     remove_task(id+TASK_TIMER)
  2113.     remove_task(id+TASK_ADVERT)
  2114.     remove_task(id+TASK_AJC)
  2115.     remove_task(id)
  2116. }
  2117. /*==============================================================================
  2118.     End of Plugin's stocks
  2119. ================================================================================*/

_________________
Kép

Kép


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  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 36 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