GetPushawayEnts
0x00470e10 · 632 bytes · __cdecl
_Z15GetPushawayEntsP20CBaseCombatCharacterPP11CBaseEntityifiP19CPushAwayEnumerator
Decompiled
undefined (6 params)
/* GetPushawayEnts(CBaseCombatCharacter*, CBaseEntity**, int, float, int, CPushAwayEnumerator*) */
undefined4
GetPushawayEnts(CBaseCombatCharacter *param_1,CBaseEntity **param_2,int param_3,float param_4,
int param_5,CPushAwayEnumerator *param_6)
{
float fVar1;
float fVar2;
float fVar3;
float fVar4;
float fVar5;
float fVar6;
int *piVar7;
float *pfVar8;
undefined4 uVar9;
undefined4 *puVar10;
float local_5c;
float local_58;
float local_54;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
float local_3c;
float local_38;
float local_34;
float local_2c;
float local_28;
float local_24;
undefined4 local_1c;
undefined1 local_18;
undefined1 local_17;
piVar7 = (int *)(**(code **)(*(int *)param_1 + 0x10))(param_1);
pfVar8 = (float *)(**(code **)(*piVar7 + 8))(piVar7);
fVar1 = *pfVar8;
fVar2 = pfVar8[2];
fVar3 = pfVar8[1];
piVar7 = (int *)(**(code **)(*(int *)param_1 + 0x10))(param_1);
pfVar8 = (float *)(**(code **)(*piVar7 + 4))(piVar7);
fVar4 = *pfVar8;
fVar5 = pfVar8[1];
fVar6 = pfVar8[2];
if (((byte)param_1[0x14d] & 8) != 0) {
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)param_1);
if (((byte)param_1[0x14d] & 8) != 0) {
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)param_1);
}
}
local_4c = 0;
local_48 = 0;
local_17 = 0;
local_44 = 0;
local_1c = 0;
local_2c = ((fVar1 + param_4) - (fVar4 - param_4)) * 0.5;
local_24 = ((param_4 + fVar2) - (fVar6 - param_4)) * 0.5;
local_3c = ((fVar4 - param_4) + fVar1 + param_4) * 0.5;
local_28 = ((fVar3 + param_4) - (fVar5 - param_4)) * 0.5;
local_38 = ((fVar5 - param_4) + fVar3 + param_4) * 0.5;
local_34 = ((fVar6 - param_4) + param_4 + fVar2) * 0.5;
local_5c = *(float *)(param_1 + 0x2e0) + local_3c;
local_3c = -local_3c;
local_58 = *(float *)(param_1 + 0x2e4) + local_38;
local_38 = -local_38;
local_54 = *(float *)(param_1 + 0x2e8) + local_34;
local_34 = -local_34;
local_18 = local_24 * local_24 + local_2c * local_2c + local_28 * local_28 < 1e-06;
if (param_6 == (CPushAwayEnumerator *)0x0) {
puVar10 = operator_new(0x10);
*puVar10 = &PTR_EnumElement_00c17618;
puVar10[2] = 0;
puVar10[1] = param_2;
puVar10[3] = param_3;
(**(code **)(*partition + 0x40))(partition,param_5,&local_5c,0,puVar10);
uVar9 = puVar10[2];
operator_delete(puVar10);
}
else {
(**(code **)(*partition + 0x40))(partition,param_5,&local_5c,0,param_6);
uVar9 = *(undefined4 *)(param_6 + 8);
}
return uVar9;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.