Raised This Month: $248 Target: $400
 62% 

[ZP] Hammer


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
strangeguy
Member
Join Date: Mar 2019
Old 07-29-2020 , 10:39   [ZP] Hammer
Reply With Quote #1

Hello
How can I swap admin flags for hammer to vip flags in zombie plague 1.6.1?

Code:
#include <amxmodx>
#include <fakemeta>
#include <fun> 
#include <engine> 
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN    "Choose knifes"
#define VERSION    "1.0"
#define AUTHOR    "CHyC/4e/l"

#define VIP ADMIN_LEVEL_H
#define MAXPLAYERS 32

new combat_v_model[] = "models/zb/v_mcombat_knife.mdl"
new combat_p_model[] = "models/zb/p_combat_knife.mdl"

new strong_v_model[] = "models/zb/v_strong_knife.mdl"
new strong_p_model[] = "models/zb/p_strong_knife.mdl"

new axe_v_model[] = "models/zb/v_axe_knife.mdl"	
new axe_p_model[] = "models/zb/p_axe_knife.mdl"	

new katana_v_model[] = "models/zb/v_katana_knife.mdl"	
new katana_p_model[] = "models/zb/p_katana_knife.mdl"

new hammer_v_model[] = "models/zb/v_hammer_knife.mdl"	
new hammer_p_model[] = "models/zb/p_hammer_knife.mdl"	

const m_pPlayer = 41 
const m_flNextPrimaryAttack = 46 
const m_flNextSecondaryAttack = 47 
const m_flTimeWeaponIdle = 48 

new g_hasSpeed[33], SayText
new bool:g_WasShowed[MAXPLAYERS + 1]
new g_knife_combat[33], cvar_knife_combat_jump, cvar_knife_combat_spd, cvar_knife_combat_dmg, cvar_knife_combat_knock, cvar_knife_combat_spd_attack2
new g_knife_strong[33], cvar_knife_strong_jump, cvar_knife_strong_spd, cvar_knife_strong_dmg, cvar_knife_strong_knock, cvar_knife_strong_spd_attack2
new g_knife_axe[33], cvar_knife_axe_jump, cvar_knife_axe_spd, cvar_knife_axe_dmg, cvar_knife_axe_knock, cvar_knife_axe_spd_attack2
new g_knife_katana[33], cvar_knife_katana_jump, cvar_knife_katana_spd, cvar_knife_katana_dmg, cvar_knife_katana_knock, cvar_knife_katana_spd_attack2
new g_knife_hammer[33], cvar_knife_hammer_jump, cvar_knife_hammer_spd, cvar_knife_hammer_dmg, cvar_knife_hammer_knock, cvar_hammer_spd_attack2

new const g_sound_knife[] = { "items/gunpickup2.wav" }

new const combat_sounds[][] =
{
	"zmwpn/zb_knife/mcombat_deploy.wav",
	"zmwpn/zb_knife/mcombat_hit.wav"	,
	"zmwpn/zb_knife/mcombat_hit.wav"	,
	"zmwpn/zb_knife/mcombat_hit.wav"	,
	"zmwpn/zb_knife/mcombat_hit.wav"	,
	"zmwpn/zb_knife/mcombat_hitwall.wav",
	"zmwpn/zb_knife/mcombat_slash.wav",
	"zmwpn/zb_knife/mcombat_slash.wav",
	"zmwpn/zb_knife/mcombat_stab.wav"
}

new const strong_sounds[][] =
{
	"zmwpn/zb_knife/strong_deploy.wav",
	"zmwpn/zb_knife/strong_hit.wav",
	"zmwpn/zb_knife/strong_hit.wav",
	"zmwpn/zb_knife/strong_hit.wav",
	"zmwpn/zb_knife/strong_hit.wav",
	"zmwpn/zb_knife/strong_hitwall.wav",
	"zmwpn/zb_knife/strong_slash.wav",
	"zmwpn/zb_knife/strong_slash.wav",
	"zmwpn/zb_knife/strong_stab.wav"
}

