hlmod.hu
https://hlmod.hu/

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

Szerző:  LyleChriss [2016.09.27. 18:17 ]
Hozzászólás témája:  SQL Regisztrációs Rendszer

Sziasztok! :hi:

Akit érdekel a dolog, itt egy SQL regisztrációs rendszer. Ahogy átfutottam nem hiányzik belőle semmi. Teszt nem volt, fordítónak semmi baja vele.
Hogy mivel tud többet, mint bármelyik másik? Semmivel!
Te adsz meg felhasználónevet és jelszót. Amíg be nem jelentkezel, sötét a képernyő, stb.
Ami esetleg új lehet benne, azok a csudálatos HUD üzenetek, amelyek tájékoztatnak, mit rontottunk el, stb.

Azt hiszem, mindent elmondtam, szóval itt a forráskód:
► Spoiler mutatása


Megjegyzem tudom, hogy 1-2 funkciót összeboronálhatnék, akkor rövidebb lenne, stb., de nem igazán érdekel, milyen hosszú a kód. :D
Amint valaki mond egy jó okot, miért tegyem meg, megteszem.
Ha valami hibás szóljatok, és javítom. :)

Szerző:  GudDevil [2016.09.27. 18:26 ]
Hozzászólás témája:  Re: SQL Regisztrációs Rendszer

Egész jo :) és ha én azt szeretném hogy pl fel megyek GudDevil néven és akor felhasználo névnél legyen a cs nevem? :)

Szerző:  mforce [2016.09.27. 18:39 ]
Hozzászólás témája:  Re: SQL Regisztrációs Rendszer

Találtam egy ilyet, amit nem néztem át huszonéve, de menni megy ez is. :D

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


Kód:
[hu]
HELP = A %L, írd be:
FOR_REGISTER = regisztrációhoz
FOR_LOGIN = bejelentkezéshez
LOGIN = Bejelentkezés
REGISTER = Regisztráció
LOGOFF = Kijelentkezés
LOGGED_IN = Bejelentkezve
NOTREGGED = Nem regisztrált
REGISTERED = Regisztrált
REG_MENU_TITLE = \wRegisztrációs Rendszer^nby \y%s^n\d[\rStátusz\d] \y%s
USERNAME = \rFelhasználónév: \d%s
PASSWORD = \rJelszó: \d%s^n
CHGPASS = Jelszó csere
SUCCESS_LOGIN = Sikeresen bejelentkeztél! Kijelentkezés és jelszó csere:
WRONG_PASS = Hibás jelszó, próbáld újra!
SUCCESS_LOGOFF = Sikeresen kijelentkeztél! A belépéshez:
SUCCESS_REGISTER = Sikeresen regisztráltál, jelentkezz be! :)
PASS_CHANGE1 = A jelszavadnak legalább 6 karakternek kell lennie!
PASS_CHANGE2 = Sikeresen jelszót változtattál.
NAMECHANGE_BLOCK = A névváltoztatás tiltva.
EXIT = Kilépés

[en]
HELP = For %L, type:
FOR_REGISTER = register
FOR_LOGIN = log in
LOGIN = Log in
REGISTER = Register
LOGOFF = Log off
LOGGED_IN = Logged in
NOTREGGED = Not registered
REGISTERED = Registered
REG_MENU_TITLE = \wRegistration System^nby \y%s^n\d[\rStatus\d] \y%s
USERNAME = \rUsername: \d%s
PASSWORD = \rPassword: \d%s^n
CHGPASS = Change password
SUCCESS_LOGIN = Successfully log in! Log off or change password:
WRONG_PASS = Wrong password, try it again!
SUCCESS_LOGOFF = Successfully log off! For log in, type:
SUCCESS_REGISTER = Successfully registered, please log in! :)
PASS_CHANGE1 = Your password must contain a minimum of 6 characters!
PASS_CHANGE2 = Your password changed.
NAMECHANGE_BLOCK = The name change blocked.
EXIT = Exit

