Raised This Month: $51 Target: $400
 12% 

Back Stab Damage


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Snake.
Senior Member
Join Date: Jul 2017
Old 04-23-2019 , 08:00   Back Stab Damage
Reply With Quote #1

I need players to get x damage acoording to cvar from back with stab.
Snake. is offline
Send a message via Skype™ to Snake.
RaduAndrei
Junior Member
Join Date: Apr 2019
Old 04-25-2019 , 03:06   Re: Back Stab Damage
Reply With Quote #2

bump
RaduAndrei is offline
Saint Sinner
Senior Member
Join Date: Feb 2016
Old 04-25-2019 , 06:39   Re: Back Stab Damage
Reply With Quote #3

already exists

Code:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

#define fm_get_user_team(%1) get_pdata_int(%1, FM_OFFSET_TEAM)
#define FM_OFFSET_TEAM 114

#define BACKSTAB_ANGLE 93.0 	//Changeable
#define BACKSTAB_MAX_DAMAGE 10.0 //Changeable

new gMaxPlayers;
new bool:gBackStabing[33];

public plugin_init()  
{
	
	register_forward(FM_CmdStart, "Fwd_CmdStart");
	
	RegisterHam(Ham_TakeDamage, "player", "Event_TakeDamage");

        gMaxPlayers = global_get(glb_maxClients);
	
}

public Fwd_CmdStart(id, uc_handle, uc_seed)
{
	if(!is_user_alive(id))
		return FMRES_IGNORED;
	
	static Float:fViewAngles[3], iButton;
	get_uc(uc_handle, UC_ViewAngles, fViewAngles);
	iButton = get_uc(uc_handle, UC_Buttons);
	
	if(((iButton & IN_ATTACK) || (iButton & IN_ATTACK2)))
	{
		static iEnt, Float:fOrigin[3];
		pev(id, pev_origin, fOrigin);
		
		iEnt = fm_trace_target(id, fOrigin, 100);
		
		if(!(1 <= iEnt <= gMaxPlayers))
			return FMRES_IGNORED;
		
		static Float:fTViewAngles[3];
		pev(iEnt, pev_v_angle, fTViewAngles);
		
		static Float:fMinAngle, Float:fMaxAngle;
		fMinAngle = fViewAngles[1] - BACKSTAB_ANGLE;
		fMaxAngle = fViewAngles[1] + BACKSTAB_ANGLE;
		
		if(fMinAngle <= fTViewAngles[1] <= fMaxAngle)
		{
			gBackStabing[id] = true;
		}
		else
		{
			gBackStabing[id] = false;
		}
	}
	return FMRES_IGNORED;
}

public Event_TakeDamage(this, inflictor, attacker, Float:damage, dmgbits)
{
	if(inflictor == 0)
		return HAM_IGNORED;
	
	if(!is_user_alive(attacker) || !gBackStabing[attacker] || (fm_get_user_team(this) == fm_get_user_team(attacker)))
		return HAM_IGNORED;

	if(damage > BACKSTAB_MAX_DAMAGE)
	{
		SetHamParamFloat(4, BACKSTAB_MAX_DAMAGE);
	}
	return HAM_HANDLED;
}


stock fm_trace_target(ignoreent, const Float:start[3], distance)
{
	new Float:fAim[3], Float:end[3];
	velocity_by_aim(ignoreent, distance, fAim);
	
	end[0] = start[0] + fAim[0];
	end[1] = start[1] + fAim[1];
	end[2] = start[2] + fAim[2];
	
	engfunc(EngFunc_TraceLine, start, end, ignoreent == -1 ? 1 : 0, ignoreent, 0);
	
	new ent = get_tr2(0, TR_pHit);
	
	return pev_valid(ent) ? ent : 0;
}
Saint Sinner is offline
Reply



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 17:48.


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