new const axe_sounds[][] =
{
	"zmwpn/zb_knife/axe_deploy.wav",
	"zmwpn/zb_knife/axe_hit.wav",
	"zmwpn/zb_knife/axe_hit.wav",
	"zmwpn/zb_knife/axe_hit.wav",
	"zmwpn/zb_knife/axe_hit.wav",
	"zmwpn/zb_knife/axe_hitwall.wav",
	"zmwpn/zb_knife/axe_slash.wav",
	"zmwpn/zb_knife/axe_slash.wav",
	"zmwpn/zb_knife/axe_stab.wav"
}

new const katana_sounds[][] =
{
	"zmwpn/zb_knife/katana_deploy.wav",
	"zmwpn/zb_knife/katana_hit.wav",
	"zmwpn/zb_knife/katana_hit.wav",
	"zmwpn/zb_knife/katana_hit.wav",
	"zmwpn/zb_knife/katana_hit.wav",
	"zmwpn/zb_knife/katana_hitwall.wav",
	"zmwpn/zb_knife/katana_slash.wav",
	"zmwpn/zb_knife/katana_slash.wav",
	"zmwpn/zb_knife/katana_stab.wav"
}

new const hammer_sounds[][] =
{
	"zmwpn/zb_knife/hammer_deploy.wav",
	"zmwpn/zb_knife/hammer_hit.wav",
	"zmwpn/zb_knife/hammer_hit.wav",
	"zmwpn/zb_knife/hammer_hit.wav",
	"zmwpn/zb_knife/hammer_hit.wav",
	"zmwpn/zb_knife/hammer_hitwall.wav",
	"zmwpn/zb_knife/hammer_slash.wav",
	"zmwpn/zb_knife/hammer_slash.wav",
	"zmwpn/zb_knife/hammer_stab.wav"
}

new const oldknife_sounds[][] =
{
	"weapons/knife_deploy1.wav",
	"weapons/knife_hit1.wav",
	"weapons/knife_hit2.wav",
	"weapons/knife_hit3.wav",
	"weapons/knife_hit4.wav",
	"weapons/knife_hitwall1.wav",
	"weapons/knife_slash1.wav",
	"weapons/knife_slash2.wav",
	"weapons/knife_stab.wav"
}