[ru]
HELP = Для %L, пишите
FOR_REGISTER = регистрации уч. записи
FOR_LOGIN = входа в уч. запись
LOGIN = вход
REGISTER = регистрация
LOGOFF = выкорчевывать
LOGGED_IN = Вы вошли под своей уч. записью
NOTREGGED = Не зарегистрирован
REGISTERED = Вы зарегистрированы
REG_MENU_TITLE = \wСистема регистрации^nот \y%s^n\d[\rВаш статус\d] \y%s
USERNAME = \rНикнейм: \d%s
PASSWORD = \rПароль: \d%s^n
CHGPASS = Изменить пароль
SUCCESS_LOGIN = Вы вошли под своей уч. записью! Для выхода или смены пароля пишите
WRONG_PASS = Неверный пароль!
SUCCESS_LOGOFF = Вы вышли из уч. записи! Для входа пишите
SUCCESS_REGISTER = Вы успешно зарегистрированы. Теперь вы можете войти под своей уч. записью
PASS_CHANGE1 = Пароль должен состоять минимум из шести символов
PASS_CHANGE2 = Пароль изменен
NAMECHANGE_BLOCK = Изменение названия заблокирован.
EXIT = Выход

Szerző:  GudDevil [2016.09.28. 15:11 ]
Hozzászólás témája:  Re: SQL Regisztrációs Rendszer

