Hello, ez egy részlet egy regisztrációs menüs szkinrendszerből. Valamiért random bedobja néha a Felhasználónévhez és Jelszóhoz más játékosok adatait, és így be is lehet velük lépni. tipp?hiba? :O
Kód: public MainRegMenu(id) { if(!Loggedin[id]) { new String[121], Menu;
formatex(String, charsmax(String), "\r%s \y%s \w| \dRegisztrációs Rendszer", MENUPREFIX, PLUGIN); Menu = menu_create(String, "MenuHandler");
formatex(String, charsmax(String), "\rFelhasználónév: \d%s", UserName[id]); menu_additem(Menu, String, "a0");
formatex(String, charsmax(String), "\rJelszĂł: \d%s^n", UserPassword[id]); menu_additem(Menu, String, "a1");
if(Found[id] == 2) { formatex(String, charsmax(String), "Bejelentkezés"); menu_additem(Menu, String, "a2"); } else if(Found[id] == 1) { formatex(String, charsmax(String), "Regisztráció"); menu_additem(Menu, String, "a2"); }
menu_display(id, Menu); } } public MenuHandler(id, Menu, Item) { if(Item == MENU_EXIT ) { menu_destroy(Menu); return PLUGIN_HANDLED; } new Data[6], szName[64]; new Access, Callback; menu_item_getinfo(Menu, Item, Access, Data,charsmax(Data), szName,charsmax(szName), Callback); new Key = str_to_num(Data[1]);
switch(Data[0]) { case 'a': { switch(Key) { case 0: client_cmd(id, "messagemode MY_USERNAME"); case 1: client_cmd(id, "messagemode MY_PASSWORD"); case 2: cmdRegLog(id); } } }
menu_destroy(Menu); return PLUGIN_HANDLED; } public fomenu(id) { if(!Loggedin[id]) { client_printcolor(id, "!g%s !yCsak bejelentkezés után elérhető!", CHATPREFIX); MainRegMenu(id); return PLUGIN_HANDLED; } new String[96] format(String, charsmax(String), "\r[Weapon Skin System] \wFőmenü^n\yÖlések: \d%i \w|\y Kreditek: \d%i", oles[id],kredit[id]) new menu = menu_create(String, "fomenu_MyMenu");
menu_additem(menu, "Fegyver Skin Csomagok", "0"); menu_additem(menu, "Játékos Infók", "1"); menu_additem(menu, "Csomag Információk", "2"); menu_additem(menu, "Bolt - TESZT v 1.0", "3");
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_setprop(menu, MPROP_EXITNAME, "\rKilépés");
menu_display(id, menu, 0);
return PLUGIN_HANDLED; } public fomenu_MyMenu(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; }
new command[6], name[64], access, callback; menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item) { case 0: fegymenu(id) case 1: playerinfo(id) case 2: show_motd(id, "addons/amxmodx/configs/wssinfo.txt", "[WSS] Infok") case 3: bolt(id) }
menu_destroy(menu);
return PLUGIN_HANDLED; } public bolt(id) { new String[96] format(String, charsmax(String), "\r[Weapon Skin System] \wFegyver Bolt^n\y Kreditek: \d%i", kredit[id]) new menu = menu_create(String, "bolt_handler" )
format(String, charsmax(String), kredit[id] >= need_kills_bolt[0] ? (menuszovegbolt[0][0]):(menuszovegbolt[0][1]), kredit[id], need_kills_bolt[0]); menu_additem(menu, String, "0" );
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_setprop(menu, MPROP_BACKNAME, "Vissza"); menu_setprop(menu, MPROP_NEXTNAME, "Előre"); menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
menu_display(id, menu, 0); return PLUGIN_HANDLED; } public bolt_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED; }
new command[6], name[64], access, callback; menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item) {
case 0: { if(kredit[id] >= need_kills_bolt[0]) { csomag[id] = 8 kredit[id] -= get_cvar_num("wastelandara"); ColorChat(id, GREEN, chatszoveg[10],prefix, get_cvar_num("wastelandara"), csomagmsgbolt[0]); } else { ColorChat(id, GREEN, chatszoveg[9],prefix); } } }
bolt(id) return PLUGIN_HANDLED; } public playerinfo(id) { new some[256], menu static players[32],szTemp[10],pnum get_players(players,pnum,"ch"); formatex(some,255,"\r[Weapon Skin System] \wJátékos \d|\w Ölés \d|\w Kredit"); menu = menu_create(some,"pinfo_Handler"); for (new i; i < pnum; i++) { formatex(some,256,"%s \r(\yÖlése: \w%i \d| \yKreditje: \w%i\r)",get_player_name(players[i]), oles[players[i]],kredit[players[i]]); num_to_str(players[i],szTemp,charsmax(szTemp)); menu_additem(menu, some, szTemp); } menu_setprop(menu, MPROP_EXIT, MEXIT_ALL ); menu_setprop(menu, MPROP_EXITNAME, "Kilépés"); menu_display(id, menu); return PLUGIN_HANDLED; } public pinfo_Handler(id,menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return; }
playerinfo(id) } public fegymenu(id) { new String[96] format(String, charsmax(String), "\r[Weapon Skin System] \wSkin csomagok^n\yKiválasztott Csomag: \d[%s]", csomagmsg[csomag[id]]) new menu = menu_create(String, "fegymenu_handler" )
format(String, charsmax(String), oles[id] >= need_kills[0] ? (menuszoveg[0][0]):(menuszoveg[0][1]), oles[id], need_kills[0]); menu_additem(menu, String, "0" ); formatex(String, charsmax(String), oles[id] >= need_kills[1] ? (menuszoveg[1][0]):(menuszoveg[1][1]), oles[id], need_kills[1]); menu_additem(menu, String, "1"); formatex(String, charsmax(String), oles[id] >= need_kills[2] ? (menuszoveg[2][0]):(menuszoveg[2][1]), oles[id], need_kills[2]); menu_additem(menu, String, "2"); format(String, charsmax(String), oles[id] >= need_kills[3] ? (menuszoveg[3][0]):(menuszoveg[3][1]), oles[id], need_kills[3]); menu_additem(menu, String, "3"); format(String, charsmax(String), oles[id] >= need_kills[4] ? (menuszoveg[4][0]):(menuszoveg[4][1]), oles[id], need_kills[4]); menu_additem(menu, String, "4"); format(String, charsmax(String), oles[id] >= need_kills[5] ? (menuszoveg[5][0]):(menuszoveg[5][1]), oles[id], need_kills[5]); menu_additem(menu, String, "5"); format(String, charsmax(String), oles[id] >= need_kills[6] ? (menuszoveg[6][0]):(menuszoveg[6][1]), oles[id], need_kills[6]); menu_additem(menu, String, "6"); formatex(String, charsmax(String), kredit[id] >= need_kills[7] ? (menuszoveg[7][0]):(menuszoveg[7][1]), kredit[id], need_kills[7]); menu_additem(menu, String, "7"); menu_additem(menu, switchbutton[id] == 1 ? (menuszoveg[8][0]):(menuszoveg[8][1]), "8");
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_setprop(menu, MPROP_BACKNAME, "Vissza"); menu_setprop(menu, MPROP_NEXTNAME, "Előre"); menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
menu_display(id, menu, 0); return PLUGIN_HANDLED; } public fegymenu_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED; }
new command[6], name[64], access, callback; menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item) { case 0: { if(oles[id] >= need_kills[0]) { csomag[id] = 1 ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]); } else { ColorChat(id, GREEN, chatszoveg[5],prefix); } } case 1: { if(oles[id] >= need_kills[1]) { csomag[id] = 2 ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]); } else { ColorChat(id, GREEN, chatszoveg[5],prefix); } } case 2: { if(oles[id] >= need_kills[2]) { csomag[id] = 3 ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]); } else { ColorChat(id, GREEN, chatszoveg[5],prefix); } } case 3: { if(oles[id] >= need_kills[3]) { csomag[id] = 4 ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]); } else { ColorChat(id, GREEN, chatszoveg[5],prefix); } } case 4: { if(oles[id] >= need_kills[4]) { csomag[id] = 5 ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]); } else { ColorChat(id, GREEN, chatszoveg[5],prefix); } } case 5: { if(oles[id] >= need_kills[5]) { csomag[id] = 6 ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]); } else { ColorChat(id, GREEN, chatszoveg[5],prefix); } } case 6: { if(oles[id] >= need_kills[6]) { csomag[id] = 7 ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]); } else { ColorChat(id, GREEN, chatszoveg[5],prefix); } } case 7: { if(kredit[id] >= need_kills[7]) { knife[id] = 1 ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[5]); } else { ColorChat(id, GREEN, chatszoveg[9],prefix); } } case 8: { if(switchbutton[id] == 0){ switchbutton[id] = 1 csomag[id] = 0 knife[id] = 0 ColorChat(id, GREEN, chatszoveg[6],prefix); } else { switchbutton[id] = 0 ColorChat(id, GREEN, chatszoveg[7],prefix); } } case 9: { ColorChat(id, GREEN, chatszoveg[5],prefix); } }
fegymenu(id) return PLUGIN_HANDLED; } public cmdRegLog(id) { if(!is_user_connected(id) || Loggedin[id]) return PLUGIN_HANDLED;
if((strlen(UserPassword[id]) > 16)) { if(Found[id] == 1) client_printcolor(id, "!g%s !yA jelszó nem lehet hoszabb, mint 16 karakter!", CHATPREFIX); else client_printcolor(id, "!g%s !yHibás felhasználónév, vagy jelszó!", CHATPREFIX);
MainRegMenu(id); return PLUGIN_HANDLED; } if((strlen(UserPassword[id]) < 5)) { if(Found[id] == 1) client_printcolor(id, "!g%s !yA jelszó nem lehet rövidebb, mint 5 karakter!", CHATPREFIX); else client_printcolor(id, "!g%s !yHibás felhasználónév, vagy jelszó!", CHATPREFIX); MainRegMenu(id); return PLUGIN_HANDLED; } switch(Found[id]) { case 1: { if(Process[id] == 0) { Process[id] = 1; MainRegMenu(id); SQL_AccountCheck(id); client_printcolor(id, "!g%s !yRegisztráció folyamatban... Kérlek várj...", CHATPREFIX); } else MainRegMenu(id); } case 2: { if(Process[id] == 0) { Process[id] = 1; MainRegMenu(id); SQL_AccountCheck(id); client_printcolor(id, "!g%s !yBejelentkezés folyamatban... Kérlek várj...", CHATPREFIX); } else MainRegMenu(id); } } return PLUGIN_HANDLED; } public infohud() { if(!get_cvar_num("wss_hudenable")) return PLUGIN_HANDLED static id for(id = 1; id <= get_maxplayers(); id++) { if(is_user_alive(id)){ set_hudmessage(0, 127, 255, 0.01, 0.20, 0, 6.0, 1.0) show_hudmessage(id, "[Ölés: %i]^n[Kredit: %i]^n[Kiválasztott Csomag: %s]^n[Speed Knife: %s]", oles[id],kredit[id],csomagmsg[csomag[id]], knifedisenable[knife[id]]) } else{ new target = entity_get_int(id, EV_INT_iuser2); if(!target) return PLUGIN_CONTINUE; set_hudmessage(255, 255, 255, 0.01, 0.20, 0, 6.0, 1.0) show_hudmessage(id, "[Ölés: %i]^n[Kredit: %i]^n[Kiválasztott Csomag: %s]^n[Speed Knife: %s]", oles[target],kredit[target],csomagmsg[csomag[target]], knifedisenable[knife[target]]) } } return PLUGIN_CONTINUE; } stock get_player_name(id){ static szName[32]; get_user_name(id,szName,31); return szName; } public client_disconnect(id){ if(Loggedin[id]) SQL_AccountUpdate(id); } public client_putinserver( id ) { if(is_user_bot(id)) return; set_task(10.0, "fomenu", id) get_user_name(id, Name[id], charsmax(Name[])); oles[id] = 0; kredit[id] = 0; csomag[id] = 0; switchbutton[id] = 0; UserName[0][id] = EOS; UserPassword[0][id] = EOS; Name[0][id] = EOS; UserID[id] = 0; Process[id] = 0; Loggedin[id] = false; } public plugin_end() { SQL_FreeHandle(SqlTuple); } public MYSQL_Init() { new Query[512], Len; SqlTuple = SQL_MakeDbTuple(SQLINFO[0], SQLINFO[1], SQLINFO[2], SQLINFO[3]);
Len += formatex(Query[Len], charsmax(Query)-Len, "CREATE TABLE IF NOT EXISTS `virushdreg` (`Felhasznalonev` varchar(32) NOT NULL, `Jelszo` varchar(32) NOT NULL, "); Len += formatex(Query[Len], charsmax(Query)-Len, "`Jatekosnev` varchar(32) NOT NULL, `Oles` int(11) NOT NULL, `Kredit` int(11) NOT NULL, `Csomag` int(11) NOT NULL, "); Len += formatex(Query[Len], charsmax(Query)-Len, "`Switchbutton` int(11) NOT NULL, `ID` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)"); SQL_ThreadQuery(SqlTuple, "CreateTableThread", Query); } public CreateTableThread(FailState, Handle:Query, Error[], ErrorCode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem sikerult kapcsolodni az adatbazishoz!"); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Hiba"); if(ErrorCode) log_amx("Hibat dobtam: %s", Error); } public SQL_AccountCheck(id) { new Query[512], User[32], Data[2]; formatex(User, 31, "%s", UserName[id]); replace_all(User, 31, "\", "\\"); replace_all(User, 31, "'", "\'"); Data[0] = id; Data[1] = get_user_userid(id);
formatex(Query, charsmax(Query), "SELECT * FROM `virushdreg` WHERE Felhasznalonev = ^"%s^";", User); SQL_ThreadQuery(SqlTuple, "AccountCheckThread", Query, Data, 2); } public AccountCheckThread(FailState, Handle:Query, Error[], ErrorCode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem sikerult kapcsolodni az adatbazishoz!"); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Hiba"); if(ErrorCode) log_amx("Hibat dobtam: %s", Error);
new id = Data[0]; if(Data[1] != get_user_userid(id)) return;
if(Found[id] == 1) { if((Query) > 0) { Process[id] = 0; MainRegMenu(id); client_printcolor(id, "!g%s !yEz a felhasználónév már foglalt!", CHATPREFIX); } else { SQL_AccountCreate(id); } } else if(Found[id] == 2) { if(SQL_NumRows(Query) == 0) { Process[id] = 0; MainRegMenu(id); client_printcolor(id, "!g%s !yHibás felhasználónév, vagy jelszó!", CHATPREFIX); } else { SQL_AccountLoad(id); } } } public SQL_RegCheck(id) { new Query[512], User[32], Data[2]; formatex(User, 31, "%s", UserName[id]); replace_all(User, 31, "\", "\\"); replace_all(User, 31, "'", "\'"); Data[0] = id; Data[1] = get_user_userid(id);
formatex(Query, charsmax(Query), "SELECT * FROM `virushdreg` WHERE Felhasznalonev = ^"%s^";", User); SQL_ThreadQuery(SqlTuple, "RegCheckThread", Query, Data, 2); } public RegCheckThread(FailState, Handle:Query, Error[], ErrorCode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem sikerult kapcsolodni az adatbazishoz!"); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Hiba"); if(ErrorCode) log_amx("Hibat dobtam: %s", Error);
new id = Data[0]; if(Data[1] != get_user_userid(id)) return;
if(SQL_NumRows(Query) > 0) Found[id] = 2; //formatex(User, 31, "%s", UserName[id]); //formatex(Password, 31, "%s", UserPassword[id]); else Found[id] = 1;
Process[id] = 0; MainRegMenu(id); } public SQL_AccountCreate(id) { new Query[512], User[32], Password[32], pName[32], Data[2], Len; formatex(User, 31, "%s", UserName[id]); formatex(Password, 31, "%s", UserPassword[id]); formatex(pName, 31, "%s", Name[id]);
replace_all(User, 31, "\", "\\"); replace_all(User, 31, "'", "\'"); replace_all(Password, 31, "\", "\\"); replace_all(Password, 31, "'", "\'"); replace_all(pName, 31, "\", "\\"); replace_all(pName, 31, "'", "\'");
Data[0] = id; Data[1] = get_user_userid(id);
Len += formatex(Query[Len], charsmax(Query)-Len, "INSERT INTO `virushdreg` (`Felhasznalonev`, `Jelszo`, `Jatekosnev`, `Oles`, `Kredit`, `Csomag`, `Switchbutton`) "); Len += formatex(Query[Len], charsmax(Query)-Len, "VALUES (^"%s^", ^"%s^", ^"%s^", ^"0^", ^"0^", ^"0^", ^"0^");", User, Password, pName);
SQL_ThreadQuery(SqlTuple, "AccountCreateThread", Query, Data, 2); } public AccountCreateThread(FailState, Handle:Query, Error[], ErrorCode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem sikerult kapcsolodni az adatbazishoz!"); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Hiba"); if(ErrorCode) log_amx("Hibat dobtam: %s", Error);
new id = Data[0]; if(Data[1] != get_user_userid(id)) return;
Process[id] = 0; Found[id] = 2; MainRegMenu(id); client_printcolor(id, "!g%s !ySikeresen regisztráltál a szerverre. (Felhasználóneved: !g%s !t| !yJelszavad: !g%s!y)", CHATPREFIX, UserName[id], UserPassword[id]); } public SQL_AccountLoad(id) { new Query[512], User[32], Data[2]; formatex(User, 31, "%s", UserName[id]); replace_all(User, 31, "\", "\\"); replace_all(User, 31, "'", "\'"); Data[0] = id; Data[1] = get_user_userid(id);
formatex(Query, charsmax(Query), "SELECT * FROM `virushdreg` WHERE Felhasznalonev = ^"%s^";", User); SQL_ThreadQuery(SqlTuple, "AccountLoadThread", Query, Data, 2); } public AccountLoadThread(FailState, Handle:Query, Error[], ErrorCode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem sikerult kapcsolodni az adatbazishoz!"); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Hiba"); if(ErrorCode) log_amx("Hibat dobtam: %s", Error);
new id = Data[0]; if(Data[1] != get_user_userid(id)) return;
new SqlPassword[32]; SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Jelszo"), SqlPassword, 31);
if(equal(UserPassword[id], SqlPassword)) { UserID[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "ID")); oles[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Oles")); kredit[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Kredit")); csomag[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Csomag")); switchbutton[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Switchbutton")); Process[id] = 0; Loggedin[id] = true; show_menu(id, 0, "^n", 1); set_task(1.0, "fomenu", id) client_printcolor(id, "!g%s !yÜdv a szerveren !g%s!y(!t#%d!y), sikeresen bejelentkeztél.", CHATPREFIX, UserName[id], UserID[id]); } else { Process[id] = 0; MainRegMenu(id); client_printcolor(id, "!g%s !yHibás felhasználónév, vagy jelszó!", CHATPREFIX); } } public SQL_AccountUpdate(id) { new Query[512], NewName[32], Password[32], Len; formatex(NewName, 31, "%s", Name[id]); formatex(Password, 31, "%s", UserPassword[id]); replace_all(NewName, 31, "\", "\\"); replace_all(NewName, 31, "'", "\'"); replace_all(Password, 31, "\", "\\"); replace_all(Password, 31, "'", "\'");
Len += formatex(Query[Len], charsmax(Query)-Len, "UPDATE `virushdreg` SET Jelszo = ^"%s^", Jatekosnev = ^"%s^", Oles = ^"%d^", ", Password, NewName, oles[id]); Len += formatex(Query[Len], charsmax(Query)-Len, "Kredit = ^"%d^", Csomag = ^"%d^", Switchbutton = ^"%d^" WHERE ID = ^"%d^";", kredit[id], csomag[id], switchbutton[id], UserID[id]);
SQL_ThreadQuery(SqlTuple, "AccountUpdateThread", Query); } public AccountUpdateThread(FailState, Handle:Query, Error[], ErrorCode, Data[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED) set_fail_state("Nem sikerult kapcsolodni az adatbazishoz!"); else if(FailState == TQUERY_QUERY_FAILED) set_fail_state("Query Hiba"); if(ErrorCode) log_amx("Hibat dobtam: %s", Error); } public cmdUser(id) { if(!is_user_connected(id) || Loggedin[id]) return PLUGIN_HANDLED;
UserName[0][id] = EOS; read_args(UserName[id], 31); remove_quotes(UserName[id]);
SQL_RegCheck(id); return PLUGIN_HANDLED; } public cmdPassword(id) { if(!is_user_connected(id) || Loggedin[id]) return PLUGIN_HANDLED;
UserPassword[0][id] = EOS; read_args(UserPassword[id], 31); remove_quotes(UserPassword[id]);
MainRegMenu(id); return PLUGIN_HANDLED; } stock client_printcolor(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); replace_all(msg, 190, "!y", "^1"); replace_all(msg, 190, "!t", "^3") ; if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } return PLUGIN_HANDLED; }
|