public plugin_init()
{
	register_plugin(PLUGIN , VERSION , AUTHOR);
	register_cvar("zp_addon_knife", VERSION, FCVAR_SERVER);
        SayText = get_user_msgid("SayText")   

 	register_clcmd("say /knife","knife_menu",ADMIN_ALL,"knife_menu")
 	register_clcmd("/knife","knife_menu",ADMIN_ALL,"knife_menu")
	register_clcmd("combat", "give_combat")
	register_clcmd("strong", "give_strong")
	register_clcmd("axe", "give_axe")
	register_clcmd("katana", "give_katana")
	register_clcmd("hammer", "give_hammer")

	register_event("CurWeapon","checkWeapon","be","1=1");
	register_event("Damage" , "event_Damage" , "b" , "2>0");

	register_forward(FM_PlayerPreThink, "fw_PlayerPreThink");
	register_forward(FM_EmitSound, "fw_EmitSound");

	register_message(get_user_msgid("DeathMsg"), "message_DeathMsg");

	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
        RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fw_Knife_SecondaryAttack_Post", 1) 

	cvar_knife_combat_jump= register_cvar("zp_knife_combat_jump", "270.0");
	cvar_knife_combat_spd = register_cvar("zp_knife_combat_spd", "310.0");
	cvar_knife_combat_dmg = register_cvar("zp_knife_combat_dmg" , "1.0");
	cvar_knife_combat_knock = register_cvar("zp_knife_combat_knock" , "3.0");
	cvar_knife_combat_spd_attack2 = register_cvar("zp_knife_combat_spd_attack2" , "1.2");

	cvar_knife_strong_jump= register_cvar("zp_knife_strong_jump", "265.0");
	cvar_knife_strong_spd = register_cvar("zp_knife_strong_spd", "200.0");
	cvar_knife_strong_dmg = register_cvar("zp_knife_strong_dmg" , "4.0");
	cvar_knife_strong_knock = register_cvar("zp_knife_strong_knock" , "3.0");
	cvar_knife_strong_spd_attack2 = register_cvar("zp_knife_strong_spd_attack2" , "1.6");

	cvar_knife_axe_jump= register_cvar("zp_knife_axe_jump", "335.0");
	cvar_knife_axe_spd = register_cvar("zp_knife_axe_spd", "220.0");
	cvar_knife_axe_dmg = register_cvar("zp_knife_axe_dmg" , "2.0");
	cvar_knife_axe_knock = register_cvar("zp_knife_axe_knock" , "3.0");
	cvar_knife_axe_spd_attack2 = register_cvar("zp_knife_axe_spd_attack2" , "1.4");

	cvar_knife_katana_jump= register_cvar("zp_knife_katana_jump", "275.0");
	cvar_knife_katana_spd = register_cvar("zp_knife_katana_spd", "240.0");
	cvar_knife_katana_dmg = register_cvar("zp_knife_katana_dmg" , "5.0");
	cvar_knife_katana_knock = register_cvar("zp_knife_katana_knock" , "5.0");
	cvar_knife_katana_spd_attack2 = register_cvar("zp_knife_katana_spd_attack2" , "1.2");

	cvar_knife_hammer_jump= register_cvar("zp_knife_hammer_jump", "335.0");
	cvar_knife_hammer_spd= register_cvar("zp_knife_hammer_spd", "315.0");
	cvar_knife_hammer_dmg = register_cvar("zp_knife_hammer_dmg" , "7.0");
	cvar_knife_hammer_knock = register_cvar("zp_knife_hammer_knock" , "6.0");
	cvar_hammer_spd_attack2 = register_cvar("zp_knife_hammer_spd_attack2" , "1.8");

    	register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
}

public client_connect(id)
{
	g_knife_combat[id] = false
	g_knife_strong[id] = false
	g_knife_axe[id] = false
	g_knife_katana[id] = false
	g_knife_hammer[id] = false
	g_hasSpeed[id] = false
}

public client_disconnect(id)
{
	g_knife_combat[id] = false
	g_knife_strong[id] = false
	g_knife_axe[id] = false
	g_knife_katana[id] = false
	g_knife_hammer[id] = false
	g_hasSpeed[id] = false
}

public plugin_precache()
{
	precache_model(combat_v_model)
	precache_model(combat_p_model)
	precache_model(strong_v_model)
	precache_model(strong_p_model)
	precache_model(axe_v_model)
	precache_model(axe_p_model)
	precache_model(katana_v_model)
	precache_model(katana_p_model)
	precache_model(hammer_v_model)
	precache_model(hammer_p_model)

	precache_sound(g_sound_knife)

	for(new i = 0; i < sizeof combat_sounds; i++)
		precache_sound(combat_sounds[i])

	for(new i = 0; i < sizeof strong_sounds; i++)
		precache_sound(strong_sounds[i])

	for(new i = 0; i < sizeof axe_sounds; i++)
		precache_sound(axe_sounds[i])  

	for(new i = 0; i < sizeof katana_sounds; i++)
		precache_sound(katana_sounds[i])

	for(new i = 0; i < sizeof hammer_sounds; i++)
		precache_sound(hammer_sounds[i])
}

public event_round_start(id)
{
    	for (new i; i < MAXPLAYERS + 1; i++)
        	g_WasShowed[i] = false
}

public knife_menu(id)
{
    	if (g_WasShowed[id])
    	{
        	print_col_chat(id, "^1[^4ZP^1] Noz mozna wybrac tylko raz na runde!")
        	return PLUGIN_HANDLED
   	 }

	if(is_user_alive(id) && !zp_get_user_zombie(id))
	{
		my_menu(id)
	}

	return PLUGIN_HANDLED
}

