hlmod.hu

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



Jelenlévő felhasználók

Jelenleg 201 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 201 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  [ 5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Mforce reg rendszer
HozzászólásElküldve: 2016.02.05. 20:46 
Offline
Jómunkásember

Csatlakozott: 2014.01.04. 18:31
Hozzászólások: 326
Megköszönt másnak: 79 alkalommal
Megköszönték neki: 7 alkalommal
Hello.Valaki beleírná,hogy legyen egy olyan funkciója,hogy ha a játékos beállítja akkor jegyezze meg a jelszavát.

  1. #include <amxmodx>
  2. #include <fakemeta>
  3.  
  4. #define PLUGIN "Registration System"
  5. #define VERSION "1.2"
  6. #define AUTHOR "mforce"
  7.  
  8.  
  9. new const PREFIX[] = "RegSystem"
  10.  
  11. // If you want to use the SQL remove the // characters before the #. (default is file)
  12. #define SQL
  13.  
  14. #if defined SQL
  15.     #include <sqlx>
  16.     new Handle:g_SqlTuple;
  17.     new Query[512], text[512];
  18.    
  19.     new const SQL_INFO[][] = {
  20.         "xx",   // HOST
  21.         "xx",       // USERNAME
  22.         "xx",       // PASSWORD
  23.         "xxx"       // DATABASE
  24.     }
  25. #else
  26.     new filename[128];
  27. #endif
  28.  
  29. new bool:registered[33];
  30. new bool:loggedin[33];
  31. new username[33][32], password[33][32], writepass[33][32];
  32.  
  33. public plugin_init() {
  34.     register_plugin(PLUGIN, VERSION, AUTHOR)
  35.    
  36.     register_clcmd("say /reg", "reg_menu")
  37.     register_clcmd("TYPE_PASSWORD", "Type_password")
  38.     register_clcmd("NEW_PASSWORD", "New_password")
  39.     register_cvar("reg_system", AUTHOR, FCVAR_SERVER | FCVAR_SPONLY);
  40.     register_dictionary("reg_system.txt");
  41.     register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged")
  42.     //set_task(60.0, "regcheck", .flags = "b");
  43.    
  44.     #if !defined SQL
  45.     get_localinfo("amxx_configsdir", filename, charsmax(filename))
  46.     format(filename, charsmax(filename), "%s/registration_system.ini", filename)
  47.     #endif
  48. }
  49.  
  50. public regcheck() {
  51.     new players[32], num;
  52.     get_players(players, num, "ch")
  53.     for(new i = 0; i < num; i++) {
  54.         new tempid = players[i]
  55.         if(!loggedin[tempid]) {
  56.             ChatColor(tempid, "^4[%s]^1 %L ^3/reg", PREFIX, LANG_SERVER, "HELP", LANG_SERVER, registered[tempid] ? "FOR_LOGIN":"FOR_REGISTER");
  57.         }
  58.     }
  59. }
  60.  
  61. public client_putinserver(id) {
  62.     if(!is_user_bot(id) && !is_user_hltv(id)) {
  63.         get_user_name(id, username[id], charsmax(username[]));
  64.         load(id);
  65.     }
  66. }
  67.  
  68. public client_disconnect(id) {
  69.     loggedin[id] = false;
  70.     registered[id] = false;
  71.     username[id] = "";
  72.     password[id] = "";
  73.     writepass[id] = "";
  74.     if(task_exists(id)) remove_task(id);
  75. }
  76.  
  77. public reg_menu(id) {
  78.     new temp[128], loggedinmsg[32], registeredmsg[32], logoffmsg[32], notreggedname[32], exitname[32];
  79.     formatex(notreggedname, charsmax(notreggedname), "%L", LANG_SERVER, "NOTREGGED");
  80.     formatex(loggedinmsg, charsmax(loggedinmsg), "%L", LANG_SERVER, loggedin[id] ? "LOGGED_IN":"REGISTERED");
  81.     formatex(temp, charsmax(temp), "\r[\y%s\r] %L", PREFIX, LANG_SERVER, "REG_MENU_TITLE", AUTHOR, registered[id] ? loggedinmsg:notreggedname);
  82.     new menu = menu_create(temp, "reg_menu_h" )
  83.  
  84.     formatex(temp, charsmax(temp), "%L", LANG_SERVER, "USERNAME", username[id])
  85.     menu_additem(menu,temp, "0",0)
  86.     formatex(temp, charsmax(temp), "%L", LANG_SERVER, "PASSWORD", writepass[id])
  87.     menu_additem(menu,temp, "1",0)
  88.     formatex(registeredmsg, charsmax(registeredmsg), "%L", LANG_SERVER, registered[id] ? "LOGIN":"REGISTER")
  89.     formatex(logoffmsg, charsmax(logoffmsg), "%L", LANG_SERVER, "LOGOFF")
  90.     formatex(temp, charsmax(temp), "%s^n", loggedin[id] ? logoffmsg:registeredmsg)
  91.     menu_additem(menu,temp, "2",0)
  92.     if(loggedin[id])
  93.     {
  94.         formatex(temp, charsmax(temp), "%L", LANG_SERVER, "CHGPASS")
  95.         menu_additem(menu,temp, "3",0)
  96.     }
  97.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  98.     formatex(exitname, charsmax(exitname), "%L", LANG_SERVER, "EXIT")
  99.     menu_setprop(menu, MPROP_EXITNAME, exitname);
  100.     menu_display(id, menu, 0)
  101.     return PLUGIN_HANDLED;
  102. }
  103.  
  104. public reg_menu_h(id, menu, item) {
  105.     if(item == MENU_EXIT) {
  106.         menu_destroy(menu);
  107.         return PLUGIN_HANDLED;
  108.     }
  109.     new command[6], name[64], access, callback;
  110.     menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
  111.  
  112.     switch(item)
  113.     {
  114.         case 0: {
  115.             reg_menu(id)
  116.         }
  117.         case 1: {
  118.             if(!loggedin[id]) {
  119.                 client_cmd(id, "messagemode TYPE_PASSWORD")
  120.             }
  121.             else reg_menu(id)
  122.         }
  123.         case 2: {
  124.             if(registered[id]) {
  125.                 if(!loggedin[id]) {
  126.                     if(strlen(password[id]) >= 6 && equal(writepass[id], password[id])) {
  127.                         ChatColor(id, "^4[%s]^1 %L ^3/reg", PREFIX, LANG_SERVER, "SUCCESS_LOGIN")
  128.                         loggedin[id] = true;
  129.                     }
  130.                     else {
  131.                         ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "WRONG_PASS")
  132.                         writepass[id] = "";
  133.                         reg_menu(id)
  134.                     }
  135.                 }
  136.                 else {
  137.                     loggedin[id] = false;
  138.                     ChatColor(id, "^4[%s]^1 %L ^3/reg", PREFIX, LANG_SERVER, "SUCCESS_LOGOFF")
  139.                     writepass[id] = "";
  140.                 }
  141.             }
  142.             else {
  143.                 if(strlen(writepass[id]) >= 6) {
  144.                     ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "SUCCESS_REGISTER")
  145.                     copy(password[id], charsmax(password[]), writepass[id]);
  146.                     registered[id] = true;
  147.                     save(id);
  148.                     reg_menu(id)
  149.                 }
  150.                 else reg_menu(id)
  151.             }
  152.         }
  153.         case 3: {
  154.             if(loggedin[id]) {
  155.                 client_cmd(id, "messagemode NEW_PASSWORD")
  156.             }
  157.             else reg_menu(id)
  158.         }
  159.     }
  160.    
  161.     menu_destroy(menu);
  162.     return PLUGIN_HANDLED;
  163. }
  164.  
  165. public Type_password(id) {
  166.     new adat[32]
  167.     read_args(adat, charsmax(adat))
  168.     remove_quotes(adat)
  169.     if(strlen(adat) < 6) {
  170.         ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "PASS_CHANGE1")
  171.     }
  172.     else {
  173.         copy(writepass[id], charsmax(writepass[]), adat)
  174.     }
  175.     reg_menu(id)
  176. }
  177.  
  178. public New_password(id) {
  179.     if(!loggedin[id]) return;
  180.    
  181.     new adat[32]
  182.     read_args(adat, charsmax(adat))
  183.     remove_quotes(adat)
  184.     if(strlen(adat) < 6) {
  185.         ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "PASS_CHANGE1")
  186.     }
  187.     else {
  188.         copy(writepass[id], charsmax(writepass[]), adat)
  189.         copy(password[id], charsmax(password[]), adat)
  190.         ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "PASS_CHANGE2")
  191.         #if defined SQL
  192.         update(id);
  193.         #else
  194.         save(id);
  195.         #endif
  196.     }
  197.     reg_menu(id)
  198. }
  199.  
  200. public ClientUserInfoChanged(id, buffer) {
  201.     if (!is_user_connected(id))
  202.         return FMRES_IGNORED
  203.     static name[32], val[32]
  204.     get_user_name(id, name, charsmax(name))
  205.     engfunc(EngFunc_InfoKeyValue, buffer, "name", val, charsmax(val))
  206.     if (equal(val, name))
  207.         return FMRES_IGNORED
  208.     engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
  209.     client_cmd(id, "name ^"%s^"; setinfo name ^"%s^"", name, name)
  210.     ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "NAMECHANGE_BLOCK")
  211.     return FMRES_SUPERCEDE
  212. }
  213.  
  214. public plugin_natives() {
  215.     register_native("is_user_loggedin", "native_loggedin", 1);
  216.     register_native("is_user_registered", "native_registered", 1);
  217. }
  218. public native_loggedin(index) {
  219.     return loggedin[index];
  220. }
  221. public native_registered(index) {
  222.     return registered[index];
  223. }
  224.  
  225. stock ChatColor(const id, const szMessage[], any:...) {
  226.     static pnum, players[32], szMsg[190], IdMsg;
  227.     vformat(szMsg, charsmax(szMsg), szMessage, 3);
  228.    
  229.     if(!IdMsg) IdMsg = get_user_msgid("SayText");
  230.    
  231.     if(id) {
  232.         if(!is_user_connected(id)) return;
  233.         players[0] = id;
  234.         pnum = 1;
  235.     }
  236.     else get_players(players, pnum, "ch");
  237.    
  238.     for(new i; i < pnum; i++) {
  239.         message_begin(MSG_ONE, IdMsg, .player = players[i]);
  240.         write_byte(players[i]);
  241.         write_string(szMsg);
  242.         message_end();
  243.     }
  244. }
  245.  
  246. #if defined SQL
  247. public plugin_cfg() {
  248.     g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3])
  249.     formatex(Query, charsmax(Query), "CREATE TABLE IF NOT EXISTS registration_system (`username` varchar(32) NOT NULL,`password` varchar(32) NOT NULL,`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
  250.     SQL_ThreadQuery(g_SqlTuple,"createTableThread", Query)
  251. }
  252.  
  253. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  254.     if(FailState == TQUERY_CONNECT_FAILED)
  255.         set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  256.     else if(FailState == TQUERY_QUERY_FAILED)
  257.         set_fail_state("Query Error");
  258.     if(Errcode)
  259.         log_amx("Hibat dobtam: %s",Error);
  260. }
  261.  
  262. public load(id) {
  263.     new Data[1]
  264.     Data[0] = id
  265.  
  266.     formatex(Query, charsmax(Query), "SELECT * FROM `registration_system` WHERE username = ^"%s^";", username[id])
  267.     SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1)
  268. }
  269.  
  270. public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  271.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
  272.         log_amx("%s", Error)
  273.         return
  274.     }
  275.     else {
  276.         new id = Data[0];
  277.  
  278.         if(SQL_NumRows(Query) > 0) {
  279.             SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "password"), password[id], charsmax(password[]));
  280.             registered[id] = true;
  281.             //set_task(10.0, "reg_menu", id);
  282.         }
  283.     }
  284. }
  285.  
  286. public save(id) {
  287.     formatex(text, charsmax(text), "INSERT INTO `registration_system` (`username`, `password`) VALUES (^"%s^", ^"%s^");", username[id], password[id])
  288.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text)
  289. }
  290.  
  291. public update(id) {
  292.     formatex(text, charsmax(text), "UPDATE `registration_system` SET password = ^"%s^" WHERE username = ^"%s^";", password[id], username[id])
  293.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text)
  294. }
  295.  
  296. public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  297.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
  298.         log_amx("%s", Error)
  299.         return
  300.     }
  301. }
  302.  
  303. public plugin_end() {
  304.     SQL_FreeHandle(g_SqlTuple)
  305. }
  306.  
  307. #else
  308.  
  309. public load(id) {
  310.     new szData[32];
  311.  
  312.     if(get_data(username[id], szData, charsmax(szData))) {
  313.         new szPassword[32];
  314.         parse(szData, szPassword, charsmax(szPassword));
  315.         copy(password[id], charsmax(password[]), szPassword)
  316.         registered[id] = true;
  317.         //set_task(10.0, "reg_menu", id);
  318.     }
  319. }
  320.  
  321. public save(id) {
  322.     new szData[32];
  323.     formatex(szData, charsmax(szData), "%s", password[id]);
  324.     set_data(username[id], szData)
  325. }
  326.  
  327. stock get_data(const key[], data[], len) {
  328.     new vault = fopen(filename, "rt");
  329.     new _data[512], _key[64];
  330.    
  331.     while( !feof(vault) ) {
  332.         fgets(vault, _data, charsmax(_data));
  333.         parse(_data, _key, charsmax(_key), data, len);
  334.        
  335.         if( equal(_key, key) ) {
  336.             fclose(vault);
  337.             return 1;
  338.         }
  339.     }
  340.    
  341.     fclose(vault);
  342.     copy(data, len, "");
  343.    
  344.     return 0;
  345. }
  346.  
  347. stock set_data(const key[], const data[]) {
  348.     static const temp_vault_name[] = "set_data.txt";
  349.     new file = fopen(temp_vault_name, "wt");
  350.    
  351.     new vault = fopen(filename, "rt");
  352.     new _data[512], _key[64], _other[32];
  353.     new bool:replaced = false;
  354.    
  355.     while( !feof(vault) ) {
  356.         fgets(vault, _data, charsmax(_data));
  357.         parse(_data, _key, charsmax(_key), _other, charsmax(_other));
  358.        
  359.         if( equal(_key, key) && !replaced ) {
  360.             fprintf(file, "^"%s^" ^"%s^"^n", key, data);
  361.            
  362.             replaced = true;
  363.         }
  364.         else {
  365.             fputs(file, _data);
  366.         }
  367.     }
  368.    
  369.     if( !replaced ) {
  370.         fprintf(file, "^"%s^" ^"%s^"^n", key, data);
  371.     }
  372.    
  373.     fclose(file);
  374.     fclose(vault);
  375.    
  376.     delete_file(filename);
  377.    
  378.     while( !rename_file(temp_vault_name, filename, 1) ) { }
  379.    
  380.     //delete_file(temp_vault_name);
  381. }
  382. #endif


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Mforce reg rendszer
HozzászólásElküldve: 2016.02.05. 20:48 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Nem ajánlanám.
setinfo-ból ki lehet olvasni. Ha steamid-re menti, meg nincs értelme a regrendszernek. Szóval érted.

