PHP Code:
#include <left4dhooks>
public Action L4D_OnGrabWithTongue(int victim, int attacker) {
return Plugin_Handled;
}
public Action L4D_OnPouncedOnSurvivor(int victim, int attacker) {
return Plugin_Handled;
}
public Action L4D2_OnJockeyRide(int victim, int attacker) {
return Plugin_Handled;
}
public Action L4D2_OnStartCarryingVictim(int victim, int attacker) {
return Plugin_Handled;
}
public Action L4D2_OnPummelVictim(int attacker, int victim) {
// from "left4dhooks_test.sp"
DataPack pack = new DataPack();
RequestFrame(OnPummelTeleport, pack);
pack.WriteCell(GetClientUserId(victim));
pack.WriteCell(GetClientUserId(attacker));
// To block the stumble animation, uncomment and use the following 2 lines:
AnimHookEnable(victim, OnPummelOnAnimPre, INVALID_FUNCTION);
CreateTimer(0.3, Timer_OnPummelResetAnim, GetClientUserId(victim));
return Plugin_Handled;
}
// To fix getting stuck use this:
void OnPummelTeleport(DataPack pack) {
pack.Reset();
int victim = pack.ReadCell();
int attacker = pack.ReadCell();
delete pack;
victim = GetClientOfUserId(victim);
if (!victim || !IsClientInGame(victim))
return;
attacker = GetClientOfUserId(attacker);
if (!attacker || !IsClientInGame(attacker))
return;
SetVariantString("!activator");
AcceptEntityInput(victim, "SetParent", attacker);
TeleportEntity(victim, view_as<float>({50.0, 0.0, 0.0}), NULL_VECTOR, NULL_VECTOR);
AcceptEntityInput(victim, "ClearParent");
}
// To block the stumble animation use the next two functions:
Action OnPummelOnAnimPre(int client, int &anim) {
if (anim == L4D2_ACT_TERROR_SLAMMED_WALL || anim == L4D2_ACT_TERROR_SLAMMED_GROUND) {
anim = L4D2_ACT_STAND;
return Plugin_Changed;
}
return Plugin_Continue;
}
Action Timer_OnPummelResetAnim(Handle timer, int client) {
if ((client = GetClientOfUserId(client)))
AnimHookDisable(client, OnPummelOnAnimPre);
return Plugin_Continue;
}