public my_menu(id)
{
	new menu = menu_create("\yWybierz swoj noz!", "menu_handler");
	menu_additem(menu, "\wCombat \y[ Szybkosc ]", "1", 0);
	menu_additem(menu, "\wStrong \y[ Obrazenia ]", "2", 0);
	menu_additem(menu, "\wAxe \y[ Skok ]", "3", 0);
	menu_additem(menu, "\wKatana \y[ Odrzucenie ]", "4", 0);
	menu_additem(menu, "\wMlot \r[ Tylko dla *VIP* ]", "5", 0);
    
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    
	menu_display(id, menu, 0);    
} 

public menu_handler(id, menu, item)
{
	if( item == MENU_EXIT )
	{
       		menu_destroy(menu);
        	return PLUGIN_HANDLED;    
	}
    
	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:
        	{
			give_combat(id)
			menu_destroy(menu);
			return PLUGIN_HANDLED
		}
		case 2:
		{
			give_strong(id)
			menu_destroy(menu);
			return PLUGIN_HANDLED
		}
		case 3:
		{
			give_axe(id)
			menu_destroy(menu);
			return PLUGIN_HANDLED
		}
		case 4:
		{
			give_katana(id)
			menu_destroy(menu);
			return PLUGIN_HANDLED
		}
		case 5:
		{
			give_hammer(id)
			menu_destroy(menu);
			return PLUGIN_HANDLED
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED
}

public give_combat(id)
{
	g_knife_combat[id] = true	
	g_knife_strong[id] = false
	g_knife_axe[id] = false	
	g_knife_katana[id] = false	
	g_knife_hammer[id] = false
	g_hasSpeed[id] =  true
	g_WasShowed[id] = true

	engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_NORM)
}

public give_strong(id)
{
	g_knife_combat[id] = false	
	g_knife_strong[id] = true	
	g_knife_axe[id] = false
	g_knife_katana[id] = false	
	g_knife_hammer[id] = false
	g_hasSpeed[id] = true
	g_WasShowed[id] = true

	engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_NORM)
}

public give_axe(id)
{
	g_knife_combat[id] = false	
	g_knife_strong[id] = false	
	g_knife_axe[id] = true
	g_knife_katana[id] = false	
	g_knife_hammer[id] = false
	g_hasSpeed[id] = true
	g_WasShowed[id] = true

	engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_NORM)
}

public give_katana(id)
{
	g_knife_combat[id] = false	
	g_knife_strong[id] = false	
	g_knife_axe[id] = false
	g_knife_katana[id] = true	
	g_knife_hammer[id] = false
	g_hasSpeed[id] = true
	g_WasShowed[id] = true

	engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_NORM)
}


public give_hammer(id)
{
	if (get_user_flags(id) & VIP)
	{
		g_knife_combat[id] = false	
		g_knife_strong[id] = false	
		g_knife_axe[id] = false
		g_knife_katana[id] = false
		g_knife_hammer[id] = true
		g_hasSpeed[id] =  true
		g_WasShowed[id] = true

		engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_NORM)
	}
	else 
	{
		client_cmd(id, "/knife")
		g_WasShowed[id] = true
	}
}

public checkWeapon(id)
{
	new plrWeapId
    
	plrWeapId = get_user_weapon(id)
    
	if (plrWeapId == CSW_KNIFE && (g_knife_combat[id] || g_knife_strong[id] || g_knife_axe[id] || g_knife_katana[id] || g_knife_hammer[id]))
	{
		checkModel(id)
	}
}

public checkModel(id)
{
	if (zp_get_user_zombie(id))
		return PLUGIN_HANDLED
    
	if (g_knife_combat[id])
	{
		set_pev(id, pev_viewmodel2, combat_v_model)
		set_pev(id, pev_weaponmodel2, combat_p_model)
	}

	if (g_knife_strong[id])
	{
		set_pev(id, pev_viewmodel2, strong_v_model)
		set_pev(id, pev_weaponmodel2, strong_p_model)
	}

	if (g_knife_axe[id])
	{
		set_pev(id, pev_viewmodel2, axe_v_model)
		set_pev(id, pev_weaponmodel2, axe_p_model)
	}

	if (g_knife_katana[id])
	{
		set_pev(id, pev_viewmodel2, katana_v_model)
		set_pev(id, pev_weaponmodel2, katana_p_model)
	}

	if (g_knife_hammer[id])
	{
		set_pev(id, pev_viewmodel2, hammer_v_model)
		set_pev(id, pev_weaponmodel2, hammer_p_model)
	}
	return PLUGIN_HANDLED
}

