/* Plugin generated by AMXX-Studio */
#include <amxmisc>
#include <engine>
#include <vault>
#include <fun>
#include <hamsandwich>
#include <fakemeta_util>
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MEN
U_KEY_8|MENU_KEY_9|MENU_KEY_0
#define PLUGIN "Knife Mod"
#define VERSION "1.3"
#define AUTHOR "Dr.Zoidberg"
new knife_model[32], jumpnum[32], dojump[32];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_menu("Menu_2", keys, "func_menu2")
register_event("CurWeapon", "CurWeapon", "be", "1=1", "2=29");
RegisterHam(Ham_Player_PreThink, "player", "PreThink");
RegisterHam(Ham_TakeDamage, "player", "Player_TakeDamage");
register_clcmd("say /knife", "display_knife");
register_clcmd("knife", "display_knife");
}
public plugin_precache() {
precache_model("models/knife_dm/p_knf1.mdl");
precache_model("models/knife_dm/p_knf2.mdl");
precache_model("models/knife_dm/p_knf3.mdl");
precache_model("models/knife_dm/p_knf4.mdl");
precache_model("models/knife_dm/p_knf5.mdl");
precache_model("models/knife_dm/p_knf6.mdl");
precache_model("models/knife_dm/v_knf1.mdl");
precache_model("models/knife_dm/v_knf2.mdl");
precache_model("models/knife_dm/v_knf3.mdl");
precache_model("models/knife_dm/v_knf4.mdl");
precache_model("models/knife_dm/v_knf5.mdl");
precache_model("models/knife_dm/v_knf6.mdl");
precache_model("models/knife_dm/v_ypon.mdl")
precache_model("models/knife_dm/p_ypon.mdl")
precache_model("models/knife_dm/v_jump.mdl")
precache_model("models/knife_dm/p_jump.mdl")
precache_model("models/v_knife.mdl");
precache_model("models/p_knife.mdl");
}
public display_knife(id)
{
static menu[650], iLen
iLen = 0
iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\rВыбери\w-\yНож \d!!!\w^n\dАвтор: Dimka*^n^n")
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "[1]. \y[\rСтандарт\y]-[\wKnife\y]\d(+)^n")
keys |= MENU_KEY_1
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "[2]. \y[\rСкорость\y]-[\wAxe\y]\d(++)^n")
keys |= MENU_KEY_2
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "[3]. \y[\rГравитация\y]-[\wHook\y]\d(++)^n")
keys |= MENU_KEY_3
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "[4]. \y[\rСкор_Грав\y]-[\wВетка\y]\d(++)^n")
keys |= MENU_KEY_4
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "[5]. \y[\rУрон\y]\d(+)^n")
keys |= MENU_KEY_5
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "[6]. \y[\rДвойной прыжок\y]\d(++)^n")
keys |= MENU_KEY_6
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "[7]. \y[\rВсе_Статы\y]-[\wВип\y]\d(+)^n")
keys |= MENU_KEY_7
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "[8]. \y[\rВсе_Статы\y]-[\wАдмин\y]\d(++)^n")
keys |= MENU_KEY_8
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "[9]. \y[\rВсе_Статы\y]-[\wГл.Админ\y]\d(+++)^n^n")
keys |= MENU_KEY_9
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "[0]. \wВыход^n")
keys |= MENU_KEY_0
show_menu(id, keys, menu, -1, "Menu_2");
return PLUGIN_HANDLED
}
public SetKnife(id , Knife) {
new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo);
if (Weapon != CSW_KNIFE)
{
return PLUGIN_HANDLED;
}
new vModel[56],pModel[56];
switch(Knife)
{
case 1:
{
format(vModel,55,"models/v_knife.mdl")
format(pModel,55,"models/p_knife.mdl")
}
case 2:
{
format(vModel,55,"models/knife_dm/v_knf1.mdl");
format(pModel,55,"models/knife_dm/p_knf1.mdl");
}
case 3:
{
format(vModel,55,"models/knife_dm/v_knf2.mdl");
format(pModel,55,"models/knife_dm/p_knf2.mdl");
}
case 4:
{
format(vModel,55,"models/knife_dm/v_knf3.mdl");
format(pModel,55,"models/knife_dm/p_knf3.mdl");
}
case 5:
{
format(vModel,55,"models/knife_dm/v_ypon.mdl")
format(pModel,55,"models/knife_dm/p_ypon.mdl")
}
case 6:
{
format(vModel,55,"models/knife_dm/v_jump.mdl")
format(pModel,55,"models/knife_dm/p_jump.mdl")
}
case 7:
{
format(vModel,55,"models/knife_dm/v_knf4.mdl");
format(pModel,55,"models/knife_dm/p_knf4.mdl");
}
case 8:
{
format(vModel,55,"models/knife_dm/v_knf5.mdl")
format(pModel,55,"models/knife_dm/p_knf5.mdl")
}
case 9:
{
format(vModel,55,"models/knife_dm/v_knf6.mdl");
format(pModel,55,"models/knife_dm/p_knf6.mdl");
}
}
knife_model[id] = Knife;
entity_set_string(id, EV_SZ_viewmodel, vModel);
entity_set_string(id, EV_SZ_weaponmodel, pModel);
return PLUGIN_HANDLED;
}
public func_menu2(id, key)
{
switch(key)
{
case 0:
{
SetKnife(id , 1);
}
case 1:
{
SetKnife(id , 2);
}
case 2:
{
SetKnife(id , 3);
}
case 3:
{
SetKnife(id , 4);
}
case 4:
{
SetKnife(id , 5);
}
case 5:
{
SetKnife(id , 6);
}
case 6:
{
if (get_user_flags(id) & ADMIN_LEVEL_C)
{
SetKnife(id , 7);
}
}
case 7:
{
if (get_user_flags(id) & ADMIN_BAN)
{
SetKnife(id , 8);
}
}
case 8:
{
if (get_user_flags(id) & ADMIN_PASSWORD)
{
SetKnife(id , 9);
}
}
}
}
public PreThink(id)
{
if(!is_user_alive(id)) return HAM_IGNORED;
if(get_user_weapon(id) == CSW_KNIFE)
{
if (knife_model[id] == 1)
{
set_pev(id, pev_gravity, 0.8);
set_pev(id, pev_maxspeed, 250.0);
}
else if (knife_model[id] == 2)
{
set_pev(id, pev_gravity, 0.8);
set_pev(id, pev_maxspeed, 350.0);
}
else if (knife_model[id] == 3)
{
set_pev(id, pev_gravity, 0.5);
set_pev(id, pev_maxspeed, 240.0);
}
else if (knife_model[id] == 4)
{
set_user_maxspeed(id, 290.0);
set_pev(id, pev_gravity, 0.7);
}
else if (knife_model[id] == 5)
{
}
else if (knife_model[id] == 6)
{
dojump[id] = true
jumpnum[id] = 0
}
else if (knife_model[id] == 7)
{
set_user_maxspeed(id, 300.0);
set_pev(id, pev_gravity, 0.6);
}
else if (knife_model[id] == 8)
{
set_user_maxspeed(id, 350.0);
set_pev(id, pev_gravity, 0.5);
}
else if (knife_model[id] == 9)
{
set_user_maxspeed(id, 400.0);
set_pev(id, pev_gravity, 0.4);
}
else
{
}
}
else
{
}
return HAM_HANDLED;
}
public CurWeapon(id)
{
new Weapon = read_data(2);
SetKnife(id, knife_model[id]);
if (Weapon == CSW_KNIFE)
{
if (knife_model[id] < 1)
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_knife.mdl");
entity_set_string(id, EV_SZ_weaponmodel, "models/p_knife.mdl");
}
}
return PLUGIN_HANDLED;
}
public Player_TakeDamage(victim, inflicator, attacker, Float:damage)
{
if(!is_user_connected(attacker))
return;
if(victim == attacker || !victim)
return;
if(get_user_weapon(attacker) == CSW_KNIFE)
{
if (knife_model[attacker] == 3 || knife_model[attacker] == 7) SetHamParamFloat(7, damage * 2.5);
}
}
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 client_disconnect(id)
{
if(task_exists(id))
{
remove_task(id);
SaveData(id);
}
}
public client_authorized(id)
{
if (!is_user_admin(id))
{
if(knife_model[id] == 7) knife_model[id] = 0;
}
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);
}
public client_PreThink(id)
{
if(!is_user_alive(id) || knife_model[id] != 5 || knife_model[id] != 7 || knife_model[id] != 8 || knife_model[id] != 9)
return PLUGIN_CONTINUE;
new nbut = get_user_button(id);
new obut = get_user_oldbutton(id);
if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
{
if(jumpnum[id] < 2)
{
dojump[id] = true;
jumpnum[id]++;
return PLUGIN_CONTINUE;
}
}
if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
{
jumpnum[id] = 0;
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE;
}
public client_PostThink(id)
{
if(!is_user_alive(id) || knife_model[id] != 5 || knife_model[id] != 7 || knife_model[id] != 8 || knife_model[id] != 9)
return PLUGIN_CONTINUE;
if(dojump[id])
{
new Float:velocity[3];
entity_get_vector(id,EV_VEC_velocity,velocity);
velocity[2] = random_float(265.0,285.0);
entity_set_vector(id,EV_VEC_velocity,velocity);
dojump[id] = false;
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE;
}
stock client_printcolor(const id, const input[], any:...)
{
new iCount = 1, iPlayers[32];
static szMsg[191];
vformat(szMsg, charsmax(szMsg), input, 3);
replace_all(szMsg, 190, "/g", "^4"); // green txt
replace_all(szMsg, 190, "/y", "^1"); // orange txt
replace_all(szMsg, 190, "/ctr", "^3"); // team txt
replace_all(szMsg, 190, "/w", "^0"); // team txt
if(id) iPlayers[0] = id;
else get_players(iPlayers, iCount, "ch");
for (new i = 0; i < iCount; i++)
{
if (is_user_connected(iPlayers[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayers[i]);
write_byte(iPlayers[i]);
write_string(szMsg);
message_end();
}
}
}