Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,12 @@ jobs:
run: |
cd ambuild && python setup.py install && cd ..

- name: Install Clang 16
if: matrix.os == 'ubuntu-latest'
run: |
apt update && apt install -y clang-16
ln -sf /usr/bin/clang-16 /usr/bin/clang && ln -sf /usr/bin/clang++-16 /usr/bin/clang++

- name: Build
working-directory: CS2Fixes-RampbugFix
shell: bash
Expand Down
5 changes: 3 additions & 2 deletions AMBuildScript
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ class MMSPluginConfig(object):
'-fPIC',
]

cxx.cxxflags += ['-std=c++17']
cxx.cxxflags += ['-std=c++20']
if (cxx.version >= 'gcc-4.0') or cxx.family == 'clang':
cxx.cflags += ['-fvisibility=hidden']
cxx.cxxflags += ['-fvisibility-inlines-hidden']
Expand All @@ -167,6 +167,7 @@ class MMSPluginConfig(object):
'-Wno-non-virtual-dtor',
'-Wno-overloaded-virtual',
'-Wno-register',
'-Wno-invalid-offsetof',
]
if (cxx.version >= 'gcc-4.7' or cxx.family == 'clang'):
cxx.cxxflags += ['-Wno-delete-non-virtual-dtor']
Expand Down Expand Up @@ -204,7 +205,7 @@ class MMSPluginConfig(object):
cxx.cflags += [
'/W3',
'/Zi',
'/std:c++17',
'/std:c++20',
]
cxx.cxxflags += ['/TP']

Expand Down
2 changes: 1 addition & 1 deletion AMBuilder
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ for sdk_target in MMSPlugin.sdk_targets:
try:
version = subprocess.check_output(['git', 'describe', '--tags', '--long']).decode('ascii').strip()
except subprocess.SubprocessError as e:
version = "1.7-dev"
version = "1.8-dev"
print("git describe failed as there are no tags")

