| Offline |
 |
 |
Csatlakozott:2019.11.03. 22:00 Hozzászólások:395 Megköszönt másnak: 37 alkalommal Megköszönték neki: 32 alkalommal
|
Tessék ebből ki tudsz indulni, gyors írtam neked egy példát. CREATE TABLE IF NOT EXISTS weapon_test ( RegID INT AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(32) UNIQUE, Weapon1 INT DEFAULT 0, Weapon2 INT DEFAULT 0, Weapon3 INT DEFAULT 0, Weapon4 INT DEFAULT 0, Weapon5 INT DEFAULT 0, Weapon6 INT DEFAULT 0, Weapon7 INT DEFAULT 0, Weapon8 INT DEFAULT 0, Weapon9 INT DEFAULT 0 );
#include <amxmodx> #include <amxmisc> #include <sqlx> #define MAX_SLOTS 9 new Handle:g_SqlTuple; new g_iStorage[33][MAX_SLOTS]; new PlayerRegID[33]; new bool:Loaded[33]; public plugin_init() { register_plugin("Raktár Mód", "1.0", "unknown"); register_clcmd("say /storage", "OpenStorage"); register_concmd("addwp", "CmdAddWeapon", ADMIN_KICK, "<id> <slot> <weaponid>"); SQL_Init(); } public plugin_end() { SQL_FreeHandle(g_SqlTuple); } /* ================= SQL ================= */ public SQL_Init() { g_SqlTuple = SQL_MakeDbTuple("127.0.0.1", "root", "", "amxx"); } public client_putinserver(id) { Loaded[id] = false; PlayerRegID[id] = 0; for(new i; i < MAX_SLOTS; i++) g_iStorage[id][i] = 0; set_task(2.0, "SQL_LoadPlayer", id); } public client_disconnect(id) { if(Loaded[id]) SQL_SavePlayer(id); } public SQL_LoadPlayer(id) { if(!is_user_connected(id)) return; new name[32], Query[512], Data[1]; get_user_name(id, name, charsmax(name)); Data[0] = id; formatex(Query, charsmax(Query), "SELECT RegID, Weapon1,Weapon2,Weapon3,Weapon4,Weapon5,Weapon6,Weapon7,Weapon8,Weapon9 \ FROM weapon_test WHERE Name='%s';", name); SQL_ThreadQuery(g_SqlTuple, "SQL_LoadResult", Query, Data, 1); } public SQL_LoadResult(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { new id = Data[0]; if(FailState || !SQL_NumRows(Query)) return; PlayerRegID[id] = SQL_ReadResult(Query, 0); for(new i; i < MAX_SLOTS; i++) g_iStorage[id][i] = SQL_ReadResult(Query, i + 1); Loaded[id] = true; } public SQL_SavePlayer(id) { if(!Loaded[id]) return; new Query[512]; formatex(Query, charsmax(Query), "UPDATE weapon_test SET \ Weapon1=%d,Weapon2=%d,Weapon3=%d,Weapon4=%d,Weapon5=%d, \ Weapon6=%d,Weapon7=%d,Weapon8=%d,Weapon9=%d \ WHERE RegID=%d;", g_iStorage[id][0], g_iStorage[id][1], g_iStorage[id][2], g_iStorage[id][3], g_iStorage[id][4], g_iStorage[id][5], g_iStorage[id][6], g_iStorage[id][7], g_iStorage[id][8], PlayerRegID[id]); SQL_ThreadQuery(g_SqlTuple, "SQL_Ignore", Query); } public SQL_Ignore(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) {} /* ================= STORAGE ================= */ public OpenStorage(id) { if(!Loaded[id]) return PLUGIN_HANDLED; new menu = menu_create("Raktár", "Storage_Handler"); new text[64]; for(new i; i < MAX_SLOTS; i++) { if(g_iStorage[id][i] == 0) formatex(text, charsmax(text), "Slot %d: \rÜres", i+1); else formatex(text, charsmax(text), "Slot %d: \yWeapon ID %d", i+1, g_iStorage[id][i]); menu_additem(menu, text); } menu_display(id, menu); return PLUGIN_HANDLED; } public Storage_Handler(id, menu, item) { menu_destroy(menu); return PLUGIN_HANDLED; } /* ================= ADMIN ================= */ public CmdAddWeapon(id, level, cid) { if(!cmd_access(id, level, cid, 4)) return PLUGIN_HANDLED; new arg1[8], arg2[8], arg3[8]; read_argv(1, arg1, 7); read_argv(2, arg2, 7); read_argv(3, arg3, 7); new target = str_to_num(arg1); new slot = str_to_num(arg2) - 1; new weapon = str_to_num(arg3); if(slot < 0 || slot >= MAX_SLOTS) return PLUGIN_HANDLED; g_iStorage[target][slot] = weapon; client_print(id, print_chat, "Fegyver berakva: slot %d, ID %d", slot+1, weapon); return PLUGIN_HANDLED; }
_________________ ~Script Webem
|
|