hlmod.hu

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



Jelenlévő felhasználók

Jelenleg 140 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 140 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  [ 11 hozzászólás ]  Oldal 1 2 Következő
Szerző Üzenet
 Hozzászólás témája: Új regisztrációs rendszer bele iras
HozzászólásElküldve: 2020.05.10. 15:35 
Offline
Fanatikus

Csatlakozott: 2019.07.19. 10:58
Hozzászólások: 175
Megköszönt másnak: 37 alkalommal
Sziasztok valaki bele tudna nekem irni egy újabb regisztrációs rendszert? Mert ezt könnyen feltudják törni.


Csatolmányok:
test.sma [58.78 KiB]
Letöltve 53 alkalommal.
Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2020.05.10. 19:16 
Offline
Senior Tag
Avatar

Csatlakozott: 2017.08.09. 17:01
Hozzászólások: 266
Megköszönt másnak: 61 alkalommal
Megköszönték neki: 72 alkalommal
Alekvar írta:
Sziasztok valaki bele tudna nekem irni egy újabb regisztrációs rendszert? Mert ezt könnyen feltudják törni.


Bőven elég ha név mentésről átrakod steamidre.

_________________
"Szeretek aludni... mert az álmaim szebbek, mint a valóság."


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2020.05.10. 20:49 
Offline
Fanatikus

Csatlakozott: 2019.07.19. 10:58
Hozzászólások: 175
Megköszönt másnak: 37 alkalommal
És azt hogy tudnám megoldani, ha pl már regisztrált 40 játékos és nem akarom, hogy eltünjön mindene?

És azt se tudom megoldani, hogy steamidre mentsen, tudnal segiteni?


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2020.05.11. 09:55 
Offline
Nagyúr
Avatar

Csatlakozott: 2019.08.20. 18:19
Hozzászólások: 501
Megköszönt másnak: 244 alkalommal
Megköszönték neki: 45 alkalommal
Alekvar írta:
Sziasztok valaki bele tudna nekem irni egy újabb regisztrációs rendszert? Mert ezt könnyen feltudják törni.



Szia, tessék még bele írnod sem kell csak 1-2 dolgot.