public fw_EmitSound(id, channel, const sound[])
{
	if(!is_user_alive(id) || zp_get_user_zombie(id))
		return FMRES_IGNORED
        
	for(new i = 0; i < sizeof combat_sounds; i++) 
	for(new i = 0; i < sizeof strong_sounds; i++)
	for(new i = 0; i < sizeof axe_sounds; i++)
	for(new i = 0; i < sizeof katana_sounds; i++)
	for(new i = 0; i < sizeof hammer_sounds; i++)
	{
		if(equal(sound, oldknife_sounds[i]))
		{
			if (g_knife_combat[id])
			{
				emit_sound(id, channel, combat_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
				return FMRES_SUPERCEDE
			}
			if (g_knife_strong[id])
			{
				emit_sound(id, channel, strong_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
				return FMRES_SUPERCEDE
			}
			if (g_knife_axe[id])
			{
				emit_sound(id, channel, axe_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
				return FMRES_SUPERCEDE
			}
			if (g_knife_katana[id])
			{
				emit_sound(id, channel, katana_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
				return FMRES_SUPERCEDE
			}
			if (g_knife_hammer[id])
			{
				emit_sound(id, channel, hammer_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
				return FMRES_SUPERCEDE
			}
			if (!g_knife_combat[id] || !g_knife_strong[id] || !g_knife_axe[id] || !g_knife_katana[id] || !g_knife_hammer[id])
			{
				emit_sound(id, channel, oldknife_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
				return FMRES_SUPERCEDE
			}
		}
	}
	return FMRES_IGNORED
}

public message_DeathMsg(msg_id, msg_dest, id)
{
	static szTruncatedWeapon[33], iattacker, ivictim
	
	get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
	
	iattacker = get_msg_arg_int(1)
	ivictim = get_msg_arg_int(2)
	
	if(!is_user_connected(iattacker) || iattacker == ivictim)
		return PLUGIN_CONTINUE

	if (!zp_get_user_zombie(iattacker))
	{
		if(equal(szTruncatedWeapon, "knife") && get_user_weapon(iattacker) == CSW_KNIFE)
		{
			if(g_knife_combat[iattacker])
				set_msg_arg_string(4, "Combat knife")
		}
	
		if(equal(szTruncatedWeapon, "knife") && get_user_weapon(iattacker) == CSW_KNIFE)
		{
			if(g_knife_strong[iattacker])
				set_msg_arg_string(4, "Strong knife")
		}

		if(equal(szTruncatedWeapon, "knife") && get_user_weapon(iattacker) == CSW_KNIFE)
		{
			if(g_knife_axe[iattacker])
				set_msg_arg_string(4, "Axe knife")
		}

		if(equal(szTruncatedWeapon, "knife") && get_user_weapon(iattacker) == CSW_KNIFE)
		{
			if(g_knife_katana[iattacker])
				set_msg_arg_string(4, "Katana knife")
		}

		if(equal(szTruncatedWeapon, "knife") && get_user_weapon(iattacker) == CSW_KNIFE)
		{
			if(g_knife_hammer[iattacker])
				set_msg_arg_string(4, "Ice knife")
		}
	}
	return PLUGIN_CONTINUE
}

stock print_col_chat(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, "!t", "^3"); // Team 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, SayText, _, players[i]);  
                		write_byte(players[i]);  
                		write_string(msg);  
                		message_end();  
            		}  
        	}  
    	}  
}   

public fw_PlayerPreThink(id)
{
	if(!is_user_alive(id) || zp_get_user_zombie(id))
		return FMRES_IGNORED

	new temp[2], weapon = get_user_weapon(id, temp[0], temp[1])

	if (weapon == CSW_KNIFE && g_knife_combat[id])
	{
		g_hasSpeed[id] = true
		set_pev(id, pev_maxspeed, get_pcvar_float(cvar_knife_combat_spd))
	}

	if(weapon == CSW_KNIFE && g_knife_combat[id])        
		if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))
		{
			new flags = pev(id, pev_flags)
			new waterlvl = pev(id, pev_waterlevel)
			
			if (!(flags & FL_ONGROUND))
				return FMRES_IGNORED

			if (flags & FL_WATERJUMP)
				return FMRES_IGNORED

			if (waterlvl > 1)
				return FMRES_IGNORED
			
			new Float:fVelocity[3]
			pev(id, pev_velocity, fVelocity)
			
			fVelocity[2] += get_pcvar_num(cvar_knife_combat_jump)
			
			set_pev(id, pev_velocity, fVelocity)
			set_pev(id, pev_gaitsequence, 6)
		}
	if (weapon == CSW_KNIFE && g_knife_strong[id])
	{
		g_hasSpeed[id] = true
		set_pev(id, pev_maxspeed, get_pcvar_float(cvar_knife_strong_spd))

		if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))
		{
			new flags = pev(id, pev_flags)
			new waterlvl = pev(id, pev_waterlevel)
			
			if (!(flags & FL_ONGROUND))
				return FMRES_IGNORED

			if (flags & FL_WATERJUMP)
				return FMRES_IGNORED

			if (waterlvl > 1)
				return FMRES_IGNORED
			
			new Float:fVelocity[3]
			pev(id, pev_velocity, fVelocity)
			
			fVelocity[2] += get_pcvar_num(cvar_knife_strong_jump)
			
			set_pev(id, pev_velocity, fVelocity)
			set_pev(id, pev_gaitsequence, 6)
		}
	}
	if (weapon == CSW_KNIFE && g_knife_axe[id])
	{
		g_hasSpeed[id] = true
		set_pev(id, pev_maxspeed, get_pcvar_float(cvar_knife_axe_spd))

		if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))
		{
			new flags = pev(id, pev_flags)
			new waterlvl = pev(id, pev_waterlevel)
			
			if (!(flags & FL_ONGROUND))
				return FMRES_IGNORED

			if (flags & FL_WATERJUMP)
				return FMRES_IGNORED

			if (waterlvl > 1)
				return FMRES_IGNORED
			
			new Float:fVelocity[3]
			pev(id, pev_velocity, fVelocity)
			
			fVelocity[2] += get_pcvar_num(cvar_knife_axe_jump)
			
			set_pev(id, pev_velocity, fVelocity)
			set_pev(id, pev_gaitsequence, 6)
		}
	}
	if (weapon == CSW_KNIFE && g_knife_katana[id])
	{
		g_hasSpeed[id] = true
		set_pev(id, pev_maxspeed, get_pcvar_float(cvar_knife_katana_spd))

		if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))
		{
			new flags = pev(id, pev_flags)
			new waterlvl = pev(id, pev_waterlevel)
			
			if (!(flags & FL_ONGROUND))
				return FMRES_IGNORED

			if (flags & FL_WATERJUMP)
				return FMRES_IGNORED

			if (waterlvl > 1)
				return FMRES_IGNORED
			
			new Float:fVelocity[3]
			pev(id, pev_velocity, fVelocity)
			
			fVelocity[2] += get_pcvar_num(cvar_knife_katana_jump)
			
			set_pev(id, pev_velocity, fVelocity)
			set_pev(id, pev_gaitsequence, 6)
		}
	}
	if (weapon == CSW_KNIFE && g_knife_hammer[id])
	{
		g_hasSpeed[id] = true
		set_pev(id, pev_maxspeed, get_pcvar_float(cvar_knife_hammer_spd))

		if ((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_oldbuttons) & IN_JUMP))
		{
			new flags = pev(id, pev_flags)
			new waterlvl = pev(id, pev_waterlevel)
			
			if (!(flags & FL_ONGROUND))
				return FMRES_IGNORED

			if (flags & FL_WATERJUMP)
				return FMRES_IGNORED

			if (waterlvl > 1)
				return FMRES_IGNORED
			
			new Float:fVelocity[3]
			pev(id, pev_velocity, fVelocity)
			
			fVelocity[2] += get_pcvar_num(cvar_knife_hammer_jump)
			
			set_pev(id, pev_velocity, fVelocity)
			set_pev(id, pev_gaitsequence, 6)
		}
	}
	return FMRES_IGNORED
}  

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
	if(!is_user_connected(attacker))
		return HAM_IGNORED
	
	if(zp_get_user_zombie(attacker))
		return HAM_IGNORED

	new weapon = get_user_weapon(attacker)

	if (weapon == CSW_KNIFE && g_knife_combat[attacker])
	{	
		SetHamParamFloat(4, damage * get_pcvar_float(cvar_knife_combat_dmg))
	}
	if (weapon == CSW_KNIFE && g_knife_strong[attacker])
	{	
		SetHamParamFloat(4, damage * get_pcvar_float(cvar_knife_strong_dmg))
	}
	if (weapon == CSW_KNIFE && g_knife_axe[attacker])
	{	
		SetHamParamFloat(4, damage * get_pcvar_float(cvar_knife_axe_dmg))
	}
	if (weapon == CSW_KNIFE && g_knife_katana[attacker])
	{	
		SetHamParamFloat(4, damage * get_pcvar_float(cvar_knife_katana_dmg))
	}
		
	if (weapon == CSW_KNIFE && g_knife_hammer[attacker])
	{	 
		SetHamParamFloat(4, damage * get_pcvar_float(cvar_knife_hammer_dmg))
	}

	return HAM_IGNORED
}