Hiba :/ :/ magátol crealja a tablat? vagy kell hozza tabla is? :D
igy nez ki a mod
VAC secure mode is activated.
L 09/28/2016 - 15:08:15: [AMXX] Plugin ("unison.amxx") is setting itself as failed.
L 09/28/2016 - 15:08:15: [AMXX] Plugin says: Nem tudtam csatlakozni az adatbazishoz.
L 09/28/2016 - 15:08:15: [AMXX] Run time error 1 (plugin "unison.amxx") - forced exit
Menu item 17 added to Menus Front-End: "Plugin Cvars" from plugin "pluginmenu.amxx"
Menu item 18 added to Menus Front-End: "Plugin Commands" from plugin "pluginmenu.amxx"


  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <colorchat>
  4. #include <cstrike>
  5. #include <engine>
  6. #include <fun>
  7. #include <fakemeta>
  8. #include <hamsandwich>
  9. #include <fakemeta_util>
  10. #include <csx>
  11. #include <sqlx>
  12.  
  13. #pragma tabsize 0
  14.  
  15. new const PLUGIN[] = "Global Unison"
  16. new const VERSION[] = "2.0"
  17. new const AUTHOR[] = "GudDevil"
  18.  
  19. new const PREFIX[] = "[Global Unison]"
  20.  
  21. new const SQL_INFO[][] = {
  22.     "",    // HOST
  23.     "",     // USERNAME
  24.     "",     // PASSWORD
  25.     ""      // DATABASE
  26. };
  27.  
  28. new Handle:g_SqlTuple;
  29.  
  30. new loggedin[33]; // 0-Regisztrál; 1-Bejelentkezik; 2-Bejelentkezett;
  31. new username[33][64], password[33][32], password2[33][32];
  32. new info_hud_message[33][64], HudObj, info_hud_color[3]; // 0-Piros; 1-Zöld; 2-Kék;
  33. new const Fegyverek[12][] =
  34. {
  35. {"Terepmintás M4A1 \w| \r+5A +5I +5E"},
  36. {"Sivatagi M4A1 \w| \r+10A +10I +10E"},
  37. {"Tűz M4A1 \w| \r+15A +15I +15E"},
  38. {"Modern M4A1 \w| \r+30A +30I +30E"},
  39. {"Nuclear M4A1 \w| \r+45A +45I +25E"},
  40. {"Howl M4A1 \w| \r+20A +12I +35E"},
  41. {"Asiimov M4A1 \w| \r+35A +5I +55E"},
  42. {"DragonKing M4A1 \w| \r+20A +20I +40E"},
  43. {"TöltényZápor M4A1 \w| \r+20A +12I +35E"},
  44. {"Magma M4A1 \w| \r+5A +5I +50E"},
  45. {"Sugárveszély M4A1 \w| \r+45A +5I +45E"},
  46. {"Terepmintás AK47 \w| \r+5A +5I +5E"}
  47. }
  48.  
  49. //Skinek
  50. new OsszesSkin[12][33], m4skin[33], akskin[33];
  51.  
  52. public plugin_init()
  53. {
  54. register_plugin(PLUGIN,VERSION,AUTHOR);
  55.  
  56.     register_impulse(201, "Main_Menu");
  57.     register_clcmd("say /menu", "Main_Menu");
  58.  
  59.     register_clcmd("Felhasznalonev", "cmd_Username");
  60.     register_clcmd("Jelszo", "cmd_Password");
  61.     register_clcmd("Jelszo_ujra", "cmd_Password2");
  62.  
  63.     HudObj = CreateHudSyncObj();
  64.     set_task(1.0, "InfoHUD", _, _, _, "b");
  65.  
  66. register_clcmd("say /add", "Addolas");
  67.  
  68. register_event("CurWeapon", "FegyverCsere", "be", "1=1");
  69. }
  70.  
  71. public Addolas(id)
  72. {
  73.     for(new i;i < 12; i++)
  74.         OsszesSkin[i][id]++;
  75. }
  76.  
  77.  
  78. new const M4A1_Modelek[][] =
  79. {
  80. "models/globalunisonmode/terepm4.mdl",
  81. "models/globalunisonmode/sivatagim4.mdl",
  82. "models/globalunisonmode/tuzm4.mdl",
  83. "models/globalunisonmode/modernm4.mdl",
  84. "models/globalunisonmode/nucim4.mdl",
  85. "models/globalunisonmode/howlm4.mdl",
  86. "models/globalunisonmode/asiim4.mdl",
  87. "models/globalunisonmode/dragonkingm4.mdl",
  88. "models/globalunisonmode/toltenyzm4.mdl",
  89. "models/globalunisonmode/magmam4.mdl",
  90. "models/globalunisonmode/sugarm4.mdl"
  91. }
  92.  
  93.  
  94. new const AK47_Modelek[][] =
  95. {
  96. "models/globalunisonmode/terepak.mdl"
  97. }
  98.  
  99. public plugin_precache()
  100. {
  101.     for(new i;i < sizeof(M4A1_Modelek); i++)
  102.     {
  103.         precache_model(M4A1_Modelek[i]);
  104.         }
  105.  
  106.     for(new i;i < sizeof(AK47_Modelek); i++)
  107.     {
  108.         precache_model(AK47_Modelek[i]);
  109.         }
  110. }
  111.  
  112. public FegyverCsere(id)
  113. {
  114.  
  115.     new fegyo = get_user_weapon(id);
  116.    
  117.     if(fegyo == CSW_M4A1)
  118.     {
  119.         for(new i;i < sizeof(M4A1_Modelek); i++)
  120.             if(m4skin[id] == i)
  121.                 set_pev(id, pev_viewmodel2, M4A1_Modelek[i]);
  122.     }
  123.     if(fegyo == CSW_AK47)
  124.     {
  125.         for(new i;i < sizeof(AK47_Modelek); i++)
  126.             if(akskin[id] == i)
  127.                 set_pev(id, pev_viewmodel2, AK47_Modelek[i]);
  128.     }
  129. }
  130.  
  131. public Fomenu(id)
  132. {
  133. new String[121]
  134. formatex(String, charsmax(String), "[K.m.G] \rGlobal Unison Mode  - \yFőmenü")
  135. new menu = menu_create(String, "Fomenu_h")
  136.  
  137. menu_additem(menu, "\wRaktár", "1", 0)
  138.  
  139. menu_display(id, menu, 0)
  140. return PLUGIN_HANDLED
  141. }
  142. public Fomenu_h(id, menu, item)
  143. {
  144. if(item == MENU_EXIT)
  145. {
  146. menu_destroy(menu);
  147. return;
  148. }
  149.  
  150. new data[9], szName[64];
  151. new access, callback;
  152. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  153. new key = str_to_num(data);
  154.  
  155. switch(key)
  156.     {
  157.         case 1: Raktar(id);
  158.     }
  159. }
  160.  
  161. public Raktar(id)
  162. {
  163. new String[121];
  164. formatex(String, charsmax(String), "%s \r- \dRaktár",PREFIX);
  165. new menu = menu_create(String, "Raktar_h");
  166.  
  167. for(new i;i < sizeof(Fegyverek); i++)
  168. {
  169.     if(OsszesSkin[i][id] > 0)
  170.     {
  171.         new Sor[6]; num_to_str(i, Sor, 5);
  172.         formatex(String, charsmax(String), "\w%s \w[\y%d \rDB\w]", Fegyverek[i][0], OsszesSkin[i][id]);
  173.         menu_additem(menu, String, Sor);
  174.     }
  175. }
  176. menu_display(id, menu, 0);
  177. }
  178.  
  179. public Raktar_h(id, menu, item)
  180. {
  181. if(item == MENU_EXIT)
  182. {
  183. menu_destroy(menu);
  184. return;
  185. }
  186.  
  187. new data[9], szName[64];
  188. new access, callback;
  189. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  190. new key = str_to_num(data);
  191.  
  192. switch(key)
  193.     {
  194.         case 0: m4skin[id] = 0
  195.         case 1: m4skin[id] = 1
  196.         case 2: m4skin[id] = 2
  197.         case 3: m4skin[id] = 3
  198.         case 4: m4skin[id] = 4
  199.         case 5: m4skin[id] = 5
  200.         case 6: m4skin[id] = 6
  201.         case 7: m4skin[id] = 7
  202.         case 8: m4skin[id] = 8
  203.         case 9: m4skin[id] = 9
  204.         case 10: m4skin[id] = 10
  205.         case 11: m4skin[id] = 11
  206.  
  207.         case 12: akskin[id] = 0
  208.     }
  209. }
  210.  
  211.  
  212. public client_putinserver(id)
  213. {  
  214. m4skin[id] = -1  
  215. akskin[id] = -1
  216.     if(!is_user_bot(id))
  217.         set_task(0.1, "Set_BlackScreen", id);
  218. }
  219.  
  220. public client_disconnect(id)
  221. {
  222.     if(loggedin[id] == 2)
  223.         Sql_Save_Name(id);
  224.  
  225.     username[id][0] = EOS;
  226.     password[id][0] = EOS;
  227.     password2[id][0] = EOS;
  228. }
  229.  
  230. public InfoHUD()
  231. {
  232.     new players[32], pnum, id;
  233.     get_players(players, pnum, "chi");
  234.    
  235.     for(new i; i<pnum; i++)
  236.     {
  237.         id=players[i];
  238.         set_hudmessage(info_hud_color[0], info_hud_color[1], info_hud_color[2], -1.0, -1.0, 0, 6.0, 12.0, 0.8, 0.8, -1);
  239.         ShowSyncHudMsg(id, HudObj, "%s", info_hud_message[id]);
  240.     }
  241. }
  242.  
  243. public HUD_EndOfString(taskid)  info_hud_message[taskid-1000][0] = EOS;
  244.  
  245. public Main_Menu(id)
  246. {
  247.     if(loggedin[id] == 2)
  248.         Main_Menu_Logged(id);
  249.     else
  250.     {
  251.         new menu = menu_create("\wK.m.G Global Unison |Regisztrácio Főmenü", "Main_Menu_Handler");
  252.        
  253.         menu_additem(menu, "Jelentkezz be!", "", 0);
  254.         menu_additem(menu, "Még nincs felhasználód? Regisztrálj!", "", 0);
  255.        
  256.         menu_display(id, menu);
  257.     }
  258. }
  259.  
  260. public Main_Menu_Handler(id, menu, item)
  261. {
  262.     switch(item)
  263.     {
  264.         case MENU_EXIT:{
  265.             menu_destroy(menu);
  266.             return;
  267.         }
  268.         case 0:{
  269.             Main_Menu_Login(id);
  270.             loggedin[id] = 1;
  271.         }
  272.         case 1:{
  273.             Main_Menu_Register(id);
  274.             loggedin[id] = 0;
  275.         }
  276.     }
  277.     menu_destroy(menu);
  278. }
  279.  
  280. public Main_Menu_Logged(id)
  281. {
  282.     if(loggedin[id] != 2)
  283.         Main_Menu(id);
  284.     else
  285.     {
  286.      Fomenu(id)   //Főmenü tartalma
  287.     }
  288. }
  289.  
  290. public Main_Menu_Register(id)
  291. {
  292.     new menu = menu_create("\wK.m.G Global Unison | Regisztráció", "Main_Menu_Register_Handler");
  293.  
  294.     new text[128];
  295.     formatex(text, charsmax(text), "Felhasználónév: %s", username[id]);
  296.     menu_additem(menu, text, "", 0);
  297.    
  298.     formatex(text, charsmax(text), "Jelszó: %s", show_stars(strlen(password[id])));
  299.     menu_additem(menu, text, "", 0);
  300.  
  301.     formatex(text, charsmax(text), "Jelszó újra: %s", show_stars(strlen(password2[id])));
  302.     menu_additem(menu, text, "", 0);
  303.  
  304.     menu_additem(menu, "Regisztráció", "", 0);
  305.  
  306.     menu_display(id, menu);
  307. }
  308.  
  309. public Main_Menu_Register_Handler(id, menu, item)
  310. {
  311.     switch(item)
  312.     {
  313.         case MENU_EXIT:{
  314.             menu_destroy(menu);
  315.             return;
  316.         }
  317.         case 0:{
  318.             client_cmd(id, "messagemode Felhasznalonev");
  319.             Main_Menu_Register(id);
  320.         }
  321.         case 1:{
  322.             client_cmd(id, "messagemode Jelszo");
  323.             Main_Menu_Register(id);
  324.         }
  325.         case 2:{
  326.             client_cmd(id, "messagemode Jelszo_ujra");
  327.             Main_Menu_Register(id);
  328.         }
  329.         case 3: Register_Check(id);
  330.     }
  331.     menu_destroy(menu);
  332. }
  333.  
  334. public Main_Menu_Login(id)
  335. {
  336.     new menu = menu_create("\wK.m.G Global Unison | Bejelentkezés", "Main_Menu_Login_Handler");
  337.  
  338.     new text[128];
  339.     formatex(text, charsmax(text), "Felhasználónév: %s", username[id]);
  340.     menu_additem(menu, text, "", 0);
  341.    
  342.     formatex(text, charsmax(text), "Jelszó: %s", show_stars(strlen(password[id])));
  343.     menu_additem(menu, text, "", 0);
  344.  
  345.     menu_additem(menu, "Bejelentkezés", "", 0);
  346.  
  347.     menu_display(id, menu);
  348. }
  349.  
  350. public Main_Menu_Login_Handler(id, menu, item)
  351. {
  352.     switch(item)
  353.     {
  354.         case MENU_EXIT:{
  355.             menu_destroy(menu);
  356.             return;
  357.         }
  358.         case 0:{
  359.             client_cmd(id, "messagemode Felhasznalonev");
  360.             Main_Menu_Login(id);
  361.         }
  362.         case 1:{
  363.             client_cmd(id, "messagemode Jelszo");
  364.             Main_Menu_Login(id);
  365.         }
  366.         case 2: Login_Check(id);
  367.     }
  368.     menu_destroy(menu);
  369. }
  370.  
  371. public Register_Check(id)
  372. {
  373.     if(loggedin[id])
  374.         return;
  375.  
  376.     if(!equal(password[id], password2[id]))
  377.     {
  378.         formatex(info_hud_message[id], charsmax(info_hud_message[]), "A két jelszó nem egyezik!");
  379.         info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
  380.         Main_Menu_Register(id);
  381.         return;
  382.     }
  383.    
  384.     else if((strlen(password[id])) > 16 || (strlen(password2[id])) > 16)
  385.     {
  386.         formatex(info_hud_message[id], charsmax(info_hud_message[]), "A jelszó nem lehet hosszabb 16 karakternél!");
  387.         info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
  388.         Main_Menu_Register(id);
  389.         return;
  390.     }
  391.    
  392.     else if((strlen(password[id])) < 6 || (strlen(password2[id])) < 6)
  393.     {
  394.         formatex(info_hud_message[id], charsmax(info_hud_message[]), "A jelszó nem lehet rövidebb 6 karakternél!");
  395.         info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
  396.         Main_Menu_Register(id);
  397.         return;
  398.     }
  399.    
  400.     else
  401.     {
  402.         formatex(info_hud_message[id], charsmax(info_hud_message[]), "Regisztráció folyamatban... Kérlek várj!");
  403.         info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
  404.         Sql_Register_Check(id);
  405.         Main_Menu_Register(id);
  406.     }
  407. }
  408.  
  409. public Login_Check(id)
  410. {
  411.     if(loggedin[id] == 2)
  412.         return;
  413.     formatex(info_hud_message[id], charsmax(info_hud_message[]), "Bejelentkezés folyamatban... Kérlek várj!");
  414.     info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
  415.     Sql_Login_Check(id);
  416.     Main_Menu_Login(id);
  417. }
  418.  
  419. public cmd_Username(id)
  420. {
  421.     if(loggedin[id] == 2)
  422.         return;
  423.    
  424.     username[id][0] = EOS;
  425.     set_task(0.1, "HUD_EndOfString", 1000+id);
  426.     read_args(username[id], charsmax(username []));
  427.     remove_quotes(username[id]);
  428.     switch(loggedin[id])
  429.     {
  430.         case 0: Main_Menu_Register(id);
  431.         case 1: Main_Menu_Login(id);
  432.     }
  433. }
  434.  
  435. public cmd_Password(id)
  436. {
  437.     if(loggedin[id] == 2)
  438.         return;
  439.    
  440.     password[id][0] = EOS;
  441.     set_task(0.1, "HUD_EndOfString", 1000+id);
  442.     read_args(password[id], charsmax(password []));
  443.     remove_quotes(password[id]);
  444.     switch(loggedin[id])
  445.     {
  446.         case 0: Main_Menu_Register(id);
  447.         case 1: Main_Menu_Login(id);
  448.     }
  449. }
  450.  
  451. public cmd_Password2(id)
  452. {
  453.     if(loggedin[id])
  454.         return;
  455.    
  456.     password2[id][0] = EOS;
  457.     set_task(0.1, "HUD_EndOfString", 1000+id);
  458.     read_args(password2[id], charsmax(password2[]));
  459.     remove_quotes(password2[id]);
  460.     Main_Menu_Register(id);
  461. }
  462.  
  463. public Sql_Register_Check(id)
  464. {
  465.     static Query[512], temp_username[64];
  466.     copy(temp_username, charsmax(temp_username), username[id]);
  467.    
  468.     replace_all(temp_username, charsmax(temp_username), "\", "\\");
  469.    replace_all(temp_username, charsmax(temp_username), "'", "\'");
  470.  
  471.    new Data[2];
  472.    Data[0] = id;
  473.    Data[1] = get_user_userid(id);
  474.  
  475.    formatex(Query, charsmax(Query), "SELECT * FROM `mod_register` WHERE username = '%s'", temp_username);
  476.  
  477.    SQL_ThreadQuery(g_SqlTuple, "Sql_Register_Thread", Query, Data, 2);
  478. }
  479.  
  480. public Sql_Register_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  481. {
  482.    if(FailState == TQUERY_CONNECT_FAILED)
  483.        set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  484.    else if(FailState == TQUERY_QUERY_FAILED)
  485.        set_fail_state("Query Error");
  486.    if(Errcode)
  487.        log_amx("Hibat dobtam: %s",Error);
  488.  
  489.    new id = Data[0];
  490.  
  491.    if(Data[1] != get_user_userid(id))
  492.        return;
  493.  
  494.    new RowsFound = SQL_NumRows(Query);
  495.  
  496.    if(RowsFound)
  497.    {
  498.        formatex(info_hud_message[id], charsmax(info_hud_message[]), "Ez a felhasználónév már foglalt!");
  499.        info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
  500.        Main_Menu_Register(id);
  501.    }
  502.    else Sql_Account_Create(id);
  503. }
  504.  
  505. public Sql_Account_Create(id)
  506. {
  507.    static Query[512], temp_username[64], temp_password[32], temp_name[64];
  508.  
  509.    get_user_name(id, temp_name, charsmax(temp_name));
  510.    copy(temp_username, charsmax(temp_username), username[id]);
  511.    copy(temp_password, charsmax(temp_password), password[id]);
  512.  
  513.    replace_all(temp_name, charsmax(temp_name), "\", "\\");
  514.    replace_all(temp_name, charsmax(temp_name), "'", "\'");
  515.  
  516.    replace_all(temp_password, charsmax(temp_password), "\", "\\");
  517.    replace_all(temp_password, charsmax(temp_password), "'", "\'");
  518.  
  519.    replace_all(temp_username, charsmax(temp_username), "\", "\\");
  520.    replace_all(temp_username, charsmax(temp_username), "'", "\'");
  521.  
  522.    formatex(Query, charsmax(Query), "INSERT INTO `mod_register` (playername, username, password) VALUES('%s', '%s', '%s')", temp_name, temp_username, temp_password);
  523.  
  524.    new Data[2];
  525.    Data[0] = id;
  526.    Data[1] = get_user_userid(id);
  527.  
  528.    SQL_ThreadQuery(g_SqlTuple, "Sql_Account_Create_Thread", Query, Data, 2);
  529. }
  530.  
  531. public Sql_Account_Create_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  532. {
  533.    if(FailState == TQUERY_CONNECT_FAILED)
  534.        set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  535.    else if(FailState == TQUERY_QUERY_FAILED)
  536.        set_fail_state("Query Error");
  537.    if(Errcode)
  538.        log_amx("Hibat dobtam: %s",Error);
  539.  
  540.    new id = Data[0];
  541.  
  542.    if(Data[1] != get_user_userid(id))
  543.        return;
  544.      
  545.    formatex(info_hud_message[id], charsmax(info_hud_message[]), "Sikeres Regisztráció! Jelentkezz be!");
  546.    info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
  547.    set_task(5.0, "HUD_EndOfString", 1000+id);
  548.    loggedin[id] = 1;
  549.    Main_Menu_Login(id);
  550. }
  551.  
  552. public Sql_Login_Check(id)
  553. {
  554.    static Query[512], temp_username[64];
  555.    copy(temp_username, charsmax(temp_username), username[id]);
  556.  
  557.    replace_all(temp_username, charsmax(temp_username), "\", "\\");
  558.    replace_all(temp_username, charsmax(temp_username), "'", "\'");
  559.  
  560.    new Data[2];
  561.    Data[0] = id;
  562.    Data[1] = get_user_userid(id);
  563.  
  564.    formatex(Query, charsmax(Query), "SELECT * FROM `mod_register` WHERE username = '%s'", temp_username);
  565.  
  566.    SQL_ThreadQuery(g_SqlTuple, "Sql_Login_Thread", Query, Data, 2);
  567. }
  568.  
  569. public Sql_Login_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  570. {
  571.    if(FailState == TQUERY_CONNECT_FAILED)
  572.        set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  573.    else if(FailState == TQUERY_QUERY_FAILED)
  574.        set_fail_state("Query Error");
  575.    if(Errcode)
  576.        log_amx("Hibat dobtam: %s",Error);
  577.  
  578.    new id = Data[0];
  579.  
  580.    if(Data[1] != get_user_userid(id))
  581.        return;
  582.  
  583.    new RowsFound = SQL_NumRows(Query);
  584.  
  585.    if(RowsFound)
  586.    {
  587.        static temp_password[32]; new tmp_pass[32];
  588.      
  589.        copy(temp_password, charsmax(temp_password), password[id]);
  590.  
  591.        replace_all(temp_password, charsmax(temp_password), "\", "\\");
  592.        replace_all(temp_password, charsmax(temp_password), "'", "\'");
  593.      
  594.        SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "password"), tmp_pass, charsmax(tmp_pass));
  595.  
  596.        if(equal(temp_password, tmp_pass))
  597.        {
  598.            loggedin[id] = 2;
  599.            formatex(info_hud_message[id], charsmax(info_hud_message[]), "Sikeres bejelentkezés!");
  600.            info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0;
  601.            set_task(5.0, "HUD_EndOfString", 1000+id);
  602.            Main_Menu_Logged(id);
  603.            End_BlackScreen(id);
  604.        }
  605.        else
  606.        {
  607.            formatex(info_hud_message[id], charsmax(info_hud_message[]), "Érvénytelen jelszó!");
  608.            info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0;
  609.            Main_Menu_Login(id);
  610.        }
  611.    }
  612.    else Sql_Account_Create(id);
  613. }
  614.  
  615. public Sql_Save_Name(id)
  616. {
  617.    static Query[512], temp_name[64], temp_username[32];
  618.  
  619.    get_user_name(id, temp_name, charsmax(temp_name));
  620.    copy(temp_username, charsmax(temp_username), username[id]);
  621.  
  622.    replace_all(temp_name, charsmax(temp_name), "\", "\\");
  623.    replace_all(temp_name, charsmax(temp_name), "'", "\'");
  624.  
  625.    replace_all(temp_username, charsmax(temp_username), "\", "\\");
  626.    replace_all(temp_username, charsmax(temp_username), "'", "\'");
  627.  
  628.    formatex(Query, charsmax(Query), "UPDATE `mod_register` SET `playername` = '%s' WHERE `username` = '%s';", temp_name, temp_username);
  629.    SQL_ThreadQuery(g_SqlTuple, "Sql_Save_Name_Thread", Query);
  630. }
  631.  
  632. public Sql_Save_Name_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  633. {
  634.    if(FailState == TQUERY_CONNECT_FAILED)
  635.        set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  636.    else if(FailState == TQUERY_QUERY_FAILED)
  637.        set_fail_state("Query Error");
  638.    if(Errcode)
  639.        log_amx("Hibat dobtam: %s",Error);
  640. }
  641.  
  642. public plugin_cfg()
  643. {
  644.    static Query[512];
  645.    g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0], SQL_INFO[1], SQL_INFO[2], SQL_INFO[3]);
  646.  
  647.    formatex(Query, charsmax(Query), "CREATE TABLE IF NOT EXISTS `mod_register` (`playername` varchar(64) NOT_NULL, `username` varchar(64) NOT NULL, `password` varchar(32) NOT NULL, `id` int(11) NOT NULL AUTO_INCREMENT PRIMRAY KEY)");
  648.    SQL_ThreadQuery(g_SqlTuple, "createTableThread", Query);
  649. }
  650.  
  651. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  652. {
  653.    if(FailState == TQUERY_CONNECT_FAILED)
  654.        set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  655.    else if(FailState == TQUERY_QUERY_FAILED)
  656.        set_fail_state("Query Error");
  657.    if(Errcode)
  658.        log_amx("Hibat dobtam: %s",Error);
  659. }
  660.  
  661. public Set_BlackScreen(id)
  662. {
  663.    message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0, 0, 0}, id);
  664.    write_short(100000);
  665.    write_short(100000);
  666.    write_short(1<<2);
  667.    write_byte(0);
  668.    write_byte(0);
  669.    write_byte(0);
  670.    write_byte(255);
  671.    message_end();
  672. }
  673.  
  674. public End_BlackScreen(id)
  675. {
  676.    message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0, 0, 0}, id);
  677.    write_short(0);
  678.    write_short(0);
  679.    write_short(1<<2);
  680.    write_byte(0);
  681.    write_byte(0);
  682.    write_byte(0);
  683.    write_byte(0);
  684.    message_end();
  685. }
  686.  
  687. stock show_stars(i_Lenght)
  688. {
  689.    static const s_Stars[32] = "*******************************";
  690.    return s_Stars[31-i_Lenght];
  691. }
  692. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  693. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  694. */




LyleChriss írta:
Sziasztok! :hi:

Akit érdekel a dolog, itt egy SQL regisztrációs rendszer. Ahogy átfutottam nem hiányzik belőle semmi. Teszt nem volt, fordítónak semmi baja vele.
Hogy mivel tud többet, mint bármelyik másik? Semmivel!
Te adsz meg felhasználónevet és jelszót. Amíg be nem jelentkezel, sötét a képernyő, stb.
Ami esetleg új lehet benne, azok a csudálatos HUD üzenetek, amelyek tájékoztatnak, mit rontottunk el, stb.

Azt hiszem, mindent elmondtam, szóval itt a forráskód:
► Spoiler mutatása


Megjegyzem tudom, hogy 1-2 funkciót összeboronálhatnék, akkor rövidebb lenne, stb., de nem igazán érdekel, milyen hosszú a kód. :D
Amint valaki mond egy jó okot, miért tegyem meg, megteszem.
Ha valami hibás szóljatok, és javítom. :)

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