print(f'Setting version to "{version}"')
Expand Down
138 changes: 68 additions & 70 deletions gamedata/cs2fixes.games.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,17 @@
"TryPlayerMove"
{
"library" "server"
"windows" "\x48\x8B\xC4\x4C\x89\x48\x20\x4C\x89\x40\x18\x48\x89\x50\x10\x48\x89\x48\x08\x55\x53\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\xA8\xE8\xFD\xFF\xFF\x48\x81\xEC\xD8\x02\x00\x00\x0F\x29\x70\xA8\x45\x33\xE4"
"linux" "\x48\xB8\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x55\x66\x0F\xEF\xC0"
}
//https://github.com/KZGlobalTeam/cs2kz-metamod/blob/743d50e1622d5354b1848f63b8b69ffe90ee744e/gamedata/cs2kz-core.games.txt#L43C4-L48C5
"InitPlayerMovementTraceFilter"
{
"library" "server"
"windows" "\x48\x89\x5C\x24\x08\x48\x89\x74\x24\x10\x57\x48\x83\xEC\x20\x0F\xB6\x41\x37\x48"
"linux" "\x55\xB8\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x55\x41\x54\x49\x89\xF4\x53\x48\x89\xFB\x48\x83\xEC\x2A\x66\x89\x47\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x88\x4F\x2A\x48\x89\x07\x0F\xB7\x47\x2A\x48\x89\x57\x2A\x48\xC7\x47\x2A\x2A\x2A\x2A\x2A\x48\xC7\x47\x2A\x2A\x2A\x2A\x2A\x66\x25\x2A\x2A\x48\xC7\x47\x2A\x2A\x2A\x2A\x2A\x83\xC8\x2A\x48\xC7\x47\x2A\x2A\x2A\x2A\x2A\xC7\x47\x2A\x2A\x2A\x2A\x2A\x66\x89\x47\x2A\x48\x89\xF7\xE8\x2A\x2A\x2A\x2A\x31"
}
// search for "CCSBot::BendLineOfSight". should find 1 function, CGameTrace::Init is called in there right after this string is referenced with an 80 byte parameter.
"InitGameTrace"
{
"library" "server"
"windows" "\x48\x89\x5C\x24\x08\x57\x48\x83\xEC\x20\x48\x8B\xD9\x33\xFF\x48\x8B\x0D\x2A\x2A\x2A\x2A\x48\x85\xC9"
"linux" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x81\xEC\xA8\x00\x00\x00\x4C\x8B\x25\x2A\x2A\x2A\x2A\x4D\x85\xE4"
"windows" "\x48\x8B\xC4\x4C\x89\x48\x20\x4C\x89\x40\x18\x48\x89\x50\x10\x48\x89\x48\x08\x55\x53\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\xA8\x98\xFC\xFF\xFF"
"linux" "\x55\x66\x0F\xEF\xC0\x48\x89\xE5\x41\x57\x49\x89\xF7\x41\x56\x41\x55\x49\x89\xD5"
}
//https://github.com/KZGlobalTeam/cs2kz-metamod/blob/f4ba43bd44dc3300bb78ca20006174935ba7964f/gamedata/cs2kz-core.games.txt#L217C4-L224C5
// sub_18061AF90(a1, a2, ((a1 + 48) + 864i64) & 1); <- this one
// sub_18061D5B0(a1, a2, "PlayerMove_PostMove");
"CategorizePosition"
{
"library" "server"
"windows" "\x40\x55\x56\x57\x41\x54\x48\x8D\xAC\x24\x28\xFE\xFF\xFF"
"linux" "\x48\xB8\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x55\x48\x89\xE5\x41\x57\x41\x89\xD7\x41\x56\x4C\x8D\xB5\x50"
"windows" "\x40\x55\x56\x57\x41\x55\x48\x8D\xAC\x24\x18\xFE\xFF\xFF"
"linux" "\x55\x66\x0F\xEF\xC0\x48\x89\xE5\x41\x57\x41\x56\x48\x8D\x85\x2A\x2A\x2A\x2A\x41\x55"
}
// Function with 5 arguments next to sv_walkable_normal references
"TracePlayerBBox"
Expand All @@ -53,8 +39,8 @@
"CCSPlayerController_SwitchTeam"
{
"library" "server"
"windows" "\x40\x56\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\xF9\x8B\xF2\x8B\xCA"
"linux" "\x55\x48\x89\xE5\x41\x55\x49\x89\xFD\x89\xF7"
"windows" "\x40\x53\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\xD9\x8B\xFA"
"linux" "\x55\x48\x89\xE5\x41\x54\x49\x89\xFC\x89\xF7"
}
// Called right after "Removed %s(%s)\n"
"UTIL_Remove"
Expand All @@ -67,8 +53,8 @@
"CEntitySystem_AddEntityIOEvent"
{
"library" "server"
"windows" "\x48\x89\x5C\x24\x08\x48\x89\x74\x24\x18\x57\x48\x83\xEC\x40\x49\x8B\xF1"
"linux" "\x55\x41\xBA\xFF\xFF\xFF\xFF"
"windows" "\x48\x89\x5C\x24\x2A\x4C\x89\x4C\x24\x2A\x48\x89\x4C\x24\x2A\x55\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x83\xEC\x2A\x49\x8B\xF9"
"linux" "\x55\x48\x89\xE5\x41\x55\x49\x89\xCD\x41\x54\x49\x89\xFC"
}
// "Explode" is passed to this
"CEntityInstance_AcceptInput"
Expand All @@ -80,8 +66,8 @@
"CEntityIdentity_AcceptInput"
{
"library" "server"
"windows" "\x48\x89\x54\x24\x10\x48\x89\x4C\x24\x08\x55\x53\x56\x57\x41\x55\x41\x56"
"linux" "\x55\x48\x89\xE5\x41\x57\x41\x56\x4C\x8D\xBD\xD0\xFE\xFF\xFF\x49\x89\xD6\x41\x55\x49\x89\xF5\x41\x54\x49\x89\xCC"
"windows" "\xE8\x2A\x2A\x2A\x2A\xF6\x44\x24\x2A\x2A\x74\x2A\x48\x8B\x05\x2A\x2A\x2A\x2A\x48\x8B\x54\x24\x2A\x48\x8B\x08\x48\x8B\x01\xFF\x50\x2A\x48\x83\xC4\x2A\x5B\xC3\xCC\xCC\xCC\x48\x89\x5C\x24"
"linux" "\x55\x48\x89\xF0\x48\x89\xE5\x41\x57\x49\x89\xFF\x41\x56\x48\x8D\x7D\xC0"
}
// Literally has "CGameRules::CGameRules constructed" in it
"CGameRules_Constructor"
Expand All @@ -95,56 +81,56 @@
{
"library" "server"
"windows" "\x48\x83\xEC\x68\x45\x33\xC9"
"linux" "\x55\x45\x31\xC0\x31\xC9\x48\x89\xE5\x41\x54"
"linux" "\x55\x45\x31\xC0\x31\xC9\x48\x89\xE5\x53"
}
// "commentary_semaphore" is passed to this
"CGameEntitySystem_FindEntityByName"
{
"library" "server"
"windows" "\x48\x81\xEC\x88\x2A\x2A\x2A\x4D\x85\xC0"
"linux" "\x48\x85\xD2\x74\x2A\x55\x48\x89\xE5\x41\x54"
"linux" "\x55\x48\x89\xE5\x41\x54\x53\x48\x83\xEC\x2A\x48\x85\xD2"
}
// "CBaseEntity::TakeDamageOld"
"CBaseEntity_TakeDamageOld"
{
"library" "server"
"windows" "\x48\x89\x74\x24\x2A\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x8B\x41\x2A\x48\x8B\xFA"
"linux" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x2A\x4C\x8D\x3D\x2A\x2A\x2A\x2A\x49\x8B\x3F"
"linux" "\x55\x48\x89\xE5\x41\x57\x49\x89\xF7\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x81\xEC\x2A\x2A\x2A\x2A\xF6\x46"
}
// "Game System %s is defined twice!\n"
// Note that this signature points to the instruction with sm_pFirst which is the first qword referenced in the function.
"IGameSystem_InitAllSystems_pFirst"
{
"library" "server"
"windows" "\x48\x8B\x3D\x2A\x2A\x2A\x2A\x48\x85\xFF\x0F\x84\x2A\x2A\x2A\x2A\xBE"
"windows" "\x48\x8B\x1D\x2A\x2A\x2A\x2A\x48\x85\xDB\x0F\x84\x2A\x2A\x2A\x2A\xBD"
"linux" "\x4C\x8B\x35\x2A\x2A\x2A\x2A\x4D\x85\xF6\x75\x2A\xE9"
}
"CBasePlayerController_SetPawn"
{
"library" "server"
"windows" "\x48\x89\x74\x24\x2A\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\x6C\x24\x2A\x48\x81\xEC\x2A\x2A\x2A\x2A\x4C\x8B\xF9"
"linux" "\x55\x48\x89\xE5\x41\x57\x49\x89\xFF\x41\x56\x48\x8D\x3D\x2A\x2A\x2A\x2A\x41\x89\xCE"
"windows" "\x48\x89\x5C\x24\x2A\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x83\xEC\x2A\x4C\x8B\x15"
"linux" "\x55\x48\x8D\x87\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x57\x45\x89\xC7"
}
// String: "CNavMesh::GetNearestNavArea"
"CNavMesh_GetNearestNavArea"
{
"library" "server"
"windows" "\x48\x89\x5C\x24\x2A\x48\x89\x54\x24\x2A\x48\x89\x4C\x24\x2A\x55\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\xAC\x24\x2A\x2A\x2A\x2A"
"linux" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x89\xCE\x41\x55\x49\x89\xFD\x41\x54\x48\x8D\x3D\x2A\x2A\x2A\x2A"
"windows" "\x48\x89\x5C\x24\x2A\x44\x89\x4C\x24\x2A\x48\x89\x54\x24\x2A\x48\x89\x4C\x24\x2A\x55\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\xAC\x24"
"linux" "\x55\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x57\x4D\x89\xC7"
}
// Search "Changes's player's model", look for a function containing 'models/%s.vmdl'. Below V_snprintf is the one
// This matches 2 functions on linux, however they're literally identical
"CBaseModelEntity_SetModel"
{
"library" "server"
"windows" "\x48\x89\x5C\x24\x2A\x48\x89\x7C\x24\x2A\x55\x48\x8B\xEC\x48\x83\xEC\x50\x48\x8B\xF9\x4C\x8B\xC2"
"linux" "\x55\x48\x89\xF2\x48\x89\xE5\x41\x54\x49\x89\xFC\x48\x8D\x7D\xE0\x48\x83\xEC\x18\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x8B\x30\x48\x8B\x06"
"windows" "\x40\x53\x48\x83\xEC\x2A\x48\x8B\xD9\x4C\x8B\xC2\x48\x8B\x0D\x2A\x2A\x2A\x2A\x48\x8D\x54\x24\x2A\x48\x8B\x01\xFF\x50\x2A\x48\x8B\x44\x24"
"linux" "\x55\x48\x89\xF2\x48\x89\xE5\x53\x48\x89\xFB\x48\x8D\x7D\x2A\x48\x83\xEC\x2A\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x8B\x30\x48\x8B\x06"
}
"CCSPlayer_WeaponServices_CanUse"
{
"library" "server"
"windows" "\x48\x89\x5C\x24\x2A\x48\x89\x6C\x24\x2A\x56\x57\x41\x56\x48\x83\xEC\x2A\x48\x8B\x01\x48\x8B\xFA"
"linux" "\x55\x48\x8D\x15\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x55\x49\x89\xFD\x41\x54\x49\x89\xF4"
"linux" "\x55\x48\x8D\x15\x2A\x2A\x2A\x2A\x48\x89\xE5\x41\x55\x49\x89\xFD"
}
"CreateEntityByName"
{
Expand All @@ -159,14 +145,14 @@
{
"library" "server"
"windows" "\x48\x89\x5C\x24\x10\x57\x48\x83\xEC\x20\x48\x8B\xD9\x4C\x8B\xC2"
"linux" "\x55\x48\x89\xF2\x48\x89\xE5\x41\x54\x49\x89\xFC\x48\x8D\x7D\xE0\x48\x83\xEC\x18\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x8B\x30\xE8\x2A\x2A\x2A\x2A\x48\x8B\x45\xE0"
"linux" "\x55\x48\x89\xF2\x48\x89\xE5\x41\x55\x41\x54\x53"
}
// "Error - cannot add bots after game is over."
"BotNavIgnore"
{
"library" "server"
"windows" "\x0F\x84\x2A\x2A\x2A\x2A\x80\xB8\x2A\x2A\x2A\x2A\x00\x0F\x84\x2A\x2A\x2A\x2A\x80\x3D\x2A\x2A\x2A\x2A\x00\x74\x15"
"linux" "\x48\x85\xC0\x74\x2E\x80\xB8\x2A\x2A\x2A\x2A\x00\x74\x25"
"linux" "\x0F\x84\x2A\x2A\x2A\x2A\x44\x0F\xB6\xB0\x2A\x2A\x2A\x2A\x45\x84\xF6\x0F\x84"
}
// Called right after this in windows "Entity %s(%s) is ambiguously parented to..."
"CBaseEntity_SetParent"
Expand All @@ -188,42 +174,49 @@
"CBaseEntity_EmitSoundFilter"
{
"library" "server"
"windows" "\x48\x89\x5C\x24\x08\x48\x89\x6C\x24\x10\x48\x89\x74\x24\x18\x48\x89\x7C\x24\x20\x41\x56\x48\x83\xEC\x30\x48\x8B\xEA"
"linux" "\x55\x48\x89\xE5\x41\x56\x49\x89\xD6\x41\x55\x41\x89\xF5\x41\x54\x48\x8D\x35\x2A\x2A\x2A\x2A"
"windows" "\x48\x89\x5C\x24\x2A\x48\x89\x74\x24\x2A\x48\x89\x7C\x24\x2A\x4C\x89\x74\x24\x2A\x55\x48\x8D\x6C\x24\x2A\x48\x81\xEC\x2A\x2A\x2A\x2A\x45\x33\xF6\x48\xC7\x45"
"linux" "\x48\xB8\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x55\x0F\x28\xD0"
}

// the longer function containing "___clientsideitemsplaceholder0___"
"CNetworkStringTable_DeleteAllStrings"
{
"library" "engine"
"windows" "\x40\x53\x57\x41\x57\x48\x83\xEC\x2A\x45\x33\xFF"
"linux" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x28\x48\x8B\x87\x2A\x2A\x2A\x2A"
"windows" "\x48\x89\x5C\x24\x2A\x48\x89\x7C\x24\x2A\x41\x56\x48\x83\xEC\x2A\x45\x33\xF6"
"linux" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x45\x31\xE4\x53\x48\x89\xFB\x48\x83\xEC\x2A\x48\x83\x7F"
}

// "PlayerMovementTraces"
"ProcessMovement"
{
"library" "server"
"windows" "\x40\x56\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x4C\x8B\x49"
"linux" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x83\xEC\x38\x48\x8B\x7F\x30"
"windows" "\x40\x57\x41\x57\x48\x81\xEC\x2A\x2A\x2A\x2A\x48\x83\x79"
"linux" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xF4\x53\x48\x89\xFB\x48\x83\xEC\x2A\x48\x8B\x7F\x2A\x48\x85\xFF\x0F\x84"
}

// "env_shake %s with...", in either xref there will be a call to SetMoveType(a1, 0, 0) at the top
"CBaseEntity_SetMoveType"
{
"library" "server"
"windows" "\x48\x89\x5C\x24\x2A\x48\x89\x6C\x24\x2A\x48\x89\x74\x24\x2A\x57\x48\x83\xEC\x2A\x41\x0F\xB6\xF0"
"linux" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x89\xD5\x41\x54\x49\x89\xFC\x53\x48\x83\xEC"
"windows" "\x48\x89\x5C\x24\x2A\x48\x89\x6C\x24\x2A\x48\x89\x74\x24\x2A\x48\x89\x7C\x24\x2A\x41\x56\x48\x83\xEC\x2A\x41\x0F\xB6\xF0"
"linux" "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x89\xD5\x41\x54\x53\x48\x89\xFB\x48\x83\xEC\x2A\x40\x38\xB7"
}
"CTakeDamageInfo"
{
"library" "server"
"windows" "\x40\x53\x48\x83\xEC\x60\x48\xC7\x41\x38\xFF\xFF\xFF\xFF"
"linux" "\x55\x48\x89\xE5\x48\x83\xEC\x10\x4C\x8D\x15\x2A\x2A\x2A\x2A"
}
"NetworkStateChanged"
{
"library" "server"
"windows" "\x4C\x8B\xC2\x48\x8B\xD1\x48\x8B\x09"
"linux" "\x48\x8B\x07\x48\x85\xC0\x74\x2A\x48\x8B\x50\x10"
}
}
"Offsets"
{
//MAYBE BROKEN
"GameEventManager"
{
"linux" "93"
Expand All @@ -236,68 +229,68 @@
}
"CBaseEntity::Use"
{
"windows" "133"
"linux" "132"
"windows" "148"
"linux" "147"
}
"Teleport"
{
"windows" "157"
"linux" "156"
"windows" "166"
"linux" "165"
}
"CollisionRulesChanged"
{
"windows" "179"
"linux" "178"
"windows" "190"
"linux" "189"
}
"IsEntityPawn"
{
"windows" "165"
"linux" "164"
"windows" "172"
"linux" "171"
}
"IsEntityController"
{
"windows" "161"
"linux" "160"
"windows" "173"
"linux" "172"
}
// String: "%s<%i><%s><%s>" ChangeTeam() CTMDBG..."
"CCSPlayerController_ChangeTeam"
{
"windows" "100"
"linux" "99"
"windows" "107"
"linux" "106"
}
// 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);
// 2872 (359 * 8) is the offset
"CBasePlayerPawn_CommitSuicide"
{
"windows" "377"
"linux" "377"
"windows" "404"
"linux" "404"
}
// In the function with "[%03d] Found: %s, firing\n", you'll find a call into a pointer offset just a bit higher, that's the offset * 8
"CGameRules_FindPickerEntity"
{
"windows" "27"
"linux" "28"
"windows" "25"
"linux" "26"
}
"PassesTriggerFilters"
{
"windows" "260"
"linux" "261"
"windows" "269"
"linux" "270"
}
"CCSPlayerController_Respawn"
{
"windows" "257"
"linux" "259"
"windows" "276"
"linux" "278"
}
"GetHammerUniqueId"
{
"windows" "102"
"linux" "101"
"windows" "116"
"linux" "115"
}
"CheckTransmitPlayerSlot"
{
"windows" "584"
"linux" "584"
"windows" "576"
"linux" "576"
}
// engine
// "tried to sprint to a non-client", there will be a check above like this: if ( a2 >= *(v5 + 632) ), note that this is a CUtlVector
Expand All @@ -312,14 +305,19 @@
"windows" "37"
"linux" "38"
}
"CBaseEntity::StateChanged"
{
"windows" "25"
"linux" "26"
}
}
"Patches"
{
// Jumping over a check for nav mesh
"BotNavIgnore"
{
"windows" "\xE9\x2C\x00\x00\x00\x90"
"linux" "\xE9\x15\x00\x00\x00"
"linux" "\xE9\x25\x00\x00\x00\x90"
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion sdk
Submodule sdk updated 2579 files
3 changes: 1 addition & 2 deletions src/addresses.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,8 @@ bool addresses::Initialize(CGameConfig *g_GameConfig)
#endif

RESOLVE_SIG(g_GameConfig, "CBasePlayerController_SetPawn", addresses::CBasePlayerController_SetPawn);
RESOLVE_SIG(g_GameConfig, "InitPlayerMovementTraceFilter", addresses::InitPlayerMovementTraceFilter);
RESOLVE_SIG(g_GameConfig, "TracePlayerBBox", addresses::TracePlayerBBox);
RESOLVE_SIG(g_GameConfig, "InitGameTrace", addresses::InitGameTrace);
RESOLVE_SIG(g_GameConfig, "NetworkStateChanged", addresses::NetworkStateChanged);

return true;
}
Loading
Loading