Mysql

  1. -- phpMyAdmin SQL Dump
  2. -- version 4.8.5
  3. -- https://www.phpmyadmin.net/
  4. --
  5. -- Gép: db.synhosting.eu
  6. -- Létrehozás ideje: 2020. Feb 14. 22:16
  7. -- Kiszolgáló verziója: 5.7.28-log
  8. -- PHP verzió: 7.3.13-1+0~20191218.50+debian9~1.gbp23c2da
  9.  
  10. SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
  11. SET AUTOCOMMIT = 0;
  12. START TRANSACTION;
  13. SET time_zone = "+00:00";
  14.  
  15.  
  16. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  17. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  18. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  19. /*!40101 SET NAMES utf8mb4 */;
  20.  
  21. --
  22. -- Adatbázis: `aaaa`
  23. --
  24.  
  25. -- --------------------------------------------------------
  26.  
  27. --
  28. -- Tábla szerkezet ehhez a táblához `ska_register`
  29. --
  30.  
  31. CREATE TABLE `ska_register` (
  32.   `Id` INT(11) NOT NULL,
  33.   `Username` VARCHAR(32) NOT NULL,
  34.   `Password` VARCHAR(256) NOT NULL,
  35.   `RegistrationName` VARCHAR(32) NOT NULL,
  36.   `RegistrationIP` VARCHAR(32) NOT NULL,
  37.   `RegistrationID` VARCHAR(32) NOT NULL,
  38.   `RegistrationDate` VARCHAR(32) NOT NULL,
  39.   `Active` INT(1) NOT NULL DEFAULT '0',
  40.   `LastLoggedIp` VARCHAR(32) NOT NULL DEFAULT '0',
  41.   `LastLoggedSteamId` VARCHAR(32) NOT NULL DEFAULT '0',
  42.   `LastLoggedName` VARCHAR(32) NOT NULL DEFAULT '0',
  43.   `LastLoggedDate` VARCHAR(32) NOT NULL DEFAULT '0',
  44.   `PIN` INT(4) NOT NULL DEFAULT '0',
  45.   `Banned` INT(1) NOT NULL DEFAULT '0',
  46.   `BannedReason` VARCHAR(32) NOT NULL DEFAULT '0',
  47.   `AdminName` VARCHAR(32) NOT NULL DEFAULT '0',
  48.   `Parameter` INT(1) NOT NULL DEFAULT '0'
  49. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  50.  
  51. --
  52. -- Indexek a kiírt táblákhoz
  53. --
  54.  
  55. --
  56. -- A tábla indexei `ska_register`
  57. --
  58. ALTER TABLE `ska_register`
  59.   ADD PRIMARY KEY (`Id`);
  60.  
  61. --
  62. -- A kiírt táblák AUTO_INCREMENT értéke
  63. --
  64.  
  65. --
  66. -- AUTO_INCREMENT a táblához `ska_register`
  67. --
  68. ALTER TABLE `ska_register`
  69.   MODIFY `Id` INT(11) NOT NULL AUTO_INCREMENT;
  70. COMMIT;
  71.  
  72. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  73. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  74. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Include

  1. #if defined _RegSystem_SKA_included
  2.  #endinput
  3. #endif
  4.  
  5. #define _RegSystem_SKA_included
  6.  
  7. native ska_is_user_logged(id);
  8. native ska_get_user_id(id);
  9.  
  10. forward Load_User_Data(id);
  11. forward Update_User_Data(id);


Regsystem

  1. #include <amxmodx>
  2. #include <cstrike>
  3. #include <fakemeta>
  4. #include <hamsandwich>
  5. #include <regex>
  6. #include <engine>
  7. #include <sqlx>
  8.  
  9. #define KESZITO "Shedi"
  10. #define SEGITO "Kova"
  11. #define PLUGINNAME "SK Regisztrációs rendszer"
  12. #define VERZIOSZAM "1.1"
  13. #define HASHSIZE 256
  14.  
  15. #define onactive 1
  16. #define offactive 0
  17.  
  18. new const Prefix[] = "\w[.:SKA:.]";
  19. new const Stars[] = "*******************************";
  20. new const ChatPrefix[] = "^4[.:SKA:.] ^3»";
  21. new const DemoName[] = "ska_demo"
  22.  
  23. new const tablanev[] = "ska_register";
  24.  
  25. static szQuery[10048];
  26. new const SQL_INFO[][] = { "IP", "username", "Pw", "DB name" };
  27.  
  28. new String[121], AutoLogin[33];
  29. new g_screenfade, g_Maxplayers;
  30. new fwd_updatecmd, fwd_loadcmd, fwd_loadcmd1;
  31.  
  32. new Handle:g_SqlTuple;
  33. enum _:player_prop
  34. {
  35. steamid[32],
  36. ip[32],
  37. name[32],
  38. adminname[32],
  39. registerip[32],
  40. StarsOff,
  41. AccountId,
  42. Language,
  43. LoggedIn,
  44. InProgress,Active,
  45. RegOrLogin,
  46. IsBanned,
  47. BannedReason[32],
  48. Password[32],
  49. PasswordAgain[32],
  50. PasswordHash[HASHSIZE],
  51. StaredPassword[32],
  52. StaredPassAgain[32],
  53. Username[32],
  54. PINCode[4],
  55. SQLPINCode[4]
  56. }
  57. new Player[33][player_prop];
  58. enum _:sqlupdates
  59. {
  60.     S_Ban,
  61.     S_BanReason[32],
  62.     S_BanName,
  63.     S_ArgInt
  64. }
  65. new BanSystem[33][sqlupdates];
  66. new REGEX[][][] =
  67. {
  68.     {"A PINKód csak számokból állhat, és minimum^4 4^1 karakterből!", "PINCode only consist of numbers, minimum^4 4 characters.", "\y[\w%s\y]\d "},
  69.     {"Csak kis és nagybetü + számok (Minimum 4, maximum 16 karakter)", "Small, Large chars and numbers, also in^4 6-16^1 char range!", "\y[\w%s\y]\d "},}
  70. new PIN[][][] =
  71. {
  72.     {"\y[\w%s\y]\d Adj meg egy PIN Kódót!", "\y[\w%s\y]\d Type PIN Code!", "\y[\w%s\y]\d "},
  73.     {"Adj meg egy PINKódót, mert neked nincs!^nA PINkód a fiókod biztonsága érdekében!", "\d Type PINCode, the PINCode protect your account.", "\d "},
  74.     {"Kész", "\d Done", "\d "},
  75.     {"A mostani IP-d nem egyezik a Regisztráltal,ezért írd be a PIN kódót!", "\d This account registered IP does not match yours! Please enter your PIN Code!", ""},
  76.     {"Adj meg egy PINKódót, a fiókod biztonsága érdekében!", "\dType PINCode, the PINCode protect your account.", "\d "},
  77.     {"%s^1 A mostani IP-d nem egyezik a Regisztráltal, vagy nincs PIN kódód. Írd be a pinkódod!", "%s^1 This account registered IP does not match yours! Please enter your PIN Code!", "\d "},
  78.     {"%s^1 Adj meg egy PINKódót, a fiókod biztonsága érdekében!", "%s^1 Type PINCode, the PINCode protect your account.", "\d "},
  79. }
  80. new REGCHAT[][][] =
  81. {
  82.     {"%s^1 Regisztráció folyamatban kérlek várj!", "%s^1 Register in progress, please wait!", ""},
  83.     {"%s^1 Bejelentkezés folyamatban kérlek várj!", "%s^1 Logining in progress, please wait!", ""},
  84.     {"%s^1 Valamit elfelejtettél kitölteni!", "%s^1 You forget to fill something!", ""},
  85.     {"%s^1 Hibás felhasználónév vagy jelszó!", "%s^1 Incorrect username, or password.", ""},
  86.     {"%s^1 Ezzel a felhasználónévvel már regisztráltak!", "%s^1 This username is already registered!", ""},
  87.     {"%s^1 Sikeresen ^4regisztráltál,^1 felhasználónév: ^4%s", "%s^1 Succesfully register, username: ^4%s", ""},
  88.     {"%s^1 Sikeresen ^4bejelentkeztél!^1 Üdv ^3%s^1(^3#^4%i^1), jó játékot!", "%s^1 Succesfully ^4logged in^1! Hi ^3%s(^3#^4%i^1), good game!", ""},
  89.     {"%s^3 Hiba^1 a ^3bejelelentkezés^1 közben, ^3felhasználó^1 már ^3használatban van!", "%s^1 Someting went wrong, someone already in the profil!", ""},
  90.     {"Regisztrálj vagy Jelentkezz be!", "Register or Login!", ""},
  91.     {"%s^1 A két jelszó nem egyezik!", "%s^1 The tpyed two password not equal!", ""},
  92.     {"^"Hibás PINkód!^"", "^"Wrong PINCode^"", ""},
  93. }
  94. new DEMO[][][] =
  95. {
  96.     {"^4%s^1 Demó felvétel elkezdődőtt! ^3Demónév: ^4%s.dem^1.", "%s^1 Demo recording started, ^3Demo name: ^4%s.dem^1.", ""},
  97.     {"^4%s^3 Dátum: ^4 %s^1 |^3 Játékosnév: ^4%s", "%s^1 Date: ^4 %s^1 |^3 PlayerName: ^4%s", ""},
  98. }
  99. new NYELV[][][] =
  100. {
  101.     {"Nyelv: \yMagyar\d | English | Românesc", "Language: \dMagyar | \yEnglish\d | Românesc", "Limba: \dMagyar | English | \yRomânesc"}
  102. }
  103. new REGMENURESZ[][][] =
  104. {
  105.     {"Felhasználónév: \r%s", "Username: \r%s", "Username: \r%s"},
  106.     {"Jelszó: \r%s", "Password: \r%s", "Password: \r%s"},
  107.     {"Jelszó újra: \r%s", "Password again: \r%s", "Password again: \r%s"},
  108.     {"\yRegisztráció", "\yRegister", "\yRegister"},
  109.     {"\yBejelentkezés", "\yLogin", "\yLogin"},
  110.     {"Jelszó Csillagozás \r[BE]", "Register Stairs \r[ON]", ""},
  111.     {"Jelszó Csillagozás \d[KI]", "Register Stairs \d[OFF]", ""}
  112.  
  113. }
  114. new REGMENU[][][] =
  115. {
  116.     {"\y[\w%s\y]\d Regisztrálj vagy Jelentkezz be!", "\y[\w%s\y]\d Register or Login!", "\y[\w%s\y]\d Înscrieți-vă sau conectați-vă!"},
  117.     {"Regisztráció", "Register", "Inregistrare"},
  118.     {"Bejelentkezés^n", "Login^n", "Autentificare^n"},
  119.     {"\y[\w%s\y]\d Regisztrációs menü", "\y[\w%s\y]\d Register menu", "\y[\w%s\y]\d Meniu de înregistrare"},
  120.     {"\y[\w%s\y]\d Bejelentkezés menü", "\y[\w%s\y]\d Login menu", "\y[\w%s\y]\d Meniu de autentificare"}
  121.    
  122. }
  123. public plugin_init()
  124. {
  125.     register_plugin(PLUGINNAME, VERZIOSZAM, KESZITO);
  126.     register_impulse(201, "control");
  127.    
  128.     register_clcmd("PIN", "get_PIN");
  129.     register_clcmd("Username", "get_Username");
  130.     register_clcmd("Pass", "get_Password");
  131.     register_concmd("bn_ban_account", "CmdBanAccount", _, "<#id> <tiltas/oldas>")
  132.     register_clcmd("PassAgain", "get_PasswordAgain");
  133.     fwd_loadcmd=CreateMultiForward("Load_User_Data", ET_IGNORE, FP_CELL)
  134.     fwd_loadcmd1=CreateMultiForward("Load_User_Weapons", ET_IGNORE, FP_CELL)
  135.     fwd_updatecmd=CreateMultiForward("Update_User_Data", ET_IGNORE, FP_CELL)
  136.     g_Maxplayers = get_maxplayers();
  137.     g_screenfade = get_user_msgid("ScreenFade")
  138. }
  139. public plugin_natives()
  140. {
  141.     register_native("ska_get_user_id","native_sh_get_user_id",1)
  142.     register_native("ska_is_user_logged","native_sh_get_user_logged",1)
  143. }
  144. public native_sh_get_user_id(index)
  145. {
  146.     return Player[index][AccountId];
  147. }
  148. public native_sh_get_user_logged(index)
  149. {
  150.     return Player[index][LoggedIn];
  151. }
  152. public control(id)
  153. {
  154.     if(!Player[id][LoggedIn])
  155.         ChooseMenu(id);
  156. }
  157. public CmdBanAccount(id, level, cid){
  158.  
  159.     new Arg1[32], Arg2[32], Arg3[32], Arg_Int[2];
  160.    
  161.     read_argv(1, Arg1, charsmax(Arg1));
  162.     read_argv(2, Arg2, charsmax(Arg2));
  163.     read_argv(3, Arg3, charsmax(Arg3));
  164.  
  165.     Arg_Int[0] = str_to_num(Arg1);
  166.     Arg_Int[1] = str_to_num(Arg2);
  167.    
  168.     if(Arg_Int[0] < 1)
  169.         return PLUGIN_HANDLED
  170.    
  171.     new Banned;
  172.    
  173.     if(Arg_Int[1] == 0)
  174.         Banned = 0;
  175.     else
  176.         Banned = 1;
  177.    
  178.     new Query[512], Data[2], Is_Online = Check_Id_Online(Arg_Int[0]);
  179.    
  180.     Data[0] = id;
  181.     Data[1] = get_user_userid(id);
  182.  
  183.     formatex(Query, charsmax(Query), "UPDATE `ska_register` SET `Banned` = %d WHERE `Id` = %d;", Banned, Arg_Int[0]);
  184.  
  185.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query, Data, 2);
  186.    
  187.     if(Is_Online){
  188.     server_cmd("kick #%d ^"A fiókod véglegesen ki lett tíltva a szerverről.^"", get_user_userid(Is_Online));
  189.     if(Arg_Int[1] > 0)
  190.     {
  191.     client_print_color(0, print_team_default, "^3[^4PerFecT^3]^1 Játékos: ^3%s^1(^3#^1%i^1) fiókja ki lett tíltva a szerverről, ^3örökre.", Player[Is_Online][name], Arg_Int[0]);
  192.     client_print_color(0, print_team_default, "^3[^4PerFecT^3]^1 ^3Adminisztrátor: ^4%s^1(^3#^1%i^1) által.", Player[id][name], Player[id][AccountId]);
  193.     }
  194.     else
  195.     {
  196.     client_print_color(0, print_team_default, "^3[^4PerFecT^3]^1 Játékos: ^3-^1(^3#^1%i^1) fiókja feloldásra került.", Arg_Int[0]);
  197.     client_print_color(0, print_team_default, "^3[^4PerFecT^3] ^3Adminisztrátor: ^4%s^1(^3#^1%i^1) által.", Player[id][name], Player[id][AccountId]);
  198.     }
  199.     }
  200.     else{
  201.     if(Arg_Int[1] > 0)
  202.     {
  203.     client_print_color(0, print_team_default, "^3[^4PerFecT^3]^1 Játékos: ^3-^1(^3#^1%i^1) fiókja ki lett tíltva a szerverről, ^3örökre.", Arg_Int[0]);
  204.     client_print_color(0, print_team_default, "^3[^4PerFecT^3] ^3Adminisztrátor: ^4%s^1(^3#^1%i^1) által.", Player[id][name], Player[id][AccountId]);
  205.     }
  206.     else
  207.     {
  208.     client_print_color(0, print_team_default, "^3[^4PerFecT^3]^1 Játékos: ^3-^1(^3#^1%i^1) fiókja feloldásra került.", Arg_Int[0]);
  209.     client_print_color(0, print_team_default, "^3[^4PerFecT^3] ^3Adminisztrátor: ^4%s^1(^3#^1%i^1) által.", Player[id][name], Player[id][AccountId]);
  210.     }
  211.     }
  212.        
  213.     return PLUGIN_HANDLED;
  214. }
  215. stock Check_Id_Online(id)
  216. {
  217.     for(new idx = 1; idx < g_Maxplayers; idx++)
  218.     {
  219.         if(!is_user_connected(idx) || !Player[idx][LoggedIn])
  220.             continue;
  221.        
  222.         if(Player[idx][AccountId] == id)
  223.             return idx;
  224.     }
  225.     return 0;
  226. }
  227. static FrameCall;
  228. public server_frame()
  229. {
  230.     if(FrameCall < 500)
  231.     {
  232.         FrameCall++;
  233.         return;
  234.     }
  235.     else
  236.         FrameCall = 0;
  237.    
  238.     new p[32],n, id;
  239.     get_players(p,n,"ch");
  240.     for(new i=0;i<n;i++)
  241.     {
  242.         id = p[i];
  243.         if(Player[id][LoggedIn] == 0)
  244.         {
  245.             formatex(String, charsmax(String), REGCHAT[8][Player[id][Language]]);
  246.             client_print(id, print_center, String);
  247.             message_begin(MSG_ONE_UNRELIABLE, g_screenfade, {0,0,0}, id)
  248.             write_short(1<<12)
  249.             write_short(1<<12)
  250.             write_short(0x0000)
  251.             write_byte(0)
  252.             write_byte(0)
  253.             write_byte(0)
  254.             write_byte(255)
  255.             message_end()
  256.         }
  257.     }
  258. }
  259. public ChooseMenu(id)
  260. {
  261.     formatex(String, charsmax(String), REGMENU[0][Player[id][Language]], Prefix);
  262.     new menu = menu_create(String, "ChooseMenu_h");
  263.  
  264.     menu_additem(menu, REGMENU[1][Player[id][Language]], "1", 0);
  265.     menu_additem(menu, REGMENU[2][Player[id][Language]], "3", 0);
  266.  
  267.     format(String, charsmax(String), NYELV[0][Player[id][Language]]);
  268.     menu_additem(menu, String, "6", 0);
  269.  
  270.     menu_display(id, menu, 0);
  271.     return PLUGIN_HANDLED;
  272. }
  273. public ChooseMenu_h(id, menu, item)
  274. {
  275.     new data[9], szName[64];
  276.     new access, callback;
  277.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  278.     new key = str_to_num(data);
  279.    
  280.     switch(key)
  281.         {
  282.             case 1:
  283.             {
  284.             RegisterMenu(id)
  285.             Player[id][RegOrLogin] = 1;
  286.             }
  287.             case 3:
  288.             {
  289.             LoginMenu(id);
  290.             Player[id][RegOrLogin] = 2;
  291.             }
  292.             case 6:
  293.             {  
  294.             if(Player[id][Language] == 0)
  295.             {
  296.                 Player[id][Language] = 1;
  297.             }
  298.             else
  299.             {
  300.                 Player[id][Language] = 0;
  301.             }
  302.             ChooseMenu(id);
  303.             }
  304.         }
  305. }
  306. public RegisterMenu(id)
  307. {
  308.     formatex(String, charsmax(String), REGMENU[3][Player[id][Language]], Prefix);
  309.     new menu = menu_create(String, "RegisterMenu_h");
  310.    
  311.     format(String, charsmax(String), REGMENURESZ[0][Player[id][Language]], Player[id][Username])
  312.     menu_additem(menu, String, "1", 0);
  313.     if(Player[id][StarsOff] == 0)
  314.     {
  315.     format(String, charsmax(String), REGMENURESZ[1][Player[id][Language]], Player[id][StaredPassword]);
  316.     menu_additem(menu, String, "2", 0);
  317.     }
  318.     else
  319.     {
  320.     format(String, charsmax(String), REGMENURESZ[1][Player[id][Language]], Player[id][Password])
  321.     menu_additem(menu, String, "2", 0);
  322.     }
  323.     if(Player[id][StarsOff] == 0)
  324.     {
  325.     format(String, charsmax(String), REGMENURESZ[2][Player[id][Language]], Player[id][StaredPassAgain])
  326.     menu_additem(menu, String, "3", 0);
  327.     }
  328.     else
  329.     {
  330.     format(String, charsmax(String), REGMENURESZ[2][Player[id][Language]], Player[id][PasswordAgain])
  331.     menu_additem(menu, String, "3", 0);
  332.     }
  333.  
  334.     menu_additem(menu, REGMENURESZ[3][Player[id][Language]], "4", 0);
  335.     menu_addblank2(menu);
  336.     if(Player[id][StarsOff] == 0)
  337.     {
  338.     format(String, charsmax(String), REGMENURESZ[5][Player[id][Language]])
  339.     menu_additem(menu, String, "5", 0);
  340.     }
  341.     else
  342.     {
  343.     format(String, charsmax(String), REGMENURESZ[6][Player[id][Language]])
  344.     menu_additem(menu, String, "5", 0)
  345.     }
  346.     format(String, charsmax(String), NYELV[0][Player[id][Language]]);
  347.     menu_additem(menu, String, "6", 0);
  348.    
  349.     menu_display(id, menu, 0);
  350.     return PLUGIN_HANDLED;
  351. }
  352. public RegisterMenu_h(id, menu, item)
  353. {
  354.     new data[9], szName[64];
  355.     new access, callback;
  356.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  357.     new key = str_to_num(data);
  358.  
  359.     switch(key)
  360.     {
  361.         case 1:
  362.         {
  363.         client_cmd(id, "messagemode Username");
  364.         }
  365.         case 2:
  366.         {
  367.         client_cmd(id, "messagemode Pass");
  368.        
  369.         }
  370.         case 3:
  371.         {
  372.         client_cmd(id, "messagemode PassAgain");
  373.         }
  374.         case 4:
  375.         {
  376.         Player[id][RegOrLogin] = 1;
  377.         RegLog(id);
  378.         }
  379.         case 5:
  380.         {
  381.     if(Player[id][StarsOff])
  382.      {
  383.        Player[id][StarsOff] = 0;
  384.        RegisterMenu(id);
  385.       }
  386.     else
  387.      {
  388.        Player[id][StarsOff] = 1;
  389.        RegisterMenu(id);
  390.       }
  391.         }
  392.         case 6:
  393.         {
  394.     if(Player[id][Language] == 0)
  395.     {
  396.         Player[id][Language] = 1;
  397.     }
  398.     else
  399.     {
  400.         Player[id][Language] = 0;
  401.     }
  402.     RegisterMenu(id);
  403.         }
  404.         }
  405. }
  406. public LoginMenu(id)
  407. {
  408.     formatex(String, charsmax(String), REGMENU[4][Player[id][Language]], Prefix);
  409.     new menu = menu_create(String, "LoginMenu_h");
  410.    
  411.     format(String, charsmax(String), REGMENURESZ[0][Player[id][Language]], Player[id][Username])
  412.     menu_additem(menu, String, "1", 0);
  413.    
  414.     if(Player[id][StarsOff] == 0)
  415.     {
  416.     format(String, charsmax(String), REGMENURESZ[1][Player[id][Language]], Player[id][StaredPassword]);
  417.     menu_additem(menu, String, "2", 0);
  418.     }
  419.     else
  420.     {
  421.     format(String, charsmax(String), REGMENURESZ[1][Player[id][Language]], Player[id][Password])
  422.     menu_additem(menu, String, "2", 0);
  423.     }
  424.     menu_addblank2(menu);
  425.     menu_additem(menu, REGMENURESZ[4][Player[id][Language]], "3", 0);
  426.     menu_display(id, menu, 0);
  427.     return PLUGIN_HANDLED;
  428. }
  429. public LoginMenu_h(id, menu, item)
  430. {
  431.     new data[9], szName[64];
  432.     new access, callback;
  433.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  434.     new key = str_to_num(data);
  435.  
  436.     switch(key)
  437.     {
  438.         case 1:
  439.         {
  440.         client_cmd(id, "messagemode Username");
  441.         }
  442.         case 2:
  443.         {
  444.         client_cmd(id, "messagemode Pass");
  445.         }
  446.         case 3:
  447.         {
  448.         Player[id][RegOrLogin] = 2;
  449.         RegLog(id);
  450.         }
  451.         case 5:
  452.         {
  453.         if(Player[id][StarsOff])
  454.         {
  455.             Player[id][StarsOff] = 0;
  456.             LoginMenu(id);
  457.         }
  458.         else
  459.         {
  460.             Player[id][StarsOff] = 1;
  461.             LoginMenu(id);
  462.         }
  463.         }
  464.         case 6:
  465.         {
  466.            if(Player[id][Language] == 0)
  467.            {
  468.         Player[id][Language] = 1;
  469.            }
  470.            else
  471.            {
  472.         Player[id][Language] = 0;
  473.            }
  474.            LoginMenu(id);
  475.         }
  476.     }
  477. }
  478. public get_Username(id)
  479. {
  480.     new Arg[32];
  481.     read_argv(1, Arg, charsmax(Arg));
  482.     if(RegexTester(id, Arg, "^^[a-zA-Z0-9]{4,16}+$", REGEX[1][Player[id][Language]]))
  483.     {  
  484.         copy(Player[id][Username], 32, Arg);
  485.     }
  486.  
  487.     if(Player[id][RegOrLogin] == 1)
  488.         RegisterMenu(id);
  489.     else
  490.         LoginMenu(id);
  491. }
  492. public get_Password(id)
  493. {
  494.     new Arg[32];
  495.     read_argv(1, Arg, charsmax(Arg));
  496.     if(RegexTester(id, Arg, "^^[a-zA-Z0-9]{4,16}+$", REGEX[1][Player[id][Language]]))
  497.     {
  498.         copy(Player[id][Password], 32, Arg);
  499.     }
  500.     formatex(Player[id][StaredPassword], strlen(Arg), "%s", Stars);
  501.     if(Player[id][RegOrLogin] == 1)
  502.         RegisterMenu(id);
  503.     else
  504.         LoginMenu(id);
  505.    
  506.     new hash[256];
  507.     hash_string(Arg, Hash_Keccak_512, hash, charsmax(hash));
  508.     copy(Player[id][PasswordHash], HASHSIZE, hash);
  509. }
  510. public get_PasswordAgain(id)
  511. {
  512.     new Arg[32];
  513.     read_argv(1, Arg, charsmax(Arg));
  514.     if(RegexTester(id, Arg, "^^[a-zA-Z0-9]{4,16}+$", REGEX[1][Player[id][Language]]))
  515.         copy(Player[id][PasswordAgain], 32, Arg);
  516.  
  517.     formatex(Player[id][StaredPassAgain], strlen(Arg), "%s", Stars);
  518.     if(Player[id][RegOrLogin] == 1)
  519.         RegisterMenu(id);
  520.     else
  521.         LoginMenu(id);
  522. }
  523. public RegLog(id)
  524. {
  525.     if(Player[id][RegOrLogin] == 1)
  526.     {
  527.         if(equali(Player[id][Username], "") || equali(Player[id][Password],""))
  528.         {
  529.             client_print_color(id, print_team_default, REGCHAT[2][Player[id][Language]], ChatPrefix);
  530.             Player[id][RegOrLogin] = 0;
  531.             return;
  532.         }
  533.         if(!equal(Player[id][Password], Player[id][PasswordAgain]))
  534.         {
  535.             client_print_color(id, print_team_default, REGCHAT[9][Player[id][Language]], ChatPrefix);
  536.             Player[id][RegOrLogin] = 0;
  537.             return;
  538.         }
  539.         else
  540.         {
  541.             client_print_color(id, print_team_default, REGCHAT[0][Player[id][Language]], ChatPrefix);
  542.             Player[id][InProgress] = 1;
  543.             sql_account_check(id);
  544.         }
  545.     }
  546.     if(Player[id][RegOrLogin] == 2)
  547.     {
  548.         if(equali(Player[id][Username], "") || equali(Player[id][Password],""))
  549.         {
  550.             client_print_color(id, print_team_default, REGCHAT[2][Player[id][Language]], ChatPrefix);
  551.             Player[id][RegOrLogin] = 0;
  552.             return;
  553.         }
  554.         else
  555.         {
  556.             client_print_color(id, print_team_default, REGCHAT[1][Player[id][Language]], ChatPrefix);
  557.             Player[id][InProgress] = 1;
  558.             sql_account_check(id);
  559.         }
  560.     }
  561. }
  562. public sql_account_check(id)
  563. {
  564.     new len = 0
  565.  
  566.     new a[191]
  567.    
  568.     format(a, 190, "%s", Player[id][Username])
  569.    
  570.     replace_all(a, 190, "\", "\\")
  571.     replace_all(a, 190, "'", "\'")
  572.    
  573.     len += format(szQuery[len], 2048, "SELECT * FROM %s ", tablanev)
  574.     len += format(szQuery[len], 2048-len,"WHERE Username = '%s'", a)
  575.    
  576.     new szData[2];
  577.     szData[0] = id;
  578.     szData[1] = get_user_userid(id);
  579.    
  580.     SQL_ThreadQuery(g_SqlTuple,"sql_account_check_thread", szQuery, szData, 2)
  581. }
  582.  
  583. public sql_account_check_thread(FailState,Handle:Query,Error[],Errcode,szData[],DataSize)
  584. {
  585. if(Errcode)
  586. {
  587.     log_amx("[ *HIBA* ] PROBLEMA A LEKERDEZESNEL! ( %s )",Error)
  588.     return
  589. }
  590. if(FailState == TQUERY_CONNECT_FAILED)
  591. {
  592.     set_fail_state("[ *HIBA* ] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!")
  593.     return
  594. }
  595. else if(FailState == TQUERY_QUERY_FAILED)
  596. {
  597.     set_fail_state("[ *HIBA* ] A LEKERDEZES MEGSZAKADT!")
  598.     return
  599. }
  600.  
  601. new id = szData[0];
  602.  
  603. if (szData[1] != get_user_userid(id))
  604.     return;
  605.  
  606. new iFound = SQL_NumRows(Query)
  607. new Float:randomtime = random_float(1.00, 6.00)
  608.  
  609. if(Player[id][RegOrLogin] == 1)
  610. {
  611.     if(iFound > 0)
  612.     {
  613.         client_print_color(id, print_team_default, REGCHAT[4][Player[id][Language]], ChatPrefix);
  614.         Player[id][InProgress] = 0;
  615.         RegisterMenu(id);
  616.     }
  617.     else
  618.         sql_accountcreate(id);
  619. }
  620. if(Player[id][RegOrLogin] == 2)
  621. {
  622.     if(iFound == 0)
  623.     {
  624.         client_print_color(id, print_team_default, REGCHAT[3][Player[id][Language]], ChatPrefix);
  625.         Player[id][InProgress] = 0;
  626.         LoginMenu(id);
  627.     }
  628.     else  
  629.     sql_account_load(id)
  630.        
  631. }
  632. }
  633. public sql_accountcreate(id)
  634. {
  635.     new len = 0
  636.    
  637.     new sTime[9], sDate[11], sDateAndTime[32];
  638.     get_time("%H:%M:%S", sTime, 8 ); get_time("%Y/%m/%d", sDate, 11);
  639.     formatex(sDateAndTime, 31, "%s %s", sDate, sTime);
  640.    
  641.     len += format(szQuery[len], 2048, "INSERT INTO %s ", tablanev)
  642.     len += format(szQuery[len], 2048-len,"(Username,Password,RegistrationIP,RegistrationID,RegistrationName, RegistrationDate) VALUES(^"%s^", ^"%s^", ^"%s^",^"%s^",^"%s^",^"%s^")", Player[id][Username],Player[id][PasswordHash], Player[id][ip], Player[id][steamid], Player[id][name], sDateAndTime)
  643.    
  644.     new szData[2];
  645.     szData[0] = id;
  646.     szData[1] = get_user_userid(id);
  647.    
  648.     SQL_ThreadQuery(g_SqlTuple,"sql_account_thread", szQuery, szData, 2)
  649. }
  650. public sql_account_thread(FailState,Handle:Query,Error[],Errcode,szData[],DataSize)
  651. {
  652.    if(Errcode)
  653.    {
  654.        log_amx("[ *HIBA* ] PROBLEMA A LEKERDEZESNEL! ( %s )",Error)
  655.        return
  656.    }
  657.  
  658.    if(FailState == TQUERY_CONNECT_FAILED)
  659.    {
  660.        set_fail_state("[ *HIBA* ] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!")
  661.        return
  662.    }
  663.    else if(FailState == TQUERY_QUERY_FAILED)
  664.    {
  665.        set_fail_state("[ *HIBA* ] A LEKERDEZES MEGSZAKADT!")
  666.        return
  667.    }
  668.    new id = szData[0];
  669.    if (szData[1] != get_user_userid(id))
  670.    return;
  671.  
  672.    client_print_color(id, print_team_default, REGCHAT[5][Player[id][Language]], ChatPrefix, Player[id][Username]);
  673.    Player[id][InProgress] = 0;
  674.    Player[id][RegOrLogin] = 0;
  675.    LoginMenu(id);
  676.    return;
  677. }
  678. public sql_account_load(id)
  679. {
  680.    new len = 0
  681.  
  682.    len += format(szQuery[len], 2048, "SELECT * FROM %s ", tablanev)
  683.    len += format(szQuery[len], 2048-len,"WHERE Username = ^"%s^"", Player[id][Username])
  684.  
  685.    new szData[2];
  686.    szData[0] = id;
  687.    szData[1] = get_user_userid(id);
  688.  
  689.    SQL_ThreadQuery(g_SqlTuple,"sql_account_load_thread", szQuery, szData, 2)
  690. }
  691.  
  692. public sql_account_load_thread(FailState,Handle:Query,Error[],Errcode,szData[],DataSize)
  693. {
  694.    if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  695.    {
  696.        log_amx("%s", Error);
  697.        return;
  698.    }
  699.    else
  700.    {
  701.        new id = szData[0];
  702.  
  703.        if (szData[1] != get_user_userid(id))
  704.            return;
  705.  
  706.        new szSqlPassword[HASHSIZE]
  707.        SQL_ReadResult(Query, 2, szSqlPassword, HASHSIZE)
  708.  
  709.        if(equal(Player[id][PasswordHash], szSqlPassword))
  710.        {
  711.            new szSqlIP[32]
  712.            SQL_ReadResult(Query, 4, szSqlIP, 32)
  713.  
  714.            Player[id][IsBanned] = SQL_ReadResult(Query, 13)
  715.  
  716.            if(Player[id][IsBanned] > 0)
  717.            {
  718.                client_print_color(id, print_team_default, "^4%s^1 Ez a fiók ki van ^3tíltva^1 a szerverről, ^4véglegesen.", ChatPrefix);
  719.                client_print_color(id, print_team_default, "^4%s^1 Ha fellebbezni szeretnél, keress fel egy ^3FőAdmin^1-t vagy egy ^3Tulajdonos^1-t.", ChatPrefix);
  720.                Player[id][InProgress] = 0;
  721.                return;
  722.            }
  723.  
  724.            Player[id][Active] = SQL_ReadResult(Query, 7)
  725.  
  726.            if (Player[id][Active] > 0)
  727.            {
  728.                client_print_color(id, print_team_default, REGCHAT[7][Player[id][Language]], ChatPrefix);
  729.                LoginMenu(id);
  730.                Player[id][InProgress] = 0;
  731.                return;
  732.            }
  733.            Player[id][Active] = 1;
  734.  
  735.            Player[id][AccountId] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Id"));
  736.            Player[id][SQLPINCode] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "PIN"));
  737.  
  738.            /*
  739.            if(Player[id][SQLPINCode] == 0)
  740.            {
  741.                PinCodeCreatorMenu(id);
  742.                client_print_color(id, print_team_default, PIN[6][Player[id][Language]], ChatPrefix);
  743.                return;
  744.            }
  745.            if(!equal(szSqlIP, Player[id][ip]))
  746.            {
  747.                PinCodeCreatorMenu(id);
  748.                client_print_color(id, print_team_default, PIN[5][Player[id][Language]], ChatPrefix);
  749.                return;
  750.            }
  751.            */
  752.         client_print_color(id, print_team_default, REGCHAT[6][Player[id][Language]], ChatPrefix, Player[id][name], Player[id][AccountId]);
  753.         Player[id][RegOrLogin] = 0;
  754.         Player[id][InProgress] = 0;
  755.         Player[id][LoggedIn] = 1;
  756.         new fwdloadtestret
  757.         ExecuteForward(fwd_loadcmd,fwdloadtestret,id);
  758.         new fwdloadtestret1
  759.         ExecuteForward(fwd_loadcmd1,fwdloadtestret1,id);
  760.         Start_Logged_Demo(id);
  761.        //set_user_info(id, "perfectusername", Player[id][Username]);
  762.        //set_user_info(id, "perfecthash", Player[id][PasswordHash]);
  763.        //client_cmd(id, "setinfo ^"perfectusername^" ^"%s^"", Player[id][Username]);
  764.        //client_cmd(id, "setinfo ^"perfecthash^" ^"%s^"", Player[id][PasswordHash]);
  765.        //client_cmd(id, "setinfo ^"perfectautologin^" ^"0^"");
  766.        engclient_cmd(id, "setinfo autologin 0")
  767.        engclient_cmd(id, "setinfo perfectusername %s", Player[id][Username])
  768.         Update(id, 1);
  769.         Update(id, 4);
  770.          
  771.        }
  772.        else
  773.        {
  774.            client_print_color(id, print_team_default, REGCHAT[3][Player[id][Language]], ChatPrefix);
  775.            Player[id][RegOrLogin] = 0;
  776.            LoginMenu(id);
  777.        }
  778.    }
  779. }
  780. public Start_Logged_Demo(id) {
  781.    new sTime[9], sDate[11], sDateAndTime[32];
  782.    get_time("%H:%M:%S", sTime, 8 );
  783.    get_time("%Y/%m/%d", sDate, 11);
  784.    formatex(sDateAndTime, 31, "%s %s", sDate, sTime);
  785.  
  786.    client_cmd(id, "stop; record ^"%s.dem^"", DemoName);
  787.    
  788.    client_print_color(id, print_team_default,DEMO[0][Player[id][Language]], ChatPrefix, DemoName);
  789.    client_print_color(id, print_team_default,DEMO[1][Player[id][Language]], ChatPrefix, sDateAndTime, Player[id][name]);
  790. }
  791. public PinCodeCreatorMenu(id)
  792. {
  793.    formatex(String, charsmax(String), PIN[0][Player[id][Language]], Prefix);
  794.    new menu = menu_create(String, "Pin_h");
  795.  
  796.    if(Player[id][SQLPINCode] == 0)
  797.        formatex(String, charsmax(String), PIN[1][Player[id][Language]]);
  798.    else
  799.        formatex(String, charsmax(String), PIN[3][Player[id][Language]]);
  800.    menu_addtext2(menu, String);
  801.    formatex(String, charsmax(String), "\yPIN: \r%d^n^n", Player[id][PINCode]);
  802.    menu_additem(menu, String, "1",0);
  803.    formatex(String, charsmax(String), PIN[2][Player[id][Language]]);
  804.    menu_additem(menu, String, "2",0);
  805.  
  806.    menu_display(id, menu, 0);
  807.    return PLUGIN_HANDLED;
  808. }
  809. public Pin_h(id, menu, item)
  810. {
  811.     new data[9], szName[64];
  812.     new access, callback;
  813.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  814.     new key = str_to_num(data);
  815.  
  816.     switch(key)
  817.    {
  818.        case 1:
  819.        {
  820.            client_cmd(id, "messagemode PIN");
  821.        }
  822.        case 2:
  823.        {
  824.            if(Player[id][SQLPINCode] == 0)
  825.            {
  826.                Update(id, 2);
  827.                sql_account_load(id);
  828.            }
  829.            else if(equal(Player[id][SQLPINCode], Player[id][PINCode]))
  830.            {
  831.                client_print_color(id, print_team_default, REGCHAT[6][Player[id][Language]], ChatPrefix, Player[id][name], Player[id][AccountId]);
  832.                Player[id][RegOrLogin] = 0;
  833.                Player[id][InProgress] = 0;
  834.                Player[id][LoggedIn] = 1;
  835.                new fwdloadtestret
  836.                ExecuteForward(fwd_loadcmd,fwdloadtestret,id);
  837.                Start_Logged_Demo(id);
  838.                Update(id, 3);
  839.                Update(id, 1);
  840.                Update(id, 4);
  841.            }
  842.            else
  843.                server_cmd("amx_kick #%d ^"Hibás PINKÓD^"", get_user_userid(id));
  844.        }
  845.    }
  846. }
  847. public get_PIN(id)
  848. {
  849.    new Arg[32];
  850.    read_argv(1, Arg, charsmax(Arg));
  851.    if(RegexTester(id, Arg, "^^[1-9]{0,1}[0-9]{4,4}$", REGEX[0][Player[id][Language]]))
  852.    {
  853.        Player[id][PINCode] = str_to_num(Arg);
  854.    }
  855.    PinCodeCreatorMenu(id);
  856. }
  857. public UpdateBan(id)
  858. {
  859.     new Len;
  860.    
  861.     Len += formatex(szQuery[Len], charsmax(szQuery), "UPDATE `%s` SET ", tablanev);
  862.    
  863.     Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "Banned = ^"%i^", ", BanSystem[id][S_Ban]);
  864.     Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "BannedReason = ^"%s^", ", BanSystem[id][S_BanReason]);
  865.     Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "AdminName = ^"%s^", ", BanSystem[id][S_BanName]);
  866.    
  867.     Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "Parameter = '0' WHERE `Id` =  %d;", BanSystem[id][S_ArgInt]);
  868.    
  869.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", szQuery);
  870.  
  871. }
  872. public Update(id, UpdateType)
  873. {
  874. new Len;
  875. new sTime[9], sDate[11], sDateAndTime[32];
  876. get_time("%H:%M:%S", sTime, 8 ); get_time("%Y/%m/%d", sDate, 11);
  877. formatex(sDateAndTime, 31, "%s %s", sDate, sTime);
  878.  
  879. Len += formatex(szQuery[Len], charsmax(szQuery), "UPDATE `%s` SET ", tablanev);
  880.  
  881. switch(UpdateType)
  882. {
  883.    case 1:
  884.    {
  885.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "LastLoggedSteamID = ^"%s^", ", Player[id][steamid]);
  886.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "LastLoggedName = ^"%s^", ", Player[id][name]);
  887.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "LastLoggedDate = ^"%s^", ", sDateAndTime);
  888.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "LastLoggedIP = ^"%s^", ", Player[id][ip]);
  889.    }
  890.    case 2:
  891.    {
  892.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "PIN = ^"%i^", ", Player[id][PINCode]);  
  893.    }
  894.    case 3:
  895.    {
  896.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "RegistrationIP = ^"%s^", ", Player[id][ip]);
  897.    }
  898.    case 4:
  899.    {
  900.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "Active = ^"%i^", ", onactive);
  901.    }
  902.    case 5:
  903.    {
  904.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "Active = ^"%i^", ", offactive);
  905.    }
  906. }
  907.    
  908. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "Parameter = '0' WHERE `Id` =  %d;", Player[id][AccountId]);
  909.  
  910. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", szQuery);
  911.  
  912. }
  913. public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime){
  914. if( FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED )
  915. {
  916.     log_amx("%s", Error);
  917.     return;
  918. }
  919. }
  920. public client_putinserver(id)
  921. {
  922.    GiveDatas(id);
  923.    ResetAccountData(id);
  924.    ResetAccountInfos(id);
  925. }
  926. public client_disconnected(id)
  927. {
  928.    if(Player[id][LoggedIn])
  929.    {
  930.    Update(id, 5);
  931.  
  932.    Player[id][Active] = 0;
  933.    Player[id][RegOrLogin] = 0;
  934.    Player[id][LoggedIn] = 0;
  935.    
  936.  
  937.    new fwdupdatetestret
  938.    ExecuteForward(fwd_updatecmd,fwdupdatetestret,id);
  939.    }
  940. }
  941. public ResetAccountData(id)
  942. {
  943.    get_user_info(id, "perfectautologin", AutoLogin[id], 32);
  944.    if(AutoLogin[id] == 1)
  945.    {
  946.        get_user_info(id, "perfectusername", Player[id][Username], charsmax(Player[][Username]));
  947.        get_user_info(id, "perfecthash", Player[id][PasswordHash], charsmax(Player[][PasswordHash]));
  948.    }
  949.    Player[id][AccountId] = 0;
  950.    Player[id][Password] = "";
  951.    Player[id][Username] = "";
  952.    Player[id][StaredPassword] = "";
  953.    Player[id][StaredPassAgain] = "";
  954.    Player[id][PasswordAgain] = "";
  955.    Player[id][PasswordHash] = "";
  956.    Player[id][BannedReason] = "";
  957.    Player[id][IsBanned] = 0;
  958.    Player[id][PINCode] = 0;
  959. }
  960. public ResetAccountInfos(id)
  961. {    
  962.    Player[id][InProgress] = 0;
  963.    Player[id][Language] = 0;
  964.    Player[id][StarsOff] = 0;
  965.    Player[id][LoggedIn] = 0;
  966.  
  967. }
  968. public GiveDatas(id)
  969. {
  970.    Player[id][name] = "";
  971.    Player[id][steamid] = "";
  972.    Player[id][ip] = "";
  973.    get_user_name(id, Player[id][name], 32);
  974.    get_user_authid(id, Player[id][steamid], 32);
  975.    get_user_ip(id, Player[id][ip], 32);
  976. }
  977.  
  978. /**
  979. *   Input:
  980. *       id = the user id
  981. *       m_string[] = The string what need to test
  982. *       RegexText[] = The regex pattern
  983. *       NoMatchText[] = If the regex doesn't match this text will be chatprinted to the id
  984. * */
  985. bool:RegexTester(id, m_string[], RegexText[], NoMatchText[])
  986. {
  987.     new ret, error[128];
  988.     new Regex:regex_handle = regex_match(m_string, RegexText, ret, error, charsmax(error));
  989.  
  990.     switch(regex_handle)
  991.     {
  992.         case REGEX_MATCH_FAIL:
  993.         {
  994.             log_amx("---REGEX MATCH FAIL---");
  995.             log_amx("ERROR:");
  996.             log_amx(error);
  997.             // There was an error matching against the pattern
  998.             // Check the {error} variable for message, and {ret} for error code
  999.         }
  1000.         case REGEX_PATTERN_FAIL:
  1001.         {
  1002.             log_amx("---REGEX TATTERN ERROR---");
  1003.             log_amx("ERROR:");
  1004.             log_amx(error);
  1005.             // There is an error in your pattern
  1006.             // Check the {error} variable for message, and {ret} for error code
  1007.         }
  1008.         case REGEX_NO_MATCH:
  1009.         {
  1010.             client_print_color(id, print_team_default, "^4%s ^1%s",Prefix, NoMatchText);
  1011.         }
  1012.         default:
  1013.         {
  1014.             // Matched m_string {ret} times
  1015.             regex_free(regex_handle);
  1016.             return true;
  1017.             // Free the Regex handle
  1018.         }
  1019.     }
  1020.     regex_free(regex_handle);
  1021.     return false;
  1022. }
  1023. public plugin_cfg()
  1024. {
  1025. g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0], SQL_INFO[1], SQL_INFO[2], SQL_INFO[3]);
  1026. createRegTable()  
  1027. //createForceLoginTable()
  1028. sql_active_check()
  1029. }
  1030. public sql_active_check()
  1031. {
  1032.     new szQuery[2048]
  1033.     new len = 0
  1034.    
  1035.     len += format(szQuery[len], 2048, "UPDATE ska_register SET ")
  1036.     len += format(szQuery[len], 2048-len,"Active = '0' ")
  1037.     len += format(szQuery[len], 2048-len,"WHERE Active = '%d'", onactive)
  1038.    
  1039.     SQL_ThreadQuery(g_SqlTuple,"sql_active_check_thread", szQuery)
  1040. }
  1041.  
  1042. public sql_active_check_thread(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  1043. {
  1044.     if(FailState == TQUERY_CONNECT_FAILED)
  1045.         return set_fail_state("[ *HIBA* ] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!")
  1046.     else if(FailState == TQUERY_QUERY_FAILED)
  1047.         return set_fail_state("[ *HIBA* ] A LEKERDEZES MEGSZAKADT!")
  1048.    
  1049.     if(Errcode)
  1050.         return log_amx("[ *HIBA* ] PROBLEMA A LEKERDEZESNEL! ( %s )",Error)
  1051.    
  1052.     return PLUGIN_CONTINUE
  1053. }
  1054. public createRegTable()
  1055. {
  1056. new Len;
  1057. Len += formatex(szQuery[Len], charsmax(szQuery), "CREATE TABLE IF NOT EXISTS `%s` ", tablanev);
  1058. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "( ");
  1059. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`AccountId` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,");
  1060. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`Username` varchar(32) NOT NULL,")
  1061. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`Password` varchar(256) NOT NULL,")
  1062. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`PIN` INT(4) NOT NULL,")
  1063. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`RegisterName` varchar(32) NOT NULL,")
  1064. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`RegisterIP` varchar(32) NOT NULL,")
  1065. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`RegisterID` varchar(32) NOT NULL,")
  1066. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`RegisterDate` varchar(32) NOT NULL,")
  1067. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`Banned` varchar(1) NOT NULL,")
  1068. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`BannedReason` varchar(32) NOT NULL,")
  1069. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`Active` INT(1) NOT NULL)")
  1070.  
  1071. SQL_ThreadQuery(g_SqlTuple, "createTableThread", szQuery);
  1072. }
  1073. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  1074. if(Errcode)
  1075. log_amx("[HIBA*] HIBAT DOBTAM: %s",Error);
  1076. if(FailState == TQUERY_CONNECT_FAILED)
  1077.     set_fail_state("[HIBA*] NEM TUDTAM CSATLAKOZNI AZ ADATBAZISHOZ!");
  1078.     else if(FailState == TQUERY_QUERY_FAILED)
  1079.         set_fail_state("Query Error");
  1080. }
  1081. public plugin_end()
  1082. {
  1083. SQL_FreeHandle(g_SqlTuple);
  1084. }
  1085. /*
  1086.  if(Player[id][PINCode] == 0)
  1087.         {
  1088.             client_print_color(id, print_team_default, "^4%s^1 A bejelentkezeshez megkell adnod egy pinkodot!", ChatPrefix);
  1089.             PinCodeCreatorMenu(id);
  1090.             Player[id][PINCode] = 0;
  1091.             Player[id][InProgress] = 0;
  1092.             return;
  1093.         }
  1094.  
  1095. */


