test
This commit is contained in:
parent
f892794557
commit
03af6d458c
@ -81,4 +81,5 @@ namespace Config {
|
|||||||
bool always_on_silent_aim = false;
|
bool always_on_silent_aim = false;
|
||||||
float silent_aim_smooth_slider = 0.0f; // Новый параметр для ползунка смуза
|
float silent_aim_smooth_slider = 0.0f; // Новый параметр для ползунка смуза
|
||||||
bool silent_shooterAfterAim = false; // Аналог shooterAfterAim для сайлент аимбота
|
bool silent_shooterAfterAim = false; // Аналог shooterAfterAim для сайлент аимбота
|
||||||
|
bool silent_rage = false; // По умолчанию выключен
|
||||||
}
|
}
|
||||||
|
|||||||
@ -88,4 +88,5 @@ namespace Config {
|
|||||||
extern bool always_on_silent_aim;
|
extern bool always_on_silent_aim;
|
||||||
extern float silent_aim_smooth_slider; // Новый параметр для ползунка смуза
|
extern float silent_aim_smooth_slider; // Новый параметр для ползунка смуза
|
||||||
extern bool silent_shooterAfterAim; // Аналог shooterAfterAim для сайлент аимбота
|
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_key"] = Config::triggerbot_key;
|
||||||
j["triggerbot_alt_key"] = Config::triggerbot_alt_key;
|
j["triggerbot_alt_key"] = Config::triggerbot_alt_key;
|
||||||
j["triggerbot_delay"] = Config::triggerbot_delay;
|
j["triggerbot_delay"] = Config::triggerbot_delay;
|
||||||
|
j["silent_rage"] = Config::silent_rage;
|
||||||
|
|
||||||
j["enemyChamsInvisible"] = Config::enemyChamsInvisible;
|
j["enemyChamsInvisible"] = Config::enemyChamsInvisible;
|
||||||
j["enemyChams"] = Config::enemyChams;
|
j["enemyChams"] = Config::enemyChams;
|
||||||
@ -252,6 +253,7 @@ namespace internal_config
|
|||||||
Config::triggerbot_key = j.value("triggerbot_key", 0x05);
|
Config::triggerbot_key = j.value("triggerbot_key", 0x05);
|
||||||
Config::triggerbot_alt_key = j.value("triggerbot_alt_key", 0x06);
|
Config::triggerbot_alt_key = j.value("triggerbot_alt_key", 0x06);
|
||||||
Config::triggerbot_delay = j.value("triggerbot_delay", 0.0f);
|
Config::triggerbot_delay = j.value("triggerbot_delay", 0.0f);
|
||||||
|
Config::silent_rage = j.value("silent_rage", false);
|
||||||
|
|
||||||
Config::antiflash = j.value("antiflash", false);
|
Config::antiflash = j.value("antiflash", false);
|
||||||
|
|
||||||
|
|||||||
@ -1,29 +1,150 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <array>
|
|
||||||
#include "../../../templeware/utils/math/vector/vector.h"
|
#include "../../../templeware/utils/math/vector/vector.h"
|
||||||
|
|
||||||
struct CCmdQAngle {
|
#pragma pack(push, 1)
|
||||||
|
// --- Протобуферные структуры для сабтиков (CS2) ---
|
||||||
|
|
||||||
|
struct CCmdQAnglePB {
|
||||||
QAngle_t angValue;
|
QAngle_t angValue;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CBaseUserCmdPB {
|
struct CCmdVectorPB {
|
||||||
public:
|
Vector4D_t vecValue;
|
||||||
char pad_0x00[0x40];
|
|
||||||
CCmdQAngle* pViewangles; // 0x40
|
|
||||||
// ... другие поля не нужны для silent aim
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CCSGOUserCmdPB {
|
struct CBasePB_CS2 {
|
||||||
public:
|
void* vtable;
|
||||||
char pad_0x00[0x18];
|
uint32_t nHasBits;
|
||||||
CBaseUserCmdPB* pBase; // 0x18
|
uint64_t nCachedBits;
|
||||||
// ... другие поля не нужны для silent aim
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct CInButtonStatePB_CS2 : CBasePB_CS2 {
|
||||||
|
uint64_t nValue;
|
||||||
|
uint64_t nValueChanged;
|
||||||
|
uint64_t nValueScroll;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CSubtickMoveStepPB_CS2 : CBasePB_CS2 {
|
||||||
|
uint64_t nButton;
|
||||||
|
bool bPressed;
|
||||||
|
float flWhen;
|
||||||
|
float flAnalogForwardDelta;
|
||||||
|
float flAnalogLeftDelta;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CCSGOInterpolationInfoPB_CS2 : CBasePB_CS2 {
|
||||||
|
float flFraction;
|
||||||
|
int nSrcTick;
|
||||||
|
int nDstTick;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CMsgQAnglePB_CS2 { QAngle_t angValue; };
|
||||||
|
struct CMsgVectorPB_CS2 { Vector4D_t vecValue; };
|
||||||
|
|
||||||
|
struct CCSGOInputHistoryEntryPB_CS2 {
|
||||||
|
CMsgQAnglePB_CS2* pViewAngles;
|
||||||
|
CMsgVectorPB_CS2* pShootPosition;
|
||||||
|
CMsgVectorPB_CS2* pTargetHeadPositionCheck;
|
||||||
|
CMsgVectorPB_CS2* pTargetAbsPositionCheck;
|
||||||
|
CMsgQAnglePB_CS2* pTargetAngPositionCheck;
|
||||||
|
CCSGOInterpolationInfoPB_CS2* cl_interp;
|
||||||
|
CCSGOInterpolationInfoPB_CS2* sv_interp0;
|
||||||
|
CCSGOInterpolationInfoPB_CS2* sv_interp1;
|
||||||
|
CCSGOInterpolationInfoPB_CS2* player_interp;
|
||||||
|
int nRenderTickCount;
|
||||||
|
float flRenderTickFraction;
|
||||||
|
int nPlayerTickCount;
|
||||||
|
float flPlayerTickFraction;
|
||||||
|
int nFrameNumber;
|
||||||
|
int nTargetEntIndex;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct RepeatedPtrFieldPB_CS2 {
|
||||||
|
struct Rep_t {
|
||||||
|
int nAllocatedSize;
|
||||||
|
T* tElements[128];
|
||||||
|
};
|
||||||
|
void* pArena; // 0x0 (8 байт)
|
||||||
|
int nCurrentSize; // 0x8 (4 байта)
|
||||||
|
int nTotalSize; // 0xC (4 байта)
|
||||||
|
Rep_t* pRep; // 0x10 (8 байт)
|
||||||
|
// 0x18
|
||||||
|
};
|
||||||
|
static_assert(sizeof(RepeatedPtrFieldPB_CS2<int>) == 0x18, "RepeatedPtrFieldPB_CS2 size mismatch!");
|
||||||
|
|
||||||
|
struct CBaseUserCmdPB_CS2 {
|
||||||
|
RepeatedPtrFieldPB_CS2<int> subtickMovesField; // 0x0 (0x18)
|
||||||
|
void* strMoveCrc; // 0x18
|
||||||
|
void* pInButtonState; // 0x20
|
||||||
|
CMsgQAnglePB_CS2* pViewAngles; // 0x28
|
||||||
|
int32_t nLegacyCommandNumber; // 0x30
|
||||||
|
int32_t nClientTick; // 0x34
|
||||||
|
float flForwardMove; // 0x38
|
||||||
|
float flSideMove; // 0x3C
|
||||||
|
float flUpMove; // 0x40
|
||||||
|
int32_t nImpulse; // 0x44
|
||||||
|
int32_t nWeaponSelect; // 0x48
|
||||||
|
int32_t nRandomSeed; // 0x4C
|
||||||
|
int32_t nMousedX; // 0x50
|
||||||
|
int32_t nMousedY; // 0x54
|
||||||
|
uint32_t nConsumedServerAngleChanges; // 0x58
|
||||||
|
int32_t nCmdFlags; // 0x5C
|
||||||
|
uint32_t nPawnEntityHandle; // 0x60
|
||||||
|
char pad[0x80 - 0x64]; // паддинг до 0x80
|
||||||
|
};
|
||||||
|
static_assert(sizeof(CBaseUserCmdPB_CS2) == 0x80, "CBaseUserCmdPB_CS2 size mismatch!");
|
||||||
|
|
||||||
|
struct CCSGOUserCmdPB_CS2 {
|
||||||
|
uint32_t nHasBits; // 0x0
|
||||||
|
uint64_t nCachedSize; // 0x8
|
||||||
|
RepeatedPtrFieldPB_CS2<CCSGOInputHistoryEntryPB_CS2> inputHistoryField; // 0x10 (0x18)
|
||||||
|
CBaseUserCmdPB_CS2* pBaseCmd; // 0x28
|
||||||
|
bool bLeftHandDesired; // 0x30
|
||||||
|
char pad1[3]; // 0x31-0x33
|
||||||
|
int32_t nAttack3StartHistoryIndex; // 0x34
|
||||||
|
int32_t nAttack1StartHistoryIndex; // 0x38
|
||||||
|
int32_t nAttack2StartHistoryIndex; // 0x3C
|
||||||
|
char pad2[4]; // 0x40-0x43 (чтобы размер стал 0x40)
|
||||||
|
};
|
||||||
|
static_assert(sizeof(CCSGOUserCmdPB_CS2) == 0x40, "CCSGOUserCmdPB_CS2 size mismatch!");
|
||||||
|
|
||||||
|
struct CInButtonState_CS2 {
|
||||||
|
void* vtable; // 0x0
|
||||||
|
uint64_t nValue; // 0x8
|
||||||
|
uint64_t nValueChanged; // 0x10
|
||||||
|
uint64_t nValueScroll; // 0x18
|
||||||
|
};
|
||||||
|
static_assert(sizeof(CInButtonState_CS2) == 0x20, "CInButtonState_CS2 size mismatch!");
|
||||||
|
|
||||||
class CUserCmd {
|
class CUserCmd {
|
||||||
public:
|
public:
|
||||||
char pad_0x00[0x18];
|
char pad_0x00[0x8]; // 0x0
|
||||||
CCSGOUserCmdPB pBase; // 0x18
|
char pad_0x08[0x10]; // 0x8
|
||||||
// ... другие поля не нужны для silent aim
|
CCSGOUserCmdPB_CS2 csgoUserCmd; // 0x18
|
||||||
|
CInButtonState_CS2 nButtons; // 0x58
|
||||||
|
char pad_0x78[0x20]; // 0x78
|
||||||
|
|
||||||
|
CCSGOInputHistoryEntryPB_CS2* GetInputHistoryEntry(int nIndex) {
|
||||||
|
if (!csgoUserCmd.inputHistoryField.pRep) return nullptr;
|
||||||
|
if (nIndex < 0 || nIndex >= csgoUserCmd.inputHistoryField.nCurrentSize) return nullptr;
|
||||||
|
return csgoUserCmd.inputHistoryField.pRep->tElements[nIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetSubTickAngle(const QAngle_t& angView) {
|
||||||
|
if (!csgoUserCmd.inputHistoryField.pRep) return;
|
||||||
|
for (int i = 0; i < csgoUserCmd.inputHistoryField.nCurrentSize; ++i) {
|
||||||
|
CCSGOInputHistoryEntryPB_CS2* pInputEntry = GetInputHistoryEntry(i);
|
||||||
|
if (!pInputEntry || !pInputEntry->pViewAngles) continue;
|
||||||
|
pInputEntry->pViewAngles->angValue = angView;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
static_assert(sizeof(CUserCmd) == 0x98, "CUserCmd size mismatch! Проверь паддинг и порядок полей.");
|
||||||
|
|
||||||
|
// static_assert(sizeof(CUserCmd) == 0x98, "CUserCmd size mismatch! Проверь паддинг и порядок полей.");
|
||||||
|
|
||||||
|
// Для overlay/hud:
|
||||||
|
// extern size_t g_szCBaseUserCmdPB_CS2;
|
||||||
|
// extern size_t g_szRepeatedPtrFieldPB_CS2;
|
||||||
File diff suppressed because it is too large
Load Diff
@ -4,3 +4,4 @@
|
|||||||
|
|
||||||
void Aimbot();
|
void Aimbot();
|
||||||
void SilentAimbot(CUserCmd* pCmd);
|
void SilentAimbot(CUserCmd* pCmd);
|
||||||
|
void Ver2Aimbot(CUserCmd* pCmd);
|
||||||
|
|||||||
@ -40,7 +40,8 @@ void* __fastcall H::hkLevelInit(void* pClientModeShared, const char* szNewMap) {
|
|||||||
|
|
||||||
bool __fastcall H::hkCreateMove(void* pInput, int nSlot, void* pCmd) {
|
bool __fastcall H::hkCreateMove(void* pInput, int nSlot, void* pCmd) {
|
||||||
//Aimbot();
|
//Aimbot();
|
||||||
SilentAimbot(reinterpret_cast<CUserCmd*>(pCmd));
|
//SilentAimbot(reinterpret_cast<CUserCmd*>(pCmd));
|
||||||
|
Ver2Aimbot(reinterpret_cast<CUserCmd*>(pCmd));
|
||||||
Triggerbot();
|
Triggerbot();
|
||||||
return CreateMove.GetOriginal()(pInput, nSlot, pCmd);
|
return CreateMove.GetOriginal()(pInput, nSlot, pCmd);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -209,6 +209,7 @@ void Menu::render() {
|
|||||||
keybind.menuButton(Config::silent_aim_key);
|
keybind.menuButton(Config::silent_aim_key);
|
||||||
ImGui::Checkbox("Always On##SilentAim", &Config::always_on_silent_aim);
|
ImGui::Checkbox("Always On##SilentAim", &Config::always_on_silent_aim);
|
||||||
ImGui::Checkbox("Shooter After Aim##Silent", &Config::silent_shooterAfterAim); // Новый чекбокс
|
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");
|
ImGui::SliderFloat("Smooth##SilentAim", &Config::silent_aim_smooth_slider, 0.f, 10.f, "%.2f");
|
||||||
Config::silent_aim_smooth = Config::silent_aim_smooth_slider; // Применяем значение ползунка к логике
|
Config::silent_aim_smooth = Config::silent_aim_smooth_slider; // Применяем значение ползунка к логике
|
||||||
ImGui::SliderFloat("Silent Aim FOV", &Config::silent_aim_fov, 1.f, 180.f, "%1.0f");
|
ImGui::SliderFloat("Silent Aim FOV", &Config::silent_aim_fov, 1.f, 180.f, "%1.0f");
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user