diff --git a/gamedata/cs2fixes.games.txt b/gamedata/cs2fixes.games.txt index 7aea80d24..dbae9c83d 100644 --- a/gamedata/cs2fixes.games.txt +++ b/gamedata/cs2fixes.games.txt @@ -26,7 +26,7 @@ { "library" "server" "windows" "\x4C\x89\x44\x24\x18\x55\x53\x56\x57\x41\x55\x41\x56\x48\x8D\xAC\x24\xF8\xFE\xFF\xFF" - "linux" "\x55\x48\x89\xE5\x41\x57\x41\x56\x49\x89\xD6\x41\x55\x49\x89\xFD\x41\x54\x53\x48\x89\xF3\x48\x81\xEC\xD8\x01\x00\x00" + "linux" "\x55\x48\x89\xE5\x41\x57\x49\x89\xFF\x41\x56\x49\x89\xCE\x41\x55\x49\x89\xD5" } // String: "Noise removal", there should be 3 customermachine checks "HammerNoCustomerMachine" @@ -234,29 +234,29 @@ } "Teleport" { - "windows" "165" - "linux" "164" + "windows" "168" + "linux" "167" } "CollisionRulesChanged" { - "windows" "189" - "linux" "188" + "windows" "191" + "linux" "190" } "IsEntityPawn" { - "windows" "172" - "linux" "171" + "windows" "174" + "linux" "173" } "IsEntityController" { - "windows" "173" - "linux" "172" + "windows" "175" + "linux" "174" } // String: "%s<%i><%s><%s>" ChangeTeam() CTMDBG..." "CCSPlayerController_ChangeTeam" { - "windows" "106" - "linux" "105" + "windows" "109" + "linux" "108" } // Look for the kill command, go through its callback and you should a find call like this, with v9 being a pawn pointer: // return (*(*v9 + 2872LL))(v9, v27, 0LL); @@ -274,13 +274,13 @@ } "PassesTriggerFilters" { - "windows" "269" - "linux" "270" + "windows" "271" + "linux" "272" } "CCSPlayerController_Respawn" { - "windows" "275" - "linux" "277" + "windows" "277" + "linux" "279" } "GetHammerUniqueId" { diff --git a/sdk b/sdk index 0f84fcf12..84a823db0 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit 0f84fcf129f20dcaed07f9628c3555ee9b0b0f6c +Subproject commit 84a823db042b49d2f6934b770dafbf3a366cef26 diff --git a/src/cs2_sdk/entity/services.h b/src/cs2_sdk/entity/services.h index 9e56e68cb..2d73b8515 100644 --- a/src/cs2_sdk/entity/services.h +++ b/src/cs2_sdk/entity/services.h @@ -261,15 +261,14 @@ struct SubtickMove bool pressed; }; -// Size: 0xE8 -class CMoveData +class CMoveDataBase { public: - CMoveData() = default; - - CMoveData(const CMoveData &source) + CMoveDataBase() = default; + CMoveDataBase(const CMoveDataBase &source) // clang-format off - : moveDataFlags {source.moveDataFlags}, + : m_bHasZeroFrametime {source.m_bHasZeroFrametime}, + m_bIsLateCommand {source.m_bIsLateCommand}, m_nPlayerHandle {source.m_nPlayerHandle}, m_vecAbsViewAngles {source.m_vecAbsViewAngles}, m_vecViewAngles {source.m_vecViewAngles}, @@ -279,23 +278,16 @@ class CMoveData m_flUpMove {source.m_flUpMove}, m_vecVelocity {source.m_vecVelocity}, m_vecAngles {source.m_vecAngles}, + m_vecUnknown {source.m_vecUnknown}, m_bHasSubtickInputs {source.m_bHasSubtickInputs}, + unknown {source.unknown}, m_collisionNormal {source.m_collisionNormal}, - m_groundNormal {source.m_groundNormal}, + m_groundNormal {source.m_groundNormal}, m_vecAbsOrigin {source.m_vecAbsOrigin}, m_nTickCount {source.m_nTickCount}, m_nTargetTick {source.m_nTargetTick}, - m_flSubtickEndFraction {source.m_flSubtickEndFraction}, m_flSubtickStartFraction {source.m_flSubtickStartFraction}, - m_outWishVel {source.m_outWishVel}, - m_vecOldAngles {source.m_vecOldAngles}, - m_flMaxSpeed {source.m_flMaxSpeed}, - m_flClientMaxSpeed {source.m_flClientMaxSpeed}, - m_flSubtickAccelSpeed {source.m_flSubtickAccelSpeed}, - m_bJumpedThisTick {source.m_bJumpedThisTick}, - m_bOnGround {source.m_bOnGround}, - m_bShouldApplyGravity {source.m_bShouldApplyGravity}, - m_bGameCodeMovedPlayer {source.m_bGameCodeMovedPlayer} + m_flSubtickEndFraction {source.m_flSubtickEndFraction} // clang-format on { for (int i = 0; i < source.m_AttackSubtickMoves.Count(); i++) @@ -330,7 +322,8 @@ class CMoveData } public: - uint8_t moveDataFlags; + bool m_bHasZeroFrametime: 1; + bool m_bIsLateCommand: 1; CHandle m_nPlayerHandle; QAngle m_vecAbsViewAngles; QAngle m_vecViewAngles; @@ -339,28 +332,42 @@ class CMoveData float m_flSideMove; // Warning! Flipped compared to CS:GO, moving right gives negative value float m_flUpMove; Vector m_vecVelocity; - Vector m_vecAngles; + QAngle m_vecAngles; + Vector m_vecUnknown; CUtlVector m_SubtickMoves; CUtlVector m_AttackSubtickMoves; bool m_bHasSubtickInputs; + float unknown; // Set to 1.0 during SetupMove, never change during gameplay. Is apparently used for weapon services stuff. CUtlVector m_TouchList; Vector m_collisionNormal; Vector m_groundNormal; // unsure Vector m_vecAbsOrigin; int32_t m_nTickCount; int32_t m_nTargetTick; - float m_flSubtickEndFraction; float m_flSubtickStartFraction; - bool m_nGameModeMovedPlayer; + float m_flSubtickEndFraction; +}; + +class CMoveData : public CMoveDataBase +{ +public: + CMoveData() = default; + + CMoveData(const CMoveData &source) + : CMoveDataBase(source), m_outWishVel {source.m_outWishVel}, m_vecOldAngles {source.m_vecOldAngles}, + m_vecAccelPerSecond {source.m_vecAccelPerSecond}, m_vecInputRotated {source.m_vecInputRotated}, m_flMaxSpeed {source.m_flMaxSpeed} + { + } + Vector m_outWishVel; - Vector m_vecOldAngles; + QAngle m_vecOldAngles; + Vector m_vecAccelPerSecond; // related to accel and friction + Vector m_vecInputRotated; float m_flMaxSpeed; float m_flClientMaxSpeed; - float m_flSubtickAccelSpeed; // Related to ground acceleration subtick stuff with sv_stopspeed and friction - bool m_bJumpedThisTick; // something to do with basevelocity and the tick the player jumps - bool m_bOnGround; - bool m_bShouldApplyGravity; + float m_flFrictionDecel; + bool m_bInAir; bool m_bGameCodeMovedPlayer; // true if usercmd cmd number == (m_nGameCodeHasMovedPlayerAfterCommand + 1) }; -static_assert(sizeof(CMoveData) == 256, "Class didn't match expected size"); \ No newline at end of file +static_assert(sizeof(CMoveData) == 296, "Class didn't match expected size"); \ No newline at end of file