Код за потвърждение: Избери целия код
/*================================================================================
Библиотеки
=================================================================================*/
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <fakemeta_util>
/*================================================================================
Данные о плагине
=================================================================================*/
#define PLUGIN "Скин Меню Оружия"
#define VERSION "1.0"
#define AUTHOR "Mi-Ki"
/*================================================================================
Биты
=================================================================================*/
#define bit_set(%0,%1) (%1 |= (1<<%0))
#define bit_zero(%0,%1) (%1 &= ~(1<<%0))
#define bit_valid(%0,%1) (%1 & (1<<%0))
/*================================================================================
Настройка флага
=================================================================================*/
#define ACCESS_FLAG ADMIN_IMMUNITY
/*================================================================================
Константы/Массивы и остальное
=================================================================================*/
// Offsets
const m_iId = 43
const XO_WEAPON = 4
enum skin
{
s_wpnid,
s_p[64],
s_v[64]
}
const skinsmax = 3;
new g_Models[skinsmax][skin]
new g_EnableSkin;
/*==========================================
Инициализация плагина
===========================================*/
public plugin_init()
{
//Регистрация плагина
register_plugin(PLUGIN, VERSION, AUTHOR)
//Регистрация команды
register_clcmd("say /skin", "cmd_skin")
static weapon_name[33], i;
for(i = CSW_P228; i <= CSW_P90; ++i)
{
if(get_weaponname(i, weapon_name, 32))
{
RegisterHam(Ham_Item_Deploy, weapon_name, "ham_item_deploy_post", 1);
}
}
}
public plugin_precache()
{
static path[255]; get_localinfo("amxx_configsdir", path, 254);
add(path, 254, "/weapon_skin.ini")
if( !file_exists(path))
set_fail_state( "[System Skin Menu] Cfg file not loaded." );
static f; f = fopen(path, "rt")
static str[255], x = 0;
while (!feof(f))
{
fgets(f, str, 254)
parse(str, g_Models[x][s_p], 63, g_Models[x][s_v], 63)
precache_model(g_Models[x][s_p])
precache_model(g_Models[x][s_v])
if (++x > skinsmax) break;
}
fclose(f)
}
public menu_skin_handler(id, menu, item)
{
if (item <= MENU_EXIT || item > 1)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
switch (item)
{
case 0: bit_set(id, g_EnableSkin)
case 1: bit_zero(id, g_EnableSkin)
}
ExecuteHamB(Ham_Item_Deploy, fm_get_user_weapon_entity(id))
cmd_skin(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
public cmd_skin(id)
{
if (~get_user_flags(id) & ACCESS_FLAG)
{
client_print(id, print_chat, "You do not have access to use this command.")
return PLUGIN_HANDLED
}
static str[128]; formatex(str, charsmax(str), "\w[\ySystem \rSkin \yМеню\w]^n^n\yOption: \w[\r%s\w]", bit_valid(id, g_EnableSkin) ? "Enable" : "Switch off")
static menu; menu = menu_create(str, "menu_skin_handler")
menu_additem(menu, "Enable")
menu_additem(menu, "Switch off")
menu_setprop(menu, MPROP_EXITNAME, "\y[\wExit\y]")
menu_display(id, menu)
return PLUGIN_HANDLED
}
public ham_item_deploy_post(ent)
{
if (!pev_valid(ent)) return HAM_IGNORED;
static id; id = get_pdata_cbase(ent, 41, 4)
if (!bit_valid(id, g_EnableSkin)) return HAM_IGNORED;
static wpnid; wpnid = get_pdata_int(ent, m_iId, XO_WEAPON);
static sk;
switch (wpnid)
{
case CSW_AK47: sk = 1;
case CSW_M4A1: sk = 2;
case CSW_AWP: sk = 3;
default: sk = 0;
}
if (sk)
{
--sk
set_pev(id, pev_viewmodel, engfunc(EngFunc_AllocString, g_Models[sk][s_v]));
set_pev(id, pev_weaponmodel, engfunc(EngFunc_AllocString, g_Models[sk][s_p]));
}
return HAM_HANDLED
}