Всем привет. Месяц назад вышла обнова в кс2 - именно с этого момента я пытаюсь обновить свой External чит, перестали работать почти все функции, я предпологаю что это связанно с офсетами так как если бы это были бы например подклассы (ну например был подкласс CSSkeleton_ и его заменили на CSSkeleton) у меня бы выдавало. То есть мои офсеты это офсеты из файлов client_dll.json offsets.json buttons.json (от a2x dumper) они в моем коде прописаны как получение офсета из файла (например 400) и добавление к нему окончания (например месяц назад в аимботе это было 0x80) а сейчас я обновил файлы но так и не работает. Нейронка не помогает скажите в чем может быть проблема и как её чинить (например где взять окончания новые)?
Aimbot.cpp:
#include "aimbot.h"
#include "Debug.h"
#include "menu.h"
void aim::aimBot(LocalPlayer localPlayer, Vector3 baseViewAngles, DWORD_PTR baseViewAnglesAddy, std::vector<C_CSPlayerPawn> validPlayers) {
if (validPlayers.empty()) return;
view_matrix_t viewMatrix = MemMan.ReadMem<view_matrix_t>(localPlayer.base + offsets::clientDLL["dwViewMatrix"]);
Vector3 localPlayerPos = localPlayer.getPosition();
struct PotentialTarget {
C_CSPlayerPawn player;
float distance;
float screenDistance;
Vector3 screenPos;
Vector3 targetPos;
};
std::vector<PotentialTarget> potentialTargets;
float screenCenterX = GetSystemMetrics(SM_CXSCREEN) / 2.0f;
float screenCenterY = GetSystemMetrics(SM_CYSCREEN) / 2.0f;
for (auto& player : validPlayers) {
if (player.getPawnHealth() <= 0 || player.getPawnTeam() == localPlayer.getTeam())
continue;
uintptr_t playerBoneArray = player.getCGameSceneNode();
playerBoneArray = MemMan.ReadMem<uintptr_t>(playerBoneArray + clientDLL::CSkeletonInstance_["m_modelState"] + 0x80);
Vector3 targetPos = MemMan.ReadMem<Vector3>(playerBoneArray + aimConf.boneMap[aimConf.bones[aimConf.boneSelect]] * 32);
Vector3 screenPos = targetPos.worldToScreen(viewMatrix);
if (screenPos.z < 0.f) continue;
float worldDistance = (targetPos - localPlayerPos).Length();
float screenDeltaX = screenPos.x - screenCenterX;
float screenDeltaY = screenPos.y - screenCenterY;
float screenDistance = std::sqrt(screenDeltaX * screenDeltaX + screenDeltaY * screenDeltaY);
if (screenDistance <= aimConf.fov * 10) {
potentialTargets.push_back({
player,
worldDistance,
screenDistance,
screenPos,
targetPos
});
}
}
if (potentialTargets.empty()) return;
std::sort(potentialTargets.begin(), potentialTargets.end(),
[](const PotentialTarget& a, const PotentialTarget& b) {
return a.screenDistance < b.screenDistance;
});
auto& bestTarget = potentialTargets.front();
float deltaX = bestTarget.screenPos.x - screenCenterX;
float deltaY = bestTarget.screenPos.y - screenCenterY;
deltaX /= aimConf.smoothing;
deltaY /= aimConf.smoothing;
int moveX = static_cast<int>(deltaX);
int moveY = static_cast<int>(deltaY);
if (aimConf.isHotkeyAim) {
if (GetAsyncKeyState(aimConf.hotKeyMap[aimConf.hotKey[aimConf.hotkeySelectAim]])) {
mouse_event(MOUSEEVENTF_MOVE, moveX, moveY, 0, 0);
lockedPlayer = bestTarget.player.playerPawn;
}
}
else if (aimConf.state) {
mouse_event(MOUSEEVENTF_MOVE, moveX, moveY, 0, 0);
lockedPlayer = bestTarget.player.playerPawn;
}
}
void aim::recoilControl(LocalPlayer localPlayer, DWORD_PTR baseViewAnglesAddy) {
localPlayer.getAimPunchCache();
localPlayer.getViewAngles();
static Vector3 oldPunch;
Vector3 aimPunchAngle = MemMan.ReadMem<Vector3>(localPlayer.aimPunchCache.data + (localPlayer.aimPunchCache.count - 1) * sizeof(Vector3));
if (localPlayer.getShotsFired() > 1) {
Vector3 recoilVector = {
localPlayer.viewAngles.x + oldPunch.x - aimPunchAngle.x * 2.f,
localPlayer.viewAngles.y + oldPunch.y - aimPunchAngle.y * 2.f
};
recoilVector = clampAngles(recoilVector);
MemMan.WriteMem<Vector3>(baseViewAnglesAddy, recoilVector);
}
oldPunch.x = aimPunchAngle.x * 2.f;
oldPunch.y = aimPunchAngle.y * 2.f;
}
void aim::triggerBot(LocalPlayer localPlayer, DWORD_PTR base) {
int crossHairEntity = MemMan.ReadMem<int>(localPlayer.getPlayerPawn() + clientDLL::C_CSPlayerPawnBase_["m_iIDEntIndex"]);
if (!crossHairEntity) return;
C_CSPlayerPawn crossHairPawn(base);
CCSPlayerController crossHairEntityController(base);
crossHairPawn.getPlayerPawnByCrossHairID(crossHairEntity);
crossHairEntityController.value = crossHairPawn.playerPawn;
bool isValidEntity = (crossHairEntity != -1 && crossHairPawn.getPawnHealth() > 0 && crossHairPawn.getPawnHealth() <= 100 && crossHairEntityController.getPawnTeam() != localPlayer.getTeam());
if (aimConf.isHotkeyTrigger) {
if (GetAsyncKeyState(aimConf.hotKeyMap[aimConf.hotKey[aimConf.hotkeySelectTrigger]])) {
if (isValidEntity) {
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
};
}
}
else {
if (isValidEntity) {
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
};
}
}