#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#define DICTIONARY "fegyver_skin_menu.txt"
//#define HOOK_P_MODELS
#define HOOK_V_MODELS
//#define HOOK_W_MODELS
new weapon_select[33]
new g_roundCount
new const menu_item_names[][][] = {
{ "Alap Csomag", "0", "" },
{ "Vadasz awp", "30", "vadasz_awp" },
{ "Nuclear awp", "50", "nuclear_awp" },
{ "Resistance awp", "70", "resistance_awp" },
{ "Pulzus awp", "110", "pulzus_awp" },
{ "Smack awp", "145", "smack_awp" },
{ "Tuz awp", "170", "tuz_awp" },
{ "Teli awp", "230", "teli_awp" },
{ "Hexo awp", "265", "hexo_awp" },
{ "Kigyobor awp", "300", "kigyobor_awp" },
{ "Katonai awp", "350", "katonai_awp" },
{ "Magma awp", "400", "magma_awp" }
}
new const models_name[][] = {
"awp.mdl"
}
public plugin_init() {
register_plugin("PLUGIN", "VERSION", "AUTHOR")
register_dictionary(DICTIONARY)
register_clcmd("say /awp", "clcmd_menu")
register_event("CurWeapon","Hook_P_V_Model","be","1=1")
register_event("RoundTime", "roundcount", "bc")
register_event("TextMsg","reset_counter","a","2&#Game_C","2&#Game_w")
#if defined HOOK_W_MODELS
register_forward(FM_SetModel, "Hook_W_Model", 1)
#endif
}
public plugin_precache() {
for(new i = 0; i < sizeof(models_name); i++) {
for(new j = 1; j < sizeof(menu_item_names); j++) {
#if defined HOOK_P_MODELS
new precache_p[256]
format(precache_p, sizeof(precache_p), "models/%s/p_%s", menu_item_names[j][2], models_name[i])
precache_model(precache_p)
#endif
#if defined HOOK_V_MODELS
new precache_v[256]
format(precache_v, sizeof(precache_v), "models/%s/v_%s", menu_item_names[j][2], models_name[i])
precache_model(precache_v)
#endif
#if defined HOOK_W_MODELS
new precache_w[256]
format(precache_w, sizeof(precache_w), "models/%s/w_%s", menu_item_names[j][2], models_name[i])
precache_model(precache_w)
#endif
}
}
}
public roundcount()
if ( read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0) ) {
++g_roundCount
new r = random(256)
new g = random(256)
new b = random(256)
set_hudmessage(r,g,b, -1.0, 0.30, 0, 6.0, 6.0, 1.0, 0.15, 1)
show_hudmessage(0,"A menü eléréséhez írj: /menu-t!", g_roundCount)
}
public reset_counter(){
g_roundCount = 0
}
public client_disconnect(id)
weapon_select[id] = 0
public W_Model_Hook(ent, model[]) {
if(!pev_valid(ent)) return FMRES_IGNORED
new owner = pev(ent, pev_owner)
for(new i = 0; i < sizeof(models_name); i++) {
new old_w[256]
format(old_w, sizeof(old_w), "models/w_%s", models_name[i])
new new_w[256]
format(new_w, sizeof(new_w), "models/%s/w_%s", menu_item_names[weapon_select[owner]][2], models_name[i])
if(equali(model, old_w) || equali(model, new_w)) {
if(weapon_select[owner] >= 1) engfunc(EngFunc_SetModel, ent, new_w)
else engfunc(EngFunc_SetModel, ent, old_w)
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
public Hook_P_V_Model(id) {
if(!is_user_alive(id))
return PLUGIN_CONTINUE
static v_model[32], p_model[32]
pev(id, pev_viewmodel2, v_model, 31)
pev(id, pev_weaponmodel2, p_model,31)
for(new i = 0; i < sizeof(models_name); i++) {
#if defined HOOK_V_MODELS
new old_v[256]
format(old_v, sizeof(old_v), "models/v_%s", models_name[i])
new new_v[256]
format(new_v, sizeof(new_v), "models/%s/v_%s", menu_item_names[weapon_select[id]][2], models_name[i])
if(equali(v_model, old_v) || equali(v_model, new_v)) {
if(weapon_select[id] >= 1) set_pev(id, pev_viewmodel2, new_v)
else set_pev(id, pev_viewmodel2, old_v)
break
}
#endif
#if defined HOOK_P_MODELS
new old_p[256]
format(old_p, sizeof(old_p), "models/p_%s", models_name[i])
new new_p[256]
format(new_p, sizeof(new_p), "models/%s/p_%s", menu_item_names[weapon_select[id]][2], models_name[i])
if(equali(p_model, old_p) || equali(p_model, new_p)) {
if(weapon_select[id] >= 1) set_pev(id, pev_weaponmodel2, new_p)
else set_pev(id, pev_weaponmodel2, old_p)
break
}
#endif
}
return PLUGIN_CONTINUE
}
public clcmd_menu(id) {
new menu_line[64], menu_newline[64], i_data[64]
format(menu_line, charsmax(menu_line), "\w%L", id, "SKIN_MENU", get_user_frags(id))
new menu = menu_create(menu_line, "clcmd_menu_handler")
for(new i = 0; i < sizeof(menu_item_names); i++) {
new convert_num = str_to_num(menu_item_names[i][1])
num_to_str(i, i_data, sizeof(i_data))
if(get_user_frags(id) < convert_num)
format(menu_newline, charsmax(menu_newline), "%L", id, "SKIN_ITEM1", menu_item_names[i][0], convert_num)
else
format(menu_newline, charsmax(menu_newline), "%L", id, "SKIN_ITEM2", menu_item_names[i][0])
menu_additem(menu, menu_newline, i_data, 0)
}
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public clcmd_menu_handler(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[64], szName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
new key = str_to_num(data)
new convert_num = str_to_num(menu_item_names[key][1])
if(get_user_frags(id) < convert_num) {
client_print(id, print_chat, "%L", id, "SKIN_NOT_USE", menu_item_names[key][0], convert_num)
return PLUGIN_HANDLED
}
else {
weapon_select[id] = key
client_print(id, print_chat, "%L", id, "SKIN_CHOOSED", menu_item_names[key][0])
Hook_P_V_Model(id)
}
return PLUGIN_CONTINUE
}