Hiba :/ :/ magátol crealja a tablat? vagy kell hozza tabla is? 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"
#include <amxmodx> #include <amxmisc> #include <colorchat> #include <cstrike> #include <engine> #include <fun> #include <fakemeta> #include <hamsandwich> #include <fakemeta_util> #include <csx> #include <sqlx> #pragma tabsize 0 new const PLUGIN[] = "Global Unison" new const VERSION[] = "2.0" new const AUTHOR[] = "GudDevil" new const PREFIX[] = "[Global Unison]" new const SQL_INFO[][] = { "", // HOST "", // USERNAME "", // PASSWORD "" // DATABASE }; new Handle:g_SqlTuple; new loggedin[33]; // 0-Regisztrál; 1-Bejelentkezik; 2-Bejelentkezett; new username[33][64], password[33][32], password2[33][32]; new info_hud_message[33][64], HudObj, info_hud_color[3]; // 0-Piros; 1-Zöld; 2-Kék; new const Fegyverek[12][] = { {"Terepmintás M4A1 \w| \r+5A +5I +5E"}, {"Sivatagi M4A1 \w| \r+10A +10I +10E"}, {"Tűz M4A1 \w| \r+15A +15I +15E"}, {"Modern M4A1 \w| \r+30A +30I +30E"}, {"Nuclear M4A1 \w| \r+45A +45I +25E"}, {"Howl M4A1 \w| \r+20A +12I +35E"}, {"Asiimov M4A1 \w| \r+35A +5I +55E"}, {"DragonKing M4A1 \w| \r+20A +20I +40E"}, {"TöltényZápor M4A1 \w| \r+20A +12I +35E"}, {"Magma M4A1 \w| \r+5A +5I +50E"}, {"Sugárveszély M4A1 \w| \r+45A +5I +45E"}, {"Terepmintás AK47 \w| \r+5A +5I +5E"} } //Skinek new OsszesSkin[12][33], m4skin[33], akskin[33]; public plugin_init() { register_plugin(PLUGIN,VERSION,AUTHOR); register_impulse(201, "Main_Menu"); register_clcmd("say /menu", "Main_Menu"); register_clcmd("Felhasznalonev", "cmd_Username"); register_clcmd("Jelszo", "cmd_Password"); register_clcmd("Jelszo_ujra", "cmd_Password2"); HudObj = CreateHudSyncObj(); set_task(1.0, "InfoHUD", _, _, _, "b"); register_clcmd("say /add", "Addolas"); register_event("CurWeapon", "FegyverCsere", "be", "1=1"); } public Addolas(id) { for(new i;i < 12; i++) OsszesSkin[i][id]++; } new const M4A1_Modelek[][] = { "models/globalunisonmode/terepm4.mdl", "models/globalunisonmode/sivatagim4.mdl", "models/globalunisonmode/tuzm4.mdl", "models/globalunisonmode/modernm4.mdl", "models/globalunisonmode/nucim4.mdl", "models/globalunisonmode/howlm4.mdl", "models/globalunisonmode/asiim4.mdl", "models/globalunisonmode/dragonkingm4.mdl", "models/globalunisonmode/toltenyzm4.mdl", "models/globalunisonmode/magmam4.mdl", "models/globalunisonmode/sugarm4.mdl" } new const AK47_Modelek[][] = { "models/globalunisonmode/terepak.mdl" } public plugin_precache() { for(new i;i < sizeof(M4A1_Modelek); i++) { precache_model(M4A1_Modelek[i]); } for(new i;i < sizeof(AK47_Modelek); i++) { precache_model(AK47_Modelek[i]); } } public FegyverCsere(id) { new fegyo = get_user_weapon(id); if(fegyo == CSW_M4A1) { for(new i;i < sizeof(M4A1_Modelek); i++) if(m4skin[id] == i) set_pev(id, pev_viewmodel2, M4A1_Modelek[i]); } if(fegyo == CSW_AK47) { for(new i;i < sizeof(AK47_Modelek); i++) if(akskin[id] == i) set_pev(id, pev_viewmodel2, AK47_Modelek[i]); } } public Fomenu(id) { new String[121] formatex(String, charsmax(String), "[K.m.G] \rGlobal Unison Mode - \yFőmenü") new menu = menu_create(String, "Fomenu_h") menu_additem(menu, "\wRaktár", "1", 0) menu_display(id, menu, 0) return PLUGIN_HANDLED } public Fomenu_h(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return; } new data[9], szName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback); new key = str_to_num(data); switch(key) { case 1: Raktar(id); } } public Raktar(id) { new String[121]; formatex(String, charsmax(String), "%s \r- \dRaktár",PREFIX); new menu = menu_create(String, "Raktar_h"); for(new i;i < sizeof(Fegyverek); i++) { if(OsszesSkin[i][id] > 0) { new Sor[6]; num_to_str(i, Sor, 5); formatex(String, charsmax(String), "\w%s \w[\y%d \rDB\w]", Fegyverek[i][0], OsszesSkin[i][id]); menu_additem(menu, String, Sor); } } menu_display(id, menu, 0); } public Raktar_h(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return; } new data[9], szName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback); new key = str_to_num(data); switch(key) { case 0: m4skin[id] = 0 case 1: m4skin[id] = 1 case 2: m4skin[id] = 2 case 3: m4skin[id] = 3 case 4: m4skin[id] = 4 case 5: m4skin[id] = 5 case 6: m4skin[id] = 6 case 7: m4skin[id] = 7 case 8: m4skin[id] = 8 case 9: m4skin[id] = 9 case 10: m4skin[id] = 10 case 11: m4skin[id] = 11 case 12: akskin[id] = 0 } } public client_putinserver(id) { m4skin[id] = -1 akskin[id] = -1 if(!is_user_bot(id)) set_task(0.1, "Set_BlackScreen", id); } public client_disconnect(id) { if(loggedin[id] == 2) Sql_Save_Name(id); username[id][0] = EOS; password[id][0] = EOS; password2[id][0] = EOS; } public InfoHUD() { new players[32], pnum, id; get_players(players, pnum, "chi"); for(new i; i<pnum; i++) { id=players[i]; 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); ShowSyncHudMsg(id, HudObj, "%s", info_hud_message[id]); } } public HUD_EndOfString(taskid) info_hud_message[taskid-1000][0] = EOS; public Main_Menu(id) { if(loggedin[id] == 2) Main_Menu_Logged(id); else { new menu = menu_create("\wK.m.G Global Unison |Regisztrácio Főmenü", "Main_Menu_Handler"); menu_additem(menu, "Jelentkezz be!", "", 0); menu_additem(menu, "Még nincs felhasználód? Regisztrálj!", "", 0); menu_display(id, menu); } } public Main_Menu_Handler(id, menu, item) { switch(item) { case MENU_EXIT:{ menu_destroy(menu); return; } case 0:{ Main_Menu_Login(id); loggedin[id] = 1; } case 1:{ Main_Menu_Register(id); loggedin[id] = 0; } } menu_destroy(menu); } public Main_Menu_Logged(id) { if(loggedin[id] != 2) Main_Menu(id); else { Fomenu(id) //Főmenü tartalma } } public Main_Menu_Register(id) { new menu = menu_create("\wK.m.G Global Unison | Regisztráció", "Main_Menu_Register_Handler"); new text[128]; formatex(text, charsmax(text), "Felhasználónév: %s", username[id]); menu_additem(menu, text, "", 0); formatex(text, charsmax(text), "Jelszó: %s", show_stars(strlen(password[id]))); menu_additem(menu, text, "", 0); formatex(text, charsmax(text), "Jelszó újra: %s", show_stars(strlen(password2[id]))); menu_additem(menu, text, "", 0); menu_additem(menu, "Regisztráció", "", 0); menu_display(id, menu); } public Main_Menu_Register_Handler(id, menu, item) { switch(item) { case MENU_EXIT:{ menu_destroy(menu); return; } case 0:{ client_cmd(id, "messagemode Felhasznalonev"); Main_Menu_Register(id); } case 1:{ client_cmd(id, "messagemode Jelszo"); Main_Menu_Register(id); } case 2:{ client_cmd(id, "messagemode Jelszo_ujra"); Main_Menu_Register(id); } case 3: Register_Check(id); } menu_destroy(menu); } public Main_Menu_Login(id) { new menu = menu_create("\wK.m.G Global Unison | Bejelentkezés", "Main_Menu_Login_Handler"); new text[128]; formatex(text, charsmax(text), "Felhasználónév: %s", username[id]); menu_additem(menu, text, "", 0); formatex(text, charsmax(text), "Jelszó: %s", show_stars(strlen(password[id]))); menu_additem(menu, text, "", 0); menu_additem(menu, "Bejelentkezés", "", 0); menu_display(id, menu); } public Main_Menu_Login_Handler(id, menu, item) { switch(item) { case MENU_EXIT:{ menu_destroy(menu); return; } case 0:{ client_cmd(id, "messagemode Felhasznalonev"); Main_Menu_Login(id); } case 1:{ client_cmd(id, "messagemode Jelszo"); Main_Menu_Login(id); } case 2: Login_Check(id); } menu_destroy(menu); } public Register_Check(id) { if(loggedin[id]) return; if(!equal(password[id], password2[id])) { formatex(info_hud_message[id], charsmax(info_hud_message[]), "A két jelszó nem egyezik!"); info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0; Main_Menu_Register(id); return; } else if((strlen(password[id])) > 16 || (strlen(password2[id])) > 16) { formatex(info_hud_message[id], charsmax(info_hud_message[]), "A jelszó nem lehet hosszabb 16 karakternél!"); info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0; Main_Menu_Register(id); return; } else if((strlen(password[id])) < 6 || (strlen(password2[id])) < 6) { formatex(info_hud_message[id], charsmax(info_hud_message[]), "A jelszó nem lehet rövidebb 6 karakternél!"); info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0; Main_Menu_Register(id); return; } else { formatex(info_hud_message[id], charsmax(info_hud_message[]), "Regisztráció folyamatban... Kérlek várj!"); info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0; Sql_Register_Check(id); Main_Menu_Register(id); } } public Login_Check(id) { if(loggedin[id] == 2) return; formatex(info_hud_message[id], charsmax(info_hud_message[]), "Bejelentkezés folyamatban... Kérlek várj!"); info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0; Sql_Login_Check(id); Main_Menu_Login(id); } public cmd_Username(id) { if(loggedin[id] == 2) return; username[id][0] = EOS; set_task(0.1, "HUD_EndOfString", 1000+id); read_args(username[id], charsmax(username [])); remove_quotes(username[id]); switch(loggedin[id]) { case 0: Main_Menu_Register(id); case 1: Main_Menu_Login(id); } } public cmd_Password(id) { if(loggedin[id] == 2) return; password[id][0] = EOS; set_task(0.1, "HUD_EndOfString", 1000+id); read_args(password[id], charsmax(password [])); remove_quotes(password[id]); switch(loggedin[id]) { case 0: Main_Menu_Register(id); case 1: Main_Menu_Login(id); } } public cmd_Password2(id) { if(loggedin[id]) return; password2[id][0] = EOS; set_task(0.1, "HUD_EndOfString", 1000+id); read_args(password2[id], charsmax(password2[])); remove_quotes(password2[id]); Main_Menu_Register(id); } public Sql_Register_Check(id) { static Query[512], temp_username[64]; copy(temp_username, charsmax(temp_username), username[id]); replace_all(temp_username, charsmax(temp_username), "\", "\\"); replace_all(temp_username, charsmax(temp_username), "'", "\'"); new Data[2]; Data[0] = id; Data[1] = get_user_userid(id); formatex(Query, charsmax(Query), "SELECT * FROM `mod_register` WHERE username = '%s'", temp_username); SQL_ThreadQuery(g_SqlTuple, "Sql_Register_Thread", Query, Data, 2); } public Sql_Register_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem tudtam csatlakozni az adatbazishoz."); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Error"); if(Errcode) log_amx("Hibat dobtam: %s",Error); new id = Data[0]; if(Data[1] != get_user_userid(id)) return; new RowsFound = SQL_NumRows(Query); if(RowsFound) { formatex(info_hud_message[id], charsmax(info_hud_message[]), "Ez a felhasználónév már foglalt!"); info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0; Main_Menu_Register(id); } else Sql_Account_Create(id); } public Sql_Account_Create(id) { static Query[512], temp_username[64], temp_password[32], temp_name[64]; get_user_name(id, temp_name, charsmax(temp_name)); copy(temp_username, charsmax(temp_username), username[id]); copy(temp_password, charsmax(temp_password), password[id]); replace_all(temp_name, charsmax(temp_name), "\", "\\"); replace_all(temp_name, charsmax(temp_name), "'", "\'"); replace_all(temp_password, charsmax(temp_password), "\", "\\"); replace_all(temp_password, charsmax(temp_password), "'", "\'"); replace_all(temp_username, charsmax(temp_username), "\", "\\"); replace_all(temp_username, charsmax(temp_username), "'", "\'"); formatex(Query, charsmax(Query), "INSERT INTO `mod_register` (playername, username, password) VALUES('%s', '%s', '%s')", temp_name, temp_username, temp_password); new Data[2]; Data[0] = id; Data[1] = get_user_userid(id); SQL_ThreadQuery(g_SqlTuple, "Sql_Account_Create_Thread", Query, Data, 2); } public Sql_Account_Create_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem tudtam csatlakozni az adatbazishoz."); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Error"); if(Errcode) log_amx("Hibat dobtam: %s",Error); new id = Data[0]; if(Data[1] != get_user_userid(id)) return; formatex(info_hud_message[id], charsmax(info_hud_message[]), "Sikeres Regisztráció! Jelentkezz be!"); info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0; set_task(5.0, "HUD_EndOfString", 1000+id); loggedin[id] = 1; Main_Menu_Login(id); } public Sql_Login_Check(id) { static Query[512], temp_username[64]; copy(temp_username, charsmax(temp_username), username[id]); replace_all(temp_username, charsmax(temp_username), "\", "\\"); replace_all(temp_username, charsmax(temp_username), "'", "\'"); new Data[2]; Data[0] = id; Data[1] = get_user_userid(id); formatex(Query, charsmax(Query), "SELECT * FROM `mod_register` WHERE username = '%s'", temp_username); SQL_ThreadQuery(g_SqlTuple, "Sql_Login_Thread", Query, Data, 2); } public Sql_Login_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem tudtam csatlakozni az adatbazishoz."); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Error"); if(Errcode) log_amx("Hibat dobtam: %s",Error); new id = Data[0]; if(Data[1] != get_user_userid(id)) return; new RowsFound = SQL_NumRows(Query); if(RowsFound) { static temp_password[32]; new tmp_pass[32]; copy(temp_password, charsmax(temp_password), password[id]); replace_all(temp_password, charsmax(temp_password), "\", "\\"); replace_all(temp_password, charsmax(temp_password), "'", "\'"); SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "password"), tmp_pass, charsmax(tmp_pass)); if(equal(temp_password, tmp_pass)) { loggedin[id] = 2; formatex(info_hud_message[id], charsmax(info_hud_message[]), "Sikeres bejelentkezés!"); info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0; set_task(5.0, "HUD_EndOfString", 1000+id); Main_Menu_Logged(id); End_BlackScreen(id); } else { formatex(info_hud_message[id], charsmax(info_hud_message[]), "Érvénytelen jelszó!"); info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0; Main_Menu_Login(id); } } else Sql_Account_Create(id); } public Sql_Save_Name(id) { static Query[512], temp_name[64], temp_username[32]; get_user_name(id, temp_name, charsmax(temp_name)); copy(temp_username, charsmax(temp_username), username[id]); replace_all(temp_name, charsmax(temp_name), "\", "\\"); replace_all(temp_name, charsmax(temp_name), "'", "\'"); replace_all(temp_username, charsmax(temp_username), "\", "\\"); replace_all(temp_username, charsmax(temp_username), "'", "\'"); formatex(Query, charsmax(Query), "UPDATE `mod_register` SET `playername` = '%s' WHERE `username` = '%s';", temp_name, temp_username); SQL_ThreadQuery(g_SqlTuple, "Sql_Save_Name_Thread", Query); } public Sql_Save_Name_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem tudtam csatlakozni az adatbazishoz."); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Error"); if(Errcode) log_amx("Hibat dobtam: %s",Error); } public plugin_cfg() { static Query[512]; g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0], SQL_INFO[1], SQL_INFO[2], SQL_INFO[3]); 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)"); SQL_ThreadQuery(g_SqlTuple, "createTableThread", Query); } public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem tudtam csatlakozni az adatbazishoz."); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Error"); if(Errcode) log_amx("Hibat dobtam: %s",Error); } public Set_BlackScreen(id) { message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0, 0, 0}, id); write_short(100000); write_short(100000); write_short(1<<2); write_byte(0); write_byte(0); write_byte(0); write_byte(255); message_end(); } public End_BlackScreen(id) { message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0, 0, 0}, id); write_short(0); write_short(0); write_short(1<<2); write_byte(0); write_byte(0); write_byte(0); write_byte(0); message_end(); } stock show_stars(i_Lenght) { static const s_Stars[32] = "*******************************"; return s_Stars[31-i_Lenght]; } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par } */
LyleChriss írta: Sziasztok!  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 #include <amxmodx> #include <amxmisc> #include <engine> #include <sqlx> #pragma semicolon 1; new loggedin[33]; // 0-Regisztrál; 1-Bejelentkezik; 2-Bejelentkezett; new username[33][64], password[33][32], password2[33][32]; new info_hud_message[33][64], HudObj, info_hud_color[3]; // 0-Piros; 1-Zöld; 2-Kék; new const SQL_INFO[][] = { "127.0.0.1", // HOST "username", // USERNAME "password", // PASSWORD "database" // DATABASE }; new Handle:g_SqlTuple; public plugin_init() { register_plugin("Mod", "1.0", "LyleChriss"); register_impulse(201, "Main_Menu"); register_clcmd("say /menu", "Main_Menu"); register_clcmd("Felhasznalonev", "cmd_Username"); register_clcmd("Jelszo", "cmd_Password"); register_clcmd("Jelszo_ujra", "cmd_Password2"); HudObj = CreateHudSyncObj(); set_task(1.0, "InfoHUD", _, _, _, "b"); } public client_putinserver(id) { if(!is_user_bot(id)) set_task(0.1, "Set_BlackScreen", id); } public client_disconnect(id) { if(loggedin[id] == 2) Sql_Save_Name(id); username[id][0] = EOS; password[id][0] = EOS; password2[id][0] = EOS; } public InfoHUD() { new players[32], pnum, id; get_players(players, pnum, "chi"); for(new i; i<pnum; i++) { id=players[i]; 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); ShowSyncHudMsg(id, HudObj, "%s", info_hud_message[id]); } } public HUD_EndOfString(taskid) info_hud_message[taskid-1000][0] = EOS; public Main_Menu(id) { if(loggedin[id] == 2) Main_Menu_Logged(id); else { new menu = menu_create("Valami Mod | Főmenü", "Main_Menu_Handler"); menu_additem(menu, "Jelentkezz be!", "", 0); menu_additem(menu, "Még nincs felhasználód? Regisztrálj!", "", 0); menu_display(id, menu); } } public Main_Menu_Handler(id, menu, item) { switch(item) { case MENU_EXIT:{ menu_destroy(menu); return; } case 0:{ Main_Menu_Login(id); loggedin[id] = 1; } case 1:{ Main_Menu_Register(id); loggedin[id] = 0; } } menu_destroy(menu); } public Main_Menu_Logged(id) { if(loggedin[id] != 2) Main_Menu(id); else { //Főmenü tartalma } } public Main_Menu_Register(id) { new menu = menu_create("Valami Mod | Regisztráció", "Main_Menu_Register_Handler"); new text[128]; formatex(text, charsmax(text), "Felhasználónév: %s", username[id]); menu_additem(menu, text, "", 0); formatex(text, charsmax(text), "Jelszó: %s", show_stars(strlen(password[id]))); menu_additem(menu, text, "", 0); formatex(text, charsmax(text), "Jelszó újra: %s", show_stars(strlen(password2[id]))); menu_additem(menu, text, "", 0); menu_additem(menu, "Regisztráció", "", 0); menu_display(id, menu); } public Main_Menu_Register_Handler(id, menu, item) { switch(item) { case MENU_EXIT:{ menu_destroy(menu); return; } case 0:{ client_cmd(id, "messagemode Felhasznalonev"); Main_Menu_Register(id); } case 1:{ client_cmd(id, "messagemode Jelszo"); Main_Menu_Register(id); } case 2:{ client_cmd(id, "messagemode Jelszo_ujra"); Main_Menu_Register(id); } case 3: Register_Check(id); } menu_destroy(menu); } public Main_Menu_Login(id) { new menu = menu_create("Valami Mod | Bejelentkezés", "Main_Menu_Login_Handler"); new text[128]; formatex(text, charsmax(text), "Felhasználónév: %s", username[id]); menu_additem(menu, text, "", 0); formatex(text, charsmax(text), "Jelszó: %s", show_stars(strlen(password[id]))); menu_additem(menu, text, "", 0); menu_additem(menu, "Bejelentkezés", "", 0); menu_display(id, menu); } public Main_Menu_Login_Handler(id, menu, item) { switch(item) { case MENU_EXIT:{ menu_destroy(menu); return; } case 0:{ client_cmd(id, "messagemode Felhasznalonev"); Main_Menu_Login(id); } case 1:{ client_cmd(id, "messagemode Jelszo"); Main_Menu_Login(id); } case 2: Login_Check(id); } menu_destroy(menu); } public Register_Check(id) { if(loggedin[id]) return; if(!equal(password[id], password2[id])) { formatex(info_hud_message[id], charsmax(info_hud_message[]), "A két jelszó nem egyezik!"); info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0; Main_Menu_Register(id); return; } else if((strlen(password[id])) > 16 || (strlen(password2[id])) > 16) { formatex(info_hud_message[id], charsmax(info_hud_message[]), "A jelszó nem lehet hosszabb 16 karakternél!"); info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0; Main_Menu_Register(id); return; } else if((strlen(password[id])) < 6 || (strlen(password2[id])) < 6) { formatex(info_hud_message[id], charsmax(info_hud_message[]), "A jelszó nem lehet rövidebb 6 karakternél!"); info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0; Main_Menu_Register(id); return; } else { formatex(info_hud_message[id], charsmax(info_hud_message[]), "Regisztráció folyamatban... Kérlek várj!"); info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0; Sql_Register_Check(id); Main_Menu_Register(id); } } public Login_Check(id) { if(loggedin[id] == 2) return; formatex(info_hud_message[id], charsmax(info_hud_message[]), "Bejelentkezés folyamatban... Kérlek várj!"); info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0; Sql_Login_Check(id); Main_Menu_Login(id); } public cmd_Username(id) { if(loggedin[id] == 2) return; username[id][0] = EOS; set_task(0.1, "HUD_EndOfString", 1000+id); read_args(username[id], charsmax(username [])); remove_quotes(username[id]); switch(loggedin[id]) { case 0: Main_Menu_Register(id); case 1: Main_Menu_Login(id); } } public cmd_Password(id) { if(loggedin[id] == 2) return; password[id][0] = EOS; set_task(0.1, "HUD_EndOfString", 1000+id); read_args(password[id], charsmax(password [])); remove_quotes(password[id]); switch(loggedin[id]) { case 0: Main_Menu_Register(id); case 1: Main_Menu_Login(id); } } public cmd_Password2(id) { if(loggedin[id]) return; password2[id][0] = EOS; set_task(0.1, "HUD_EndOfString", 1000+id); read_args(password2[id], charsmax(password2[])); remove_quotes(password2[id]); Main_Menu_Register(id); } public Sql_Register_Check(id) { static Query[512], temp_username[64]; copy(temp_username, charsmax(temp_username), username[id]); replace_all(temp_username, charsmax(temp_username), "\", "\\"); replace_all(temp_username, charsmax(temp_username), "'", "\'"); new Data[2]; Data[0] = id; Data[1] = get_user_userid(id); formatex(Query, charsmax(Query), "SELECT * FROM `mod_register` WHERE username = '%s'", temp_username); SQL_ThreadQuery(g_SqlTuple, "Sql_Register_Thread", Query, Data, 2); } public Sql_Register_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem tudtam csatlakozni az adatbazishoz."); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Error"); if(Errcode) log_amx("Hibat dobtam: %s",Error); new id = Data[0]; if(Data[1] != get_user_userid(id)) return; new RowsFound = SQL_NumRows(Query); if(RowsFound) { formatex(info_hud_message[id], charsmax(info_hud_message[]), "Ez a felhasználónév már foglalt!"); info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0; Main_Menu_Register(id); } else Sql_Account_Create(id); } public Sql_Account_Create(id) { static Query[512], temp_username[64], temp_password[32], temp_name[64]; get_user_name(id, temp_name, charsmax(temp_name)); copy(temp_username, charsmax(temp_username), username[id]); copy(temp_password, charsmax(temp_password), password[id]); replace_all(temp_name, charsmax(temp_name), "\", "\\"); replace_all(temp_name, charsmax(temp_name), "'", "\'"); replace_all(temp_password, charsmax(temp_password), "\", "\\"); replace_all(temp_password, charsmax(temp_password), "'", "\'"); replace_all(temp_username, charsmax(temp_username), "\", "\\"); replace_all(temp_username, charsmax(temp_username), "'", "\'"); formatex(Query, charsmax(Query), "INSERT INTO `mod_register` (playername, username, password) VALUES('%s', '%s', '%s')", temp_name, temp_username, temp_password); new Data[2]; Data[0] = id; Data[1] = get_user_userid(id); SQL_ThreadQuery(g_SqlTuple, "Sql_Account_Create_Thread", Query, Data, 2); } public Sql_Account_Create_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem tudtam csatlakozni az adatbazishoz."); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Error"); if(Errcode) log_amx("Hibat dobtam: %s",Error); new id = Data[0]; if(Data[1] != get_user_userid(id)) return; formatex(info_hud_message[id], charsmax(info_hud_message[]), "Sikeres Regisztráció! Jelentkezz be!"); info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0; set_task(5.0, "HUD_EndOfString", 1000+id); loggedin[id] = 1; Main_Menu_Login(id); } public Sql_Login_Check(id) { static Query[512], temp_username[64]; copy(temp_username, charsmax(temp_username), username[id]); replace_all(temp_username, charsmax(temp_username), "\", "\\"); replace_all(temp_username, charsmax(temp_username), "'", "\'"); new Data[2]; Data[0] = id; Data[1] = get_user_userid(id); formatex(Query, charsmax(Query), "SELECT * FROM `mod_register` WHERE username = '%s'", temp_username); SQL_ThreadQuery(g_SqlTuple, "Sql_Login_Thread", Query, Data, 2); } public Sql_Login_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem tudtam csatlakozni az adatbazishoz."); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Error"); if(Errcode) log_amx("Hibat dobtam: %s",Error); new id = Data[0]; if(Data[1] != get_user_userid(id)) return; new RowsFound = SQL_NumRows(Query); if(RowsFound) { static temp_password[32]; new tmp_pass[32]; copy(temp_password, charsmax(temp_password), password[id]); replace_all(temp_password, charsmax(temp_password), "\", "\\"); replace_all(temp_password, charsmax(temp_password), "'", "\'"); SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "password"), tmp_pass, charsmax(tmp_pass)); if(equal(temp_password, tmp_pass)) { loggedin[id] = 2; formatex(info_hud_message[id], charsmax(info_hud_message[]), "Sikeres bejelentkezés!"); info_hud_color[0] = 0, info_hud_color[1] = 255, info_hud_color[2] = 0; set_task(5.0, "HUD_EndOfString", 1000+id); Main_Menu_Logged(id); End_BlackScreen(id); } else { formatex(info_hud_message[id], charsmax(info_hud_message[]), "Érvénytelen jelszó!"); info_hud_color[0] = 255, info_hud_color[1] = 0, info_hud_color[2] = 0; Main_Menu_Login(id); } } else Sql_Account_Create(id); } public Sql_Save_Name(id) { static Query[512], temp_name[64], temp_username[32]; get_user_name(id, temp_name, charsmax(temp_name)); copy(temp_username, charsmax(temp_username), username[id]); replace_all(temp_name, charsmax(temp_name), "\", "\\"); replace_all(temp_name, charsmax(temp_name), "'", "\'"); replace_all(temp_username, charsmax(temp_username), "\", "\\"); replace_all(temp_username, charsmax(temp_username), "'", "\'"); formatex(Query, charsmax(Query), "UPDATE `mod_register` SET `playername` = '%s' WHERE `username` = '%s';", temp_name, temp_username); SQL_ThreadQuery(g_SqlTuple, "Sql_Save_Name_Thread", Query); } public Sql_Save_Name_Thread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem tudtam csatlakozni az adatbazishoz."); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Error"); if(Errcode) log_amx("Hibat dobtam: %s",Error); } public plugin_cfg() { static Query[512]; g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0], SQL_INFO[1], SQL_INFO[2], SQL_INFO[3]); 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)"); SQL_ThreadQuery(g_SqlTuple, "createTableThread", Query); } public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem tudtam csatlakozni az adatbazishoz."); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Error"); if(Errcode) log_amx("Hibat dobtam: %s",Error); } public Set_BlackScreen(id) { message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0, 0, 0}, id); write_short(100000); write_short(100000); write_short(1<<2); write_byte(0); write_byte(0); write_byte(0); write_byte(255); message_end(); } public End_BlackScreen(id) { message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0, 0, 0}, id); write_short(0); write_short(0); write_short(1<<2); write_byte(0); write_byte(0); write_byte(0); write_byte(0); message_end(); } stock show_stars(i_Lenght) { static const s_Stars[32] = "*******************************"; return s_Stars[31-i_Lenght]; }
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.  Amint valaki mond egy jó okot, miért tegyem meg, megteszem. Ha valami hibás szóljatok, és javítom. 
|