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.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.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."/>
|
||||
</List>
|
||||
<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.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.team-buildings" label="Teammate Building ESP"/>
|
||||
<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.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.powerup" label="Mannpower powerups"/>
|
||||
<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.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"/>
|
||||
@ -102,6 +104,7 @@
|
||||
<Option name="Vertical" value="3"/>
|
||||
</Select>
|
||||
</LabeledObject>
|
||||
<AutoVariable width="fill" target="esp.hide-invis" label="Hide invisible"/>
|
||||
</List>
|
||||
</Box>
|
||||
<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.teammates" label="Teammates"/>
|
||||
<AutoVariable width="fill" target="radar.show.team.buildings" label="Team buildings"/>
|
||||
<AutoVariable width="fill" target="radar.hide-invis" label="Hide invisible"/>
|
||||
</List>
|
||||
</Box>
|
||||
</Tab>
|
||||
|
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* entity.h
|
||||
*
|
||||
* Created on: Oct 6, 2016
|
||||
@ -47,11 +47,11 @@ public:
|
||||
offset_t iHealth;
|
||||
|
||||
// sentry
|
||||
offset_t m_iAmmoShells; // sentry shells
|
||||
offset_t m_iAmmoRockets; // use only with if (GetLevel() == 3)
|
||||
offset_t m_iSentryState; // sentry state
|
||||
offset_t m_iAmmoShells; // sentry shells
|
||||
offset_t m_iAmmoRockets; // use only with if (GetLevel() == 3)
|
||||
offset_t m_iSentryState; // sentry state
|
||||
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
|
||||
offset_t m_iAmmoMetal; // dispenser metal reserve
|
||||
@ -101,7 +101,6 @@ public:
|
||||
offset_t iHitboxSet;
|
||||
offset_t vVelocity;
|
||||
offset_t bGlowEnabled;
|
||||
offset_t movetype;
|
||||
offset_t iGlowIndex;
|
||||
offset_t iReloadMode;
|
||||
offset_t res_iMaxHealth;
|
||||
@ -207,6 +206,7 @@ public:
|
||||
|
||||
offset_t m_iPlayerIndex;
|
||||
offset_t m_hTargetPlayer;
|
||||
offset_t m_flResetTime;
|
||||
};
|
||||
|
||||
extern NetVars netvar;
|
||||
|
@ -20,6 +20,8 @@ enum k_EItemType
|
||||
ITEM_HEALTH_SMALL,
|
||||
ITEM_HEALTH_MEDIUM,
|
||||
ITEM_HEALTH_LARGE,
|
||||
EDIBLE_MEDIUM,
|
||||
EDIBLE_SMALL,
|
||||
|
||||
ITEM_AMMO_SMALL,
|
||||
ITEM_AMMO_MEDIUM,
|
||||
@ -51,6 +53,16 @@ enum k_EItemType
|
||||
BOMB_WOODENBARREL,
|
||||
BOMB_WALKEREXPLODE,
|
||||
|
||||
FLAG_ATOMBOMB,
|
||||
FLAG_SKULLPICKUP,
|
||||
FLAG_GIBBUCKET,
|
||||
FLAG_BOTTLEPICKUP,
|
||||
FLAG_AUSSIECONTAINER,
|
||||
FLAG_TICKETCASE,
|
||||
|
||||
CART_BOMBCART,
|
||||
CART_BOMBCART_RED,
|
||||
|
||||
ITEM_TF2C_PILL,
|
||||
ITEM_TF2C_CRITS,
|
||||
|
||||
|
@ -21,7 +21,6 @@ void NetVars::Init()
|
||||
this->hMyWeapons = gNetvars.get_offset("DT_BaseCombatCharacter", "m_hMyWeapons");
|
||||
this->iHitboxSet = gNetvars.get_offset("DT_BaseAnimating", "m_nHitboxSet");
|
||||
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_iPrimaryAmmoType = gNetvars.get_offset("DT_BaseCombatWeapon", "LocalWeaponData", "m_iPrimaryAmmoType");
|
||||
this->m_iSecondaryAmmoType = gNetvars.get_offset("DT_BaseCombatWeapon", "LocalWeaponData", "m_iSecondaryAmmoType");
|
||||
@ -154,6 +153,9 @@ void NetVars::Init()
|
||||
|
||||
// Gargoyle
|
||||
this->m_hTargetPlayer = gNetvars.get_offset("DT_CHalloweenGiftPickup", "m_hTargetPlayer");
|
||||
|
||||
// Flag
|
||||
this->m_flResetTime = gNetvars.get_offset("DT_CaptureFlag", "m_flResetTime");
|
||||
}
|
||||
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_expand{ "esp.expand", "0" };
|
||||
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 local_esp{ "esp.show.local", "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 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_crumpkin{ "esp.item.crumpkin", "true" };
|
||||
static settings::Boolean item_gargoyle{ "esp.item.gargoyle", "true" };
|
||||
static settings::Boolean item_objectives{ "esp.item.objectives", "false" };
|
||||
// TF2C
|
||||
static settings::Boolean item_weapon_spawners{ "esp.item.weapon-spawner", "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 crit_str = "*Crits*";
|
||||
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_a_str = "*Fire Vaccinator*";
|
||||
const std::string fire_a_str = "*Fire-Resist*";
|
||||
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 ready_ringer_str = "*Dead Ringer Out*";
|
||||
const std::string cloaked_str = "*Cloak*";
|
||||
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 tp_ready_str = "Ready";
|
||||
const std::string sapped_str = "*Sapped*";
|
||||
@ -658,7 +672,7 @@ void _FASTCALL ProcessEntityPT(CachedEntity *ent)
|
||||
Draw3DBox(ent, fg);
|
||||
break;
|
||||
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;
|
||||
if (!fg)
|
||||
fg = colors::EntityF(ent);
|
||||
@ -1197,7 +1211,7 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
||||
}
|
||||
}
|
||||
// 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))
|
||||
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
|
||||
else if (itemtype != ITEM_NONE)
|
||||
{
|
||||
// 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);
|
||||
if (itemtype == ITEM_HEALTH_MEDIUM)
|
||||
break;
|
||||
case ITEM_HEALTH_MEDIUM:
|
||||
AddEntityString(ent, health_medium_str);
|
||||
if (itemtype == ITEM_HEALTH_LARGE)
|
||||
break;
|
||||
case ITEM_HEALTH_LARGE:
|
||||
AddEntityString(ent, health_big_str);
|
||||
if (itemtype == ITEM_HL_BATTERY)
|
||||
break;
|
||||
case ITEM_HL_BATTERY:
|
||||
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
|
||||
}
|
||||
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)
|
||||
{
|
||||
if (itemtype == ITEM_AMMO_SMALL)
|
||||
switch (itemtype)
|
||||
{
|
||||
case ITEM_AMMO_SMALL:
|
||||
AddEntityString(ent, ammo_small_str);
|
||||
if (itemtype == ITEM_AMMO_MEDIUM)
|
||||
break;
|
||||
case ITEM_AMMO_MEDIUM:
|
||||
AddEntityString(ent, ammo_medium_str);
|
||||
if (itemtype == ITEM_AMMO_LARGE)
|
||||
break;
|
||||
case ITEM_AMMO_LARGE:
|
||||
AddEntityString(ent, ammo_big_str);
|
||||
|
||||
break;
|
||||
}
|
||||
// Powerup esp
|
||||
}
|
||||
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
|
||||
if (!ent->m_bEnemy() && !teammates)
|
||||
if (!ent->m_bEnemy() && !team_buildings)
|
||||
return;
|
||||
|
||||
// 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));
|
||||
int level = CE_INT(ent, netvar.iUpgradeLevel);
|
||||
bool IsMini = CE_BYTE(ent, netvar.m_bMiniBuilding);
|
||||
|
||||
if (!IsMini)
|
||||
AddEntityString(ent, format("Level ", level, ' ', name));
|
||||
else
|
||||
@ -1384,7 +1458,7 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
||||
{
|
||||
float next_teleport = CE_FLOAT(ent, netvar.m_flTeleRechargeTime);
|
||||
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");
|
||||
|
||||
if (yaw_to_exit)
|
||||
@ -1417,6 +1491,8 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
||||
// Local player handling
|
||||
if (!(local_esp && g_IInput->CAM_IsThirdPerson()) && ent->m_IDX == g_IEngine->GetLocalPlayer())
|
||||
return;
|
||||
if (hide_invis && IsPlayerInvisible(ent))
|
||||
return;
|
||||
|
||||
// Get player class
|
||||
int pclass = CE_INT(ent, netvar.iClass);
|
||||
@ -1499,14 +1575,14 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
||||
CachedEntity *weapon = ENTITY(eid);
|
||||
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)
|
||||
{
|
||||
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
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -1533,6 +1609,8 @@ void _FASTCALL ProcessEntity(CachedEntity *ent)
|
||||
}
|
||||
if (CE_BYTE(ent, netvar.m_bFeignDeathReady))
|
||||
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
|
||||
if (IsPlayerInvulnerable(ent))
|
||||
AddEntityString(ent, invulnerable_str);
|
||||
|
@ -207,17 +207,21 @@ void CreateMove()
|
||||
if (anti_afk)
|
||||
updateAntiAfk();
|
||||
|
||||
// Automaticly airstrafes in the air
|
||||
if (auto_strafe)
|
||||
// Automatically strafes in the air
|
||||
if (auto_strafe && CE_GOOD(LOCAL_E) && !g_pLocalPlayer->life_state)
|
||||
{
|
||||
auto ground = (bool) (CE_INT(g_pLocalPlayer->entity, netvar.iFlags) & FL_ONGROUND);
|
||||
if (!ground)
|
||||
static bool was_jumping = false;
|
||||
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)
|
||||
{
|
||||
current_user_cmd->sidemove = current_user_cmd->mousedx > 1 ? 450.f : -450.f;
|
||||
}
|
||||
}
|
||||
was_jumping = is_jumping;
|
||||
}
|
||||
|
||||
// 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))
|
||||
{
|
||||
auto observermode = "N/A";
|
||||
rgba_t color = colors::green;
|
||||
|
||||
switch (CE_INT(ent, netvar.iObserverMode))
|
||||
{
|
||||
case 4:
|
||||
observermode = "Firstperson";
|
||||
observermode = "1st Person";
|
||||
color = colors::red_b;
|
||||
break;
|
||||
case 5:
|
||||
observermode = "Thirdperson";
|
||||
observermode = "3rd Person";
|
||||
break;
|
||||
case 7:
|
||||
observermode = "Freecam";
|
||||
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_healthpacks{ "radar.show.health", "true" };
|
||||
static settings::Boolean show_ammopacks{ "radar.show.ammo", "true" };
|
||||
static settings::Boolean hide_invis{ "radar.hide-invis", "false" };
|
||||
|
||||
static Timer invalid{};
|
||||
|
||||
@ -105,8 +106,10 @@ void DrawEntity(int x, int y, CachedEntity *ent)
|
||||
{
|
||||
if (ent->m_Type() == ENTITY_PLAYER)
|
||||
{
|
||||
if (CE_BYTE(ent, netvar.iLifeState))
|
||||
if (ent->m_bAlivePlayer())
|
||||
return; // DEAD. not big surprise.
|
||||
if (hide_invis && IsPlayerInvisible(ent))
|
||||
return;
|
||||
const int &clazz = CE_INT(ent, netvar.iClass);
|
||||
const int &team = CE_INT(ent, netvar.iTeamNum);
|
||||
idx = team - 2;
|
||||
|
@ -24,6 +24,14 @@ ItemManager::ItemManager() : mapper()
|
||||
RegisterModelMapping("models/items/medkit_large_bday.mdl", ITEM_HEALTH_LARGE);
|
||||
// Medieval
|
||||
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
|
||||
// Normal
|
||||
@ -70,8 +78,10 @@ ItemManager::ItemManager() : mapper()
|
||||
// Spellbooks
|
||||
RegisterModelMapping("models/props_halloween/hwn_spellbook_upright.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/items/crystal_ball_pickup_major.mdl", ITEM_SPELL_RARE);
|
||||
RegisterModelMapping("models/props_monster_mash/flask_vial_purple.mdl", ITEM_SPELL_RARE);
|
||||
|
||||
// == GHOSTS
|
||||
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_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);
|
||||
|
||||
RegisterModelMapping("models/items/medkit_overheal.mdl", ITEM_TF2C_PILL);
|
||||
|
Reference in New Issue
Block a user