hlmod.hu
https://hlmod.hu/

Regisztrációs rendszer
https://hlmod.hu/viewtopic.php?f=10&t=6004
Oldal: 1 / 1

Szerző:  TysOn [2012.09.16. 20:31 ]
Hozzászólás témája:  Regisztrációs rendszer

Hali, ugye van ez a regisztrációs rendszer. 1 dolgot kellene átirni benne mégpedig azt, hogy mikor felcsatlakozik 1 ember akkor ne tudjon beállni CT-be vagy T-be hanem kötelező legyen regisztrálni elöször (jelenleg ha feljön uj ember akkor jatszani is tud regisztráció nélkül). Ugyanazt dobja be mint belépésnél csak regisztrációval (Sötét képernyő és ne tudjon beállni játszani) Aki megcsinálja adok a surf szerveremre V.I.P jogod

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <fakemeta>
  5. #include <sqlx>
  6.  
  7. #define TASK_MESS 2133
  8. #define TASK_KICK 3312
  9. #define SALT "8c4f4370c53e0c1e1ae9acd577dddbed" //The SALT for the password encryption. It can be edited!
  10.  
  11. new g_on, g_save, g_host, g_user, g_pass, g_db, g_setinfo_pr, g_regtime, g_logtime, g_msg, g_pass_length, g_attempts, g_chp_time, g_reg_log, g_chp_log, g_aulog_log, g_name, g_blind, g_chat, g_logout; //cvar pointers
  12. new reg_file[256], configs_dir[64], file[192], params[2], name[32], check_name[32], check_pass[34], check_status[10], query[512], password[34][34], namepass[512], typedpass[32], new_pass[33][33], passsalt[64], hash[34], pass_prefix[32]; //arrays
  13. new bool:is_logged[33], bool:is_registered[33], bool:is_autolog[33], attempts[33], times[33]; //Booleans and other arrays
  14. new menu[512], keys, length; //variables and array for the menus
  15. new Handle:g_SQLTuple, g_error[512]; //SQL array and handle
  16. new g_saytxt, g_screenfade; //other variables
  17. new const prefix[] = "[Regisztracios Rendszer]"; //The prefix in the chat messages. It can be edited!
  18. new const log_file[] = "register_system_log.txt"; //The name of the log file. It can be edited!
  19. new const JOIN_TEAM_MENU_FIRST[] = "#Team_Select"; //The text of the Team Select menu. DO NOT CHANGE!
  20. new const JOIN_TEAM_MENU_FIRST_SPEC[] = "#Team_Select_Spect"; //The text of the Spectator Team Select menu. DO NOT CHANGE!
  21. new const JOIN_TEAM_MENU_INGAME[] = "#IG_Team_Select"; //The text of the Ingame Team Select menu. DO NOT CHANGE!
  22. new const JOIN_TEAM_MENU_INGAME_SPEC[] = "#IG_Team_Select_Spect"; //The text of the Ingame Spectator Team Select menu. DO NOT CHANGE!
  23. new const JOIN_TEAM_VGUI_MENU = 2; //The number of the VGUI menu for Team Select. DO NOT CHANGE!
  24. new const NAME_CHANGE_MSG[] = "#Cstrike_Name_Change"; ////The text of the Name Change Message. DO NOT CHANGE!
  25.  
  26. /*==============================================================================
  27. Start of Plugin Init
  28. ================================================================================*/
  29. public plugin_init()
  30. {
  31. register_plugin("Register System", "5.0", "m0skVi4a ;]")
  32.  
  33. g_on = register_cvar("rs_on", "1") //Is the plugin on(1) or off(0)
  34. g_save = register_cvar("rs_save_type", "0") //Where to seve the information: to file(0) or to MySQL(1).
  35. g_host = register_cvar("rs_host", "127.0.0.1") //The host for the database.
  36. g_user = register_cvar("rs_user", "root") //The username for the database login.
  37. g_pass = register_cvar("rs_pass", "") //The password for the database login.
  38. g_db = register_cvar("rs_db", "registersystem") //The database name.
  39. g_setinfo_pr = register_cvar("rs_password_prefix", "_rspass") //The prefix of the setinfo for the auto login.
  40. g_regtime = register_cvar("rs_register_time", "0") //How much time has the client to register. If is set to 0 registration is not mandatory.
  41. g_logtime = register_cvar("rs_login_time", "60.0") //How much time has the client to login if is registered.
  42. g_msg = register_cvar("rs_messages", "3") //What messages will be displayed when the client connect - only hud messages(1), only chat messages(2) or hud and chat messages(3).
  43. g_pass_length = register_cvar("rs_password_length", "6") //What is minimum length of the password.
  44. g_attempts = register_cvar("rs_attempts", "3") //How much attempts has the client to login if he type wrong password.
  45. g_chp_time = register_cvar("rs_chngpass_times", "3") //How much times can the client change his password per map.
  46. g_reg_log = register_cvar("rs_register_log", "1") //Is it allowed the plugin to log in file when the client is registered.
  47. g_chp_log = register_cvar("rs_chngpass_log", "1") //Is it allowed the plugin to log in file when the client has change his password.
  48. g_aulog_log = register_cvar("rs_autologin_log", "1") //Is it allowed the plugin to log in file when the client has change his Auto Login function.
  49. g_name = register_cvar("rs_name_change", "1") //Which of the clients can change their names - all clients(0), all clients without Logged cients(2) or no one can(3).
  50. g_blind = register_cvar("rs_blind", "1") //Whether clients who have not Logged or who must Register be blinded.
  51. g_chat = register_cvar("rs_chat", "1") //Whether clients who have not Logged or who must Register chat's be blocked.
  52. g_logout = register_cvar("rs_logout", "0") //What to do when client Logout - kick him from the server(0) or wait to Login during the Login time(1).
  53.  
  54. register_message(get_user_msgid("ShowMenu"), "ShowMenu")
  55. register_message(get_user_msgid("VGUIMenu"), "VGUIMenu")
  56. register_menucmd(register_menuid("Main Menu"), 1023, "HandlerMainMenu")
  57. register_menucmd(register_menuid("Options Menu"), 1023, "HandlerOptionsMenu")
  58. register_menucmd(register_menuid("Password Menu"), 1023, "HandlerConfirmPasswordMenu")
  59. register_clcmd("jointeam", "HookJoinCommands")
  60. register_clcmd("chooseteam", "HookJoinCommands")
  61. register_clcmd("say", "HookSayCommands")
  62. register_clcmd("say_team", "HookSayCommands")
  63. register_clcmd("LOGIN_PASS", "Login")
  64. register_clcmd("REGISTER_PASS", "Register")
  65. register_clcmd("CHANGE_PASS_NEW", "ChangePasswordNew")
  66. register_clcmd("CHANGE_PASS_OLD", "ChangePasswordOld")
  67. register_clcmd("AUTO_LOGIN_PASS", "AutoLoginPassword")
  68.  
  69. register_forward(FM_PlayerPreThink, "PlayerPreThink")
  70. register_forward(FM_ClientUserInfoChanged, "ClientInfoChanged")
  71.  
  72. register_dictionary("register_system.txt")
  73. g_saytxt = get_user_msgid("SayText")
  74. g_screenfade = get_user_msgid("ScreenFade")
  75. }
  76. /*==============================================================================
  77. End of Plugin Init
  78. ================================================================================*/
  79.  
  80. /*==============================================================================
  81. Start of Executing plugin's config and choose the save mode
  82. ================================================================================*/
  83. public plugin_cfg()
  84. {
  85. if(!get_pcvar_num(g_on))
  86. return PLUGIN_HANDLED
  87.  
  88. get_configsdir(configs_dir, charsmax(configs_dir))
  89. formatex(file, charsmax(file), "%s/registersystem.cfg", configs_dir)
  90.  
  91. if(!file_exists(file))
  92. {
  93. server_print("%L", LANG_SERVER, "ERROR_CFG", file)
  94. }
  95. else
  96. {
  97. server_cmd("exec %s", file)
  98. server_print("%L", LANG_SERVER, "CFG_EXEC", file)
  99. }
  100.  
  101. if(get_pcvar_num(g_save))
  102. {
  103. new Host[64], User[32], Pass[32], DB[128];
  104.  
  105. get_pcvar_string(g_host, Host, charsmax(Host))
  106. get_pcvar_string(g_user, User, charsmax(User))
  107. get_pcvar_string(g_pass, Pass, charsmax(Pass))
  108. get_pcvar_string(g_db, DB, charsmax(DB))
  109.  
  110. g_SQLTuple = SQL_MakeDbTuple(Host, User, Pass, DB)
  111.  
  112. new errorcode, Handle:SqlConnection = SQL_Connect(g_SQLTuple, errorcode, g_error, charsmax(g_error))
  113.  
  114. if(SqlConnection == Empty_Handle)
  115. {
  116. server_print("%L", LANG_SERVER, "ERROR_MYSQL")
  117. set_fail_state(g_error)
  118. }
  119. else
  120. {
  121. server_print("%L", LANG_SERVER, "MYSQL_CONNECT")
  122. }
  123.  
  124. new Handle:Query
  125.  
  126. Query = SQL_PrepareQuery(SqlConnection, "CREATE TABLE IF NOT EXISTS registersystem (Name VARCHAR(32), Password VARCHAR(34), Status VARCHAR(10))")
  127.  
  128. if(!SQL_Execute(Query))
  129. {
  130. SQL_QueryError(Query, g_error, charsmax(g_error))
  131. set_fail_state(g_error)
  132. }
  133.  
  134. SQL_FreeHandle(Query)
  135. SQL_FreeHandle(SqlConnection)
  136. }
  137. else
  138. {
  139. get_configsdir(configs_dir, charsmax(configs_dir))
  140. formatex(reg_file, charsmax(reg_file), "%s/regusers.ini", configs_dir)
  141.  
  142. if(!file_exists(reg_file))
  143. {
  144. write_file(reg_file,";Register System file^n;Modifying may cause the clients to can not Login!^n^n")
  145. server_print("%L", LANG_SERVER, "ERROR_FILE", reg_file)
  146. }
  147. }
  148. return PLUGIN_CONTINUE
  149. }
  150. /*==============================================================================
  151. End of Executing plugin's config and choose the save mode
  152. ================================================================================*/
  153.  
  154. /*==============================================================================
  155. Start of Client's connect and disconenct functions
  156. ================================================================================*/
  157. public client_connect(id)
  158. {
  159. is_logged[id] = false
  160. is_registered[id] = false
  161. is_autolog[id] = false
  162. attempts[id] = 0
  163. times[id] = 0
  164. remove_task(id+TASK_MESS)
  165. CheckClient(id)
  166. }
  167.  
  168. public client_putinserver(id)
  169. {
  170. ShowMsg(id)
  171. }
  172.  
  173. public client_disconnect(id)
  174. {
  175. is_logged[id] = false
  176. is_registered[id] = false
  177. is_autolog[id] = false
  178. attempts[id] = 0
  179. times[id] = 0
  180. remove_task(id+TASK_MESS)
  181. remove_task(id+TASK_KICK)
  182. }
  183. /*==============================================================================
  184. End of Client's connect and disconenct functions
  185. ================================================================================*/
  186.  
  187. /*==============================================================================
  188. Start of Show Menu functions
  189. ================================================================================*/
  190. public ShowMenu(msgid, dest, id)
  191. {
  192. if(get_pcvar_num(g_on))
  193. {
  194. new menu_text[64]
  195.  
  196. get_msg_arg_string(4, menu_text, charsmax(menu_text))
  197.  
  198. if(equal(menu_text, JOIN_TEAM_MENU_FIRST) || equal(menu_text, JOIN_TEAM_MENU_FIRST_SPEC) || equal(menu_text, JOIN_TEAM_MENU_INGAME) || equal(menu_text, JOIN_TEAM_MENU_INGAME_SPEC))
  199. {
  200. Menu(id)
  201.  
  202. return PLUGIN_HANDLED
  203. }
  204.  
  205. return PLUGIN_CONTINUE
  206. }
  207. return PLUGIN_CONTINUE
  208. }
  209.  
  210. public VGUIMenu(msgid, dest, id)
  211. {
  212. if(get_pcvar_num(g_on))
  213. {
  214. if(get_msg_arg_int(1) == JOIN_TEAM_VGUI_MENU)
  215. {
  216. Menu(id)
  217.  
  218. return PLUGIN_HANDLED
  219. }
  220.  
  221. return PLUGIN_CONTINUE
  222. }
  223.  
  224. return PLUGIN_CONTINUE
  225. }
  226. /*==============================================================================
  227. End of Show Menu functions
  228. ================================================================================*/
  229.  
  230. /*==============================================================================
  231. Start of Check Client functions
  232. ================================================================================*/
  233. public CheckClient(id)
  234. {
  235. if(!get_pcvar_num(g_on) || is_user_bot(id))
  236. return PLUGIN_HANDLED
  237.  
  238. is_registered[id] = false
  239. is_autolog[id] = false
  240. is_logged[id] = false
  241. remove_task(id+TASK_KICK)
  242.  
  243. if(get_pcvar_num(g_save))
  244. {
  245. get_user_name(id, name, charsmax(name))
  246.  
  247. new data[1]
  248. data[0] = id
  249.  
  250. formatex(query, charsmax(query), "SELECT `Password`, `Status` FROM `registersystem` WHERE Name = ^"%s^";", name)
  251.  
  252. SQL_ThreadQuery(g_SQLTuple, "QuerySelectData", query, data, 1)
  253. }
  254. else
  255. {
  256. new file = fopen(reg_file, "r")
  257.  
  258. while(!feof(file))
  259. {
  260. get_user_name(id, name, charsmax(name))
  261. fgets(file, namepass, charsmax(namepass))
  262. parse(namepass, check_name, charsmax(check_name), check_pass, charsmax(check_pass), check_status, charsmax(check_status))
  263.  
  264. if(namepass[0] == ';')
  265. continue
  266.  
  267. if(equal(check_name, name))
  268. {
  269. is_registered[id] = true
  270. password[id] = check_pass
  271.  
  272. if(is_user_connected(id))
  273. {
  274. user_silentkill(id)
  275. cs_set_user_team(id, CS_TEAM_UNASSIGNED)
  276. ShowMsg(id)
  277. Menu(id)
  278. }
  279.  
  280. if(equal(check_status, "LOGGED"))
  281. {
  282. is_autolog[id] = true
  283. CheckAutoLogin(id)
  284. }
  285.  
  286. break
  287. }
  288. }
  289. fclose(file)
  290. }
  291. return PLUGIN_CONTINUE
  292. }
  293.  
  294. public QuerySelectData(FailState, Handle:Query, error[], errorcode, data[], datasize, Float:fQueueTime)
  295. {
  296. if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  297. {
  298. log_amx("%s", error)
  299. return
  300. }
  301. else
  302. {
  303. new id = data[0];
  304. new col_pass = SQL_FieldNameToNum(Query, "Password")
  305. new col_status = SQL_FieldNameToNum(Query, "Status")
  306.  
  307. while(SQL_MoreResults(Query))
  308. {
  309. SQL_ReadResult(Query, col_pass, check_pass, charsmax(check_pass))
  310. SQL_ReadResult(Query, col_status, check_status, charsmax(check_status))
  311. is_registered[id] = true
  312. password[id] = check_pass
  313.  
  314. if(is_user_connected(id))
  315. {
  316. user_silentkill(id)
  317. cs_set_user_team(id, CS_TEAM_UNASSIGNED)
  318. ShowMsg(id)
  319. Menu(id)
  320. }
  321.  
  322. if(equal(check_status, "LOGGED"))
  323. {
  324. is_autolog[id] = true
  325. CheckAutoLogin(id)
  326. }
  327. SQL_NextRow(Query)
  328. }
  329. }
  330. }
  331.  
  332. public CheckAutoLogin(id)
  333. {
  334. new client_password[32];
  335. get_pcvar_string(g_setinfo_pr, pass_prefix, charsmax(pass_prefix))
  336. get_user_info(id, pass_prefix, client_password, charsmax(client_password))
  337. formatex(passsalt, charsmax(passsalt), "%s%s", client_password, SALT)
  338. md5(passsalt, hash)
  339.  
  340. if(equal(hash, password[id]))
  341. {
  342. is_logged[id] = true
  343. }
  344. }
  345. /*==============================================================================
  346. End of Check Client functions
  347. ================================================================================*/
  348.  
  349. /*==============================================================================
  350. Start of Show Client's informative messages
  351. ================================================================================*/
  352. public ShowMsg(id)
  353. {
  354. if(!get_pcvar_num(g_on))
  355. return PLUGIN_HANDLED
  356.  
  357. set_task(5.0, "Messages", id+TASK_MESS)
  358.  
  359. params[0] = id
  360.  
  361. if(!is_registered[id])
  362. {
  363. if(get_pcvar_float(g_regtime) != 0)
  364. {
  365. params[1] = 1
  366. set_task(get_pcvar_float(g_regtime), "KickPlayer", id+TASK_KICK, params, sizeof params)
  367. return PLUGIN_HANDLED
  368. }
  369. }
  370. else
  371. {
  372. params[1] = 2
  373. set_task(get_pcvar_float(g_logtime), "KickPlayer", id+TASK_KICK, params, sizeof params)
  374. return PLUGIN_HANDLED
  375. }
  376. return PLUGIN_CONTINUE
  377. }
  378.  
  379. public Messages(id)
  380. {
  381. id -= TASK_MESS
  382.  
  383. if(get_pcvar_num(g_msg) == 1 || get_pcvar_num(g_msg) == 3)
  384. {
  385. if(!is_registered[id])
  386. {
  387. if(get_pcvar_float(g_regtime) != 0)
  388. {
  389. set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 0.5, 5.0, 2.0, 2.0, -1)
  390. show_hudmessage(id, "%L", LANG_SERVER, "REGISTER_HUD", get_pcvar_num(g_regtime))
  391. }
  392. else
  393. {
  394. set_hudmessage(0, 255, 0, -1.0, -1.0, 0, 0.5, 5.0, 2.0, 2.0, -1)
  395. show_hudmessage(id, "%L", LANG_SERVER, "YOUCANREG_HUD", get_pcvar_num(g_regtime))
  396. }
  397. }
  398. else if(!is_logged[id])
  399. {
  400. set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 0.5, 5.0, 2.0, 2.0, -1)
  401. show_hudmessage(id, "%L", LANG_SERVER, "LOGIN_HUD", get_pcvar_num(g_logtime))
  402. }
  403. else if(is_autolog[id])
  404. {
  405. set_hudmessage(0, 255, 0, -1.0, -1.0, 0, 0.5, 5.0, 2.0, 2.0, -1)
  406. show_hudmessage(id, "%L", LANG_SERVER, "AUTO_LOGIN_HUD")
  407. }
  408. }
  409.  
  410. if(get_pcvar_num(g_msg) == 2 || get_pcvar_num(g_msg) == 3)
  411. {
  412. if(!is_registered[id])
  413. {
  414. if(get_pcvar_float(g_regtime) != 0)
  415. {
  416. client_printcolor(id, "%L", LANG_SERVER, "REGISTER_CHAT", prefix, get_pcvar_num(g_regtime))
  417. }
  418. else
  419. {
  420. client_printcolor(id, "%L", LANG_SERVER, "YOUCANREG_CHAT", prefix, get_pcvar_num(g_regtime))
  421. }
  422. }
  423. else if(!is_logged[id])
  424. {
  425. client_printcolor(id, "%L", LANG_SERVER, "LOGIN_CHAT", prefix, get_pcvar_num(g_logtime))
  426. }
  427. else if(is_autolog[id])
  428. {
  429. client_printcolor(id, "%L", LANG_SERVER, "AUTO_LOGIN_CHAT", prefix)
  430. }
  431. }
  432. }
  433. /*==============================================================================
  434. End of Show Client's informative messages
  435. ================================================================================*/
  436.  
  437. /*==============================================================================
  438. Start of Hook Client's jointeam commands
  439. ================================================================================*/
  440. public HookJoinCommands(id)
  441. {
  442. if(get_pcvar_num(g_on))
  443. {
  444. if((!is_registered[id] && get_pcvar_float(g_regtime)) || (is_registered[id] && !is_logged[id]))
  445. {
  446. Menu(id)
  447. return PLUGIN_HANDLED
  448. }
  449.  
  450. return PLUGIN_CONTINUE
  451. }
  452.  
  453. return PLUGIN_CONTINUE
  454. }
  455. /*==============================================================================
  456. End of Hook Client's jointeam commands
  457. ================================================================================*/
  458.  
  459. /*==============================================================================
  460. Start of Hook Client's say commands
  461. ================================================================================*/
  462. public HookSayCommands(id)
  463. {
  464. new g_message[16];
  465. read_args(g_message, charsmax(g_message))
  466. remove_quotes(g_message)
  467.  
  468. if(get_pcvar_num(g_on))
  469. {
  470. if(equal(g_message, "/reg"))
  471. {
  472. Menu(id)
  473. }
  474. else if(get_pcvar_num(g_chat))
  475. {
  476. if(!is_registered[id] && get_pcvar_float(g_regtime))
  477. {
  478. client_printcolor(id, "%L", LANG_SERVER, "CHAT_REG", prefix)
  479. return PLUGIN_HANDLED
  480. }
  481. else if(is_registered[id] && !is_logged[id])
  482. {
  483. client_printcolor(id, "%L", LANG_SERVER, "CHAT_LOG", prefix)
  484. return PLUGIN_HANDLED
  485. }
  486. }
  487. }
  488.  
  489. return PLUGIN_CONTINUE
  490. }
  491. /*==============================================================================
  492. End of Hook Client's say commands
  493. ================================================================================*/
  494.  
  495. /*==============================================================================
  496. Start of the Main Menu function
  497. ================================================================================*/
  498. public Menu(id)
  499. {
  500. if(!get_pcvar_num(g_on) || !is_user_connected(id))
  501. return PLUGIN_HANDLED
  502.  
  503. length = 0
  504.  
  505. if(is_registered[id])
  506. {
  507. if(is_logged[id])
  508. {
  509. length += formatex(menu[length], charsmax(menu) - length, "%L", LANG_SERVER, "MAIN_MENU_LOG")
  510. keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_9|MENU_KEY_0
  511. }
  512. else
  513. {
  514. length += formatex(menu[length], charsmax(menu) - length, "%L", LANG_SERVER, "MAIN_MENU_REG")
  515. keys = MENU_KEY_7|MENU_KEY_9
  516. }
  517. }
  518. else
  519. {
  520. if(get_pcvar_float(g_regtime) == 0)
  521. {
  522. length += formatex(menu[length], charsmax(menu) - length, "%L", LANG_SERVER, "MAIN_MENU_NOTREG")
  523. keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_5|MENU_KEY_6|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
  524. }
  525. else
  526. {
  527. length += formatex(menu[length], charsmax(menu) - length, "%L", LANG_SERVER, "MAIN_MENU_NOTREG_FORCE")
  528. keys = MENU_KEY_8|MENU_KEY_9
  529. }
  530. }
  531. show_menu(id, keys, menu, -1, "Main Menu")
  532.  
  533. return PLUGIN_CONTINUE
  534. }
  535.  
  536. public HandlerMainMenu(id, key)
  537. {
  538. switch(key)
  539. {
  540. case 0:
  541. {
  542. client_cmd(id, "jointeam 1")
  543. }
  544. case 1:
  545. {
  546. client_cmd(id, "jointeam 2")
  547. }
  548. case 4:
  549. {
  550. client_cmd(id, "jointeam 5")
  551. }
  552. case 5:
  553. {
  554. client_cmd(id, "jointeam 6")
  555. }
  556. case 6:
  557. {
  558. if(!is_logged[id])
  559. {
  560. client_cmd(id, "messagemode LOGIN_PASS")
  561. Menu(id)
  562. }
  563. else
  564. {
  565. is_logged[id] = false
  566.  
  567. if(is_autolog[id])
  568. {
  569. AutoLogin(id)
  570. }
  571. get_pcvar_string(g_setinfo_pr, pass_prefix, charsmax(pass_prefix))
  572. client_cmd(id, "setinfo %s ^"^"", pass_prefix)
  573. client_printcolor(id, "%L", LANG_SERVER, "LOG_OUT", prefix)
  574.  
  575. if(get_pcvar_num(g_logout))
  576. {
  577. ShowMsg(id)
  578. Menu(id)
  579. }
  580. else
  581. {
  582. params[0] = id
  583. params[1] = 4
  584. set_task(2.0, "KickPlayer", id+TASK_KICK, params, sizeof params)
  585. }
  586. }
  587. }
  588. case 7:
  589. {
  590. client_cmd(id, "messagemode REGISTER_PASS")
  591. Menu(id)
  592. }
  593. case 8:
  594. {
  595. OptionsMenu(id)
  596. }
  597. case 9:
  598. {
  599. return PLUGIN_HANDLED
  600. }
  601. }
  602. return PLUGIN_HANDLED
  603. }
  604. /*==============================================================================
  605. End of the Main Menu function
  606. ================================================================================*/
  607.  
  608. /*==============================================================================
  609. Start of the Options Menu function
  610. ================================================================================*/
  611. public OptionsMenu(id)
  612. {
  613. if(!get_pcvar_num(g_on) || !is_user_connected(id))
  614. return PLUGIN_HANDLED
  615.  
  616. length = 0
  617.  
  618. if(is_logged[id])
  619. {
  620. if(is_autolog[id])
  621. {
  622. length += formatex(menu[length], charsmax(menu) - length, "%L", LANG_SERVER, "OPTIONS_MENU_LOG_ON")
  623. }
  624. else
  625. {
  626. length += formatex(menu[length], charsmax(menu) - length, "%L", LANG_SERVER, "OPTIONS_MENU_LOG_OFF")
  627. }
  628. keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_0
  629. }
  630. else
  631. {
  632. length += formatex(menu[length], charsmax(menu) - length, "%L", LANG_SERVER, "OPTIONS_MENU_NOT_LOG")
  633. keys = MENU_KEY_3|MENU_KEY_0
  634. }
  635.  
  636. show_menu(id, keys, menu, -1, "Options Menu")
  637.  
  638. return PLUGIN_CONTINUE
  639. }
  640.  
  641. public HandlerOptionsMenu(id, key)
  642. {
  643. switch(key)
  644. {
  645. case 0:
  646. {
  647. if(times[id] >= get_pcvar_num(g_chp_time))
  648. {
  649. client_printcolor(id, "%L", LANG_SERVER, "CHANGE_TIMES", prefix, get_pcvar_num(g_chp_time))
  650. return PLUGIN_HANDLED
  651. }
  652. else
  653. {
  654. client_cmd(id, "messagemode CHANGE_PASS_NEW")
  655. }
  656. OptionsMenu(id)
  657. }
  658. case 1:
  659. {
  660. if(is_autolog[id])
  661. {
  662. AutoLogin(id)
  663. }
  664. else
  665. {
  666. client_cmd(id, "messagemode AUTO_LOGIN_PASS")
  667. }
  668. OptionsMenu(id)
  669. }
  670. case 2:
  671. {
  672. Info(id)
  673. OptionsMenu(id)
  674. }
  675. case 9:
  676. {
  677. Menu(id)
  678. return PLUGIN_HANDLED
  679. }
  680. }
  681. return PLUGIN_HANDLED
  682. }
  683. /*==============================================================================
  684. End of the Options Menu function
  685. ================================================================================*/
  686.  
  687. /*==============================================================================
  688. Start of Client's Auto Login Changer function
  689. ================================================================================*/
  690. public AutoLogin(id)
  691. {
  692. get_user_name(id, name, charsmax(name))
  693.  
  694. if(!is_registered[id] || !is_logged[id])
  695. return PLUGIN_HANDLED
  696.  
  697. if(get_pcvar_num(g_save))
  698. {
  699. formatex(query, charsmax(query), "UPDATE registersystem SET Status = ^"%s^" WHERE Name = ^"%s^";", is_autolog[id] == true ? "" : "LOGGED", name)
  700. SQL_ThreadQuery(g_SQLTuple, "QuerySetData", query)
  701. }
  702. else
  703. {
  704. new line, file = fopen(reg_file, "r");
  705.  
  706. while(!feof(file))
  707. {
  708. fgets(file, namepass, 255)
  709. parse(namepass, namepass, charsmax(namepass))
  710. line++
  711.  
  712. if(equal(namepass, name))
  713. {
  714. formatex(namepass, charsmax(namepass), "^"%s^" ^"%s^" ^"%s^"", name, password[id], is_autolog[id] == true ? "" : "LOGGED")
  715. write_file(reg_file, namepass, line - 1)
  716.  
  717. break
  718. }
  719. }
  720. fclose(file)
  721. }
  722.  
  723. if(is_autolog[id])
  724. {
  725. is_autolog[id] = false
  726. client_printcolor(id, "%L", LANG_SERVER, "AUTO_LOGIN_OFF", prefix)
  727. get_pcvar_string(g_setinfo_pr, pass_prefix, charsmax(pass_prefix))
  728. client_cmd(id, "setinfo %s ^"^"", pass_prefix)
  729.  
  730. if(get_pcvar_num(g_aulog_log))
  731. {
  732. log_to_file(log_file, "%L", LANG_SERVER, "LOGFILE_AUTO_OFF", name)
  733. }
  734. }
  735. else
  736. {
  737. is_autolog[id] = true
  738. client_printcolor(id, "%L", LANG_SERVER, "AUTO_LOGIN_ON", prefix)
  739. if(get_pcvar_num(g_aulog_log))
  740. {
  741. log_to_file(log_file, "%L", LANG_SERVER, "LOGFILE_AUTO_ON", name)
  742. }
  743. }
  744.  
  745. return PLUGIN_CONTINUE
  746. }
  747.  
  748. public AutoLoginPassword(id)
  749. {
  750. if(!get_pcvar_num(g_on))
  751. return PLUGIN_HANDLED
  752.  
  753. read_args(typedpass, charsmax(typedpass))
  754. remove_quotes(typedpass)
  755. formatex(passsalt, charsmax(passsalt), "%s%s", typedpass, SALT)
  756. md5(passsalt, hash)
  757.  
  758. if(!equal(hash, password[id]))
  759. {
  760. client_printcolor(id, "%L", LANG_SERVER, "AUTO_LOGIN_PASS_NOTVALID", prefix)
  761. client_cmd(id, "messagemode AUTO_LOGIN_PASS")
  762. return PLUGIN_HANDLED
  763. }
  764. else
  765. {
  766. get_pcvar_string(g_setinfo_pr, pass_prefix, charsmax(pass_prefix))
  767. client_cmd(id, "setinfo %s %s", pass_prefix, typedpass)
  768. AutoLogin(id)
  769. OptionsMenu(id)
  770. }
  771. return PLUGIN_CONTINUE
  772. }
  773. /*==============================================================================
  774. End of Client's Auto Login Changer function
  775. ================================================================================*/
  776.  
  777. /*==============================================================================
  778. Start of Info/Help MOTD function
  779. ================================================================================*/
  780. public Info(id)
  781. {
  782. show_motd(id, "rshelpmotd.txt", "Regisztracios rendszer Segitseg")
  783. }
  784. /*==============================================================================
  785. End of Info/Help MOTD function
  786. ================================================================================*/
  787.  
  788. /*==============================================================================
  789. Start of Login function
  790. ================================================================================*/
  791. public Login(id)
  792. {
  793. if(!get_pcvar_num(g_on))
  794. return PLUGIN_HANDLED
  795.  
  796. if(!is_registered[id])
  797. {
  798. client_printcolor(id, "%L", LANG_SERVER, "LOG_NOTREG", prefix)
  799. return PLUGIN_HANDLED
  800. }
  801.  
  802. if(is_logged[id])
  803. {
  804. client_printcolor(id, "%L", LANG_SERVER, "LOG_LOGGED", prefix);
  805. return PLUGIN_HANDLED
  806. }
  807.  
  808. read_args(typedpass, charsmax(typedpass))
  809. remove_quotes(typedpass)
  810.  
  811. if(equal(typedpass, ""))
  812. return PLUGIN_HANDLED
  813.  
  814. formatex(passsalt, charsmax(passsalt), "%s%s", typedpass, SALT)
  815. md5(passsalt, hash)
  816.  
  817. if(!equal(hash, password[id]))
  818. {
  819. attempts[id]++
  820. client_printcolor(id, "%L", LANG_SERVER, "LOG_PASS_INVALID", prefix, attempts[id], get_pcvar_num(g_attempts))
  821.  
  822. if(attempts[id] >= get_pcvar_num(g_attempts))
  823. {
  824. params[0] = id
  825. params[1] = 3
  826. set_task(2.0, "KickPlayer", id+TASK_KICK, params, sizeof params)
  827. return PLUGIN_HANDLED
  828. }
  829. else
  830. {
  831. client_cmd(id, "messagemode LOGIN_PASS")
  832. }
  833. return PLUGIN_HANDLED
  834. }
  835. else
  836. {
  837. is_logged[id] = true
  838. attempts[id] = 0
  839. remove_task(id+TASK_KICK)
  840. client_printcolor(id, "%L", LANG_SERVER, "LOG_LOGING", prefix)
  841. Menu(id)
  842. }
  843. return PLUGIN_CONTINUE
  844. }
  845. /*==============================================================================
  846. End of Login function
  847. ================================================================================*/
  848.  
  849. /*==============================================================================
  850. Start of Register function
  851. ================================================================================*/
  852. public Register(id)
  853. {
  854. if(!get_pcvar_num(g_on))
  855. return PLUGIN_HANDLED
  856.  
  857. read_args(typedpass, charsmax(typedpass))
  858. remove_quotes(typedpass)
  859.  
  860. new passlength = strlen(typedpass)
  861.  
  862. if(equal(typedpass, ""))
  863. return PLUGIN_HANDLED
  864.  
  865. if(is_registered[id])
  866. {
  867. client_printcolor(id, "%L", LANG_SERVER, "REG_EXISTS", prefix)
  868. return PLUGIN_HANDLED
  869. }
  870.  
  871. if(passlength < get_pcvar_num(g_pass_length))
  872. {
  873. client_printcolor(id, "%L", LANG_SERVER, "REG_LEN", prefix, get_pcvar_num(g_pass_length))
  874. client_cmd(id, "messagemode REGISTER_PASS")
  875. return PLUGIN_HANDLED
  876. }
  877.  
  878. new_pass[id] = typedpass
  879. ConfirmPassword(id)
  880. return PLUGIN_CONTINUE
  881. }
  882. /*==============================================================================
  883. End of Register function
  884. ================================================================================*/
  885.  
  886. /*==============================================================================
  887. Start of Change Password function
  888. ================================================================================*/
  889. public ChangePasswordNew(id)
  890. {
  891. if(!get_pcvar_num(g_on) || !is_registered[id] || !is_logged[id])
  892. return PLUGIN_HANDLED
  893.  
  894. read_args(typedpass, charsmax(typedpass))
  895. remove_quotes(typedpass)
  896.  
  897. new passlenght = strlen(typedpass)
  898.  
  899. if(equal(typedpass, ""))
  900. return PLUGIN_HANDLED
  901.  
  902. if(passlenght < get_pcvar_num(g_pass_length))
  903. {
  904. client_printcolor(id, "%L", LANG_SERVER, "REG_LEN", prefix, get_pcvar_num(g_pass_length))
  905. client_cmd(id, "messagemode CHANGE_PASS_NEW")
  906. return PLUGIN_HANDLED
  907. }
  908.  
  909. new_pass[id] = typedpass
  910. client_cmd(id, "messagemode CHANGE_PASS_OLD")
  911. return PLUGIN_CONTINUE
  912. }
  913.  
  914. public ChangePasswordOld(id)
  915. {
  916. if(!get_pcvar_num(g_on) || !is_registered[id] || !is_logged[id])
  917. return PLUGIN_HANDLED
  918.  
  919. read_args(typedpass, charsmax(typedpass))
  920. remove_quotes(typedpass)
  921. formatex(passsalt, charsmax(passsalt), "%s%s", typedpass, SALT)
  922. md5(passsalt, hash)
  923.  
  924. if(equal(typedpass, "") || equal(new_pass[id], ""))
  925. return PLUGIN_HANDLED
  926.  
  927. if(!equali(hash, password[id]))
  928. {
  929. client_printcolor(id, "%L", LANG_SERVER, "CHANGE_NO", prefix)
  930. return PLUGIN_HANDLED
  931. }
  932.  
  933. ConfirmPassword(id)
  934. return PLUGIN_CONTINUE
  935. }
  936. /*==============================================================================
  937. End of Change Password function
  938. ================================================================================*/
  939.  
  940. /*==============================================================================
  941. Start of Confirming Register's or Change Password's password function
  942. ================================================================================*/
  943. public ConfirmPassword(id)
  944. {
  945. if(!get_pcvar_num(g_on) || !is_user_connected(id))
  946. return PLUGIN_HANDLED
  947.  
  948. length = 0
  949.  
  950. formatex(menu, charsmax(menu) - length, "%L", LANG_SERVER, "MENU_PASS", new_pass[id])
  951. keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_0
  952.  
  953. show_menu(id, keys, menu, -1, "Password Menu")
  954. return PLUGIN_CONTINUE
  955. }
  956.  
  957. public HandlerConfirmPasswordMenu(id, key)
  958. {
  959. switch(key)
  960. {
  961. case 0:
  962. {
  963. get_user_name(id, name, charsmax(name))
  964. formatex(passsalt, charsmax(passsalt), "%s%s", new_pass[id], SALT)
  965. md5(passsalt, hash)
  966.  
  967. if(is_registered[id])
  968. {
  969. if(get_pcvar_num(g_save))
  970. {
  971. formatex(namepass, charsmax(namepass), "UPDATE `registersystem` SET Password = ^"%s^", Status = ^"%s^" WHERE Name = ^"%s^";", hash, is_autolog[id] == true ? "LOGGED" : "", name)
  972. SQL_ThreadQuery(g_SQLTuple, "QuerySetData", namepass)
  973. }
  974. else
  975. {
  976. new line, file = fopen(reg_file, "r")
  977.  
  978. while(!feof(file))
  979. {
  980. fgets(file, namepass, 255)
  981. line++
  982. parse(namepass, namepass, charsmax(namepass))
  983.  
  984. if(equal(namepass, name))
  985. {
  986. formatex(namepass, charsmax(namepass), "^"%s^" ^"%s^" ^"%s^"", name, hash, is_autolog[id] == true ? "LOGGED" : "")
  987. write_file(reg_file, namepass, line - 1)
  988.  
  989. break
  990. }
  991. }
  992. fclose(file)
  993. }
  994. get_pcvar_string(g_setinfo_pr, pass_prefix, charsmax(pass_prefix))
  995. client_cmd(id, "setinfo %s %s",pass_prefix, new_pass[id])
  996. client_printcolor(id, "%L", LANG_SERVER, "CHANGE_NEW", prefix, new_pass[id])
  997. password[id] = hash
  998. times[id]++
  999.  
  1000. if(get_pcvar_num(g_chp_log))
  1001. {
  1002. log_to_file(log_file, "%L", LANG_SERVER, "LOGFILE_CHNG_PASS", name)
  1003. }
  1004. }
  1005. else
  1006. {
  1007. if(get_pcvar_num(g_save))
  1008. {
  1009. formatex(namepass, charsmax(namepass), "INSERT INTO `registersystem` (`Name`, `Password`, `Status`) VALUES (^"%s^", ^"%s^", ^"^");", name, hash)
  1010. SQL_ThreadQuery(g_SQLTuple, "QuerySetData", namepass)
  1011. }
  1012. else
  1013. {
  1014. new file = fopen(reg_file, "a")
  1015. format(namepass, charsmax(namepass), "^n^"%s^" ^"%s^" ^"^"", name, hash)
  1016. fprintf(file, namepass)
  1017. fclose(file)
  1018. }
  1019. remove_task(id+TASK_KICK)
  1020. params[1] = 2
  1021. set_task(get_pcvar_float(g_logtime), "KickPlayer", id+TASK_KICK, params, sizeof params)
  1022. client_printcolor(id, "%L", LANG_SERVER, "REG_REGIS", prefix, new_pass[id], get_pcvar_num(g_logtime))
  1023. is_registered[id] = true
  1024. password[id] = hash
  1025. new_pass[id] = ""
  1026.  
  1027. if(get_pcvar_num(g_reg_log))
  1028. {
  1029. log_to_file(log_file, "%L", LANG_SERVER, "LOGFILE_REG", name)
  1030. }
  1031. }
  1032. Menu(id)
  1033. }
  1034. case 1:
  1035. {
  1036. if(is_registered[id])
  1037. {
  1038. client_cmd(id, "messagemode CHANGE_PASS_NEW")
  1039. }
  1040. else
  1041. {
  1042. client_cmd(id, "messagemode REGISTER_PASS")
  1043. }
  1044. }
  1045. case 9:
  1046. {
  1047. Menu(id)
  1048. return PLUGIN_HANDLED
  1049. }
  1050. }
  1051. return PLUGIN_HANDLED
  1052. }
  1053.  
  1054. public QuerySetData(FailState, Handle:Query, error[],errcode, data[], datasize)
  1055. {
  1056. if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  1057. {
  1058. log_amx("%s", error)
  1059. return
  1060. }
  1061. }
  1062. /*==============================================================================
  1063. End of Confirming Register's or Change Password's password function
  1064. ================================================================================*/
  1065.  
  1066. /*==============================================================================
  1067. Start of Player PreThink function for the blind function
  1068. ================================================================================*/
  1069. public PlayerPreThink(id)
  1070. {
  1071. if(!get_pcvar_num(g_on) || !get_pcvar_num(g_blind) || !is_user_connected(id))
  1072. return PLUGIN_HANDLED
  1073.  
  1074. if((!is_registered[id] && get_pcvar_float(g_regtime)) || (is_registered[id] && !is_logged[id]))
  1075. {
  1076. message_begin(MSG_ONE_UNRELIABLE, g_screenfade, {0,0,0}, id)
  1077. write_short(1<<12)
  1078. write_short(1<<12)
  1079. write_short(0x0000)
  1080. write_byte(0)
  1081. write_byte(0)
  1082. write_byte(0)
  1083. write_byte(255)
  1084. message_end()
  1085. }
  1086.  
  1087. return PLUGIN_CONTINUE
  1088. }
  1089. /*==============================================================================
  1090. End of Player PreThink function for the blind function
  1091. ================================================================================*/
  1092.  
  1093. /*==============================================================================
  1094. Start of Client Info Change function for hooking name change of clients
  1095. ================================================================================*/
  1096. public ClientInfoChanged(id)
  1097. {
  1098. if(!get_pcvar_num(g_on) || !is_user_connected(id))
  1099. return FMRES_IGNORED
  1100.  
  1101. new g_oldname[32], g_newname[32];
  1102.  
  1103. pev(id, pev_netname, g_oldname, charsmax(g_oldname))
  1104.  
  1105. if(g_oldname[0])
  1106. {
  1107. get_user_info(id, "name", g_newname, charsmax(g_newname))
  1108. replace_all(g_newname, charsmax(g_newname), "%", " ")
  1109.  
  1110. if(!equal(g_oldname, g_newname))
  1111. {
  1112.  
  1113. switch(get_pcvar_num(g_name))
  1114. {
  1115. case 0:
  1116. {
  1117. set_pev(id, pev_netname, g_newname)
  1118. create_name_change_msg(id, g_oldname, g_newname)
  1119. set_task(1.0, "CheckClient", id)
  1120. return FMRES_HANDLED
  1121. }
  1122. case 1:
  1123. {
  1124. if(is_logged[id])
  1125. {
  1126. set_user_info(id, "name", g_oldname)
  1127. client_printcolor(id, "%L", LANG_SERVER, "NAME_CHANGE_LOG", prefix)
  1128. return FMRES_HANDLED
  1129. }
  1130. else
  1131. {
  1132. set_pev(id, pev_netname, g_newname)
  1133. create_name_change_msg(id, g_oldname, g_newname)
  1134. set_task(1.0, "CheckClient", id)
  1135. return FMRES_HANDLED
  1136. }
  1137. }
  1138. case 2:
  1139. {
  1140. set_user_info(id, "name", g_oldname)
  1141. client_printcolor(id, "%L", LANG_SERVER, "NAME_CHANGE_ALL", prefix)
  1142. return FMRES_HANDLED
  1143. }
  1144. }
  1145. }
  1146. }
  1147. return FMRES_IGNORED
  1148. }
  1149. /*==============================================================================
  1150. End of Client Info Change function for hooking name change of clients
  1151. ================================================================================*/
  1152.  
  1153. /*==============================================================================
  1154. Start of Kick Player function
  1155. ================================================================================*/
  1156. public KickPlayer(parameter[])
  1157. {
  1158. new id = parameter[0]
  1159. new reason = parameter[1]
  1160.  
  1161. if(is_user_connected(id))
  1162. {
  1163. new userid = get_user_userid(id)
  1164.  
  1165. switch(reason)
  1166. {
  1167. case 1:
  1168. {
  1169. if(is_registered[id])
  1170. return PLUGIN_HANDLED
  1171.  
  1172. server_cmd("kick #%i ^"%L^"", userid, LANG_PLAYER, "KICK_REG")
  1173. console_print(id, "%L", LANG_SERVER, "KICK_INFO")
  1174. return PLUGIN_CONTINUE
  1175. }
  1176. case 2:
  1177. {
  1178. if(is_logged[id])
  1179. return PLUGIN_HANDLED
  1180.  
  1181. server_cmd("kick #%i ^"%L^"", userid, LANG_PLAYER, "KICK_LOGIN")
  1182. console_print(id, "%L", LANG_SERVER, "KICK_INFO")
  1183. return PLUGIN_CONTINUE
  1184. }
  1185. case 3:
  1186. {
  1187. server_cmd("kick #%i ^"%L^"", userid, LANG_PLAYER, "KICK_ATMP", get_pcvar_num(g_attempts))
  1188. console_print(id, "%L", LANG_SERVER, "KICK_INFO")
  1189. return PLUGIN_CONTINUE
  1190. }
  1191. case 4:
  1192. {
  1193. server_cmd("kick #%i ^"%L^"", userid, LANG_SERVER, "KICK_LOGOUT")
  1194. console_print(id, "%L", LANG_SERVER, "KICK_INFO")
  1195. return PLUGIN_CONTINUE
  1196. }
  1197. }
  1198. }
  1199. return PLUGIN_CONTINUE
  1200. }
  1201. /*==============================================================================
  1202. End of Kick Player function
  1203. ================================================================================*/
  1204.  
  1205. /*==============================================================================
  1206. Start of Plugin's stocks
  1207. ================================================================================*/
  1208. stock create_name_change_msg(const id, const g_oldname[], const g_newname[])
  1209. {
  1210. message_begin(MSG_BROADCAST, g_saytxt)
  1211. write_byte(id)
  1212. write_string(NAME_CHANGE_MSG)
  1213. write_string(g_oldname)
  1214. write_string(g_newname)
  1215. message_end()
  1216. }
  1217.  
  1218. stock client_printcolor(const id, const input[], any:...)
  1219. {
  1220. new count = 1, players[32];
  1221. static msg[191];
  1222. vformat(msg, 190, input, 3)
  1223. replace_all(msg,190,"!g","^4")
  1224. replace_all(msg,190,"!n","^1")
  1225. replace_all(msg,190,"!t","^3")
  1226. replace_all(msg,190,"!w","^0")
  1227. if(id) players[0] = id
  1228. else get_players(players , count , "ch")
  1229. {
  1230. for(new i = 0; i < count; i++)
  1231. {
  1232. if(is_user_connected(players[i]))
  1233. {
  1234. message_begin(MSG_ONE_UNRELIABLE, g_saytxt,_, players[i])
  1235. write_byte(players[i])
  1236. write_string(msg)
  1237. message_end()
  1238. }
  1239. }
  1240. }
  1241. }
  1242. /*==============================================================================
  1243. End of Plugin's stocks
  1244. ================================================================================*/
  1245. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  1246. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  1247. */
  1248.  

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/