_________________
GitHub - mforce


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Mforce reg rendszer
HozzászólásElküldve: 2016.02.05. 20:49 
Offline
Jómunkásember

Csatlakozott: 2014.01.04. 18:31
Hozzászólások: 326
Megköszönt másnak: 79 alkalommal
Megköszönték neki: 7 alkalommal
Sokan mondták ,hogy unják beírnia jelszót ,ezért gondoltam


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Mforce reg rendszer
HozzászólásElküldve: 2016.02.05. 21:35 
Offline
Fórum Moderátor
Avatar

Csatlakozott: 2014.05.01. 13:18
Hozzászólások: 627
Megköszönt másnak: 61 alkalommal
Megköszönték neki: 104 alkalommal
Esetleg egy olyat tudok ajánlani, bár én sem használom, hogy beiktatsz egy konzol parancsot, teszem azt amx_login mely után két körmözött részt olvastatsz ki és ezek alapján ellenőrizteted a belépést is. Természetesen ezt a játékosnak kell beírnia, de akár így be is bindelhet: bind key "amx_login felhasználó jelszó" Érthető?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Mforce reg rendszer
HozzászólásElküldve: 2016.02.05. 22:42 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.01.15. 19:04
Hozzászólások: 407
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 176 alkalommal
  1. #include <amxmodx>
  2. #include <fakemeta>
  3.  
  4. #define PLUGIN "Registration System"
  5. #define VERSION "1.2"
  6. #define AUTHOR "mforce"
  7.  
  8.  
  9. new const PREFIX[] = "RegSystem"
  10.  
  11. // If you want to use the SQL remove the // characters before the #. (default is file)
  12. #define SQL
  13.  
  14. #if defined SQL
  15.     #include <sqlx>
  16.     new Handle:g_SqlTuple;
  17.     new Query[512], text[512];
  18.    
  19.     new const SQL_INFO[][] = {
  20.         "xx",   // HOST
  21.         "xx",       // USERNAME
  22.         "xx",       // PASSWORD
  23.         "xxx"       // DATABASE
  24.     }
  25. #else
  26.     new filename[128];
  27. #endif
  28.  
  29. new bool:registered[33];
  30. new bool:loggedin[33];
  31. new username[33][32], password[33][32], writepass[33][32];
  32.  
  33. public plugin_init() {
  34.     register_plugin(PLUGIN, VERSION, AUTHOR)
  35.    
  36.     register_clcmd("say /reg", "reg_menu")
  37.     register_clcmd("TYPE_PASSWORD", "Type_password")
  38.     register_clcmd("NEW_PASSWORD", "New_password")
  39.     register_cvar("reg_system", AUTHOR, FCVAR_SERVER | FCVAR_SPONLY);
  40.     register_dictionary("reg_system.txt");
  41.     register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged")
  42.     //set_task(60.0, "regcheck", .flags = "b");
  43.    
  44.     #if !defined SQL
  45.     get_localinfo("amxx_configsdir", filename, charsmax(filename))
  46.     format(filename, charsmax(filename), "%s/registration_system.ini", filename)
  47.     #endif
  48. }
  49.  
  50. public regcheck() {
  51.     new players[32], num;
  52.     get_players(players, num, "ch")
  53.     for(new i = 0; i < num; i++) {
  54.         new tempid = players[i]
  55.         if(!loggedin[tempid]) {
  56.             ChatColor(tempid, "^4[%s]^1 %L ^3/reg", PREFIX, LANG_SERVER, "HELP", LANG_SERVER, registered[tempid] ? "FOR_LOGIN":"FOR_REGISTER");
  57.         }
  58.     }
  59. }
  60.  
  61. public client_putinserver(id) {
  62.     if(!is_user_bot(id) && !is_user_hltv(id)) {
  63.         get_user_name(id, username[id], charsmax(username[]));
  64.         load(id);
  65.     }
  66. }
  67.  
  68. public client_disconnect(id) {
  69.     loggedin[id] = false;
  70.     registered[id] = false;
  71.     username[id] = "";
  72.     password[id] = "";
  73.     writepass[id] = "";
  74.     if(task_exists(id)) remove_task(id);
  75. }
  76.  
  77. public reg_menu(id) {
  78.     new temp[128], loggedinmsg[32], registeredmsg[32], logoffmsg[32], notreggedname[32], exitname[32];
  79.     formatex(notreggedname, charsmax(notreggedname), "%L", LANG_SERVER, "NOTREGGED");
  80.     formatex(loggedinmsg, charsmax(loggedinmsg), "%L", LANG_SERVER, loggedin[id] ? "LOGGED_IN":"REGISTERED");
  81.     formatex(temp, charsmax(temp), "\r[\y%s\r] %L", PREFIX, LANG_SERVER, "REG_MENU_TITLE", AUTHOR, registered[id] ? loggedinmsg:notreggedname);
  82.     new menu = menu_create(temp, "reg_menu_h" )
  83.  
  84.     formatex(temp, charsmax(temp), "%L", LANG_SERVER, "USERNAME", username[id])
  85.     menu_additem(menu,temp, "0",0)
  86.     formatex(temp, charsmax(temp), "%L", LANG_SERVER, "PASSWORD", writepass[id])
  87.     menu_additem(menu,temp, "1",0)
  88.     formatex(registeredmsg, charsmax(registeredmsg), "%L", LANG_SERVER, registered[id] ? "LOGIN":"REGISTER")
  89.     formatex(logoffmsg, charsmax(logoffmsg), "%L", LANG_SERVER, "LOGOFF")
  90.     formatex(temp, charsmax(temp), "%s^n", loggedin[id] ? logoffmsg:registeredmsg)
  91.     menu_additem(menu,temp, "2",0)
  92.     if(loggedin[id])
  93.     {
  94.         formatex(temp, charsmax(temp), "%L", LANG_SERVER, "CHGPASS")
  95.         menu_additem(menu,temp, "3",0)
  96.         menu_additem(menu,"Auto login", "4",0)
  97.     }
  98.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  99.     formatex(exitname, charsmax(exitname), "%L", LANG_SERVER, "EXIT")
  100.     menu_setprop(menu, MPROP_EXITNAME, exitname);
  101.     menu_display(id, menu, 0)
  102.     return PLUGIN_HANDLED;
  103. }
  104.  
  105. public reg_menu_h(id, menu, item) {
  106.     if(item == MENU_EXIT) {
  107.         menu_destroy(menu);
  108.         return PLUGIN_HANDLED;
  109.     }
  110.     new command[6], name[64], access, callback;
  111.     menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
  112.  
  113.     switch(item)
  114.     {
  115.         case 0: {
  116.             reg_menu(id)
  117.         }
  118.         case 1: {
  119.             if(!loggedin[id]) {
  120.                 client_cmd(id, "messagemode TYPE_PASSWORD")
  121.             }
  122.             else reg_menu(id)
  123.         }
  124.         case 2: {
  125.             if(registered[id]) {
  126.                 if(!loggedin[id]) {
  127.                     if(strlen(password[id]) >= 6 && equal(writepass[id], password[id])) {
  128.                         ChatColor(id, "^4[%s]^1 %L ^3/reg", PREFIX, LANG_SERVER, "SUCCESS_LOGIN")
  129.                         loggedin[id] = true;
  130.                     }
  131.                     else {
  132.                         ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "WRONG_PASS")
  133.                         writepass[id] = "";
  134.                         reg_menu(id)
  135.                     }
  136.                 }
  137.                 else {
  138.                     loggedin[id] = false;
  139.                     ChatColor(id, "^4[%s]^1 %L ^3/reg", PREFIX, LANG_SERVER, "SUCCESS_LOGOFF")
  140.                     writepass[id] = "";
  141.                 }
  142.             }
  143.             else {
  144.                 if(strlen(writepass[id]) >= 6) {
  145.                     ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "SUCCESS_REGISTER")
  146.                     copy(password[id], charsmax(password[]), writepass[id]);
  147.                     registered[id] = true;
  148.                     save(id);
  149.                     reg_menu(id)
  150.                 }
  151.                 else reg_menu(id)
  152.             }
  153.         }
  154.         case 3: {
  155.             if(loggedin[id]) {
  156.                 client_cmd(id, "messagemode NEW_PASSWORD")
  157.             }
  158.             else reg_menu(id)
  159.         }
  160.         case 4: {
  161.             if(loggedin[id]) {
  162.                 client_cmd(id, "setinfo _rspass ^"%s^"", password[id]);
  163.                 ChatColor(id, "^4[%s]^1 Kovetkezo csatlakozaskor automatikussan be leszel jelentkezve. Ha megsem menne ird konzolba, hogy ^4setinfo _rspass ^"%s^"", PREFIX, password[id])
  164.             }
  165.         }
  166.     }
  167.    
  168.     menu_destroy(menu);
  169.     return PLUGIN_HANDLED;
  170. }
  171.  
  172. public Type_password(id) {
  173.     new adat[32]
  174.     read_args(adat, charsmax(adat))
  175.     remove_quotes(adat)
  176.     if(strlen(adat) < 6) {
  177.         ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "PASS_CHANGE1")
  178.     }
  179.     else {
  180.         copy(writepass[id], charsmax(writepass[]), adat)
  181.     }
  182.     reg_menu(id)
  183. }
  184.  
  185. public New_password(id) {
  186.     if(!loggedin[id]) return;
  187.    
  188.     new adat[32]
  189.     read_args(adat, charsmax(adat))
  190.     remove_quotes(adat)
  191.     if(strlen(adat) < 6) {
  192.         ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "PASS_CHANGE1")
  193.     }
  194.     else {
  195.         copy(writepass[id], charsmax(writepass[]), adat)
  196.         copy(password[id], charsmax(password[]), adat)
  197.         ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "PASS_CHANGE2")
  198.         #if defined SQL
  199.         update(id);
  200.         #else
  201.         save(id);
  202.         #endif
  203.     }
  204.     reg_menu(id)
  205. }
  206.  
  207. public ClientUserInfoChanged(id, buffer) {
  208.     if (!is_user_connected(id))
  209.         return FMRES_IGNORED
  210.     static name[32], val[32]
  211.     get_user_name(id, name, charsmax(name))
  212.     engfunc(EngFunc_InfoKeyValue, buffer, "name", val, charsmax(val))
  213.     if (equal(val, name))
  214.         return FMRES_IGNORED
  215.     engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
  216.     client_cmd(id, "name ^"%s^"; setinfo name ^"%s^"", name, name)
  217.     ChatColor(id, "^4[%s]^1 %L", PREFIX, LANG_SERVER, "NAMECHANGE_BLOCK")
  218.     return FMRES_SUPERCEDE
  219. }
  220.  
  221. public plugin_natives() {
  222.     register_native("is_user_loggedin", "native_loggedin", 1);
  223.     register_native("is_user_registered", "native_registered", 1);
  224. }
  225. public native_loggedin(index) {
  226.     return loggedin[index];
  227. }
  228. public native_registered(index) {
  229.     return registered[index];
  230. }
  231.  
  232. stock ChatColor(const id, const szMessage[], any:...) {
  233.     static pnum, players[32], szMsg[190], IdMsg;
  234.     vformat(szMsg, charsmax(szMsg), szMessage, 3);
  235.    
  236.     if(!IdMsg) IdMsg = get_user_msgid("SayText");
  237.    
  238.     if(id) {
  239.         if(!is_user_connected(id)) return;
  240.         players[0] = id;
  241.         pnum = 1;
  242.     }
  243.     else get_players(players, pnum, "ch");
  244.    
  245.     for(new i; i < pnum; i++) {
  246.         message_begin(MSG_ONE, IdMsg, .player = players[i]);
  247.         write_byte(players[i]);
  248.         write_string(szMsg);
  249.         message_end();
  250.     }
  251. }
  252.  
  253. #if defined SQL
  254. public plugin_cfg() {
  255.     g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3])
  256.     formatex(Query, charsmax(Query), "CREATE TABLE IF NOT EXISTS registration_system (`username` varchar(32) NOT NULL,`password` varchar(32) NOT NULL,`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
  257.     SQL_ThreadQuery(g_SqlTuple,"createTableThread", Query)
  258. }
  259.  
  260. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  261.     if(FailState == TQUERY_CONNECT_FAILED)
  262.         set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  263.     else if(FailState == TQUERY_QUERY_FAILED)
  264.         set_fail_state("Query Error");
  265.     if(Errcode)
  266.         log_amx("Hibat dobtam: %s",Error);
  267. }
  268.  
  269. public load(id) {
  270.     new Data[1]
  271.     Data[0] = id
  272.  
  273.     formatex(Query, charsmax(Query), "SELECT * FROM `registration_system` WHERE username = ^"%s^";", username[id])
  274.     SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1)
  275. }
  276.  
  277. public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  278.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
  279.         log_amx("%s", Error)
  280.         return
  281.     }
  282.     else {
  283.         new id = Data[0];
  284.  
  285.         if(SQL_NumRows(Query) > 0) {
  286.             SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "password"), password[id], charsmax(password[]));
  287.             registered[id] = true;
  288.             static Pass[32];
  289.             get_user_info(id, "_rspass", Pass, charsmax(Pass));
  290.    
  291.             if(strlen(Pass))
  292.                 loggedin[id] = equal(password[id], Pass) ? true : false;
  293.             //set_task(10.0, "reg_menu", id);
  294.         }
  295.     }
  296. }
  297.  
  298. public save(id) {
  299.     formatex(text, charsmax(text), "INSERT INTO `registration_system` (`username`, `password`) VALUES (^"%s^", ^"%s^");", username[id], password[id])
  300.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text)
  301. }
  302.  
  303. public update(id) {
  304.     formatex(text, charsmax(text), "UPDATE `registration_system` SET password = ^"%s^" WHERE username = ^"%s^";", password[id], username[id])
  305.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text)
  306. }
  307.  
  308. public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  309.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
  310.         log_amx("%s", Error)
  311.         return
  312.     }
  313. }
  314.  
  315. public plugin_end() {
  316.     SQL_FreeHandle(g_SqlTuple)
  317. }
  318.  
  319. #else
  320.  
  321. public load(id) {
  322.     new szData[32];
  323.  
  324.     if(get_data(username[id], szData, charsmax(szData))) {
  325.         new szPassword[32];
  326.         parse(szData, szPassword, charsmax(szPassword));
  327.         copy(password[id], charsmax(password[]), szPassword)
  328.         registered[id] = true;
  329.    
  330.         static Pass[32];
  331.         get_user_info(id, "_rspass", Pass, charsmax(Pass));
  332.    
  333.         if(strlen(Pass))
  334.             loggedin[id] = equal(password[id], Pass) ? true : false;
  335.         //set_task(10.0, "reg_menu", id);
  336.     }
  337. }
  338.  
  339. public save(id) {
  340.     new szData[32];
  341.     formatex(szData, charsmax(szData), "%s", password[id]);
  342.     set_data(username[id], szData)
  343. }
  344.  
  345. stock get_data(const key[], data[], len) {
  346.     new vault = fopen(filename, "rt");
  347.     new _data[512], _key[64];
  348.    
  349.     while( !feof(vault) ) {
  350.         fgets(vault, _data, charsmax(_data));
  351.         parse(_data, _key, charsmax(_key), data, len);
  352.        
  353.         if( equal(_key, key) ) {
  354.             fclose(vault);
  355.             return 1;
  356.         }
  357.     }
  358.    
  359.     fclose(vault);
  360.     copy(data, len, "");
  361.    
  362.     return 0;
  363. }
  364.  
  365. stock set_data(const key[], const data[]) {
  366.     static const temp_vault_name[] = "set_data.txt";
  367.     new file = fopen(temp_vault_name, "wt");
  368.    
  369.     new vault = fopen(filename, "rt");
  370.     new _data[512], _key[64], _other[32];
  371.     new bool:replaced = false;
  372.    
  373.     while( !feof(vault) ) {
  374.         fgets(vault, _data, charsmax(_data));
  375.         parse(_data, _key, charsmax(_key), _other, charsmax(_other));
  376.        
  377.         if( equal(_key, key) && !replaced ) {
  378.             fprintf(file, "^"%s^" ^"%s^"^n", key, data);
  379.            
  380.             replaced = true;
  381.         }
  382.         else {
  383.             fputs(file, _data);
  384.         }
  385.     }
  386.    
  387.     if( !replaced ) {
  388.         fprintf(file, "^"%s^" ^"%s^"^n", key, data);
  389.     }
  390.    
  391.     fclose(file);
  392.     fclose(vault);
  393.    
  394.     delete_file(filename);
  395.    
  396.     while( !rename_file(temp_vault_name, filename, 1) ) { }
  397.    
  398.     //delete_file(temp_vault_name);
  399. }
  400. #endif

Ők köszönték meg demon nek ezt a hozzászólást: gyurc1111 (2016.02.06. 00:22)
  Népszerűség: 2.27%


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


Ki van itt

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