Csak ennyit kell hozzá adj a módodhoz.
Viszont elöbb a módodból távolítsd el, vagy Kösd ki hogy a régi reg rendszer ne szoljon közbe.

  1. #include <RegSystem_SKA>
  2.  
  3. register_impulse(201, "Ellenorzes");
  4.  
  5. }
  6. public Ellenorzes(id)
  7. {
  8.     if(ska_is_user_logged(id))
  9.         Fomenu(id);
  10. }
  11.  
  12.  
  13. //Itt ezt teheted a Hud hoz is. hogy ne mutassa regisztráció/Bejelentkezés elött.
  14. if(ska_is_user_logged(id))

_________________
Hamarosan új pluginok lesznek ki terjesztve! :)


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2020.05.11. 10:44 
Offline
Fanatikus

Csatlakozott: 2019.07.19. 10:58
Hozzászólások: 175
Megköszönt másnak: 37 alkalommal
8mTNNe írta:
Alekvar írta:
Sziasztok valaki bele tudna nekem irni egy újabb regisztrációs rendszert? Mert ezt könnyen feltudják törni.



Szia, tessék még bele írnod sem kell csak 1-2 dolgot.

Mysql

  1. -- phpMyAdmin SQL Dump
  2. -- version 4.8.5
  3. -- https://www.phpmyadmin.net/
  4. --
  5. -- Gép: db.synhosting.eu
  6. -- Létrehozás ideje: 2020. Feb 14. 22:16
  7. -- Kiszolgáló verziója: 5.7.28-log
  8. -- PHP verzió: 7.3.13-1+0~20191218.50+debian9~1.gbp23c2da
  9.  
  10. SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
  11. SET AUTOCOMMIT = 0;
  12. START TRANSACTION;
  13. SET time_zone = "+00:00";
  14.  
  15.  
  16. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  17. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  18. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  19. /*!40101 SET NAMES utf8mb4 */;
  20.  
  21. --
  22. -- Adatbázis: `aaaa`
  23. --
  24.  
  25. -- --------------------------------------------------------
  26.  
  27. --
  28. -- Tábla szerkezet ehhez a táblához `ska_register`
  29. --
  30.  
  31. CREATE TABLE `ska_register` (
  32.   `Id` INT(11) NOT NULL,
  33.   `Username` VARCHAR(32) NOT NULL,
  34.   `Password` VARCHAR(256) NOT NULL,
  35.   `RegistrationName` VARCHAR(32) NOT NULL,
  36.   `RegistrationIP` VARCHAR(32) NOT NULL,
  37.   `RegistrationID` VARCHAR(32) NOT NULL,
  38.   `RegistrationDate` VARCHAR(32) NOT NULL,
  39.   `Active` INT(1) NOT NULL DEFAULT '0',
  40.   `LastLoggedIp` VARCHAR(32) NOT NULL DEFAULT '0',
  41.   `LastLoggedSteamId` VARCHAR(32) NOT NULL DEFAULT '0',
  42.   `LastLoggedName` VARCHAR(32) NOT NULL DEFAULT '0',
  43.   `LastLoggedDate` VARCHAR(32) NOT NULL DEFAULT '0',
  44.   `PIN` INT(4) NOT NULL DEFAULT '0',
  45.   `Banned` INT(1) NOT NULL DEFAULT '0',
  46.   `BannedReason` VARCHAR(32) NOT NULL DEFAULT '0',
  47.   `AdminName` VARCHAR(32) NOT NULL DEFAULT '0',
  48.   `Parameter` INT(1) NOT NULL DEFAULT '0'
  49. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  50.  
  51. --
  52. -- Indexek a kiírt táblákhoz
  53. --
  54.  
  55. --
  56. -- A tábla indexei `ska_register`
  57. --
  58. ALTER TABLE `ska_register`
  59.   ADD PRIMARY KEY (`Id`);
  60.  
  61. --
  62. -- A kiírt táblák AUTO_INCREMENT értéke
  63. --
  64.  
  65. --
  66. -- AUTO_INCREMENT a táblához `ska_register`
  67. --
  68. ALTER TABLE `ska_register`
  69.   MODIFY `Id` INT(11) NOT NULL AUTO_INCREMENT;
  70. COMMIT;
  71.  
  72. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  73. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  74. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Include

  1. #if defined _RegSystem_SKA_included
  2.  #endinput
  3. #endif
  4.  
  5. #define _RegSystem_SKA_included
  6.  
  7. native ska_is_user_logged(id);
  8. native ska_get_user_id(id);
  9.  
  10. forward Load_User_Data(id);
  11. forward Update_User_Data(id);


Regsystem

  1. #include <amxmodx>
  2. #include <cstrike>
  3. #include <fakemeta>
  4. #include <hamsandwich>
  5. #include <regex>
  6. #include <engine>
  7. #include <sqlx>
  8.  
  9. #define KESZITO "Shedi"
  10. #define SEGITO "Kova"
  11. #define PLUGINNAME "SK Regisztrációs rendszer"
  12. #define VERZIOSZAM "1.1"
  13. #define HASHSIZE 256
  14.  
  15. #define onactive 1
  16. #define offactive 0
  17.  
  18. new const Prefix[] = "\w[.:SKA:.]";
  19. new const Stars[] = "*******************************";
  20. new const ChatPrefix[] = "^4[.:SKA:.] ^3»";
  21. new const DemoName[] = "ska_demo"
  22.  
  23. new const tablanev[] = "ska_register";
  24.  
  25. static szQuery[10048];
  26. new const SQL_INFO[][] = { "IP", "username", "Pw", "DB name" };
  27.  
  28. new String[121], AutoLogin[33];
  29. new g_screenfade, g_Maxplayers;
  30. new fwd_updatecmd, fwd_loadcmd, fwd_loadcmd1;
  31.  
  32. new Handle:g_SqlTuple;
  33. enum _:player_prop
  34. {
  35. steamid[32],
  36. ip[32],
  37. name[32],
  38. adminname[32],
  39. registerip[32],
  40. StarsOff,
  41. AccountId,
  42. Language,
  43. LoggedIn,
  44. InProgress,Active,
  45. RegOrLogin,
  46. IsBanned,
  47. BannedReason[32],
  48. Password[32],
  49. PasswordAgain[32],
  50. PasswordHash[HASHSIZE],
  51. StaredPassword[32],
  52. StaredPassAgain[32],
  53. Username[32],
  54. PINCode[4],
  55. SQLPINCode[4]
  56. }
  57. new Player[33][player_prop];
  58. enum _:sqlupdates
  59. {
  60.     S_Ban,
  61.     S_BanReason[32],
  62.     S_BanName,
  63.     S_ArgInt
  64. }
  65. new BanSystem[33][sqlupdates];
  66. new REGEX[][][] =
  67. {
  68.     {"A PINKód csak számokból állhat, és minimum^4 4^1 karakterből!", "PINCode only consist of numbers, minimum^4 4 characters.", "\y[\w%s\y]\d "},
  69.     {"Csak kis és nagybetü + számok (Minimum 4, maximum 16 karakter)", "Small, Large chars and numbers, also in^4 6-16^1 char range!", "\y[\w%s\y]\d "},}
  70. new PIN[][][] =
  71. {
  72.     {"\y[\w%s\y]\d Adj meg egy PIN Kódót!", "\y[\w%s\y]\d Type PIN Code!", "\y[\w%s\y]\d "},
  73.     {"Adj meg egy PINKódót, mert neked nincs!^nA PINkód a fiókod biztonsága érdekében!", "\d Type PINCode, the PINCode protect your account.", "\d "},
  74.     {"Kész", "\d Done", "\d "},
  75.     {"A mostani IP-d nem egyezik a Regisztráltal,ezért írd be a PIN kódót!", "\d This account registered IP does not match yours! Please enter your PIN Code!", ""},
  76.     {"Adj meg egy PINKódót, a fiókod biztonsága érdekében!", "\dType PINCode, the PINCode protect your account.", "\d "},
  77.     {"%s^1 A mostani IP-d nem egyezik a Regisztráltal, vagy nincs PIN kódód. Írd be a pinkódod!", "%s^1 This account registered IP does not match yours! Please enter your PIN Code!", "\d "},
  78.     {"%s^1 Adj meg egy PINKódót, a fiókod biztonsága érdekében!", "%s^1 Type PINCode, the PINCode protect your account.", "\d "},
  79. }
  80. new REGCHAT[][][] =
  81. {
  82.     {"%s^1 Regisztráció folyamatban kérlek várj!", "%s^1 Register in progress, please wait!", ""},
  83.     {"%s^1 Bejelentkezés folyamatban kérlek várj!", "%s^1 Logining in progress, please wait!", ""},
  84.     {"%s^1 Valamit elfelejtettél kitölteni!", "%s^1 You forget to fill something!", ""},
  85.     {"%s^1 Hibás felhasználónév vagy jelszó!", "%s^1 Incorrect username, or password.", ""},
  86.     {"%s^1 Ezzel a felhasználónévvel már regisztráltak!", "%s^1 This username is already registered!", ""},
  87.     {"%s^1 Sikeresen ^4regisztráltál,^1 felhasználónév: ^4%s", "%s^1 Succesfully register, username: ^4%s", ""},
  88.     {"%s^1 Sikeresen ^4bejelentkeztél!^1 Üdv ^3%s^1(^3#^4%i^1), jó játékot!", "%s^1 Succesfully ^4logged in^1! Hi ^3%s(^3#^4%i^1), good game!", ""},
  89.     {"%s^3 Hiba^1 a ^3bejelelentkezés^1 közben, ^3felhasználó^1 már ^3használatban van!", "%s^1 Someting went wrong, someone already in the profil!", ""},
  90.     {"Regisztrálj vagy Jelentkezz be!", "Register or Login!", ""},
  91.     {"%s^1 A két jelszó nem egyezik!", "%s^1 The tpyed two password not equal!", ""},
  92.     {"^"Hibás PINkód!^"", "^"Wrong PINCode^"", ""},
  93. }
  94. new DEMO[][][] =
  95. {
  96.     {"^4%s^1 Demó felvétel elkezdődőtt! ^3Demónév: ^4%s.dem^1.", "%s^1 Demo recording started, ^3Demo name: ^4%s.dem^1.", ""},
  97.     {"^4%s^3 Dátum: ^4 %s^1 |^3 Játékosnév: ^4%s", "%s^1 Date: ^4 %s^1 |^3 PlayerName: ^4%s", ""},
  98. }
  99. new NYELV[][][] =
  100. {
  101.     {"Nyelv: \yMagyar\d | English | Românesc", "Language: \dMagyar | \yEnglish\d | Românesc", "Limba: \dMagyar | English | \yRomânesc"}
  102. }
  103. new REGMENURESZ[][][] =
  104. {
  105.     {"Felhasználónév: \r%s", "Username: \r%s", "Username: \r%s"},
  106.     {"Jelszó: \r%s", "Password: \r%s", "Password: \r%s"},
  107.     {"Jelszó újra: \r%s", "Password again: \r%s", "Password again: \r%s"},
  108.     {"\yRegisztráció", "\yRegister", "\yRegister"},
  109.     {"\yBejelentkezés", "\yLogin", "\yLogin"},
  110.     {"Jelszó Csillagozás \r[BE]", "Register Stairs \r[ON]", ""},
  111.     {"Jelszó Csillagozás \d[KI]", "Register Stairs \d[OFF]", ""}
  112.  
  113. }
  114. new REGMENU[][][] =
  115. {
  116.     {"\y[\w%s\y]\d Regisztrálj vagy Jelentkezz be!", "\y[\w%s\y]\d Register or Login!", "\y[\w%s\y]\d Înscrieți-vă sau conectați-vă!"},
  117.     {"Regisztráció", "Register", "Inregistrare"},
  118.     {"Bejelentkezés^n", "Login^n", "Autentificare^n"},
  119.     {"\y[\w%s\y]\d Regisztrációs menü", "\y[\w%s\y]\d Register menu", "\y[\w%s\y]\d Meniu de înregistrare"},
  120.     {"\y[\w%s\y]\d Bejelentkezés menü", "\y[\w%s\y]\d Login menu", "\y[\w%s\y]\d Meniu de autentificare"}
  121.    
  122. }
  123. public plugin_init()
  124. {
  125.     register_plugin(PLUGINNAME, VERZIOSZAM, KESZITO);
  126.     register_impulse(201, "control");
  127.    
  128.     register_clcmd("PIN", "get_PIN");
  129.     register_clcmd("Username", "get_Username");
  130.     register_clcmd("Pass", "get_Password");
  131.     register_concmd("bn_ban_account", "CmdBanAccount", _, "<#id> <tiltas/oldas>")
  132.     register_clcmd("PassAgain", "get_PasswordAgain");
  133.     fwd_loadcmd=CreateMultiForward("Load_User_Data", ET_IGNORE, FP_CELL)
  134.     fwd_loadcmd1=CreateMultiForward("Load_User_Weapons", ET_IGNORE, FP_CELL)
  135.     fwd_updatecmd=CreateMultiForward("Update_User_Data", ET_IGNORE, FP_CELL)
  136.     g_Maxplayers = get_maxplayers();
  137.     g_screenfade = get_user_msgid("ScreenFade")
  138. }
  139. public plugin_natives()
  140. {
  141.     register_native("ska_get_user_id","native_sh_get_user_id",1)
  142.     register_native("ska_is_user_logged","native_sh_get_user_logged",1)
  143. }
  144. public native_sh_get_user_id(index)
  145. {
  146.     return Player[index][AccountId];
  147. }
  148. public native_sh_get_user_logged(index)
  149. {
  150.     return Player[index][LoggedIn];
  151. }
  152. public control(id)
  153. {
  154.     if(!Player[id][LoggedIn])
  155.         ChooseMenu(id);
  156. }
  157. public CmdBanAccount(id, level, cid){
  158.  
  159.     new Arg1[32], Arg2[32], Arg3[32], Arg_Int[2];
  160.    
  161.     read_argv(1, Arg1, charsmax(Arg1));
  162.     read_argv(2, Arg2, charsmax(Arg2));
  163.     read_argv(3, Arg3, charsmax(Arg3));
  164.  
  165.     Arg_Int[0] = str_to_num(Arg1);
  166.     Arg_Int[1] = str_to_num(Arg2);
  167.    
  168.     if(Arg_Int[0] < 1)
  169.         return PLUGIN_HANDLED
  170.    
  171.     new Banned;
  172.    
  173.     if(Arg_Int[1] == 0)
  174.         Banned = 0;
  175.     else
  176.         Banned = 1;
  177.    
  178.     new Query[512], Data[2], Is_Online = Check_Id_Online(Arg_Int[0]);
  179.    
  180.     Data[0] = id;
  181.     Data[1] = get_user_userid(id);
  182.  
  183.     formatex(Query, charsmax(Query), "UPDATE `ska_register` SET `Banned` = %d WHERE `Id` = %d;", Banned, Arg_Int[0]);
  184.  
  185.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query, Data, 2);
  186.    
  187.     if(Is_Online){
  188.     server_cmd("kick #%d ^"A fiókod véglegesen ki lett tíltva a szerverről.^"", get_user_userid(Is_Online));
  189.     if(Arg_Int[1] > 0)
  190.     {
  191.     client_print_color(0, print_team_default, "^3[^4PerFecT^3]^1 Játékos: ^3%s^1(^3#^1%i^1) fiókja ki lett tíltva a szerverről, ^3örökre.", Player[Is_Online][name], Arg_Int[0]);
  192.     client_print_color(0, print_team_default, "^3[^4PerFecT^3]^1 ^3Adminisztrátor: ^4%s^1(^3#^1%i^1) által.", Player[id][name], Player[id][AccountId]);
  193.     }
  194.     else
  195.     {
  196.     client_print_color(0, print_team_default, "^3[^4PerFecT^3]^1 Játékos: ^3-^1(^3#^1%i^1) fiókja feloldásra került.", Arg_Int[0]);
  197.     client_print_color(0, print_team_default, "^3[^4PerFecT^3] ^3Adminisztrátor: ^4%s^1(^3#^1%i^1) által.", Player[id][name], Player[id][AccountId]);
  198.     }
  199.     }
  200.     else{
  201.     if(Arg_Int[1] > 0)
  202.     {
  203.     client_print_color(0, print_team_default, "^3[^4PerFecT^3]^1 Játékos: ^3-^1(^3#^1%i^1) fiókja ki lett tíltva a szerverről, ^3örökre.", Arg_Int[0]);
  204.     client_print_color(0, print_team_default, "^3[^4PerFecT^3] ^3Adminisztrátor: ^4%s^1(^3#^1%i^1) által.", Player[id][name], Player[id][AccountId]);
  205.     }
  206.     else
  207.     {
  208.     client_print_color(0, print_team_default, "^3[^4PerFecT^3]^1 Játékos: ^3-^1(^3#^1%i^1) fiókja feloldásra került.", Arg_Int[0]);
  209.     client_print_color(0, print_team_default, "^3[^4PerFecT^3] ^3Adminisztrátor: ^4%s^1(^3#^1%i^1) által.", Player[id][name], Player[id][AccountId]);
  210.     }
  211.     }
  212.        
  213.     return PLUGIN_HANDLED;
  214. }
  215. stock Check_Id_Online(id)
  216. {
  217.     for(new idx = 1; idx < g_Maxplayers; idx++)
  218.     {
  219.         if(!is_user_connected(idx) || !Player[idx][LoggedIn])
  220.             continue;
  221.        
  222.         if(Player[idx][AccountId] == id)
  223.             return idx;
  224.     }
  225.     return 0;
  226. }
  227. static FrameCall;
  228. public server_frame()
  229. {
  230.     if(FrameCall < 500)
  231.     {
  232.         FrameCall++;
  233.         return;
  234.     }
  235.     else
  236.         FrameCall = 0;
  237.    
  238.     new p[32],n, id;
  239.     get_players(p,n,"ch");
  240.     for(new i=0;i<n;i++)
  241.     {
  242.         id = p[i];
  243.         if(Player[id][LoggedIn] == 0)
  244.         {
  245.             formatex(String, charsmax(String), REGCHAT[8][Player[id][Language]]);
  246.             client_print(id, print_center, String);
  247.             message_begin(MSG_ONE_UNRELIABLE, g_screenfade, {0,0,0}, id)
  248.             write_short(1<<12)
  249.             write_short(1<<12)
  250.             write_short(0x0000)
  251.             write_byte(0)
  252.             write_byte(0)
  253.             write_byte(0)
  254.             write_byte(255)
  255.             message_end()
  256.         }
  257.     }
  258. }
  259. public ChooseMenu(id)
  260. {
  261.     formatex(String, charsmax(String), REGMENU[0][Player[id][Language]], Prefix);
  262.     new menu = menu_create(String, "ChooseMenu_h");
  263.  
  264.     menu_additem(menu, REGMENU[1][Player[id][Language]], "1", 0);
  265.     menu_additem(menu, REGMENU[2][Player[id][Language]], "3", 0);
  266.  
  267.     format(String, charsmax(String), NYELV[0][Player[id][Language]]);
  268.     menu_additem(menu, String, "6", 0);
  269.  
  270.     menu_display(id, menu, 0);
  271.     return PLUGIN_HANDLED;
  272. }
  273. public ChooseMenu_h(id, menu, item)
  274. {
  275.     new data[9], szName[64];
  276.     new access, callback;
  277.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  278.     new key = str_to_num(data);
  279.    
  280.     switch(key)
  281.         {
  282.             case 1:
  283.             {
  284.             RegisterMenu(id)
  285.             Player[id][RegOrLogin] = 1;
  286.             }
  287.             case 3:
  288.             {
  289.             LoginMenu(id);
  290.             Player[id][RegOrLogin] = 2;
  291.             }
  292.             case 6:
  293.             {  
  294.             if(Player[id][Language] == 0)
  295.             {
  296.                 Player[id][Language] = 1;
  297.             }
  298.             else
  299.             {
  300.                 Player[id][Language] = 0;
  301.             }
  302.             ChooseMenu(id);
  303.             }
  304.         }
  305. }
  306. public RegisterMenu(id)
  307. {
  308.     formatex(String, charsmax(String), REGMENU[3][Player[id][Language]], Prefix);
  309.     new menu = menu_create(String, "RegisterMenu_h");
  310.    
  311.     format(String, charsmax(String), REGMENURESZ[0][Player[id][Language]], Player[id][Username])
  312.     menu_additem(menu, String, "1", 0);
  313.     if(Player[id][StarsOff] == 0)
  314.     {
  315.     format(String, charsmax(String), REGMENURESZ[1][Player[id][Language]], Player[id][StaredPassword]);
  316.     menu_additem(menu, String, "2", 0);
  317.     }
  318.     else
  319.     {
  320.     format(String, charsmax(String), REGMENURESZ[1][Player[id][Language]], Player[id][Password])
  321.     menu_additem(menu, String, "2", 0);
  322.     }
  323.     if(Player[id][StarsOff] == 0)
  324.     {
  325.     format(String, charsmax(String), REGMENURESZ[2][Player[id][Language]], Player[id][StaredPassAgain])
  326.     menu_additem(menu, String, "3", 0);
  327.     }
  328.     else
  329.     {
  330.     format(String, charsmax(String), REGMENURESZ[2][Player[id][Language]], Player[id][PasswordAgain])
  331.     menu_additem(menu, String, "3", 0);
  332.     }
  333.  
  334.     menu_additem(menu, REGMENURESZ[3][Player[id][Language]], "4", 0);
  335.     menu_addblank2(menu);
  336.     if(Player[id][StarsOff] == 0)
  337.     {
  338.     format(String, charsmax(String), REGMENURESZ[5][Player[id][Language]])
  339.     menu_additem(menu, String, "5", 0);
  340.     }
  341.     else
  342.     {
  343.     format(String, charsmax(String), REGMENURESZ[6][Player[id][Language]])
  344.     menu_additem(menu, String, "5", 0)
  345.     }
  346.     format(String, charsmax(String), NYELV[0][Player[id][Language]]);
  347.     menu_additem(menu, String, "6", 0);
  348.    
  349.     menu_display(id, menu, 0);
  350.     return PLUGIN_HANDLED;
  351. }
  352. public RegisterMenu_h(id, menu, item)
  353. {
  354.     new data[9], szName[64];
  355.     new access, callback;
  356.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  357.     new key = str_to_num(data);
  358.  
  359.     switch(key)
  360.     {
  361.         case 1:
  362.         {
  363.         client_cmd(id, "messagemode Username");
  364.         }
  365.         case 2:
  366.         {
  367.         client_cmd(id, "messagemode Pass");
  368.        
  369.         }
  370.         case 3:
  371.         {
  372.         client_cmd(id, "messagemode PassAgain");
  373.         }
  374.         case 4:
  375.         {
  376.         Player[id][RegOrLogin] = 1;
  377.         RegLog(id);
  378.         }
  379.         case 5:
  380.         {
  381.     if(Player[id][StarsOff])
  382.      {
  383.        Player[id][StarsOff] = 0;
  384.        RegisterMenu(id);
  385.       }
  386.     else
  387.      {
  388.        Player[id][StarsOff] = 1;
  389.        RegisterMenu(id);
  390.       }
  391.         }
  392.         case 6:
  393.         {
  394.     if(Player[id][Language] == 0)
  395.     {
  396.         Player[id][Language] = 1;
  397.     }
  398.     else
  399.     {
  400.         Player[id][Language] = 0;
  401.     }
  402.     RegisterMenu(id);
  403.         }
  404.         }
  405. }
  406. public LoginMenu(id)
  407. {
  408.     formatex(String, charsmax(String), REGMENU[4][Player[id][Language]], Prefix);
  409.     new menu = menu_create(String, "LoginMenu_h");
  410.    
  411.     format(String, charsmax(String), REGMENURESZ[0][Player[id][Language]], Player[id][Username])
  412.     menu_additem(menu, String, "1", 0);
  413.    
  414.     if(Player[id][StarsOff] == 0)
  415.     {
  416.     format(String, charsmax(String), REGMENURESZ[1][Player[id][Language]], Player[id][StaredPassword]);
  417.     menu_additem(menu, String, "2", 0);
  418.     }
  419.     else
  420.     {
  421.     format(String, charsmax(String), REGMENURESZ[1][Player[id][Language]], Player[id][Password])
  422.     menu_additem(menu, String, "2", 0);
  423.     }
  424.     menu_addblank2(menu);
  425.     menu_additem(menu, REGMENURESZ[4][Player[id][Language]], "3", 0);
  426.     menu_display(id, menu, 0);
  427.     return PLUGIN_HANDLED;
  428. }
  429. public LoginMenu_h(id, menu, item)
  430. {
  431.     new data[9], szName[64];
  432.     new access, callback;
  433.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  434.     new key = str_to_num(data);
  435.  
  436.     switch(key)
  437.     {
  438.         case 1:
  439.         {
  440.         client_cmd(id, "messagemode Username");
  441.         }
  442.         case 2:
  443.         {
  444.         client_cmd(id, "messagemode Pass");
  445.         }
  446.         case 3:
  447.         {
  448.         Player[id][RegOrLogin] = 2;
  449.         RegLog(id);
  450.         }
  451.         case 5:
  452.         {
  453.         if(Player[id][StarsOff])
  454.         {
  455.             Player[id][StarsOff] = 0;
  456.             LoginMenu(id);
  457.         }
  458.         else
  459.         {
  460.             Player[id][StarsOff] = 1;
  461.             LoginMenu(id);
  462.         }
  463.         }
  464.         case 6:
  465.         {
  466.            if(Player[id][Language] == 0)
  467.            {
  468.         Player[id][Language] = 1;
  469.            }
  470.            else
  471.            {
  472.         Player[id][Language] = 0;
  473.            }
  474.            LoginMenu(id);
  475.         }
  476.     }
  477. }
  478. public get_Username(id)
  479. {
  480.     new Arg[32];
  481.     read_argv(1, Arg, charsmax(Arg));
  482.     if(RegexTester(id, Arg, "^^[a-zA-Z0-9]{4,16}+$", REGEX[1][Player[id][Language]]))
  483.     {  
  484.         copy(Player[id][Username], 32, Arg);
  485.     }
  486.  
  487.     if(Player[id][RegOrLogin] == 1)
  488.         RegisterMenu(id);
  489.     else
  490.         LoginMenu(id);
  491. }
  492. public get_Password(id)
  493. {
  494.     new Arg[32];
  495.     read_argv(1, Arg, charsmax(Arg));
  496.     if(RegexTester(id, Arg, "^^[a-zA-Z0-9]{4,16}+$", REGEX[1][Player[id][Language]]))
  497.     {
  498.         copy(Player[id][Password], 32, Arg);
  499.     }
  500.     formatex(Player[id][StaredPassword], strlen(Arg), "%s", Stars);
  501.     if(Player[id][RegOrLogin] == 1)
  502.         RegisterMenu(id);
  503.     else
  504.         LoginMenu(id);
  505.    
  506.     new hash[256];
  507.     hash_string(Arg, Hash_Keccak_512, hash, charsmax(hash));
  508.     copy(Player[id][PasswordHash], HASHSIZE, hash);
  509. }
  510. public get_PasswordAgain(id)
  511. {
  512.     new Arg[32];
  513.     read_argv(1, Arg, charsmax(Arg));
  514.     if(RegexTester(id, Arg, "^^[a-zA-Z0-9]{4,16}+$", REGEX[1][Player[id][Language]]))
  515.         copy(Player[id][PasswordAgain], 32, Arg);
  516.  
  517.     formatex(Player[id][StaredPassAgain], strlen(Arg), "%s", Stars);
  518.     if(Player[id][RegOrLogin] == 1)
  519.         RegisterMenu(id);
  520.     else
  521.         LoginMenu(id);
  522. }
  523. public RegLog(id)
  524. {
  525.     if(Player[id][RegOrLogin] == 1)
  526.     {
  527.         if(equali(Player[id][Username], "") || equali(Player[id][Password],""))
  528.         {
  529.             client_print_color(id, print_team_default, REGCHAT[2][Player[id][Language]], ChatPrefix);
  530.             Player[id][RegOrLogin] = 0;
  531.             return;
  532.         }
  533.         if(!equal(Player[id][Password], Player[id][PasswordAgain]))
  534.         {
  535.             client_print_color(id, print_team_default, REGCHAT[9][Player[id][Language]], ChatPrefix);
  536.             Player[id][RegOrLogin] = 0;
  537.             return;
  538.         }
  539.         else
  540.         {
  541.             client_print_color(id, print_team_default, REGCHAT[0][Player[id][Language]], ChatPrefix);
  542.             Player[id][InProgress] = 1;
  543.             sql_account_check(id);
  544.         }
  545.     }
  546.     if(Player[id][RegOrLogin] == 2)
  547.     {
  548.         if(equali(Player[id][Username], "") || equali(Player[id][Password],""))
  549.         {
  550.             client_print_color(id, print_team_default, REGCHAT[2][Player[id][Language]], ChatPrefix);
  551.             Player[id][RegOrLogin] = 0;
  552.             return;
  553.         }
  554.         else
  555.         {
  556.             client_print_color(id, print_team_default, REGCHAT[1][Player[id][Language]], ChatPrefix);
  557.             Player[id][InProgress] = 1;
  558.             sql_account_check(id);
  559.         }
  560.     }
  561. }
  562. public sql_account_check(id)
  563. {
  564.     new len = 0
  565.  
  566.     new a[191]
  567.    
  568.     format(a, 190, "%s", Player[id][Username])
  569.    
  570.     replace_all(a, 190, "\", "\\")
  571.     replace_all(a, 190, "'", "\'")
  572.    
  573.     len += format(szQuery[len], 2048, "SELECT * FROM %s ", tablanev)
  574.     len += format(szQuery[len], 2048-len,"WHERE Username = '%s'", a)
  575.    
  576.     new szData[2];
  577.     szData[0] = id;
  578.     szData[1] = get_user_userid(id);
  579.    
  580.     SQL_ThreadQuery(g_SqlTuple,"sql_account_check_thread", szQuery, szData, 2)
  581. }
  582.  
  583. public sql_account_check_thread(FailState,Handle:Query,Error[],Errcode,szData[],DataSize)
  584. {
  585. if(Errcode)
  586. {
  587.     log_amx("[ *HIBA* ] PROBLEMA A LEKERDEZESNEL! ( %s )",Error)
  588.     return
  589. }
  590. if(FailState == TQUERY_CONNECT_FAILED)
  591. {
  592.     set_fail_state("[ *HIBA* ] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!")
  593.     return
  594. }
  595. else if(FailState == TQUERY_QUERY_FAILED)
  596. {
  597.     set_fail_state("[ *HIBA* ] A LEKERDEZES MEGSZAKADT!")
  598.     return
  599. }
  600.  
  601. new id = szData[0];
  602.  
  603. if (szData[1] != get_user_userid(id))
  604.     return;
  605.  
  606. new iFound = SQL_NumRows(Query)
  607. new Float:randomtime = random_float(1.00, 6.00)
  608.  
  609. if(Player[id][RegOrLogin] == 1)
  610. {
  611.     if(iFound > 0)
  612.     {
  613.         client_print_color(id, print_team_default, REGCHAT[4][Player[id][Language]], ChatPrefix);
  614.         Player[id][InProgress] = 0;
  615.         RegisterMenu(id);
  616.     }
  617.     else
  618.         sql_accountcreate(id);
  619. }
  620. if(Player[id][RegOrLogin] == 2)
  621. {
  622.     if(iFound == 0)
  623.     {
  624.         client_print_color(id, print_team_default, REGCHAT[3][Player[id][Language]], ChatPrefix);
  625.         Player[id][InProgress] = 0;
  626.         LoginMenu(id);
  627.     }
  628.     else  
  629.     sql_account_load(id)
  630.        
  631. }
  632. }
  633. public sql_accountcreate(id)
  634. {
  635.     new len = 0
  636.    
  637.     new sTime[9], sDate[11], sDateAndTime[32];
  638.     get_time("%H:%M:%S", sTime, 8 ); get_time("%Y/%m/%d", sDate, 11);
  639.     formatex(sDateAndTime, 31, "%s %s", sDate, sTime);
  640.    
  641.     len += format(szQuery[len], 2048, "INSERT INTO %s ", tablanev)
  642.     len += format(szQuery[len], 2048-len,"(Username,Password,RegistrationIP,RegistrationID,RegistrationName, RegistrationDate) VALUES(^"%s^", ^"%s^", ^"%s^",^"%s^",^"%s^",^"%s^")", Player[id][Username],Player[id][PasswordHash], Player[id][ip], Player[id][steamid], Player[id][name], sDateAndTime)
  643.    
  644.     new szData[2];
  645.     szData[0] = id;
  646.     szData[1] = get_user_userid(id);
  647.    
  648.     SQL_ThreadQuery(g_SqlTuple,"sql_account_thread", szQuery, szData, 2)
  649. }
  650. public sql_account_thread(FailState,Handle:Query,Error[],Errcode,szData[],DataSize)
  651. {
  652.    if(Errcode)
  653.    {
  654.        log_amx("[ *HIBA* ] PROBLEMA A LEKERDEZESNEL! ( %s )",Error)
  655.        return
  656.    }
  657.  
  658.    if(FailState == TQUERY_CONNECT_FAILED)
  659.    {
  660.        set_fail_state("[ *HIBA* ] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!")
  661.        return
  662.    }
  663.    else if(FailState == TQUERY_QUERY_FAILED)
  664.    {
  665.        set_fail_state("[ *HIBA* ] A LEKERDEZES MEGSZAKADT!")
  666.        return
  667.    }
  668.    new id = szData[0];
  669.    if (szData[1] != get_user_userid(id))
  670.    return;
  671.  
  672.    client_print_color(id, print_team_default, REGCHAT[5][Player[id][Language]], ChatPrefix, Player[id][Username]);
  673.    Player[id][InProgress] = 0;
  674.    Player[id][RegOrLogin] = 0;
  675.    LoginMenu(id);
  676.    return;
  677. }
  678. public sql_account_load(id)
  679. {
  680.    new len = 0
  681.  
  682.    len += format(szQuery[len], 2048, "SELECT * FROM %s ", tablanev)
  683.    len += format(szQuery[len], 2048-len,"WHERE Username = ^"%s^"", Player[id][Username])
  684.  
  685.    new szData[2];
  686.    szData[0] = id;
  687.    szData[1] = get_user_userid(id);
  688.  
  689.    SQL_ThreadQuery(g_SqlTuple,"sql_account_load_thread", szQuery, szData, 2)
  690. }
  691.  
  692. public sql_account_load_thread(FailState,Handle:Query,Error[],Errcode,szData[],DataSize)
  693. {
  694.    if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  695.    {
  696.        log_amx("%s", Error);
  697.        return;
  698.    }
  699.    else
  700.    {
  701.        new id = szData[0];
  702.  
  703.        if (szData[1] != get_user_userid(id))
  704.            return;
  705.  
  706.        new szSqlPassword[HASHSIZE]
  707.        SQL_ReadResult(Query, 2, szSqlPassword, HASHSIZE)
  708.  
  709.        if(equal(Player[id][PasswordHash], szSqlPassword))
  710.        {
  711.            new szSqlIP[32]
  712.            SQL_ReadResult(Query, 4, szSqlIP, 32)
  713.  
  714.            Player[id][IsBanned] = SQL_ReadResult(Query, 13)
  715.  
  716.            if(Player[id][IsBanned] > 0)
  717.            {
  718.                client_print_color(id, print_team_default, "^4%s^1 Ez a fiók ki van ^3tíltva^1 a szerverről, ^4véglegesen.", ChatPrefix);
  719.                client_print_color(id, print_team_default, "^4%s^1 Ha fellebbezni szeretnél, keress fel egy ^3FőAdmin^1-t vagy egy ^3Tulajdonos^1-t.", ChatPrefix);
  720.                Player[id][InProgress] = 0;
  721.                return;
  722.            }
  723.  
  724.            Player[id][Active] = SQL_ReadResult(Query, 7)
  725.  
  726.            if (Player[id][Active] > 0)
  727.            {
  728.                client_print_color(id, print_team_default, REGCHAT[7][Player[id][Language]], ChatPrefix);
  729.                LoginMenu(id);
  730.                Player[id][InProgress] = 0;
  731.                return;
  732.            }
  733.            Player[id][Active] = 1;
  734.  
  735.            Player[id][AccountId] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Id"));
  736.            Player[id][SQLPINCode] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "PIN"));
  737.  
  738.            /*
  739.            if(Player[id][SQLPINCode] == 0)
  740.            {
  741.                PinCodeCreatorMenu(id);
  742.                client_print_color(id, print_team_default, PIN[6][Player[id][Language]], ChatPrefix);
  743.                return;
  744.            }
  745.            if(!equal(szSqlIP, Player[id][ip]))
  746.            {
  747.                PinCodeCreatorMenu(id);
  748.                client_print_color(id, print_team_default, PIN[5][Player[id][Language]], ChatPrefix);
  749.                return;
  750.            }
  751.            */
  752.         client_print_color(id, print_team_default, REGCHAT[6][Player[id][Language]], ChatPrefix, Player[id][name], Player[id][AccountId]);
  753.         Player[id][RegOrLogin] = 0;
  754.         Player[id][InProgress] = 0;
  755.         Player[id][LoggedIn] = 1;
  756.         new fwdloadtestret
  757.         ExecuteForward(fwd_loadcmd,fwdloadtestret,id);
  758.         new fwdloadtestret1
  759.         ExecuteForward(fwd_loadcmd1,fwdloadtestret1,id);
  760.         Start_Logged_Demo(id);
  761.        //set_user_info(id, "perfectusername", Player[id][Username]);
  762.        //set_user_info(id, "perfecthash", Player[id][PasswordHash]);
  763.        //client_cmd(id, "setinfo ^"perfectusername^" ^"%s^"", Player[id][Username]);
  764.        //client_cmd(id, "setinfo ^"perfecthash^" ^"%s^"", Player[id][PasswordHash]);
  765.        //client_cmd(id, "setinfo ^"perfectautologin^" ^"0^"");
  766.        engclient_cmd(id, "setinfo autologin 0")
  767.        engclient_cmd(id, "setinfo perfectusername %s", Player[id][Username])
  768.         Update(id, 1);
  769.         Update(id, 4);
  770.          
  771.        }
  772.        else
  773.        {
  774.            client_print_color(id, print_team_default, REGCHAT[3][Player[id][Language]], ChatPrefix);
  775.            Player[id][RegOrLogin] = 0;
  776.            LoginMenu(id);
  777.        }
  778.    }
  779. }
  780. public Start_Logged_Demo(id) {
  781.    new sTime[9], sDate[11], sDateAndTime[32];
  782.    get_time("%H:%M:%S", sTime, 8 );
  783.    get_time("%Y/%m/%d", sDate, 11);
  784.    formatex(sDateAndTime, 31, "%s %s", sDate, sTime);
  785.  
  786.    client_cmd(id, "stop; record ^"%s.dem^"", DemoName);
  787.    
  788.    client_print_color(id, print_team_default,DEMO[0][Player[id][Language]], ChatPrefix, DemoName);
  789.    client_print_color(id, print_team_default,DEMO[1][Player[id][Language]], ChatPrefix, sDateAndTime, Player[id][name]);
  790. }
  791. public PinCodeCreatorMenu(id)
  792. {
  793.    formatex(String, charsmax(String), PIN[0][Player[id][Language]], Prefix);
  794.    new menu = menu_create(String, "Pin_h");
  795.  
  796.    if(Player[id][SQLPINCode] == 0)
  797.        formatex(String, charsmax(String), PIN[1][Player[id][Language]]);
  798.    else
  799.        formatex(String, charsmax(String), PIN[3][Player[id][Language]]);
  800.    menu_addtext2(menu, String);
  801.    formatex(String, charsmax(String), "\yPIN: \r%d^n^n", Player[id][PINCode]);
  802.    menu_additem(menu, String, "1",0);
  803.    formatex(String, charsmax(String), PIN[2][Player[id][Language]]);
  804.    menu_additem(menu, String, "2",0);
  805.  
  806.    menu_display(id, menu, 0);
  807.    return PLUGIN_HANDLED;
  808. }
  809. public Pin_h(id, menu, item)
  810. {
  811.     new data[9], szName[64];
  812.     new access, callback;
  813.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  814.     new key = str_to_num(data);
  815.  
  816.     switch(key)
  817.    {
  818.        case 1:
  819.        {
  820.            client_cmd(id, "messagemode PIN");
  821.        }
  822.        case 2:
  823.        {
  824.            if(Player[id][SQLPINCode] == 0)
  825.            {
  826.                Update(id, 2);
  827.                sql_account_load(id);
  828.            }
  829.            else if(equal(Player[id][SQLPINCode], Player[id][PINCode]))
  830.            {
  831.                client_print_color(id, print_team_default, REGCHAT[6][Player[id][Language]], ChatPrefix, Player[id][name], Player[id][AccountId]);
  832.                Player[id][RegOrLogin] = 0;
  833.                Player[id][InProgress] = 0;
  834.                Player[id][LoggedIn] = 1;
  835.                new fwdloadtestret
  836.                ExecuteForward(fwd_loadcmd,fwdloadtestret,id);
  837.                Start_Logged_Demo(id);
  838.                Update(id, 3);
  839.                Update(id, 1);
  840.                Update(id, 4);
  841.            }
  842.            else
  843.                server_cmd("amx_kick #%d ^"Hibás PINKÓD^"", get_user_userid(id));
  844.        }
  845.    }
  846. }
  847. public get_PIN(id)
  848. {
  849.    new Arg[32];
  850.    read_argv(1, Arg, charsmax(Arg));
  851.    if(RegexTester(id, Arg, "^^[1-9]{0,1}[0-9]{4,4}$", REGEX[0][Player[id][Language]]))
  852.    {
  853.        Player[id][PINCode] = str_to_num(Arg);
  854.    }
  855.    PinCodeCreatorMenu(id);
  856. }
  857. public UpdateBan(id)
  858. {
  859.     new Len;
  860.    
  861.     Len += formatex(szQuery[Len], charsmax(szQuery), "UPDATE `%s` SET ", tablanev);
  862.    
  863.     Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "Banned = ^"%i^", ", BanSystem[id][S_Ban]);
  864.     Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "BannedReason = ^"%s^", ", BanSystem[id][S_BanReason]);
  865.     Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "AdminName = ^"%s^", ", BanSystem[id][S_BanName]);
  866.    
  867.     Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "Parameter = '0' WHERE `Id` =  %d;", BanSystem[id][S_ArgInt]);
  868.    
  869.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", szQuery);
  870.  
  871. }
  872. public Update(id, UpdateType)
  873. {
  874. new Len;
  875. new sTime[9], sDate[11], sDateAndTime[32];
  876. get_time("%H:%M:%S", sTime, 8 ); get_time("%Y/%m/%d", sDate, 11);
  877. formatex(sDateAndTime, 31, "%s %s", sDate, sTime);
  878.  
  879. Len += formatex(szQuery[Len], charsmax(szQuery), "UPDATE `%s` SET ", tablanev);
  880.  
  881. switch(UpdateType)
  882. {
  883.    case 1:
  884.    {
  885.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "LastLoggedSteamID = ^"%s^", ", Player[id][steamid]);
  886.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "LastLoggedName = ^"%s^", ", Player[id][name]);
  887.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "LastLoggedDate = ^"%s^", ", sDateAndTime);
  888.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "LastLoggedIP = ^"%s^", ", Player[id][ip]);
  889.    }
  890.    case 2:
  891.    {
  892.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "PIN = ^"%i^", ", Player[id][PINCode]);  
  893.    }
  894.    case 3:
  895.    {
  896.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "RegistrationIP = ^"%s^", ", Player[id][ip]);
  897.    }
  898.    case 4:
  899.    {
  900.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "Active = ^"%i^", ", onactive);
  901.    }
  902.    case 5:
  903.    {
  904.        Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "Active = ^"%i^", ", offactive);
  905.    }
  906. }
  907.    
  908. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "Parameter = '0' WHERE `Id` =  %d;", Player[id][AccountId]);
  909.  
  910. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", szQuery);
  911.  
  912. }
  913. public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime){
  914. if( FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED )
  915. {
  916.     log_amx("%s", Error);
  917.     return;
  918. }
  919. }
  920. public client_putinserver(id)
  921. {
  922.    GiveDatas(id);
  923.    ResetAccountData(id);
  924.    ResetAccountInfos(id);
  925. }
  926. public client_disconnected(id)
  927. {
  928.    if(Player[id][LoggedIn])
  929.    {
  930.    Update(id, 5);
  931.  
  932.    Player[id][Active] = 0;
  933.    Player[id][RegOrLogin] = 0;
  934.    Player[id][LoggedIn] = 0;
  935.    
  936.  
  937.    new fwdupdatetestret
  938.    ExecuteForward(fwd_updatecmd,fwdupdatetestret,id);
  939.    }
  940. }
  941. public ResetAccountData(id)
  942. {
  943.    get_user_info(id, "perfectautologin", AutoLogin[id], 32);
  944.    if(AutoLogin[id] == 1)
  945.    {
  946.        get_user_info(id, "perfectusername", Player[id][Username], charsmax(Player[][Username]));
  947.        get_user_info(id, "perfecthash", Player[id][PasswordHash], charsmax(Player[][PasswordHash]));
  948.    }
  949.    Player[id][AccountId] = 0;
  950.    Player[id][Password] = "";
  951.    Player[id][Username] = "";
  952.    Player[id][StaredPassword] = "";
  953.    Player[id][StaredPassAgain] = "";
  954.    Player[id][PasswordAgain] = "";
  955.    Player[id][PasswordHash] = "";
  956.    Player[id][BannedReason] = "";
  957.    Player[id][IsBanned] = 0;
  958.    Player[id][PINCode] = 0;
  959. }
  960. public ResetAccountInfos(id)
  961. {    
  962.    Player[id][InProgress] = 0;
  963.    Player[id][Language] = 0;
  964.    Player[id][StarsOff] = 0;
  965.    Player[id][LoggedIn] = 0;
  966.  
  967. }
  968. public GiveDatas(id)
  969. {
  970.    Player[id][name] = "";
  971.    Player[id][steamid] = "";
  972.    Player[id][ip] = "";
  973.    get_user_name(id, Player[id][name], 32);
  974.    get_user_authid(id, Player[id][steamid], 32);
  975.    get_user_ip(id, Player[id][ip], 32);
  976. }
  977.  
  978. /**
  979. *   Input:
  980. *       id = the user id
  981. *       m_string[] = The string what need to test
  982. *       RegexText[] = The regex pattern
  983. *       NoMatchText[] = If the regex doesn't match this text will be chatprinted to the id
  984. * */
  985. bool:RegexTester(id, m_string[], RegexText[], NoMatchText[])
  986. {
  987.     new ret, error[128];
  988.     new Regex:regex_handle = regex_match(m_string, RegexText, ret, error, charsmax(error));
  989.  
  990.     switch(regex_handle)
  991.     {
  992.         case REGEX_MATCH_FAIL:
  993.         {
  994.             log_amx("---REGEX MATCH FAIL---");
  995.             log_amx("ERROR:");
  996.             log_amx(error);
  997.             // There was an error matching against the pattern
  998.             // Check the {error} variable for message, and {ret} for error code
  999.         }
  1000.         case REGEX_PATTERN_FAIL:
  1001.         {
  1002.             log_amx("---REGEX TATTERN ERROR---");
  1003.             log_amx("ERROR:");
  1004.             log_amx(error);
  1005.             // There is an error in your pattern
  1006.             // Check the {error} variable for message, and {ret} for error code
  1007.         }
  1008.         case REGEX_NO_MATCH:
  1009.         {
  1010.             client_print_color(id, print_team_default, "^4%s ^1%s",Prefix, NoMatchText);
  1011.         }
  1012.         default:
  1013.         {
  1014.             // Matched m_string {ret} times
  1015.             regex_free(regex_handle);
  1016.             return true;
  1017.             // Free the Regex handle
  1018.         }
  1019.     }
  1020.     regex_free(regex_handle);
  1021.     return false;
  1022. }
  1023. public plugin_cfg()
  1024. {
  1025. g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0], SQL_INFO[1], SQL_INFO[2], SQL_INFO[3]);
  1026. createRegTable()  
  1027. //createForceLoginTable()
  1028. sql_active_check()
  1029. }
  1030. public sql_active_check()
  1031. {
  1032.     new szQuery[2048]
  1033.     new len = 0
  1034.    
  1035.     len += format(szQuery[len], 2048, "UPDATE ska_register SET ")
  1036.     len += format(szQuery[len], 2048-len,"Active = '0' ")
  1037.     len += format(szQuery[len], 2048-len,"WHERE Active = '%d'", onactive)
  1038.    
  1039.     SQL_ThreadQuery(g_SqlTuple,"sql_active_check_thread", szQuery)
  1040. }
  1041.  
  1042. public sql_active_check_thread(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  1043. {
  1044.     if(FailState == TQUERY_CONNECT_FAILED)
  1045.         return set_fail_state("[ *HIBA* ] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!")
  1046.     else if(FailState == TQUERY_QUERY_FAILED)
  1047.         return set_fail_state("[ *HIBA* ] A LEKERDEZES MEGSZAKADT!")
  1048.    
  1049.     if(Errcode)
  1050.         return log_amx("[ *HIBA* ] PROBLEMA A LEKERDEZESNEL! ( %s )",Error)
  1051.    
  1052.     return PLUGIN_CONTINUE
  1053. }
  1054. public createRegTable()
  1055. {
  1056. new Len;
  1057. Len += formatex(szQuery[Len], charsmax(szQuery), "CREATE TABLE IF NOT EXISTS `%s` ", tablanev);
  1058. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "( ");
  1059. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`AccountId` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,");
  1060. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`Username` varchar(32) NOT NULL,")
  1061. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`Password` varchar(256) NOT NULL,")
  1062. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`PIN` INT(4) NOT NULL,")
  1063. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`RegisterName` varchar(32) NOT NULL,")
  1064. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`RegisterIP` varchar(32) NOT NULL,")
  1065. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`RegisterID` varchar(32) NOT NULL,")
  1066. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`RegisterDate` varchar(32) NOT NULL,")
  1067. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`Banned` varchar(1) NOT NULL,")
  1068. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`BannedReason` varchar(32) NOT NULL,")
  1069. Len += formatex(szQuery[Len], charsmax(szQuery)-Len, "`Active` INT(1) NOT NULL)")
  1070.  
  1071. SQL_ThreadQuery(g_SqlTuple, "createTableThread", szQuery);
  1072. }
  1073. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  1074. if(Errcode)
  1075. log_amx("[HIBA*] HIBAT DOBTAM: %s",Error);
  1076. if(FailState == TQUERY_CONNECT_FAILED)
  1077.     set_fail_state("[HIBA*] NEM TUDTAM CSATLAKOZNI AZ ADATBAZISHOZ!");
  1078.     else if(FailState == TQUERY_QUERY_FAILED)
  1079.         set_fail_state("Query Error");
  1080. }
  1081. public plugin_end()
  1082. {
  1083. SQL_FreeHandle(g_SqlTuple);
  1084. }
  1085. /*
  1086.  if(Player[id][PINCode] == 0)
  1087.         {
  1088.             client_print_color(id, print_team_default, "^4%s^1 A bejelentkezeshez megkell adnod egy pinkodot!", ChatPrefix);
  1089.             PinCodeCreatorMenu(id);
  1090.             Player[id][PINCode] = 0;
  1091.             Player[id][InProgress] = 0;
  1092.             return;
  1093.         }
  1094.  
  1095. */