public fw_Knife_SecondaryAttack_Post(knife) 
{     
    	static id 
    	id = get_pdata_cbase(knife, m_pPlayer, 4) 

    	if(zp_get_user_zombie(id))
		return HAM_IGNORED
    
    	if(is_user_connected(id) && g_knife_combat[id]) 
    	{ 
        	static Float:flRate 
        	flRate = get_pcvar_float(cvar_knife_combat_spd_attack2) 
         
        	set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4) 
        	set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4) 
        	set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4) 
    	} 
 
    	if(is_user_connected(id) && g_knife_strong[id]) 
    	{ 
        	static Float:flRate 
        	flRate = get_pcvar_float(cvar_knife_strong_spd_attack2) 
        	 
        	set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4) 
        	set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4) 
        	set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4) 
    	} 

    	if(is_user_connected(id) && g_knife_axe[id]) 
    	{ 
        	static Float:flRate 
        	flRate = get_pcvar_float(cvar_knife_axe_spd_attack2) 
        		 
        	set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4) 
        	set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4) 
        	set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4) 
    	} 

    	if(is_user_connected(id) && g_knife_katana[id]) 
    	{ 
        	static Float:flRate 
        	flRate = get_pcvar_float(cvar_knife_katana_spd_attack2) 
        		 
        	set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4) 
        	set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4) 
        	set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4) 
    	} 

    	if(is_user_connected(id) && g_knife_hammer[id]) 
    	{ 
        	static Float:flRate 
        	flRate = get_pcvar_float(cvar_hammer_spd_attack2) 
        	 
        	set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4) 
        	set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4) 
        	set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4) 
    	} 	
   
    	return HAM_IGNORED 
} 

