PDA

View Full Version : [TF2] ObjTools


WhiteFalcon
06-30-2020, 15:07
Purpose: Exposes CTakeDamageInfo, CAmmoDefs and some ServerTools.

Download (https://github.com/01Pollux/TF_ObjTools/releases/tag/1.3.2.1).
Natives (https://github.com/01Pollux/TF_ObjTools/blob/master/include/tf_objtools.inc).

Only tested in Windows, since i dont have linux nor tried to compile with it.

Sample:

CTakeDamageInfo:


CTakeDamageInfo first = new CTakeDamageInfo();
first.StoreEnt(hAttacker, attacker);
first.StoreEnt(hInflictor, inflictor);
first.StoreEnt(hWeapon, weapon);

first.StoreVector(vecDamageForce, damageForce);
first.StoreVector(vecDamagePosition, damagePosition);
first.StoreVector(vecReportedPosition, damagePosition);

first.StoreFloat(flDamage, damage);
first.StoreFloat(flBaseDamage, damage);
first.StoreInt(bitsDamageType, damagetype);
first.StoreInt(iDamageCustom, damagecustom);
first.StoreInt(eCritType, kCritType_None);

CTakeDamageInfo copy = new CTakeDamageInfo();
copy.Infos = first.Infos;

PrintToServer("\nAddress:\n"...
"-first: 0x%x - 0x%x\n"...
"-copy: 0x%x - 0x%x\n"
, first, first.Infos, copy, copy.Infos);
delete first;
copy.DeathNotice(victim);
SDKCall(hDeathNotice, victim, copy.Infos, "player_death");
delete copy;



CAmmoDefs:

dump_ammodef
char name[32];
SetEntProp(client, Prop_Data, 139, .element = CAmmoDefs.FindIndex("TF_AMMO_METAL"));
for(int i = 1; i < 7; i++)
{
CAmmoDefs.GetName(i, name, sizeof(name));
PrintToServer("m_AmmoType[%i].pName = %s", i, name);
PrintToServer("m_AmmoType[%i].pFlags = %i", i, CAmmoDefs.GetFlags(i));
PrintToServer("m_AmmoType[%i].pMaxCarry = %i", i, CAmmoDefs.GetMaxCarry(i));
}


ServerTools:


char buffer[64];
PrintToServer("---------------------------");
for(int ent = ServerTools.FirstEntity(); ent != -1; ent = ServerTools.NextEntity(ent))
{
ServerTools.GetKeyValue(ent, "origin", buffer, sizeof(buffer));
PrintToServer("entity: %i at: {%s} ", buffer);
}
PrintToServer("---------------------------");