Csak ennyit kell hozzá adj a módodhoz.
Viszont elöbb a módodból távolítsd el, vagy Kösd ki hogy a régi reg rendszer ne szoljon közbe.

  1. #include <RegSystem_SKA>
  2.  
  3. register_impulse(201, "Ellenorzes");
  4.  
  5. }
  6. public Ellenorzes(id)
  7. {
  8.     if(ska_is_user_logged(id))
  9.         Fomenu(id);
  10. }
  11.  
  12.  
  13. //Itt ezt teheted a Hud hoz is. hogy ne mutassa regisztráció/Bejelentkezés elött.
  14. if(ska_is_user_logged(id))


De ez nekem nem fog müködni mert 1.9.0- forditot nem hasznalok a mod sem kompatibilis ezzel a verzióval. :(


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2020.05.11. 10:51 
Offline
Nagyúr
Avatar

Csatlakozott: 2019.08.20. 18:19
Hozzászólások: 501
Megköszönt másnak: 244 alkalommal
Megköszönték neki: 45 alkalommal
Alekvar írta:
De ez nekem nem fog müködni mert 1.9.0- forditot nem hasznalok a mod sem kompatibilis ezzel a verzióval. :(


Olyan nincs hogy nem kompaktibilis vele minden pluginod 1.9.0 fordítóval kell le fordítani.
A módot,regisztrációs rendszert is.

Annyi Hogy a Include dhudmessage ki szeded a módodból és fordul is vele.

Itt van az 1.9.0 fordító.
http://www.mediafire.com/file/6jph32rr2rjm2at/1.9.0fordito.zip/file

Ha kell segítek is feltenni a cuccokat a-(az) szerveredre.

_________________
Hamarosan új pluginok lesznek ki terjesztve! :)


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2020.05.11. 10:59 
Offline
Fanatikus

Csatlakozott: 2019.07.19. 10:58
Hozzászólások: 175
Megköszönt másnak: 37 alkalommal
8mTNNe írta:
Alekvar írta:
De ez nekem nem fog müködni mert 1.9.0- forditot nem hasznalok a mod sem kompatibilis ezzel a verzióval. :(


Olyan nincs hogy nem kompaktibilis vele minden pluginod 1.9.0 fordítóval kell le fordítani.
A módot,regisztrációs rendszert is.

Annyi Hogy a Include dhudmessage ki szeded a módodból és fordul is vele.

Itt van az 1.9.0 fordító.
http://www.mediafire.com/file/6jph32rr2rjm2at/1.9.0fordito.zip/file

Ha kell segítek is feltenni a cuccokat a-(az) szerveredre.


És ezeket, hogyan tudom orvosolni?
[AMXX] Load error 17 (invalid file format or version) (
plugin "test.amxx")
[AMXX] Load error 17 (invalid file format or version) (
plugin "reg.amxx")


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2020.05.11. 11:04 
Offline
Nagyúr
Avatar

Csatlakozott: 2019.08.20. 18:19
Hozzászólások: 501
Megköszönt másnak: 244 alkalommal
Megköszönték neki: 45 alkalommal
Régi az amxmodx rendszered a szervereden azt is frissíteni kell!

Gondolom 1.8.3 rendszered fut.

_________________
Hamarosan új pluginok lesznek ki terjesztve! :)


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2020.05.11. 11:09 
Offline
Fanatikus

Csatlakozott: 2019.07.19. 10:58
Hozzászólások: 175
Megköszönt másnak: 37 alkalommal
8mTNNe írta:
Régi az amxmodx rendszered a szervereden azt is frissíteni kell!

Gondolom 1.8.3 rendszered fut.


Tudnál csatolni olyant amivel müködik?


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2020.05.11. 11:14 
Offline
Nagyúr
Avatar

Csatlakozott: 2019.08.20. 18:19
Hozzászólások: 501
Megköszönt másnak: 244 alkalommal
Megköszönték neki: 45 alkalommal
Tessék.

Amxmodx 1.9.0 Letöltése

_________________
Hamarosan új pluginok lesznek ki terjesztve! :)


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  [ 11 hozzászólás ]  Oldal 1 2 Következő


Ki van itt

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