Merge remote-tracking branch 'BenCat07/master'
This commit is contained in:
commit
b57becb89c
@ -35,18 +35,18 @@ sudo chmod 000 /tmp/dumps # No permissions
|
||||
FILENAME=$(shuf -n 1 build_names)
|
||||
|
||||
# Create directory if it doesn't exist
|
||||
if [ ! -d "/usr/lib64" ]; then
|
||||
sudo mkdir /usr/lib64
|
||||
if [ ! -d "/lib/i386-linux-gnu/" ]; then
|
||||
sudo mkdir /lib/i386-linux-gnu/
|
||||
fi
|
||||
|
||||
# In case this file exists, get another one. ( checked it works )
|
||||
while [ -f "/usr/lib64/${FILENAME}" ]; do
|
||||
while [ -f "/lib/i386-linux-gnu/${FILENAME}" ]; do
|
||||
FILENAME=$(shuf -n 1 build_names)
|
||||
done
|
||||
|
||||
# echo $FILENAME > build_id # For detaching
|
||||
|
||||
sudo cp "bin/libcathook.so" "/usr/lib64/${FILENAME}"
|
||||
sudo cp "bin/libcathook.so" "/lib/i386-linux-gnu/${FILENAME}"
|
||||
|
||||
echo loading "$FILENAME" to "$proc"
|
||||
|
||||
@ -56,14 +56,14 @@ sudo killall -19 steamwebhelper
|
||||
sudo gdb -n -q -batch \
|
||||
-ex "attach $proc" \
|
||||
-ex "set \$dlopen = (void*(*)(char*, int)) dlopen" \
|
||||
-ex "call \$dlopen(\"/usr/lib64/$FILENAME\", 1)" \
|
||||
-ex "call \$dlopen(\"/lib/i386-linux-gnu/$FILENAME\", 1)" \
|
||||
-ex "call dlerror()" \
|
||||
-ex 'print (char *) $2' \
|
||||
-ex "catch syscall exit exit_group" \
|
||||
-ex "detach" \
|
||||
-ex "quit"
|
||||
|
||||
sudo rm "/usr/lib64/${FILENAME}"
|
||||
sudo rm "/lib/i386-linux-gnu/${FILENAME}"
|
||||
|
||||
sudo killall -18 steamwebhelper
|
||||
sudo killall -18 steam
|
||||
|
260
build_names
260
build_names
@ -1,234 +1,26 @@
|
||||
ld-2.24.so
|
||||
ld-linux-x86-64.so
|
||||
ld-lsb-x86-64.so
|
||||
libanl-2.24.so
|
||||
libasm-0.169.so
|
||||
libasm.so
|
||||
libatksharpglue-2.so
|
||||
libbfd-2.26.1-1.fc25.so
|
||||
libbfd.so
|
||||
libBrokenLocale-2.24.so
|
||||
libbuffer.so
|
||||
libc-2.24.so
|
||||
libcidn-2.24.so
|
||||
libclangAnalysis.so
|
||||
libclangARCMigrate.so
|
||||
libclangASTMatchers.so
|
||||
libclangAST.so
|
||||
libclangBasic.so
|
||||
libclangCodeGen.so
|
||||
libclangDriver.so
|
||||
libclangDynamicASTMatchers.so
|
||||
libclangEdit.so
|
||||
libclangFormat.so
|
||||
libclangFrontend.so
|
||||
libclangFrontendTool.so
|
||||
libclangIndex.so
|
||||
libclangLex.so
|
||||
libclangParse.so
|
||||
libclangRewriteFrontend.so
|
||||
libclangRewrite.so
|
||||
libclangSema.so
|
||||
libclangSerialization.so
|
||||
libclangStaticAnalyzerCheckers.so
|
||||
libclangStaticAnalyzerCore.so
|
||||
libclangStaticAnalyzerFrontend.so
|
||||
libclangToolingCore.so
|
||||
libclangTooling.so
|
||||
libclutter-glx-1.0.so
|
||||
libcmark.so
|
||||
libcolordcompat.so
|
||||
libcomps.so
|
||||
libcppunit.so
|
||||
libcrypt-nss-2.24.so
|
||||
libcupscgi.so
|
||||
libcupsimage.so
|
||||
libcupsmime.so
|
||||
libcupsppdc.so
|
||||
libcups.so
|
||||
libcurses.so
|
||||
libcursesw.so
|
||||
libdb-5.3.so
|
||||
libdb-5.so
|
||||
libdb.so
|
||||
libdevmapper-event-lvm2mirror.so
|
||||
libdevmapper-event-lvm2raid.so
|
||||
libdevmapper-event-lvm2snapshot.so
|
||||
libdevmapper-event-lvm2.so
|
||||
libdevmapper-event-lvm2thin.so
|
||||
libdevmapper-event.so
|
||||
libdevmapper.so
|
||||
libdl-2.24.so
|
||||
libdw-0.169.so
|
||||
libdw.so
|
||||
libebtc.so
|
||||
libelf-0.169.so
|
||||
libelf.so
|
||||
libevent_core.so
|
||||
libevent_extra.so
|
||||
libevent_openssl.so
|
||||
libevent_pthreads.so
|
||||
libevent.so
|
||||
libfdt-1.4.2.so
|
||||
libfdt.so
|
||||
libfreebl3.so
|
||||
libfreeblpriv3.so
|
||||
libftoa.so
|
||||
libgcc_s-6.4.1-20170727.so
|
||||
libgcc_s.so
|
||||
libgdksharpglue-2.so
|
||||
libGeneratedSaxParser.so
|
||||
libgettextlib-0.19.8.1.so
|
||||
libgettextsrc-0.19.8.1.so
|
||||
libgladesharpglue-2.so
|
||||
libglibsharpglue-2.so
|
||||
libGLX_indirect.so
|
||||
libgnarl-6.so
|
||||
libgnat-6.so
|
||||
libgtksharpglue-2.so
|
||||
libhawkey.so
|
||||
libijs-0.35.so
|
||||
libikvm-native.so
|
||||
libiscsi.so
|
||||
libiw.so
|
||||
libjbig85.so
|
||||
libjbig.so
|
||||
libjim.so
|
||||
libjs.so
|
||||
libkadm5clnt.so
|
||||
libkadm5srv.so
|
||||
liblber.so
|
||||
libldap_r.so
|
||||
libldap.so
|
||||
liblibreofficekitgtk.so
|
||||
libLLVM-3.9.1.so
|
||||
libLLVM-3.9.so
|
||||
liblpsolve55.so
|
||||
libLTO.so
|
||||
liblua-5.1.so
|
||||
liblua-5.3.so
|
||||
liblua.so
|
||||
liblvm2app.so
|
||||
liblvm2cmd.so
|
||||
libm-2.24.so
|
||||
libMathMLSolver.so
|
||||
libmemusage.so
|
||||
libminilzo.so
|
||||
libMonoPosixHelper.so
|
||||
libmozjs-17.0.so
|
||||
libmozjs-24.so
|
||||
libmozjs-38.so
|
||||
libmozjs.so
|
||||
libmvec-2.24.so
|
||||
libnetapi.so
|
||||
libnsl-2.24.so
|
||||
libnspr4.so
|
||||
libnss3.so
|
||||
libnssckbi.so
|
||||
libnssdbm3.so
|
||||
libnss_dns-2.24.so
|
||||
libnss_dns.so
|
||||
libnss_files-2.24.so
|
||||
libnss_files.so
|
||||
libnss_mdns4_minimal.so
|
||||
libnss_mdns4.so
|
||||
libnss_mdns6_minimal.so
|
||||
libnss_mdns6.so
|
||||
libnss_mdns_minimal.so
|
||||
libnss_mdns.so
|
||||
libnss_myhostname.so
|
||||
libnss_mymachines.so
|
||||
libnsspem.so
|
||||
libnss_resolve.so
|
||||
libnss_sss.so
|
||||
libnsssysinit.so
|
||||
libnssutil3.so
|
||||
libnvidia-compiler.so
|
||||
libnvidia-eglcore.so
|
||||
libnvidia-fatbinaryloader.so
|
||||
libnvidia-glcore.so
|
||||
libnvidia-glsi.so
|
||||
libnvidia-gtk2.so
|
||||
libnvidia-gtk3.so
|
||||
libnvidia-tls.so
|
||||
libopcodes-2.26.1-1.fc25.so
|
||||
libopcodes.so
|
||||
libOpenCOLLADABaseUtils.so
|
||||
libOpenCOLLADAFramework.so
|
||||
libOpenCOLLADASaxFrameworkLoader.so
|
||||
libOpenCOLLADAStreamWriter.so
|
||||
libpangosharpglue-2.so
|
||||
libpasswdqc.so
|
||||
libpcprofile.so
|
||||
libplc4.so
|
||||
libplds4.so
|
||||
libpng.so
|
||||
libpthread-2.24.so
|
||||
libpython3.so
|
||||
libQt3Support_debug.so
|
||||
libQtCLucene_debug.so
|
||||
libqtconfiguration.so
|
||||
libQtCore_debug.so
|
||||
libQtDBus_debug.so
|
||||
libQtDeclarative_debug.so
|
||||
libQtDesignerComponents_debug.so
|
||||
libQtDesigner_debug.so
|
||||
libQtGui_debug.so
|
||||
libQtHelp_debug.so
|
||||
libQtMultimedia_debug.so
|
||||
libQtNetwork_debug.so
|
||||
libQtOpenGL_debug.so
|
||||
libQtScript_debug.so
|
||||
libQtScriptTools_debug.so
|
||||
libQtSql_debug.so
|
||||
libQtSvg_debug.so
|
||||
libQtTest_debug.so
|
||||
libQtXml_debug.so
|
||||
libQtXmlPatterns_debug.so
|
||||
libquvi-0.9-0.9.4.so
|
||||
libqwt5-qt4.so
|
||||
libreg.so
|
||||
librepo.so
|
||||
libresolv-2.24.so
|
||||
librhash.so
|
||||
librt-2.24.so
|
||||
libsamba-errors.so
|
||||
libSDL2_image.so
|
||||
libSDL2.so
|
||||
libSDL.so
|
||||
libSegFault.so
|
||||
libsemanage.so
|
||||
libslapi.so
|
||||
libsmbconf.so
|
||||
libsmbldap.so
|
||||
libsmime3.so
|
||||
libsoftokn3.chk
|
||||
libsoftokn3.so
|
||||
libsolvext.so
|
||||
libsolv.so
|
||||
libssl3.so
|
||||
libsss_sudo.so
|
||||
libtcl8.6.so
|
||||
libtermcap.so
|
||||
libthread_db-1.0.so
|
||||
libthrift-0.9.1.so
|
||||
libthriftqt.so
|
||||
libthrift.so
|
||||
libthriftz-0.9.1.so
|
||||
libthriftz.so
|
||||
libtk8.6.so
|
||||
libtxc_dxtn.so
|
||||
libuniconf.so
|
||||
libUTF.so
|
||||
libutil-2.24.so
|
||||
libvdpau_nvidia.so
|
||||
libwvbase.so
|
||||
libwvdbus.so
|
||||
libwvstreams.so
|
||||
libwvutils.so
|
||||
libXaw.so
|
||||
libxerces-c-3.1.so
|
||||
LLVMgold.so
|
||||
LLVMHello.so
|
||||
p11-kit-proxy.so
|
||||
p11-kit-trust.so
|
||||
ld-2.26.3.4so
|
||||
libbsd.so.0.8.6.1.1
|
||||
libc-2.26.3.so
|
||||
libcom_err.so.2.1.1
|
||||
libcrypt-2.26.1.so
|
||||
libdl-2.26.1.so
|
||||
libexpat.so.1.6.5.1
|
||||
libgcc_s.so.1.1
|
||||
libgcrypt.so.20.1.8.1
|
||||
libgpg-error.so.0.22.0.3
|
||||
libidn.so.11.6.16.5
|
||||
libkeyutils.so.1.5.7
|
||||
liblzma.so.5.2.2.3
|
||||
libm-2.26.4.so
|
||||
libnsl-2.26.6.so
|
||||
libpcre.so.3.13.3.5
|
||||
libpthread-2.26.7.so
|
||||
libresolv-2.26.3.so
|
||||
librt-2.26.3.4.so
|
||||
libselinux.so.1.1.4.1
|
||||
libsystemd.so.0.19.0.4.2
|
||||
libtinfo.so.5.9.4.2
|
||||
libudev.so.1.6.6.4.7
|
||||
libwrap.so.0.7.6.1.5
|
||||
libz.so.1.2.1.1.2.4
|
||||
|
||||
|
@ -19,5 +19,5 @@ extern CatCommand follow_steam;
|
||||
extern unsigned steamid;
|
||||
void DrawTick();
|
||||
void WorldTick();
|
||||
int ClassPriority(CachedEntity* ent);
|
||||
int ClassPriority(CachedEntity *ent);
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ float DistToSqr(CachedEntity *entity);
|
||||
void fClampAngle(Vector &qaAng);
|
||||
// const char* MakeInfoString(IClientEntity* player);
|
||||
bool GetProjectileData(CachedEntity *weapon, float &speed, float &gravity);
|
||||
bool IsVectorVisible(Vector a, Vector b);
|
||||
bool IsVectorVisible(Vector a, Vector b, bool enviroment_only = false);
|
||||
bool IsSentryBuster(CachedEntity *ent);
|
||||
char *strfmt(const char *fmt, ...);
|
||||
// TODO move that to weaponid.h
|
||||
|
@ -117,7 +117,8 @@ void runcfg()
|
||||
continue;
|
||||
if (i->GetBase() != std::string(i->GetString()))
|
||||
{
|
||||
file << CON_PREFIX << i->name << " \"" << i->GetString() << "\"\n";
|
||||
file << CON_PREFIX << i->name << " \"" << i->GetString()
|
||||
<< "\"\n";
|
||||
}
|
||||
}
|
||||
file.close();
|
||||
|
@ -321,6 +321,7 @@ void hack::Initialize()
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
installSignal(SIGSEGV);
|
||||
installSignal(SIGABRT);
|
||||
installSignal(SIGINT);
|
||||
time_injected = time(nullptr);
|
||||
/*passwd *pwd = getpwuid(getuid());
|
||||
char *logname = strfmt("/tmp/cathook-game-stdout-%s-%u.log", pwd->pw_name,
|
||||
|
@ -175,11 +175,13 @@ bool projectileAimbotRequired;
|
||||
// This array will store calculated projectile/hitscan predictions
|
||||
// for current frame, to avoid performing them again
|
||||
AimbotCalculatedData_s calculated_data_array[2048]{};
|
||||
#define IsMelee GetWeaponMode() == weapon_melee
|
||||
bool BacktrackAimbot()
|
||||
{
|
||||
|
||||
if (!hacks::shared::backtrack::enable)
|
||||
return false;
|
||||
if (aimkey && !aimkey.KeyDown())
|
||||
return false;
|
||||
|
||||
if (CE_BAD(LOCAL_E) || !LOCAL_E->m_bAlivePlayer() || !CanShoot())
|
||||
return false;
|
||||
@ -190,57 +192,21 @@ bool BacktrackAimbot()
|
||||
|
||||
int iBestTarget = hacks::shared::backtrack::iBestTarget;
|
||||
if (iBestTarget == -1)
|
||||
{
|
||||
|
||||
float bestscr = 999.0f;
|
||||
for (int i = 0; i < g_IEngine->GetMaxClients(); i++)
|
||||
{
|
||||
if (i == g_pLocalPlayer->entity_idx)
|
||||
continue;
|
||||
CachedEntity *it = ENTITY(i);
|
||||
if (CE_BAD(it) || !it->m_bAlivePlayer() ||
|
||||
it->m_Type() != ENTITY_PLAYER)
|
||||
continue;
|
||||
if (it->m_iTeam() == LOCAL_E->m_iTeam())
|
||||
continue;
|
||||
if (!hacks::shared::backtrack::headPositions[iBestTarget][0].hitboxpos.z)
|
||||
continue;
|
||||
if (!it->hitboxes.GetHitbox(0))
|
||||
continue;
|
||||
if (IsPlayerInvisible(it) && ignore_cloak)
|
||||
continue;
|
||||
float scr =
|
||||
GetFov(g_pLocalPlayer->v_OrigViewangles, g_pLocalPlayer->v_Eye,
|
||||
it->hitboxes.GetHitbox(0)->center);
|
||||
if (scr < bestscr)
|
||||
{
|
||||
iBestTarget = it->m_IDX;
|
||||
bestscr = scr;
|
||||
}
|
||||
}
|
||||
if (iBestTarget == -1)
|
||||
return true;
|
||||
|
||||
};
|
||||
|
||||
for (int t = 0; t < hacks::shared::backtrack::ticks; ++t)
|
||||
hacks::shared::backtrack::sorted_ticks[t] =
|
||||
hacks::shared::backtrack::BestTickData{ hacks::shared::backtrack::headPositions[iBestTarget][t].tickcount, t };
|
||||
std::sort(hacks::shared::backtrack::sorted_ticks, hacks::shared::backtrack::sorted_ticks + hacks::shared::backtrack::ticks);
|
||||
return true;
|
||||
int tickcnt = 0;
|
||||
|
||||
for (auto i : hacks::shared::backtrack::headPositions[iBestTarget])
|
||||
{
|
||||
bool good_tick = false;
|
||||
for (int j = 0; j < 12; ++j)
|
||||
if (tickcnt == hacks::shared::backtrack::sorted_ticks[j].tick)
|
||||
if (tickcnt == hacks::shared::backtrack::sorted_ticks[j].tick && hacks::shared::backtrack::sorted_ticks[j].tickcount != FLT_MAX)
|
||||
good_tick = true;
|
||||
tickcnt++;
|
||||
if (!i.hitboxpos.z)
|
||||
continue;
|
||||
if (!good_tick)
|
||||
continue;
|
||||
if (!IsVectorVisible(g_pLocalPlayer->v_Eye, i.hitboxpos))
|
||||
if (!IsVectorVisible(g_pLocalPlayer->v_Eye, i.hitboxpos, true))
|
||||
continue;
|
||||
float scr = abs(g_pLocalPlayer->v_OrigViewangles.y - i.viewangles);
|
||||
|
||||
@ -263,9 +229,12 @@ bool BacktrackAimbot()
|
||||
DoSlowAim(angles2);
|
||||
else if (silent)
|
||||
g_pLocalPlayer->bUseSilentAngles = true;
|
||||
if (!slow_aim)
|
||||
slow_can_shoot = true;
|
||||
// Set angles
|
||||
g_pUserCmd->viewangles = angles2;
|
||||
g_pUserCmd->buttons |= IN_ATTACK;
|
||||
if (autoshoot && slow_can_shoot)
|
||||
g_pUserCmd->buttons |= IN_ATTACK;
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
@ -289,19 +258,36 @@ void CreateMove()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We do this as we need to pass whether the aimkey allows aiming to both
|
||||
// the find target and aiming system. If we just call the func than toggle
|
||||
// aimkey would break so we save it to a var to use it twice
|
||||
bool aimkey_status = UpdateAimkey();
|
||||
// Refresh our best target
|
||||
CachedEntity *target_entity = RetrieveBestTarget(aimkey_status);
|
||||
if (CE_BAD(target_entity) || !foundTarget)
|
||||
return;
|
||||
// Auto-zoom
|
||||
IF_GAME(IsTF())
|
||||
{
|
||||
if (auto_zoom)
|
||||
{
|
||||
if (g_pLocalPlayer->holding_sniper_rifle)
|
||||
{
|
||||
if (not g_pLocalPlayer->bZoomed)
|
||||
{
|
||||
g_pUserCmd->buttons |= IN_ATTACK2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// check if we need to run projectile Aimbot code
|
||||
projectileAimbotRequired = false;
|
||||
if (projectile_aimbot &&
|
||||
(g_pLocalPlayer->weapon_mode == weapon_projectile ||
|
||||
g_pLocalPlayer->weapon_mode == weapon_throwable))
|
||||
{
|
||||
projectileAimbotRequired = true;
|
||||
}
|
||||
// We do this as we need to pass whether the aimkey allows aiming to both
|
||||
// the find target and aiming system. If we just call the func than toggle
|
||||
// aimkey would break so we save it to a var to use it twice
|
||||
bool aimkey_status = UpdateAimkey();
|
||||
|
||||
|
||||
|
||||
// Local player check + Aimkey
|
||||
if (!aimkey_status || !ShouldAim())
|
||||
@ -319,33 +305,14 @@ void CreateMove()
|
||||
if (proj_gravity)
|
||||
cur_proj_grav = float(proj_gravity);
|
||||
}
|
||||
|
||||
if (BacktrackAimbot())
|
||||
return;
|
||||
// Refresh our best target
|
||||
CachedEntity *target_entity = RetrieveBestTarget(aimkey_status);
|
||||
if (CE_BAD(target_entity) || !foundTarget)
|
||||
return;
|
||||
return;
|
||||
|
||||
if (!g_IEntityList->GetClientEntity(target_entity->m_IDX))
|
||||
return;
|
||||
if (!target_entity->hitboxes.GetHitbox(
|
||||
calculated_data_array[target_entity->m_IDX].hitbox))
|
||||
return;
|
||||
// Auto-zoom
|
||||
IF_GAME(IsTF())
|
||||
{
|
||||
if (auto_zoom)
|
||||
{
|
||||
if (g_pLocalPlayer->holding_sniper_rifle)
|
||||
{
|
||||
if (not g_pLocalPlayer->bZoomed)
|
||||
{
|
||||
g_pUserCmd->buttons |= IN_ATTACK2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if ENABLE_VISUALS
|
||||
static effect_chams::EffectChams Effectchams;
|
||||
|
@ -15,14 +15,18 @@ CatVar communicate(CV_SWITCH, "identify", "0", "identify",
|
||||
"Auto identify for other cathook users");
|
||||
CatVar enabled(CV_SWITCH, "aa_enabled", "0", "Anti-Aim",
|
||||
"Master AntiAim switch");
|
||||
static CatVar crouch(CV_SWITCH, "aa_fakecrouch", "0", "Fake Crouch", "Fake crouch");
|
||||
static CatVar yaw(CV_FLOAT, "aa_yaw", "0.0", "Yaw", "Static yaw (left/right)",
|
||||
360.0);
|
||||
static CatVar pitch(CV_FLOAT, "aa_pitch", "-89.0", "Pitch",
|
||||
"Static pitch (up/down)", -89.0, 89.0);
|
||||
static CatEnum yaw_mode_enum({ "KEEP", "STATIC", "JITTER", "BIGRANDOM",
|
||||
"RANDOM", "SPIN", "OFFSETKEEP", "EDGE", "HECK",
|
||||
"FAKESIDEWAYS", "FAKERIGHT", "FAKELEFT",
|
||||
"FAKEFUCK" });
|
||||
static CatEnum yaw_mode_enum({ "KEEP", "STATIC", "JITTER",
|
||||
"BIGRANDOM", "RANDOM", "SPIN",
|
||||
"OFFSETKEEP", "EDGE", "HECK",
|
||||
"FAKEKEEP", "FAKESTATIC", "FAKEJITTER",
|
||||
"FAKEBIGRANDOM", "FAKERANDOM", "FAKESPIN",
|
||||
"FAKEOFFSETKEEP", "FAKEEDGE", "FAKEHECK", "FAKESIDEWAYS", "FAKELEFT",
|
||||
"FAKERIGHT", "FAKEREVERSEEDGE"});
|
||||
static CatEnum pitch_mode_enum({ "KEEP", "STATIC", "JITTER", "RANDOM", "FLIP",
|
||||
"FAKEFLIP", "FAKEUP", "FAKEDOWN", "FAKECENTER",
|
||||
"UP", "DOWN", "HECK" });
|
||||
@ -47,7 +51,7 @@ static CatVar aaaa_interval_random_high(CV_FLOAT, "aa_aaaa_interval_high", "15",
|
||||
static CatVar aaaa_interval_random_low(CV_FLOAT, "aa_aaaa_interval_low", "3",
|
||||
"Interval Floor",
|
||||
"Lower bound for random AAAA interval");
|
||||
static CatEnum aaaa_modes_enum({ "(FAKE)UP", "(FAKE)DOWN" });
|
||||
static CatEnum aaaa_modes_enum({ "(FAKE)UP", "(FAKE)DOWN", "(FAKE)CENTER" });
|
||||
static CatVar aaaa_mode(aaaa_modes_enum, "aa_aaaa_mode", "0", "Mode",
|
||||
"Anti-Anti-Anti-Aim Mode");
|
||||
static CatVar aaaa_flip_key(CV_KEY, "aa_aaaa_flip_key", "0", "Flip key",
|
||||
@ -69,6 +73,8 @@ float GetAAAAPitch()
|
||||
return aaaa_stage ? -271 : -89;
|
||||
case 1:
|
||||
return aaaa_stage ? 271 : 89;
|
||||
case 2:
|
||||
return aaaa_stage ? -180 : 180;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -382,6 +388,37 @@ float useEdge(float edgeViewAngle)
|
||||
Timer delay{};
|
||||
int val = 0;
|
||||
int value[32] = { 0 };
|
||||
void FakeCrouch(CUserCmd * cmd)
|
||||
{
|
||||
if (!crouch)
|
||||
return;
|
||||
if (cmd->buttons & IN_ATTACK)
|
||||
{
|
||||
*bSendPackets = true;
|
||||
return;
|
||||
}
|
||||
static bool bDuck = false;
|
||||
|
||||
static int waittime = 0;
|
||||
|
||||
if (waittime)
|
||||
{
|
||||
waittime--;
|
||||
return;
|
||||
}
|
||||
bDuck = !bDuck;
|
||||
|
||||
if (bDuck)
|
||||
{
|
||||
cmd->buttons |= IN_DUCK;
|
||||
*bSendPackets = false;
|
||||
waittime = 15;
|
||||
}
|
||||
else{
|
||||
cmd->buttons &= ~IN_DUCK;
|
||||
*bSendPackets = true;
|
||||
}
|
||||
}
|
||||
void ProcessUserCmd(CUserCmd *cmd)
|
||||
{
|
||||
if (!enabled)
|
||||
@ -389,7 +426,9 @@ void ProcessUserCmd(CUserCmd *cmd)
|
||||
if (!ShouldAA(cmd))
|
||||
return;
|
||||
static bool angstate = true;
|
||||
if ((int) yaw_mode >= 9)
|
||||
static bool keepmode = true;
|
||||
keepmode = !keepmode;
|
||||
if ((int) yaw_mode >= 8)
|
||||
angstate = !angstate;
|
||||
else
|
||||
angstate = true;
|
||||
@ -443,23 +482,102 @@ void ProcessUserCmd(CUserCmd *cmd)
|
||||
if (findEdge(y))
|
||||
y = useEdge(y);
|
||||
break;
|
||||
case 8:
|
||||
case 8: // HECK
|
||||
FuckYaw(y);
|
||||
clamp = false;
|
||||
break;
|
||||
case 9:
|
||||
case 9: // Fake keep (basically just spam random angles)
|
||||
if (keepmode && !*bSendPackets)
|
||||
{
|
||||
cur_yaw += (float) spin;
|
||||
if (cur_yaw > 180)
|
||||
cur_yaw = -180;
|
||||
if (cur_yaw < -180)
|
||||
cur_yaw = 180;
|
||||
y = cur_yaw;
|
||||
}
|
||||
else if (!keepmode && !*bSendPackets)
|
||||
{
|
||||
if (flip)
|
||||
y += 90;
|
||||
else
|
||||
y -= 90;
|
||||
break;
|
||||
flip = !flip;
|
||||
}
|
||||
clamp = false;
|
||||
break;
|
||||
case 10: // Fake Static
|
||||
if (*bSendPackets)
|
||||
y = (float) yaw;
|
||||
break;
|
||||
case 11: // Fake jitter
|
||||
if (*bSendPackets)
|
||||
{
|
||||
if (flip)
|
||||
y += 90;
|
||||
else
|
||||
y -= 90;
|
||||
}
|
||||
break;
|
||||
case 12: // Fake bigrandom
|
||||
if (*bSendPackets)
|
||||
{
|
||||
y = RandFloatRange(-65536.0f, 65536.0f);
|
||||
clamp = false;
|
||||
}
|
||||
break;
|
||||
case 13: // Fake random
|
||||
if (*bSendPackets)
|
||||
y = RandFloatRange(-180.0f, 180.0f);
|
||||
break;
|
||||
case 14: // Fake spin
|
||||
if (*bSendPackets)
|
||||
{
|
||||
cur_yaw += (float) spin;
|
||||
if (cur_yaw > 180)
|
||||
cur_yaw = -180;
|
||||
if (cur_yaw < -180)
|
||||
cur_yaw = 180;
|
||||
y = cur_yaw;
|
||||
}
|
||||
break;
|
||||
case 15: // Fake offsetkeep
|
||||
if (*bSendPackets)
|
||||
y += (float) yaw;
|
||||
break;
|
||||
case 16: // Fake edge
|
||||
if (*bSendPackets)
|
||||
{
|
||||
// Attemt to find an edge and if found, edge
|
||||
if (findEdge(y))
|
||||
y = useEdge(y);
|
||||
}
|
||||
break;
|
||||
case 17: // Fake heck
|
||||
if (*bSendPackets)
|
||||
{
|
||||
FuckYaw(y);
|
||||
clamp = false;
|
||||
}
|
||||
break;
|
||||
case 18: // Fake sideways
|
||||
y += *bSendPackets ? 90.0f : -90.0f;
|
||||
break;
|
||||
case 10:
|
||||
y += *bSendPackets ? 0.0f : 90.0f;
|
||||
case 19: // Fake left
|
||||
y += !*bSendPackets ? 0.0f : -90.0f;
|
||||
break;
|
||||
case 11:
|
||||
y += *bSendPackets ? 0.0f : -90.0f;
|
||||
break;
|
||||
case 12:
|
||||
if (*bSendPackets)
|
||||
FuckYaw(y);
|
||||
case 20: // Fake right
|
||||
y += !*bSendPackets ? 0.0f : 90.0f;
|
||||
break;
|
||||
case 21: // Fake reverse edge
|
||||
if (*bSendPackets)
|
||||
{
|
||||
// Attemt to find an edge and if found, edge
|
||||
if (findEdge(y))
|
||||
y = useEdge(y) + 180.0f;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -506,7 +624,8 @@ void ProcessUserCmd(CUserCmd *cmd)
|
||||
FuckPitch(p);
|
||||
clamp = false;
|
||||
}
|
||||
flip = !flip;
|
||||
if (*bSendPackets)
|
||||
flip = !flip;
|
||||
if (clamp)
|
||||
fClampAngle(cmd->viewangles);
|
||||
if (roll)
|
||||
@ -518,5 +637,6 @@ void ProcessUserCmd(CUserCmd *cmd)
|
||||
p = GetAAAAPitch();
|
||||
}
|
||||
g_pLocalPlayer->bUseSilentAngles = true;
|
||||
FakeCrouch(cmd);
|
||||
}
|
||||
}
|
||||
|
@ -71,6 +71,7 @@ void CreateMove()
|
||||
Vector &angles = NET_VECTOR(tar, netvar.m_angEyeAngles);
|
||||
float &simtime = NET_FLOAT(tar, netvar.m_flSimulationTime);
|
||||
angles.y = i.viewangles;
|
||||
simtime = i.simtime;
|
||||
g_pUserCmd->tick_count = i.tickcount;
|
||||
g_pUserCmd->buttons |= IN_ATTACK;
|
||||
break;
|
||||
|
@ -343,12 +343,17 @@ void DoResistSwitching()
|
||||
|
||||
int force_healing_target{ 0 };
|
||||
static CatCommand heal_steamid(
|
||||
"autoheal_heal_steamid",
|
||||
"Heals a player with SteamID",
|
||||
"autoheal_heal_steamid", "Heals a player with SteamID",
|
||||
[](const CCommand &args) {
|
||||
if (args.ArgC() < 2)
|
||||
{
|
||||
logging::Info("Invalid call!");
|
||||
force_healing_target = 0;
|
||||
return;
|
||||
}
|
||||
if (strtol(args.Arg(1), nullptr, 10) == 0x0)
|
||||
{
|
||||
force_healing_target = 0;
|
||||
return;
|
||||
}
|
||||
for (int i = 1; i <= 32 && i < HIGHEST_ENTITY; i++)
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "hacks/Backtrack.hpp"
|
||||
#include <boost/circular_buffer.hpp>
|
||||
#include <glez/draw.hpp>
|
||||
#define IsMelee GetWeaponMode() == weapon_melee
|
||||
|
||||
namespace hacks::shared::backtrack
|
||||
{
|
||||
@ -105,7 +106,7 @@ void Run()
|
||||
float bestFov = 99999;
|
||||
BestTick = 0;
|
||||
iBestTarget = -1;
|
||||
bool IsMelee = GetWeaponMode() == weapon_melee;
|
||||
|
||||
float prev_distance = 9999;
|
||||
|
||||
for (int i = 1; i < g_IEngine->GetMaxClients(); i++)
|
||||
@ -157,18 +158,23 @@ void Run()
|
||||
{
|
||||
int bestTick = 0;
|
||||
float tempFOV = 9999;
|
||||
float bestFOV = 40.0f;
|
||||
float bestFOV = 180.0f;
|
||||
float distance, prev_distance_ticks = 9999;
|
||||
|
||||
for (int i = 0; i < 12; ++i)
|
||||
sorted_ticks[i] = BestTickData{FLT_MAX, i};
|
||||
for (int t = 0; t < ticks; ++t)
|
||||
sorted_ticks[t] =
|
||||
BestTickData{ headPositions[iBestTarget][t].tickcount, t };
|
||||
{
|
||||
if (headPositions[iBestTarget][t].tickcount)
|
||||
sorted_ticks[t] =
|
||||
BestTickData{ headPositions[iBestTarget][t].tickcount, t };
|
||||
}
|
||||
std::sort(sorted_ticks, sorted_ticks + ticks);
|
||||
for (int t = 0; t < ticks; ++t)
|
||||
{
|
||||
bool good_tick = false;
|
||||
for (int i = 0; i < 12; ++i)
|
||||
if (t == sorted_ticks[i].tick)
|
||||
if (t == sorted_ticks[i].tick && sorted_ticks[i].tickcount != FLT_MAX)
|
||||
good_tick = true;
|
||||
if (!good_tick)
|
||||
continue;
|
||||
|
@ -183,7 +183,7 @@ void WorldTick()
|
||||
if (CE_BAD(entity)) // Exist + dormant
|
||||
continue;
|
||||
if (i == follow_target)
|
||||
break;
|
||||
continue;
|
||||
if (entity->m_Type() != ENTITY_PLAYER)
|
||||
continue;
|
||||
if (steamid != entity->player_info.friendsID) // steamid check
|
||||
@ -209,11 +209,11 @@ void WorldTick()
|
||||
}
|
||||
// If we dont have a follow target from that, we look again for someone
|
||||
// else who is suitable
|
||||
if ((!follow_target || change || ClassPriority(ENTITY(follow_target)) < 6) && roambot)
|
||||
if ((!follow_target || change || (ClassPriority(ENTITY(follow_target)) < 6 && ENTITY(follow_target)->player_info.friendsID != steamid)) && roambot)
|
||||
{
|
||||
// Try to get a new target
|
||||
auto ent_count = HIGHEST_ENTITY;
|
||||
for (int i = 0; i < HIGHEST_ENTITY; i++)
|
||||
auto ent_count = followcart ? HIGHEST_ENTITY : g_IEngine->GetMaxClients();
|
||||
for (int i = 0; i < ent_count; i++)
|
||||
{
|
||||
auto entity = ENTITY(i);
|
||||
if (CE_BAD(entity)) // Exist + dormant
|
||||
|
@ -146,7 +146,7 @@ Vector VischeckWall(CachedEntity *player, CachedEntity *target, float maxdist,
|
||||
break;
|
||||
}
|
||||
// check if player can see the players virtualOrigin
|
||||
if (!IsVectorVisible(origin, virtualOrigin))
|
||||
if (!IsVectorVisible(origin, virtualOrigin, true))
|
||||
continue;
|
||||
// check if the virtualOrigin can see the target
|
||||
if (!VisCheckEntFromEntVector(virtualOrigin, player, target))
|
||||
@ -976,15 +976,20 @@ netvar.iHealth));
|
||||
return buf;
|
||||
}*/
|
||||
|
||||
bool IsVectorVisible(Vector origin, Vector target)
|
||||
bool IsVectorVisible(Vector origin, Vector target, bool enviroment_only)
|
||||
{
|
||||
trace_t trace_visible;
|
||||
Ray_t ray;
|
||||
|
||||
trace::filter_no_player.SetSelf(RAW_ENT(g_pLocalPlayer->entity));
|
||||
ray.Init(origin, target);
|
||||
g_ITrace->TraceRay(ray, MASK_SHOT_HULL, &trace::filter_no_player,
|
||||
if (!enviroment_only)
|
||||
g_ITrace->TraceRay(ray, MASK_SHOT_HULL, &trace::filter_no_player,
|
||||
&trace_visible);
|
||||
else
|
||||
g_ITrace->TraceRay(ray, 0x4200400B, &trace::filter_no_player,
|
||||
&trace_visible);
|
||||
|
||||
return (trace_visible.fraction == 1.0f);
|
||||
}
|
||||
|
||||
|
@ -97,20 +97,13 @@ DEFINE_HOOKED_METHOD(LevelInit, void, void *this_, const char *name)
|
||||
hacks::shared::lagexploit::bcalled = false;
|
||||
#endif
|
||||
#if ENABLE_VISUALS
|
||||
typedef bool *(*LoadNamedSkys_Fn)(const char *);
|
||||
typedef bool (*LoadNamedSkys_Fn)(const char *);
|
||||
uintptr_t addr = gSignatures.GetEngineSignature(
|
||||
"55 89 E5 57 31 FF 56 8D B5 ? ? ? ? 53 81 EC 6C 01 00 00");
|
||||
static LoadNamedSkys_Fn LoadNamedSkys = LoadNamedSkys_Fn(addr);
|
||||
bool succ;
|
||||
logging::Info("Going to load the skybox");
|
||||
#ifdef __clang__
|
||||
asm("movl %1, %%edi; push skynum[(int) skybox_changer]; call %%edi; mov "
|
||||
"%%eax, %0; add %%esp, 4h"
|
||||
: "=r"(succ)
|
||||
: "r"(LoadNamedSkys));
|
||||
#else
|
||||
succ = LoadNamedSkys(skynum[(int) skybox_changer]);
|
||||
#endif
|
||||
logging::Info("Loaded Skybox: %s", succ ? "true" : "false");
|
||||
ConVar *holiday = g_ICvar->FindVar("tf_forced_holiday");
|
||||
|
||||
|
@ -7,6 +7,11 @@
|
||||
|
||||
#include "common.hpp"
|
||||
|
||||
CatCommand printfov(
|
||||
"fov_print", "Dump achievements to file (development)", []() {
|
||||
if (CE_GOOD(LOCAL_E))
|
||||
logging::Info("%d", CE_INT(LOCAL_E, netvar.iFOV));
|
||||
});
|
||||
void LocalPlayer::Update()
|
||||
{
|
||||
CachedEntity *wep;
|
||||
@ -40,7 +45,7 @@ void LocalPlayer::Update()
|
||||
health = CE_INT(entity, netvar.iHealth);
|
||||
this->bUseSilentAngles = false;
|
||||
bZoomed = CE_INT(entity, netvar.iFOV) ==
|
||||
20; //!= NET_INT(entity, netvar.iDefaultFOV);
|
||||
20.0f; //!= NET_INT(entity, netvar.iDefaultFOV);
|
||||
if (bZoomed)
|
||||
{
|
||||
if (flZoomBegin == 0.0f)
|
||||
|
@ -58,7 +58,7 @@ int re::CTFPartyClient::LoadSavedCasualCriteria()
|
||||
{
|
||||
typedef int (*LoadSavedCasualCriteria_t)(re::CTFPartyClient *);
|
||||
uintptr_t addr = gSignatures.GetClientSignature(
|
||||
"55 89 E5 83 EC ? 8B 45 ? 8B 50 ? C6 80");
|
||||
"55 89 E5 8B 45 ? 5D 8B 80 ? ? ? ? C3 66 90 55 89 E5 8B 45 ? 5D 0F B6 80 ? ? ? ? C3 90 55 89 E5 56") - 0x40;
|
||||
LoadSavedCasualCriteria_t LoadSavedCasualCriteria_fn =
|
||||
LoadSavedCasualCriteria_t(addr);
|
||||
|
||||
|
@ -79,6 +79,7 @@ void trace::FilterNoPlayer::SetSelf(IClientEntity *self)
|
||||
|
||||
bool trace::FilterNoPlayer::ShouldHitEntity(IHandleEntity *handle, int mask)
|
||||
{
|
||||
return false;
|
||||
IClientEntity *entity;
|
||||
ClientClass *clazz;
|
||||
|
||||
|
Reference in New Issue
Block a user