Menu Fix+Small changes (#1705)

* Menu Fix+Small changes

* Fixed bug

* Wow, pretty big bugfix. Multipoint works now!

* Changed helper to float
This commit is contained in:
Stephen Martin 2022-07-16 15:34:56 -04:00 committed by GitHub
parent 735b853c94
commit 0ad0c9f288
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 16 additions and 35 deletions

View File

@ -1,13 +1,6 @@
cmake_minimum_required(VERSION 3.20) cmake_minimum_required(VERSION 3.20)
set(EnablePrecompiledHeaders 1 CACHE BOOL "Enable Precompiled Headers to reduce compile time") set(NativePrecompiledHeaders 1)
if(${CMAKE_VERSION} VERSION_LESS "3.16.0")
unset(NativePrecompiledHeaders)
else()
set(NativePrecompiledHeaders 1)
unset(EnableCotire CACHE)
endif()
# Ensure that only 32 bit libraries are used. # Ensure that only 32 bit libraries are used.
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/Toolchain-cross-m32.cmake") set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/Toolchain-cross-m32.cmake")
@ -226,9 +219,8 @@ add_subdirectory(include)
add_subdirectory(external) add_subdirectory(external)
add_subdirectory(modules) add_subdirectory(modules)
if(EnablePrecompiledHeaders AND NativePrecompiledHeaders)
target_precompile_headers(cathook PRIVATE "${CMAKE_SOURCE_DIR}/include/common.hpp") target_precompile_headers(cathook PRIVATE "${CMAKE_SOURCE_DIR}/include/common.hpp")
endif()
if (NOT Internal_Symbolized) if (NOT Internal_Symbolized)
add_custom_command(TARGET cathook POST_BUILD add_custom_command(TARGET cathook POST_BUILD

View File

@ -104,7 +104,7 @@
<AutoVariable width="fill" target="aimbot.target.ignore-deadringer" label="Ignore Dead Ringer"/> <AutoVariable width="fill" target="aimbot.target.ignore-deadringer" label="Ignore Dead Ringer"/>
</List> </List>
</Box> </Box>
<Box padding="12 6 6 6" width="content" height="content" name="Autoshoot" x="170" y="250"> <Box padding="12 6 6 6" width="content" height="content" name="Autoshoot" x="170" y="290">
<List width="150"> <List width="150">
<AutoVariable width="fill" target="aimbot.autoshoot" label="Enable autoshoot" tooltip="Make the aimbot automatically fire your weapon."/> <AutoVariable width="fill" target="aimbot.autoshoot" label="Enable autoshoot" tooltip="Make the aimbot automatically fire your weapon."/>
<AutoVariable width="fill" target="aimbot.wait-for-charge" label="Wait for charge" tooltip="Hold fire until a single shot is enough to kill the target."/> <AutoVariable width="fill" target="aimbot.wait-for-charge" label="Wait for charge" tooltip="Hold fire until a single shot is enough to kill the target."/>

View File

@ -118,7 +118,7 @@ bool GetProjectileData(CachedEntity *weapon, float &speed, float &gravity, float
bool IsVectorVisible(Vector a, Vector b, bool enviroment_only = false, CachedEntity *self = LOCAL_E, unsigned int mask = MASK_SHOT_HULL); bool IsVectorVisible(Vector a, Vector b, bool enviroment_only = false, CachedEntity *self = LOCAL_E, unsigned int mask = MASK_SHOT_HULL);
// A Special function for navparser to check if a Vector is visible. // A Special function for navparser to check if a Vector is visible.
bool IsVectorVisibleNavigation(Vector a, Vector b, unsigned int mask = MASK_SHOT_HULL); bool IsVectorVisibleNavigation(Vector a, Vector b, unsigned int mask = MASK_SHOT_HULL);
bool didProjectileHit(Vector start_point, Vector end_point, CachedEntity *entity, int projectile_size); bool didProjectileHit(Vector start_point, Vector end_point, CachedEntity *entity, float projectile_size);
Vector getShootPos(Vector angle); Vector getShootPos(Vector angle);
Vector GetForwardVector(Vector origin, Vector viewangles, float distance, CachedEntity *punch_entity = nullptr); Vector GetForwardVector(Vector origin, Vector viewangles, float distance, CachedEntity *punch_entity = nullptr);
Vector GetForwardVector(float distance, CachedEntity *punch_entity = nullptr); Vector GetForwardVector(float distance, CachedEntity *punch_entity = nullptr);

View File

@ -190,6 +190,7 @@ std::vector<Vector> getValidHitpoints(CachedEntity *ent, int hitbox)
for (int i = 0; i < 20; ++i) for (int i = 0; i < 20; ++i)
{ {
trace_t trace; trace_t trace;
if (IsEntityVectorVisible(ent, positions[i], true, MASK_SHOT_HULL, &trace)) if (IsEntityVectorVisible(ent, positions[i], true, MASK_SHOT_HULL, &trace))
{ {
if (trace.hitbox == hitbox) if (trace.hitbox == hitbox)
@ -261,6 +262,7 @@ std::vector<Vector> getHitpointsVischeck(CachedEntity *ent, int hitbox)
for (int i = 0; i < 20; ++i) for (int i = 0; i < 20; ++i)
{ {
trace_t trace; trace_t trace;
if (IsEntityVectorVisible(ent, positions[i], true, MASK_SHOT_HULL, &trace)) if (IsEntityVectorVisible(ent, positions[i], true, MASK_SHOT_HULL, &trace))
{ {
if (trace.hitbox == hitbox) if (trace.hitbox == hitbox)
@ -693,21 +695,6 @@ bool ShouldAim()
if (assistance_only && !MouseMoving()) if (assistance_only && !MouseMoving())
return false; return false;
#endif #endif
switch (GetWeaponMode())
{
case weapon_hitscan:
break;
case weapon_melee:
break;
// Check we need to run projectile Aimbot code
case weapon_projectile:
if (!projectileAimbotRequired)
return false;
break;
// Check if player doesnt have a weapon usable by aimbot
default:
return false;
};
return true; return true;
} }
@ -867,6 +854,7 @@ bool IsTargetStateGood(CachedEntity *entity)
PROF_SECTION(PT_aimbot_targetstatecheck); PROF_SECTION(PT_aimbot_targetstatecheck);
const int current_type = entity->m_Type(); const int current_type = entity->m_Type();
bool is_player = false;
switch (current_type) switch (current_type)
{ {
@ -887,7 +875,7 @@ bool IsTargetStateGood(CachedEntity *entity)
else if (IsPlayerInvulnerable(entity)) else if (IsPlayerInvulnerable(entity))
return false; return false;
// Distance // Distance
is_player = true;
float targeting_range = EffectiveTargetingRange(); float targeting_range = EffectiveTargetingRange();
if (entity->m_flDistance() - 40 > targeting_range && tickcount > hacks::shared::aimbot::last_target_ignore_timer) // m_flDistance includes the collision box. You have to subtract it (Should be the same for every model) if (entity->m_flDistance() - 40 > targeting_range && tickcount > hacks::shared::aimbot::last_target_ignore_timer) // m_flDistance includes the collision box. You have to subtract it (Should be the same for every model)
return false; return false;
@ -973,7 +961,7 @@ bool IsTargetStateGood(CachedEntity *entity)
AimbotCalculatedData_s &cd = calculated_data_array[entity->m_IDX]; AimbotCalculatedData_s &cd = calculated_data_array[entity->m_IDX];
cd.hitbox = BestHitbox(entity); cd.hitbox = BestHitbox(entity);
if (*vischeck_hitboxes && !*multipoint) if (*vischeck_hitboxes && !*multipoint && is_player)
{ {
if (*vischeck_hitboxes == 1 && playerlist::AccessData(entity).state != playerlist::k_EState::RAGE) if (*vischeck_hitboxes == 1 && playerlist::AccessData(entity).state != playerlist::k_EState::RAGE)
{ {
@ -984,13 +972,15 @@ bool IsTargetStateGood(CachedEntity *entity)
{ {
int i = 0; int i = 0;
trace_t first_tracer; trace_t first_tracer;
if (IsEntityVectorVisible(entity, entity->hitboxes.GetHitbox(cd.hitbox)->center, true, MASK_SHOT_HULL, &first_tracer)) if (IsEntityVectorVisible(entity, entity->hitboxes.GetHitbox(cd.hitbox)->center, true, MASK_SHOT_HULL, &first_tracer))
return true; return true;
while (i <= 17) // Prevents returning empty at all costs. Loops through every hitbox while (i <= 17) // Prevents returning empty at all costs. Loops through every hitbox
{ {
if (i == cd.hitbox) if (i == cd.hitbox && i != 17)
i++; i++;
trace_t test_trace; trace_t test_trace;
std::vector<Vector> centered_hitbox = getHitpointsVischeck(entity, i); std::vector<Vector> centered_hitbox = getHitpointsVischeck(entity, i);
if (IsEntityVectorVisible(entity, centered_hitbox[0], true, MASK_SHOT_HULL, &test_trace)) if (IsEntityVectorVisible(entity, centered_hitbox[0], true, MASK_SHOT_HULL, &test_trace))

View File

@ -651,16 +651,15 @@ powerup_type GetPowerupOnPlayer(CachedEntity *player)
return powerup_type::supernova; return powerup_type::supernova;
return powerup_type::not_powerup; return powerup_type::not_powerup;
} }
bool didProjectileHit(Vector start_point, Vector end_point, CachedEntity *entity, int projectile_size) bool didProjectileHit(Vector start_point, Vector end_point, CachedEntity *entity, float projectile_size)
{ {
trace::filter_default.SetSelf(RAW_ENT(g_pLocalPlayer->entity)); trace::filter_default.SetSelf(RAW_ENT(g_pLocalPlayer->entity));
Ray_t ray; Ray_t ray;
trace_t trace_obj; trace_t trace_obj;
trace_t *tracer = &trace_obj;
ray.Init(start_point, end_point, Vector(0, -projectile_size, -projectile_size), Vector(0, projectile_size, projectile_size)); ray.Init(start_point, end_point, Vector(0, -projectile_size, -projectile_size), Vector(0, projectile_size, projectile_size));
g_ITrace->TraceRay(ray, MASK_SHOT_HULL, &trace::filter_default, tracer); g_ITrace->TraceRay(ray, MASK_SHOT_HULL, &trace::filter_default, &trace_obj);
return (((IClientEntity *) tracer->m_pEnt) == RAW_ENT(entity) || !tracer->DidHit()); return (((IClientEntity *) trace_obj.m_pEnt) == RAW_ENT(entity) || !trace_obj.DidHit());
} }
// A function to find a weapon by WeaponID // A function to find a weapon by WeaponID