Plugin nie zapisuje modeli, tak aby przy wejsciu na serwer gracz nie musial go wybierac na nowo.
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <engine> #include <nvault> #pragma semicolon 1 #define MENUITEM_DISABLED (1<<26) new g_Model[33]; new plik_vault; new g_ModelFiles[][][] = { {"saperterro", "ctsplinter"}, {"oranget", "camoct"}, {"phoenixt", "urbanos"}, {"viptt", "snowct"} }; new g_ModelNames[][] = { "Model 1", "Model 2", "Model 3", "Model 4" }; #if ( sizeof g_ModelNames != sizeof g_ModelFiles ) #error You have to format the g_ModelFiles to the same size as g_ModelNames #endif public plugin_init() { register_plugin("Modele VIP", "1.3", "Gasior"); register_event("ResetHUD", "resetModel", "b"); register_clcmd("say /modele", "modelevip"); plik_vault = nvault_open("g_Model"); if(plik_vault == INVALID_HANDLE) set_fail_state("Nie moge otworzyc pliku :/"); return PLUGIN_CONTINUE; } public plugin_precache() { new tempfile[128]; for ( new i = 0 ; i < sizeof g_ModelFiles ; i++ ) { for ( new j = 0 ; j < 2 ; j++ ) { formatex(tempfile, 127, "models/player/%s/%s.mdl", g_ModelFiles[i][j], g_ModelFiles[i][j]); precache_model(tempfile); } } } public client_connect(id) { g_Model[id] = 0; LoadData(id); } public modelevip(id) { if ( ! ( get_user_flags(id) & ADMIN_LEVEL_H ) ) return; new menu = menu_create( "\yWybierz swoj VIP Model:", "menu_handler" ); new i; for ( i = 0 ; i < sizeof g_ModelFiles ; i++ ) { new menuitem[64]; formatex(menuitem, charsmax(menuitem), "\%c%s", g_Model[id] - 1 == i ? 'd' : 'w', g_ModelNames[i]); menu_additem(menu, menuitem,_, g_Model[id] - 1 == i ? MENUITEM_DISABLED : 0); } menu_addblank(menu, 0); menu_additem(menu, "Pokaz Modele"); menu_addblank(menu, 0); menu_addtext(menu, "Dziekujemy za bycie VIPem na FFA ProjektSpark.pl", 0); menu_display(id, menu); } public menu_handler(id, menu, item) { if ( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } if ( item == sizeof g_ModelFiles ) { g_Model[id] = 0; } else { g_Model[id] = item + 1; } resetModel(id); switch(item) { case 4: show_motd(id, "modele.txt", "Modele"); } SaveData(id); return PLUGIN_CONTINUE; } public resetModel(id) { if ( ! is_user_connected(id) ) return; new userTeam2, CsTeams:userTeam = cs_get_user_team(id); switch ( userTeam ) { case CS_TEAM_T: userTeam2 = 1; case CS_TEAM_CT: userTeam2 = 2; } if ( g_Model[id] && userTeam2 ) cs_set_user_model(id, g_ModelFiles[g_Model[id] - 1][userTeam2 - 1]); else cs_reset_user_model(id); return; } public SaveData(id) { new authid[32]; get_user_authid(id, authid, 31); new vaultkey[64],vaultdata[64]; formatex(vaultkey, 63, "%s-modele", authid); formatex(vaultdata,63,"%d", g_Model[id]); nvault_set(plik_vault,vaultkey,vaultdata); return PLUGIN_CONTINUE; } public LoadData(id) { new authid[32]; get_user_authid(id, authid, 31); new vaultkey[64],vaultdata[64]; formatex(vaultkey, 63, "%s-modele", authid); g_Model[id] = str_to_num(vaultdata); format(vaultkey, 63, "%s-modele", authid); get_vaultdata(vaultkey, vaultdata, 63); return PLUGIN_CONTINUE; }