This is how I discard players when hit in the body or close to it, such as under the feet.
PHP Code:
#include <sdktools>
new Handle:cvarRadius;
new Handle:cvarMagnitude;
int g_sprite = 0;
...
public OnPluginStart()
{
cvarRadius = CreateConVar("sm_rocketguns_radius", "150", "Radius of the explosions.", 0, true, 150.0, false, _);
cvarMagnitude = CreateConVar("sm_rocketguns_magnitude", "300", "Magnitude of the explosions.", 0, true, 300.0, false, _);
AutoExecConfig(true, "rocket_guns");
HookEvent("bullet_impact", Event_BulletImpact, EventHookMode_Pre);
}
public OnMapStart()
{
g_sprite = PrecacheGeneric("sprites/zerogxplode.spr", true);
}
public Action Event_BulletImpact(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if (!IsClientInGame(client))
return;
new Float:origin[3];
origin[0] = GetEventFloat(event, "x");
origin[1] = GetEventFloat(event, "y");
origin[2] = GetEventFloat(event, "z");
new Float:ClientOrigin[3];
GetClientAbsOrigin(client, ClientOrigin);
char weapon[32];
GetClientWeapon(client, weapon, sizeof(weapon));
if (StrContains("weapon_deagle", weapon) != -1)
{
new radius = GetConVarInt(cvarRadius);
new magnitude = GetConVarInt(cvarMagnitude);
char s_radius[32];
char s_magnitude[32];
IntToString(radius, s_radius, sizeof(s_radius));
IntToString(magnitude, s_magnitude, sizeof(s_magnitude));
new entity = CreateEntityByName("env_explosion");
DispatchKeyValueVector(entity, "origin", origin);
DispatchKeyValue(entity, "imagnitude", s_magnitude);
DispatchKeyValue(entity, "iradiusoverride", s_radius);
DispatchKeyValue(entity, "spawnflags", "0");
SetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity", client);
DispatchSpawn(entity);
AcceptEntityInput(entity, "Explode");
TE_SetupExplosion(origin, g_sprite, 1.0, 10, TE_EXPLFLAG_NONE, radius, magnitude);
TE_SendToAll();
}
}
Here with these parameters
sm_rocketguns_magnitude "300"
sm_rocketguns_radius "150"
or
sm_rocketguns_magnitude "1300"
sm_rocketguns_radius "1150."
Players are very weakly repelled, but their bodies after death fly away at breakneck speed.
Is there any other method to repel players when they are hit?