Handle empty names and duplicate values in Rust generator

This commit is contained in:
a2x 2024-05-24 21:03:42 +10:00
parent 3f6c894097
commit 09413db57a
68 changed files with 101 additions and 190 deletions

View File

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

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 UTC
namespace CS2Dumper { namespace CS2Dumper {
// 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 UTC
#![allow(non_upper_case_globals, unused)] #![allow(non_upper_case_globals, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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,9 +1,9 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 UTC
namespace CS2Dumper.Schemas { namespace CS2Dumper.Schemas {
// Module: engine2.dll // Module: engine2.dll
// Classes count: 48 // Classes count: 44
// Enums count: 4 // Enums count: 4
public static class Engine2Dll { public static class Engine2Dll {
// Alignment: 4 // Alignment: 4
@ -288,21 +288,5 @@ namespace CS2Dumper.Schemas {
// Fields count: 0 // Fields count: 0
public static class EventServerPollNetworking_t { public static class EventServerPollNetworking_t {
} }
// Parent: None
// Fields count: 0
public static class {
}
// Parent: None
// Fields count: 0
public static class {
}
// Parent: None
// Fields count: 0
public static class {
}
// Parent: None
// Fields count: 0
public static class {
}
} }
} }

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 UTC
#pragma once #pragma once
@ -8,7 +8,7 @@
namespace cs2_dumper { namespace cs2_dumper {
namespace schemas { namespace schemas {
// Module: engine2.dll // Module: engine2.dll
// Classes count: 48 // Classes count: 44
// Enums count: 4 // Enums count: 4
namespace engine2_dll { namespace engine2_dll {
// Alignment: 4 // Alignment: 4
@ -293,22 +293,6 @@ namespace cs2_dumper {
// Fields count: 0 // Fields count: 0
namespace EventServerPollNetworking_t { namespace EventServerPollNetworking_t {
} }
// Parent: None
// Fields count: 0
namespace {
}
// Parent: None
// Fields count: 0
namespace {
}
// Parent: None
// Fields count: 0
namespace {
}
// Parent: None
// Fields count: 0
namespace {
}
} }
} }
} }

View File

@ -1,11 +1,6 @@
{ {
"engine2.dll": { "engine2.dll": {
"classes": { "classes": {
"": {
"fields": {},
"metadata": [],
"parent": null
},
"CEmptyEntityInstance": { "CEmptyEntityInstance": {
"fields": {}, "fields": {},
"metadata": [], "metadata": [],

View File

@ -1,12 +1,12 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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)]
pub mod cs2_dumper { pub mod cs2_dumper {
pub mod schemas { pub mod schemas {
// Module: engine2.dll // Module: engine2.dll
// Classes count: 48 // Classes count: 44
// Enums count: 4 // Enums count: 4
pub mod engine2_dll { pub mod engine2_dll {
// Alignment: 4 // Alignment: 4
@ -295,22 +295,6 @@ pub mod cs2_dumper {
// Fields count: 0 // Fields count: 0
pub mod EventServerPollNetworking_t { pub mod EventServerPollNetworking_t {
} }
// Parent: None
// Fields count: 0
pub mod {
}
// Parent: None
// Fields count: 0
pub mod {
}
// Parent: None
// Fields count: 0
pub mod {
}
// Parent: None
// Fields count: 0
pub mod {
}
} }
} }
} }

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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": 14009, "build_number": 14009,
"timestamp": "2024-05-24T01:30:25.777667800+00:00" "timestamp": "2024-05-24T10:58:30.509826500+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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 UTC
namespace CS2Dumper.Interfaces { namespace CS2Dumper.Interfaces {
// 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 UTC
#![allow(non_upper_case_globals, unused)] #![allow(non_upper_case_globals, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 UTC
namespace CS2Dumper.Offsets { namespace CS2Dumper.Offsets {
// 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 UTC
#![allow(non_upper_case_globals, unused)] #![allow(non_upper_case_globals, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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)]
@ -243,8 +243,7 @@ pub mod cs2_dumper {
#[repr(u32)] #[repr(u32)]
pub enum ParticleParentSetMode_t { pub enum ParticleParentSetMode_t {
PARTICLE_SET_PARENT_NO = 0x0, PARTICLE_SET_PARENT_NO = 0x0,
PARTICLE_SET_PARENT_IMMEDIATE = 0x1, PARTICLE_SET_PARENT_IMMEDIATE = 0x1
PARTICLE_SET_PARENT_ROOT = 0x1
} }
// Alignment: 4 // Alignment: 4
// Members count: 5 // Members count: 5

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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)]
@ -238,8 +238,7 @@ pub mod cs2_dumper {
USE_ROTATION_EXPANDED_BOUNDS = 0x5, USE_ROTATION_EXPANDED_BOUNDS = 0x5,
USE_ROTATION_EXPANDED_ORIENTED_BOUNDS = 0x6, USE_ROTATION_EXPANDED_ORIENTED_BOUNDS = 0x6,
USE_COLLISION_BOUNDS_NEVER_VPHYSICS = 0x7, USE_COLLISION_BOUNDS_NEVER_VPHYSICS = 0x7,
USE_ROTATION_EXPANDED_SEQUENCE_BOUNDS = 0x8, USE_ROTATION_EXPANDED_SEQUENCE_BOUNDS = 0x8
SURROUNDING_TYPE_BIT_COUNT = 0x3
} }
// Alignment: 4 // Alignment: 4
// Members count: 5 // Members count: 5
@ -594,11 +593,7 @@ pub mod cs2_dumper {
TS_AT_TOP = 0x0, TS_AT_TOP = 0x0,
TS_AT_BOTTOM = 0x1, TS_AT_BOTTOM = 0x1,
TS_GOING_UP = 0x2, TS_GOING_UP = 0x2,
TS_GOING_DOWN = 0x3, TS_GOING_DOWN = 0x3
DOOR_OPEN = 0x0,
DOOR_CLOSED = 0x1,
DOOR_OPENING = 0x2,
DOOR_CLOSING = 0x3
} }
// Alignment: 4 // Alignment: 4
// Members count: 74 // Members count: 74
@ -608,8 +603,6 @@ pub mod cs2_dumper {
LOADOUT_SLOT_INVALID = u32::MAX, LOADOUT_SLOT_INVALID = u32::MAX,
LOADOUT_SLOT_MELEE = 0x0, LOADOUT_SLOT_MELEE = 0x0,
LOADOUT_SLOT_C4 = 0x1, LOADOUT_SLOT_C4 = 0x1,
LOADOUT_SLOT_FIRST_AUTO_BUY_WEAPON = 0x0,
LOADOUT_SLOT_LAST_AUTO_BUY_WEAPON = 0x1,
LOADOUT_SLOT_SECONDARY0 = 0x2, LOADOUT_SLOT_SECONDARY0 = 0x2,
LOADOUT_SLOT_SECONDARY1 = 0x3, LOADOUT_SLOT_SECONDARY1 = 0x3,
LOADOUT_SLOT_SECONDARY2 = 0x4, LOADOUT_SLOT_SECONDARY2 = 0x4,
@ -634,32 +627,22 @@ pub mod cs2_dumper {
LOADOUT_SLOT_HEAVY3 = 0x17, LOADOUT_SLOT_HEAVY3 = 0x17,
LOADOUT_SLOT_HEAVY4 = 0x18, LOADOUT_SLOT_HEAVY4 = 0x18,
LOADOUT_SLOT_HEAVY5 = 0x19, LOADOUT_SLOT_HEAVY5 = 0x19,
LOADOUT_SLOT_FIRST_WHEEL_WEAPON = 0x2,
LOADOUT_SLOT_LAST_WHEEL_WEAPON = 0x19,
LOADOUT_SLOT_FIRST_PRIMARY_WEAPON = 0x8,
LOADOUT_SLOT_LAST_PRIMARY_WEAPON = 0x19,
LOADOUT_SLOT_FIRST_WHEEL_GRENADE = 0x1A, LOADOUT_SLOT_FIRST_WHEEL_GRENADE = 0x1A,
LOADOUT_SLOT_GRENADE0 = 0x1A,
LOADOUT_SLOT_GRENADE1 = 0x1B, LOADOUT_SLOT_GRENADE1 = 0x1B,
LOADOUT_SLOT_GRENADE2 = 0x1C, LOADOUT_SLOT_GRENADE2 = 0x1C,
LOADOUT_SLOT_GRENADE3 = 0x1D, LOADOUT_SLOT_GRENADE3 = 0x1D,
LOADOUT_SLOT_GRENADE4 = 0x1E, LOADOUT_SLOT_GRENADE4 = 0x1E,
LOADOUT_SLOT_GRENADE5 = 0x1F, LOADOUT_SLOT_GRENADE5 = 0x1F,
LOADOUT_SLOT_LAST_WHEEL_GRENADE = 0x1F,
LOADOUT_SLOT_EQUIPMENT0 = 0x20, LOADOUT_SLOT_EQUIPMENT0 = 0x20,
LOADOUT_SLOT_EQUIPMENT1 = 0x21, LOADOUT_SLOT_EQUIPMENT1 = 0x21,
LOADOUT_SLOT_EQUIPMENT2 = 0x22, LOADOUT_SLOT_EQUIPMENT2 = 0x22,
LOADOUT_SLOT_EQUIPMENT3 = 0x23, LOADOUT_SLOT_EQUIPMENT3 = 0x23,
LOADOUT_SLOT_EQUIPMENT4 = 0x24, LOADOUT_SLOT_EQUIPMENT4 = 0x24,
LOADOUT_SLOT_EQUIPMENT5 = 0x25, LOADOUT_SLOT_EQUIPMENT5 = 0x25,
LOADOUT_SLOT_FIRST_WHEEL_EQUIPMENT = 0x20,
LOADOUT_SLOT_LAST_WHEEL_EQUIPMENT = 0x25,
LOADOUT_SLOT_CLOTHING_CUSTOMPLAYER = 0x26, LOADOUT_SLOT_CLOTHING_CUSTOMPLAYER = 0x26,
LOADOUT_SLOT_CLOTHING_CUSTOMHEAD = 0x27, LOADOUT_SLOT_CLOTHING_CUSTOMHEAD = 0x27,
LOADOUT_SLOT_CLOTHING_FACEMASK = 0x28, LOADOUT_SLOT_CLOTHING_FACEMASK = 0x28,
LOADOUT_SLOT_CLOTHING_HANDS = 0x29, LOADOUT_SLOT_CLOTHING_HANDS = 0x29,
LOADOUT_SLOT_FIRST_COSMETIC = 0x29,
LOADOUT_SLOT_LAST_COSMETIC = 0x29,
LOADOUT_SLOT_CLOTHING_EYEWEAR = 0x2A, LOADOUT_SLOT_CLOTHING_EYEWEAR = 0x2A,
LOADOUT_SLOT_CLOTHING_HAT = 0x2B, LOADOUT_SLOT_CLOTHING_HAT = 0x2B,
LOADOUT_SLOT_CLOTHING_LOWERBODY = 0x2C, LOADOUT_SLOT_CLOTHING_LOWERBODY = 0x2C,
@ -675,8 +658,6 @@ pub mod cs2_dumper {
LOADOUT_SLOT_MUSICKIT = 0x36, LOADOUT_SLOT_MUSICKIT = 0x36,
LOADOUT_SLOT_FLAIR0 = 0x37, LOADOUT_SLOT_FLAIR0 = 0x37,
LOADOUT_SLOT_SPRAY0 = 0x38, LOADOUT_SLOT_SPRAY0 = 0x38,
LOADOUT_SLOT_FIRST_ALL_CHARACTER = 0x36,
LOADOUT_SLOT_LAST_ALL_CHARACTER = 0x38,
LOADOUT_SLOT_COUNT = 0x39 LOADOUT_SLOT_COUNT = 0x39
} }
// Alignment: 4 // Alignment: 4
@ -688,7 +669,6 @@ pub mod cs2_dumper {
NAV_MESH_NON_ZUP = 0x8000, NAV_MESH_NON_ZUP = 0x8000,
NAV_MESH_SHORT_HEIGHT = 0x10000, NAV_MESH_SHORT_HEIGHT = 0x10000,
NAV_MESH_NON_ZUP_TRANSITION = 0x20000, NAV_MESH_NON_ZUP_TRANSITION = 0x20000,
NAV_MESH_CROUCH = 0x10000,
NAV_MESH_JUMP = 0x2, NAV_MESH_JUMP = 0x2,
NAV_MESH_PRECISE = 0x4, NAV_MESH_PRECISE = 0x4,
NAV_MESH_NO_JUMP = 0x8, NAV_MESH_NO_JUMP = 0x8,
@ -769,8 +749,7 @@ pub mod cs2_dumper {
pub enum BeamClipStyle_t { pub enum BeamClipStyle_t {
kNOCLIP = 0x0, kNOCLIP = 0x0,
kGEOCLIP = 0x1, kGEOCLIP = 0x1,
kMODELCLIP = 0x2, kMODELCLIP = 0x2
kBEAMCLIPSTYLE_NUMBITS = 0x2
} }
// Alignment: 4 // Alignment: 4
// Members count: 4 // Members count: 4
@ -876,9 +855,7 @@ pub mod cs2_dumper {
GEAR_SLOT_RESERVED_SLOT11 = 0xA, GEAR_SLOT_RESERVED_SLOT11 = 0xA,
GEAR_SLOT_BOOSTS = 0xB, GEAR_SLOT_BOOSTS = 0xB,
GEAR_SLOT_UTILITY = 0xC, GEAR_SLOT_UTILITY = 0xC,
GEAR_SLOT_COUNT = 0xD, GEAR_SLOT_COUNT = 0xD
GEAR_SLOT_FIRST = 0x0,
GEAR_SLOT_LAST = 0xC
} }
// Alignment: 4 // Alignment: 4
// Members count: 10 // Members count: 10
@ -990,7 +967,6 @@ pub mod cs2_dumper {
IN_SPEED = 0x10000, IN_SPEED = 0x10000,
IN_JOYAUTOSPRINT = 0x20000, IN_JOYAUTOSPRINT = 0x20000,
IN_FIRST_MOD_SPECIFIC_BIT = 0x100000000, IN_FIRST_MOD_SPECIFIC_BIT = 0x100000000,
IN_USEORRELOAD = 0x100000000,
IN_SCORE = 0x200000000, IN_SCORE = 0x200000000,
IN_ZOOM = 0x400000000, IN_ZOOM = 0x400000000,
IN_LOOK_AT_WEAPON = 0x800000000 IN_LOOK_AT_WEAPON = 0x800000000
@ -1083,8 +1059,7 @@ pub mod cs2_dumper {
#[repr(u32)] #[repr(u32)]
pub enum AmmoFlags_t { pub enum AmmoFlags_t {
AMMO_FORCE_DROP_IF_CARRIED = 0x1, AMMO_FORCE_DROP_IF_CARRIED = 0x1,
AMMO_RESERVE_STAYS_WITH_WEAPON = 0x2, AMMO_RESERVE_STAYS_WITH_WEAPON = 0x2
AMMO_FLAG_MAX = 0x2
} }
// Alignment: 4 // Alignment: 4
// Members count: 6 // Members count: 6
@ -1393,7 +1368,6 @@ pub mod cs2_dumper {
DMG_DISSOLVE = 0x200000, DMG_DISSOLVE = 0x200000,
DMG_BLAST_SURFACE = 0x400000, DMG_BLAST_SURFACE = 0x400000,
DMG_BUCKSHOT = 0x1000000, DMG_BUCKSHOT = 0x1000000,
DMG_LASTGENERICFLAG = 0x1000000,
DMG_HEADSHOT = 0x2000000, DMG_HEADSHOT = 0x2000000,
DMG_DANGERZONE = 0x4000000 DMG_DANGERZONE = 0x4000000
} }
@ -1420,8 +1394,7 @@ pub mod cs2_dumper {
MOVECOLLIDE_FLY_BOUNCE = 0x1, MOVECOLLIDE_FLY_BOUNCE = 0x1,
MOVECOLLIDE_FLY_CUSTOM = 0x2, MOVECOLLIDE_FLY_CUSTOM = 0x2,
MOVECOLLIDE_FLY_SLIDE = 0x3, MOVECOLLIDE_FLY_SLIDE = 0x3,
MOVECOLLIDE_COUNT = 0x4, MOVECOLLIDE_COUNT = 0x4
MOVECOLLIDE_MAX_BITS = 0x3
} }
// Alignment: 4 // Alignment: 4
// Members count: 7 // Members count: 7
@ -1607,7 +1580,6 @@ pub mod cs2_dumper {
DFLAG_ALWAYS_FIRE_DAMAGE_EVENTS = 0x200, DFLAG_ALWAYS_FIRE_DAMAGE_EVENTS = 0x200,
DFLAG_RADIUS_DMG = 0x400, DFLAG_RADIUS_DMG = 0x400,
DFLAG_FORCEREDUCEARMOR_DMG = 0x800, DFLAG_FORCEREDUCEARMOR_DMG = 0x800,
DMG_LASTDFLAG = 0x800,
DFLAG_IGNORE_ARMOR = 0x1000, DFLAG_IGNORE_ARMOR = 0x1000,
DFLAG_SUPPRESS_UTILREMOVE = 0x2000 DFLAG_SUPPRESS_UTILREMOVE = 0x2000
} }
@ -1626,12 +1598,7 @@ pub mod cs2_dumper {
D_HT = 0x1, D_HT = 0x1,
D_FR = 0x2, D_FR = 0x2,
D_LI = 0x3, D_LI = 0x3,
D_NU = 0x4, D_NU = 0x4
D_ERROR = 0x0,
D_HATE = 0x1,
D_FEAR = 0x2,
D_LIKE = 0x3,
D_NEUTRAL = 0x4
} }
// Alignment: 4 // Alignment: 4
// Members count: 3 // Members count: 3
@ -1693,9 +1660,7 @@ pub mod cs2_dumper {
MOVETYPE_OBSERVER = 0x8, MOVETYPE_OBSERVER = 0x8,
MOVETYPE_LADDER = 0x9, MOVETYPE_LADDER = 0x9,
MOVETYPE_CUSTOM = 0xA, MOVETYPE_CUSTOM = 0xA,
MOVETYPE_LAST = 0xB, MOVETYPE_LAST = 0xB
MOVETYPE_INVALID = 0xB,
MOVETYPE_MAX_BITS = 0x5
} }
// Parent: CBaseCombatCharacter // Parent: CBaseCombatCharacter
// Fields count: 1 // Fields count: 1

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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)]
@ -135,14 +135,11 @@ pub mod cs2_dumper {
SNDLVL_50dB = 0x32, SNDLVL_50dB = 0x32,
SNDLVL_55dB = 0x37, SNDLVL_55dB = 0x37,
SNDLVL_IDLE = 0x3C, SNDLVL_IDLE = 0x3C,
SNDLVL_60dB = 0x3C,
SNDLVL_65dB = 0x41, SNDLVL_65dB = 0x41,
SNDLVL_STATIC = 0x42, SNDLVL_STATIC = 0x42,
SNDLVL_70dB = 0x46, SNDLVL_70dB = 0x46,
SNDLVL_NORM = 0x4B, SNDLVL_NORM = 0x4B,
SNDLVL_75dB = 0x4B,
SNDLVL_80dB = 0x50, SNDLVL_80dB = 0x50,
SNDLVL_TALKING = 0x50,
SNDLVL_85dB = 0x55, SNDLVL_85dB = 0x55,
SNDLVL_90dB = 0x5A, SNDLVL_90dB = 0x5A,
SNDLVL_95dB = 0x5F, SNDLVL_95dB = 0x5F,
@ -152,7 +149,6 @@ pub mod cs2_dumper {
SNDLVL_120dB = 0x78, SNDLVL_120dB = 0x78,
SNDLVL_130dB = 0x82, SNDLVL_130dB = 0x82,
SNDLVL_GUNFIRE = 0x8C, SNDLVL_GUNFIRE = 0x8C,
SNDLVL_140dB = 0x8C,
SNDLVL_150dB = 0x96, SNDLVL_150dB = 0x96,
SNDLVL_180dB = 0xB4 SNDLVL_180dB = 0xB4
} }
@ -212,8 +208,7 @@ pub mod cs2_dumper {
FILTER_SLOPE_12dB = 0x4, FILTER_SLOPE_12dB = 0x4,
FILTER_SLOPE_24dB = 0x5, FILTER_SLOPE_24dB = 0x5,
FILTER_SLOPE_36dB = 0x6, FILTER_SLOPE_36dB = 0x6,
FILTER_SLOPE_48dB = 0x7, FILTER_SLOPE_48dB = 0x7
FILTER_SLOPE_MAX = 0x7
} }
// Alignment: 4 // Alignment: 4
// Members count: 8 // Members count: 8

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper // Generated using https://github.com/a2x/cs2-dumper
// 2024-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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-05-24 01:30:25.777667800 UTC // 2024-05-24 10:58:30.509826500 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

@ -89,6 +89,10 @@ fn read_class_binding(
let name = binding.name.read_string(process)?.to_string(); let name = binding.name.read_string(process)?.to_string();
if name.is_empty() {
return Err(Error::Other("empty class name"));
}
let parent = binding.base_classes.non_null().and_then(|ptr| { let parent = binding.base_classes.non_null().and_then(|ptr| {
let base_class = ptr.read(process).ok()?; let base_class = ptr.read(process).ok()?;
let parent_class = base_class.prev.read(process).ok()?; let parent_class = base_class.prev.read(process).ok()?;
@ -215,6 +219,10 @@ fn read_enum_binding(
let binding = binding_ptr.read(process)?; let binding = binding_ptr.read(process)?;
let name = binding.name.read_string(process)?.to_string(); let name = binding.name.read_string(process)?.to_string();
if name.is_empty() {
return Err(Error::Other("empty enum name"));
}
let members = read_enum_binding_members(process, &binding)?; let members = read_enum_binding_members(process, &binding)?;
debug!( debug!(

View File

@ -53,7 +53,7 @@ impl CodeWriter for Vec<Button> {
BTreeMap::from_iter([("client.dll", buttons)]) BTreeMap::from_iter([("client.dll", buttons)])
}; };
fmt.write_str(&serde_json::to_string_pretty(&content).expect("failed to serialize")) fmt.write_str(&serde_json::to_string_pretty(&content).expect("unable to serialize json"))
} }
fn write_rs(&self, fmt: &mut Formatter<'_>) -> fmt::Result { fn write_rs(&self, fmt: &mut Formatter<'_>) -> fmt::Result {

View File

@ -15,6 +15,7 @@ impl<'a> Formatter<'a> {
} }
} }
// TODO: Refactor this.
pub fn block<F>(&mut self, heading: &str, semicolon: bool, f: F) -> fmt::Result pub fn block<F>(&mut self, heading: &str, semicolon: bool, f: F) -> fmt::Result
where where
F: FnOnce(&mut Self) -> fmt::Result, F: FnOnce(&mut Self) -> fmt::Result,

View File

@ -40,11 +40,8 @@ impl<'a> Item<'a> {
trait CodeWriter { trait CodeWriter {
fn write_cs(&self, fmt: &mut Formatter<'_>) -> fmt::Result; fn write_cs(&self, fmt: &mut Formatter<'_>) -> fmt::Result;
fn write_hpp(&self, fmt: &mut Formatter<'_>) -> fmt::Result; fn write_hpp(&self, fmt: &mut Formatter<'_>) -> fmt::Result;
fn write_json(&self, fmt: &mut Formatter<'_>) -> fmt::Result; fn write_json(&self, fmt: &mut Formatter<'_>) -> fmt::Result;
fn write_rs(&self, fmt: &mut Formatter<'_>) -> fmt::Result; fn write_rs(&self, fmt: &mut Formatter<'_>) -> fmt::Result;
} }

View File

@ -1,4 +1,4 @@
use std::collections::BTreeMap; use std::collections::{BTreeMap, HashSet};
use std::fmt::{self, Write}; use std::fmt::{self, Write};
use heck::{AsPascalCase, AsSnakeCase}; use heck::{AsPascalCase, AsSnakeCase};
@ -37,8 +37,6 @@ impl CodeWriter for SchemaMap {
&format!("public enum {} : {}", slugify(&enum_.name), type_name), &format!("public enum {} : {}", slugify(&enum_.name), type_name),
false, false,
|fmt| { |fmt| {
// TODO: Handle the case where multiple members share
// the same value.
let members = enum_ let members = enum_
.members .members
.iter() .iter()
@ -58,7 +56,7 @@ impl CodeWriter for SchemaMap {
.parent .parent
.as_ref() .as_ref()
.map(|parent| slugify(&parent.name)) .map(|parent| slugify(&parent.name))
.unwrap_or_else(|| "None".to_string()); .unwrap_or_else(|| String::from("None"));
writeln!(fmt, "// Parent: {}", parent_name)?; writeln!(fmt, "// Parent: {}", parent_name)?;
writeln!(fmt, "// Fields count: {}", class.fields.len())?; writeln!(fmt, "// Fields count: {}", class.fields.len())?;
@ -122,8 +120,6 @@ impl CodeWriter for SchemaMap {
&format!("enum class {} : {}", slugify(&enum_.name), type_name), &format!("enum class {} : {}", slugify(&enum_.name), type_name),
true, true,
|fmt| { |fmt| {
// TODO: Handle the case where multiple members share
// the same value.
let members = enum_ let members = enum_
.members .members
.iter() .iter()
@ -143,7 +139,7 @@ impl CodeWriter for SchemaMap {
.parent .parent
.as_ref() .as_ref()
.map(|parent| slugify(&parent.name)) .map(|parent| slugify(&parent.name))
.unwrap_or_else(|| "None".to_string()); .unwrap_or_else(|| String::from("None"));
writeln!(fmt, "// Parent: {}", parent_name)?; writeln!(fmt, "// Parent: {}", parent_name)?;
writeln!(fmt, "// Fields count: {}", class.fields.len())?; writeln!(fmt, "// Fields count: {}", class.fields.len())?;
@ -299,21 +295,24 @@ impl CodeWriter for SchemaMap {
), ),
false, false,
|fmt| { |fmt| {
// TODO: Handle the case where multiple members share let mut used_values = HashSet::new();
// the same value.
let members = enum_ let members = enum_
.members .members
.iter() .iter()
.map(|member| { .filter_map(|member| {
format!( // Filter out duplicate values.
"{} = {}", if used_values.insert(member.value) {
member.name, let value = if member.value == -1 {
if member.value == -1 {
format!("{}::MAX", type_name) format!("{}::MAX", type_name)
} else { } else {
format!("{:#X}", member.value) format!("{:#X}", member.value)
} };
)
Some(format!("{} = {}", member.name, value))
} else {
None
}
}) })
.collect::<Vec<_>>() .collect::<Vec<_>>()
.join(",\n"); .join(",\n");
@ -328,7 +327,7 @@ impl CodeWriter for SchemaMap {
.parent .parent
.as_ref() .as_ref()
.map(|parent| slugify(&parent.name)) .map(|parent| slugify(&parent.name))
.unwrap_or_else(|| "None".to_string()); .unwrap_or_else(|| String::from("None"));
writeln!(fmt, "// Parent: {}", parent_name)?; writeln!(fmt, "// Parent: {}", parent_name)?;
writeln!(fmt, "// Fields count: {}", class.fields.len())?; writeln!(fmt, "// Fields count: {}", class.fields.len())?;