diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/TempleWare-Legacy-main.iml b/.idea/TempleWare-Legacy-main.iml new file mode 100644 index 0000000..4c94235 --- /dev/null +++ b/.idea/TempleWare-Legacy-main.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/editor.xml b/.idea/editor.xml new file mode 100644 index 0000000..e54e87a --- /dev/null +++ b/.idea/editor.xml @@ -0,0 +1,102 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..3a4aee6 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations/TempleWare_CS2_sln.xml b/.idea/runConfigurations/TempleWare_CS2_sln.xml new file mode 100644 index 0000000..4144c96 --- /dev/null +++ b/.idea/runConfigurations/TempleWare_CS2_sln.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..a2f310a --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/TempleWare-CS2/TempleWare-CS2.vcxproj b/TempleWare-CS2/TempleWare-CS2.vcxproj index d3873fb..a2aa1d8 100644 --- a/TempleWare-CS2/TempleWare-CS2.vcxproj +++ b/TempleWare-CS2/TempleWare-CS2.vcxproj @@ -171,6 +171,7 @@ + @@ -227,6 +228,7 @@ + diff --git a/TempleWare-CS2/source/cs2/entity/C_CSPlayerPawn/C_CSPlayerPawn.cpp b/TempleWare-CS2/source/cs2/entity/C_CSPlayerPawn/C_CSPlayerPawn.cpp index f78ccfd..47203d0 100644 --- a/TempleWare-CS2/source/cs2/entity/C_CSPlayerPawn/C_CSPlayerPawn.cpp +++ b/TempleWare-CS2/source/cs2/entity/C_CSPlayerPawn/C_CSPlayerPawn.cpp @@ -6,7 +6,7 @@ C_CSPlayerPawn::C_CSPlayerPawn(uintptr_t address) : address(address) {} Vector_t C_CSPlayerPawn::getPosition() const { - return *(Vector_t*)(address + SchemaFinder::Get(hash_32_fnv1a_const("C_BasePlayerPawn->m_vOldOrigin"))); + return *(Vector_t*)(this->address + SchemaFinder::Get(hash_32_fnv1a_const("C_BasePlayerPawn->m_vOldOrigin"))); } Vector_t C_CSPlayerPawn::getEyePosition() const { @@ -48,3 +48,7 @@ uint8_t C_CSPlayerPawn::getTeam() const { Vector_t C_CSPlayerPawn::getViewOffset() const { return *reinterpret_cast((uintptr_t)this + SchemaFinder::Get(hash_32_fnv1a_const("C_BaseModelEntity->m_vecViewOffset"))); } + +int C_CSPlayerPawn::getShotsFired() const { + return *reinterpret_cast((uintptr_t)this + SchemaFinder::Get(hash_32_fnv1a_const("C_CSPlayerPawn->m_iShotsFired"))); +} //{ return *reinterpret_cast(address + SchemaFinder::Get(hash_32_fnv1a_const("C_CSPlayerPawn->m_iShotsFired"))); } diff --git a/TempleWare-CS2/source/cs2/entity/C_CSPlayerPawn/C_CSPlayerPawn.h b/TempleWare-CS2/source/cs2/entity/C_CSPlayerPawn/C_CSPlayerPawn.h index 54efd2d..d9eaf64 100644 --- a/TempleWare-CS2/source/cs2/entity/C_CSPlayerPawn/C_CSPlayerPawn.h +++ b/TempleWare-CS2/source/cs2/entity/C_CSPlayerPawn/C_CSPlayerPawn.h @@ -23,6 +23,7 @@ public: int getHealth() const; uint8_t getTeam() const; Vector_t getViewOffset() const; + int getShotsFired() const; private: uintptr_t address; }; diff --git a/TempleWare-CS2/source/templeware/config/config.cpp b/TempleWare-CS2/source/templeware/config/config.cpp index 90d84d6..c1cbd07 100644 --- a/TempleWare-CS2/source/templeware/config/config.cpp +++ b/TempleWare-CS2/source/templeware/config/config.cpp @@ -50,4 +50,18 @@ namespace Config { bool fov_circle = 0; ImVec4 fovCircleColor = ImVec4(1.0f, 1.0f, 1.0f, 1.0f); float aimbot_smooth = 0.f; + bool aimbot_dynamic_smooth = false; + float aimbot_dynamic_smooth_factor = 1.0f; + bool aimbot_on_lmb = false; + bool shooterAfterAim = false; // Если true, ЛКМ блокируется до наведения на врага + bool triggerbot_hold_lmb = false; // Если true, триггербот удерживает ЛКМ пока наведён на врага + + int aimbot_bone = Config::BONE_HEAD; + int aimbot_key = 0x12; // VK_MENU (Alt) по умолчанию + bool always_on_aimbot = false; + + bool triggerbot = false; + bool always_on_triggerbot = false; + int triggerbot_key = 0x05; // Например, VK_X или другой + float triggerbot_delay = 0.0f; } diff --git a/TempleWare-CS2/source/templeware/config/config.h b/TempleWare-CS2/source/templeware/config/config.h index 0e9d3f9..898bfea 100644 --- a/TempleWare-CS2/source/templeware/config/config.h +++ b/TempleWare-CS2/source/templeware/config/config.h @@ -49,4 +49,26 @@ namespace Config { extern bool fov_circle; extern ImVec4 fovCircleColor; extern float aimbot_smooth; + extern bool aimbot_dynamic_smooth; + extern float aimbot_dynamic_smooth_factor; + extern bool aimbot_on_lmb; + extern bool shooterAfterAim; + extern bool triggerbot_hold_lmb; // Если true, триггербот удерживает ЛКМ пока наведён на врага + + // --- Для аимбота --- + enum AimbotBone { + BONE_HEAD = 0, + BONE_NECK = 1, + BONE_BODY = 2, + BONE_NEAREST = 3 + }; + extern int aimbot_bone; // Используется как int для сериализации + extern int aimbot_key; + extern bool always_on_aimbot; + + // --- Для триггербота --- + extern bool triggerbot; + extern bool always_on_triggerbot; + extern int triggerbot_key; + extern float triggerbot_delay; } diff --git a/TempleWare-CS2/source/templeware/config/configmanager.h b/TempleWare-CS2/source/templeware/config/configmanager.h index 784d018..975d395 100644 --- a/TempleWare-CS2/source/templeware/config/configmanager.h +++ b/TempleWare-CS2/source/templeware/config/configmanager.h @@ -120,6 +120,20 @@ namespace internal_config j["rcs"] = Config::rcs; j["fov_circle"] = Config::fov_circle; j["aimbot_smooth"] = Config::aimbot_smooth; + j["aimbot_bone"] = Config::aimbot_bone; + j["aimbot_key"] = Config::aimbot_key; + j["team_check"] = Config::team_check; + j["always_on_aimbot"] = Config::always_on_aimbot; + j["aimbot_dynamic_smooth"] = Config::aimbot_dynamic_smooth; + j["aimbot_dynamic_smooth_factor"] = Config::aimbot_dynamic_smooth_factor; + j["aimbot_on_lmb"] = Config::aimbot_on_lmb; + j["showNameTags"] = Config::showNameTags; + j["triggerbot_hold_lmb"] = Config::triggerbot_hold_lmb; + j["shooterAfterAim"] = Config::shooterAfterAim; + j["always_on_triggerbot"] = Config::always_on_triggerbot; + j["triggerbot"] = Config::triggerbot; + j["triggerbot_key"] = Config::triggerbot_key; + j["triggerbot_delay"] = Config::triggerbot_delay; j["enemyChamsInvisible"] = Config::enemyChamsInvisible; j["enemyChams"] = Config::enemyChams; @@ -219,6 +233,20 @@ namespace internal_config Config::rcs = j.value("rcs", false); Config::aimbot_fov = j.value("aimbot_fov", 0.f); Config::aimbot_smooth = j.value("aimbot_smooth", 0.f); + Config::aimbot_bone = j.value("aimbot_bone", 0); + Config::aimbot_key = j.value("aimbot_key", 0x12); + Config::team_check = j.value("team_check", true); + Config::always_on_aimbot = j.value("always_on_aimbot", false); + Config::aimbot_dynamic_smooth = j.value("aimbot_dynamic_smooth", false); + Config::aimbot_dynamic_smooth_factor = j.value("aimbot_dynamic_smooth_factor", 1.0f); + Config::aimbot_on_lmb = j.value("aimbot_on_lmb", false); + Config::showNameTags = j.value("showNameTags", false); + Config::triggerbot_hold_lmb = j.value("triggerbot_hold_lmb", false); + Config::shooterAfterAim = j.value("shooterAfterAim", false); + Config::always_on_triggerbot = j.value("always_on_triggerbot", false); + Config::triggerbot = j.value("triggerbot", false); + Config::triggerbot_key = j.value("triggerbot_key", 0x05); + Config::triggerbot_delay = j.value("triggerbot_delay", 0.0f); Config::antiflash = j.value("antiflash", false); diff --git a/TempleWare-CS2/source/templeware/features/aim/aim.cpp b/TempleWare-CS2/source/templeware/features/aim/aim.cpp index e51255b..42e290d 100644 --- a/TempleWare-CS2/source/templeware/features/aim/aim.cpp +++ b/TempleWare-CS2/source/templeware/features/aim/aim.cpp @@ -3,13 +3,93 @@ #include "../../../templeware/interfaces/interfaces.h" #include "../../../templeware/hooks/hooks.h" #include "../../../templeware/config/config.h" +#include "../../utils/memory/patternscan/patternscan.h" #include #include #include "../../menu/hud.h" +#include "../../menu/menu.h" +#include +#include + +// Индексы костей (актуально для CS2) +constexpr int BONE_INDEX_HEAD = 6; // Head +constexpr int BONE_INDEX_NECK = 5; // Neck +constexpr int BONE_INDEX_BODY = 4;//0; // Pelvis/Root + +// --- lastBoneIdx теперь глобальный static --- +static int lastBoneIdx = -1; + +inline QAngle_t CalcAngles(Vector_t viewPos, Vector_t aimPos) +{ + QAngle_t angle = { 0, 0, 0 }; + + Vector_t delta = aimPos - viewPos; + + angle.x = -asin(delta.z / delta.Length()) * (180.0f / 3.141592654f); + angle.y = atan2(delta.y, delta.x) * (180.0f / 3.141592654f); + + return angle; +} + +inline float GetFov(const QAngle_t& viewAngle, const QAngle_t& aimAngle) +{ + QAngle_t delta = (aimAngle - viewAngle).Normalize(); + + return sqrtf(powf(delta.x, 2.0f) + powf(delta.y, 2.0f)); +} + +// // Сигнатура функции GetBonePosition (актуально для client.dll): +// // 48 89 6C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 56 48 83 EC ? 4D 8B F1 +// using GetBonePositionFn = int64_t(__fastcall*)(void*, uint32_t, Vector_t*, Vector_t*); +// static GetBonePositionFn oGetBonePosition = nullptr; + +// static void InitGetBonePositionSig() { +// if (!oGetBonePosition) { +// uintptr_t addr = M::patternScan("client.dll", "48 89 6C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 56 48 83 EC ? 4D 8B F1"); +// oGetBonePosition = reinterpret_cast(addr); +// } +// } + +Vector_t GetBonePosition(const C_CSPlayerPawn* Entity, int boneIdx) { + if (!Entity) return {}; + // Внешний способ: читаем Vector3 по адресу boneMatrix + boneIdx * 0x20 + uintptr_t pGameSceneNode = *reinterpret_cast((uintptr_t)Entity + 0x328); + if (!pGameSceneNode) return {}; + uintptr_t pBoneMatrix = *reinterpret_cast(pGameSceneNode + 0x1F0); + if (!pBoneMatrix) return {}; + return *reinterpret_cast(pBoneMatrix + boneIdx * 0x20); +} + +// Получить позицию для аимбота в зависимости от выбора пользователя +Vector_t GetAimbotTargetPos(const C_CSPlayerPawn* Entity, const Vector_t& from, const QAngle_t& viewAngles) { + switch (Config::aimbot_bone) { + case Config::BONE_HEAD: + return GetBonePosition(Entity, BONE_INDEX_HEAD); + case Config::BONE_NECK: + return GetBonePosition(Entity, BONE_INDEX_NECK); + case Config::BONE_BODY: + return GetBonePosition(Entity, BONE_INDEX_BODY); + case Config::BONE_NEAREST: + default: { + // Каждый раз ищем ближайшую кость по FOV + std::array bones = {BONE_INDEX_HEAD, BONE_INDEX_BODY}; + float bestFov = FLT_MAX; + int bestIdx = BONE_INDEX_HEAD; + for (int idx : bones) { + Vector_t pos = GetBonePosition(Entity, idx); + QAngle_t ang = CalcAngles(from, pos); // <-- Исправлено! + float fov = GetFov(viewAngles, ang); + if (fov < bestFov && std::isfinite(fov)) { + bestFov = fov; + bestIdx = idx; + } + } + return GetBonePosition(Entity, bestIdx); + } + } +} -// Literally the most autistic code ive ever written in my life -// Please dont ever make me do this again Vector_t GetEntityEyePos(const C_CSPlayerPawn* Entity) { if (!Entity) @@ -27,110 +107,306 @@ Vector_t GetEntityEyePos(const C_CSPlayerPawn* Entity) { return Result; } -inline QAngle_t CalcAngles(Vector_t viewPos, Vector_t aimPos) -{ - QAngle_t angle = { 0, 0, 0 }; - - Vector_t delta = aimPos - viewPos; - - angle.x = -asin(delta.z / delta.Length()) * (180.0f / 3.141592654f); - angle.y = atan2(delta.y, delta.x) * (180.0f / 3.141592654f); - - return angle; -} - -inline float GetFov(const QAngle_t& viewAngle, const QAngle_t& aimAngle) -{ - QAngle_t delta = (aimAngle - viewAngle).Normalize(); - - return sqrtf(powf(delta.x, 2.0f) + powf(delta.y, 2.0f)); -} - void Aimbot() { - static C_CSPlayerPawn* lockedTarget = nullptr; - static bool prevAimbotState = false; + static C_CSPlayerPawn* lockedTarget = nullptr; + static bool prevAimbotState = false; + static bool targetWasLost = false; + static QAngle_t last_punch_angle = {0,0,0}; + static int shotCount = 0; + bool aimbotActive = Config::always_on_aimbot ? true : Config::aimbot; + // --- shooterAfterAim + triggerbot_key --- + if (Config::shooterAfterAim && (GetAsyncKeyState(Config::triggerbot_key) & 0x8000)) { + aimbotActive = true; + } + C_CSPlayerPawn* lp = H::oGetLocalPlayer(0); + Vector_t lep = GetEntityEyePos(lp); + QAngle_t* viewangles = (QAngle_t*)(modules.getModule("client") + 0x1A78650); + bool isShooting = (GetAsyncKeyState(Config::triggerbot_key) & 0x8000) || (GetAsyncKeyState(VK_LBUTTON) & 0x8000); - bool aimbotActive = Config::aimbot; + int shotsFired = lp ? lp->getShotsFired() : 0; + shotCount = shotsFired; + g_DebugString = "debug: " + std::to_string(shotsFired); + + if (Config::aimbot_on_lmb && !Config::always_on_aimbot) { + aimbotActive = isShooting; + } - // Получаем локального игрока и viewangles всегда, чтобы не дублировать код - C_CSPlayerPawn* lp = H::oGetLocalPlayer(0); - Vector_t lep = GetEntityEyePos(lp); - QAngle_t* viewangles = (QAngle_t*)(modules.getModule("client") + 0x1A78650); + // Получаем локального игрока и viewangles всегда, чтобы не дублировать код + // C_CSPlayerPawn* lp = H::oGetLocalPlayer(0); + // Vector_t lep = GetEntityEyePos(lp); + // QAngle_t* viewangles = (QAngle_t*)(modules.getModule("client") + 0x1A78650); - // Если кнопка только что нажата (переход с false на true) — ищем новую цель - if (aimbotActive && !prevAimbotState) { - int nMaxHighestEntity = I::GameEntity->Instance->GetHighestEntityIndex(); - float bestFov = Config::aimbot_fov; - C_CSPlayerPawn* bestTarget = nullptr; - QAngle_t bestAngle = { 0, 0, 0 }; + // Проверка: стреляет ли игрок (LMB) + // bool isShooting = (GetAsyncKeyState(VK_LBUTTON) & 0x8000); - for (int i = 1; i <= nMaxHighestEntity; i++) { - auto Entity = I::GameEntity->Instance->Get(i); - if (!Entity) - continue; - if (!Entity->handle().valid()) - continue; - SchemaClassInfoData_t* _class = nullptr; - Entity->dump_class_info(&_class); - if (!_class) - continue; - const uint32_t hash = HASH(_class->szName); - if (hash == HASH("C_CSPlayerPawn")) { - C_CSPlayerPawn* pawn = (C_CSPlayerPawn*)Entity; - if (pawn->get_entity_by_handle() == lp->get_entity_by_handle()) - continue; - if (pawn->getHealth() <= 0) - continue; - if (!Config::team_check && pawn->getTeam() == lp->getTeam()) - continue; - Vector_t eye_pos = GetEntityEyePos(pawn); - QAngle_t angle = CalcAngles(eye_pos, lep); - angle.x *= -1.f; - angle.y += 180.f; - const float fov = GetFov(*viewangles, angle); - if (!std::isfinite(fov) || fov > bestFov) - continue; - bestFov = fov; - bestTarget = pawn; - bestAngle = angle; - } - } - lockedTarget = bestTarget; - } + // --- Новый режим: always_on_aimbot --- + if (Config::always_on_aimbot) { + int nMaxHighestEntity = I::GameEntity->Instance->GetHighestEntityIndex(); + float bestFov = Config::aimbot_fov; + C_CSPlayerPawn* bestTarget = nullptr; + QAngle_t bestAngle = { 0, 0, 0 }; - // Если кнопка отпущена — сбрасываем захват - if (!aimbotActive) - lockedTarget = nullptr; + for (int i = 1; i <= nMaxHighestEntity; i++) { + auto Entity = I::GameEntity->Instance->Get(i); + if (!Entity) + continue; + if (!Entity->handle().valid()) + continue; + SchemaClassInfoData_t* _class = nullptr; + Entity->dump_class_info(&_class); + if (!_class) + continue; + const uint32_t hash = HASH(_class->szName); + if (hash == HASH("C_CSPlayerPawn")) { + C_CSPlayerPawn* pawn = (C_CSPlayerPawn*)Entity; + if (pawn->get_entity_by_handle() == lp->get_entity_by_handle()) + continue; + if (pawn->getHealth() <= 0) + continue; + if (Config::team_check && pawn->getTeam() == lp->getTeam()) + continue; + Vector_t target_pos = GetEntityEyePos(pawn);//GetAimbotTargetPos(pawn, lep); + QAngle_t angle = CalcAngles(target_pos, lep); + angle.x *= -1.f; + angle.y += 180.f; + const float fov = GetFov(*viewangles, angle); + if (!std::isfinite(fov) || fov > bestFov) + continue; + bestFov = fov; + bestTarget = pawn; + bestAngle = angle; + } + } + if (bestTarget) { + Vector_t target_pos = GetAimbotTargetPos(bestTarget, lep, *viewangles); + //Vector_t target_pos = GetEntityEyePos(bestTarget); + QAngle_t angle = CalcAngles(target_pos, lep); + angle.x *= -1.f; + angle.y += 180.f; + QAngle_t ang_punch_angle = *(QAngle_t*)((uintptr_t)lp + SchemaFinder::Get(hash_32_fnv1a_const("C_CSPlayerPawn->m_aimPunchAngle"))); + if (isShooting) { + last_punch_angle = ang_punch_angle; + } else { + last_punch_angle = {0,0,0}; + } + // --- RCS --- + bool rcsActive = (Config::rcs || Config::shooterAfterAim) && (shotCount > 1); + if (rcsActive) + angle -= last_punch_angle * 2.f; + angle.z = 0.f; + angle = angle.Normalize(); + // --- RCS --- + QAngle_t delta = (angle - *viewangles).Normalize(); + if (rcsActive) { + float smooth_rcs = Config::aimbot_smooth; + if (Config::aimbot_dynamic_smooth) { + float fov = sqrtf(delta.x * delta.x + delta.y * delta.y); + float maxFov = Config::aimbot_fov; + float factor = (maxFov > 0.01f) ? (fov / maxFov) : 0.f; + smooth_rcs = Config::aimbot_smooth + (Config::aimbot_smooth * factor * Config::aimbot_dynamic_smooth_factor); + } + smooth_rcs = std::fmax(smooth_rcs / 10.f, 1.0f); + angle -= last_punch_angle * 2.f * smooth_rcs; + } + // --- Smooth --- + if (Config::aimbot_smooth > 0.f) { + QAngle_t cur = *viewangles; + QAngle_t delta = (angle - cur).Normalize(); + float smooth = Config::aimbot_smooth; + if (Config::aimbot_dynamic_smooth) { + float fov = sqrtf(delta.x * delta.x + delta.y * delta.y); + float maxFov = Config::aimbot_fov; + float factor = (maxFov > 0.01f) ? (fov / maxFov) : 0.f; + smooth = smooth + (smooth * factor * Config::aimbot_dynamic_smooth_factor); + } + angle = cur + delta * (1.f / smooth); + angle = angle.Normalize(); + *viewangles = angle; + } else { + *viewangles = angle; + } + } + // В этом режиме не используем lockedTarget и не трогаем targetWasLost/prevAimbotState + return; + } - // Если есть захваченная цель и кнопка удерживается - if (aimbotActive && lockedTarget) { - // Проверяем, что цель всё ещё валидна - if (!lockedTarget->handle().valid() || lockedTarget->getHealth() <= 0) { - lockedTarget = nullptr; - } - else { - Vector_t eye_pos = GetEntityEyePos(lockedTarget); - QAngle_t angle = CalcAngles(eye_pos, lep); - angle.x *= -1.f; - angle.y += 180.f; - QAngle_t ang_punch_angle = *(QAngle_t*)((uintptr_t)lp + SchemaFinder::Get(hash_32_fnv1a_const("C_CSPlayerPawn->m_aimPunchAngle"))); - if (Config::rcs) - angle -= ang_punch_angle * 2.f; - angle.z = 0.f; - angle = angle.Normalize(); - if (Config::aimbot_smooth > 0.f) { - QAngle_t cur = *viewangles; - QAngle_t delta = (angle - cur).Normalize(); - float smooth = Config::aimbot_smooth; - angle = cur + delta * (1.f / smooth); - angle = angle.Normalize(); - *viewangles = angle; - } - else { - *viewangles = angle; - } - } - } + // Если кнопка только что нажата (переход с false на true) — ищем новую цель + if (aimbotActive && !prevAimbotState) { + lastBoneIdx = -1; // Сброс при новой активации + int nMaxHighestEntity = I::GameEntity->Instance->GetHighestEntityIndex(); + float bestFov = Config::aimbot_fov; + C_CSPlayerPawn* bestTarget = nullptr; + QAngle_t bestAngle = { 0, 0, 0 }; - prevAimbotState = aimbotActive; + for (int i = 1; i <= nMaxHighestEntity; i++) { + auto Entity = I::GameEntity->Instance->Get(i); + if (!Entity) + continue; + if (!Entity->handle().valid()) + continue; + SchemaClassInfoData_t* _class = nullptr; + Entity->dump_class_info(&_class); + if (!_class) + continue; + const uint32_t hash = HASH(_class->szName); + if (hash == HASH("C_CSPlayerPawn")) { + C_CSPlayerPawn* pawn = (C_CSPlayerPawn*)Entity; + if (pawn->get_entity_by_handle() == lp->get_entity_by_handle()) + continue; + if (pawn->getHealth() <= 0) + continue; + if (Config::team_check && pawn->getTeam() == lp->getTeam()) + continue; + Vector_t target_pos = GetEntityEyePos(pawn);//GetAimbotTargetPos(pawn, lep); + QAngle_t angle = CalcAngles(target_pos, lep); + angle.x *= -1.f; + angle.y += 180.f; + const float fov = GetFov(*viewangles, angle); + if (!std::isfinite(fov) || fov > bestFov) + continue; + bestFov = fov; + bestTarget = pawn; + bestAngle = angle; + } + } + lockedTarget = bestTarget; + targetWasLost = false; + // Сброс punch_angle при смене цели + last_punch_angle = {0,0,0}; + } + + // Если кнопка отпущена — сбрасываем захват + if (!aimbotActive) { + lockedTarget = nullptr; + targetWasLost = false; + last_punch_angle = {0,0,0}; // сброс rcs + // Сброс lastBoneIdx при отпускании кнопки аимбота (например, в Aimbot()): + // if (!aimbotActive) lastBoneIdx = -1; + } + + // Если есть захваченная цель и кнопка удерживается + if (aimbotActive && lockedTarget) { + // Проверяем, что цель всё ещё валидна + if (!lockedTarget->handle().valid() || lockedTarget->getHealth() <= 0) { + lockedTarget = nullptr; + targetWasLost = true; + // Не ищем новую цель до повторного нажатия! + last_punch_angle = {0,0,0}; // сброс rcs + } + else { + Vector_t target_pos = GetAimbotTargetPos(lockedTarget, lep, *viewangles); + QAngle_t angle = CalcAngles(target_pos, lep); + angle.x *= -1.f; + angle.y += 180.f; + QAngle_t ang_punch_angle = *(QAngle_t*)((uintptr_t)lp + SchemaFinder::Get(hash_32_fnv1a_const("C_CSPlayerPawn->m_aimPunchAngle"))); + if (isShooting) { + last_punch_angle = ang_punch_angle; + } else { + last_punch_angle = {0,0,0}; + } + // --- RCS --- + bool rcsActive = (Config::rcs || Config::shooterAfterAim) && (shotCount > 1); + if (rcsActive) + angle -= last_punch_angle * 2.f; + angle.z = 0.f; + angle = angle.Normalize(); + // --- RCS --- + QAngle_t delta = (angle - *viewangles).Normalize(); + if (rcsActive) { + float smooth_rcs = Config::aimbot_smooth; + if (Config::aimbot_dynamic_smooth) { + float fov = sqrtf(delta.x * delta.x + delta.y * delta.y); + float maxFov = Config::aimbot_fov; + float factor = (maxFov > 0.01f) ? (fov / maxFov) : 0.f; + smooth_rcs = Config::aimbot_smooth + (Config::aimbot_smooth * factor * Config::aimbot_dynamic_smooth_factor); + } + smooth_rcs = std::fmax(smooth_rcs / 10.f, 1.0f); + angle -= last_punch_angle * 2.f * smooth_rcs; + } + // --- Smooth --- + if (Config::aimbot_smooth > 0.f) { + QAngle_t cur = *viewangles; + QAngle_t delta = (angle - cur).Normalize(); + float smooth = Config::aimbot_smooth; + if (Config::aimbot_dynamic_smooth) { + float fov = sqrtf(delta.x * delta.x + delta.y * delta.y); + float maxFov = Config::aimbot_fov; + float factor = (maxFov > 0.01f) ? (fov / maxFov) : 0.f; + smooth = smooth + (smooth * factor * Config::aimbot_dynamic_smooth_factor); + } + angle = cur + delta * (1.f / smooth); + angle = angle.Normalize(); + *viewangles = angle; + } else { + *viewangles = angle; + } + } + } + + //Если кнопка зажата, цели нет, и мы не теряли цель (т.е. только в начале или если цели не было вообще) + if (aimbotActive && !lockedTarget && !targetWasLost) { + int nMaxHighestEntity = I::GameEntity->Instance->GetHighestEntityIndex(); + float bestFov = Config::aimbot_fov; + C_CSPlayerPawn* bestTarget = nullptr; + QAngle_t bestAngle = { 0, 0, 0 }; + + for (int i = 1; i <= nMaxHighestEntity; i++) { + auto Entity = I::GameEntity->Instance->Get(i); + if (!Entity) + continue; + if (!Entity->handle().valid()) + continue; + SchemaClassInfoData_t* _class = nullptr; + Entity->dump_class_info(&_class); + if (!_class) + continue; + const uint32_t hash = HASH(_class->szName); + if (hash == HASH("C_CSPlayerPawn")) { + C_CSPlayerPawn* pawn = (C_CSPlayerPawn*)Entity; + if (pawn->get_entity_by_handle() == lp->get_entity_by_handle()) + continue; + if (pawn->getHealth() <= 0) + continue; + if (Config::team_check && pawn->getTeam() == lp->getTeam()) + continue; + Vector_t target_pos = GetEntityEyePos(pawn);//GetAimbotTargetPos(pawn, lep); + QAngle_t angle = CalcAngles(target_pos, lep); + angle.x *= -1.f; + angle.y += 180.f; + const float fov = GetFov(*viewangles, angle); + if (!std::isfinite(fov) || fov > bestFov) + continue; + bestFov = fov; + bestTarget = pawn; + bestAngle = angle; + } + } + lockedTarget = bestTarget; + // Сброс punch_angle при смене цели + last_punch_angle = {0,0,0}; + } + + prevAimbotState = aimbotActive; + + //if (Config::shooterAfterAim) { + // if (g_ShowMenu) return; + // C_CSPlayerPawn* lp = H::oGetLocalPlayer(0); + // bool onEnemy = false; + // if (lp) { + // int crosshairIdx = *(int*)((uintptr_t)lp + 0x1458); // m_iIDEntIndex + // if (crosshairIdx > 0) { + // auto target = I::GameEntity->Instance->Get(crosshairIdx); + // if (target && target->getHealth() > 0 && (!Config::team_check || target->getTeam() != lp->getTeam())) + // onEnemy = true; + // } + // } + // // Если врага нет под прицелом — всегда блокируем ЛКМ + // if (!onEnemy && (GetAsyncKeyState(VK_LBUTTON) & 0x8000)) { + // INPUT input = { 0 }; + // input.type = INPUT_MOUSE; + // input.mi.dwFlags = MOUSEEVENTF_LEFTUP; + // SendInput(1, &input, sizeof(INPUT)); + // } + // // return; // Не делаем return, чтобы аимбот работал всегда + //} } diff --git a/TempleWare-CS2/source/templeware/features/triggerbot/triggerbot.cpp b/TempleWare-CS2/source/templeware/features/triggerbot/triggerbot.cpp new file mode 100644 index 0000000..3a867ea --- /dev/null +++ b/TempleWare-CS2/source/templeware/features/triggerbot/triggerbot.cpp @@ -0,0 +1,116 @@ +#include "../../../cs2/entity/C_CSPlayerPawn/C_CSPlayerPawn.h" +#include "../../../templeware/interfaces/CGameEntitySystem/CGameEntitySystem.h" +#include "../../../templeware/interfaces/interfaces.h" +#include "../../../templeware/hooks/hooks.h" +#include "../../../templeware/config/config.h" +#include "../../../templeware/features/aim/aim.h" +#include +#include + +// Симуляция нажатия ЛКМ +void SimulateLMBClick() { + INPUT input = { 0 }; + input.type = INPUT_MOUSE; + input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; + SendInput(1, &input, sizeof(INPUT)); + ZeroMemory(&input, sizeof(INPUT)); + input.type = INPUT_MOUSE; + input.mi.dwFlags = MOUSEEVENTF_LEFTUP; + SendInput(1, &input, sizeof(INPUT)); +} + +void SimulateLMBDown() { + INPUT input = { 0 }; + input.type = INPUT_MOUSE; + input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; + SendInput(1, &input, sizeof(INPUT)); +} +void SimulateLMBUp() { + INPUT input = { 0 }; + input.type = INPUT_MOUSE; + input.mi.dwFlags = MOUSEEVENTF_LEFTUP; + SendInput(1, &input, sizeof(INPUT)); +} + +static DWORD lastShotTime = 0; +void Triggerbot() { + static DWORD lastShotTime = 0; + static bool lmbHeld = false; + static bool firstShot = true; + if (!Config::triggerbot) + return; + if (!Config::always_on_triggerbot && Config::triggerbot_key && !(GetAsyncKeyState(Config::triggerbot_key) & 0x8000)) + return; + if (GetAsyncKeyState(VK_LBUTTON) & 0x8000) { + if (lmbHeld) { + SimulateLMBUp(); + lmbHeld = false; + } + firstShot = true; + return; + } + C_CSPlayerPawn* lp = H::oGetLocalPlayer(0); + if (!lp || lp->getHealth() <= 0) { firstShot = true; return; } + int crosshairIdx = *(int*)((uintptr_t)lp + 0x1458); // m_iIDEntIndex + //g_DebugString = "debug: " + std::to_string(crosshairIdx); + if (crosshairIdx <= 0) { + if (lmbHeld) { + SimulateLMBUp(); + lmbHeld = false; + } + firstShot = true; + return; + } + auto target = I::GameEntity->Instance->Get(crosshairIdx); + if (!target) { + if (lmbHeld) { + SimulateLMBUp(); + lmbHeld = false; + } + firstShot = true; + return; + } + if (target->getHealth() <= 0) { + if (lmbHeld) { + SimulateLMBUp(); + lmbHeld = false; + } + firstShot = true; + return; + } + if (Config::team_check && target->getTeam() == lp->getTeam()) { + if (lmbHeld) { + SimulateLMBUp(); + lmbHeld = false; + } + firstShot = true; + return; + } + DWORD64 now = GetTickCount64(); + if (!Config::triggerbot_hold_lmb) { + if (now - lastShotTime < static_cast(Config::triggerbot_delay)) { + if (lmbHeld) { + SimulateLMBUp(); + lmbHeld = false; + } + firstShot = true; + return; + } + } + if (Config::triggerbot_hold_lmb) { + if (firstShot) { + SimulateLMBClick(); + firstShot = false; + lastShotTime = now; + return; + } else if (!lmbHeld) { + SimulateLMBDown(); + lmbHeld = true; + } + lastShotTime = now; + return; + } + SimulateLMBClick(); + lastShotTime = now; + firstShot = true; +} \ No newline at end of file diff --git a/TempleWare-CS2/source/templeware/features/triggerbot/triggerbot.h b/TempleWare-CS2/source/templeware/features/triggerbot/triggerbot.h new file mode 100644 index 0000000..b1115cc --- /dev/null +++ b/TempleWare-CS2/source/templeware/features/triggerbot/triggerbot.h @@ -0,0 +1,3 @@ +#pragma once + +void Triggerbot(); diff --git a/TempleWare-CS2/source/templeware/hooks/hooks.cpp b/TempleWare-CS2/source/templeware/hooks/hooks.cpp index 3158b0f..a3797f8 100644 --- a/TempleWare-CS2/source/templeware/hooks/hooks.cpp +++ b/TempleWare-CS2/source/templeware/hooks/hooks.cpp @@ -10,6 +10,7 @@ #include "../players/hook/playerHook.h" #include "../features/visuals/visuals.h" #include "../features/chams/chams.h" +#include "../features/triggerbot/triggerbot.h" #include "../../cs2/datatypes/cutlbuffer/cutlbuffer.h" #include "../../cs2/datatypes/keyvalues/keyvalues.h" @@ -28,6 +29,7 @@ void __fastcall H::hkFrameStageNotify(void* a1, int stage) Esp::cache(); Aimbot(); + Triggerbot(); // <--- вызов триггербота } } diff --git a/TempleWare-CS2/source/templeware/keybinds/keybinds.cpp b/TempleWare-CS2/source/templeware/keybinds/keybinds.cpp index 1cfef70..0e8059a 100644 --- a/TempleWare-CS2/source/templeware/keybinds/keybinds.cpp +++ b/TempleWare-CS2/source/templeware/keybinds/keybinds.cpp @@ -16,7 +16,6 @@ Keybinds::Keybinds() { void Keybinds::pollInputs() { for (Keybind& k : keybinds) { if (k.key != 0) { - // Если кнопка удерживается if (GetAsyncKeyState(k.key) & 0x8000) { k.var = true; } else { @@ -95,5 +94,65 @@ void Keybinds::menuButton(bool& var) { } } +void Keybinds::menuButton(int& key) { + char keyName[32] = "None"; + if (key != 0) { + switch (key) { + case VK_INSERT: strcpy_s(keyName, "INSERT"); break; + case VK_DELETE: strcpy_s(keyName, "DELETE"); break; + case VK_HOME: strcpy_s(keyName, "HOME"); break; + case VK_END: strcpy_s(keyName, "END"); break; + case VK_PRIOR: strcpy_s(keyName, "PAGE UP"); break; + case VK_NEXT: strcpy_s(keyName, "PAGE DOWN"); break; + case VK_LBUTTON: strcpy_s(keyName, "MOUSE1"); break; + case VK_RBUTTON: strcpy_s(keyName, "MOUSE2"); break; + case VK_MBUTTON: strcpy_s(keyName, "MOUSE3"); break; + case VK_XBUTTON1: strcpy_s(keyName, "MOUSE4"); break; + case VK_XBUTTON2: strcpy_s(keyName, "MOUSE5"); break; + default: + if (key >= 'A' && key <= 'Z') { + sprintf_s(keyName, "%c", key); + } + else if (key >= '0' && key <= '9') { + sprintf_s(keyName, "%c", key); + } + else { + sprintf_s(keyName, "0x%X", key); + } + break; + } + } + static bool isListening = false; + static bool skipFrame = false; + if (!isListening) { + ImGui::Text("[%s]", keyName); + ImGui::SameLine(); + if (ImGui::Button("Change##BindInt")) { + isListening = true; + skipFrame = true; + } + } else { + ImGui::Text("Press any key..."); + ImGui::SameLine(); + if (ImGui::Button("Cancel") || (GetAsyncKeyState(VK_ESCAPE) & 0x8000)) { + isListening = false; + return; + } + if (!skipFrame) { + if (GetAsyncKeyState(VK_XBUTTON1) & 0x8000) { key = VK_XBUTTON1; isListening = false; return; } + if (GetAsyncKeyState(VK_XBUTTON2) & 0x8000) { key = VK_XBUTTON2; isListening = false; return; } + for (int keyCode = 7; keyCode < 256; ++keyCode) { + if (GetAsyncKeyState(keyCode) & 0x8000) { + key = keyCode; + isListening = false; + return; + } + } + } else { + skipFrame = false; + } + } +} + Keybinds keybind; diff --git a/TempleWare-CS2/source/templeware/keybinds/keybinds.h b/TempleWare-CS2/source/templeware/keybinds/keybinds.h index d565c02..f04f440 100644 --- a/TempleWare-CS2/source/templeware/keybinds/keybinds.h +++ b/TempleWare-CS2/source/templeware/keybinds/keybinds.h @@ -17,6 +17,7 @@ public: void pollInputs(); void menuButton(bool& var); + void menuButton(int& key); private: std::vector keybinds; }; diff --git a/TempleWare-CS2/source/templeware/menu/menu.cpp b/TempleWare-CS2/source/templeware/menu/menu.cpp index 37744cf..a6d5fa0 100644 --- a/TempleWare-CS2/source/templeware/menu/menu.cpp +++ b/TempleWare-CS2/source/templeware/menu/menu.cpp @@ -9,6 +9,8 @@ #include "../utils/logging/log.h" +bool g_ShowMenu = true; + void ApplyImGuiTheme() { ImGui::StyleColorsDark(); @@ -89,18 +91,30 @@ void Menu::init(HWND& window, ID3D11Device* pDevice, ID3D11DeviceContext* pConte ApplyImGuiTheme(); - io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\arial.ttf", 16.0f); + // --- Поддержка кириллицы --- + ImFontConfig font_cfg; + font_cfg.OversampleH = 2; + font_cfg.OversampleV = 2; + font_cfg.PixelSnapH = true; + static const ImWchar ranges[] = { + 0x0020, 0x00FF, // Basic Latin + Latin Supplement + 0x0400, 0x052F, // Кириллица + 0 + }; + io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\arial.ttf", 16.0f, &font_cfg, ranges); + // --- конец кириллицы --- std::cout << "initialized menu\n"; } void Menu::render() { keybind.pollInputs(); + g_ShowMenu = showMenu; if (showMenu) { ImGuiWindowFlags window_flags = ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoTitleBar; - ImGui::SetNextWindowSize(ImVec2(600, 400), ImGuiCond_Once); + ImGui::SetNextWindowSize(ImVec2(900, 600), ImGuiCond_Once); ImGui::SetNextWindowPos(ImVec2(50, 50), ImGuiCond_Once); ImGui::Begin("TempleWare | Internal", nullptr, window_flags); @@ -139,14 +153,21 @@ void Menu::render() { ImGui::Separator(); ImGui::Checkbox("Enable##AimBot", &Config::aimbot); - ImGui::SameLine(); + // Селектор кости для аимбота + const char* boneNames[] = { "Head", "Neck", "Body", "Nearest" }; + ImGui::Combo("Aimbot Bone", &Config::aimbot_bone, boneNames, IM_ARRAYSIZE(boneNames)); + ImGui::Text("Key:"); ImGui::SameLine(); - keybind.menuButton(Config::aimbot); + keybind.menuButton(Config::aimbot_key); ImGui::Checkbox("Team Check", &Config::team_check); - ImGui::SliderFloat("FOV", &Config::aimbot_fov, 0.f, 90.f); + ImGui::Checkbox("Aimbot on LMB", &Config::aimbot_on_lmb); ImGui::SliderFloat("Smooth", &Config::aimbot_smooth, 0.f, 10.f, "%.2f"); + ImGui::Checkbox("Dynamic Smooth", &Config::aimbot_dynamic_smooth); + if (Config::aimbot_dynamic_smooth) { + ImGui::SliderFloat("Dynamic Smooth Factor", &Config::aimbot_dynamic_smooth_factor, 0.1f, 25.0f, "%.2f"); + } ImGui::Checkbox("Draw FOV Circle", &Config::fov_circle); if (Config::fov_circle) { ImGui::ColorEdit4("Circle Color##FovColor", (float*)&Config::fovCircleColor); @@ -158,8 +179,14 @@ void Menu::render() { ImGui::BeginChild("AimRight", ImVec2(0, 0), true); ImGui::Text("TriggerBot"); ImGui::Separator(); - ImGui::Text("No additional settings"); - + ImGui::Checkbox("Enable##TriggerBot", &Config::triggerbot); + ImGui::Checkbox("Shooter After Aim", &Config::shooterAfterAim); + ImGui::Checkbox("TriggerBot Hold LMB", &Config::triggerbot_hold_lmb); + ImGui::Checkbox("Always On##TriggerBot", &Config::always_on_triggerbot); + ImGui::Text("Key:"); + ImGui::SameLine(); + keybind.menuButton(Config::triggerbot_key); + ImGui::SliderFloat("Delay (ms)", &Config::triggerbot_delay, 0.0f, 500.0f, "%.0f"); ImGui::EndChild(); } break; diff --git a/TempleWare-CS2/source/templeware/menu/menu.h b/TempleWare-CS2/source/templeware/menu/menu.h index 4cf05f7..90b7c09 100644 --- a/TempleWare-CS2/source/templeware/menu/menu.h +++ b/TempleWare-CS2/source/templeware/menu/menu.h @@ -18,3 +18,5 @@ private: bool showMenu; int activeTab; }; + +extern bool g_ShowMenu; diff --git a/TempleWare-CS2/source/templeware/templeware.cpp b/TempleWare-CS2/source/templeware/templeware.cpp index e0b9064..15cba0b 100644 --- a/TempleWare-CS2/source/templeware/templeware.cpp +++ b/TempleWare-CS2/source/templeware/templeware.cpp @@ -45,4 +45,5 @@ void TempleWare::init(HWND& window, ID3D11Device* pDevice, ID3D11DeviceContext* internal_config::ConfigManager::Load("1"); printWithPrefix("Loaded config: 1.json"); // --- конец автозагрузки --- + } diff --git a/aim.cpp b/aim.cpp new file mode 100644 index 0000000..00c0bdb --- /dev/null +++ b/aim.cpp @@ -0,0 +1,76 @@ +#include "cusercmd.h" +#define MULTIPLAYER_BACKUP 150 + +#define _CS_INTERNAL_CONCATENATE(LEFT, RIGHT) LEFT##RIGHT +#define CS_CONCATENATE(LEFT, RIGHT) _CS_INTERNAL_CONCATENATE(LEFT, RIGHT) + +#define MEM_PAD(SIZE) \ +private: \ + char CS_CONCATENATE(pad_0, __COUNTER__)[SIZE]; \ +public: + +class CTinyMoveStepData +{ +public: + float flWhen; //0x0000 + MEM_PAD(0x4); //0x0004 + std::uint64_t nButton; //0x0008 + bool bPressed; //0x0010 + MEM_PAD(0x7); //0x0011 +}; //Size: 0x0018 + +class CMoveStepButtons +{ +public: + std::uint64_t nKeyboardPressed; //0x0000 + std::uint64_t nMouseWheelheelPressed; //0x0008 + std::uint64_t nUnPressed; //0x0010 + std::uint64_t nKeyboardCopy; //0x0018 +}; //Size: 0x0020 + +// @credits: www.unknowncheats.me/forum/members/2943409.html +class CExtendedMoveData : public CMoveStepButtons +{ +public: + float flForwardMove; //0x0020 + float flSideMove; //0x0024 + float flUpMove; //0x0028 + std::int32_t nMouseDeltaX; //0x002C + std::int32_t nMouseDeltaY; //0x0030 + std::int32_t nAdditionalStepMovesCount; //0x0034 + CTinyMoveStepData tinyMoveStepData[12]; //0x0038 + Vector vecViewAngle; //0x0158 + std::int32_t nTargetHandle; //0x0164 +}; //Size:0x0168 + +class CCSGOInput +{ + public: + MEM_PAD(0x250); + CUserCmd arrCommands[MULTIPLAYER_BACKUP]; + MEM_PAD(0x99) + bool bInThirdPerson; + MEM_PAD(0x6); + QAngle_t angThirdPersonAngles; + MEM_PAD(0xE); + std::int32_t nSequenceNumber; + double dbSomeTimer; + CExtendedMoveData currentMoveData; + std::int32_t nWeaponSwitchTick; + MEM_PAD(0x1C4); + CExtendedMoveData* pExtendedMoveData; + MEM_PAD(0x48); + int32_t nAttackStartHistoryIndex1; + int32_t nAttackStartHistoryIndex2; + int32_t nAttackStartHistoryIndex3; + + CUserCmd* GetUserCmd() { return &arrCommands[nSequenceNumber % MULTIPLAYER_BACKUP]; } + + QAngle_t* GetViewAngles() { + return reinterpret_cast(memory::m_CSGOInput_GetViewAngles)(this, 0); + } + + bool SetViewAngles(QAngle_t& vecAngles) { + return reinterpret_cast(memory::m_CSGOInput_SetViewAngles)(this, 0, vecAngles); + } +}; diff --git a/cs2-dumper.log b/cs2-dumper.log index 642e330..12bd309 100644 --- a/cs2-dumper.log +++ b/cs2-dumper.log @@ -1,5 +1,5 @@ -10:07:35 [INFO] found 16 buttons -10:07:36 [INFO] found 131 interfaces across 33 modules -10:07:36 [INFO] found 33 offsets across 5 modules -10:07:36 [INFO] found 2441 classes and 368 enums across 17 modules -10:07:36 [INFO] analysis completed in 1.27s +08:48:07 [INFO] found 16 buttons +08:48:07 [INFO] found 131 interfaces across 33 modules +08:48:08 [INFO] found 33 offsets across 5 modules +08:48:08 [INFO] found 2441 classes and 368 enums across 17 modules +08:48:08 [INFO] analysis completed in 1.24s diff --git a/examples/CS2-External-Overlay-Cheat b/examples/CS2-External-Overlay-Cheat new file mode 160000 index 0000000..2a5ed89 --- /dev/null +++ b/examples/CS2-External-Overlay-Cheat @@ -0,0 +1 @@ +Subproject commit 2a5ed894e768b8a66a8c7ddd2ff54bcccf07067b diff --git a/output/animationsystem_dll.cs b/output/animationsystem_dll.cs index 084127f..7ed4d5d 100644 --- a/output/animationsystem_dll.cs +++ b/output/animationsystem_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: animationsystem.dll diff --git a/output/animationsystem_dll.hpp b/output/animationsystem_dll.hpp index 765ee86..85c8403 100644 --- a/output/animationsystem_dll.hpp +++ b/output/animationsystem_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/animationsystem_dll.rs b/output/animationsystem_dll.rs index 7327c0f..e0d3037 100644 --- a/output/animationsystem_dll.rs +++ b/output/animationsystem_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/buttons.cs b/output/buttons.cs index 98af54c..32c8d7e 100644 --- a/output/buttons.cs +++ b/output/buttons.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper { // Module: client.dll diff --git a/output/buttons.hpp b/output/buttons.hpp index 362b56a..2f9d332 100644 --- a/output/buttons.hpp +++ b/output/buttons.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/buttons.rs b/output/buttons.rs index 2b0f578..e0aa4dd 100644 --- a/output/buttons.rs +++ b/output/buttons.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, unused)] diff --git a/output/client_dll.cs b/output/client_dll.cs index 9b5a34f..b360ad4 100644 --- a/output/client_dll.cs +++ b/output/client_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: client.dll diff --git a/output/client_dll.hpp b/output/client_dll.hpp index bf01cdc..265fc69 100644 --- a/output/client_dll.hpp +++ b/output/client_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/client_dll.rs b/output/client_dll.rs index 9deabf5..de5f089 100644 --- a/output/client_dll.rs +++ b/output/client_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/engine2_dll.cs b/output/engine2_dll.cs index 682af93..889b6bd 100644 --- a/output/engine2_dll.cs +++ b/output/engine2_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: engine2.dll diff --git a/output/engine2_dll.hpp b/output/engine2_dll.hpp index 091a312..45f287a 100644 --- a/output/engine2_dll.hpp +++ b/output/engine2_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/engine2_dll.rs b/output/engine2_dll.rs index 35b0c80..9f05655 100644 --- a/output/engine2_dll.rs +++ b/output/engine2_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/host_dll.cs b/output/host_dll.cs index 0fc6268..25f5157 100644 --- a/output/host_dll.cs +++ b/output/host_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: host.dll diff --git a/output/host_dll.hpp b/output/host_dll.hpp index c8a4fbb..83b890d 100644 --- a/output/host_dll.hpp +++ b/output/host_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/host_dll.rs b/output/host_dll.rs index 387bec3..46f727b 100644 --- a/output/host_dll.rs +++ b/output/host_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/info.json b/output/info.json index 28d5620..724d385 100644 --- a/output/info.json +++ b/output/info.json @@ -1,4 +1,4 @@ { "build_number": 14088, - "timestamp": "2025-07-17T10:07:36.863612600+00:00" + "timestamp": "2025-07-18T08:48:08.327988700+00:00" } \ No newline at end of file diff --git a/output/interfaces.cs b/output/interfaces.cs index 2714367..d9f5df0 100644 --- a/output/interfaces.cs +++ b/output/interfaces.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Interfaces { // Module: animationsystem.dll diff --git a/output/interfaces.hpp b/output/interfaces.hpp index 2622c9e..d213aaa 100644 --- a/output/interfaces.hpp +++ b/output/interfaces.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/interfaces.rs b/output/interfaces.rs index c45696d..d97b19e 100644 --- a/output/interfaces.rs +++ b/output/interfaces.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, unused)] diff --git a/output/materialsystem2_dll.cs b/output/materialsystem2_dll.cs index 20fb0c9..c2c0559 100644 --- a/output/materialsystem2_dll.cs +++ b/output/materialsystem2_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: materialsystem2.dll diff --git a/output/materialsystem2_dll.hpp b/output/materialsystem2_dll.hpp index 6c50d69..7be0838 100644 --- a/output/materialsystem2_dll.hpp +++ b/output/materialsystem2_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/materialsystem2_dll.rs b/output/materialsystem2_dll.rs index 593b45d..220a748 100644 --- a/output/materialsystem2_dll.rs +++ b/output/materialsystem2_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/networksystem_dll.cs b/output/networksystem_dll.cs index 0988929..ce5911c 100644 --- a/output/networksystem_dll.cs +++ b/output/networksystem_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: networksystem.dll diff --git a/output/networksystem_dll.hpp b/output/networksystem_dll.hpp index 64d5ac0..5335d0e 100644 --- a/output/networksystem_dll.hpp +++ b/output/networksystem_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/networksystem_dll.rs b/output/networksystem_dll.rs index 5eec57f..b1512fa 100644 --- a/output/networksystem_dll.rs +++ b/output/networksystem_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/offsets.cs b/output/offsets.cs index 872b3e7..2a544af 100644 --- a/output/offsets.cs +++ b/output/offsets.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Offsets { // Module: client.dll diff --git a/output/offsets.hpp b/output/offsets.hpp index 80c0926..60be573 100644 --- a/output/offsets.hpp +++ b/output/offsets.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/offsets.rs b/output/offsets.rs index 681d91e..04ce004 100644 --- a/output/offsets.rs +++ b/output/offsets.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, unused)] diff --git a/output/panorama_dll.cs b/output/panorama_dll.cs index 72bad2f..1ee92c8 100644 --- a/output/panorama_dll.cs +++ b/output/panorama_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: panorama.dll diff --git a/output/panorama_dll.hpp b/output/panorama_dll.hpp index ae6f878..97b9a45 100644 --- a/output/panorama_dll.hpp +++ b/output/panorama_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/panorama_dll.rs b/output/panorama_dll.rs index 23d55c4..2710803 100644 --- a/output/panorama_dll.rs +++ b/output/panorama_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/particles_dll.cs b/output/particles_dll.cs index b6be8e4..d5e3daa 100644 --- a/output/particles_dll.cs +++ b/output/particles_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: particles.dll diff --git a/output/particles_dll.hpp b/output/particles_dll.hpp index 1505691..6d76055 100644 --- a/output/particles_dll.hpp +++ b/output/particles_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/particles_dll.rs b/output/particles_dll.rs index c4737ac..d14f69a 100644 --- a/output/particles_dll.rs +++ b/output/particles_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/pulse_system_dll.cs b/output/pulse_system_dll.cs index 8cfa9b6..2385364 100644 --- a/output/pulse_system_dll.cs +++ b/output/pulse_system_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: pulse_system.dll diff --git a/output/pulse_system_dll.hpp b/output/pulse_system_dll.hpp index 25cdadb..2e870e0 100644 --- a/output/pulse_system_dll.hpp +++ b/output/pulse_system_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/pulse_system_dll.rs b/output/pulse_system_dll.rs index f1dcbb5..102787a 100644 --- a/output/pulse_system_dll.rs +++ b/output/pulse_system_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/rendersystemdx11_dll.cs b/output/rendersystemdx11_dll.cs index 6cb864b..4cf890f 100644 --- a/output/rendersystemdx11_dll.cs +++ b/output/rendersystemdx11_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: rendersystemdx11.dll diff --git a/output/rendersystemdx11_dll.hpp b/output/rendersystemdx11_dll.hpp index b408820..0bfec70 100644 --- a/output/rendersystemdx11_dll.hpp +++ b/output/rendersystemdx11_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/rendersystemdx11_dll.rs b/output/rendersystemdx11_dll.rs index b18e81f..06e3651 100644 --- a/output/rendersystemdx11_dll.rs +++ b/output/rendersystemdx11_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/resourcesystem_dll.cs b/output/resourcesystem_dll.cs index 8acb48c..5324770 100644 --- a/output/resourcesystem_dll.cs +++ b/output/resourcesystem_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: resourcesystem.dll diff --git a/output/resourcesystem_dll.hpp b/output/resourcesystem_dll.hpp index 74129c2..396fdad 100644 --- a/output/resourcesystem_dll.hpp +++ b/output/resourcesystem_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/resourcesystem_dll.rs b/output/resourcesystem_dll.rs index 1ecaca0..40673ff 100644 --- a/output/resourcesystem_dll.rs +++ b/output/resourcesystem_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/scenesystem_dll.cs b/output/scenesystem_dll.cs index 34c520c..c8030de 100644 --- a/output/scenesystem_dll.cs +++ b/output/scenesystem_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: scenesystem.dll diff --git a/output/scenesystem_dll.hpp b/output/scenesystem_dll.hpp index cf4f9fe..4a4f93d 100644 --- a/output/scenesystem_dll.hpp +++ b/output/scenesystem_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/scenesystem_dll.rs b/output/scenesystem_dll.rs index c109c12..117e5c3 100644 --- a/output/scenesystem_dll.rs +++ b/output/scenesystem_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/schemasystem_dll.cs b/output/schemasystem_dll.cs index 7b99869..e6cb08a 100644 --- a/output/schemasystem_dll.cs +++ b/output/schemasystem_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: schemasystem.dll diff --git a/output/schemasystem_dll.hpp b/output/schemasystem_dll.hpp index 259be7e..4572420 100644 --- a/output/schemasystem_dll.hpp +++ b/output/schemasystem_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/schemasystem_dll.rs b/output/schemasystem_dll.rs index 3958c8c..a797413 100644 --- a/output/schemasystem_dll.rs +++ b/output/schemasystem_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/server_dll.cs b/output/server_dll.cs index 609bdd4..0bff4a0 100644 --- a/output/server_dll.cs +++ b/output/server_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: server.dll diff --git a/output/server_dll.hpp b/output/server_dll.hpp index 9e74f4e..09843c0 100644 --- a/output/server_dll.hpp +++ b/output/server_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/server_dll.rs b/output/server_dll.rs index 0c6ed8d..9317aa1 100644 --- a/output/server_dll.rs +++ b/output/server_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/soundsystem_dll.cs b/output/soundsystem_dll.cs index 1a9cb0b..490b384 100644 --- a/output/soundsystem_dll.cs +++ b/output/soundsystem_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: soundsystem.dll diff --git a/output/soundsystem_dll.hpp b/output/soundsystem_dll.hpp index 4fddf37..a7e0f22 100644 --- a/output/soundsystem_dll.hpp +++ b/output/soundsystem_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/soundsystem_dll.rs b/output/soundsystem_dll.rs index 165d710..d967b26 100644 --- a/output/soundsystem_dll.rs +++ b/output/soundsystem_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/vphysics2_dll.cs b/output/vphysics2_dll.cs index 867c4c7..89cf509 100644 --- a/output/vphysics2_dll.cs +++ b/output/vphysics2_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: vphysics2.dll diff --git a/output/vphysics2_dll.hpp b/output/vphysics2_dll.hpp index 5356206..ce2d21f 100644 --- a/output/vphysics2_dll.hpp +++ b/output/vphysics2_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/vphysics2_dll.rs b/output/vphysics2_dll.rs index 0f7de7b..eadf026 100644 --- a/output/vphysics2_dll.rs +++ b/output/vphysics2_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/output/worldrenderer_dll.cs b/output/worldrenderer_dll.cs index fb8fa4d..0c8e946 100644 --- a/output/worldrenderer_dll.cs +++ b/output/worldrenderer_dll.cs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC namespace CS2Dumper.Schemas { // Module: worldrenderer.dll diff --git a/output/worldrenderer_dll.hpp b/output/worldrenderer_dll.hpp index 0ef8991..ff576f8 100644 --- a/output/worldrenderer_dll.hpp +++ b/output/worldrenderer_dll.hpp @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #pragma once diff --git a/output/worldrenderer_dll.rs b/output/worldrenderer_dll.rs index 7b90305..2f41d74 100644 --- a/output/worldrenderer_dll.rs +++ b/output/worldrenderer_dll.rs @@ -1,5 +1,5 @@ // Generated using https://github.com/a2x/cs2-dumper -// 2025-07-17 10:07:36.863612600 UTC +// 2025-07-18 08:48:08.327988700 UTC #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] diff --git a/x64/Release/TempleWare.dll b/x64/Release/TempleWare.dll index b8ecef1..3880c49 100644 Binary files a/x64/Release/TempleWare.dll and b/x64/Release/TempleWare.dll differ diff --git a/x64/Release/TempleWare.pdb b/x64/Release/TempleWare.pdb index 66cc2ea..bf299c8 100644 Binary files a/x64/Release/TempleWare.pdb and b/x64/Release/TempleWare.pdb differ