added, changed and corrected stuff (#1165)
* added, changed and corrected stuff * Add files via upload * reset time should only be displayed on flags apparently carts also have a reset timer that goes to negative values * added flask style to magic spells esp * added "hide invisible" to prevent drawing on invis players * oops these should be aligned * added edibles/lunchboxes support to healthpack esp * gets rid of unneded stuff * changed reset time code to make it look neater * Added more checks to auto strafer Makes it so we don't strafe when we're noclipping, double jumping as scout or in water. This closes https://github.com/nullworks/cathook/issues/1126 and a part of https://github.com/nullworks/cathook/issues/998. * Corrected a small typo in auto pyro * Revert "Add files via upload" This reverts commit f3786b527cd0e8f972091c0960e600786088febc. * spec list attempt #2 hello does this work its my first time using gitkraken * small sandviches, stuff off by default, only 1st person spec is colored ye * yes now objective esp is off by default * Some fixes * Update data/menu/nullifiedcat/visuals/esp.xml * Change colours Co-authored-by: NotAnUser <zhr9z9oc53@inscriptio.in> Co-authored-by: TotallyNotElite <1yourexperiment@protonmail.com> Co-authored-by: TotallyNotElite <38938720+TotallyNotElite@users.noreply.github.com>
This commit is contained in:
parent
e4f196866d
commit
68829d1178
@ -5,7 +5,7 @@
|
|||||||
<AutoVariable width="fill" target="autoreflect.button" label="Reflect button"/>
|
<AutoVariable width="fill" target="autoreflect.button" label="Reflect button"/>
|
||||||
<AutoVariable width="fill" target="autoreflect.idle-only" label="Only reflect when able" tooltip="Don't try to reflect when using primary fire."/>
|
<AutoVariable width="fill" target="autoreflect.idle-only" label="Only reflect when able" tooltip="Don't try to reflect when using primary fire."/>
|
||||||
<AutoVariable width="fill" target="autoreflect.teammate" label="Teammate projectiles" tooltip="Attempt to reflect teammate projectiles."/>
|
<AutoVariable width="fill" target="autoreflect.teammate" label="Teammate projectiles" tooltip="Attempt to reflect teammate projectiles."/>
|
||||||
<AutoVariable width="fill" target="autoreflect.dodgeball" label="Dodgeball mode" tooltip="Disasble vischeck"/>
|
<AutoVariable width="fill" target="autoreflect.dodgeball" label="Dodgeball mode" tooltip="Disable vischeck"/>
|
||||||
<AutoVariable width="fill" target="autoreflect.legit" label="Legit mode" tooltip="Don't move the mouse to reflect. Spectator safe."/>
|
<AutoVariable width="fill" target="autoreflect.legit" label="Legit mode" tooltip="Don't move the mouse to reflect. Spectator safe."/>
|
||||||
</List>
|
</List>
|
||||||
<Box padding="12 6 6 6" name="Targets" width="content" height="content" y="100">
|
<Box padding="12 6 6 6" name="Targets" width="content" height="content" y="100">
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
<AutoVariable width="fill" target="esp.show.teammates" label="Teammate ESP"/>
|
<AutoVariable width="fill" target="esp.show.teammates" label="Teammate ESP"/>
|
||||||
<AutoVariable width="fill" target="esp.show.local" label="ESP on local player" tooltip="Toggles ESP on self."/>
|
<AutoVariable width="fill" target="esp.show.local" label="ESP on local player" tooltip="Toggles ESP on self."/>
|
||||||
<AutoVariable width="fill" target="esp.show.buildings" label="Building ESP"/>
|
<AutoVariable width="fill" target="esp.show.buildings" label="Building ESP"/>
|
||||||
|
<AutoVariable width="fill" target="esp.show.team-buildings" label="Teammate Building ESP"/>
|
||||||
<AutoVariable width="fill" target="esp.item.health" label="Health packs"/>
|
<AutoVariable width="fill" target="esp.item.health" label="Health packs"/>
|
||||||
<AutoVariable width="fill" target="esp.item.ammo" label="Ammo packs"/>
|
<AutoVariable width="fill" target="esp.item.ammo" label="Ammo packs"/>
|
||||||
<AutoVariable width="fill" target="esp.item.enable" label="Enable item ESP"/>
|
<AutoVariable width="fill" target="esp.item.enable" label="Enable item ESP"/>
|
||||||
@ -22,6 +23,7 @@
|
|||||||
<AutoVariable width="fill" target="esp.item.money-red" label="MvM red money" tooltip="Red money is automatically collected."/>
|
<AutoVariable width="fill" target="esp.item.money-red" label="MvM red money" tooltip="Red money is automatically collected."/>
|
||||||
<AutoVariable width="fill" target="esp.item.powerup" label="Mannpower powerups"/>
|
<AutoVariable width="fill" target="esp.item.powerup" label="Mannpower powerups"/>
|
||||||
<AutoVariable width="fill" target="esp.item.spellbook" label="Spellbooks"/>
|
<AutoVariable width="fill" target="esp.item.spellbook" label="Spellbooks"/>
|
||||||
|
<AutoVariable width="fill" target="esp.item.objectives" label="Objectives" tooltip="Intel, carts and mvm bombs"/>
|
||||||
<AutoVariable width="fill" target="esp.item.explosive" label="Explosives" tooltip="Environmental hazards like bombs"/>
|
<AutoVariable width="fill" target="esp.item.explosive" label="Explosives" tooltip="Environmental hazards like bombs"/>
|
||||||
<AutoVariable width="fill" target="esp.item.crumpkin" label="Crumpkin" tooltip="Ammo box that also gives crits"/>
|
<AutoVariable width="fill" target="esp.item.crumpkin" label="Crumpkin" tooltip="Ammo box that also gives crits"/>
|
||||||
<AutoVariable width="fill" target="esp.item.gargoyle" label="Gargoyle" tooltip="Soul gargoyle pickup on halloween maps"/>
|
<AutoVariable width="fill" target="esp.item.gargoyle" label="Gargoyle" tooltip="Soul gargoyle pickup on halloween maps"/>
|
||||||
@ -102,6 +104,7 @@
|
|||||||
<Option name="Vertical" value="3"/>
|
<Option name="Vertical" value="3"/>
|
||||||
</Select>
|
</Select>
|
||||||
</LabeledObject>
|
</LabeledObject>
|
||||||
|
<AutoVariable width="fill" target="esp.hide-invis" label="Hide invisible"/>
|
||||||
</List>
|
</List>
|
||||||
</Box>
|
</Box>
|
||||||
<Box padding="12 6 6 6" width="content" height="content" name="Strings" x="340">
|
<Box padding="12 6 6 6" width="content" height="content" name="Strings" x="340">
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
<AutoVariable width="fill" target="radar.show.health" label="Health packs"/>
|
<AutoVariable width="fill" target="radar.show.health" label="Health packs"/>
|
||||||
<AutoVariable width="fill" target="radar.show.teammates" label="Teammates"/>
|
<AutoVariable width="fill" target="radar.show.teammates" label="Teammates"/>
|
||||||
<AutoVariable width="fill" target="radar.show.team.buildings" label="Team buildings"/>
|
<AutoVariable width="fill" target="radar.show.team.buildings" label="Team buildings"/>
|
||||||
|
<AutoVariable width="fill" target="radar.hide-invis" label="Hide invisible"/>
|
||||||
</List>
|
</List>
|
||||||
</Box>
|
</Box>
|
||||||
</Tab>
|
</Tab>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
* entity.h
|
* entity.h
|
||||||
*
|
*
|
||||||
* Created on: Oct 6, 2016
|
* Created on: Oct 6, 2016
|
||||||
@ -47,11 +47,11 @@ public:
|
|||||||
offset_t iHealth;
|
offset_t iHealth;
|
||||||
|
|
||||||
// sentry
|
// sentry
|
||||||
offset_t m_iAmmoShells; // sentry shells
|
offset_t m_iAmmoShells; // sentry shells
|
||||||
offset_t m_iAmmoRockets; // use only with if (GetLevel() == 3)
|
offset_t m_iAmmoRockets; // use only with if (GetLevel() == 3)
|
||||||
offset_t m_iSentryState; // sentry state
|
offset_t m_iSentryState; // sentry state
|
||||||
offset_t m_bPlayerControlled; // controlled via wrangler and sort
|
offset_t m_bPlayerControlled; // controlled via wrangler and sort
|
||||||
offset_t m_bDisabled; // this should be sentry only, not sure
|
offset_t m_bDisabled; // this should be sentry only, not sure
|
||||||
|
|
||||||
// dispenser
|
// dispenser
|
||||||
offset_t m_iAmmoMetal; // dispenser metal reserve
|
offset_t m_iAmmoMetal; // dispenser metal reserve
|
||||||
@ -101,7 +101,6 @@ public:
|
|||||||
offset_t iHitboxSet;
|
offset_t iHitboxSet;
|
||||||
offset_t vVelocity;
|
offset_t vVelocity;
|
||||||
offset_t bGlowEnabled;
|
offset_t bGlowEnabled;
|
||||||
offset_t movetype;
|
|
||||||
offset_t iGlowIndex;
|
offset_t iGlowIndex;
|
||||||
offset_t iReloadMode;
|
offset_t iReloadMode;
|
||||||
offset_t res_iMaxHealth;
|
offset_t res_iMaxHealth;
|
||||||
@ -207,6 +206,7 @@ public:
|
|||||||
|
|
||||||
offset_t m_iPlayerIndex;
|
offset_t m_iPlayerIndex;
|
||||||
offset_t m_hTargetPlayer;
|
offset_t m_hTargetPlayer;
|
||||||
|
offset_t m_flResetTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern NetVars netvar;
|
extern NetVars netvar;
|
||||||
|
@ -20,6 +20,8 @@ enum k_EItemType
|
|||||||
ITEM_HEALTH_SMALL,
|
ITEM_HEALTH_SMALL,
|
||||||
ITEM_HEALTH_MEDIUM,
|
ITEM_HEALTH_MEDIUM,
|
||||||
ITEM_HEALTH_LARGE,
|
ITEM_HEALTH_LARGE,
|
||||||
|
EDIBLE_MEDIUM,
|
||||||
|
EDIBLE_SMALL,
|
||||||
|
|
||||||
ITEM_AMMO_SMALL,
|
ITEM_AMMO_SMALL,
|
||||||
ITEM_AMMO_MEDIUM,
|
ITEM_AMMO_MEDIUM,
|
||||||
@ -51,6 +53,16 @@ enum k_EItemType
|
|||||||
BOMB_WOODENBARREL,
|
BOMB_WOODENBARREL,
|
||||||
BOMB_WALKEREXPLODE,
|
BOMB_WALKEREXPLODE,
|
||||||
|
|
||||||
|
FLAG_ATOMBOMB,
|
||||||
|
FLAG_SKULLPICKUP,
|
||||||
|
FLAG_GIBBUCKET,
|
||||||
|
FLAG_BOTTLEPICKUP,
|
||||||
|
FLAG_AUSSIECONTAINER,
|
||||||
|
FLAG_TICKETCASE,
|
||||||
|
|
||||||
|
CART_BOMBCART,
|
||||||
|
CART_BOMBCART_RED,
|
||||||
|
|
||||||
ITEM_TF2C_PILL,
|
ITEM_TF2C_PILL,
|
||||||
ITEM_TF2C_CRITS,
|
ITEM_TF2C_CRITS,
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ void NetVars::Init()
|
|||||||
this->hMyWeapons = gNetvars.get_offset("DT_BaseCombatCharacter", "m_hMyWeapons");
|
this->hMyWeapons = gNetvars.get_offset("DT_BaseCombatCharacter", "m_hMyWeapons");
|
||||||
this->iHitboxSet = gNetvars.get_offset("DT_BaseAnimating", "m_nHitboxSet");
|
this->iHitboxSet = gNetvars.get_offset("DT_BaseAnimating", "m_nHitboxSet");
|
||||||
this->vVelocity = gNetvars.get_offset("DT_BasePlayer", "localdata", "m_vecVelocity[0]");
|
this->vVelocity = gNetvars.get_offset("DT_BasePlayer", "localdata", "m_vecVelocity[0]");
|
||||||
this->movetype = gNetvars.get_offset("DT_BaseEntity", "movetype");
|
|
||||||
this->m_iAmmo = gNetvars.get_offset("DT_BasePlayer", "localdata", "m_iAmmo");
|
this->m_iAmmo = gNetvars.get_offset("DT_BasePlayer", "localdata", "m_iAmmo");
|
||||||
this->m_iPrimaryAmmoType = gNetvars.get_offset("DT_BaseCombatWeapon", "LocalWeaponData", "m_iPrimaryAmmoType");
|
this->m_iPrimaryAmmoType = gNetvars.get_offset("DT_BaseCombatWeapon", "LocalWeaponData", "m_iPrimaryAmmoType");
|
||||||
this->m_iSecondaryAmmoType = gNetvars.get_offset("DT_BaseCombatWeapon", "LocalWeaponData", "m_iSecondaryAmmoType");
|
this->m_iSecondaryAmmoType = gNetvars.get_offset("DT_BaseCombatWeapon", "LocalWeaponData", "m_iSecondaryAmmoType");
|
||||||
@ -154,6 +153,9 @@ void NetVars::Init()
|
|||||||
|
|
||||||
// Gargoyle
|
// Gargoyle
|
||||||
this->m_hTargetPlayer = gNetvars.get_offset("DT_CHalloweenGiftPickup", "m_hTargetPlayer");
|
this->m_hTargetPlayer = gNetvars.get_offset("DT_CHalloweenGiftPickup", "m_hTargetPlayer");
|
||||||
|
|
||||||
|
// Flag
|
||||||
|
this->m_flResetTime = gNetvars.get_offset("DT_CaptureFlag", "m_flResetTime");
|
||||||
}
|
}
|
||||||
IF_GAME(IsTF2C())
|
IF_GAME(IsTF2C())
|
||||||
{
|
{
|
||||||
|
@ -35,10 +35,12 @@ static settings::Int sightlines{ "esp.sightlines", "0" };
|
|||||||
static settings::Int esp_text_position{ "esp.text-position", "0" };
|
static settings::Int esp_text_position{ "esp.text-position", "0" };
|
||||||
static settings::Int esp_expand{ "esp.expand", "0" };
|
static settings::Int esp_expand{ "esp.expand", "0" };
|
||||||
static settings::Boolean vischeck{ "esp.vischeck", "true" };
|
static settings::Boolean vischeck{ "esp.vischeck", "true" };
|
||||||
|
static settings::Boolean hide_invis{ "esp.hide-invis", "false" };
|
||||||
static settings::Boolean legit{ "esp.legit", "false" };
|
static settings::Boolean legit{ "esp.legit", "false" };
|
||||||
|
|
||||||
static settings::Boolean local_esp{ "esp.show.local", "true" };
|
static settings::Boolean local_esp{ "esp.show.local", "true" };
|
||||||
static settings::Boolean buildings{ "esp.show.buildings", "true" };
|
static settings::Boolean buildings{ "esp.show.buildings", "true" };
|
||||||
|
static settings::Boolean team_buildings{ "esp.show.team-buildings", "false" };
|
||||||
static settings::Boolean teammates{ "esp.show.teammates", "true" };
|
static settings::Boolean teammates{ "esp.show.teammates", "true" };
|
||||||
static settings::Boolean npc{ "esp.show.npc", "true" };
|
static settings::Boolean npc{ "esp.show.npc", "true" };
|
||||||
|
|
||||||
@ -63,6 +65,7 @@ static settings::Boolean item_spellbooks{ "esp.item.spellbook", "true" };
|
|||||||
static settings::Boolean item_explosive{ "esp.item.explosive", "true" };
|
static settings::Boolean item_explosive{ "esp.item.explosive", "true" };
|
||||||
static settings::Boolean item_crumpkin{ "esp.item.crumpkin", "true" };
|
static settings::Boolean item_crumpkin{ "esp.item.crumpkin", "true" };
|
||||||
static settings::Boolean item_gargoyle{ "esp.item.gargoyle", "true" };
|
static settings::Boolean item_gargoyle{ "esp.item.gargoyle", "true" };
|
||||||
|
static settings::Boolean item_objectives{ "esp.item.objectives", "false" };
|
||||||
// TF2C
|
// TF2C
|
||||||
static settings::Boolean item_weapon_spawners{ "esp.item.weapon-spawner", "true" };
|
static settings::Boolean item_weapon_spawners{ "esp.item.weapon-spawner", "true" };
|
||||||
static settings::Boolean item_adrenaline{ "esp.item.adrenaline", "true" };
|
static settings::Boolean item_adrenaline{ "esp.item.adrenaline", "true" };
|
||||||
@ -258,15 +261,26 @@ const std::string slowed_str = "*Slow*";
|
|||||||
const std::string zooming_str = "*Zoom*";
|
const std::string zooming_str = "*Zoom*";
|
||||||
const std::string crit_str = "*Crits*";
|
const std::string crit_str = "*Crits*";
|
||||||
const std::string blast_p_str = "*Blast Passive*";
|
const std::string blast_p_str = "*Blast Passive*";
|
||||||
const std::string blast_a_str = "*Blast Vaccinator*";
|
const std::string blast_a_str = "*Blast-Resist*";
|
||||||
const std::string fire_p_str = "*Fire Passive*";
|
const std::string fire_p_str = "*Fire Passive*";
|
||||||
const std::string fire_a_str = "*Fire Vaccinator*";
|
const std::string fire_a_str = "*Fire-Resist*";
|
||||||
const std::string bullet_p_str = "*Bullet Passive*";
|
const std::string bullet_p_str = "*Bullet Passive*";
|
||||||
const std::string bullet_a_str = "*Bullet Vaccinator*";
|
const std::string bullet_a_str = "*Bullet-Resist*";
|
||||||
const std::string invulnerable_str = "*Invulnerable*";
|
const std::string invulnerable_str = "*Invulnerable*";
|
||||||
const std::string ready_ringer_str = "*Dead Ringer Out*";
|
const std::string ready_ringer_str = "*Dead Ringer Out*";
|
||||||
const std::string cloaked_str = "*Cloak*";
|
const std::string cloaked_str = "*Cloak*";
|
||||||
const std::string in_ringer_str = "*Dead Ringer*";
|
const std::string in_ringer_str = "*Dead Ringer*";
|
||||||
|
const std::string disguised_str = "*Disguise*";
|
||||||
|
const std::string intel_str = "Intel";
|
||||||
|
const std::string atombomb_str = "Atom Bomb";
|
||||||
|
const std::string soulpickup_str = "Soul Pickup";
|
||||||
|
const std::string bodyparts_str = "Body Parts";
|
||||||
|
const std::string beerbottle_str = "Beer Bottle";
|
||||||
|
const std::string aussiecontainer_str = "Australium Container";
|
||||||
|
const std::string ticketcase_str = "Tickets";
|
||||||
|
const std::string mediumhealth_str = "Medium Health";
|
||||||
|
const std::string smallhealth_str = "Small Health";
|
||||||
|
const std::string cart_str = "Cart";
|
||||||
const std::string botname_str = "Bot #";
|
const std::string botname_str = "Bot #";
|
||||||
const std::string tp_ready_str = "Ready";
|
const std::string tp_ready_str = "Ready";
|
||||||
const std::string sapped_str = "*Sapped*";
|
const std::string sapped_str = "*Sapped*";
|
||||||
@ -658,7 +672,7 @@ void _FASTCALL ProcessEntityPT(CachedEntity *ent)
|
|||||||
Draw3DBox(ent, fg);
|
Draw3DBox(ent, fg);
|
||||||
break;
|
break;
|
||||||
case ENTITY_BUILDING:
|
case ENTITY_BUILDING:
|
||||||
if (CE_INT(ent, netvar.iTeamNum) == g_pLocalPlayer->team && !teammates)
|
if (CE_INT(ent, netvar.iTeamNum) == g_pLocalPlayer->team && !team_buildings)
|
||||||
break;
|
break;
|
||||||
if (!fg)
|
if (!fg)
|
||||||
fg = colors::EntityF(ent);
|
fg = colors::EntityF(ent);
|
||||||
@ -1197,7 +1211,7 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Explosive/Environmental hazard esp
|
// Explosive/Environmental hazard esp
|
||||||
else if (item_explosive && (classid == CL_CLASS(CTFPumpkinBomb) || itemtype == BOMB_BALLOONBOMB || itemtype == BOMB_WOODENBARREL || itemtype == BOMB_WALKEREXPLODE))
|
else if (item_explosive && (classid == CL_CLASS(CTFPumpkinBomb) || itemtype >= BOMB_BALLOONBOMB && itemtype <= BOMB_WALKEREXPLODE))
|
||||||
{
|
{
|
||||||
if (classid == CL_CLASS(CTFPumpkinBomb))
|
if (classid == CL_CLASS(CTFPumpkinBomb))
|
||||||
AddEntityString(ent, pumpkinbomb_str, colors::FromRGBA8(255, 162, 0, 255));
|
AddEntityString(ent, pumpkinbomb_str, colors::FromRGBA8(255, 162, 0, 255));
|
||||||
@ -1217,21 +1231,75 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (item_objectives && (classid == CL_CLASS(CCaptureFlag) || itemtype >= FLAG_ATOMBOMB && itemtype <= CART_BOMBCART_RED))
|
||||||
|
{
|
||||||
|
rgba_t color = ent->m_iTeam() == TEAM_BLU ? colors::blu : (ent->m_iTeam() == TEAM_RED ? colors::red : colors::white);
|
||||||
|
|
||||||
|
switch (itemtype)
|
||||||
|
{
|
||||||
|
case FLAG_ATOMBOMB:
|
||||||
|
AddEntityString(ent, atombomb_str, color);
|
||||||
|
break;
|
||||||
|
case FLAG_SKULLPICKUP:
|
||||||
|
AddEntityString(ent, soulpickup_str, color);
|
||||||
|
break;
|
||||||
|
case FLAG_GIBBUCKET:
|
||||||
|
AddEntityString(ent, bodyparts_str, color);
|
||||||
|
break;
|
||||||
|
case FLAG_BOTTLEPICKUP:
|
||||||
|
AddEntityString(ent, beerbottle_str, color);
|
||||||
|
break;
|
||||||
|
case FLAG_AUSSIECONTAINER:
|
||||||
|
AddEntityString(ent, aussiecontainer_str, color);
|
||||||
|
break;
|
||||||
|
case FLAG_TICKETCASE:
|
||||||
|
AddEntityString(ent, ticketcase_str, color);
|
||||||
|
break;
|
||||||
|
case CART_BOMBCART:
|
||||||
|
AddEntityString(ent, cart_str, colors::blu);
|
||||||
|
break;
|
||||||
|
case CART_BOMBCART_RED:
|
||||||
|
AddEntityString(ent, cart_str, colors::red);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
AddEntityString(ent, intel_str, color);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto resettime = CE_FLOAT(ent, netvar.m_flResetTime);
|
||||||
|
std::string time = std::to_string(int(resettime - g_GlobalVars->curtime));
|
||||||
|
time.append("s");
|
||||||
|
|
||||||
|
if (resettime && classid == CL_CLASS(CCaptureFlag))
|
||||||
|
AddEntityString(ent, time, colors::FromRGBA8(98, 163, 213, 255));
|
||||||
|
}
|
||||||
// Other item esp
|
// Other item esp
|
||||||
else if (itemtype != ITEM_NONE)
|
else if (itemtype != ITEM_NONE)
|
||||||
{
|
{
|
||||||
// Health pack esp
|
// Health pack esp
|
||||||
if (item_health_packs && (itemtype >= ITEM_HEALTH_SMALL && itemtype <= ITEM_HEALTH_LARGE || itemtype == ITEM_HL_BATTERY))
|
if (item_health_packs && (itemtype >= ITEM_HEALTH_SMALL && itemtype <= EDIBLE_MEDIUM || itemtype == ITEM_HL_BATTERY))
|
||||||
{
|
{
|
||||||
if (itemtype == ITEM_HEALTH_SMALL)
|
switch (itemtype)
|
||||||
|
{
|
||||||
|
case ITEM_HEALTH_SMALL:
|
||||||
AddEntityString(ent, health_small_str);
|
AddEntityString(ent, health_small_str);
|
||||||
if (itemtype == ITEM_HEALTH_MEDIUM)
|
break;
|
||||||
|
case ITEM_HEALTH_MEDIUM:
|
||||||
AddEntityString(ent, health_medium_str);
|
AddEntityString(ent, health_medium_str);
|
||||||
if (itemtype == ITEM_HEALTH_LARGE)
|
break;
|
||||||
|
case ITEM_HEALTH_LARGE:
|
||||||
AddEntityString(ent, health_big_str);
|
AddEntityString(ent, health_big_str);
|
||||||
if (itemtype == ITEM_HL_BATTERY)
|
break;
|
||||||
|
case ITEM_HL_BATTERY:
|
||||||
AddEntityString(ent, hl_battery_str);
|
AddEntityString(ent, hl_battery_str);
|
||||||
|
break;
|
||||||
|
case EDIBLE_MEDIUM:
|
||||||
|
AddEntityString(ent, mediumhealth_str, colors::green);
|
||||||
|
break;
|
||||||
|
case EDIBLE_SMALL:
|
||||||
|
AddEntityString(ent, smallhealth_str, colors::green);
|
||||||
|
break;
|
||||||
|
}
|
||||||
// TF2C Adrenaline esp
|
// TF2C Adrenaline esp
|
||||||
}
|
}
|
||||||
else if (item_adrenaline && itemtype == ITEM_TF2C_PILL)
|
else if (item_adrenaline && itemtype == ITEM_TF2C_PILL)
|
||||||
@ -1242,13 +1310,18 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
|||||||
}
|
}
|
||||||
else if (item_ammo_packs && itemtype >= ITEM_AMMO_SMALL && itemtype <= ITEM_AMMO_LARGE)
|
else if (item_ammo_packs && itemtype >= ITEM_AMMO_SMALL && itemtype <= ITEM_AMMO_LARGE)
|
||||||
{
|
{
|
||||||
if (itemtype == ITEM_AMMO_SMALL)
|
switch (itemtype)
|
||||||
|
{
|
||||||
|
case ITEM_AMMO_SMALL:
|
||||||
AddEntityString(ent, ammo_small_str);
|
AddEntityString(ent, ammo_small_str);
|
||||||
if (itemtype == ITEM_AMMO_MEDIUM)
|
break;
|
||||||
|
case ITEM_AMMO_MEDIUM:
|
||||||
AddEntityString(ent, ammo_medium_str);
|
AddEntityString(ent, ammo_medium_str);
|
||||||
if (itemtype == ITEM_AMMO_LARGE)
|
break;
|
||||||
|
case ITEM_AMMO_LARGE:
|
||||||
AddEntityString(ent, ammo_big_str);
|
AddEntityString(ent, ammo_big_str);
|
||||||
|
break;
|
||||||
|
}
|
||||||
// Powerup esp
|
// Powerup esp
|
||||||
}
|
}
|
||||||
else if (item_powerups && itemtype >= ITEM_POWERUP_FIRST && itemtype <= ITEM_POWERUP_LAST)
|
else if (item_powerups && itemtype >= ITEM_POWERUP_FIRST && itemtype <= ITEM_POWERUP_LAST)
|
||||||
@ -1302,7 +1375,7 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
|||||||
{
|
{
|
||||||
|
|
||||||
// Check if enemy building
|
// Check if enemy building
|
||||||
if (!ent->m_bEnemy() && !teammates)
|
if (!ent->m_bEnemy() && !team_buildings)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// TODO maybe...
|
// TODO maybe...
|
||||||
@ -1318,6 +1391,7 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
|||||||
const std::string &name = (classid == CL_CLASS(CObjectTeleporter) ? teleporter_str : (classid == CL_CLASS(CObjectSentrygun) ? sentry_str : dispenser_str));
|
const std::string &name = (classid == CL_CLASS(CObjectTeleporter) ? teleporter_str : (classid == CL_CLASS(CObjectSentrygun) ? sentry_str : dispenser_str));
|
||||||
int level = CE_INT(ent, netvar.iUpgradeLevel);
|
int level = CE_INT(ent, netvar.iUpgradeLevel);
|
||||||
bool IsMini = CE_BYTE(ent, netvar.m_bMiniBuilding);
|
bool IsMini = CE_BYTE(ent, netvar.m_bMiniBuilding);
|
||||||
|
|
||||||
if (!IsMini)
|
if (!IsMini)
|
||||||
AddEntityString(ent, format("Level ", level, ' ', name));
|
AddEntityString(ent, format("Level ", level, ' ', name));
|
||||||
else
|
else
|
||||||
@ -1384,7 +1458,7 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
|||||||
{
|
{
|
||||||
float next_teleport = CE_FLOAT(ent, netvar.m_flTeleRechargeTime);
|
float next_teleport = CE_FLOAT(ent, netvar.m_flTeleRechargeTime);
|
||||||
float yaw_to_exit = CE_FLOAT(ent, netvar.m_flTeleYawToExit);
|
float yaw_to_exit = CE_FLOAT(ent, netvar.m_flTeleYawToExit);
|
||||||
std::string time = std::to_string((int) floor((next_teleport - g_GlobalVars->curtime) * 100) / 100);
|
std::string time = std::to_string(int(next_teleport - g_GlobalVars->curtime));
|
||||||
time.append("s");
|
time.append("s");
|
||||||
|
|
||||||
if (yaw_to_exit)
|
if (yaw_to_exit)
|
||||||
@ -1417,6 +1491,8 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
|||||||
// Local player handling
|
// Local player handling
|
||||||
if (!(local_esp && g_IInput->CAM_IsThirdPerson()) && ent->m_IDX == g_IEngine->GetLocalPlayer())
|
if (!(local_esp && g_IInput->CAM_IsThirdPerson()) && ent->m_IDX == g_IEngine->GetLocalPlayer())
|
||||||
return;
|
return;
|
||||||
|
if (hide_invis && IsPlayerInvisible(ent))
|
||||||
|
return;
|
||||||
|
|
||||||
// Get player class
|
// Get player class
|
||||||
int pclass = CE_INT(ent, netvar.iClass);
|
int pclass = CE_INT(ent, netvar.iClass);
|
||||||
@ -1499,14 +1575,14 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
|||||||
CachedEntity *weapon = ENTITY(eid);
|
CachedEntity *weapon = ENTITY(eid);
|
||||||
if (!CE_INVALID(weapon) && weapon->m_iClassID() == CL_CLASS(CWeaponMedigun) && weapon)
|
if (!CE_INVALID(weapon) && weapon->m_iClassID() == CL_CLASS(CWeaponMedigun) && weapon)
|
||||||
{
|
{
|
||||||
std::string charge = std::to_string((int) floor(CE_FLOAT(weapon, netvar.m_flChargeLevel) * 100));
|
std::string charge = std::to_string(int(CE_FLOAT(weapon, netvar.m_flChargeLevel) * 100));
|
||||||
|
|
||||||
if (CE_INT(weapon, netvar.iItemDefinitionIndex) != 998)
|
if (CE_INT(weapon, netvar.iItemDefinitionIndex) != 998)
|
||||||
{
|
{
|
||||||
AddEntityString(ent, charge + "% Uber", colors::Health(floor(CE_FLOAT(weapon, netvar.m_flChargeLevel) * 100), 100));
|
AddEntityString(ent, charge + "% Uber", colors::Health(CE_FLOAT(weapon, netvar.m_flChargeLevel) * 100, 100));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
AddEntityString(ent, charge + "% Uber | Charges: " + std::to_string(floor(CE_FLOAT(weapon, netvar.m_flChargeLevel) / 0.25f)), colors::Health((CE_FLOAT(weapon, netvar.m_flChargeLevel) * 100), 100));
|
AddEntityString(ent, charge + "% Uber | Charges: " + std::to_string(int(CE_FLOAT(weapon, netvar.m_flChargeLevel) / 0.25f)), colors::Health((CE_FLOAT(weapon, netvar.m_flChargeLevel) * 100), 100));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1533,6 +1609,8 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
|||||||
}
|
}
|
||||||
if (CE_BYTE(ent, netvar.m_bFeignDeathReady))
|
if (CE_BYTE(ent, netvar.m_bFeignDeathReady))
|
||||||
AddEntityString(ent, ready_ringer_str, colors::FromRGBA8(178.0f, 0.0f, 255.0f, 255.0f));
|
AddEntityString(ent, ready_ringer_str, colors::FromRGBA8(178.0f, 0.0f, 255.0f, 255.0f));
|
||||||
|
if (HasCondition<TFCond_Disguised>(ent))
|
||||||
|
AddEntityString(ent, disguised_str, colors::FromRGBA8(220, 220, 220, 255));
|
||||||
// Uber/Bonk
|
// Uber/Bonk
|
||||||
if (IsPlayerInvulnerable(ent))
|
if (IsPlayerInvulnerable(ent))
|
||||||
AddEntityString(ent, invulnerable_str);
|
AddEntityString(ent, invulnerable_str);
|
||||||
|
@ -207,17 +207,21 @@ void CreateMove()
|
|||||||
if (anti_afk)
|
if (anti_afk)
|
||||||
updateAntiAfk();
|
updateAntiAfk();
|
||||||
|
|
||||||
// Automaticly airstrafes in the air
|
// Automatically strafes in the air
|
||||||
if (auto_strafe)
|
if (auto_strafe && CE_GOOD(LOCAL_E) && !g_pLocalPlayer->life_state)
|
||||||
{
|
{
|
||||||
auto ground = (bool) (CE_INT(g_pLocalPlayer->entity, netvar.iFlags) & FL_ONGROUND);
|
static bool was_jumping = false;
|
||||||
if (!ground)
|
auto flags = CE_INT(LOCAL_E, netvar.iFlags);
|
||||||
|
bool is_jumping = current_user_cmd->buttons & IN_JUMP;
|
||||||
|
|
||||||
|
if (!(flags & FL_ONGROUND) && !(flags & FL_INWATER) && (!is_jumping || was_jumping))
|
||||||
{
|
{
|
||||||
if (current_user_cmd->mousedx)
|
if (current_user_cmd->mousedx)
|
||||||
{
|
{
|
||||||
current_user_cmd->sidemove = current_user_cmd->mousedx > 1 ? 450.f : -450.f;
|
current_user_cmd->sidemove = current_user_cmd->mousedx > 1 ? 450.f : -450.f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
was_jumping = is_jumping;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TF2c Tauntslide
|
// TF2c Tauntslide
|
||||||
@ -372,19 +376,22 @@ void Draw()
|
|||||||
if (!CE_BAD(ent) && ent != LOCAL_E && ent->m_Type() == ENTITY_PLAYER && (CE_INT(ent, netvar.hObserverTarget) & 0xFFF) == LOCAL_E->m_IDX && CE_INT(ent, netvar.iObserverMode) >= 4 && g_IEngine->GetPlayerInfo(i, &info))
|
if (!CE_BAD(ent) && ent != LOCAL_E && ent->m_Type() == ENTITY_PLAYER && (CE_INT(ent, netvar.hObserverTarget) & 0xFFF) == LOCAL_E->m_IDX && CE_INT(ent, netvar.iObserverMode) >= 4 && g_IEngine->GetPlayerInfo(i, &info))
|
||||||
{
|
{
|
||||||
auto observermode = "N/A";
|
auto observermode = "N/A";
|
||||||
|
rgba_t color = colors::green;
|
||||||
|
|
||||||
switch (CE_INT(ent, netvar.iObserverMode))
|
switch (CE_INT(ent, netvar.iObserverMode))
|
||||||
{
|
{
|
||||||
case 4:
|
case 4:
|
||||||
observermode = "Firstperson";
|
observermode = "1st Person";
|
||||||
|
color = colors::red_b;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
observermode = "Thirdperson";
|
observermode = "3rd Person";
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
observermode = "Freecam";
|
observermode = "Freecam";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
AddSideString(format(info.name, " ", observermode));
|
AddSideString(format(info.name, " - (", observermode, ")"), color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ static settings::Boolean show_teammates{ "radar.show.teammates", "true" };
|
|||||||
static settings::Boolean show_teambuildings{ "radar.show.team.buildings", "true" };
|
static settings::Boolean show_teambuildings{ "radar.show.team.buildings", "true" };
|
||||||
static settings::Boolean show_healthpacks{ "radar.show.health", "true" };
|
static settings::Boolean show_healthpacks{ "radar.show.health", "true" };
|
||||||
static settings::Boolean show_ammopacks{ "radar.show.ammo", "true" };
|
static settings::Boolean show_ammopacks{ "radar.show.ammo", "true" };
|
||||||
|
static settings::Boolean hide_invis{ "radar.hide-invis", "false" };
|
||||||
|
|
||||||
static Timer invalid{};
|
static Timer invalid{};
|
||||||
|
|
||||||
@ -105,8 +106,10 @@ void DrawEntity(int x, int y, CachedEntity *ent)
|
|||||||
{
|
{
|
||||||
if (ent->m_Type() == ENTITY_PLAYER)
|
if (ent->m_Type() == ENTITY_PLAYER)
|
||||||
{
|
{
|
||||||
if (CE_BYTE(ent, netvar.iLifeState))
|
if (ent->m_bAlivePlayer())
|
||||||
return; // DEAD. not big surprise.
|
return; // DEAD. not big surprise.
|
||||||
|
if (hide_invis && IsPlayerInvisible(ent))
|
||||||
|
return;
|
||||||
const int &clazz = CE_INT(ent, netvar.iClass);
|
const int &clazz = CE_INT(ent, netvar.iClass);
|
||||||
const int &team = CE_INT(ent, netvar.iTeamNum);
|
const int &team = CE_INT(ent, netvar.iTeamNum);
|
||||||
idx = team - 2;
|
idx = team - 2;
|
||||||
|
@ -24,6 +24,14 @@ ItemManager::ItemManager() : mapper()
|
|||||||
RegisterModelMapping("models/items/medkit_large_bday.mdl", ITEM_HEALTH_LARGE);
|
RegisterModelMapping("models/items/medkit_large_bday.mdl", ITEM_HEALTH_LARGE);
|
||||||
// Medieval
|
// Medieval
|
||||||
RegisterModelMapping("models/props_medieval/medieval_meat.mdl", ITEM_HEALTH_MEDIUM);
|
RegisterModelMapping("models/props_medieval/medieval_meat.mdl", ITEM_HEALTH_MEDIUM);
|
||||||
|
// Edibles / Lunchboxes
|
||||||
|
RegisterModelMapping("models/items/plate.mdl", EDIBLE_MEDIUM);
|
||||||
|
RegisterModelMapping("models/items/plate_sandwich_xmas.mdl", EDIBLE_MEDIUM);
|
||||||
|
RegisterModelMapping("models/items/plate_robo_sandwich.mdl", EDIBLE_MEDIUM);
|
||||||
|
RegisterModelMapping("models/workshop/weapons/c_models/c_fishcake/plate_fishcake.mdl", EDIBLE_SMALL);
|
||||||
|
RegisterModelMapping("models/workshop/weapons/c_models/c_buffalo_steak/plate_buffalo_steak.mdl", EDIBLE_SMALL);
|
||||||
|
RegisterModelMapping("models/workshop/weapons/c_models/c_chocolate/plate_chocolate.mdl", EDIBLE_SMALL);
|
||||||
|
RegisterModelMapping("models/items/banana/plate_banana.mdl", EDIBLE_SMALL);
|
||||||
|
|
||||||
// == AMMOPACKS
|
// == AMMOPACKS
|
||||||
// Normal
|
// Normal
|
||||||
@ -70,8 +78,10 @@ ItemManager::ItemManager() : mapper()
|
|||||||
// Spellbooks
|
// Spellbooks
|
||||||
RegisterModelMapping("models/props_halloween/hwn_spellbook_upright.mdl", ITEM_SPELL);
|
RegisterModelMapping("models/props_halloween/hwn_spellbook_upright.mdl", ITEM_SPELL);
|
||||||
RegisterModelMapping("models/items/crystal_ball_pickup.mdl", ITEM_SPELL);
|
RegisterModelMapping("models/items/crystal_ball_pickup.mdl", ITEM_SPELL);
|
||||||
|
RegisterModelMapping("models/props_monster_mash/flask_vial_green.mdl", ITEM_SPELL);
|
||||||
RegisterModelMapping("models/props_halloween/hwn_spellbook_upright_major.mdl", ITEM_SPELL_RARE);
|
RegisterModelMapping("models/props_halloween/hwn_spellbook_upright_major.mdl", ITEM_SPELL_RARE);
|
||||||
RegisterModelMapping("models/items/crystal_ball_pickup_major.mdl", ITEM_SPELL_RARE);
|
RegisterModelMapping("models/items/crystal_ball_pickup_major.mdl", ITEM_SPELL_RARE);
|
||||||
|
RegisterModelMapping("models/props_monster_mash/flask_vial_purple.mdl", ITEM_SPELL_RARE);
|
||||||
|
|
||||||
// == GHOSTS
|
// == GHOSTS
|
||||||
RegisterModelMapping("models/props_halloween/ghost.mdl", HALLOWEEN_GHOST);
|
RegisterModelMapping("models/props_halloween/ghost.mdl", HALLOWEEN_GHOST);
|
||||||
@ -83,6 +93,24 @@ ItemManager::ItemManager() : mapper()
|
|||||||
RegisterModelMapping("models/props_coast/wooden_barrel.mdl", BOMB_WOODENBARREL);
|
RegisterModelMapping("models/props_coast/wooden_barrel.mdl", BOMB_WOODENBARREL);
|
||||||
RegisterModelMapping("models/props_invasion/props_alien/walker_explode.mdl", BOMB_WALKEREXPLODE);
|
RegisterModelMapping("models/props_invasion/props_alien/walker_explode.mdl", BOMB_WALKEREXPLODE);
|
||||||
|
|
||||||
|
// == FLAGS
|
||||||
|
RegisterModelMapping("models/props_td/atom_bomb.mdl", FLAG_ATOMBOMB);
|
||||||
|
RegisterModelMapping("models/props_pirate/pd_skull_pickup.mdl", FLAG_SKULLPICKUP);
|
||||||
|
RegisterModelMapping("models/effects/playersoul.mdl", FLAG_SKULLPICKUP);
|
||||||
|
RegisterModelMapping("models/props_monster_mash/gib_bucket.mdl", FLAG_GIBBUCKET);
|
||||||
|
RegisterModelMapping("models/props_watergate/bottle_pickup.mdl", FLAG_BOTTLEPICKUP);
|
||||||
|
RegisterModelMapping("models/props_doomsday/australium_container.mdl", FLAG_AUSSIECONTAINER);
|
||||||
|
RegisterModelMapping("models/flag/ticket_case.mdl", FLAG_TICKETCASE);
|
||||||
|
|
||||||
|
// == BOMB CARTS
|
||||||
|
RegisterModelMapping("models/props_trainyard/bomb_cart.mdl", CART_BOMBCART);
|
||||||
|
RegisterModelMapping("models/custom/dirty_bomb_cart.mdl", CART_BOMBCART);
|
||||||
|
RegisterModelMapping("models/lilchewchew/lilchewchew_v3.mdl", CART_BOMBCART);
|
||||||
|
RegisterModelMapping("models/props_trainyard/bomb_redmond.mdl", CART_BOMBCART);
|
||||||
|
RegisterModelMapping("models/props_snowycoast/gasoline_bomb_cart.mdl", CART_BOMBCART);
|
||||||
|
RegisterModelMapping("models/props_trainyard/bomb_blutarch.mdl", CART_BOMBCART_RED);
|
||||||
|
RegisterModelMapping("models/props_trainyard/bomb_cart_red.mdl", CART_BOMBCART_RED);
|
||||||
|
|
||||||
RegisterSpecialMapping([](CachedEntity *ent) -> bool { return ent->m_iClassID() == CL_CLASS(CTFAmmoPack) && g_ItemManager.mapper.GetItemType(ent) != ITEM_CRUMPKIN; }, ITEM_AMMO_MEDIUM);
|
RegisterSpecialMapping([](CachedEntity *ent) -> bool { return ent->m_iClassID() == CL_CLASS(CTFAmmoPack) && g_ItemManager.mapper.GetItemType(ent) != ITEM_CRUMPKIN; }, ITEM_AMMO_MEDIUM);
|
||||||
|
|
||||||
RegisterModelMapping("models/items/medkit_overheal.mdl", ITEM_TF2C_PILL);
|
RegisterModelMapping("models/items/medkit_overheal.mdl", ITEM_TF2C_PILL);
|
||||||
|
Reference in New Issue
Block a user