This commit is contained in:
a2x 2023-10-15 22:17:02 +10:00
parent 33a08d218d
commit c55bdf15a2
59 changed files with 335 additions and 182 deletions

View File

@ -1,6 +1,6 @@
[package] [package]
name = "cs2-dumper" name = "cs2-dumper"
version = "1.1.0" version = "1.1.1"
authors = ["a2x"] authors = ["a2x"]
edition = "2021" edition = "2021"
readme = "README.md" readme = "README.md"

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.831799400 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.539445700 UTC
*/
public static class AimMatrixOpFixedSettings_t { public static class AimMatrixOpFixedSettings_t {
public const nint m_attachment = 0x0; // CAnimAttachment public const nint m_attachment = 0x0; // CAnimAttachment

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.808630100 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.515770200 UTC
*/
namespace AimMatrixOpFixedSettings_t { namespace AimMatrixOpFixedSettings_t {
constexpr std::ptrdiff_t m_attachment = 0x0; // CAnimAttachment constexpr std::ptrdiff_t m_attachment = 0x0; // CAnimAttachment

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.856065600 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.563817600 UTC
*/
pub mod AimMatrixOpFixedSettings_t { pub mod AimMatrixOpFixedSettings_t {
pub const m_attachment: usize = 0x0; // CAnimAttachment pub const m_attachment: usize = 0x0; // CAnimAttachment

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:09.188128400 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:32.884630900 UTC
*/
public static class ActiveModelConfig_t { public static class ActiveModelConfig_t {
public const nint m_Handle = 0x28; // ModelConfigHandle_t public const nint m_Handle = 0x28; // ModelConfigHandle_t

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:09.147412100 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:32.843400800 UTC
*/
namespace ActiveModelConfig_t { namespace ActiveModelConfig_t {
constexpr std::ptrdiff_t m_Handle = 0x28; // ModelConfigHandle_t constexpr std::ptrdiff_t m_Handle = 0x28; // ModelConfigHandle_t

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:09.229902300 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:32.927109500 UTC
*/
pub mod ActiveModelConfig_t { pub mod ActiveModelConfig_t {
pub const m_Handle: usize = 0x28; // ModelConfigHandle_t pub const m_Handle: usize = 0x28; // ModelConfigHandle_t

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.666106100 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.375847600 UTC
*/
public static class CEntityComponentHelper { public static class CEntityComponentHelper {
public const nint m_flags = 0x8; // uint32_t public const nint m_flags = 0x8; // uint32_t

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.664094400 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.373798700 UTC
*/
namespace CEntityComponentHelper { namespace CEntityComponentHelper {
constexpr std::ptrdiff_t m_flags = 0x8; // uint32_t constexpr std::ptrdiff_t m_flags = 0x8; // uint32_t

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.668437300 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.378512600 UTC
*/
pub mod CEntityComponentHelper { pub mod CEntityComponentHelper {
pub const m_flags: usize = 0x8; // uint32_t pub const m_flags: usize = 0x8; // uint32_t

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:09.272441400 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:32.969358100 UTC
*/
public static class CAnimScriptBase { public static class CAnimScriptBase {
public const nint m_bIsValid = 0x8; // bool public const nint m_bIsValid = 0x8; // bool

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:09.271971 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:32.968868800 UTC
*/
namespace CAnimScriptBase { namespace CAnimScriptBase {
constexpr std::ptrdiff_t m_bIsValid = 0x8; // bool constexpr std::ptrdiff_t m_bIsValid = 0x8; // bool

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:09.273270 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:32.970197200 UTC
*/
pub mod CAnimScriptBase { pub mod CAnimScriptBase {
pub const m_bIsValid: usize = 0x8; // bool pub const m_bIsValid: usize = 0x8; // bool

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:09.552341700 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:33.222923700 UTC
*/
public static class animationsystem_dll { public static class animationsystem_dll {
public const nint AnimationSystemUtils_001 = 0x64670; public const nint AnimationSystemUtils_001 = 0x64670;

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:09.549930800 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:33.220433600 UTC
*/
namespace animationsystem_dll { namespace animationsystem_dll {
constexpr std::ptrdiff_t AnimationSystemUtils_001 = 0x64670; constexpr std::ptrdiff_t AnimationSystemUtils_001 = 0x64670;

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:09.554948500 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:33.225495 UTC
*/
pub mod animationsystem_dll { pub mod animationsystem_dll {
pub const AnimationSystemUtils_001: usize = 0x64670; pub const AnimationSystemUtils_001: usize = 0x64670;

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.677717800 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.387776500 UTC
*/
public static class MaterialParamBuffer_t { public static class MaterialParamBuffer_t {
public const nint m_value = 0x8; // CUtlBinaryBlock public const nint m_value = 0x8; // CUtlBinaryBlock

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.675997500 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.386044300 UTC
*/
namespace MaterialParamBuffer_t { namespace MaterialParamBuffer_t {
constexpr std::ptrdiff_t m_value = 0x8; // CUtlBinaryBlock constexpr std::ptrdiff_t m_value = 0x8; // CUtlBinaryBlock

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.679671600 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.389748900 UTC
*/
pub mod MaterialParamBuffer_t { pub mod MaterialParamBuffer_t {
pub const m_value: usize = 0x8; // CUtlBinaryBlock pub const m_value: usize = 0x8; // CUtlBinaryBlock

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.681994300 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.392118600 UTC
*/
public static class ChangeAccessorFieldPathIndex_t { public static class ChangeAccessorFieldPathIndex_t {
public const nint m_Value = 0x0; // int16_t public const nint m_Value = 0x0; // int16_t

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.681603300 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.391722300 UTC
*/
namespace ChangeAccessorFieldPathIndex_t { namespace ChangeAccessorFieldPathIndex_t {
constexpr std::ptrdiff_t m_Value = 0x0; // int16_t constexpr std::ptrdiff_t m_Value = 0x0; // int16_t

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.682654600 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.392830500 UTC
*/
pub mod ChangeAccessorFieldPathIndex_t { pub mod ChangeAccessorFieldPathIndex_t {
pub const m_Value: usize = 0x0; // int16_t pub const m_Value: usize = 0x0; // int16_t

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:10.045575200 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:33.672128500 UTC
*/
public static class client_dll { public static class client_dll {
public const nint dwEntityList = 0x178FC88; public const nint dwEntityList = 0x178FC88;

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:10.044386600 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:33.670867800 UTC
*/
namespace client_dll { namespace client_dll {
constexpr std::ptrdiff_t dwEntityList = 0x178FC88; constexpr std::ptrdiff_t dwEntityList = 0x178FC88;

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:10.046951800 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:33.673543400 UTC
*/
pub mod client_dll { pub mod client_dll {
pub const dwEntityList: usize = 0x178FC88; pub const dwEntityList: usize = 0x178FC88;

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:08.263690400 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.967344 UTC
*/
public static class CBaseRendererSource2 { public static class CBaseRendererSource2 {
public const nint m_flRadiusScale = 0x200; // CParticleCollectionRendererFloatInput public const nint m_flRadiusScale = 0x200; // CParticleCollectionRendererFloatInput

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:08.224701300 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.927930 UTC
*/
namespace CBaseRendererSource2 { namespace CBaseRendererSource2 {
constexpr std::ptrdiff_t m_flRadiusScale = 0x200; // CParticleCollectionRendererFloatInput constexpr std::ptrdiff_t m_flRadiusScale = 0x200; // CParticleCollectionRendererFloatInput

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:08.305765 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:32.008264 UTC
*/
pub mod CBaseRendererSource2 { pub mod CBaseRendererSource2 {
pub const m_flRadiusScale: usize = 0x200; // CParticleCollectionRendererFloatInput pub const m_flRadiusScale: usize = 0x200; // CParticleCollectionRendererFloatInput

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:08.008265200 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.713845500 UTC
*/
public static class CPulseCell_Base { public static class CPulseCell_Base {
public const nint m_nEditorNodeID = 0x8; // PulseDocNodeID_t public const nint m_nEditorNodeID = 0x8; // PulseDocNodeID_t

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:08.005583400 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.711122600 UTC
*/
namespace CPulseCell_Base { namespace CPulseCell_Base {
constexpr std::ptrdiff_t m_nEditorNodeID = 0x8; // PulseDocNodeID_t constexpr std::ptrdiff_t m_nEditorNodeID = 0x8; // PulseDocNodeID_t

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:08.011364200 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.716897500 UTC
*/
pub mod CPulseCell_Base { pub mod CPulseCell_Base {
pub const m_nEditorNodeID: usize = 0x8; // PulseDocNodeID_t pub const m_nEditorNodeID: usize = 0x8; // PulseDocNodeID_t

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.652584400 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.362776200 UTC
*/
public static class RenderInputLayoutField_t { public static class RenderInputLayoutField_t {
public const nint m_pSemanticName = 0x0; // uint8_t[32] public const nint m_pSemanticName = 0x0; // uint8_t[32]

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.651789100 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.361960700 UTC
*/
namespace RenderInputLayoutField_t { namespace RenderInputLayoutField_t {
constexpr std::ptrdiff_t m_pSemanticName = 0x0; // uint8_t[32] constexpr std::ptrdiff_t m_pSemanticName = 0x0; // uint8_t[32]

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.653714500 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.363913900 UTC
*/
pub mod RenderInputLayoutField_t { pub mod RenderInputLayoutField_t {
pub const m_pSemanticName: usize = 0x0; // uint8_t[32] pub const m_pSemanticName: usize = 0x0; // uint8_t[32]

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.648012200 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.358179600 UTC
*/
public static class AABB_t { public static class AABB_t {
public const nint m_vMinBounds = 0x0; // Vector public const nint m_vMinBounds = 0x0; // Vector

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.646852600 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.356904800 UTC
*/
namespace AABB_t { namespace AABB_t {
constexpr std::ptrdiff_t m_vMinBounds = 0x0; // Vector constexpr std::ptrdiff_t m_vMinBounds = 0x0; // Vector

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.649503 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.359706 UTC
*/
pub mod AABB_t { pub mod AABB_t {
pub const m_vMinBounds: usize = 0x0; // Vector pub const m_vMinBounds: usize = 0x0; // Vector

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.969286700 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.675288600 UTC
*/
public static class CSSDSEndFrameViewInfo { public static class CSSDSEndFrameViewInfo {
public const nint m_nViewId = 0x0; // uint64_t public const nint m_nViewId = 0x0; // uint64_t

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.968148600 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.674184500 UTC
*/
namespace CSSDSEndFrameViewInfo { namespace CSSDSEndFrameViewInfo {
constexpr std::ptrdiff_t m_nViewId = 0x0; // uint64_t constexpr std::ptrdiff_t m_nViewId = 0x0; // uint64_t

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.970666700 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.676655900 UTC
*/
pub mod CSSDSEndFrameViewInfo { pub mod CSSDSEndFrameViewInfo {
pub const m_nViewId: usize = 0x0; // uint64_t pub const m_nViewId: usize = 0x0; // uint64_t

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.637873300 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.348418900 UTC
*/
public static class CExampleSchemaVData_Monomorphic { public static class CExampleSchemaVData_Monomorphic {
public const nint m_nExample1 = 0x0; // int32_t public const nint m_nExample1 = 0x0; // int32_t

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.636407800 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.347354400 UTC
*/
namespace CExampleSchemaVData_Monomorphic { namespace CExampleSchemaVData_Monomorphic {
constexpr std::ptrdiff_t m_nExample1 = 0x0; // int32_t constexpr std::ptrdiff_t m_nExample1 = 0x0; // int32_t

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.639317700 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.349825800 UTC
*/
pub mod CExampleSchemaVData_Monomorphic { pub mod CExampleSchemaVData_Monomorphic {
pub const m_nExample1: usize = 0x0; // int32_t pub const m_nExample1: usize = 0x0; // int32_t

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:08.785381800 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:32.484000900 UTC
*/
public static class ActiveModelConfig_t { public static class ActiveModelConfig_t {
public const nint m_Handle = 0x28; // ModelConfigHandle_t public const nint m_Handle = 0x28; // ModelConfigHandle_t

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:08.715646100 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:32.413845700 UTC
*/
namespace ActiveModelConfig_t { namespace ActiveModelConfig_t {
constexpr std::ptrdiff_t m_Handle = 0x28; // ModelConfigHandle_t constexpr std::ptrdiff_t m_Handle = 0x28; // ModelConfigHandle_t

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:08.856435 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:32.557311800 UTC
*/
pub mod ActiveModelConfig_t { pub mod ActiveModelConfig_t {
pub const m_Handle: usize = 0x28; // ModelConfigHandle_t pub const m_Handle: usize = 0x28; // ModelConfigHandle_t

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.958367400 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.664413500 UTC
*/
public static class CDSPMixgroupModifier { public static class CDSPMixgroupModifier {
public const nint m_mixgroup = 0x0; // CUtlString public const nint m_mixgroup = 0x0; // CUtlString

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.954931600 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.660932900 UTC
*/
namespace CDSPMixgroupModifier { namespace CDSPMixgroupModifier {
constexpr std::ptrdiff_t m_mixgroup = 0x0; // CUtlString constexpr std::ptrdiff_t m_mixgroup = 0x0; // CUtlString

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.962135 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.668319800 UTC
*/
pub mod CDSPMixgroupModifier { pub mod CDSPMixgroupModifier {
pub const m_mixgroup: usize = 0x0; // CUtlString pub const m_mixgroup: usize = 0x0; // CUtlString

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.923654100 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.630609100 UTC
*/
public static class CFeIndexedJiggleBone { public static class CFeIndexedJiggleBone {
public const nint m_nNode = 0x0; // uint32_t public const nint m_nNode = 0x0; // uint32_t

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.915889900 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.622787900 UTC
*/
namespace CFeIndexedJiggleBone { namespace CFeIndexedJiggleBone {
constexpr std::ptrdiff_t m_nNode = 0x0; // uint32_t constexpr std::ptrdiff_t m_nNode = 0x0; // uint32_t

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.931753800 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.638771500 UTC
*/
pub mod CFeIndexedJiggleBone { pub mod CFeIndexedJiggleBone {
pub const m_nNode: usize = 0x0; // uint32_t pub const m_nNode: usize = 0x0; // uint32_t

View File

@ -1,5 +1,7 @@
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.986008800 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.691751700 UTC
*/
public static class AggregateLODSetup_t { public static class AggregateLODSetup_t {
public const nint m_vLODOrigin = 0x0; // Vector public const nint m_vLODOrigin = 0x0; // Vector

View File

@ -2,8 +2,10 @@
#include <cstddef> #include <cstddef>
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.983315700 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.689004 UTC
*/
namespace AggregateLODSetup_t { namespace AggregateLODSetup_t {
constexpr std::ptrdiff_t m_vLODOrigin = 0x0; // Vector constexpr std::ptrdiff_t m_vLODOrigin = 0x0; // Vector

View File

@ -1,7 +1,9 @@
#![allow(non_snake_case, non_upper_case_globals)] #![allow(non_snake_case, non_upper_case_globals)]
// Created using https://github.com/a2x/cs2-dumper /*
// 2023-10-14 05:19:07.989091200 UTC * https://github.com/a2x/cs2-dumper
* 2023-10-15 12:13:31.694871800 UTC
*/
pub mod AggregateLODSetup_t { pub mod AggregateLODSetup_t {
pub const m_vLODOrigin: usize = 0x0; // Vector pub const m_vLODOrigin: usize = 0x0; // Vector

View File

@ -1,3 +1,6 @@
use std::ffi::c_char;
use std::mem::offset_of;
use crate::builder::FileBuilderEnum; use crate::builder::FileBuilderEnum;
use crate::dumpers::Entry; use crate::dumpers::Entry;
use crate::error::Result; use crate::error::Result;
@ -5,12 +8,44 @@ use crate::remote::Process;
use super::{generate_files, Entries}; use super::{generate_files, Entries};
#[derive(Debug)]
#[repr(C)]
struct InterfaceReg {
create_fn: *const (), // 0x0000
name: *const c_char, // 0x0008
next: *mut InterfaceReg, // 0x0010
}
impl InterfaceReg {
pub fn ptr(&self, process: &Process) -> Result<usize> {
process
.read_memory::<usize>(self as *const _ as usize + offset_of!(InterfaceReg, create_fn))
}
pub fn name(&self, process: &Process) -> Result<String> {
let name_ptr = process
.read_memory::<usize>(self as *const _ as usize + offset_of!(InterfaceReg, name))?;
process.read_string(name_ptr)
}
pub fn next(&self, process: &Process) -> Result<*mut InterfaceReg> {
process.read_memory::<*mut InterfaceReg>(
self as *const _ as usize + offset_of!(InterfaceReg, next),
)
}
}
pub fn dump_interfaces(builders: &mut Vec<FileBuilderEnum>, process: &Process) -> Result<()> { pub fn dump_interfaces(builders: &mut Vec<FileBuilderEnum>, process: &Process) -> Result<()> {
let module_names = process.get_loaded_modules()?; let module_names = process.get_loaded_modules()?;
let mut entries = Entries::new(); let mut entries = Entries::new();
for module_name in module_names { for module_name in module_names {
if module_name == "crashhandler64.dll" {
continue;
}
let module = process.get_module_by_name(&module_name)?; let module = process.get_module_by_name(&module_name)?;
if let Some(create_interface_export) = module.export("CreateInterface") { if let Some(create_interface_export) = module.export("CreateInterface") {
@ -19,37 +54,32 @@ pub fn dump_interfaces(builders: &mut Vec<FileBuilderEnum>, process: &Process) -
let create_interface_address = let create_interface_address =
process.resolve_rip(create_interface_export.va, None, None)?; process.resolve_rip(create_interface_export.va, None, None)?;
let mut interface_registry_ptr = process if let Ok(mut interface_reg) =
.read_memory::<usize>(create_interface_address) process.read_memory::<*mut InterfaceReg>(create_interface_address)
.unwrap_or(0); {
while !interface_reg.is_null() {
while interface_registry_ptr != 0 { let ptr = unsafe { (*interface_reg).ptr(process) }?;
let interface_ptr = process.read_memory::<usize>(interface_registry_ptr)?; let name = unsafe { (*interface_reg).name(process) }?;
let interface_version_ptr =
process.read_memory::<usize>(interface_registry_ptr + 0x8)?;
let interface_version = process.read_string(interface_version_ptr)?;
log::debug!( log::debug!(
" └─ {} @ {:#X} ({} + {:#X})", " └─ {} @ {:#X} ({} + {:#X})",
interface_version, name,
interface_ptr, ptr,
module_name, module_name,
interface_ptr - module.base() ptr - module.base()
); );
entries entries
.entry(module_name.replace(".", "_")) .entry(module_name.replace(".", "_"))
.or_default() .or_default()
.push(Entry { .push(Entry {
name: interface_version.clone(), name: name.clone(),
value: interface_ptr - module.base(), value: ptr - module.base(),
comment: None, comment: None,
}); });
interface_registry_ptr = interface_reg = unsafe { (*interface_reg).next(process) }?;
process.read_memory::<usize>(interface_registry_ptr + 0x10)?; }
} }
} }
} }

View File

@ -39,7 +39,7 @@ pub fn generate_file(
if builder.extension() != "json" { if builder.extension() != "json" {
write!( write!(
file, file,
"// Created using https://github.com/a2x/cs2-dumper\n// {}\n\n", "/*\n * https://github.com/a2x/cs2-dumper\n * {}\n */\n\n",
chrono::Utc::now() chrono::Utc::now()
)?; )?;
} }

View File

@ -1,4 +1,5 @@
#![allow(dead_code)] #![allow(dead_code)]
#![feature(offset_of)]
use std::fs; use std::fs;
use std::time::Instant; use std::time::Instant;

View File

@ -1,86 +1,102 @@
use std::mem::offset_of;
use crate::error::Result; use crate::error::Result;
use crate::remote::Process; use crate::remote::Process;
#[derive(Debug)] #[derive(Debug)]
#[repr(C)] #[repr(C)]
pub struct HashBucketDataInternal<T, K> { pub struct HashFixedDataInternal<T, K> {
data: T, ui_key: K, // 0x0010
pad_0: [u8; 8], next: *mut HashFixedDataInternal<T, K>, // 0x0010
ui_key: K, data: T, // 0x0010
} }
impl<T, K> HashBucketDataInternal<T, K> { impl<T, K> HashFixedDataInternal<T, K> {
pub fn next(&self, process: &Process) -> Result<*const HashBucketDataInternal<T, K>> { pub fn next(&self, process: &Process) -> Result<*mut HashFixedDataInternal<T, K>> {
process process.read_memory::<*mut HashFixedDataInternal<T, K>>(
.read_memory::<*const HashBucketDataInternal<T, K>>((self as *const _ as usize) + 0x8) (self as *const _ as usize) + offset_of!(HashFixedDataInternal<T, K>, next),
)
} }
} }
#[derive(Debug)] #[derive(Debug)]
#[repr(C)] #[repr(C)]
pub struct HashFixedDataInternal<T, K> { pub struct HashBucketDataInternal<T, K> {
ui_key: K, data: T, // 0x0000
pad_0: [u8; 8], next: *mut HashFixedDataInternal<T, K>, // 0x0008
data: T, ui_key: K, // 0x0010
} }
impl<T, K> HashFixedDataInternal<T, K> { impl<T, K> HashBucketDataInternal<T, K> {
pub fn next(&self, process: &Process) -> Result<*const HashFixedDataInternal<T, K>> { pub fn next(&self, process: &Process) -> Result<*mut HashFixedDataInternal<T, K>> {
process.read_memory::<*const HashFixedDataInternal<T, K>>((self as *const _ as usize) + 0x8) process.read_memory::<*mut HashFixedDataInternal<T, K>>(
(self as *const _ as usize) + offset_of!(HashBucketDataInternal<T, K>, next),
)
} }
} }
#[derive(Debug)] #[derive(Debug)]
#[repr(C)] #[repr(C)]
pub struct HashAllocatedData<T, K> { pub struct HashAllocatedData<T, K> {
list: [HashFixedDataInternal<T, K>; 128], pad_0: [u8; 0x18], // 0x0000
list: [HashFixedDataInternal<T, K>; 128], // 0x0018
} }
impl<T, K> HashAllocatedData<T, K> { impl<T, K> HashAllocatedData<T, K> {
pub fn list(&self, process: &Process) -> Result<[HashFixedDataInternal<T, K>; 128]> { pub fn list(&self, process: &Process) -> Result<[HashFixedDataInternal<T, K>; 128]> {
process process.read_memory::<[HashFixedDataInternal<T, K>; 128]>(
.read_memory::<[HashFixedDataInternal<T, K>; 128]>((self as *const _ as usize) + 0x18) (self as *const _ as usize) + offset_of!(HashAllocatedData<T, K>, list),
)
} }
} }
#[derive(Debug)] #[derive(Debug)]
#[repr(C)] #[repr(C)]
pub struct HashUnallocatedData<T, K> { pub struct HashUnallocatedData<T, K> {
block_list: [HashBucketDataInternal<T, K>; 256], next: *mut HashUnallocatedData<T, K>, // 0x0000
unknown_1: K, // 0x0008
ui_key: K, // 0x0010
unknown_2: K, // 0x0018
block_list: [HashBucketDataInternal<T, K>; 256], // 0x0020
} }
impl<T, K> HashUnallocatedData<T, K> { impl<T, K> HashUnallocatedData<T, K> {
pub fn next(&self, process: &Process) -> Result<*const HashUnallocatedData<T, K>> { pub fn next(&self, process: &Process) -> Result<*mut HashUnallocatedData<T, K>> {
process.read_memory::<*const HashUnallocatedData<T, K>>(self as *const _ as usize) process.read_memory::<*mut HashUnallocatedData<T, K>>(
self as *const _ as usize + offset_of!(HashUnallocatedData<T, K>, next),
)
} }
pub fn ui_key(&self, process: &Process) -> Result<K> { pub fn ui_key(&self, process: &Process) -> Result<K> {
process.read_memory::<K>((self as *const _ as usize) + 0x10) process.read_memory::<K>(
(self as *const _ as usize) + offset_of!(HashUnallocatedData<T, K>, ui_key),
)
} }
pub fn block_list(&self, process: &Process) -> Result<[HashBucketDataInternal<T, K>; 256]> { pub fn block_list(&self, process: &Process) -> Result<[HashBucketDataInternal<T, K>; 256]> {
process process.read_memory::<[HashBucketDataInternal<T, K>; 256]>(
.read_memory::<[HashBucketDataInternal<T, K>; 256]>((self as *const _ as usize) + 0x20) (self as *const _ as usize) + offset_of!(HashUnallocatedData<T, K>, block_list),
)
} }
} }
#[derive(Debug)] #[derive(Debug)]
#[repr(C)] #[repr(C)]
pub struct HashBucket<T, K> { pub struct HashBucket<T, K> {
pad_0: [u8; 16], pad_0: [u8; 0x10], // 0x0000
allocated_data: *const HashAllocatedData<T, K>, allocated_data: *const HashAllocatedData<T, K>, // 0x0010
unallocated_data: *const HashUnallocatedData<T, K>, unallocated_data: *const HashUnallocatedData<T, K>, // 0x0018
} }
#[derive(Debug)] #[derive(Debug)]
#[repr(C)] #[repr(C)]
pub struct UtlMemoryPool { pub struct UtlMemoryPool {
block_size: i32, block_size: i32, // 0x0000
blocks_per_blob: i32, blocks_per_blob: i32, // 0x0004
grow_mode: i32, grow_mode: i32, // 0x0008
blocks_allocated: i32, blocks_allocated: i32, // 0x000C
block_allocated_size: i32, block_allocated_size: i32, // 0x0010
peak_alloc: i32, peak_alloc: i32, // 0x0014
} }
impl UtlMemoryPool { impl UtlMemoryPool {
@ -98,8 +114,8 @@ impl UtlMemoryPool {
#[derive(Debug)] #[derive(Debug)]
#[repr(C)] #[repr(C)]
pub struct UtlTsHash<T, K = u64> { pub struct UtlTsHash<T, K = u64> {
entry_memory: UtlMemoryPool, entry_memory: UtlMemoryPool, // 0x0000
buckets: HashBucket<T, K>, buckets: HashBucket<T, K>, // 0x0018
} }
impl<T, K> UtlTsHash<T, K> impl<T, K> UtlTsHash<T, K>
@ -124,8 +140,7 @@ where
let mut address = self.buckets.unallocated_data; let mut address = self.buckets.unallocated_data;
while !address.is_null() { while !address.is_null() {
unsafe { let block_list = unsafe { (*address).block_list(process) }?;
let block_list = (*address).block_list(process)?;
for i in 0..min_size { for i in 0..min_size {
list.push(block_list[i].data); list.push(block_list[i].data);
@ -135,8 +150,7 @@ where
} }
} }
address = (*address).next(process)?; address = unsafe { (*address).next(process) }?;
}
} }
Ok(list) Ok(list)