Compare commits

...

3 Commits

Author SHA1 Message Date
a2x 13836dd019 Game update (14015) (2) 2024-06-18 12:47:46 +10:00
a2x bfc2ceb13d Add tests for offsets 2024-06-18 12:47:28 +10:00
a2x 3590d4412c Rename some schema struct fields 2024-06-18 12:41:12 +10:00
75 changed files with 527 additions and 351 deletions

View File

@ -1,6 +1,7 @@
# cs2-dumper # cs2-dumper
An external offset/interface dumper for Counter-Strike 2, with support for both Windows & Linux. Powered by [memflow](https://github.com/memflow/memflow). An external offset/interface dumper for Counter-Strike 2, with support for both Windows & Linux. Powered
by [memflow](https://github.com/memflow/memflow).
The native Linux version is available in the [linux](https://github.com/a2x/cs2-dumper/tree/linux) branch. The native Linux version is available in the [linux](https://github.com/a2x/cs2-dumper/tree/linux) branch.
@ -15,7 +16,10 @@ toolchain must be installed.
1. Ensure the game process is running (Being in the main menu should suffice). 1. Ensure the game process is running (Being in the main menu should suffice).
2. Run the `cs2-dumper` executable (Note that some memflow connectors may require elevated privileges). 2. Run the `cs2-dumper` executable (Note that some memflow connectors may require elevated privileges).
When running the executable without providing an optional memflow connector name, it will default to using the [memflow-native](https://github.com/memflow/memflow-native) cross-platform OS layer to read the memory of the game process. If you wish to use an existing memflow connector instead, pass the `connector` and optional `connector-args` arguments to the program. _Note:_ If you run the executable without specifying an optional memflow connector name, it will automatically use the
[memflow-native](https://github.com/memflow/memflow-native) OS layer to read the memory of the game process. If you
wish to use an existing memflow connector instead, you can pass the `connector` and optional `connector-args` arguments
to the program.
E.g. `./cs2-dumper -c pcileech -a device=fpga -vvv` E.g. `./cs2-dumper -c pcileech -a device=fpga -vvv`
@ -31,6 +35,10 @@ E.g. `./cs2-dumper -c pcileech -a device=fpga -vvv`
- `-h, --help`: Print help. - `-h, --help`: Print help.
- `-V, --version`: Print version. - `-V, --version`: Print version.
## Running Tests
To run tests, use the following command: `cargo test -- --nocapture`.
## License ## License
Licensed under the MIT license ([LICENSE](./LICENSE)). Licensed under the MIT license ([LICENSE](./LICENSE)).

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: animationsystem.dll // Module: animationsystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,24 +1,24 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper { namespace CS2Dumper {
// Module: client.dll // Module: client.dll
public static class Buttons { public static class Buttons {
public const nint attack = 0x1813100; public const nint attack = 0x1813130;
public const nint attack2 = 0x1813190; public const nint attack2 = 0x18131C0;
public const nint back = 0x18133D0; public const nint back = 0x1813400;
public const nint duck = 0x18136A0; public const nint duck = 0x18136D0;
public const nint forward = 0x1813340; public const nint forward = 0x1813370;
public const nint jump = 0x1813610; public const nint jump = 0x1813640;
public const nint left = 0x1813460; public const nint left = 0x1813490;
public const nint lookatweapon = 0x1A1E0D0; public const nint lookatweapon = 0x1A1E350;
public const nint reload = 0x1813070; public const nint reload = 0x18130A0;
public const nint right = 0x18134F0; public const nint right = 0x1813520;
public const nint showscores = 0x1A1DFB0; public const nint showscores = 0x1A1E230;
public const nint sprint = 0x1812FE0; public const nint sprint = 0x1813010;
public const nint turnleft = 0x1813220; public const nint turnleft = 0x1813250;
public const nint turnright = 0x18132B0; public const nint turnright = 0x18132E0;
public const nint use = 0x1813580; public const nint use = 0x18135B0;
public const nint zoom = 0x1A1E040; public const nint zoom = 0x1A1E2C0;
} }
} }

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once
@ -8,21 +8,21 @@
namespace cs2_dumper { namespace cs2_dumper {
// Module: client.dll // Module: client.dll
namespace buttons { namespace buttons {
constexpr std::ptrdiff_t attack = 0x1813100; constexpr std::ptrdiff_t attack = 0x1813130;
constexpr std::ptrdiff_t attack2 = 0x1813190; constexpr std::ptrdiff_t attack2 = 0x18131C0;
constexpr std::ptrdiff_t back = 0x18133D0; constexpr std::ptrdiff_t back = 0x1813400;
constexpr std::ptrdiff_t duck = 0x18136A0; constexpr std::ptrdiff_t duck = 0x18136D0;
constexpr std::ptrdiff_t forward = 0x1813340; constexpr std::ptrdiff_t forward = 0x1813370;
constexpr std::ptrdiff_t jump = 0x1813610; constexpr std::ptrdiff_t jump = 0x1813640;
constexpr std::ptrdiff_t left = 0x1813460; constexpr std::ptrdiff_t left = 0x1813490;
constexpr std::ptrdiff_t lookatweapon = 0x1A1E0D0; constexpr std::ptrdiff_t lookatweapon = 0x1A1E350;
constexpr std::ptrdiff_t reload = 0x1813070; constexpr std::ptrdiff_t reload = 0x18130A0;
constexpr std::ptrdiff_t right = 0x18134F0; constexpr std::ptrdiff_t right = 0x1813520;
constexpr std::ptrdiff_t showscores = 0x1A1DFB0; constexpr std::ptrdiff_t showscores = 0x1A1E230;
constexpr std::ptrdiff_t sprint = 0x1812FE0; constexpr std::ptrdiff_t sprint = 0x1813010;
constexpr std::ptrdiff_t turnleft = 0x1813220; constexpr std::ptrdiff_t turnleft = 0x1813250;
constexpr std::ptrdiff_t turnright = 0x18132B0; constexpr std::ptrdiff_t turnright = 0x18132E0;
constexpr std::ptrdiff_t use = 0x1813580; constexpr std::ptrdiff_t use = 0x18135B0;
constexpr std::ptrdiff_t zoom = 0x1A1E040; constexpr std::ptrdiff_t zoom = 0x1A1E2C0;
} }
} }

View File

@ -1,20 +1,20 @@
{ {
"client.dll": { "client.dll": {
"attack": 25243904, "attack": 25243952,
"attack2": 25244048, "attack2": 25244096,
"back": 25244624, "back": 25244672,
"duck": 25245344, "duck": 25245392,
"forward": 25244480, "forward": 25244528,
"jump": 25245200, "jump": 25245248,
"left": 25244768, "left": 25244816,
"lookatweapon": 27386064, "lookatweapon": 27386704,
"reload": 25243760, "reload": 25243808,
"right": 25244912, "right": 25244960,
"showscores": 27385776, "showscores": 27386416,
"sprint": 25243616, "sprint": 25243664,
"turnleft": 25244192, "turnleft": 25244240,
"turnright": 25244336, "turnright": 25244384,
"use": 25245056, "use": 25245104,
"zoom": 27385920 "zoom": 27386560
} }
} }

View File

@ -1,26 +1,26 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, unused)] #![allow(non_upper_case_globals, unused)]
pub mod cs2_dumper { pub mod cs2_dumper {
// Module: client.dll // Module: client.dll
pub mod buttons { pub mod buttons {
pub const attack: usize = 0x1813100; pub const attack: usize = 0x1813130;
pub const attack2: usize = 0x1813190; pub const attack2: usize = 0x18131C0;
pub const back: usize = 0x18133D0; pub const back: usize = 0x1813400;
pub const duck: usize = 0x18136A0; pub const duck: usize = 0x18136D0;
pub const forward: usize = 0x1813340; pub const forward: usize = 0x1813370;
pub const jump: usize = 0x1813610; pub const jump: usize = 0x1813640;
pub const left: usize = 0x1813460; pub const left: usize = 0x1813490;
pub const lookatweapon: usize = 0x1A1E0D0; pub const lookatweapon: usize = 0x1A1E350;
pub const reload: usize = 0x1813070; pub const reload: usize = 0x18130A0;
pub const right: usize = 0x18134F0; pub const right: usize = 0x1813520;
pub const showscores: usize = 0x1A1DFB0; pub const showscores: usize = 0x1A1E230;
pub const sprint: usize = 0x1812FE0; pub const sprint: usize = 0x1813010;
pub const turnleft: usize = 0x1813220; pub const turnleft: usize = 0x1813250;
pub const turnright: usize = 0x18132B0; pub const turnright: usize = 0x18132E0;
pub const r#use: usize = 0x1813580; pub const r#use: usize = 0x18135B0;
pub const zoom: usize = 0x1A1E040; pub const zoom: usize = 0x1A1E2C0;
} }
} }

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: client.dll // Module: client.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: engine2.dll // Module: engine2.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: host.dll // Module: host.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,4 +1,4 @@
{ {
"build_number": 14015, "build_number": 14015,
"timestamp": "2024-06-14T04:06:49.525200800+00:00" "timestamp": "2024-06-18T02:29:36.184201900+00:00"
} }

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Interfaces { namespace CS2Dumper.Interfaces {
// Module: animationsystem.dll // Module: animationsystem.dll
@ -9,14 +9,14 @@ namespace CS2Dumper.Interfaces {
} }
// Module: client.dll // Module: client.dll
public static class ClientDll { public static class ClientDll {
public const nint ClientToolsInfo_001 = 0x7466B0; public const nint ClientToolsInfo_001 = 0x7466C0;
public const nint EmptyWorldService001_Client = 0x481E40; public const nint EmptyWorldService001_Client = 0x481E40;
public const nint GameClientExports001 = 0x7466C0; public const nint GameClientExports001 = 0x7466D0;
public const nint LegacyGameUI001 = 0x8DEAF0; public const nint LegacyGameUI001 = 0x8DEEE0;
public const nint Source2Client002 = 0x7466D0; public const nint Source2Client002 = 0x7466E0;
public const nint Source2ClientConfig001 = 0x465240; public const nint Source2ClientConfig001 = 0x465240;
public const nint Source2ClientPrediction001 = 0x7C9980; public const nint Source2ClientPrediction001 = 0x7C9990;
public const nint Source2ClientUI001 = 0x8C53C0; public const nint Source2ClientUI001 = 0x8C57B0;
} }
// Module: engine2.dll // Module: engine2.dll
public static class Engine2Dll { public static class Engine2Dll {
@ -159,12 +159,12 @@ namespace CS2Dumper.Interfaces {
public static class ServerDll { public static class ServerDll {
public const nint EmptyWorldService001_Server = 0x564D40; public const nint EmptyWorldService001_Server = 0x564D40;
public const nint EntitySubclassUtilsV001 = 0x2BD310; public const nint EntitySubclassUtilsV001 = 0x2BD310;
public const nint NavGameTest001 = 0xA57040; public const nint NavGameTest001 = 0xA57050;
public const nint ServerToolsInfo_001 = 0x8490A0; public const nint ServerToolsInfo_001 = 0x8490B0;
public const nint Source2GameClients001 = 0x8490B0; public const nint Source2GameClients001 = 0x8490C0;
public const nint Source2GameDirector001 = 0x124330; public const nint Source2GameDirector001 = 0x124330;
public const nint Source2GameEntities001 = 0x8490C0; public const nint Source2GameEntities001 = 0x8490D0;
public const nint Source2Server001 = 0x8490D0; public const nint Source2Server001 = 0x8490E0;
public const nint Source2ServerConfig001 = 0x54FA60; public const nint Source2ServerConfig001 = 0x54FA60;
public const nint customnavsystem001 = 0x22BE60; public const nint customnavsystem001 = 0x22BE60;
} }
@ -181,26 +181,26 @@ namespace CS2Dumper.Interfaces {
} }
// Module: steamclient64.dll // Module: steamclient64.dll
public static class Steamclient64Dll { public static class Steamclient64Dll {
public const nint CLIENTENGINE_INTERFACE_VERSION005 = 0x872BD0; public const nint CLIENTENGINE_INTERFACE_VERSION005 = 0x8A8BB0;
public const nint IVALIDATE001 = 0x876D20; public const nint IVALIDATE001 = 0x8AD030;
public const nint SteamClient006 = 0x6708F0; public const nint SteamClient006 = 0x693680;
public const nint SteamClient007 = 0x670900; public const nint SteamClient007 = 0x693690;
public const nint SteamClient008 = 0x670910; public const nint SteamClient008 = 0x6936A0;
public const nint SteamClient009 = 0x670920; public const nint SteamClient009 = 0x6936B0;
public const nint SteamClient010 = 0x670930; public const nint SteamClient010 = 0x6936C0;
public const nint SteamClient011 = 0x670940; public const nint SteamClient011 = 0x6936D0;
public const nint SteamClient012 = 0x670950; public const nint SteamClient012 = 0x6936E0;
public const nint SteamClient013 = 0x670960; public const nint SteamClient013 = 0x6936F0;
public const nint SteamClient014 = 0x670970; public const nint SteamClient014 = 0x693700;
public const nint SteamClient015 = 0x670980; public const nint SteamClient015 = 0x693710;
public const nint SteamClient016 = 0x670990; public const nint SteamClient016 = 0x693720;
public const nint SteamClient017 = 0x6709A0; public const nint SteamClient017 = 0x693730;
public const nint SteamClient018 = 0x6709B0; public const nint SteamClient018 = 0x693740;
public const nint SteamClient019 = 0x6709C0; public const nint SteamClient019 = 0x693750;
public const nint SteamClient020 = 0x6709D0; public const nint SteamClient020 = 0x693760;
public const nint SteamClient021 = 0x6709E0; public const nint SteamClient021 = 0x693770;
public const nint p2pvoice002 = 0xDA1A0; public const nint p2pvoice002 = 0xDA9A0;
public const nint p2pvoicesingleton002 = 0xD6C00; public const nint p2pvoicesingleton002 = 0xD72B0;
} }
// Module: tier0.dll // Module: tier0.dll
public static class Tier0Dll { public static class Tier0Dll {
@ -232,8 +232,8 @@ namespace CS2Dumper.Interfaces {
} }
// Module: vstdlib_s64.dll // Module: vstdlib_s64.dll
public static class VstdlibS64Dll { public static class VstdlibS64Dll {
public const nint IVALIDATE001 = 0x25140; public const nint IVALIDATE001 = 0x26B40;
public const nint VEngineCvar002 = 0x5760; public const nint VEngineCvar002 = 0x6060;
} }
// Module: worldrenderer.dll // Module: worldrenderer.dll
public static class WorldrendererDll { public static class WorldrendererDll {

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once
@ -14,14 +14,14 @@ namespace cs2_dumper {
} }
// Module: client.dll // Module: client.dll
namespace client_dll { namespace client_dll {
constexpr std::ptrdiff_t ClientToolsInfo_001 = 0x7466B0; constexpr std::ptrdiff_t ClientToolsInfo_001 = 0x7466C0;
constexpr std::ptrdiff_t EmptyWorldService001_Client = 0x481E40; constexpr std::ptrdiff_t EmptyWorldService001_Client = 0x481E40;
constexpr std::ptrdiff_t GameClientExports001 = 0x7466C0; constexpr std::ptrdiff_t GameClientExports001 = 0x7466D0;
constexpr std::ptrdiff_t LegacyGameUI001 = 0x8DEAF0; constexpr std::ptrdiff_t LegacyGameUI001 = 0x8DEEE0;
constexpr std::ptrdiff_t Source2Client002 = 0x7466D0; constexpr std::ptrdiff_t Source2Client002 = 0x7466E0;
constexpr std::ptrdiff_t Source2ClientConfig001 = 0x465240; constexpr std::ptrdiff_t Source2ClientConfig001 = 0x465240;
constexpr std::ptrdiff_t Source2ClientPrediction001 = 0x7C9980; constexpr std::ptrdiff_t Source2ClientPrediction001 = 0x7C9990;
constexpr std::ptrdiff_t Source2ClientUI001 = 0x8C53C0; constexpr std::ptrdiff_t Source2ClientUI001 = 0x8C57B0;
} }
// Module: engine2.dll // Module: engine2.dll
namespace engine2_dll { namespace engine2_dll {
@ -164,12 +164,12 @@ namespace cs2_dumper {
namespace server_dll { namespace server_dll {
constexpr std::ptrdiff_t EmptyWorldService001_Server = 0x564D40; constexpr std::ptrdiff_t EmptyWorldService001_Server = 0x564D40;
constexpr std::ptrdiff_t EntitySubclassUtilsV001 = 0x2BD310; constexpr std::ptrdiff_t EntitySubclassUtilsV001 = 0x2BD310;
constexpr std::ptrdiff_t NavGameTest001 = 0xA57040; constexpr std::ptrdiff_t NavGameTest001 = 0xA57050;
constexpr std::ptrdiff_t ServerToolsInfo_001 = 0x8490A0; constexpr std::ptrdiff_t ServerToolsInfo_001 = 0x8490B0;
constexpr std::ptrdiff_t Source2GameClients001 = 0x8490B0; constexpr std::ptrdiff_t Source2GameClients001 = 0x8490C0;
constexpr std::ptrdiff_t Source2GameDirector001 = 0x124330; constexpr std::ptrdiff_t Source2GameDirector001 = 0x124330;
constexpr std::ptrdiff_t Source2GameEntities001 = 0x8490C0; constexpr std::ptrdiff_t Source2GameEntities001 = 0x8490D0;
constexpr std::ptrdiff_t Source2Server001 = 0x8490D0; constexpr std::ptrdiff_t Source2Server001 = 0x8490E0;
constexpr std::ptrdiff_t Source2ServerConfig001 = 0x54FA60; constexpr std::ptrdiff_t Source2ServerConfig001 = 0x54FA60;
constexpr std::ptrdiff_t customnavsystem001 = 0x22BE60; constexpr std::ptrdiff_t customnavsystem001 = 0x22BE60;
} }
@ -186,26 +186,26 @@ namespace cs2_dumper {
} }
// Module: steamclient64.dll // Module: steamclient64.dll
namespace steamclient64_dll { namespace steamclient64_dll {
constexpr std::ptrdiff_t CLIENTENGINE_INTERFACE_VERSION005 = 0x872BD0; constexpr std::ptrdiff_t CLIENTENGINE_INTERFACE_VERSION005 = 0x8A8BB0;
constexpr std::ptrdiff_t IVALIDATE001 = 0x876D20; constexpr std::ptrdiff_t IVALIDATE001 = 0x8AD030;
constexpr std::ptrdiff_t SteamClient006 = 0x6708F0; constexpr std::ptrdiff_t SteamClient006 = 0x693680;
constexpr std::ptrdiff_t SteamClient007 = 0x670900; constexpr std::ptrdiff_t SteamClient007 = 0x693690;
constexpr std::ptrdiff_t SteamClient008 = 0x670910; constexpr std::ptrdiff_t SteamClient008 = 0x6936A0;
constexpr std::ptrdiff_t SteamClient009 = 0x670920; constexpr std::ptrdiff_t SteamClient009 = 0x6936B0;
constexpr std::ptrdiff_t SteamClient010 = 0x670930; constexpr std::ptrdiff_t SteamClient010 = 0x6936C0;
constexpr std::ptrdiff_t SteamClient011 = 0x670940; constexpr std::ptrdiff_t SteamClient011 = 0x6936D0;
constexpr std::ptrdiff_t SteamClient012 = 0x670950; constexpr std::ptrdiff_t SteamClient012 = 0x6936E0;
constexpr std::ptrdiff_t SteamClient013 = 0x670960; constexpr std::ptrdiff_t SteamClient013 = 0x6936F0;
constexpr std::ptrdiff_t SteamClient014 = 0x670970; constexpr std::ptrdiff_t SteamClient014 = 0x693700;
constexpr std::ptrdiff_t SteamClient015 = 0x670980; constexpr std::ptrdiff_t SteamClient015 = 0x693710;
constexpr std::ptrdiff_t SteamClient016 = 0x670990; constexpr std::ptrdiff_t SteamClient016 = 0x693720;
constexpr std::ptrdiff_t SteamClient017 = 0x6709A0; constexpr std::ptrdiff_t SteamClient017 = 0x693730;
constexpr std::ptrdiff_t SteamClient018 = 0x6709B0; constexpr std::ptrdiff_t SteamClient018 = 0x693740;
constexpr std::ptrdiff_t SteamClient019 = 0x6709C0; constexpr std::ptrdiff_t SteamClient019 = 0x693750;
constexpr std::ptrdiff_t SteamClient020 = 0x6709D0; constexpr std::ptrdiff_t SteamClient020 = 0x693760;
constexpr std::ptrdiff_t SteamClient021 = 0x6709E0; constexpr std::ptrdiff_t SteamClient021 = 0x693770;
constexpr std::ptrdiff_t p2pvoice002 = 0xDA1A0; constexpr std::ptrdiff_t p2pvoice002 = 0xDA9A0;
constexpr std::ptrdiff_t p2pvoicesingleton002 = 0xD6C00; constexpr std::ptrdiff_t p2pvoicesingleton002 = 0xD72B0;
} }
// Module: tier0.dll // Module: tier0.dll
namespace tier0_dll { namespace tier0_dll {
@ -237,8 +237,8 @@ namespace cs2_dumper {
} }
// Module: vstdlib_s64.dll // Module: vstdlib_s64.dll
namespace vstdlib_s64_dll { namespace vstdlib_s64_dll {
constexpr std::ptrdiff_t IVALIDATE001 = 0x25140; constexpr std::ptrdiff_t IVALIDATE001 = 0x26B40;
constexpr std::ptrdiff_t VEngineCvar002 = 0x5760; constexpr std::ptrdiff_t VEngineCvar002 = 0x6060;
} }
// Module: worldrenderer.dll // Module: worldrenderer.dll
namespace worldrenderer_dll { namespace worldrenderer_dll {

View File

@ -4,14 +4,14 @@
"AnimationSystem_001": 477424 "AnimationSystem_001": 477424
}, },
"client.dll": { "client.dll": {
"ClientToolsInfo_001": 7628464, "ClientToolsInfo_001": 7628480,
"EmptyWorldService001_Client": 4726336, "EmptyWorldService001_Client": 4726336,
"GameClientExports001": 7628480, "GameClientExports001": 7628496,
"LegacyGameUI001": 9300720, "LegacyGameUI001": 9301728,
"Source2Client002": 7628496, "Source2Client002": 7628512,
"Source2ClientConfig001": 4608576, "Source2ClientConfig001": 4608576,
"Source2ClientPrediction001": 8165760, "Source2ClientPrediction001": 8165776,
"Source2ClientUI001": 9196480 "Source2ClientUI001": 9197488
}, },
"engine2.dll": { "engine2.dll": {
"BenchmarkService001": 1590736, "BenchmarkService001": 1590736,
@ -132,12 +132,12 @@
"server.dll": { "server.dll": {
"EmptyWorldService001_Server": 5655872, "EmptyWorldService001_Server": 5655872,
"EntitySubclassUtilsV001": 2872080, "EntitySubclassUtilsV001": 2872080,
"NavGameTest001": 10842176, "NavGameTest001": 10842192,
"ServerToolsInfo_001": 8687776, "ServerToolsInfo_001": 8687792,
"Source2GameClients001": 8687792, "Source2GameClients001": 8687808,
"Source2GameDirector001": 1196848, "Source2GameDirector001": 1196848,
"Source2GameEntities001": 8687808, "Source2GameEntities001": 8687824,
"Source2Server001": 8687824, "Source2Server001": 8687840,
"Source2ServerConfig001": 5569120, "Source2ServerConfig001": 5569120,
"customnavsystem001": 2276960 "customnavsystem001": 2276960
}, },
@ -151,26 +151,26 @@
"SteamAudio001": 412272 "SteamAudio001": 412272
}, },
"steamclient64.dll": { "steamclient64.dll": {
"CLIENTENGINE_INTERFACE_VERSION005": 8858576, "CLIENTENGINE_INTERFACE_VERSION005": 9079728,
"IVALIDATE001": 8875296, "IVALIDATE001": 9097264,
"SteamClient006": 6752496, "SteamClient006": 6895232,
"SteamClient007": 6752512, "SteamClient007": 6895248,
"SteamClient008": 6752528, "SteamClient008": 6895264,
"SteamClient009": 6752544, "SteamClient009": 6895280,
"SteamClient010": 6752560, "SteamClient010": 6895296,
"SteamClient011": 6752576, "SteamClient011": 6895312,
"SteamClient012": 6752592, "SteamClient012": 6895328,
"SteamClient013": 6752608, "SteamClient013": 6895344,
"SteamClient014": 6752624, "SteamClient014": 6895360,
"SteamClient015": 6752640, "SteamClient015": 6895376,
"SteamClient016": 6752656, "SteamClient016": 6895392,
"SteamClient017": 6752672, "SteamClient017": 6895408,
"SteamClient018": 6752688, "SteamClient018": 6895424,
"SteamClient019": 6752704, "SteamClient019": 6895440,
"SteamClient020": 6752720, "SteamClient020": 6895456,
"SteamClient021": 6752736, "SteamClient021": 6895472,
"p2pvoice002": 893344, "p2pvoice002": 895392,
"p2pvoicesingleton002": 879616 "p2pvoicesingleton002": 881328
}, },
"tier0.dll": { "tier0.dll": {
"TestScriptMgr001": 1350640, "TestScriptMgr001": 1350640,
@ -195,8 +195,8 @@
"VScriptManager010": 205328 "VScriptManager010": 205328
}, },
"vstdlib_s64.dll": { "vstdlib_s64.dll": {
"IVALIDATE001": 151872, "IVALIDATE001": 158528,
"VEngineCvar002": 22368 "VEngineCvar002": 24672
}, },
"worldrenderer.dll": { "worldrenderer.dll": {
"WorldRendererMgr001": 143312 "WorldRendererMgr001": 143312

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, unused)] #![allow(non_upper_case_globals, unused)]
@ -12,14 +12,14 @@ pub mod cs2_dumper {
} }
// Module: client.dll // Module: client.dll
pub mod client_dll { pub mod client_dll {
pub const ClientToolsInfo_001: usize = 0x7466B0; pub const ClientToolsInfo_001: usize = 0x7466C0;
pub const EmptyWorldService001_Client: usize = 0x481E40; pub const EmptyWorldService001_Client: usize = 0x481E40;
pub const GameClientExports001: usize = 0x7466C0; pub const GameClientExports001: usize = 0x7466D0;
pub const LegacyGameUI001: usize = 0x8DEAF0; pub const LegacyGameUI001: usize = 0x8DEEE0;
pub const Source2Client002: usize = 0x7466D0; pub const Source2Client002: usize = 0x7466E0;
pub const Source2ClientConfig001: usize = 0x465240; pub const Source2ClientConfig001: usize = 0x465240;
pub const Source2ClientPrediction001: usize = 0x7C9980; pub const Source2ClientPrediction001: usize = 0x7C9990;
pub const Source2ClientUI001: usize = 0x8C53C0; pub const Source2ClientUI001: usize = 0x8C57B0;
} }
// Module: engine2.dll // Module: engine2.dll
pub mod engine2_dll { pub mod engine2_dll {
@ -162,12 +162,12 @@ pub mod cs2_dumper {
pub mod server_dll { pub mod server_dll {
pub const EmptyWorldService001_Server: usize = 0x564D40; pub const EmptyWorldService001_Server: usize = 0x564D40;
pub const EntitySubclassUtilsV001: usize = 0x2BD310; pub const EntitySubclassUtilsV001: usize = 0x2BD310;
pub const NavGameTest001: usize = 0xA57040; pub const NavGameTest001: usize = 0xA57050;
pub const ServerToolsInfo_001: usize = 0x8490A0; pub const ServerToolsInfo_001: usize = 0x8490B0;
pub const Source2GameClients001: usize = 0x8490B0; pub const Source2GameClients001: usize = 0x8490C0;
pub const Source2GameDirector001: usize = 0x124330; pub const Source2GameDirector001: usize = 0x124330;
pub const Source2GameEntities001: usize = 0x8490C0; pub const Source2GameEntities001: usize = 0x8490D0;
pub const Source2Server001: usize = 0x8490D0; pub const Source2Server001: usize = 0x8490E0;
pub const Source2ServerConfig001: usize = 0x54FA60; pub const Source2ServerConfig001: usize = 0x54FA60;
pub const customnavsystem001: usize = 0x22BE60; pub const customnavsystem001: usize = 0x22BE60;
} }
@ -184,26 +184,26 @@ pub mod cs2_dumper {
} }
// Module: steamclient64.dll // Module: steamclient64.dll
pub mod steamclient64_dll { pub mod steamclient64_dll {
pub const CLIENTENGINE_INTERFACE_VERSION005: usize = 0x872BD0; pub const CLIENTENGINE_INTERFACE_VERSION005: usize = 0x8A8BB0;
pub const IVALIDATE001: usize = 0x876D20; pub const IVALIDATE001: usize = 0x8AD030;
pub const SteamClient006: usize = 0x6708F0; pub const SteamClient006: usize = 0x693680;
pub const SteamClient007: usize = 0x670900; pub const SteamClient007: usize = 0x693690;
pub const SteamClient008: usize = 0x670910; pub const SteamClient008: usize = 0x6936A0;
pub const SteamClient009: usize = 0x670920; pub const SteamClient009: usize = 0x6936B0;
pub const SteamClient010: usize = 0x670930; pub const SteamClient010: usize = 0x6936C0;
pub const SteamClient011: usize = 0x670940; pub const SteamClient011: usize = 0x6936D0;
pub const SteamClient012: usize = 0x670950; pub const SteamClient012: usize = 0x6936E0;
pub const SteamClient013: usize = 0x670960; pub const SteamClient013: usize = 0x6936F0;
pub const SteamClient014: usize = 0x670970; pub const SteamClient014: usize = 0x693700;
pub const SteamClient015: usize = 0x670980; pub const SteamClient015: usize = 0x693710;
pub const SteamClient016: usize = 0x670990; pub const SteamClient016: usize = 0x693720;
pub const SteamClient017: usize = 0x6709A0; pub const SteamClient017: usize = 0x693730;
pub const SteamClient018: usize = 0x6709B0; pub const SteamClient018: usize = 0x693740;
pub const SteamClient019: usize = 0x6709C0; pub const SteamClient019: usize = 0x693750;
pub const SteamClient020: usize = 0x6709D0; pub const SteamClient020: usize = 0x693760;
pub const SteamClient021: usize = 0x6709E0; pub const SteamClient021: usize = 0x693770;
pub const p2pvoice002: usize = 0xDA1A0; pub const p2pvoice002: usize = 0xDA9A0;
pub const p2pvoicesingleton002: usize = 0xD6C00; pub const p2pvoicesingleton002: usize = 0xD72B0;
} }
// Module: tier0.dll // Module: tier0.dll
pub mod tier0_dll { pub mod tier0_dll {
@ -235,8 +235,8 @@ pub mod cs2_dumper {
} }
// Module: vstdlib_s64.dll // Module: vstdlib_s64.dll
pub mod vstdlib_s64_dll { pub mod vstdlib_s64_dll {
pub const IVALIDATE001: usize = 0x25140; pub const IVALIDATE001: usize = 0x26B40;
pub const VEngineCvar002: usize = 0x5760; pub const VEngineCvar002: usize = 0x6060;
} }
// Module: worldrenderer.dll // Module: worldrenderer.dll
pub mod worldrenderer_dll { pub mod worldrenderer_dll {

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: materialsystem2.dll // Module: materialsystem2.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: networksystem.dll // Module: networksystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,25 +1,25 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Offsets { namespace CS2Dumper.Offsets {
// Module: client.dll // Module: client.dll
public static class ClientDll { public static class ClientDll {
public const nint dwCSGOInput = 0x1A1E1B0; public const nint dwCSGOInput = 0x1A1E430;
public const nint dwEntityList = 0x19B49B8; public const nint dwEntityList = 0x19B49B8;
public const nint dwGameEntitySystem = 0x1AD38C8; public const nint dwGameEntitySystem = 0x1AD3888;
public const nint dwGameEntitySystem_highestEntityIndex = 0x1510; public const nint dwGameEntitySystem_highestEntityIndex = 0x1510;
public const nint dwGameRules = 0x1A12418; public const nint dwGameRules = 0x1A12408;
public const nint dwGlobalVars = 0x180E4E0; public const nint dwGlobalVars = 0x180E510;
public const nint dwGlowManager = 0x1A11B30; public const nint dwGlowManager = 0x1A11B20;
public const nint dwLocalPlayerController = 0x1A04768; public const nint dwLocalPlayerController = 0x1A04768;
public const nint dwLocalPlayerPawn = 0x181A998; public const nint dwLocalPlayerPawn = 0x181A9C8;
public const nint dwPlantedC4 = 0x1A1B528; public const nint dwPlantedC4 = 0x1A1B7A8;
public const nint dwPrediction = 0x181A850; public const nint dwPrediction = 0x181A880;
public const nint dwSensitivity = 0x1A13258; public const nint dwSensitivity = 0x1A13248;
public const nint dwSensitivity_sensitivity = 0x40; public const nint dwSensitivity_sensitivity = 0x40;
public const nint dwViewAngles = 0x1A235C8; public const nint dwViewAngles = 0x1A23848;
public const nint dwViewMatrix = 0x1A16A70; public const nint dwViewMatrix = 0x1A16A60;
public const nint dwViewRender = 0x1A17388; public const nint dwViewRender = 0x1A17378;
public const nint dwWeaponC4 = 0x19B86F0; public const nint dwWeaponC4 = 0x19B86F0;
} }
// Module: engine2.dll // Module: engine2.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once
@ -9,22 +9,22 @@ namespace cs2_dumper {
namespace offsets { namespace offsets {
// Module: client.dll // Module: client.dll
namespace client_dll { namespace client_dll {
constexpr std::ptrdiff_t dwCSGOInput = 0x1A1E1B0; constexpr std::ptrdiff_t dwCSGOInput = 0x1A1E430;
constexpr std::ptrdiff_t dwEntityList = 0x19B49B8; constexpr std::ptrdiff_t dwEntityList = 0x19B49B8;
constexpr std::ptrdiff_t dwGameEntitySystem = 0x1AD38C8; constexpr std::ptrdiff_t dwGameEntitySystem = 0x1AD3888;
constexpr std::ptrdiff_t dwGameEntitySystem_highestEntityIndex = 0x1510; constexpr std::ptrdiff_t dwGameEntitySystem_highestEntityIndex = 0x1510;
constexpr std::ptrdiff_t dwGameRules = 0x1A12418; constexpr std::ptrdiff_t dwGameRules = 0x1A12408;
constexpr std::ptrdiff_t dwGlobalVars = 0x180E4E0; constexpr std::ptrdiff_t dwGlobalVars = 0x180E510;
constexpr std::ptrdiff_t dwGlowManager = 0x1A11B30; constexpr std::ptrdiff_t dwGlowManager = 0x1A11B20;
constexpr std::ptrdiff_t dwLocalPlayerController = 0x1A04768; constexpr std::ptrdiff_t dwLocalPlayerController = 0x1A04768;
constexpr std::ptrdiff_t dwLocalPlayerPawn = 0x181A998; constexpr std::ptrdiff_t dwLocalPlayerPawn = 0x181A9C8;
constexpr std::ptrdiff_t dwPlantedC4 = 0x1A1B528; constexpr std::ptrdiff_t dwPlantedC4 = 0x1A1B7A8;
constexpr std::ptrdiff_t dwPrediction = 0x181A850; constexpr std::ptrdiff_t dwPrediction = 0x181A880;
constexpr std::ptrdiff_t dwSensitivity = 0x1A13258; constexpr std::ptrdiff_t dwSensitivity = 0x1A13248;
constexpr std::ptrdiff_t dwSensitivity_sensitivity = 0x40; constexpr std::ptrdiff_t dwSensitivity_sensitivity = 0x40;
constexpr std::ptrdiff_t dwViewAngles = 0x1A235C8; constexpr std::ptrdiff_t dwViewAngles = 0x1A23848;
constexpr std::ptrdiff_t dwViewMatrix = 0x1A16A70; constexpr std::ptrdiff_t dwViewMatrix = 0x1A16A60;
constexpr std::ptrdiff_t dwViewRender = 0x1A17388; constexpr std::ptrdiff_t dwViewRender = 0x1A17378;
constexpr std::ptrdiff_t dwWeaponC4 = 0x19B86F0; constexpr std::ptrdiff_t dwWeaponC4 = 0x19B86F0;
} }
// Module: engine2.dll // Module: engine2.dll

View File

@ -1,21 +1,21 @@
{ {
"client.dll": { "client.dll": {
"dwCSGOInput": 27386288, "dwCSGOInput": 27386928,
"dwEntityList": 26954168, "dwEntityList": 26954168,
"dwGameEntitySystem": 28129480, "dwGameEntitySystem": 28129416,
"dwGameEntitySystem_highestEntityIndex": 5392, "dwGameEntitySystem_highestEntityIndex": 5392,
"dwGameRules": 27337752, "dwGameRules": 27337736,
"dwGlobalVars": 25224416, "dwGlobalVars": 25224464,
"dwGlowManager": 27335472, "dwGlowManager": 27335456,
"dwLocalPlayerController": 27281256, "dwLocalPlayerController": 27281256,
"dwLocalPlayerPawn": 25274776, "dwLocalPlayerPawn": 25274824,
"dwPlantedC4": 27374888, "dwPlantedC4": 27375528,
"dwPrediction": 25274448, "dwPrediction": 25274496,
"dwSensitivity": 27341400, "dwSensitivity": 27341384,
"dwSensitivity_sensitivity": 64, "dwSensitivity_sensitivity": 64,
"dwViewAngles": 27407816, "dwViewAngles": 27408456,
"dwViewMatrix": 27355760, "dwViewMatrix": 27355744,
"dwViewRender": 27358088, "dwViewRender": 27358072,
"dwWeaponC4": 26969840 "dwWeaponC4": 26969840
}, },
"engine2.dll": { "engine2.dll": {

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, unused)] #![allow(non_upper_case_globals, unused)]
@ -7,22 +7,22 @@ pub mod cs2_dumper {
pub mod offsets { pub mod offsets {
// Module: client.dll // Module: client.dll
pub mod client_dll { pub mod client_dll {
pub const dwCSGOInput: usize = 0x1A1E1B0; pub const dwCSGOInput: usize = 0x1A1E430;
pub const dwEntityList: usize = 0x19B49B8; pub const dwEntityList: usize = 0x19B49B8;
pub const dwGameEntitySystem: usize = 0x1AD38C8; pub const dwGameEntitySystem: usize = 0x1AD3888;
pub const dwGameEntitySystem_highestEntityIndex: usize = 0x1510; pub const dwGameEntitySystem_highestEntityIndex: usize = 0x1510;
pub const dwGameRules: usize = 0x1A12418; pub const dwGameRules: usize = 0x1A12408;
pub const dwGlobalVars: usize = 0x180E4E0; pub const dwGlobalVars: usize = 0x180E510;
pub const dwGlowManager: usize = 0x1A11B30; pub const dwGlowManager: usize = 0x1A11B20;
pub const dwLocalPlayerController: usize = 0x1A04768; pub const dwLocalPlayerController: usize = 0x1A04768;
pub const dwLocalPlayerPawn: usize = 0x181A998; pub const dwLocalPlayerPawn: usize = 0x181A9C8;
pub const dwPlantedC4: usize = 0x1A1B528; pub const dwPlantedC4: usize = 0x1A1B7A8;
pub const dwPrediction: usize = 0x181A850; pub const dwPrediction: usize = 0x181A880;
pub const dwSensitivity: usize = 0x1A13258; pub const dwSensitivity: usize = 0x1A13248;
pub const dwSensitivity_sensitivity: usize = 0x40; pub const dwSensitivity_sensitivity: usize = 0x40;
pub const dwViewAngles: usize = 0x1A235C8; pub const dwViewAngles: usize = 0x1A23848;
pub const dwViewMatrix: usize = 0x1A16A70; pub const dwViewMatrix: usize = 0x1A16A60;
pub const dwViewRender: usize = 0x1A17388; pub const dwViewRender: usize = 0x1A17378;
pub const dwWeaponC4: usize = 0x19B86F0; pub const dwWeaponC4: usize = 0x19B86F0;
} }
// Module: engine2.dll // Module: engine2.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: panorama.dll // Module: panorama.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: particles.dll // Module: particles.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: pulse_system.dll // Module: pulse_system.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: rendersystemdx11.dll // Module: rendersystemdx11.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: resourcesystem.dll // Module: resourcesystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: scenesystem.dll // Module: scenesystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: schemasystem.dll // Module: schemasystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: server.dll // Module: server.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: soundsystem.dll // Module: soundsystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: vphysics2.dll // Module: vphysics2.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: worldrenderer.dll // Module: worldrenderer.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC // 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)] #![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -148,3 +148,167 @@ pub fn offsets(process: &mut IntoProcessInstanceArcBox<'_>) -> Result<OffsetMap>
Ok(map) Ok(map)
} }
#[cfg(test)]
mod tests {
use std::fs;
use serde_json::Value;
use super::*;
fn setup() -> Result<IntoProcessInstanceArcBox<'static>> {
let os = memflow_native::create_os(&OsArgs::default(), LibArc::default())?;
let process = os.into_process_by_name("cs2.exe")?;
Ok(process)
}
fn get_class_field_value(module_name: &str, class_name: &str, field_name: &str) -> Option<u64> {
let content = fs::read_to_string(format!("output/{}.json", module_name)).ok()?;
let value: Value = serde_json::from_str(&content).ok()?;
value
.get(module_name)?
.get("classes")?
.get(class_name)?
.get("fields")?
.get(field_name)?
.as_u64()
}
fn get_offset_value(module_name: &str, offset_name: &str) -> Option<u64> {
let content = fs::read_to_string("output/offsets.json").ok()?;
let value: Value = serde_json::from_str(&content).ok()?;
let offset = value.get(module_name)?.get(offset_name)?;
offset.as_u64()
}
#[test]
fn build_number() -> Result<()> {
let mut process = setup()?;
let engine_base = process.module_by_name("engine2.dll")?.base;
let offset = get_offset_value("engine2.dll", "dwBuildNumber").unwrap();
let build_number: u32 = process.read(engine_base + offset).data_part()?;
println!("build number: {}", build_number);
Ok(())
}
#[test]
fn global_vars() -> Result<()> {
let mut process = setup()?;
let client_base = process.module_by_name("client.dll")?.base;
let offset = get_offset_value("client.dll", "dwGlobalVars").unwrap();
let global_vars: u64 = process.read(client_base + offset).data_part()?;
let cur_map_name = {
let addr = process
.read_addr64((global_vars + 0x1B8).into())
.data_part()?;
process.read_char_string(addr).data_part()?
};
println!("current map name: {}", cur_map_name);
Ok(())
}
#[test]
fn local_player_controller() -> Result<()> {
let mut process = setup()?;
let client_base = process.module_by_name("client.dll")?.base;
let local_player_controller_offset =
get_offset_value("client.dll", "dwLocalPlayerController").unwrap();
let player_name_offset =
get_class_field_value("client.dll", "CBasePlayerController", "m_iszPlayerName")
.unwrap();
let local_player_controller: u64 = process
.read(client_base + local_player_controller_offset)
.data_part()?;
let player_name = process
.read_char_string((local_player_controller + player_name_offset).into())
.data_part()?;
println!("local player name: {}", player_name);
Ok(())
}
#[test]
fn local_player_pawn() -> Result<()> {
#[derive(Debug, Pod)]
#[repr(C)]
struct Vector3D {
x: f32,
y: f32,
z: f32,
}
let mut process = setup()?;
let client_base = process.module_by_name("client.dll")?.base;
let local_player_pawn_offset = get_offset_value("client.dll", "dwLocalPlayerPawn").unwrap();
let game_scene_node_offset =
get_class_field_value("client.dll", "C_BaseEntity", "m_pGameSceneNode").unwrap();
let vec_abs_origin_offset =
get_class_field_value("client.dll", "CGameSceneNode", "m_vecAbsOrigin").unwrap();
let local_player_pawn: u64 = process
.read(client_base + local_player_pawn_offset)
.data_part()?;
let game_scene_node: u64 = process
.read((local_player_pawn + game_scene_node_offset).into())
.data_part()?;
let vec_abs_origin: Vector3D = process
.read((game_scene_node + vec_abs_origin_offset).into())
.data_part()?;
println!("local player origin: {:?}", vec_abs_origin);
Ok(())
}
#[test]
fn window_size() -> Result<()> {
let mut process = setup()?;
let engine_base = process.module_by_name("engine2.dll")?.base;
let window_width_offset = get_offset_value("engine2.dll", "dwWindowWidth").unwrap();
let window_height_offset = get_offset_value("engine2.dll", "dwWindowHeight").unwrap();
let window_width: u32 = process
.read(engine_base + window_width_offset)
.data_part()?;
let window_height: u32 = process
.read(engine_base + window_height_offset)
.data_part()?;
println!("window size: {}x{}", window_width, window_height);
Ok(())
}
}

View File

@ -144,7 +144,7 @@ fn read_class_binding_fields(
return Ok(Vec::new()); return Ok(Vec::new());
} }
(0..binding.field_count).try_fold(Vec::new(), |mut acc, i| { (0..binding.fields_count).try_fold(Vec::new(), |mut acc, i| {
let field = binding.fields.at(i as _).read(process)?; let field = binding.fields.at(i as _).read(process)?;
if field.schema_type.is_null() { if field.schema_type.is_null() {
@ -178,12 +178,12 @@ fn read_class_binding_metadata(
(0..binding.static_metadata_count).try_fold(Vec::new(), |mut acc, i| { (0..binding.static_metadata_count).try_fold(Vec::new(), |mut acc, i| {
let metadata = binding.static_metadata.at(i as _).read(process)?; let metadata = binding.static_metadata.at(i as _).read(process)?;
if metadata.data.is_null() { if metadata.network_value.is_null() {
return Ok(acc); return Ok(acc);
} }
let name = metadata.name.read_string(process)?.to_string(); let name = metadata.name.read_string(process)?.to_string();
let network_value = metadata.data.read(process)?; let network_value = metadata.network_value.read(process)?;
let metadata = match name.as_str() { let metadata = match name.as_str() {
"MNetworkChangeCallback" => unsafe { "MNetworkChangeCallback" => unsafe {
@ -229,14 +229,14 @@ fn read_enum_binding(
"found enum: {} @ {:#X} (alignment: {}) (members count: {})", "found enum: {} @ {:#X} (alignment: {}) (members count: {})",
name, name,
binding_ptr.to_umem(), binding_ptr.to_umem(),
binding.alignment, binding.align_of,
binding.size, binding.size,
); );
Ok(Enum { Ok(Enum {
name, name,
alignment: binding.alignment, alignment: binding.align_of,
size: binding.enumerator_count, size: binding.enumerators_count,
members, members,
}) })
} }
@ -249,7 +249,7 @@ fn read_enum_binding_members(
return Ok(Vec::new()); return Ok(Vec::new());
} }
(0..binding.enumerator_count).try_fold(Vec::new(), |mut acc, i| { (0..binding.enumerators_count).try_fold(Vec::new(), |mut acc, i| {
let enumerator = binding.enumerators.at(i as _).read(process)?; let enumerator = binding.enumerators.at(i as _).read(process)?;
let name = enumerator.name.read_string(process)?.to_string(); let name = enumerator.name.read_string(process)?.to_string();
@ -270,10 +270,10 @@ fn read_schema_system(process: &mut IntoProcessInstanceArcBox<'_>) -> Result<Sch
let mut save = [0; 2]; let mut save = [0; 2];
if !view.scanner().finds_code( if !view
pattern!("488905${'} 4c8d0d${} 0fb645? 4c8d45? 33f6"), .scanner()
&mut save, .finds_code(pattern!("4c8d35${'} 0f2845"), &mut save)
) { {
return Err(Error::Other("unable to find schema system pattern")); return Err(Error::Other("unable to find schema system pattern"));
} }

View File

@ -8,7 +8,7 @@ use log::{info, Level};
use memflow::prelude::v1::*; use memflow::prelude::v1::*;
use simplelog::{ColorChoice, TermLogger}; use simplelog::{ColorChoice, Config, TermLogger, TerminalMode};
use error::Result; use error::Result;
use output::Output; use output::Output;
@ -65,8 +65,8 @@ fn main() -> Result<()> {
TermLogger::init( TermLogger::init(
log_level.to_level_filter(), log_level.to_level_filter(),
Default::default(), Config::default(),
Default::default(), TerminalMode::Mixed,
ColorChoice::Auto, ColorChoice::Auto,
) )
.unwrap(); .unwrap();
@ -93,6 +93,7 @@ fn main() -> Result<()> {
let mut process = os.into_process_by_name(&args.process_name)?; let mut process = os.into_process_by_name(&args.process_name)?;
let result = analysis::analyze_all(&mut process)?; let result = analysis::analyze_all(&mut process)?;
let output = Output::new(&args.file_types, args.indent_size, &args.output, &result)?; let output = Output::new(&args.file_types, args.indent_size, &args.output, &result)?;
output.dump_all(&mut process)?; output.dump_all(&mut process)?;

View File

@ -5,9 +5,9 @@ use super::{SchemaMetadataEntryData, SchemaType};
#[derive(Pod)] #[derive(Pod)]
#[repr(C)] #[repr(C)]
pub struct SchemaClassFieldData { pub struct SchemaClassFieldData {
pub name: Pointer64<ReprCString>, // 0x0000 pub name: Pointer64<ReprCString>, // 0x0000
pub schema_type: Pointer64<SchemaType>, // 0x0008 pub schema_type: Pointer64<SchemaType>, // 0x0008
pub single_inheritance_offset: i32, // 0x0010 pub single_inheritance_offset: i32, // 0x0010
pub static_metadata_count: i32, // 0x0014 pub metadata_count: i32, // 0x0014
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018 pub metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018
} }

View File

@ -1,6 +1,9 @@
use memflow::prelude::v1::*; use memflow::prelude::v1::*;
use super::*; use super::{
SchemaBaseClassInfoData, SchemaClassFieldData, SchemaMetadataEntryData, SchemaStaticFieldData,
SchemaSystemTypeScope, SchemaType,
};
pub type SchemaClassBinding = SchemaClassInfoData; pub type SchemaClassBinding = SchemaClassInfoData;
@ -12,13 +15,13 @@ pub struct SchemaClassInfoData {
pub name: Pointer64<ReprCString>, // 0x0008 pub name: Pointer64<ReprCString>, // 0x0008
pub module_name: Pointer64<ReprCString>, // 0x0010 pub module_name: Pointer64<ReprCString>, // 0x0010
pub size: i32, // 0x0018 pub size: i32, // 0x0018
pub field_count: u16, // 0x001C pub fields_count: i16, // 0x001C
pub static_field_count: u16, // 0x001E pub static_fields_count: i16, // 0x001E
pub static_metadata_count: u16, // 0x0020 pub static_metadata_count: i16, // 0x0020
pub alignment: u8, // 0x0022 pub align_of: u8, // 0x0022
pub base_class_count: u8, // 0x0023 pub has_base_class: u8, // 0x0023
pub multiple_inheritance_depth: u16, // 0x0024 pub total_class_size: i16, // 0x0024
pub single_inheritance_depth: u16, // 0x0026 pub derived_class_size: i16, // 0x0026
pub fields: Pointer64<[SchemaClassFieldData]>, // 0x0028 pub fields: Pointer64<[SchemaClassFieldData]>, // 0x0028
pub static_fields: Pointer64<[SchemaStaticFieldData]>, // 0x0030 pub static_fields: Pointer64<[SchemaStaticFieldData]>, // 0x0030
pub base_classes: Pointer64<SchemaBaseClassInfoData>, // 0x0038 pub base_classes: Pointer64<SchemaBaseClassInfoData>, // 0x0038

View File

@ -12,9 +12,9 @@ pub struct SchemaEnumInfoData {
pub name: Pointer64<ReprCString>, // 0x0008 pub name: Pointer64<ReprCString>, // 0x0008
pub module_name: Pointer64<ReprCString>, // 0x0010 pub module_name: Pointer64<ReprCString>, // 0x0010
pub size: u8, // 0x0018 pub size: u8, // 0x0018
pub alignment: u8, // 0x0019 pub align_of: u8, // 0x0019
pub flags: u16, // 0x001A pad_001a: [u8; 0x2], // 0x001A
pub enumerator_count: u16, // 0x001C pub enumerators_count: u16, // 0x001C
pub static_metadata_count: u16, // 0x001E pub static_metadata_count: u16, // 0x001E
pub enumerators: Pointer64<[SchemaEnumeratorInfoData]>, // 0x0020 pub enumerators: Pointer64<[SchemaEnumeratorInfoData]>, // 0x0020
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0028 pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0028

View File

@ -5,11 +5,11 @@ use super::SchemaMetadataEntryData;
#[derive(Pod)] #[derive(Pod)]
#[repr(C)] #[repr(C)]
pub struct SchemaEnumeratorInfoData { pub struct SchemaEnumeratorInfoData {
pub name: Pointer64<ReprCString>, // 0x0000 pub name: Pointer64<ReprCString>, // 0x0000
pub value: SchemaEnumeratorInfoDataUnion, // 0x0008 pub value: SchemaEnumeratorInfoDataUnion, // 0x0008
pub static_metadata_count: i32, // 0x0010 pub metadata_count: i32, // 0x0010
pad_0014: [u8; 0x4], // 0x0014 pad_0014: [u8; 0x4], // 0x0014
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018 pub metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018
} }
#[repr(C)] #[repr(C)]

View File

@ -5,8 +5,8 @@ use memflow::prelude::v1::*;
#[derive(Pod)] #[derive(Pod)]
#[repr(C)] #[repr(C)]
pub struct SchemaMetadataEntryData { pub struct SchemaMetadataEntryData {
pub name: Pointer64<ReprCString>, // 0x0000 pub name: Pointer64<ReprCString>, // 0x0000
pub data: Pointer64<SchemaNetworkValue>, // 0x0008 pub network_value: Pointer64<SchemaNetworkValue>, // 0x0008
} }
#[derive(Pod)] #[derive(Pod)]

View File

@ -5,10 +5,10 @@ use super::{SchemaMetadataEntryData, SchemaType};
#[derive(Pod)] #[derive(Pod)]
#[repr(C)] #[repr(C)]
pub struct SchemaStaticFieldData { pub struct SchemaStaticFieldData {
pub name: Pointer64<ReprCString>, // 0x0000 pub name: Pointer64<ReprCString>, // 0x0000
pub type_: Pointer64<SchemaType>, // 0x0008 pub type_: Pointer64<SchemaType>, // 0x0008
pub instance: Pointer64<()>, // 0x0010 pub instance: Pointer64<()>, // 0x0010
pub static_metadata_count: i32, // 0x0018 pub metadata_count: i32, // 0x0018
pad_001c: [u8; 0x4], // 0x001C pad_001c: [u8; 0x4], // 0x001C
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0020 pub metadata: Pointer64<SchemaMetadataEntryData>, // 0x0020
} }

View File

@ -10,6 +10,6 @@ pub struct SchemaSystem {
pad_0000: [u8; 0x188], // 0x0000 pad_0000: [u8; 0x188], // 0x0000
pub type_scopes: UtlVector<Pointer64<SchemaSystemTypeScope>>, // 0x0188 pub type_scopes: UtlVector<Pointer64<SchemaSystemTypeScope>>, // 0x0188
pad_0198: [u8; 0x120], // 0x0198 pad_0198: [u8; 0x120], // 0x0198
pub num_registrations: u32, // 0x02B8 pub num_registrations: i32, // 0x02B8
pad_02bc: [u8; 0xAC], // 0x02BC pad_02bc: [u8; 0xAC], // 0x02BC
} }