Code:
#include <amxmodx>
#include <engine>
#include <vault>
#include <fun>
#define PLUGIN "Knife Mod"
#define VERSION "1.0"
#define AUTHOR "spunko"
new knife_model[33]
new g_Menu
new const v_szAdminKnive1[ ] = "models/knife-mod/v_knife1.mdl";
new const v_szAdminKnive2[ ] = "models/knife-mod/v_knife2.mdl";
new CVAR_LOWGRAV
new CVAR_NORMGRAV
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("CurWeapon","CurWeapon","be","1=1")
g_Menu = register_menuid("Knife Mod")
register_menucmd(g_Menu, 1023, "knifemenu")
register_clcmd("say /knife", "display_knife")
CVAR_LOWGRAV = register_cvar("km_lowgravity" , "400")
CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")
set_task(480.0, "kmodmsg", 0, _, _, "b")
}
public plugin_precache() {
precache_model("models/knife-mod/v_butcher.mdl")
precache_model("models/knife-mod/p_butcher.mdl")
precache_model("models/v_knife.mdl")
precache_model("models/p_knife.mdl")
precache_model( v_szAdminKnive1 );
precache_model( v_szAdminKnive2 );
}
public display_knife(id) {
new menuBody[512]
add(menuBody, 511, "\rKnife Mod\w^n^n")
add(menuBody, 511, "1. Butcher Knife \y(Low Gravity)\w^n")
add(menuBody, 511, "2. Default Knife^n^n")
add(menuBody, 511, "3. Test2 Knife \y(ADMIN FLAG)\w^n")
add(menuBody, 511, "4. Default Knife^n^n")
add(menuBody, 511, "0. Exit^n")
new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<9 )
show_menu(id, keys, menuBody, -1, "Knife Mod")
}
public knifemenu(id, key)
{
SetKnife(id , key)
SaveData(id)
}
public SetKnife(id , Knife) {
knife_model[id] = Knife
if ( get_user_weapon(id) != CSW_KNIFE )
return PLUGIN_HANDLED
new vModel[56],pModel[56]
switch(Knife)
{
case 0: {
format(vModel,55,"models/v_knife.mdl")
format(pModel,55,"models/p_knife.mdl")
}
case 1: {
format(vModel,55,"models/knife-mod/v_butcher.mdl")
format(pModel,55,"models/knife-mod/p_butcher.mdl")
}
case 2: {
if ( get_user_flags(id) & ADMIN_BAN) format(vModel,55,v_szAdminKnive1)
else
{
display_knife(id)
return PLUGIN_HANDLED;
}
}
case 3: {
if ( get_user_flags(id) & ADMIN_BAN) format(vModel,55,v_szAdminKnive2)
else
{
display_knife(id)
return PLUGIN_HANDLED;
}
}
}
entity_set_string(id, EV_SZ_viewmodel, vModel)
entity_set_string(id, EV_SZ_weaponmodel, pModel)
return PLUGIN_HANDLED;
}
public CurWeapon(id)
{
new Weapon = read_data(2)
// Set Knife Model
SetKnife(id, knife_model[id])
new Float:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
set_user_gravity(id , Gravity)
}
stock log_kill(killer, victim, weapon[],headshot) {
user_silentkill( victim );
message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 );
write_byte( killer );
write_byte( victim );
write_byte( headshot );
write_string( weapon );
message_end();
new kfrags = get_user_frags( killer );
set_user_frags( killer, kfrags++ );
new vfrags = get_user_frags( victim );
set_user_frags( victim, vfrags++ );
return PLUGIN_CONTINUE
}
public kmodmsg() {
client_print(0,print_chat,"[AMXX] Type /knife to change your knife skins")
}
public client_authorized(id)
{
LoadData(id)
}
SaveData(id)
{
new authid[32]
get_user_authid(id, authid, 31)
new vaultkey[64]
new vaultdata[64]
format(vaultkey, 63, "KMOD_%s", authid)
format(vaultdata, 63, "%d", knife_model[id])
set_vaultdata(vaultkey, vaultdata)
}
LoadData(id)
{
new authid[32]
get_user_authid(id,authid,31)
new vaultkey[64], vaultdata[64]
format(vaultkey, 63, "KMOD_%s", authid)
get_vaultdata(vaultkey, vaultdata, 63)
knife_model[id] = str_to_num(vaultdata)
}