public event_Damage(id)
{
	new weapon , attacker = get_user_attacker(id , weapon);

	if(!is_user_alive(attacker))
		return PLUGIN_CONTINUE;

	if(weapon == CSW_KNIFE && g_knife_combat[attacker])
	{
		new Float:vec[3];
		new Float:oldvelo[3];
		get_user_velocity(id, oldvelo);
		create_velocity_vector(id , attacker , vec);
		vec[0] += oldvelo[0];
		vec[1] += oldvelo[1];
		set_user_velocity(id , vec);
	}

	if(weapon == CSW_KNIFE && g_knife_strong[attacker])
	{
		new Float:vec[3];
		new Float:oldvelo[3];
		get_user_velocity(id, oldvelo);
		create_velocity_vector(id , attacker , vec);
		vec[0] += oldvelo[0];
		vec[1] += oldvelo[1];
		set_user_velocity(id , vec);
	}

	if(weapon == CSW_KNIFE && g_knife_axe[attacker])
	{
		new Float:vec[3];
		new Float:oldvelo[3];
		get_user_velocity(id, oldvelo);
		create_velocity_vector(id , attacker , vec);
		vec[0] += oldvelo[0];
		vec[1] += oldvelo[1];
		set_user_velocity(id , vec);
	}

	if(weapon == CSW_KNIFE && g_knife_katana[attacker])
	{
		new Float:vec[3];
		new Float:oldvelo[3];
		get_user_velocity(id, oldvelo);
		create_velocity_vector(id , attacker , vec);
		vec[0] += oldvelo[0];
		vec[1] += oldvelo[1];
		set_user_velocity(id , vec);
	}

	if(weapon == CSW_KNIFE && g_knife_hammer[attacker])
	{
		new Float:vec[3];
		new Float:oldvelo[3];
		get_user_velocity(id, oldvelo);
		create_velocity_vector(id , attacker , vec);
		vec[0] += oldvelo[0];
		vec[1] += oldvelo[1];
		set_user_velocity(id , vec);
	}

	return PLUGIN_CONTINUE;
}

