void bypass_TakeDamageEx(int iVictim, int iInflictor, int iAttacker, float fDamage,
int iType, int iWeapon, float vecDamageForce[3], float vecDamagePosition[3])
{
if (!IsValidEntity(iVictim) || !IsValidEdict(iVictim))
ThrowError("Invalid victim entity (%i)", iVictim);
if (!IsValidEntity(iInflictor) || !IsValidEdict(iInflictor))
ThrowError("Invalid inflictor entity (%i)", iInflictor);
if (!IsValidEntity(iAttacker) || !IsValidEdict(iAttacker))
ThrowError("Invalid attacker entity (%i)", iAttacker);
if (!IsValidEntity(iWeapon) || !IsValidEdict(iWeapon))
ThrowError("Invalid weapon entity (%i)", iWeapon);
RunScript("::FindEntityByID(%i).TakeDamageEx(::BypassUtils.FindEntityByID(%i), ::BypassUtils.FindEntityByID(%i), ::BypassUtils.FindEntityByID(%i), Vector(%d,%d,%d), Vector(%d,%d,%d), %.1f, %i)",
iVictim, iInflictor, iAttacker, iWeapon, vecDamageForce[0], vecDamageForce[1], vecDamageForce[2],
vecDamagePosition[0], vecDamagePosition[1], vecDamagePosition[2], fDamage, iType);
}
void bypass_TakeDamage(int iVictim, int iAttacker, float fDamage, int iType)
{
if (!IsValidEntity(iVictim) || !IsValidEdict(iVictim))
ThrowError("Invalid victim entity (%i)", iVictim);
if (!IsValidEntity(iAttacker) || !IsValidEdict(iAttacker))
ThrowError("Invalid attacker entity (%i)", iAttacker);
RunScript("::FindEntityByID(%i).TakeDamage(%.1f, %i, ::BypassUtils.FindEntityByID(%i))", iVictim, fDamage, iType, iAttacker);
}
void RunScript(const char[] arguments, any ...)
{
char vscript[PLATFORM_MAX_PATH];
VFormat(vscript, sizeof(vscript), arguments, 2);
static int iScriptLogic = INVALID_ENT_REFERENCE;
if(iScriptLogic == INVALID_ENT_REFERENCE || !IsValidEntity(iScriptLogic))
{
iScriptLogic = EntIndexToEntRef(CreateEntityByName("logic_script"));
if(iScriptLogic == INVALID_ENT_REFERENCE || !IsValidEntity(iScriptLogic))
LogError("Could not create 'logic_script");
DispatchSpawn(iScriptLogic);
}
SetVariantString(vscript);
AcceptEntityInput(iScriptLogic, "RunScriptCode");
AcceptEntityInput(iScriptLogic, "Kill");
}