ForEachActor<FriendThreatenedScan>
0x00a0b8d0 · 2346 bytes · __cdecl
_Z12ForEachActorI20FriendThreatenedScanEbRT_
Decompiled
bool (1 param)
/* bool ForEachActor<FriendThreatenedScan>(FriendThreatenedScan&) */
bool ForEachActor<FriendThreatenedScan>(FriendThreatenedScan *param_1)
{
code *pcVar1;
char cVar2;
int *piVar3;
int iVar4;
uint uVar5;
float *pfVar6;
int iVar7;
int *piVar8;
int *piVar9;
longdouble lVar10;
undefined1 *puVar11;
undefined1 *puVar12;
int iStack_144;
float local_140;
int local_13c [3];
float local_130;
int local_12c;
float local_128 [3];
float *local_11c;
undefined1 *local_118;
undefined1 *local_114;
float local_110;
float local_100;
float local_fc;
float local_f8;
float local_f4;
float local_f0;
float local_ec;
float local_e8;
float local_e4;
float local_e0;
undefined **local_dc [4];
float local_cc;
float local_c8;
float local_c4;
float local_bc;
float local_b8;
float local_b4;
undefined4 local_ac;
undefined4 local_a8;
undefined4 local_a4;
undefined4 local_9c;
undefined4 local_98;
undefined4 local_94;
undefined4 local_8c;
undefined1 local_88;
undefined1 local_87;
undefined1 local_70 [12];
undefined1 local_64 [32];
float local_44;
char local_3a;
char local_39;
iVar7 = 1;
piVar8 = local_13c;
piVar9 = local_13c;
if (0 < *(int *)(gpGlobals + 0x14)) {
do {
*piVar9 = iVar7;
piVar9[-1] = 0xa0b8f8;
piVar3 = (int *)UTIL_PlayerByIndex(*piVar9);
piVar8 = piVar9;
if (((piVar3 != (int *)0x0) && (piVar3[0xc] != 0)) &&
(piVar3[0xc] - *(int *)(gpGlobals + 0x58) >> 4 != 0)) {
iVar4 = *piVar3;
*piVar9 = (int)piVar3;
pcVar1 = *(code **)(iVar4 + 0x16c);
piVar9[-1] = 0xa0b920;
cVar2 = (*pcVar1)();
if ((cVar2 != '\0') && (piVar3[0x7db] != 2)) {
iVar4 = *piVar3;
*piVar9 = (int)piVar3;
pcVar1 = *(code **)(iVar4 + 0x148);
piVar9[-1] = 0xa0b938;
iVar4 = (*pcVar1)();
if (iVar4 == 0) {
iVar4 = *piVar3;
*piVar9 = (int)piVar3;
pcVar1 = *(code **)(iVar4 + 300);
piVar9[-1] = 0xa0be00;
cVar2 = (*pcVar1)();
if (cVar2 != '\0') {
*piVar9 = (int)piVar3;
piVar9[-1] = 0xa0be10;
iVar4 = CBaseEntity::GetTeamNumber((CBaseEntity *)*piVar9);
if (iVar4 == 3) {
iVar4 = *piVar3;
*piVar9 = (int)piVar3;
pcVar1 = *(code **)(iVar4 + 0x16c);
piVar9[-1] = 0xa0be24;
cVar2 = (*pcVar1)();
if (cVar2 != '\0') {
iVar4 = *piVar3;
*piVar9 = (int)piVar3;
pcVar1 = *(code **)(iVar4 + 0x558);
piVar9[-1] = 0xa0c1f3;
cVar2 = (*pcVar1)();
if (cVar2 != '\0') goto LAB_00a0b946;
}
if ((*(byte *)((int)piVar3 + 0x14d) & 8) != 0) {
*piVar9 = (int)piVar3;
piVar9[-1] = 0xa0be3d;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*piVar9);
}
iVar4 = *(int *)(param_1 + 4);
if ((*(byte *)(iVar4 + 0x14d) & 8) != 0) {
*piVar9 = iVar4;
piVar9[-1] = 0xa0c208;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*piVar9);
}
local_100 = *(float *)(iVar4 + 0x2e0) - (float)piVar3[0xb8];
local_fc = *(float *)(iVar4 + 0x2e4) - (float)piVar3[0xb9];
local_f8 = *(float *)(iVar4 + 0x2e8) - (float)piVar3[0xba];
*piVar9 = (int)&local_100;
piVar9[-1] = 0xa0bea6;
lVar10 = (longdouble)VectorNormalize((Vector *)*piVar9);
local_110 = (float)lVar10;
if ((local_110 < *(float *)(ThreatRange._28_4_ + 0x2c) ||
local_110 == *(float *)(ThreatRange._28_4_ + 0x2c)) &&
(local_110 < *(float *)(param_1 + 0xc) || local_110 == *(float *)(param_1 + 0xc))
) {
if ((*(byte *)((int)piVar3 + 0x14d) & 0x10) != 0) {
*piVar9 = (int)piVar3;
piVar9[-1] = 0xa0bee1;
CBaseEntity::CalcAbsoluteVelocity((CBaseEntity *)*piVar9);
}
local_f4 = (float)piVar3[0x9d];
local_f0 = (float)piVar3[0x9e];
local_ec = (float)piVar3[0x9f];
*piVar9 = (int)&local_f4;
piVar9[-1] = 0xa0bf13;
lVar10 = (longdouble)VectorNormalize((Vector *)*piVar9);
local_114 = (undefined1 *)(float)lVar10;
if ((75.0 < (float)local_114) &&
(0.7071 < local_f0 * local_fc + local_f4 * local_100 + local_ec * local_f8)) {
piVar9[3] = 0;
piVar9[2] = 0;
piVar9[1] = *(int *)param_1;
*piVar9 = (int)local_dc;
piVar9[-1] = 0xa0bf9a;
CTraceFilterSimple::CTraceFilterSimple
((CTraceFilterSimple *)*piVar9,(IHandleEntity *)piVar9[1],piVar9[2],
(_func_bool_IHandleEntity_ptr_int *)piVar9[3]);
local_dc[0] = &PTR_ShouldHitEntity_00c54558;
iVar4 = *piVar3;
*piVar9 = (int)piVar3;
pcVar1 = *(code **)(iVar4 + 0x288);
piVar9[-1] = 0xa0bfaf;
pfVar6 = (float *)(*pcVar1)();
iVar4 = **(int **)param_1;
piVar9[1] = (int)*(int **)param_1;
*piVar9 = (int)&local_e8;
pcVar1 = *(code **)(iVar4 + 0x234);
piVar9[-1] = 0xa0bfcb;
(*pcVar1)();
local_114 = local_70;
local_bc = *pfVar6 - local_e8;
local_b8 = pfVar6[1] - local_e4;
local_88 = 1;
local_8c = 0;
local_b4 = pfVar6[2] - local_e0;
local_cc = local_e8;
local_c8 = local_e4;
local_c4 = local_e0;
local_94 = 0;
local_98 = 0;
local_9c = 0;
local_87 = local_b8 * local_b8 + local_bc * local_bc + local_b4 * local_b4 !=
0.0;
local_a4 = 0;
local_a8 = 0;
local_ac = 0;
local_118 = (undefined1 *)0x0;
iVar4 = *enginetrace;
piVar9[3] = (int)local_114;
piVar9[2] = (int)local_dc;
piVar9[1] = 0x2006041;
*piVar9 = (int)&local_cc;
piVar9[-1] = (int)enginetrace;
pcVar1 = *(code **)(iVar4 + 0x14);
piVar9[-2] = 0xa0c0d1;
(*pcVar1)();
puVar11 = local_118;
if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
piVar9[5] = -0x40800000;
piVar9[4] = 1;
piVar9[3] = 0;
piVar9[2] = 0;
piVar9[1] = 0xff;
*piVar9 = (int)local_64;
piVar9[-1] = (int)local_114;
local_114 = local_118;
piVar9[-2] = 0xa0c12b;
DebugDrawLine((Vector *)piVar9[-1],(Vector *)*piVar9,piVar9[1],piVar9[2],
piVar9[3],SUB41(piVar9[4],0),(float)piVar9[5]);
puVar11 = local_114;
}
piVar8 = piVar9 + -1;
if (((1.0 <= local_44) && (piVar8 = piVar9 + -1, local_3a == '\0')) &&
(piVar8 = piVar9 + -1, local_39 == '\0')) {
*(int **)(param_1 + 8) = piVar3;
*(float *)(param_1 + 0xc) = local_110;
piVar9[2] = 0;
piVar9[1] = 0;
*piVar9 = (int)&local_cc;
piVar9[-1] = *(undefined4 *)(param_1 + 4);
piVar9[-2] = 0xa0c193;
local_114 = puVar11;
CBasePlayer::EyeVectors
((CBasePlayer *)piVar9[-1],(Vector *)*piVar9,(Vector *)piVar9[1],
(Vector *)piVar9[2]);
param_1[0x10] =
(FriendThreatenedScan)
((float)local_114 <
local_c8 * local_fc + local_cc * local_100 + local_c4 * local_f8);
piVar8 = piVar9 + -1;
}
}
}
}
}
}
}
}
LAB_00a0b946:
iVar7 = iVar7 + 1;
piVar9 = piVar8;
} while (iVar7 <= *(int *)(gpGlobals + 0x14));
}
*(undefined4 *)((int)piVar8 + -4) = 0xa0b953;
local_110 = (float)TheNextBots();
uVar5 = (uint)*(ushort *)((int)local_110 + 0x10);
if (uVar5 != 0xffff) {
iVar7 = *(int *)((int)local_110 + 4);
do {
piVar9 = *(int **)(iVar7 + uVar5 * 8);
iVar7 = *piVar9;
*piVar8 = (int)piVar9;
pcVar1 = *(code **)(iVar7 + 0xb4);
piVar8[-1] = 0xa0b9a6;
piVar3 = (int *)(*pcVar1)();
iVar7 = *piVar3;
*piVar8 = (int)piVar3;
pcVar1 = *(code **)(iVar7 + 300);
piVar8[-1] = 0xa0b9b3;
cVar2 = (*pcVar1)();
piVar9 = piVar8;
if (cVar2 != '\0') {
*piVar8 = (int)piVar3;
piVar8[-1] = 0xa0b9bf;
iVar7 = CBaseEntity::GetTeamNumber((CBaseEntity *)*piVar8);
if (iVar7 == 3) {
iVar7 = *piVar3;
*piVar8 = (int)piVar3;
pcVar1 = *(code **)(iVar7 + 0x16c);
piVar8[-1] = 0xa0b9cf;
cVar2 = (*pcVar1)();
if (cVar2 != '\0') {
iVar7 = *piVar3;
*piVar8 = (int)piVar3;
pcVar1 = *(code **)(iVar7 + 0x558);
piVar8[-1] = 0xa0b9de;
cVar2 = (*pcVar1)();
if (cVar2 != '\0') goto LAB_00a0b978;
}
if ((*(byte *)((int)piVar3 + 0x14d) & 8) != 0) {
*piVar8 = (int)piVar3;
piVar8[-1] = 0xa0b9f3;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*piVar8);
}
iVar7 = *(int *)(param_1 + 4);
if ((*(byte *)(iVar7 + 0x14d) & 8) != 0) {
*piVar8 = iVar7;
piVar8[-1] = 0xa0bdd8;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*piVar8);
}
local_100 = *(float *)(iVar7 + 0x2e0) - (float)piVar3[0xb8];
local_fc = *(float *)(iVar7 + 0x2e4) - (float)piVar3[0xb9];
local_f8 = *(float *)(iVar7 + 0x2e8) - (float)piVar3[0xba];
*piVar8 = (int)&local_100;
piVar8[-1] = 0xa0ba5c;
lVar10 = (longdouble)VectorNormalize((Vector *)*piVar8);
local_114 = (undefined1 *)(float)lVar10;
if (((float)local_114 < *(float *)(ThreatRange._28_4_ + 0x2c) ||
(float)local_114 == *(float *)(ThreatRange._28_4_ + 0x2c)) &&
((float)local_114 < *(float *)(param_1 + 0xc) ||
(float)local_114 == *(float *)(param_1 + 0xc))) {
if ((*(byte *)((int)piVar3 + 0x14d) & 0x10) != 0) {
*piVar8 = (int)piVar3;
piVar8[-1] = 0xa0bde8;
CBaseEntity::CalcAbsoluteVelocity((CBaseEntity *)*piVar8);
}
local_f4 = (float)piVar3[0x9d];
local_f0 = (float)piVar3[0x9e];
local_ec = (float)piVar3[0x9f];
*piVar8 = (int)&local_f4;
piVar8[-1] = 0xa0bacd;
local_118 = local_114;
lVar10 = (longdouble)VectorNormalize((Vector *)*piVar8);
local_114 = (undefined1 *)(float)lVar10;
if ((75.0 < (float)local_114) &&
(0.7071 < local_f0 * local_fc + local_f4 * local_100 + local_ec * local_f8)) {
piVar8[3] = 0;
piVar8[2] = 0;
piVar8[1] = *(int *)param_1;
*piVar8 = (int)local_dc;
piVar8[-1] = 0xa0bb64;
CTraceFilterSimple::CTraceFilterSimple
((CTraceFilterSimple *)*piVar8,(IHandleEntity *)piVar8[1],piVar8[2],
(_func_bool_IHandleEntity_ptr_int *)piVar8[3]);
local_dc[0] = &PTR_ShouldHitEntity_00c54558;
iVar7 = *piVar3;
*piVar8 = (int)piVar3;
pcVar1 = *(code **)(iVar7 + 0x288);
piVar8[-1] = 0xa0bb79;
pfVar6 = (float *)(*pcVar1)();
iVar7 = **(int **)param_1;
piVar8[1] = (int)*(int **)param_1;
*piVar8 = (int)&local_e8;
pcVar1 = *(code **)(iVar7 + 0x234);
piVar8[-1] = 0xa0bb95;
(*pcVar1)();
local_bc = *pfVar6 - local_e8;
local_b8 = pfVar6[1] - local_e4;
local_88 = 1;
local_8c = 0;
local_b4 = pfVar6[2] - local_e0;
local_cc = local_e8;
local_c8 = local_e4;
local_c4 = local_e0;
local_94 = 0;
local_98 = 0;
local_9c = 0;
local_87 = local_b8 * local_b8 + local_bc * local_bc + local_b4 * local_b4 != 0.0;
local_a4 = 0;
local_a8 = 0;
local_ac = 0;
local_114 = (undefined1 *)0x0;
iVar7 = *enginetrace;
piVar8[2] = (int)local_dc;
local_11c = &local_cc;
piVar8[3] = (int)local_70;
piVar8[1] = 0x2006041;
*piVar8 = (int)local_11c;
piVar8[-1] = (int)enginetrace;
pcVar1 = *(code **)(iVar7 + 0x14);
piVar8[-2] = 0xa0bc9b;
(*pcVar1)();
puVar11 = local_118;
puVar12 = local_114;
if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
piVar8[5] = -0x40800000;
piVar8[4] = 1;
piVar8[3] = 0;
piVar8[2] = 0;
piVar8[1] = 0xff;
*piVar8 = (int)local_64;
piVar8[-1] = (int)local_70;
local_118 = local_114;
local_114 = puVar11;
piVar8[-2] = 0xa0bcfe;
DebugDrawLine((Vector *)piVar8[-1],(Vector *)*piVar8,piVar8[1],piVar8[2],piVar8[3],
SUB41(piVar8[4],0),(float)piVar8[5]);
puVar11 = local_114;
puVar12 = local_118;
}
piVar9 = piVar8 + -1;
if (((1.0 <= local_44) && (piVar9 = piVar8 + -1, local_3a == '\0')) &&
(piVar9 = piVar8 + -1, local_39 == '\0')) {
*(undefined1 **)(param_1 + 0xc) = puVar11;
*(int **)(param_1 + 8) = piVar3;
piVar8[2] = 0;
piVar8[1] = 0;
*piVar8 = (int)local_11c;
piVar8[-1] = *(undefined4 *)(param_1 + 4);
piVar8[-2] = 0xa0bd6f;
local_114 = puVar12;
CBasePlayer::EyeVectors
((CBasePlayer *)piVar8[-1],(Vector *)*piVar8,(Vector *)piVar8[1],
(Vector *)piVar8[2]);
param_1[0x10] =
(FriendThreatenedScan)
((float)local_114 <
local_c8 * local_fc + local_cc * local_100 + local_c4 * local_f8);
piVar9 = piVar8 + -1;
}
}
}
}
}
LAB_00a0b978:
iVar7 = *(int *)((int)local_110 + 4);
uVar5 = (uint)*(ushort *)(iVar7 + 6 + uVar5 * 8);
piVar8 = piVar9;
} while (uVar5 != 0xffff);
}
return true;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)
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.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.