PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#define PLUGIN "Weapon Skins ADMIN_LEVEL_H"
#define VERSION "1.0"
#define AUTHOR "Bafak"
enum _:MODELS
{
MODEL[64],
SHIELD_MODEL[64]
}
new const v_Model1[MODELS] = {"models/wmodels/v_m4a1.mdl", "models/wmodels/v_m4a1_shield.mdl"}
new const v_Model2[MODELS] = {"models/wmodels/v_ak47.mdl", "models/wmodels/v_ak47_shield.mdl"}
new const v_Model3[MODELS] = {"models/wmodels/v_aug.mdl", "models/wmodels/v_aug_shield.mdl"}
new const v_Model4[MODELS] = {"models/wmodels/v_awp.mdl", "models/wmodels/v_awp_shield.mdl"}
new const v_Model5[MODELS] = {"models/wmodels/v_sg552.mdl", "models/wmodels/v_sg552_shield.mdl"}
new const v_Model6[MODELS] = {"models/wmodels/v_deagle.mdl", "models/wmodels/v_deagle_shield.mdl"}
new const v_Model7[MODELS] = {"models/wmodels/v_knife.mdl", "models/wmodels/v_knife_shield.mdl"}
new const p_Model1[MODELS] = {"models/wmodels/p_ak47.mdl", "models/wmodels/p_ak47_shield.mdl"}
new const p_Model2[MODELS] = {"models/wmodels/p_aug.mdl", "models/wmodels/p_aug_shield.mdl"}
new const p_Model3[MODELS] = {"models/wmodels/p_awp.mdl", "models/wmodels/p_awp_shield.mdl"}
new const p_Model4[MODELS] = {"models/wmodels/p_sg552.mdl", "models/wmodels/p_sg552_shield.mdl"}
new const p_Model5[MODELS] = {"models/wmodels/p_deagle.mdl", "models/wmodels/p_deagle_shield.mdl"}
new const p_Model6[MODELS] = {"models/wmodels/p_knife.mdl", "models/wmodels/p_knife_shield.mdl"}
new onoffskinguns[ 33 ]
public plugin_precache()
{
precache_model(v_Model1[SHIELD_MODEL])
precache_model(v_Model2[SHIELD_MODEL])
precache_model(v_Model3[SHIELD_MODEL])
precache_model(v_Model4[SHIELD_MODEL])
precache_model(v_Model5[SHIELD_MODEL])
precache_model(v_Model6[SHIELD_MODEL])
precache_model(v_Model7[SHIELD_MODEL])
precache_model(p_Model1[SHIELD_MODEL])
precache_model(p_Model2[SHIELD_MODEL])
precache_model(p_Model3[SHIELD_MODEL])
precache_model(p_Model4[SHIELD_MODEL])
precache_model(p_Model5[SHIELD_MODEL])
precache_model(p_Model6[SHIELD_MODEL])
precache_model(v_Model1[MODEL])
precache_model(v_Model2[MODEL])
precache_model(v_Model3[MODEL])
precache_model(v_Model4[MODEL])
precache_model(v_Model5[MODEL])
precache_model(v_Model6[MODEL])
precache_model(v_Model7[MODEL])
precache_model(p_Model1[MODEL])
precache_model(p_Model2[MODEL])
precache_model(p_Model3[MODEL])
precache_model(p_Model4[MODEL])
precache_model(p_Model5[MODEL])
precache_model(p_Model6[MODEL])
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("CurWeapon" , "cur_weapon" , "be" , "1=1")
register_clcmd( "say /skins", "cmd_nastaveni" )
register_clcmd( "say_team /skins", "cmd_nastaveni" )
}
public client_putinserver(id)
{
onoffskinguns[id] = 0
set_task(80.0,"oznamenie",id,"",0,"b")
}
// method from: https://forums.alliedmods.net/showthread.php?t=338882&page=3
const m_bOwnsShield = 2043
new const ShieldPossible = (1 << CSW_HEGRENADE) | (1 << CSW_SMOKEGRENADE) | (1 << CSW_FLASHBANG) | (1 << CSW_KNIFE) |(1 << CSW_USP) | (1 << CSW_P228) | (1 << CSW_GLOCK18) | (1 << CSW_FIVESEVEN) | (1 << CSW_DEAGLE)
stock bool:is_using_shield(const id, const iWeapon)
{
return (ShieldPossible & (1 << iWeapon) && get_pdata_bool(id, m_bOwnsShield))
}
//
public cur_weapon(id)
{
static iWeapon
iWeapon = read_data(2)
if(get_user_flags(id) & ADMIN_LEVEL_H && onoffskinguns[id])
{
static bool:bUsingShield
bUsingShield = is_using_shield(id, iWeapon)
switch(iWeapon)
{
case CSW_M4A1:
{
set_pev(id, pev_viewmodel2, bUsingShield ? v_Model1[SHIELD_MODEL] : v_Model1[MODEL])
}
case CSW_AK47:
{
set_pev(id, pev_viewmodel2, bUsingShield ? v_Model2[SHIELD_MODEL] : v_Model2[MODEL])
set_pev(id, pev_weaponmodel2, bUsingShield ? p_Model1[SHIELD_MODEL] : p_Model1[MODEL])
}
case CSW_AUG:
{
set_pev(id, pev_viewmodel2, bUsingShield ? v_Model3[SHIELD_MODEL] : v_Model3[MODEL])
set_pev(id, pev_weaponmodel2, bUsingShield ? p_Model2[SHIELD_MODEL] : p_Model2[MODEL])
}
case CSW_AWP:
{
set_pev(id, pev_viewmodel2, bUsingShield ? v_Model4[SHIELD_MODEL] : v_Model4[MODEL])
set_pev(id, pev_weaponmodel2, bUsingShield ? p_Model3[SHIELD_MODEL] : p_Model3[MODEL])
}
case CSW_SG552:
{
set_pev(id, pev_viewmodel2, bUsingShield ? v_Model5[SHIELD_MODEL] : v_Model5[MODEL])
set_pev(id, pev_weaponmodel2, bUsingShield ? p_Model4[SHIELD_MODEL] : p_Model4[MODEL])
}
case CSW_DEAGLE:
{
set_pev(id, pev_viewmodel2, bUsingShield ? v_Model6[SHIELD_MODEL] : v_Model6[MODEL])
set_pev(id, pev_weaponmodel2, bUsingShield ? p_Model5[SHIELD_MODEL] : p_Model5[MODEL])
}
case CSW_KNIFE:
{
set_pev(id, pev_viewmodel2, bUsingShield ? v_Model7[SHIELD_MODEL] : v_Model7[MODEL])
set_pev(id, pev_weaponmodel2, bUsingShield ? p_Model6[SHIELD_MODEL] : p_Model6[MODEL])
}
}
}
return PLUGIN_CONTINUE
}
public cmd_nastaveni(id)
{
if( get_user_flags(id) & ADMIN_LEVEL_H)
{
static item[64]
formatex(item, charsmax(item), "\rSkins Menu")
new menu = menu_create(item, "nastaveni_handler")
if(onoffskinguns[id])
{
formatex(item, charsmax(item), "\yTurn On")
menu_additem(menu, item, "1", 0)
}
else
{
formatex(item, charsmax(item), "\rTurn Off")
menu_additem(menu, item, "1", 0)
}
menu_addblank(menu, 0)
formatex(item, charsmax(item), "Exit")
menu_additem(menu, item, "2", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\r" )
menu_display(id, menu, 0)
}
else
{
ChatColor(id, "!gMessage !y: You dont have any acess for this command.")
}
return PLUGIN_CONTINUE
}
public nastaveni_handler(id, menu, item)
{
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
return PLUGIN_HANDLED
}
if(onoffskinguns[id])
{
onoffskinguns[id] = 0
}
else
{
onoffskinguns[id] = 1
}
cmd_nastaveni(id)
}
case 2:
{
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public oznamenie(id)
{
if( get_user_flags(id) & ADMIN_LEVEL_H)
{
ChatColor(id, "!gMessage !y: Special skins - !g/skins")
}
else
{
ChatColor(id, "!gMessage !y: ...Message...")
}
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 Color
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();
}
}
}
}