stock create_velocity_vector(victim,attacker,Float:velocity[3])
{
	if(!zp_get_user_zombie(victim) || !is_user_alive(attacker))
		return 0;

	new Float:vicorigin[3];
	new Float:attorigin[3];
	entity_get_vector(victim   , EV_VEC_origin , vicorigin);
	entity_get_vector(attacker , EV_VEC_origin , attorigin);

	new Float:origin2[3]
	origin2[0] = vicorigin[0] - attorigin[0];
	origin2[1] = vicorigin[1] - attorigin[1];

	new Float:largestnum = 0.0;

	if(floatabs(origin2[0])>largestnum) largestnum = floatabs(origin2[0]);
	if(floatabs(origin2[1])>largestnum) largestnum = floatabs(origin2[1]);

	origin2[0] /= largestnum;
	origin2[1] /= largestnum;

	if (g_knife_combat[attacker])
	{
		velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_combat_knock) * 3000) ) / get_entity_distance(victim , attacker);
		velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_combat_knock) * 3000) ) / get_entity_distance(victim , attacker);
	}

	if (g_knife_strong[attacker])
	{
		velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_strong_knock) * 3000) ) / get_entity_distance(victim , attacker);
		velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_strong_knock) * 3000) ) / get_entity_distance(victim , attacker);
	}

	if (g_knife_axe[attacker])
	{
		velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_axe_knock) * 3000) ) / get_entity_distance(victim , attacker);
		velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_axe_knock) * 3000) ) / get_entity_distance(victim , attacker);
	}

	if (g_knife_katana[attacker])
	{
		velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_katana_knock) * 3000) ) / get_entity_distance(victim , attacker);
		velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_katana_knock) * 3000) ) / get_entity_distance(victim , attacker);
	}

	if (g_knife_hammer[attacker])
	{
		velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knife_hammer_knock) * 3000) ) / get_entity_distance(victim , attacker);
		velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knife_hammer_knock) * 3000) ) / get_entity_distance(victim , attacker);
	}

	if(velocity[0] <= 20.0 || velocity[1] <= 20.0)
		velocity[2] = random_float(200.0 , 275.0);

	return 1;
}

public client_putinserver(id)
{
	switch(random_num(0, 0))
	{
		case 0:
		{
			g_knife_combat[id] = true
			g_hasSpeed[id] = true
		}

	}
}
strangeguy is offline
 


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 05:25.


Powered by vBulletin®
Copyright ©2000 - 2020, vBulletin Solutions, Inc.
Theme made by Freecode