Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5717c7999c | ||
|
|
860be9ac4c | ||
|
|
03af6d458c |
@@ -81,4 +81,5 @@ namespace Config {
|
||||
bool always_on_silent_aim = false;
|
||||
float silent_aim_smooth_slider = 0.0f; // Новый параметр для ползунка смуза
|
||||
bool silent_shooterAfterAim = false; // Аналог shooterAfterAim для сайлент аимбота
|
||||
bool silent_rage = false; // По умолчанию выключен
|
||||
}
|
||||
|
||||
@@ -88,4 +88,5 @@ namespace Config {
|
||||
extern bool always_on_silent_aim;
|
||||
extern float silent_aim_smooth_slider; // Новый параметр для ползунка смуза
|
||||
extern bool silent_shooterAfterAim; // Аналог shooterAfterAim для сайлент аимбота
|
||||
extern bool silent_rage; // Включает постоянный поиск цели (rage-режим)
|
||||
}
|
||||
|
||||
@@ -136,6 +136,7 @@ namespace internal_config
|
||||
j["triggerbot_key"] = Config::triggerbot_key;
|
||||
j["triggerbot_alt_key"] = Config::triggerbot_alt_key;
|
||||
j["triggerbot_delay"] = Config::triggerbot_delay;
|
||||
j["silent_rage"] = Config::silent_rage;
|
||||
|
||||
j["enemyChamsInvisible"] = Config::enemyChamsInvisible;
|
||||
j["enemyChams"] = Config::enemyChams;
|
||||
@@ -252,6 +253,7 @@ namespace internal_config
|
||||
Config::triggerbot_key = j.value("triggerbot_key", 0x05);
|
||||
Config::triggerbot_alt_key = j.value("triggerbot_alt_key", 0x06);
|
||||
Config::triggerbot_delay = j.value("triggerbot_delay", 0.0f);
|
||||
Config::silent_rage = j.value("silent_rage", false);
|
||||
|
||||
Config::antiflash = j.value("antiflash", false);
|
||||
|
||||
|
||||
@@ -1,29 +1,139 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include <array>
|
||||
#include "../../../templeware/utils/math/vector/vector.h"
|
||||
|
||||
struct CCmdQAngle {
|
||||
QAngle_t angValue;
|
||||
#define MEM_PAD(size) char _pad##__LINE__[size]
|
||||
|
||||
template <typename T>
|
||||
struct RepeatedPtrField_t {
|
||||
struct Rep_t {
|
||||
int nAllocatedSize;
|
||||
T* tElements[(std::numeric_limits<int>::max() - 2 * sizeof(int)) / sizeof(void*)];
|
||||
};
|
||||
void* pArena;
|
||||
int nCurrentSize;
|
||||
int nTotalSize;
|
||||
Rep_t* pRep;
|
||||
};
|
||||
|
||||
class CBaseUserCmdPB {
|
||||
class CBasePB {
|
||||
public:
|
||||
char pad_0x00[0x40];
|
||||
CCmdQAngle* pViewangles; // 0x40
|
||||
// ... другие поля не нужны для silent aim
|
||||
MEM_PAD(0x8); // 0x0 VTABLE
|
||||
std::uint32_t nHasBits; // 0x8
|
||||
std::uint64_t nCachedBits; // 0xC
|
||||
void SetBits(std::uint64_t nBits) { nCachedBits |= nBits; }
|
||||
};
|
||||
static_assert(sizeof(CBasePB) == 0x18);
|
||||
|
||||
class CMsgQAngle : public CBasePB {
|
||||
public:
|
||||
QAngle_t angValue; // 0x18
|
||||
};
|
||||
static_assert(sizeof(CMsgQAngle) == 0x28);
|
||||
|
||||
class CMsgVector : public CBasePB {
|
||||
public:
|
||||
Vector_t vecValue; // 0x18
|
||||
};
|
||||
static_assert(sizeof(CMsgVector) == 0x28);
|
||||
|
||||
class CCSGOInterpolationInfoPB : public CBasePB {
|
||||
public:
|
||||
float flFraction; // 0x18
|
||||
int nSrcTick; // 0x1C
|
||||
int nDstTick; // 0x20
|
||||
};
|
||||
static_assert(sizeof(CCSGOInterpolationInfoPB) == 0x28);
|
||||
|
||||
class CCSGOInputHistoryEntryPB : public CBasePB {
|
||||
public:
|
||||
CMsgQAngle* pViewAngles; // 0x18
|
||||
CMsgVector* pShootPosition; // 0x20
|
||||
CMsgVector* pTargetHeadPositionCheck; // 0x28
|
||||
CMsgVector* pTargetAbsPositionCheck; // 0x30
|
||||
CMsgQAngle* pTargetAngPositionCheck; // 0x38
|
||||
CCSGOInterpolationInfoPB* cl_interp; // 0x40
|
||||
CCSGOInterpolationInfoPB* sv_interp0; // 0x48
|
||||
CCSGOInterpolationInfoPB* sv_interp1; // 0x50
|
||||
CCSGOInterpolationInfoPB* player_interp; // 0x58
|
||||
int nRenderTickCount; // 0x60
|
||||
float flRenderTickFraction; // 0x64
|
||||
int nPlayerTickCount; // 0x68
|
||||
float flPlayerTickFraction; // 0x6C
|
||||
int nFrameNumber; // 0x70
|
||||
int nTargetEntIndex; // 0x74
|
||||
};
|
||||
static_assert(sizeof(CCSGOInputHistoryEntryPB) == 0x78);
|
||||
|
||||
struct CInButtonState {
|
||||
MEM_PAD(0x8); // 0x0 VTABLE
|
||||
std::uint64_t nValue; // 0x8
|
||||
std::uint64_t nValueChanged; // 0x10
|
||||
std::uint64_t nValueScroll; // 0x18
|
||||
};
|
||||
static_assert(sizeof(CInButtonState) == 0x20);
|
||||
|
||||
class CBaseUserCmdPB : public CBasePB {
|
||||
public:
|
||||
RepeatedPtrField_t<void*> subtickMovesField;
|
||||
std::string* strMoveCrc;
|
||||
CInButtonState* pInButtonState; // 0x20
|
||||
CMsgQAngle* pViewAngles; // 0x28
|
||||
std::int32_t nLegacyCommandNumber;
|
||||
std::int32_t nClientTick;
|
||||
float flForwardMove;
|
||||
float flSideMove;
|
||||
float flUpMove;
|
||||
std::int32_t nImpulse;
|
||||
std::int32_t nWeaponSelect;
|
||||
std::int32_t nRandomSeed;
|
||||
std::int32_t nMousedX;
|
||||
std::int32_t nMousedY;
|
||||
std::uint32_t nConsumedServerAngleChanges;
|
||||
std::int32_t nCmdFlags;
|
||||
std::uint32_t nPawnEntityHandle;
|
||||
};
|
||||
static_assert(sizeof(CBaseUserCmdPB) == 0x80);
|
||||
|
||||
class CCSGOUserCmdPB {
|
||||
public:
|
||||
char pad_0x00[0x18];
|
||||
CBaseUserCmdPB* pBase; // 0x18
|
||||
// ... другие поля не нужны для silent aim
|
||||
std::uint32_t nHasBits;
|
||||
std::uint64_t nCachedSize;
|
||||
RepeatedPtrField_t<CCSGOInputHistoryEntryPB> inputHistoryField;
|
||||
CBaseUserCmdPB* pBaseCmd;
|
||||
bool bLeftHandDesired;
|
||||
std::int32_t nAttack3StartHistoryIndex;
|
||||
std::int32_t nAttack1StartHistoryIndex;
|
||||
std::int32_t nAttack2StartHistoryIndex;
|
||||
void CheckAndSetBits(std::uint32_t nBits) {
|
||||
if (!(nHasBits & nBits))
|
||||
nHasBits |= nBits;
|
||||
}
|
||||
};
|
||||
static_assert(sizeof(CCSGOUserCmdPB) == 0x40);
|
||||
|
||||
class CUserCmd {
|
||||
public:
|
||||
char pad_0x00[0x18];
|
||||
CCSGOUserCmdPB pBase; // 0x18
|
||||
// ... другие поля не нужны для silent aim
|
||||
};
|
||||
MEM_PAD(0x8); // 0x0 VTABLE
|
||||
MEM_PAD(0x10); // 0x8
|
||||
CCSGOUserCmdPB csgoUserCmd; // 0x18
|
||||
CInButtonState nButtons; // 0x58
|
||||
MEM_PAD(0x20); // 0x78
|
||||
|
||||
CCSGOInputHistoryEntryPB* GetInputHistoryEntry(int nIndex) {
|
||||
if (nIndex >= csgoUserCmd.inputHistoryField.pRep->nAllocatedSize || nIndex >= csgoUserCmd.inputHistoryField.nCurrentSize)
|
||||
return nullptr;
|
||||
return csgoUserCmd.inputHistoryField.pRep->tElements[nIndex];
|
||||
}
|
||||
|
||||
void SetSubTickAngle(const QAngle_t& angView) {
|
||||
for (int i = 0; i < this->csgoUserCmd.inputHistoryField.pRep->nAllocatedSize; i++) {
|
||||
CCSGOInputHistoryEntryPB* pInputEntry = this->GetInputHistoryEntry(i);
|
||||
if (!pInputEntry || !pInputEntry->pViewAngles)
|
||||
continue;
|
||||
pInputEntry->pViewAngles->angValue = angView;
|
||||
pInputEntry->SetBits(0x1U); // INPUT_HISTORY_BITS_VIEWANGLES
|
||||
}
|
||||
}
|
||||
};
|
||||
static_assert(sizeof(CUserCmd) == 0x98);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,3 +4,4 @@
|
||||
|
||||
void Aimbot();
|
||||
void SilentAimbot(CUserCmd* pCmd);
|
||||
void Ver2Aimbot(CUserCmd* pCmd);
|
||||
|
||||
@@ -38,11 +38,13 @@ void* __fastcall H::hkLevelInit(void* pClientModeShared, const char* szNewMap) {
|
||||
return LevelInit.GetOriginal()(pClientModeShared, szNewMap);
|
||||
}
|
||||
|
||||
bool __fastcall H::hkCreateMove(void* pInput, int nSlot, void* pCmd) {
|
||||
//Aimbot();
|
||||
SilentAimbot(reinterpret_cast<CUserCmd*>(pCmd));
|
||||
bool __fastcall H::hkCreateMove(void* pInput, int nSlot, CUserCmd* pCmd) {
|
||||
SilentAimbot(pCmd);
|
||||
//Ver2Aimbot(pCmd);
|
||||
Triggerbot();
|
||||
return CreateMove.GetOriginal()(pInput, nSlot, pCmd);
|
||||
|
||||
return CreateMove.GetOriginal()(pInput, nSlot, pCmd);
|
||||
// return CreateMove.GetOriginal()(pInput, edx, nSlot, pCmd);
|
||||
}
|
||||
|
||||
void H::Hooks::init() {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#pragma once
|
||||
#include "../features/aim/CUserCmd.h"
|
||||
#include "includeHooks.h"
|
||||
#include "../../cs2/entity/C_AggregateSceneObject/C_AggregateSceneObject.h"
|
||||
#include "../../cs2/entity/C_CSPlayerPawn/C_CSPlayerPawn.h"
|
||||
@@ -16,7 +17,8 @@ namespace H {
|
||||
void* __fastcall hkLevelInit(void* pClientModeShared, const char* szNewMap);
|
||||
void __fastcall hkChamsObject(void* pAnimatableSceneObjectDesc, void* pDx11, CMeshData* arrMeshDraw, int nDataCount, void* pSceneView, void* pSceneLayer, void* pUnk, void* pUnk2);
|
||||
void __fastcall hkRenderFlashbangOverlay(void* a1, void* a2, void* a3, void* a4, void* a5);
|
||||
bool __fastcall hkCreateMove(void* pInput, int nSlot, void* pCmd);
|
||||
// bool __fastcall hkCreateMove(void* pInput, void* edx, int nSlot, CUserCmd* pCmd);
|
||||
bool __fastcall hkCreateMove(void* pInput, int nSlot, CUserCmd* pCmd);
|
||||
inline float g_flActiveFov;
|
||||
float hkGetRenderFov(void* rcx);
|
||||
|
||||
|
||||
@@ -209,6 +209,7 @@ void Menu::render() {
|
||||
keybind.menuButton(Config::silent_aim_key);
|
||||
ImGui::Checkbox("Always On##SilentAim", &Config::always_on_silent_aim);
|
||||
ImGui::Checkbox("Shooter After Aim##Silent", &Config::silent_shooterAfterAim); // Новый чекбокс
|
||||
ImGui::Checkbox("Rage mode##Silent", &Config::silent_rage); // Новый чекбокс
|
||||
ImGui::SliderFloat("Smooth##SilentAim", &Config::silent_aim_smooth_slider, 0.f, 10.f, "%.2f");
|
||||
Config::silent_aim_smooth = Config::silent_aim_smooth_slider; // Применяем значение ползунка к логике
|
||||
ImGui::SliderFloat("Silent Aim FOV", &Config::silent_aim_fov, 1.f, 180.f, "%1.0f");
|
||||
|
||||
|
Before Width: | Height: | Size: 208 KiB After Width: | Height: | Size: 208 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user