Redirecting to ../../csflow/enum.Connector.html...
+ + + \ No newline at end of file diff --git a/docs/csflow/context/struct.CheatCtx.html b/docs/csflow/context/struct.CheatCtx.html new file mode 100644 index 0000000..422c65f --- /dev/null +++ b/docs/csflow/context/struct.CheatCtx.html @@ -0,0 +1,11 @@ + + + + +Redirecting to ../../csflow/struct.CheatCtx.html...
+ + + \ No newline at end of file diff --git a/docs/csflow/enum.Connector.html b/docs/csflow/enum.Connector.html new file mode 100644 index 0000000..23520ea --- /dev/null +++ b/docs/csflow/enum.Connector.html @@ -0,0 +1,72 @@ +pub enum Connector {
+ Qemu,
+ Kvm,
+ Pcileech,
+}self and other) and is used by the <=
+operator. Read morekey and return true if they are equal.offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read morepub enum Error {
+ GameVersionMismatch(usize, usize),
+ Memflow(Error),
+ MemflowPartialAddress(PartialError<Address>),
+ MemflowPartialVec3(PartialError<Vec3>),
+ MemflowPartialString(PartialError<String>),
+ MemflowPartiali32(PartialError<i32>),
+ MemflowPartialu32(PartialError<u32>),
+ MemflowPartialu8(PartialError<u8>),
+}Game version mismatch. +First arg is the game version, second is the offset version.
+offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read morepub enum PlayerType {
+ Unknown,
+ Spectator,
+ Local,
+ Enemy,
+ Team,
+}source. Read moreself and other values to be equal, and is used
+by ==.offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read more#[repr(i32)]pub enum TeamID {
+ Spectator,
+ T,
+ CT,
+}u64 to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned.i64 to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned.isize to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned.i8 to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned.i16 to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned.i32 to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned.i128 to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned. Read moreusize to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned.u8 to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned.u16 to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned.u32 to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned.u128 to return an optional value of this type. If the
+value cannot be represented by this type, then None is returned. Read moreself to a u64. If the value cannot be
+represented by a u64, then None is returned.self to an i64. If the value cannot be
+represented by an i64, then None is returned.self to an isize. If the value cannot be
+represented by an isize, then None is returned.self to an i8. If the value cannot be
+represented by an i8, then None is returned.self to an i16. If the value cannot be
+represented by an i16, then None is returned.self to an i32. If the value cannot be
+represented by an i32, then None is returned.self to an i128. If the value cannot be
+represented by an i128 (i64 under the default implementation), then
+None is returned. Read moreself to a usize. If the value cannot be
+represented by a usize, then None is returned.self to a u8. If the value cannot be
+represented by a u8, then None is returned.self to a u16. If the value cannot be
+represented by a u16, then None is returned.self to a u32. If the value cannot be
+represented by a u32, then None is returned.self to a u128. If the value cannot be
+represented by a u128 (u64 under the default implementation), then
+None is returned. Read morekey and return true if they are equal.offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreRedirecting to ../../../csflow/enums/enum.PlayerType.html...
+ + + \ No newline at end of file diff --git a/docs/csflow/enums/sidebar-items.js b/docs/csflow/enums/sidebar-items.js new file mode 100644 index 0000000..b8eb5c0 --- /dev/null +++ b/docs/csflow/enums/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["PlayerType","TeamID"]}; \ No newline at end of file diff --git a/docs/csflow/enums/teamid/enum.TeamID.html b/docs/csflow/enums/teamid/enum.TeamID.html new file mode 100644 index 0000000..ff81ef5 --- /dev/null +++ b/docs/csflow/enums/teamid/enum.TeamID.html @@ -0,0 +1,11 @@ + + + + +Redirecting to ../../../csflow/enums/enum.TeamID.html...
+ + + \ No newline at end of file diff --git a/docs/csflow/error/enum.Error.html b/docs/csflow/error/enum.Error.html new file mode 100644 index 0000000..06cff71 --- /dev/null +++ b/docs/csflow/error/enum.Error.html @@ -0,0 +1,11 @@ + + + + +Redirecting to ../../csflow/enum.Error.html...
+ + + \ No newline at end of file diff --git a/docs/csflow/index.html b/docs/csflow/index.html new file mode 100644 index 0000000..38e7ae7 --- /dev/null +++ b/docs/csflow/index.html @@ -0,0 +1 @@ +pub struct CheatCtx {
+ pub process: IntoProcessInstanceArcBox<'static>,
+ pub client_module: ModuleInfo,
+ pub engine_module: ModuleInfo,
+}process: IntoProcessInstanceArcBox<'static>§client_module: ModuleInfo§engine_module: ModuleInfooffset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreRedirecting to ../../../../csflow/structs/struct.CBaseEntity.html...
+ + + \ No newline at end of file diff --git a/docs/csflow/structs/entity/player_controller/struct.CPlayerController.html b/docs/csflow/structs/entity/player_controller/struct.CPlayerController.html new file mode 100644 index 0000000..0874c21 --- /dev/null +++ b/docs/csflow/structs/entity/player_controller/struct.CPlayerController.html @@ -0,0 +1,11 @@ + + + + +Redirecting to ../../../../csflow/structs/struct.CPlayerController.html...
+ + + \ No newline at end of file diff --git a/docs/csflow/structs/entity/player_pawn/struct.CPlayerPawn.html b/docs/csflow/structs/entity/player_pawn/struct.CPlayerPawn.html new file mode 100644 index 0000000..0772661 --- /dev/null +++ b/docs/csflow/structs/entity/player_pawn/struct.CPlayerPawn.html @@ -0,0 +1,11 @@ + + + + +Redirecting to ../../../../csflow/structs/struct.CPlayerPawn.html...
+ + + \ No newline at end of file diff --git a/docs/csflow/structs/index.html b/docs/csflow/structs/index.html new file mode 100644 index 0000000..644af73 --- /dev/null +++ b/docs/csflow/structs/index.html @@ -0,0 +1 @@ +pub struct CBaseEntity(/* private fields */);offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read morepub struct CPlayerController(/* private fields */);offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read morepub struct CPlayerPawn(/* private fields */);offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read more#[repr(C)]pub struct Vec3 {
+ pub x: f32,
+ pub y: f32,
+ pub z: f32,
+}x: f32§y: f32§z: f32offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreRedirecting to ../../../csflow/structs/struct.Vec3.html...
+ + + \ No newline at end of file diff --git a/docs/csflow/traits/base_entity/trait.BaseEntity.html b/docs/csflow/traits/base_entity/trait.BaseEntity.html new file mode 100644 index 0000000..27532e0 --- /dev/null +++ b/docs/csflow/traits/base_entity/trait.BaseEntity.html @@ -0,0 +1,11 @@ + + + + +Redirecting to ../../../csflow/traits/trait.BaseEntity.html...
+ + + \ No newline at end of file diff --git a/docs/csflow/traits/index.html b/docs/csflow/traits/index.html new file mode 100644 index 0000000..7846434 --- /dev/null +++ b/docs/csflow/traits/index.html @@ -0,0 +1,2 @@ +Redirecting to ../../../csflow/traits/trait.MemoryClass.html...
+ + + \ No newline at end of file diff --git a/docs/csflow/traits/sidebar-items.js b/docs/csflow/traits/sidebar-items.js new file mode 100644 index 0000000..c066c62 --- /dev/null +++ b/docs/csflow/traits/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"trait":["BaseEntity","MemoryClass"]}; \ No newline at end of file diff --git a/docs/csflow/traits/trait.BaseEntity.html b/docs/csflow/traits/trait.BaseEntity.html new file mode 100644 index 0000000..eb2a9f3 --- /dev/null +++ b/docs/csflow/traits/trait.BaseEntity.html @@ -0,0 +1,18 @@ +pub trait BaseEntity {
+ // Required methods
+ fn from_index(
+ ctx: &mut CheatCtx,
+ entity_list: Address,
+ index: i32
+ ) -> Result<Option<Self>, Error>
+ where Self: Sized;
+ fn pos(&self, ctx: &mut CheatCtx) -> Result<Vec3, Error>;
+ fn class_name(&self, ctx: &mut CheatCtx) -> Result<String, Error>;
+}A trait for basic functions from C_BaseEntity +CCSPlayerController inherits C_BaseEntity, which is why this trait exists.
+pub trait MemoryClass {
+ // Required methods
+ fn ptr(&self) -> Address;
+ fn new(ptr: Address) -> Self;
+}A trait that implements basic functions for a class represented by a single pointer
+const POLL_RANGE: RangeInclusive<usize>;const PORT_RANGE: RangeInclusive<usize>;pub enum Loglevel {
+ Error,
+ Warn,
+ Info,
+ Debug,
+ Trace,
+}Wrapper because log::LevelFilter doesn’t implement ValueEnum
+self and other) and is used by the <=
+operator. Read morekey and return true if they are equal.offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreSubscriber to this type, returning a
+[WithDispatch] wrapper. Read morepub struct Cli {
+ pub connector: Connector,
+ pub pcileech_device: String,
+ pub port: u16,
+ pub web_path: PathBuf,
+ pub poll_rate: u16,
+ pub loglevel: Loglevel,
+}connector: ConnectorSpecifies the connector type for DMA
+pcileech_device: StringName of the Pcileech device
+port: u16Port number for the Webserver to run on
+web_path: PathBufPath to the directory served by the Webserver
+poll_rate: u16Polling frequency in times per second for the DMA thread
+loglevel: LoglevelVerbosity level for logging to the console
+ArgGroup::id][crate::ArgGroup::id] for this set of argumentsArgMatches to self.ArgMatches to self.std::env::args_os(), return Err on error.offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreSubscriber to this type, returning a
+[WithDispatch] wrapper. Read morepub enum EntityData {
+ Player(PlayerData),
+ Bomb(BombData),
+}source. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreSubscriber to this type, returning a
+[WithDispatch] wrapper. Read morepub struct BombData {
+ pos: Vec3,
+ is_planted: bool,
+}pos: Vec3§is_planted: booloffset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreSubscriber to this type, returning a
+[WithDispatch] wrapper. Read morepub struct PlayerData {
+ pos: Vec3,
+ yaw: f32,
+ player_type: PlayerType,
+ has_bomb: bool,
+}pos: Vec3§yaw: f32§player_type: PlayerType§has_bomb: boolsource. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreSubscriber to this type, returning a
+[WithDispatch] wrapper. Read morepub struct RadarData {
+ ingame: bool,
+ map_name: String,
+ player_data: Vec<EntityData>,
+}ingame: bool§map_name: String§player_data: Vec<EntityData>offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreSubscriber to this type, returning a
+[WithDispatch] wrapper. Read morepub enum CachedEntity {
+ Bomb {
+ ptr: Address,
+ },
+ Player {
+ ptr: Address,
+ player_type: PlayerType,
+ },
+}source. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreSubscriber to this type, returning a
+[WithDispatch] wrapper. Read morepub struct Cache {
+ timestamp: Instant,
+ entity_cache: Vec<CachedEntity>,
+ map_name: String,
+ entity_list: Address,
+}timestamp: Instant§entity_cache: Vec<CachedEntity>§map_name: String§entity_list: Addressoffset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreSubscriber to this type, returning a
+[WithDispatch] wrapper. Read morepub struct CacheBuilder {
+ entity_cache: Option<Vec<CachedEntity>>,
+ map_name: Option<String>,
+ entity_list: Option<Address>,
+}entity_cache: Option<Vec<CachedEntity>>§map_name: Option<String>§entity_list: Option<Address>offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreSubscriber to this type, returning a
+[WithDispatch] wrapper. Read moreconst SECOND_AS_NANO: u64 = _; // 1_000_000_000u64async fn handle_socket(socket: WebSocket, state: AppState)async fn ws_handler(ws: WebSocketUpgrade, __arg1: State<AppState>) -> Responsestruct AppState {
+ data_lock: Arc<RwLock<RadarData>>,
+}data_lock: Arc<RwLock<RadarData>>offset. Read moreoffset. Read moreoffset. Read moreoffset. Read moreoffset) with value,
+returning the previous value of the field. Read moreoffset) with value,
+returning the previous value of the field. Read morepiped except that the function takes &Self
+Useful for functions that take &Self instead of Self. Read morepiped, except that the function takes &mut Self.
+Useful for functions that take &mut Self instead of Self.AsRef,
+using the turbofish .as_ref_::<_>() syntax. Read moreSubscriber to this type, returning a
+[WithDispatch] wrapper. Read moreU::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Same as ::get_health > 0","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A trait for basic functions from C_BaseEntity …","A trait that implements basic functions for a class …","","","","",""],"i":[0,0,0,9,1,9,9,9,9,9,9,9,1,1,20,1,9,20,1,9,20,1,1,1,1,1,1,1,20,0,1,1,1,1,20,1,9,20,20,1,1,9,9,20,1,9,20,1,9,20,1,9,20,20,1,1,9,9,20,20,1,1,9,9,9,9,20,1,9,9,9,9,9,9,9,9,20,1,9,1,1,20,20,20,20,20,20,1,9,1,1,20,20,20,20,1,20,1,1,20,9,0,1,1,1,9,0,20,1,9,20,1,9,20,1,9,1,31,29,29,0,29,31,31,29,0,29,29,31,29,31,29,29,29,29,29,29,29,31,31,31,31,29,31,29,29,31,31,29,31,29,31,29,31,29,29,31,31,29,29,31,31,29,31,29,31,29,31,29,29,31,31,29,31,29,29,29,29,29,31,29,31,29,31,31,31,31,31,31,31,31,31,29,31,29,31,0,0,0,0,38,15,15,15,15,23,22,38,15,23,22,38,15,23,22,15,15,15,15,15,23,22,38,15,23,23,22,22,38,38,15,15,23,22,38,15,23,22,38,15,23,22,38,15,23,23,22,22,38,38,15,15,23,23,22,22,38,38,15,15,15,23,22,38,15,23,22,38,15,15,15,23,22,38,22,22,22,38,38,23,22,38,15,15,15,38,23,22,38,23,22,38,23,22,38,15,15,15,15,23,23,22,38,15,23,22,38,15,23,22,38,15,15,15,15,15,0,0,41,41,42,41,42],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[1,1],[[-1,-2],2,[],[]],[[1,1],3],[[-1,-2],3,[],[]],[[],1],[[],-1,[]],[[],-1,[]],0,0,[[1,1],4],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,7]]],-3,[],[],8],[[-1,[6,[-2,-3,5]]],-3,[],[],8],[[-1,[6,[-2,-3,5]]],-3,[],[],8],[[-1,[6,[-2,-3,7]]],-3,[],[],8],[[-1,[6,[-2,-3,7]]],-3,[],[],8],[[-1,[6,[-2,-3,5]]],-3,[],[],8],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,5]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,5]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,5]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,5]],-2],2,[],[],[]],[[-1,[6,[-2,-3,7]],-2],2,[],[],[]],[[-1,[6,[-2,-3,5]],-2],2,[],[],[]],[[-1,[6,[-2,-3,7]],-2],2,[],[],[]],[[-1,[6,[-2,-3,7]],-2],2,[],[],[]],[[-1,[6,[-2,-3,5]],-2],2,[],[],[]],[[9,10],11],[[9,10],11],[-1,-1,[]],[-1,-1,[]],[[[13,[12]]],9],[[[13,[14]]],9],[[[13,[15]]],9],[[[13,[16]]],9],[-1,-1,[]],[17,9],[[[13,[18]]],9],[[[13,[19]]],9],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[],[]],[[]],[20,[[21,[18,9]]]],[20,[[21,[18,9]]]],[20,[[21,[22,9]]]],[20,[[21,[23,9]]]],[20,[[21,[16,9]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],-1,[]],[[]],[20,[[21,[4,9]]]],[20,[[21,[4,9]]]],[[20,18],[[21,[19,9]]]],[20,[[21,[4,9]]]],[[1,1],[[24,[3]]]],0,[[]],[[]],[[1,19],[[21,[20,9]]]],[9,[[24,[25]]]],0,[-1,-2,[],[]],[1,[[24,[26]]]],[1,19],[-1,19,[]],0,[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[[],[[28,[1]]]],0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[29,29],[[-1,-2],2,[],[]],[[],29],[[],-1,[]],[[],-1,[]],[-1,[[21,[29]]],30],[[29,29],4],[[31,31],4],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],8],[[-1,[6,[-2,-3,7]]],-3,[],[],8],[[-1,[6,[-2,-3,5]]],-3,[],[],8],[[-1,[6,[-2,-3,7]]],-3,[],[],8],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,5]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,5]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,5]],-2],2,[],[],[]],[[-1,[6,[-2,-3,7]],-2],2,[],[],[]],[[-1,[6,[-2,-3,7]],-2],2,[],[],[]],[[-1,[6,[-2,-3,5]],-2],2,[],[],[]],[[29,10],11],[[31,10],11],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[],[]],[[]],[32,[[24,[31]]]],[33,[[24,[31]]]],[-1,-2,[],[]],[-1,-2,[],[]],[[],-1,[]],[[]],[[]],[[]],[[29,-1],21,34],[31,[[24,[32]]]],[-1,-2,[],[]],[31,[[24,[33]]]],[-1,[[21,[-2]]],[],[]],[35,[[21,[31]]]],[16,[[21,[31]]]],[33,[[21,[31]]]],[36,[[21,[31]]]],[14,[[21,[31]]]],[12,[[21,[31]]]],[37,[[21,[31]]]],[-1,[[21,[-2]]],[],[]],[32,[[21,[31]]]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,27,[]],[-1,27,[]],0,0,0,0,[[38,20],[[21,[15,9]]]],[-1,[[28,[14]]],[]],[-1,[[28,[14]]],[]],[-1,39,[]],[-1,39,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[23,20],[[21,[19,9]]]],[[22,20],[[21,[19,9]]]],[15,15],[[-1,-2],2,[],[]],[[],-1,[]],[[],-1,[]],[-1,[[21,[15]]],30],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,7]]],-3,[],[],8],[[-1,[6,[-2,-3,5]]],-3,[],[],8],[[-1,[6,[-2,-3,5]]],-3,[],[],8],[[-1,[6,[-2,-3,7]]],-3,[],[],8],[[-1,[6,[-2,-3,5]]],-3,[],[],8],[[-1,[6,[-2,-3,7]]],-3,[],[],8],[[-1,[6,[-2,-3,7]]],-3,[],[],8],[[-1,[6,[-2,-3,5]]],-3,[],[],8],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,5]]],-3,[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[6,[-2,-3,5]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,5]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,5]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,5]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[6,[-2,-3,5]],-2],2,[],[],[]],[[-1,[6,[-2,-3,7]],-2],2,[],[],[]],[[-1,[6,[-2,-3,7]],-2],2,[],[],[]],[[-1,[6,[-2,-3,5]],-2],2,[],[],[]],[[-1,[6,[-2,-3,7]],-2],2,[],[],[]],[[-1,[6,[-2,-3,5]],-2],2,[],[],[]],[[-1,[6,[-2,-3,5]],-2],2,[],[],[]],[[-1,[6,[-2,-3,7]],-2],2,[],[],[]],[[15,10],11],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[],[]],[[]],[[20,18,16],[[21,[[24,[23]],9]]]],[[20,18,16],[[21,[[24,[22]],9]]]],[[20,18,12],[[21,[[24,[38]],9]]]],[[22,20,18],[[21,[[24,[38]],9]]]],[[22,20,22],[[21,[[24,[29]],9]]]],[[22,20],[[21,[[24,[31]],9]]]],[[38,20,18],[[21,[4,9]]]],[[38,20],[[21,[12,9]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],-1,[]],[[]],[[38,20],[[21,[4,9]]]],[18,23],[18,22],[18,38],[[23,20],[[21,[15,9]]]],[[22,20],[[21,[15,9]]]],[[38,20],[[21,[15,9]]]],[23,18],[22,18],[38,18],[[]],[[]],[[15,-1],21,34],[-1,-2,[],[]],[23,22],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],0,0,0,[[],-1,[]],0,0,[[-1,20],[[21,[19,9]]],[]],[[20,18,16],[[21,[[24,[-1]],9]]],40],[18,-1,[]],[[-1,20],[[21,[15,9]]],[]],[-1,18,[]]],"c":[],"p":[[4,"Connector",0],[15,"tuple"],[4,"Ordering",323],[15,"bool"],[3,"Aligned",324],[3,"FieldOffset",325],[3,"Unaligned",324],[8,"Copy",326],[4,"Error",0],[3,"Formatter",327],[6,"Result",327],[15,"u32"],[4,"PartialError",328],[15,"u8"],[3,"Vec3",196],[15,"i32"],[3,"Error",328],[3,"Address",329],[3,"String",330],[3,"CheatCtx",0],[4,"Result",331],[3,"CPlayerController",196],[3,"CBaseEntity",196],[4,"Option",332],[8,"Error",333],[3,"PossibleValue",334],[3,"TypeId",335],[15,"slice"],[4,"PlayerType",117],[8,"Deserializer",336],[4,"TeamID",117],[15,"i64"],[15,"u64"],[8,"Serializer",337],[15,"i8"],[15,"i16"],[15,"u16"],[3,"CPlayerPawn",196],[3,"DataView",338],[8,"Sized",326],[8,"BaseEntity",316],[8,"MemoryClass",316]]},\
+"radarflow":{"doc":"","t":"AAAFADNNNERRNNLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLMFMMFLLLLLLLLLLLLFLFLLMNDENDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLMMLLLMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMHRAFNDDENLLLLLLLLLLLLLMMLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLMLLLLLLLLLLLLLMMMDLLLLMLLLLLLLLLLLLLLLLLFLLLLLFLLLLLF","n":["cli","comms","dma","main","websocket","Cli","Debug","Error","Info","Loglevel","POLL_RANGE","PORT_RANGE","Trace","Warn","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","cmp","command","command_for_update","compare","connector","default","deref_borrowed","deref_owned","eq","equivalent","equivalent","equivalent","f_get","f_get","f_get_copy","f_get_copy","f_get_copy","f_get_copy","f_get_mut","f_get_mut","f_get_mut_ptr","f_get_mut_ptr","f_get_ptr","f_get_ptr","f_replace","f_replace","f_replace","f_replace","f_swap","f_swap","f_swap","f_swap","from","from","from2","from2","from_arg_matches","from_arg_matches_mut","from_cow_borrow","from_cow_owned","from_ref","group_id","into","into","into_cow_borrow","into_cow_owned","loglevel","partial_cmp","pcileech_device","poll_in_range","poll_rate","port","port_in_range","r_borrow","r_to_owned","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","valid_path","value_variants","version","vzip","vzip","web_path","Bomb","BombData","EntityData","Player","PlayerData","RadarData","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","deref_borrowed","deref_borrowed","deref_borrowed","deref_borrowed","deref_owned","deref_owned","deref_owned","deref_owned","deserialize","deserialize","deserialize","deserialize","empty","f_get","f_get","f_get","f_get","f_get_copy","f_get_copy","f_get_copy","f_get_copy","f_get_copy","f_get_copy","f_get_copy","f_get_copy","f_get_mut","f_get_mut","f_get_mut","f_get_mut","f_get_mut_ptr","f_get_mut_ptr","f_get_mut_ptr","f_get_mut_ptr","f_get_ptr","f_get_ptr","f_get_ptr","f_get_ptr","f_replace","f_replace","f_replace","f_replace","f_replace","f_replace","f_replace","f_replace","f_swap","f_swap","f_swap","f_swap","f_swap","f_swap","f_swap","f_swap","fmt","fmt","fmt","fmt","from","from","from","from","from2","from2","from2","from2","from_cow_borrow","from_cow_borrow","from_cow_borrow","from_cow_borrow","from_cow_owned","from_cow_owned","from_cow_owned","from_cow_owned","from_ref","from_ref","from_ref","from_ref","has_bomb","ingame","into","into","into","into","into_cow_borrow","into_cow_borrow","into_cow_borrow","into_cow_borrow","into_cow_owned","into_cow_owned","into_cow_owned","into_cow_owned","is_planted","map_name","new","new","new","player_data","player_type","pos","pos","r_borrow","r_borrow","r_borrow","r_borrow","r_to_owned","r_to_owned","r_to_owned","r_to_owned","serialize","serialize","serialize","serialize","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","yaw","ONCE","SECOND_AS_NANO","cache","run","Bomb","Cache","CacheBuilder","CachedEntity","Player","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","build","clone","clone_into","deref_borrowed","deref_owned","entity_cache","entity_cache","entity_cache","entity_cache","entity_list","entity_list","entity_list","entity_list","f_get","f_get","f_get","f_get_copy","f_get_copy","f_get_copy","f_get_copy","f_get_copy","f_get_copy","f_get_mut","f_get_mut","f_get_mut","f_get_mut_ptr","f_get_mut_ptr","f_get_mut_ptr","f_get_ptr","f_get_ptr","f_get_ptr","f_replace","f_replace","f_replace","f_replace","f_replace","f_replace","f_swap","f_swap","f_swap","f_swap","f_swap","f_swap","from","from","from","from2","from2","from2","from_cow_borrow","from_cow_owned","from_ref","into","into","into","into_cow_borrow","into_cow_owned","is_valid","map_name","map_name","map_name","map_name","new","new_invalid","r_borrow","r_to_owned","timestamp","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","player_type","ptr","ptr","AppState","borrow","borrow_mut","clone","clone_into","data_lock","deref_borrowed","deref_owned","f_get","f_get_copy","f_get_copy","f_get_mut","f_get_mut_ptr","f_get_ptr","f_replace","f_replace","f_swap","f_swap","from","from2","from_cow_borrow","from_cow_owned","from_ref","handle_socket","into","into_cow_borrow","into_cow_owned","r_borrow","r_to_owned","run","to_owned","try_from","try_into","type_id","vzip","ws_handler"],"q":[[0,"radarflow"],[5,"radarflow::cli"],[93,"radarflow::comms"],[248,"radarflow::dma"],[252,"radarflow::dma::cache"],[343,"radarflow::dma::cache::CachedEntity"],[346,"radarflow::websocket"],[382,"anyhow"],[383,"clap_builder::builder::command"],[384,"core::cmp"],[385,"repr_offset::alignment"],[386,"repr_offset::struct_field_offset"],[387,"core::marker"],[388,"repr_offset::alignment"],[389,"clap_builder"],[390,"core::result"],[391,"clap_builder::util::id"],[392,"core::option"],[393,"alloc::string"],[394,"clap_builder::builder::possible_value"],[395,"core::any"],[396,"std::path"],[397,"serde::de"],[398,"core::fmt"],[399,"core::fmt"],[400,"csflow::enums::player_type"],[401,"alloc::vec"],[402,"serde::ser"],[403,"csflow::context"],[404,"tokio::sync::rwlock"],[405,"alloc::sync"],[406,"memflow::types::address"],[407,"axum::extract::ws"],[408,"axum::extract::ws"],[409,"axum_core::response"]],"d":["","","","","","","","","","Wrapper because log::LevelFilter doesn’t implement …","","","","","","","","","","","","","","","","","Specifies the connector type for DMA","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","","","Verbosity level for logging to the console","","Name of the Pcileech device","","Polling frequency in times per second for the DMA thread","Port number for the Webserver to run on","","","","","","","","","","","","","","","","","","","Path to the directory served by the Webserver","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns empty RadarData, it’s also the same data that …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","Calls U::from(self).","","","","","","","","","","",""],"i":[0,0,0,0,0,0,4,4,4,0,0,0,4,4,12,12,12,4,12,4,4,4,4,12,12,4,12,4,4,4,4,4,4,4,12,4,12,12,4,4,12,4,12,4,12,4,12,12,4,4,12,12,4,4,12,4,12,4,12,12,4,4,4,12,12,4,4,4,12,4,12,0,12,12,0,4,4,4,4,12,4,12,4,12,4,12,12,0,4,0,12,4,12,26,0,0,26,0,0,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,27,24,25,26,27,24,24,25,25,26,26,27,27,24,25,26,27,24,25,26,27,24,25,26,27,24,24,25,25,26,26,27,27,24,24,25,25,26,26,27,27,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,24,27,24,25,26,27,24,25,26,27,24,25,26,27,25,27,24,25,27,27,24,24,25,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,24,25,26,27,24,0,0,0,0,41,0,0,0,41,40,39,41,40,39,41,39,41,41,41,41,40,39,40,39,40,39,40,39,40,39,41,40,40,39,39,41,41,40,39,41,40,39,41,40,39,41,40,40,39,39,41,41,40,40,39,39,41,41,40,39,41,40,39,41,41,41,41,40,39,41,41,41,40,40,39,40,39,39,40,41,41,40,41,40,39,41,40,39,41,40,39,41,40,39,41,48,49,48,0,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,0,43,43,43,43,43,0,43,43,43,43,43,0],"f":[0,0,0,[[],[[2,[1]]]],0,0,0,0,0,0,0,0,0,0,[3,3],[3,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[4,4],[[-1,-2],1,[],[]],[[4,4],5],[[],3],[[],3],[[-1,-2],5,[],[]],0,[[],4],[[],-1,[]],[[],-1,[]],[[4,4],6],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,-2],6,[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],9],[[-1,[8,[-2,-3,10]]],-3,[],[],9],[[-1,[8,[-2,-3,10]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,10]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,10]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,10]],-2],1,[],[],[]],[[-1,[8,[-2,-3,7]],-2],1,[],[],[]],[[-1,[8,[-2,-3,10]],-2],1,[],[],[]],[[-1,[8,[-2,-3,7]],-2],1,[],[],[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[11,[[14,[12,13]]]],[11,[[14,[12,13]]]],[-1,[],[]],[[]],[-1,-1,[]],[[],[[16,[15]]]],[-1,-2,[],[]],[-1,-2,[],[]],[[],-1,[]],[[]],0,[[4,4],[[16,[5]]]],0,[17,[[14,[18,19]]]],0,0,[17,[[14,[18,19]]]],[[]],[[]],[-1,-2,[],[]],[4,[[16,[20]]]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,21,[]],[-1,21,[]],[[12,11],[[14,[1,13]]]],[[12,11],[[14,[1,13]]]],[17,[[14,[22,19]]]],[[],[[23,[4]]]],[[],19],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[24,24],[25,25],[26,26],[27,27],[[-1,-2],1,[],[]],[[-1,-2],1,[],[]],[[-1,-2],1,[],[]],[[-1,-2],1,[],[]],[[],-1,[]],[[],-1,[]],[[],-1,[]],[[],-1,[]],[[],-1,[]],[[],-1,[]],[[],-1,[]],[[],-1,[]],[-1,[[14,[24]]],28],[-1,[[14,[25]]],28],[-1,[[14,[26]]],28],[-1,[[14,[27]]],28],[[],27],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,10]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],9],[[-1,[8,[-2,-3,10]]],-3,[],[],9],[[-1,[8,[-2,-3,10]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],9],[[-1,[8,[-2,-3,10]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,10]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,10]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,10]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,10]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,10]],-2],1,[],[],[]],[[-1,[8,[-2,-3,7]],-2],1,[],[],[]],[[-1,[8,[-2,-3,7]],-2],1,[],[],[]],[[-1,[8,[-2,-3,10]],-2],1,[],[],[]],[[-1,[8,[-2,-3,7]],-2],1,[],[],[]],[[-1,[8,[-2,-3,10]],-2],1,[],[],[]],[[-1,[8,[-2,-3,10]],-2],1,[],[],[]],[[-1,[8,[-2,-3,7]],-2],1,[],[],[]],[[24,29],30],[[25,29],30],[[26,29],30],[[27,29],30],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[],[]],[-1,[],[]],[-1,[],[]],[-1,[],[]],[[]],[[]],[[]],[[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],-1,[]],[[],-1,[]],[[],-1,[]],[[],-1,[]],[[]],[[]],[[]],[[]],0,0,[[31,32,33,6],24],[[31,6],25],[[6,19,[34,[26]]],27],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[24,-1],14,35],[[25,-1],14,35],[[26,-1],14,35],[[27,-1],14,35],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,21,[]],[-1,21,[]],[-1,21,[]],[-1,21,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[[36,19,18,[38,[[37,[27]]]]],[[2,[1]]]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[39,[[2,[40]]]],[41,41],[[-1,-2],1,[],[]],[[],-1,[]],[[],-1,[]],[40,[[34,[41]]]],[[39,[34,[41]]],39],0,0,[40,42],[[39,42],39],0,0,[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,10]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],9],[[-1,[8,[-2,-3,10]]],-3,[],[],9],[[-1,[8,[-2,-3,10]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,10]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,10]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,10]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,7]],-2],1,[],[],[]],[[-1,[8,[-2,-3,10]],-2],1,[],[],[]],[[-1,[8,[-2,-3,10]],-2],1,[],[],[]],[[-1,[8,[-2,-3,7]],-2],1,[],[],[]],[[-1,[8,[-2,-3,10]],-2],1,[],[],[]],[[-1,[8,[-2,-3,7]],-2],1,[],[],[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[],[]],[[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],-1,[]],[[]],[40,6],[40,19],[[39,19],39],0,0,[[],39],[[],40],[[]],[[]],0,[-1,-2,[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,21,[]],[-1,21,[]],[-1,21,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[43,43],[[-1,-2],1,[],[]],0,[[],-1,[]],[[],-1,[]],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,7]]],-3,[],[],9],[[-1,[8,[-2,-3,10]]],-3,[],[],9],[[-1,[8,[-2,-3,7]]],-3,[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,-4]]],[],[],[],[],[]],[[-1,[8,[-2,-3,7]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,10]],-3],-3,[],[],[]],[[-1,[8,[-2,-3,7]],-2],1,[],[],[]],[[-1,[8,[-2,-3,10]],-2],1,[],[],[]],[-1,-1,[]],[-1,-2,[],[]],[-1,[],[]],[[]],[-1,-1,[]],[[44,43],1],[-1,-2,[],[]],[[],-1,[]],[[]],[[]],[[]],[[22,18,[38,[[37,[27]]]]],[[2,[1]]]],[-1,-2,[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,21,[]],[-1,-2,[],[]],[[45,[46,[43]]],47]],"c":[],"p":[[15,"tuple"],[6,"Result",382],[3,"Command",383],[4,"Loglevel",5],[4,"Ordering",384],[15,"bool"],[3,"Aligned",385],[3,"FieldOffset",386],[8,"Copy",387],[3,"Unaligned",385],[3,"ArgMatches",388],[3,"Cli",5],[6,"Error",389],[4,"Result",390],[3,"Id",391],[4,"Option",392],[15,"str"],[15,"u16"],[3,"String",393],[3,"PossibleValue",394],[3,"TypeId",395],[3,"PathBuf",396],[15,"slice"],[3,"PlayerData",93],[3,"BombData",93],[4,"EntityData",93],[3,"RadarData",93],[8,"Deserializer",397],[3,"Formatter",398],[6,"Result",398],[3,"Vec3",399],[15,"f32"],[4,"PlayerType",400],[3,"Vec",401],[8,"Serializer",402],[4,"Connector",403],[3,"RwLock",404],[3,"Arc",405],[3,"CacheBuilder",252],[3,"Cache",252],[4,"CachedEntity",252],[3,"Address",406],[3,"AppState",346],[3,"WebSocket",407],[3,"WebSocketUpgrade",407],[3,"State",408],[6,"Response",409],[13,"Player",343],[13,"Bomb",343]]}\
+}');
+if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
+if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/docs/settings.html b/docs/settings.html
new file mode 100644
index 0000000..759e0d5
--- /dev/null
+++ b/docs/settings.html
@@ -0,0 +1 @@
+1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +
use memflow::{plugins::{IntoProcessInstanceArcBox, Inventory, ConnectorArgs, args::Args}, os::{ModuleInfo, Os, Process}, mem::MemoryView, types::Address};
+
+use crate::{error::Error, structs::{CPlayerController, CBaseEntity}, cs2dumper, traits::MemoryClass};
+
+pub struct CheatCtx {
+ pub process: IntoProcessInstanceArcBox<'static>,
+ pub client_module: ModuleInfo,
+ pub engine_module: ModuleInfo,
+}
+
+impl CheatCtx {
+ fn check_version(&mut self) -> Result<(), Error> {
+ let game_build_number: u32 = self.process.read(self.engine_module.base + cs2dumper::offsets::engine2_dll::dwBuildNumber)?;
+ let offset_build_number = cs2dumper::offsets::game_info::buildNumber;
+
+ if game_build_number as usize != offset_build_number {
+ return Err(Error::GameVersionMismatch(game_build_number as usize, offset_build_number))
+ }
+
+ Ok(())
+ }
+
+ pub fn setup(connector: Connector, pcileech_device: String) -> Result<CheatCtx, Error> {
+ let inventory = Inventory::scan();
+
+ let os = {
+ if connector == Connector::Pcileech {
+ let args = Args::new()
+ .insert("device", &pcileech_device);
+
+ let connector_args = ConnectorArgs::new(None, args, None);
+
+ inventory.builder()
+ .connector(&connector.to_string())
+ .args(connector_args)
+ .os("win32")
+ .build()?
+ } else {
+ inventory.builder()
+ .connector(&connector.to_string())
+ .os("win32")
+ .build()?
+ }
+ };
+
+ let mut process = os.into_process_by_name("cs2.exe")?;
+
+ let client_module = process.module_by_name("client.dll")?;
+
+ let engine_module = process.module_by_name("engine2.dll")?;
+
+ let mut ctx = Self {
+ process,
+ client_module,
+ engine_module,
+ };
+
+ ctx.check_version()?;
+
+ Ok(ctx)
+ }
+
+ pub fn get_local(&mut self) -> Result<CPlayerController, Error> {
+ let ptr = self.process.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwLocalPlayerController)?;
+ Ok(CPlayerController::new(ptr))
+ }
+
+ pub fn get_plantedc4(&mut self) -> Result<CBaseEntity, Error> {
+ let ptr = self.process.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwPlantedC4)?;
+ let ptr2 = self.process.read_addr64(ptr)?;
+ Ok(CBaseEntity::new(ptr2))
+ }
+
+ pub fn is_bomb_planted(&mut self) -> Result<bool, Error> {
+ let game_rules = self.process.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwGameRules)?;
+ let data: u8 = self.process.read(game_rules + cs2dumper::client::C_CSGameRules::m_bBombPlanted)?;
+ Ok(data != 0)
+ }
+
+ pub fn is_bomb_dropped(&mut self) -> Result<bool, Error> {
+ let game_rules = self.process.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwGameRules)?;
+ let data: u8 = self.process.read(game_rules + cs2dumper::client::C_CSGameRules::m_bBombDropped)?;
+ Ok(data != 0)
+ }
+
+ pub fn get_entity_list(&mut self) -> Result<Address, Error> {
+ let ptr = self.process.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwEntityList)?;
+ Ok(ptr)
+ }
+
+ pub fn get_globals(&mut self) -> Result<Address, Error> {
+ let ptr = self.process.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwGlobalVars)?;
+ Ok(ptr)
+ }
+
+ pub fn map_name(&mut self, global_vars: Address) -> Result<String, Error> {
+ let ptr = self.process.read_addr64(global_vars + 0x188)?;
+ Ok(self.process.read_char_string_n(ptr, 32)?)
+ }
+
+ pub fn highest_entity_index(&mut self) -> Result<i32, Error> {
+ let game_entity_system = self.process.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwGameEntitySystem)?;
+ let highest_index = self.process.read(game_entity_system + cs2dumper::offsets::client_dll::dwGameEntitySystem_getHighestEntityIndex)?;
+ Ok(highest_index)
+ }
+
+ pub fn network_is_ingame(&mut self) -> Result<bool, Error> {
+ let ptr = self.process.read_addr64(self.engine_module.base + cs2dumper::offsets::engine2_dll::dwNetworkGameClient)?;
+ let signonstate: i32 = self.process.read(ptr + cs2dumper::offsets::engine2_dll::dwNetworkGameClient_signOnState)?;
+ Ok(signonstate == 6)
+ }
+}
+
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, clap::ValueEnum, Default)]
+pub enum Connector {
+ #[default]
+ Qemu,
+ Kvm,
+ Pcileech
+}
+
+impl ToString for Connector {
+ fn to_string(&self) -> String {
+ match self {
+ Connector::Qemu => String::from("qemu"),
+ Connector::Kvm => String::from("kvm"),
+ Connector::Pcileech => String::from("pcileech"),
+ }
+ }
+}1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182 +1183 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1192 +1193 +1194 +1195 +1196 +1197 +1198 +1199 +1200 +1201 +1202 +1203 +1204 +1205 +1206 +1207 +1208 +1209 +1210 +1211 +1212 +1213 +1214 +1215 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1224 +1225 +1226 +1227 +1228 +1229 +1230 +1231 +1232 +1233 +1234 +1235 +1236 +1237 +1238 +1239 +1240 +1241 +1242 +1243 +1244 +1245 +1246 +1247 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1256 +1257 +1258 +1259 +1260 +1261 +1262 +1263 +1264 +1265 +1266 +1267 +1268 +1269 +1270 +1271 +1272 +1273 +1274 +1275 +1276 +1277 +1278 +1279 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1288 +1289 +1290 +1291 +1292 +1293 +1294 +1295 +1296 +1297 +1298 +1299 +1300 +1301 +1302 +1303 +1304 +1305 +1306 +1307 +1308 +1309 +1310 +1311 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1320 +1321 +1322 +1323 +1324 +1325 +1326 +1327 +1328 +1329 +1330 +1331 +1332 +1333 +1334 +1335 +1336 +1337 +1338 +1339 +1340 +1341 +1342 +1343 +1344 +1345 +1346 +1347 +1348 +1349 +1350 +1351 +1352 +1353 +1354 +1355 +1356 +1357 +1358 +1359 +1360 +1361 +1362 +1363 +1364 +1365 +1366 +1367 +1368 +1369 +1370 +1371 +1372 +1373 +1374 +1375 +1376 +1377 +1378 +1379 +1380 +1381 +1382 +1383 +1384 +1385 +1386 +1387 +1388 +1389 +1390 +1391 +1392 +1393 +1394 +1395 +1396 +1397 +1398 +1399 +1400 +1401 +1402 +1403 +1404 +1405 +1406 +1407 +1408 +1409 +1410 +1411 +1412 +1413 +1414 +1415 +1416 +1417 +1418 +1419 +1420 +1421 +1422 +1423 +1424 +1425 +1426 +1427 +1428 +1429 +1430 +1431 +1432 +1433 +1434 +1435 +1436 +1437 +1438 +1439 +1440 +1441 +1442 +1443 +1444 +1445 +1446 +1447 +1448 +1449 +1450 +1451 +1452 +1453 +1454 +1455 +1456 +1457 +1458 +1459 +1460 +1461 +1462 +1463 +1464 +1465 +1466 +1467 +1468 +1469 +1470 +1471 +1472 +1473 +1474 +1475 +1476 +1477 +1478 +1479 +1480 +1481 +1482 +1483 +1484 +1485 +1486 +1487 +1488 +1489 +1490 +1491 +1492 +1493 +1494 +1495 +1496 +1497 +1498 +1499 +1500 +1501 +1502 +1503 +1504 +1505 +1506 +1507 +1508 +1509 +1510 +1511 +1512 +1513 +1514 +1515 +1516 +1517 +1518 +1519 +1520 +1521 +1522 +1523 +1524 +1525 +1526 +1527 +1528 +1529 +1530 +1531 +1532 +1533 +1534 +1535 +1536 +1537 +1538 +1539 +1540 +1541 +1542 +1543 +1544 +1545 +1546 +1547 +1548 +1549 +1550 +1551 +1552 +1553 +1554 +1555 +1556 +1557 +1558 +1559 +1560 +1561 +1562 +1563 +1564 +1565 +1566 +1567 +1568 +1569 +1570 +1571 +1572 +1573 +1574 +1575 +1576 +1577 +1578 +1579 +1580 +1581 +1582 +1583 +1584 +1585 +1586 +1587 +1588 +1589 +1590 +1591 +1592 +1593 +1594 +1595 +1596 +1597 +1598 +1599 +1600 +1601 +1602 +1603 +1604 +1605 +1606 +1607 +1608 +1609 +1610 +1611 +1612 +1613 +1614 +1615 +1616 +1617 +1618 +1619 +1620 +1621 +1622 +1623 +1624 +1625 +1626 +1627 +1628 +1629 +1630 +1631 +1632 +1633 +1634 +1635 +1636 +1637 +1638 +1639 +1640 +1641 +1642 +1643 +1644 +1645 +1646 +1647 +1648 +1649 +1650 +1651 +1652 +1653 +1654 +1655 +1656 +1657 +1658 +1659 +1660 +1661 +1662 +1663 +1664 +1665 +1666 +1667 +1668 +1669 +1670 +1671 +1672 +1673 +1674 +1675 +1676 +1677 +1678 +1679 +1680 +1681 +1682 +1683 +1684 +1685 +1686 +1687 +1688 +1689 +1690 +1691 +1692 +1693 +1694 +1695 +1696 +1697 +1698 +1699 +1700 +1701 +1702 +1703 +1704 +1705 +1706 +1707 +1708 +1709 +1710 +1711 +1712 +1713 +1714 +1715 +1716 +1717 +1718 +1719 +1720 +1721 +1722 +1723 +1724 +1725 +1726 +1727 +1728 +1729 +1730 +1731 +1732 +1733 +1734 +1735 +1736 +1737 +1738 +1739 +1740 +1741 +1742 +1743 +1744 +1745 +1746 +1747 +1748 +1749 +1750 +1751 +1752 +1753 +1754 +1755 +1756 +1757 +1758 +1759 +1760 +1761 +1762 +1763 +1764 +1765 +1766 +1767 +1768 +1769 +1770 +1771 +1772 +1773 +1774 +1775 +1776 +1777 +1778 +1779 +1780 +1781 +1782 +1783 +1784 +1785 +1786 +1787 +1788 +1789 +1790 +1791 +1792 +1793 +1794 +1795 +1796 +1797 +1798 +1799 +1800 +1801 +1802 +1803 +1804 +1805 +1806 +1807 +1808 +1809 +1810 +1811 +1812 +1813 +1814 +1815 +1816 +1817 +1818 +1819 +1820 +1821 +1822 +1823 +1824 +1825 +1826 +1827 +1828 +1829 +1830 +1831 +1832 +1833 +1834 +1835 +1836 +1837 +1838 +1839 +1840 +1841 +1842 +1843 +1844 +1845 +1846 +1847 +1848 +1849 +1850 +1851 +1852 +1853 +1854 +1855 +1856 +1857 +1858 +1859 +1860 +1861 +1862 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +1880 +1881 +1882 +1883 +1884 +1885 +1886 +1887 +1888 +1889 +1890 +1891 +1892 +1893 +1894 +1895 +1896 +1897 +1898 +1899 +1900 +1901 +1902 +1903 +1904 +1905 +1906 +1907 +1908 +1909 +1910 +1911 +1912 +1913 +1914 +1915 +1916 +1917 +1918 +1919 +1920 +1921 +1922 +1923 +1924 +1925 +1926 +1927 +1928 +1929 +1930 +1931 +1932 +1933 +1934 +1935 +1936 +1937 +1938 +1939 +1940 +1941 +1942 +1943 +1944 +1945 +1946 +1947 +1948 +1949 +1950 +1951 +1952 +1953 +1954 +1955 +1956 +1957 +1958 +1959 +1960 +1961 +1962 +1963 +1964 +1965 +1966 +1967 +1968 +1969 +1970 +1971 +1972 +1973 +1974 +1975 +1976 +1977 +1978 +1979 +1980 +1981 +1982 +1983 +1984 +1985 +1986 +1987 +1988 +1989 +1990 +1991 +1992 +1993 +1994 +1995 +1996 +1997 +1998 +1999 +2000 +2001 +2002 +2003 +2004 +2005 +2006 +2007 +2008 +2009 +2010 +2011 +2012 +2013 +2014 +2015 +2016 +2017 +2018 +2019 +2020 +2021 +2022 +2023 +2024 +2025 +2026 +2027 +2028 +2029 +2030 +2031 +2032 +2033 +2034 +2035 +2036 +2037 +2038 +2039 +2040 +2041 +2042 +2043 +2044 +2045 +2046 +2047 +2048 +2049 +2050 +2051 +2052 +2053 +2054 +2055 +2056 +2057 +2058 +2059 +2060 +2061 +2062 +2063 +2064 +2065 +2066 +2067 +2068 +2069 +2070 +2071 +2072 +2073 +2074 +2075 +2076 +2077 +2078 +2079 +2080 +2081 +2082 +2083 +2084 +2085 +2086 +2087 +2088 +2089 +2090 +2091 +2092 +2093 +2094 +2095 +2096 +2097 +2098 +2099 +2100 +2101 +2102 +2103 +2104 +2105 +2106 +2107 +2108 +2109 +2110 +2111 +2112 +2113 +2114 +2115 +2116 +2117 +2118 +2119 +2120 +2121 +2122 +2123 +2124 +2125 +2126 +2127 +2128 +2129 +2130 +2131 +2132 +2133 +2134 +2135 +2136 +2137 +2138 +2139 +2140 +2141 +2142 +2143 +2144 +2145 +2146 +2147 +2148 +2149 +2150 +2151 +2152 +2153 +2154 +2155 +2156 +2157 +2158 +2159 +2160 +2161 +2162 +2163 +2164 +2165 +2166 +2167 +2168 +2169 +2170 +2171 +2172 +2173 +2174 +2175 +2176 +2177 +2178 +2179 +2180 +2181 +2182 +2183 +2184 +2185 +2186 +2187 +2188 +2189 +2190 +2191 +2192 +2193 +2194 +2195 +2196 +2197 +2198 +2199 +2200 +2201 +2202 +2203 +2204 +2205 +2206 +2207 +2208 +2209 +2210 +2211 +2212 +2213 +2214 +2215 +2216 +2217 +2218 +2219 +2220 +2221 +2222 +2223 +2224 +2225 +2226 +2227 +2228 +2229 +2230 +2231 +2232 +2233 +2234 +2235 +2236 +2237 +2238 +2239 +2240 +2241 +2242 +2243 +2244 +2245 +2246 +2247 +2248 +2249 +2250 +2251 +2252 +2253 +2254 +2255 +2256 +2257 +2258 +2259 +2260 +2261 +2262 +2263 +2264 +2265 +2266 +2267 +2268 +2269 +2270 +2271 +2272 +2273 +2274 +2275 +2276 +2277 +2278 +2279 +2280 +2281 +2282 +2283 +2284 +2285 +2286 +2287 +2288 +2289 +2290 +2291 +2292 +2293 +2294 +2295 +2296 +2297 +2298 +2299 +2300 +2301 +2302 +2303 +2304 +2305 +2306 +2307 +2308 +2309 +2310 +2311 +2312 +2313 +2314 +2315 +2316 +2317 +2318 +2319 +2320 +2321 +2322 +2323 +2324 +2325 +2326 +2327 +2328 +2329 +2330 +2331 +2332 +2333 +2334 +2335 +2336 +2337 +2338 +2339 +2340 +2341 +2342 +2343 +2344 +2345 +2346 +2347 +2348 +2349 +2350 +2351 +2352 +2353 +2354 +2355 +2356 +2357 +2358 +2359 +2360 +2361 +2362 +2363 +2364 +2365 +2366 +2367 +2368 +2369 +2370 +2371 +2372 +2373 +2374 +2375 +2376 +2377 +2378 +2379 +2380 +2381 +2382 +2383 +2384 +2385 +2386 +2387 +2388 +2389 +2390 +2391 +2392 +2393 +2394 +2395 +2396 +2397 +2398 +2399 +2400 +2401 +2402 +2403 +2404 +2405 +2406 +2407 +2408 +2409 +2410 +2411 +2412 +2413 +2414 +2415 +2416 +2417 +2418 +2419 +2420 +2421 +2422 +2423 +2424 +2425 +2426 +2427 +2428 +2429 +2430 +2431 +2432 +2433 +2434 +2435 +2436 +2437 +2438 +2439 +2440 +2441 +2442 +2443 +2444 +2445 +2446 +2447 +2448 +2449 +2450 +2451 +2452 +2453 +2454 +2455 +2456 +2457 +2458 +2459 +2460 +2461 +2462 +2463 +2464 +2465 +2466 +2467 +2468 +2469 +2470 +2471 +2472 +2473 +2474 +2475 +2476 +2477 +2478 +2479 +2480 +2481 +2482 +2483 +2484 +2485 +2486 +2487 +2488 +2489 +2490 +2491 +2492 +2493 +2494 +2495 +2496 +2497 +2498 +2499 +2500 +2501 +2502 +2503 +2504 +2505 +2506 +2507 +2508 +2509 +2510 +2511 +2512 +2513 +2514 +2515 +2516 +2517 +2518 +2519 +2520 +2521 +2522 +2523 +2524 +2525 +2526 +2527 +2528 +2529 +2530 +2531 +2532 +2533 +2534 +2535 +2536 +2537 +2538 +2539 +2540 +2541 +2542 +2543 +2544 +2545 +2546 +2547 +2548 +2549 +2550 +2551 +2552 +2553 +2554 +2555 +2556 +2557 +2558 +2559 +2560 +2561 +2562 +2563 +2564 +2565 +2566 +2567 +2568 +2569 +2570 +2571 +2572 +2573 +2574 +2575 +2576 +2577 +2578 +2579 +2580 +2581 +2582 +2583 +2584 +2585 +2586 +2587 +2588 +2589 +2590 +2591 +2592 +2593 +2594 +2595 +2596 +2597 +2598 +2599 +2600 +2601 +2602 +2603 +2604 +2605 +2606 +2607 +2608 +2609 +2610 +2611 +2612 +2613 +2614 +2615 +2616 +2617 +2618 +2619 +2620 +2621 +2622 +2623 +2624 +2625 +2626 +2627 +2628 +2629 +2630 +2631 +2632 +2633 +2634 +2635 +2636 +2637 +2638 +2639 +2640 +2641 +2642 +2643 +2644 +2645 +2646 +2647 +2648 +2649 +2650 +2651 +2652 +2653 +2654 +2655 +2656 +2657 +2658 +2659 +2660 +2661 +2662 +2663 +2664 +2665 +2666 +2667 +2668 +2669 +2670 +2671 +2672 +2673 +2674 +2675 +2676 +2677 +2678 +2679 +2680 +2681 +2682 +2683 +2684 +2685 +2686 +2687 +2688 +2689 +2690 +2691 +2692 +2693 +2694 +2695 +2696 +2697 +2698 +2699 +2700 +2701 +2702 +2703 +2704 +2705 +2706 +2707 +2708 +2709 +2710 +2711 +2712 +2713 +2714 +2715 +2716 +2717 +2718 +2719 +2720 +2721 +2722 +2723 +2724 +2725 +2726 +2727 +2728 +2729 +2730 +2731 +2732 +2733 +2734 +2735 +2736 +2737 +2738 +2739 +2740 +2741 +2742 +2743 +2744 +2745 +2746 +2747 +2748 +2749 +2750 +2751 +2752 +2753 +2754 +2755 +2756 +2757 +2758 +2759 +2760 +2761 +2762 +2763 +2764 +2765 +2766 +2767 +2768 +2769 +2770 +2771 +2772 +2773 +2774 +2775 +2776 +2777 +2778 +2779 +2780 +2781 +2782 +2783 +2784 +2785 +2786 +2787 +2788 +2789 +2790 +2791 +2792 +2793 +2794 +2795 +2796 +2797 +2798 +2799 +2800 +2801 +2802 +2803 +2804 +2805 +2806 +2807 +2808 +2809 +2810 +2811 +2812 +2813 +2814 +2815 +2816 +2817 +2818 +2819 +2820 +2821 +2822 +2823 +2824 +2825 +2826 +2827 +2828 +2829 +2830 +2831 +2832 +2833 +2834 +2835 +2836 +2837 +2838 +2839 +2840 +2841 +2842 +2843 +2844 +2845 +2846 +2847 +2848 +2849 +2850 +2851 +2852 +2853 +2854 +2855 +2856 +2857 +2858 +2859 +2860 +2861 +2862 +2863 +2864 +2865 +2866 +2867 +2868 +2869 +2870 +2871 +2872 +2873 +2874 +2875 +2876 +2877 +2878 +2879 +2880 +2881 +2882 +2883 +2884 +2885 +2886 +2887 +2888 +2889 +2890 +2891 +2892 +2893 +2894 +2895 +2896 +2897 +2898 +2899 +2900 +2901 +2902 +2903 +2904 +2905 +2906 +2907 +2908 +2909 +2910 +2911 +2912 +2913 +2914 +2915 +2916 +2917 +2918 +2919 +2920 +2921 +2922 +2923 +2924 +2925 +2926 +2927 +2928 +2929 +2930 +2931 +2932 +2933 +2934 +2935 +2936 +2937 +2938 +2939 +2940 +2941 +2942 +2943 +2944 +2945 +2946 +2947 +2948 +2949 +2950 +2951 +2952 +2953 +2954 +2955 +2956 +2957 +2958 +2959 +2960 +2961 +2962 +2963 +2964 +2965 +2966 +2967 +2968 +2969 +2970 +2971 +2972 +2973 +2974 +2975 +2976 +2977 +2978 +2979 +2980 +2981 +2982 +2983 +2984 +2985 +2986 +2987 +2988 +2989 +2990 +2991 +2992 +2993 +2994 +2995 +2996 +2997 +2998 +2999 +3000 +3001 +3002 +3003 +3004 +3005 +3006 +3007 +3008 +3009 +3010 +3011 +3012 +3013 +3014 +3015 +3016 +3017 +3018 +3019 +3020 +3021 +3022 +3023 +3024 +3025 +3026 +3027 +3028 +3029 +3030 +3031 +3032 +3033 +3034 +3035 +3036 +3037 +3038 +3039 +3040 +3041 +3042 +3043 +3044 +3045 +3046 +3047 +3048 +3049 +3050 +3051 +3052 +3053 +3054 +3055 +3056 +3057 +3058 +3059 +3060 +3061 +3062 +3063 +3064 +3065 +3066 +3067 +3068 +3069 +3070 +3071 +3072 +3073 +3074 +3075 +3076 +3077 +3078 +3079 +3080 +3081 +3082 +3083 +3084 +3085 +3086 +3087 +3088 +3089 +3090 +3091 +3092 +3093 +3094 +3095 +3096 +3097 +3098 +3099 +3100 +3101 +3102 +3103 +3104 +3105 +3106 +3107 +3108 +3109 +3110 +3111 +3112 +3113 +3114 +3115 +3116 +3117 +3118 +3119 +3120 +3121 +3122 +3123 +3124 +3125 +3126 +3127 +3128 +3129 +3130 +3131 +3132 +3133 +3134 +3135 +3136 +3137 +3138 +3139 +3140 +3141 +3142 +3143 +3144 +3145 +3146 +3147 +3148 +3149 +3150 +3151 +3152 +3153 +3154 +3155 +3156 +3157 +3158 +3159 +3160 +3161 +3162 +3163 +3164 +3165 +3166 +3167 +3168 +3169 +3170 +3171 +3172 +3173 +3174 +3175 +3176 +3177 +3178 +3179 +3180 +3181 +3182 +3183 +3184 +3185 +3186 +3187 +3188 +3189 +3190 +3191 +3192 +3193 +3194 +3195 +3196 +3197 +3198 +3199 +3200 +3201 +3202 +3203 +3204 +3205 +3206 +3207 +3208 +3209 +3210 +3211 +3212 +3213 +3214 +3215 +3216 +3217 +3218 +3219 +3220 +3221 +3222 +3223 +3224 +3225 +3226 +3227 +3228 +3229 +3230 +3231 +3232 +3233 +3234 +3235 +3236 +3237 +3238 +3239 +3240 +3241 +3242 +3243 +3244 +3245 +3246 +3247 +3248 +3249 +3250 +3251 +3252 +3253 +3254 +3255 +3256 +3257 +3258 +3259 +3260 +3261 +3262 +3263 +3264 +3265 +3266 +3267 +3268 +3269 +3270 +3271 +3272 +3273 +3274 +3275 +3276 +3277 +3278 +3279 +3280 +3281 +3282 +3283 +3284 +3285 +3286 +3287 +3288 +3289 +3290 +3291 +3292 +3293 +3294 +3295 +3296 +3297 +3298 +3299 +3300 +3301 +3302 +3303 +3304 +3305 +3306 +3307 +3308 +3309 +3310 +3311 +3312 +3313 +3314 +3315 +3316 +3317 +3318 +3319 +3320 +3321 +3322 +3323 +3324 +3325 +3326 +3327 +3328 +3329 +3330 +3331 +3332 +3333 +3334 +3335 +3336 +3337 +3338 +3339 +3340 +3341 +3342 +3343 +3344 +3345 +3346 +3347 +3348 +3349 +3350 +3351 +3352 +3353 +3354 +3355 +3356 +3357 +3358 +3359 +3360 +3361 +3362 +3363 +3364 +3365 +3366 +3367 +3368 +3369 +3370 +3371 +3372 +3373 +3374 +3375 +3376 +3377 +3378 +3379 +3380 +3381 +3382 +3383 +3384 +3385 +3386 +3387 +3388 +3389 +3390 +3391 +3392 +3393 +3394 +3395 +3396 +3397 +3398 +3399 +3400 +3401 +3402 +3403 +3404 +3405 +3406 +3407 +3408 +3409 +3410 +3411 +3412 +3413 +3414 +3415 +3416 +3417 +3418 +3419 +3420 +3421 +3422 +3423 +3424 +3425 +3426 +3427 +3428 +3429 +3430 +3431 +3432 +3433 +3434 +3435 +3436 +3437 +3438 +3439 +3440 +3441 +3442 +3443 +3444 +3445 +3446 +3447 +3448 +3449 +3450 +3451 +3452 +3453 +3454 +3455 +3456 +3457 +3458 +3459 +3460 +3461 +3462 +3463 +3464 +3465 +3466 +3467 +3468 +3469 +3470 +3471 +3472 +3473 +3474 +3475 +3476 +3477 +3478 +3479 +3480 +3481 +3482 +3483 +3484 +3485 +3486 +3487 +3488 +3489 +3490 +3491 +3492 +3493 +3494 +3495 +3496 +3497 +3498 +3499 +3500 +3501 +3502 +3503 +3504 +3505 +3506 +3507 +3508 +3509 +3510 +3511 +3512 +3513 +3514 +3515 +3516 +3517 +3518 +3519 +3520 +3521 +3522 +3523 +3524 +3525 +3526 +3527 +3528 +3529 +3530 +3531 +3532 +3533 +3534 +3535 +3536 +3537 +3538 +3539 +3540 +3541 +3542 +3543 +3544 +3545 +3546 +3547 +3548 +3549 +3550 +3551 +3552 +3553 +3554 +3555 +3556 +3557 +3558 +3559 +3560 +3561 +3562 +3563 +3564 +3565 +3566 +3567 +3568 +3569 +3570 +3571 +3572 +3573 +3574 +3575 +3576 +3577 +3578 +3579 +3580 +3581 +3582 +3583 +3584 +3585 +3586 +3587 +3588 +3589 +3590 +3591 +3592 +3593 +3594 +3595 +3596 +3597 +3598 +3599 +3600 +3601 +3602 +3603 +3604 +3605 +3606 +3607 +3608 +3609 +3610 +3611 +3612 +3613 +3614 +3615 +3616 +3617 +3618 +3619 +3620 +3621 +3622 +3623 +3624 +3625 +3626 +3627 +3628 +3629 +3630 +3631 +3632 +3633 +3634 +3635 +3636 +3637 +3638 +3639 +3640 +3641 +3642 +3643 +3644 +3645 +3646 +3647 +3648 +3649 +3650 +3651 +3652 +3653 +3654 +3655 +3656 +3657 +3658 +3659 +3660 +3661 +3662 +3663 +3664 +3665 +3666 +3667 +3668 +3669 +3670 +3671 +3672 +3673 +3674 +3675 +3676 +3677 +3678 +3679 +3680 +3681 +3682 +3683 +3684 +3685 +3686 +3687 +3688 +3689 +3690 +3691 +3692 +3693 +3694 +3695 +3696 +3697 +3698 +3699 +3700 +3701 +3702 +3703 +3704 +3705 +3706 +3707 +3708 +3709 +3710 +3711 +3712 +3713 +3714 +3715 +3716 +3717 +3718 +3719 +3720 +3721 +3722 +3723 +3724 +3725 +3726 +3727 +3728 +3729 +3730 +3731 +3732 +3733 +3734 +3735 +3736 +3737 +3738 +3739 +3740 +3741 +3742 +3743 +3744 +3745 +3746 +3747 +3748 +3749 +3750 +3751 +3752 +3753 +3754 +3755 +3756 +3757 +3758 +3759 +3760 +3761 +3762 +3763 +3764 +3765 +3766 +3767 +3768 +3769 +3770 +3771 +3772 +3773 +3774 +3775 +3776 +3777 +3778 +3779 +3780 +3781 +3782 +3783 +3784 +3785 +3786 +3787 +3788 +3789 +3790 +3791 +3792 +3793 +3794 +3795 +3796 +3797 +3798 +3799 +3800 +3801 +3802 +3803 +3804 +3805 +3806 +3807 +3808 +3809 +3810 +3811 +3812 +3813 +3814 +3815 +3816 +3817 +3818 +3819 +3820 +3821 +3822 +3823 +3824 +3825 +3826 +3827 +3828 +3829 +3830 +3831 +3832 +3833 +3834 +3835 +3836 +3837 +3838 +3839 +3840 +3841 +3842 +3843 +3844 +3845 +3846 +3847 +3848 +3849 +3850 +3851 +3852 +3853 +3854 +3855 +3856 +3857 +3858 +3859 +3860 +3861 +3862 +3863 +3864 +3865 +3866 +3867 +3868 +3869 +3870 +3871 +3872 +3873 +3874 +3875 +3876 +3877 +3878 +3879 +3880 +3881 +3882 +3883 +3884 +3885 +3886 +3887 +3888 +3889 +3890 +3891 +3892 +3893 +3894 +3895 +3896 +3897 +3898 +3899 +3900 +3901 +3902 +3903 +3904 +3905 +3906 +3907 +3908 +3909 +3910 +3911 +3912 +3913 +3914 +3915 +3916 +3917 +3918 +3919 +3920 +3921 +3922 +3923 +3924 +3925 +3926 +3927 +3928 +3929 +3930 +3931 +3932 +3933 +3934 +3935 +3936 +3937 +3938 +3939 +3940 +3941 +3942 +3943 +3944 +3945 +3946 +3947 +3948 +3949 +3950 +3951 +3952 +3953 +3954 +3955 +3956 +3957 +3958 +3959 +3960 +3961 +3962 +3963 +3964 +3965 +3966 +3967 +3968 +3969 +3970 +3971 +3972 +3973 +3974 +3975 +3976 +3977 +3978 +3979 +3980 +3981 +3982 +3983 +3984 +3985 +3986 +3987 +3988 +3989 +3990 +3991 +3992 +3993 +3994 +3995 +3996 +3997 +3998 +3999 +4000 +4001 +4002 +4003 +4004 +4005 +4006 +4007 +4008 +4009 +4010 +4011 +4012 +4013 +4014 +4015 +4016 +4017 +4018 +4019 +4020 +4021 +4022 +4023 +4024 +4025 +4026 +4027 +4028 +4029 +4030 +4031 +4032 +4033 +4034 +4035 +4036 +4037 +4038 +4039 +4040 +4041 +4042 +4043 +4044 +4045 +4046 +4047 +4048 +4049 +4050 +4051 +4052 +4053 +4054 +4055 +4056 +4057 +4058 +4059 +4060 +4061 +4062 +4063 +4064 +4065 +4066 +4067 +4068 +4069 +4070 +4071 +4072 +4073 +4074 +4075 +4076 +4077 +4078 +4079 +4080 +4081 +4082 +4083 +4084 +4085 +4086 +4087 +4088 +4089 +4090 +4091 +4092 +4093 +4094 +4095 +4096 +4097 +4098 +4099 +4100 +4101 +4102 +4103 +4104 +4105 +4106 +4107 +4108 +4109 +4110 +4111 +4112 +4113 +4114 +4115 +4116 +4117 +4118 +4119 +4120 +4121 +4122 +4123 +4124 +4125 +4126 +4127 +4128 +4129 +4130 +4131 +4132 +4133 +4134 +4135 +4136 +4137 +4138 +4139 +4140 +4141 +4142 +4143 +4144 +4145 +4146 +4147 +4148 +4149 +4150 +4151 +4152 +4153 +4154 +4155 +4156 +4157 +4158 +4159 +4160 +4161 +4162 +4163 +4164 +4165 +4166 +4167 +4168 +4169 +4170 +
/*
+ * Created using https://github.com/a2x/cs2-dumper
+ * Sat, 30 Dec 2023 03:17:26 +0000
+ */
+
+#![allow(non_snake_case, non_upper_case_globals)]
+
+pub mod ActiveModelConfig_t {
+ pub const m_Handle: usize = 0x28; // ModelConfigHandle_t
+ pub const m_Name: usize = 0x30; // CUtlSymbolLarge
+ pub const m_AssociatedEntities: usize = 0x38; // C_NetworkUtlVectorBase<CHandle<C_BaseModelEntity>>
+ pub const m_AssociatedEntityNames: usize = 0x50; // C_NetworkUtlVectorBase<CUtlSymbolLarge>
+}
+
+pub mod CAnimGraphNetworkedVariables {
+ pub const m_PredNetBoolVariables: usize = 0x8; // C_NetworkUtlVectorBase<uint32_t>
+ pub const m_PredNetByteVariables: usize = 0x20; // C_NetworkUtlVectorBase<uint8_t>
+ pub const m_PredNetUInt16Variables: usize = 0x38; // C_NetworkUtlVectorBase<uint16_t>
+ pub const m_PredNetIntVariables: usize = 0x50; // C_NetworkUtlVectorBase<int32_t>
+ pub const m_PredNetUInt32Variables: usize = 0x68; // C_NetworkUtlVectorBase<uint32_t>
+ pub const m_PredNetUInt64Variables: usize = 0x80; // C_NetworkUtlVectorBase<uint64_t>
+ pub const m_PredNetFloatVariables: usize = 0x98; // C_NetworkUtlVectorBase<float>
+ pub const m_PredNetVectorVariables: usize = 0xB0; // C_NetworkUtlVectorBase<Vector>
+ pub const m_PredNetQuaternionVariables: usize = 0xC8; // C_NetworkUtlVectorBase<Quaternion>
+ pub const m_OwnerOnlyPredNetBoolVariables: usize = 0xE0; // C_NetworkUtlVectorBase<uint32_t>
+ pub const m_OwnerOnlyPredNetByteVariables: usize = 0xF8; // C_NetworkUtlVectorBase<uint8_t>
+ pub const m_OwnerOnlyPredNetUInt16Variables: usize = 0x110; // C_NetworkUtlVectorBase<uint16_t>
+ pub const m_OwnerOnlyPredNetIntVariables: usize = 0x128; // C_NetworkUtlVectorBase<int32_t>
+ pub const m_OwnerOnlyPredNetUInt32Variables: usize = 0x140; // C_NetworkUtlVectorBase<uint32_t>
+ pub const m_OwnerOnlyPredNetUInt64Variables: usize = 0x158; // C_NetworkUtlVectorBase<uint64_t>
+ pub const m_OwnerOnlyPredNetFloatVariables: usize = 0x170; // C_NetworkUtlVectorBase<float>
+ pub const m_OwnerOnlyPredNetVectorVariables: usize = 0x188; // C_NetworkUtlVectorBase<Vector>
+ pub const m_OwnerOnlyPredNetQuaternionVariables: usize = 0x1A0; // C_NetworkUtlVectorBase<Quaternion>
+ pub const m_nBoolVariablesCount: usize = 0x1B8; // int32_t
+ pub const m_nOwnerOnlyBoolVariablesCount: usize = 0x1BC; // int32_t
+ pub const m_nRandomSeedOffset: usize = 0x1C0; // int32_t
+ pub const m_flLastTeleportTime: usize = 0x1C4; // float
+}
+
+pub mod CAttributeList {
+ pub const m_Attributes: usize = 0x8; // C_UtlVectorEmbeddedNetworkVar<CEconItemAttribute>
+ pub const m_pManager: usize = 0x58; // CAttributeManager*
+}
+
+pub mod CAttributeManager {
+ pub const m_Providers: usize = 0x8; // CUtlVector<CHandle<C_BaseEntity>>
+ pub const m_iReapplyProvisionParity: usize = 0x20; // int32_t
+ pub const m_hOuter: usize = 0x24; // CHandle<C_BaseEntity>
+ pub const m_bPreventLoopback: usize = 0x28; // bool
+ pub const m_ProviderType: usize = 0x2C; // attributeprovidertypes_t
+ pub const m_CachedResults: usize = 0x30; // CUtlVector<CAttributeManager::cached_attribute_float_t>
+}
+
+pub mod CAttributeManager_cached_attribute_float_t {
+ pub const flIn: usize = 0x0; // float
+ pub const iAttribHook: usize = 0x8; // CUtlSymbolLarge
+ pub const flOut: usize = 0x10; // float
+}
+
+pub mod CBaseAnimGraph { // C_BaseModelEntity
+ pub const m_bInitiallyPopulateInterpHistory: usize = 0xCC0; // bool
+ pub const m_bShouldAnimateDuringGameplayPause: usize = 0xCC1; // bool
+ pub const m_bSuppressAnimEventSounds: usize = 0xCC3; // bool
+ pub const m_bAnimGraphUpdateEnabled: usize = 0xCD0; // bool
+ pub const m_flMaxSlopeDistance: usize = 0xCD4; // float
+ pub const m_vLastSlopeCheckPos: usize = 0xCD8; // Vector
+ pub const m_vecForce: usize = 0xCE8; // Vector
+ pub const m_nForceBone: usize = 0xCF4; // int32_t
+ pub const m_pClientsideRagdoll: usize = 0xCF8; // CBaseAnimGraph*
+ pub const m_bBuiltRagdoll: usize = 0xD00; // bool
+ pub const m_pRagdollPose: usize = 0xD18; // PhysicsRagdollPose_t*
+ pub const m_bClientRagdoll: usize = 0xD20; // bool
+ pub const m_bHasAnimatedMaterialAttributes: usize = 0xD30; // bool
+}
+
+pub mod CBaseAnimGraphController { // CSkeletonAnimationController
+ pub const m_baseLayer: usize = 0x18; // CNetworkedSequenceOperation
+ pub const m_animGraphNetworkedVars: usize = 0x40; // CAnimGraphNetworkedVariables
+ pub const m_bSequenceFinished: usize = 0x1320; // bool
+ pub const m_flLastEventCycle: usize = 0x1324; // float
+ pub const m_flLastEventAnimTime: usize = 0x1328; // float
+ pub const m_flPlaybackRate: usize = 0x132C; // CNetworkedQuantizedFloat
+ pub const m_flPrevAnimTime: usize = 0x1334; // float
+ pub const m_bClientSideAnimation: usize = 0x1338; // bool
+ pub const m_bNetworkedAnimationInputsChanged: usize = 0x1339; // bool
+ pub const m_nPrevNewSequenceParity: usize = 0x133A; // uint8_t
+ pub const m_nPrevResetEventsParity: usize = 0x133B; // uint8_t
+ pub const m_nNewSequenceParity: usize = 0x133C; // int32_t
+ pub const m_nResetEventsParity: usize = 0x1340; // int32_t
+ pub const m_nAnimLoopMode: usize = 0x1344; // AnimLoopMode_t
+ pub const m_hAnimationUpdate: usize = 0x13E4; // AnimationUpdateListHandle_t
+ pub const m_hLastAnimEventSequence: usize = 0x13E8; // HSequence
+}
+
+pub mod CBasePlayerController { // C_BaseEntity
+ pub const m_nFinalPredictedTick: usize = 0x548; // int32_t
+ pub const m_CommandContext: usize = 0x550; // C_CommandContext
+ pub const m_nInButtonsWhichAreToggles: usize = 0x600; // uint64_t
+ pub const m_nTickBase: usize = 0x608; // uint32_t
+ pub const m_hPawn: usize = 0x60C; // CHandle<C_BasePlayerPawn>
+ pub const m_hPredictedPawn: usize = 0x610; // CHandle<C_BasePlayerPawn>
+ pub const m_nSplitScreenSlot: usize = 0x614; // CSplitScreenSlot
+ pub const m_hSplitOwner: usize = 0x618; // CHandle<CBasePlayerController>
+ pub const m_hSplitScreenPlayers: usize = 0x620; // CUtlVector<CHandle<CBasePlayerController>>
+ pub const m_bIsHLTV: usize = 0x638; // bool
+ pub const m_iConnected: usize = 0x63C; // PlayerConnectedState
+ pub const m_iszPlayerName: usize = 0x640; // char[128]
+ pub const m_steamID: usize = 0x6C8; // uint64_t
+ pub const m_bIsLocalPlayerController: usize = 0x6D0; // bool
+ pub const m_iDesiredFOV: usize = 0x6D4; // uint32_t
+}
+
+pub mod CBasePlayerVData { // CEntitySubclassVDataBase
+ pub const m_sModelName: usize = 0x28; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeCModel>>
+ pub const m_flHeadDamageMultiplier: usize = 0x108; // CSkillFloat
+ pub const m_flChestDamageMultiplier: usize = 0x118; // CSkillFloat
+ pub const m_flStomachDamageMultiplier: usize = 0x128; // CSkillFloat
+ pub const m_flArmDamageMultiplier: usize = 0x138; // CSkillFloat
+ pub const m_flLegDamageMultiplier: usize = 0x148; // CSkillFloat
+ pub const m_flHoldBreathTime: usize = 0x158; // float
+ pub const m_flDrowningDamageInterval: usize = 0x15C; // float
+ pub const m_nDrowningDamageInitial: usize = 0x160; // int32_t
+ pub const m_nDrowningDamageMax: usize = 0x164; // int32_t
+ pub const m_nWaterSpeed: usize = 0x168; // int32_t
+ pub const m_flUseRange: usize = 0x16C; // float
+ pub const m_flUseAngleTolerance: usize = 0x170; // float
+ pub const m_flCrouchTime: usize = 0x174; // float
+}
+
+pub mod CBasePlayerWeaponVData { // CEntitySubclassVDataBase
+ pub const m_szWorldModel: usize = 0x28; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeCModel>>
+ pub const m_bBuiltRightHanded: usize = 0x108; // bool
+ pub const m_bAllowFlipping: usize = 0x109; // bool
+ pub const m_bIsFullAuto: usize = 0x10A; // bool
+ pub const m_nNumBullets: usize = 0x10C; // int32_t
+ pub const m_sMuzzleAttachment: usize = 0x110; // CUtlString
+ pub const m_szMuzzleFlashParticle: usize = 0x118; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>>
+ pub const m_iFlags: usize = 0x1F8; // ItemFlagTypes_t
+ pub const m_nPrimaryAmmoType: usize = 0x1F9; // AmmoIndex_t
+ pub const m_nSecondaryAmmoType: usize = 0x1FA; // AmmoIndex_t
+ pub const m_iMaxClip1: usize = 0x1FC; // int32_t
+ pub const m_iMaxClip2: usize = 0x200; // int32_t
+ pub const m_iDefaultClip1: usize = 0x204; // int32_t
+ pub const m_iDefaultClip2: usize = 0x208; // int32_t
+ pub const m_iWeight: usize = 0x20C; // int32_t
+ pub const m_bAutoSwitchTo: usize = 0x210; // bool
+ pub const m_bAutoSwitchFrom: usize = 0x211; // bool
+ pub const m_iRumbleEffect: usize = 0x214; // RumbleEffect_t
+ pub const m_aShootSounds: usize = 0x218; // CUtlMap<WeaponSound_t,CSoundEventName>
+ pub const m_iSlot: usize = 0x238; // int32_t
+ pub const m_iPosition: usize = 0x23C; // int32_t
+}
+
+pub mod CBaseProp { // CBaseAnimGraph
+ pub const m_bModelOverrodeBlockLOS: usize = 0xE80; // bool
+ pub const m_iShapeType: usize = 0xE84; // int32_t
+ pub const m_bConformToCollisionBounds: usize = 0xE88; // bool
+ pub const m_mPreferredCatchTransform: usize = 0xE8C; // matrix3x4_t
+}
+
+pub mod CBodyComponent { // CEntityComponent
+ pub const m_pSceneNode: usize = 0x8; // CGameSceneNode*
+ pub const __m_pChainEntity: usize = 0x20; // CNetworkVarChainer
+}
+
+pub mod CBodyComponentBaseAnimGraph { // CBodyComponentSkeletonInstance
+ pub const m_animationController: usize = 0x480; // CBaseAnimGraphController
+ pub const __m_pChainEntity: usize = 0x18C0; // CNetworkVarChainer
+}
+
+pub mod CBodyComponentBaseModelEntity { // CBodyComponentSkeletonInstance
+ pub const __m_pChainEntity: usize = 0x480; // CNetworkVarChainer
+}
+
+pub mod CBodyComponentPoint { // CBodyComponent
+ pub const m_sceneNode: usize = 0x50; // CGameSceneNode
+ pub const __m_pChainEntity: usize = 0x1A0; // CNetworkVarChainer
+}
+
+pub mod CBodyComponentSkeletonInstance { // CBodyComponent
+ pub const m_skeletonInstance: usize = 0x50; // CSkeletonInstance
+ pub const __m_pChainEntity: usize = 0x450; // CNetworkVarChainer
+}
+
+pub mod CBombTarget { // C_BaseTrigger
+ pub const m_bBombPlantedHere: usize = 0xCC8; // bool
+}
+
+pub mod CBreachCharge { // C_CSWeaponBase
+}
+
+pub mod CBreachChargeProjectile { // C_BaseGrenade
+}
+
+pub mod CBumpMine { // C_CSWeaponBase
+}
+
+pub mod CBumpMineProjectile { // C_BaseGrenade
+}
+
+pub mod CBuoyancyHelper {
+ pub const m_flFluidDensity: usize = 0x18; // float
+}
+
+pub mod CCSGO_WingmanIntroCharacterPosition { // C_CSGO_TeamIntroCharacterPosition
+}
+
+pub mod CCSGO_WingmanIntroCounterTerroristPosition { // CCSGO_WingmanIntroCharacterPosition
+}
+
+pub mod CCSGO_WingmanIntroTerroristPosition { // CCSGO_WingmanIntroCharacterPosition
+}
+
+pub mod CCSGameModeRules {
+ pub const __m_pChainEntity: usize = 0x8; // CNetworkVarChainer
+}
+
+pub mod CCSGameModeRules_Deathmatch { // CCSGameModeRules
+ pub const m_bFirstThink: usize = 0x30; // bool
+ pub const m_bFirstThinkAfterConnected: usize = 0x31; // bool
+ pub const m_flDMBonusStartTime: usize = 0x34; // GameTime_t
+ pub const m_flDMBonusTimeLength: usize = 0x38; // float
+ pub const m_nDMBonusWeaponLoadoutSlot: usize = 0x3C; // int16_t
+}
+
+pub mod CCSGameModeRules_Noop { // CCSGameModeRules
+}
+
+pub mod CCSGameModeRules_Scripted { // CCSGameModeRules
+}
+
+pub mod CCSGameModeScript { // CBasePulseGraphInstance
+}
+
+pub mod CCSObserver_CameraServices { // CCSPlayerBase_CameraServices
+}
+
+pub mod CCSObserver_MovementServices { // CPlayer_MovementServices
+}
+
+pub mod CCSObserver_ObserverServices { // CPlayer_ObserverServices
+ pub const m_hLastObserverTarget: usize = 0x58; // CEntityHandle
+ pub const m_vecObserverInterpolateOffset: usize = 0x5C; // Vector
+ pub const m_vecObserverInterpStartPos: usize = 0x68; // Vector
+ pub const m_flObsInterp_PathLength: usize = 0x74; // float
+ pub const m_qObsInterp_OrientationStart: usize = 0x80; // Quaternion
+ pub const m_qObsInterp_OrientationTravelDir: usize = 0x90; // Quaternion
+ pub const m_obsInterpState: usize = 0xA0; // ObserverInterpState_t
+ pub const m_bObserverInterpolationNeedsDeferredSetup: usize = 0xA4; // bool
+}
+
+pub mod CCSObserver_UseServices { // CPlayer_UseServices
+}
+
+pub mod CCSObserver_ViewModelServices { // CPlayer_ViewModelServices
+}
+
+pub mod CCSPlayerBase_CameraServices { // CPlayer_CameraServices
+ pub const m_iFOV: usize = 0x210; // uint32_t
+ pub const m_iFOVStart: usize = 0x214; // uint32_t
+ pub const m_flFOVTime: usize = 0x218; // GameTime_t
+ pub const m_flFOVRate: usize = 0x21C; // float
+ pub const m_hZoomOwner: usize = 0x220; // CHandle<C_BaseEntity>
+ pub const m_flLastShotFOV: usize = 0x224; // float
+}
+
+pub mod CCSPlayerController { // CBasePlayerController
+ pub const m_pInGameMoneyServices: usize = 0x700; // CCSPlayerController_InGameMoneyServices*
+ pub const m_pInventoryServices: usize = 0x708; // CCSPlayerController_InventoryServices*
+ pub const m_pActionTrackingServices: usize = 0x710; // CCSPlayerController_ActionTrackingServices*
+ pub const m_pDamageServices: usize = 0x718; // CCSPlayerController_DamageServices*
+ pub const m_iPing: usize = 0x720; // uint32_t
+ pub const m_bHasCommunicationAbuseMute: usize = 0x724; // bool
+ pub const m_szCrosshairCodes: usize = 0x728; // CUtlSymbolLarge
+ pub const m_iPendingTeamNum: usize = 0x730; // uint8_t
+ pub const m_flForceTeamTime: usize = 0x734; // GameTime_t
+ pub const m_iCompTeammateColor: usize = 0x738; // int32_t
+ pub const m_bEverPlayedOnTeam: usize = 0x73C; // bool
+ pub const m_flPreviousForceJoinTeamTime: usize = 0x740; // GameTime_t
+ pub const m_szClan: usize = 0x748; // CUtlSymbolLarge
+ pub const m_sSanitizedPlayerName: usize = 0x750; // CUtlString
+ pub const m_iCoachingTeam: usize = 0x758; // int32_t
+ pub const m_nPlayerDominated: usize = 0x760; // uint64_t
+ pub const m_nPlayerDominatingMe: usize = 0x768; // uint64_t
+ pub const m_iCompetitiveRanking: usize = 0x770; // int32_t
+ pub const m_iCompetitiveWins: usize = 0x774; // int32_t
+ pub const m_iCompetitiveRankType: usize = 0x778; // int8_t
+ pub const m_iCompetitiveRankingPredicted_Win: usize = 0x77C; // int32_t
+ pub const m_iCompetitiveRankingPredicted_Loss: usize = 0x780; // int32_t
+ pub const m_iCompetitiveRankingPredicted_Tie: usize = 0x784; // int32_t
+ pub const m_nEndMatchNextMapVote: usize = 0x788; // int32_t
+ pub const m_unActiveQuestId: usize = 0x78C; // uint16_t
+ pub const m_nQuestProgressReason: usize = 0x790; // QuestProgress::Reason
+ pub const m_unPlayerTvControlFlags: usize = 0x794; // uint32_t
+ pub const m_iDraftIndex: usize = 0x7C0; // int32_t
+ pub const m_msQueuedModeDisconnectionTimestamp: usize = 0x7C4; // uint32_t
+ pub const m_uiAbandonRecordedReason: usize = 0x7C8; // uint32_t
+ pub const m_bCannotBeKicked: usize = 0x7CC; // bool
+ pub const m_bEverFullyConnected: usize = 0x7CD; // bool
+ pub const m_bAbandonAllowsSurrender: usize = 0x7CE; // bool
+ pub const m_bAbandonOffersInstantSurrender: usize = 0x7CF; // bool
+ pub const m_bDisconnection1MinWarningPrinted: usize = 0x7D0; // bool
+ pub const m_bScoreReported: usize = 0x7D1; // bool
+ pub const m_nDisconnectionTick: usize = 0x7D4; // int32_t
+ pub const m_bControllingBot: usize = 0x7E0; // bool
+ pub const m_bHasControlledBotThisRound: usize = 0x7E1; // bool
+ pub const m_bHasBeenControlledByPlayerThisRound: usize = 0x7E2; // bool
+ pub const m_nBotsControlledThisRound: usize = 0x7E4; // int32_t
+ pub const m_bCanControlObservedBot: usize = 0x7E8; // bool
+ pub const m_hPlayerPawn: usize = 0x7EC; // CHandle<C_CSPlayerPawn>
+ pub const m_hObserverPawn: usize = 0x7F0; // CHandle<C_CSObserverPawn>
+ pub const m_bPawnIsAlive: usize = 0x7F4; // bool
+ pub const m_iPawnHealth: usize = 0x7F8; // uint32_t
+ pub const m_iPawnArmor: usize = 0x7FC; // int32_t
+ pub const m_bPawnHasDefuser: usize = 0x800; // bool
+ pub const m_bPawnHasHelmet: usize = 0x801; // bool
+ pub const m_nPawnCharacterDefIndex: usize = 0x802; // uint16_t
+ pub const m_iPawnLifetimeStart: usize = 0x804; // int32_t
+ pub const m_iPawnLifetimeEnd: usize = 0x808; // int32_t
+ pub const m_iPawnBotDifficulty: usize = 0x80C; // int32_t
+ pub const m_hOriginalControllerOfCurrentPawn: usize = 0x810; // CHandle<CCSPlayerController>
+ pub const m_iScore: usize = 0x814; // int32_t
+ pub const m_vecKills: usize = 0x818; // C_NetworkUtlVectorBase<EKillTypes_t>
+ pub const m_iMVPs: usize = 0x830; // int32_t
+ pub const m_bIsPlayerNameDirty: usize = 0x834; // bool
+}
+
+pub mod CCSPlayerController_ActionTrackingServices { // CPlayerControllerComponent
+ pub const m_perRoundStats: usize = 0x40; // C_UtlVectorEmbeddedNetworkVar<CSPerRoundStats_t>
+ pub const m_matchStats: usize = 0x90; // CSMatchStats_t
+ pub const m_iNumRoundKills: usize = 0x108; // int32_t
+ pub const m_iNumRoundKillsHeadshots: usize = 0x10C; // int32_t
+ pub const m_unTotalRoundDamageDealt: usize = 0x110; // uint32_t
+}
+
+pub mod CCSPlayerController_DamageServices { // CPlayerControllerComponent
+ pub const m_nSendUpdate: usize = 0x40; // int32_t
+ pub const m_DamageList: usize = 0x48; // C_UtlVectorEmbeddedNetworkVar<CDamageRecord>
+}
+
+pub mod CCSPlayerController_InGameMoneyServices { // CPlayerControllerComponent
+ pub const m_iAccount: usize = 0x40; // int32_t
+ pub const m_iStartAccount: usize = 0x44; // int32_t
+ pub const m_iTotalCashSpent: usize = 0x48; // int32_t
+ pub const m_iCashSpentThisRound: usize = 0x4C; // int32_t
+ pub const m_nPreviousAccount: usize = 0x50; // int32_t
+}
+
+pub mod CCSPlayerController_InventoryServices { // CPlayerControllerComponent
+ pub const m_unMusicID: usize = 0x40; // uint16_t
+ pub const m_rank: usize = 0x44; // MedalRank_t[6]
+ pub const m_nPersonaDataPublicLevel: usize = 0x5C; // int32_t
+ pub const m_nPersonaDataPublicCommendsLeader: usize = 0x60; // int32_t
+ pub const m_nPersonaDataPublicCommendsTeacher: usize = 0x64; // int32_t
+ pub const m_nPersonaDataPublicCommendsFriendly: usize = 0x68; // int32_t
+ pub const m_vecServerAuthoritativeWeaponSlots: usize = 0x70; // C_UtlVectorEmbeddedNetworkVar<ServerAuthoritativeWeaponSlot_t>
+}
+
+pub mod CCSPlayer_ActionTrackingServices { // CPlayerPawnComponent
+ pub const m_hLastWeaponBeforeC4AutoSwitch: usize = 0x40; // CHandle<C_BasePlayerWeapon>
+ pub const m_bIsRescuing: usize = 0x44; // bool
+ pub const m_weaponPurchasesThisMatch: usize = 0x48; // WeaponPurchaseTracker_t
+ pub const m_weaponPurchasesThisRound: usize = 0xA0; // WeaponPurchaseTracker_t
+}
+
+pub mod CCSPlayer_BulletServices { // CPlayerPawnComponent
+ pub const m_totalHitsOnServer: usize = 0x40; // int32_t
+}
+
+pub mod CCSPlayer_BuyServices { // CPlayerPawnComponent
+ pub const m_vecSellbackPurchaseEntries: usize = 0x40; // C_UtlVectorEmbeddedNetworkVar<SellbackPurchaseEntry_t>
+}
+
+pub mod CCSPlayer_CameraServices { // CCSPlayerBase_CameraServices
+ pub const m_flDeathCamTilt: usize = 0x228; // float
+}
+
+pub mod CCSPlayer_GlowServices { // CPlayerPawnComponent
+}
+
+pub mod CCSPlayer_HostageServices { // CPlayerPawnComponent
+ pub const m_hCarriedHostage: usize = 0x40; // CHandle<C_BaseEntity>
+ pub const m_hCarriedHostageProp: usize = 0x44; // CHandle<C_BaseEntity>
+}
+
+pub mod CCSPlayer_ItemServices { // CPlayer_ItemServices
+ pub const m_bHasDefuser: usize = 0x40; // bool
+ pub const m_bHasHelmet: usize = 0x41; // bool
+ pub const m_bHasHeavyArmor: usize = 0x42; // bool
+}
+
+pub mod CCSPlayer_MovementServices { // CPlayer_MovementServices_Humanoid
+ pub const m_flMaxFallVelocity: usize = 0x210; // float
+ pub const m_vecLadderNormal: usize = 0x214; // Vector
+ pub const m_nLadderSurfacePropIndex: usize = 0x220; // int32_t
+ pub const m_flDuckAmount: usize = 0x224; // float
+ pub const m_flDuckSpeed: usize = 0x228; // float
+ pub const m_bDuckOverride: usize = 0x22C; // bool
+ pub const m_bDesiresDuck: usize = 0x22D; // bool
+ pub const m_flDuckOffset: usize = 0x230; // float
+ pub const m_nDuckTimeMsecs: usize = 0x234; // uint32_t
+ pub const m_nDuckJumpTimeMsecs: usize = 0x238; // uint32_t
+ pub const m_nJumpTimeMsecs: usize = 0x23C; // uint32_t
+ pub const m_flLastDuckTime: usize = 0x240; // float
+ pub const m_vecLastPositionAtFullCrouchSpeed: usize = 0x250; // Vector2D
+ pub const m_duckUntilOnGround: usize = 0x258; // bool
+ pub const m_bHasWalkMovedSinceLastJump: usize = 0x259; // bool
+ pub const m_bInStuckTest: usize = 0x25A; // bool
+ pub const m_flStuckCheckTime: usize = 0x268; // float[64][2]
+ pub const m_nTraceCount: usize = 0x468; // int32_t
+ pub const m_StuckLast: usize = 0x46C; // int32_t
+ pub const m_bSpeedCropped: usize = 0x470; // bool
+ pub const m_nOldWaterLevel: usize = 0x474; // int32_t
+ pub const m_flWaterEntryTime: usize = 0x478; // float
+ pub const m_vecForward: usize = 0x47C; // Vector
+ pub const m_vecLeft: usize = 0x488; // Vector
+ pub const m_vecUp: usize = 0x494; // Vector
+ pub const m_vecPreviouslyPredictedOrigin: usize = 0x4A0; // Vector
+ pub const m_bOldJumpPressed: usize = 0x4AC; // bool
+ pub const m_flJumpPressedTime: usize = 0x4B0; // float
+ pub const m_flJumpUntil: usize = 0x4B4; // float
+ pub const m_flJumpVel: usize = 0x4B8; // float
+ pub const m_fStashGrenadeParameterWhen: usize = 0x4BC; // GameTime_t
+ pub const m_nButtonDownMaskPrev: usize = 0x4C0; // uint64_t
+ pub const m_flOffsetTickCompleteTime: usize = 0x4C8; // float
+ pub const m_flOffsetTickStashedSpeed: usize = 0x4CC; // float
+ pub const m_flStamina: usize = 0x4D0; // float
+ pub const m_bUpdatePredictedOriginAfterDataUpdate: usize = 0x4D4; // bool
+ pub const m_flHeightAtJumpStart: usize = 0x4D8; // float
+ pub const m_flMaxJumpHeightThisJump: usize = 0x4DC; // float
+}
+
+pub mod CCSPlayer_PingServices { // CPlayerPawnComponent
+ pub const m_hPlayerPing: usize = 0x40; // CHandle<C_BaseEntity>
+}
+
+pub mod CCSPlayer_UseServices { // CPlayer_UseServices
+}
+
+pub mod CCSPlayer_ViewModelServices { // CPlayer_ViewModelServices
+ pub const m_hViewModel: usize = 0x40; // CHandle<C_BaseViewModel>[3]
+}
+
+pub mod CCSPlayer_WaterServices { // CPlayer_WaterServices
+ pub const m_flWaterJumpTime: usize = 0x40; // float
+ pub const m_vecWaterJumpVel: usize = 0x44; // Vector
+ pub const m_flSwimSoundTime: usize = 0x50; // float
+}
+
+pub mod CCSPlayer_WeaponServices { // CPlayer_WeaponServices
+ pub const m_flNextAttack: usize = 0xC0; // GameTime_t
+ pub const m_bIsLookingAtWeapon: usize = 0xC4; // bool
+ pub const m_bIsHoldingLookAtWeapon: usize = 0xC5; // bool
+}
+
+pub mod CCSWeaponBaseVData { // CBasePlayerWeaponVData
+ pub const m_WeaponType: usize = 0x240; // CSWeaponType
+ pub const m_WeaponCategory: usize = 0x244; // CSWeaponCategory
+ pub const m_szViewModel: usize = 0x248; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeCModel>>
+ pub const m_szPlayerModel: usize = 0x328; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeCModel>>
+ pub const m_szWorldDroppedModel: usize = 0x408; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeCModel>>
+ pub const m_szAimsightLensMaskModel: usize = 0x4E8; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeCModel>>
+ pub const m_szMagazineModel: usize = 0x5C8; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeCModel>>
+ pub const m_szHeatEffect: usize = 0x6A8; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>>
+ pub const m_szEjectBrassEffect: usize = 0x788; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>>
+ pub const m_szMuzzleFlashParticleAlt: usize = 0x868; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>>
+ pub const m_szMuzzleFlashThirdPersonParticle: usize = 0x948; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>>
+ pub const m_szMuzzleFlashThirdPersonParticleAlt: usize = 0xA28; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>>
+ pub const m_szTracerParticle: usize = 0xB08; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>>
+ pub const m_GearSlot: usize = 0xBE8; // gear_slot_t
+ pub const m_GearSlotPosition: usize = 0xBEC; // int32_t
+ pub const m_DefaultLoadoutSlot: usize = 0xBF0; // loadout_slot_t
+ pub const m_sWrongTeamMsg: usize = 0xBF8; // CUtlString
+ pub const m_nPrice: usize = 0xC00; // int32_t
+ pub const m_nKillAward: usize = 0xC04; // int32_t
+ pub const m_nPrimaryReserveAmmoMax: usize = 0xC08; // int32_t
+ pub const m_nSecondaryReserveAmmoMax: usize = 0xC0C; // int32_t
+ pub const m_bMeleeWeapon: usize = 0xC10; // bool
+ pub const m_bHasBurstMode: usize = 0xC11; // bool
+ pub const m_bIsRevolver: usize = 0xC12; // bool
+ pub const m_bCannotShootUnderwater: usize = 0xC13; // bool
+ pub const m_szName: usize = 0xC18; // CUtlString
+ pub const m_szAnimExtension: usize = 0xC20; // CUtlString
+ pub const m_eSilencerType: usize = 0xC28; // CSWeaponSilencerType
+ pub const m_nCrosshairMinDistance: usize = 0xC2C; // int32_t
+ pub const m_nCrosshairDeltaDistance: usize = 0xC30; // int32_t
+ pub const m_flCycleTime: usize = 0xC34; // CFiringModeFloat
+ pub const m_flMaxSpeed: usize = 0xC3C; // CFiringModeFloat
+ pub const m_flSpread: usize = 0xC44; // CFiringModeFloat
+ pub const m_flInaccuracyCrouch: usize = 0xC4C; // CFiringModeFloat
+ pub const m_flInaccuracyStand: usize = 0xC54; // CFiringModeFloat
+ pub const m_flInaccuracyJump: usize = 0xC5C; // CFiringModeFloat
+ pub const m_flInaccuracyLand: usize = 0xC64; // CFiringModeFloat
+ pub const m_flInaccuracyLadder: usize = 0xC6C; // CFiringModeFloat
+ pub const m_flInaccuracyFire: usize = 0xC74; // CFiringModeFloat
+ pub const m_flInaccuracyMove: usize = 0xC7C; // CFiringModeFloat
+ pub const m_flRecoilAngle: usize = 0xC84; // CFiringModeFloat
+ pub const m_flRecoilAngleVariance: usize = 0xC8C; // CFiringModeFloat
+ pub const m_flRecoilMagnitude: usize = 0xC94; // CFiringModeFloat
+ pub const m_flRecoilMagnitudeVariance: usize = 0xC9C; // CFiringModeFloat
+ pub const m_nTracerFrequency: usize = 0xCA4; // CFiringModeInt
+ pub const m_flInaccuracyJumpInitial: usize = 0xCAC; // float
+ pub const m_flInaccuracyJumpApex: usize = 0xCB0; // float
+ pub const m_flInaccuracyReload: usize = 0xCB4; // float
+ pub const m_nRecoilSeed: usize = 0xCB8; // int32_t
+ pub const m_nSpreadSeed: usize = 0xCBC; // int32_t
+ pub const m_flTimeToIdleAfterFire: usize = 0xCC0; // float
+ pub const m_flIdleInterval: usize = 0xCC4; // float
+ pub const m_flAttackMovespeedFactor: usize = 0xCC8; // float
+ pub const m_flHeatPerShot: usize = 0xCCC; // float
+ pub const m_flInaccuracyPitchShift: usize = 0xCD0; // float
+ pub const m_flInaccuracyAltSoundThreshold: usize = 0xCD4; // float
+ pub const m_flBotAudibleRange: usize = 0xCD8; // float
+ pub const m_szUseRadioSubtitle: usize = 0xCE0; // CUtlString
+ pub const m_bUnzoomsAfterShot: usize = 0xCE8; // bool
+ pub const m_bHideViewModelWhenZoomed: usize = 0xCE9; // bool
+ pub const m_nZoomLevels: usize = 0xCEC; // int32_t
+ pub const m_nZoomFOV1: usize = 0xCF0; // int32_t
+ pub const m_nZoomFOV2: usize = 0xCF4; // int32_t
+ pub const m_flZoomTime0: usize = 0xCF8; // float
+ pub const m_flZoomTime1: usize = 0xCFC; // float
+ pub const m_flZoomTime2: usize = 0xD00; // float
+ pub const m_flIronSightPullUpSpeed: usize = 0xD04; // float
+ pub const m_flIronSightPutDownSpeed: usize = 0xD08; // float
+ pub const m_flIronSightFOV: usize = 0xD0C; // float
+ pub const m_flIronSightPivotForward: usize = 0xD10; // float
+ pub const m_flIronSightLooseness: usize = 0xD14; // float
+ pub const m_angPivotAngle: usize = 0xD18; // QAngle
+ pub const m_vecIronSightEyePos: usize = 0xD24; // Vector
+ pub const m_nDamage: usize = 0xD30; // int32_t
+ pub const m_flHeadshotMultiplier: usize = 0xD34; // float
+ pub const m_flArmorRatio: usize = 0xD38; // float
+ pub const m_flPenetration: usize = 0xD3C; // float
+ pub const m_flRange: usize = 0xD40; // float
+ pub const m_flRangeModifier: usize = 0xD44; // float
+ pub const m_flFlinchVelocityModifierLarge: usize = 0xD48; // float
+ pub const m_flFlinchVelocityModifierSmall: usize = 0xD4C; // float
+ pub const m_flRecoveryTimeCrouch: usize = 0xD50; // float
+ pub const m_flRecoveryTimeStand: usize = 0xD54; // float
+ pub const m_flRecoveryTimeCrouchFinal: usize = 0xD58; // float
+ pub const m_flRecoveryTimeStandFinal: usize = 0xD5C; // float
+ pub const m_nRecoveryTransitionStartBullet: usize = 0xD60; // int32_t
+ pub const m_nRecoveryTransitionEndBullet: usize = 0xD64; // int32_t
+ pub const m_flThrowVelocity: usize = 0xD68; // float
+ pub const m_vSmokeColor: usize = 0xD6C; // Vector
+ pub const m_szAnimClass: usize = 0xD78; // CUtlString
+}
+
+pub mod CClientAlphaProperty { // IClientAlphaProperty
+ pub const m_nRenderFX: usize = 0x10; // uint8_t
+ pub const m_nRenderMode: usize = 0x11; // uint8_t
+ pub const m_bAlphaOverride: usize = 0x0; // bitfield:1
+ pub const m_bShadowAlphaOverride: usize = 0x0; // bitfield:1
+ pub const m_nReserved: usize = 0x0; // bitfield:6
+ pub const m_nAlpha: usize = 0x13; // uint8_t
+ pub const m_nDesyncOffset: usize = 0x14; // uint16_t
+ pub const m_nReserved2: usize = 0x16; // uint16_t
+ pub const m_nDistFadeStart: usize = 0x18; // uint16_t
+ pub const m_nDistFadeEnd: usize = 0x1A; // uint16_t
+ pub const m_flFadeScale: usize = 0x1C; // float
+ pub const m_flRenderFxStartTime: usize = 0x20; // GameTime_t
+ pub const m_flRenderFxDuration: usize = 0x24; // float
+}
+
+pub mod CCollisionProperty {
+ pub const m_collisionAttribute: usize = 0x10; // VPhysicsCollisionAttribute_t
+ pub const m_vecMins: usize = 0x40; // Vector
+ pub const m_vecMaxs: usize = 0x4C; // Vector
+ pub const m_usSolidFlags: usize = 0x5A; // uint8_t
+ pub const m_nSolidType: usize = 0x5B; // SolidType_t
+ pub const m_triggerBloat: usize = 0x5C; // uint8_t
+ pub const m_nSurroundType: usize = 0x5D; // SurroundingBoundsType_t
+ pub const m_CollisionGroup: usize = 0x5E; // uint8_t
+ pub const m_nEnablePhysics: usize = 0x5F; // uint8_t
+ pub const m_flBoundingRadius: usize = 0x60; // float
+ pub const m_vecSpecifiedSurroundingMins: usize = 0x64; // Vector
+ pub const m_vecSpecifiedSurroundingMaxs: usize = 0x70; // Vector
+ pub const m_vecSurroundingMaxs: usize = 0x7C; // Vector
+ pub const m_vecSurroundingMins: usize = 0x88; // Vector
+ pub const m_vCapsuleCenter1: usize = 0x94; // Vector
+ pub const m_vCapsuleCenter2: usize = 0xA0; // Vector
+ pub const m_flCapsuleRadius: usize = 0xAC; // float
+}
+
+pub mod CComicBook {
+ pub const m_CoverImage: usize = 0x8; // CPanoramaImageName
+ pub const m_XmlFile: usize = 0x18; // CUtlString
+}
+
+pub mod CCompositeMaterialEditorDoc {
+ pub const m_nVersion: usize = 0x8; // int32_t
+ pub const m_Points: usize = 0x10; // CUtlVector<CompositeMaterialEditorPoint_t>
+ pub const m_KVthumbnail: usize = 0x28; // KeyValues3
+}
+
+pub mod CDamageRecord {
+ pub const m_PlayerDamager: usize = 0x28; // CHandle<C_CSPlayerPawnBase>
+ pub const m_PlayerRecipient: usize = 0x2C; // CHandle<C_CSPlayerPawnBase>
+ pub const m_hPlayerControllerDamager: usize = 0x30; // CHandle<CCSPlayerController>
+ pub const m_hPlayerControllerRecipient: usize = 0x34; // CHandle<CCSPlayerController>
+ pub const m_szPlayerDamagerName: usize = 0x38; // CUtlString
+ pub const m_szPlayerRecipientName: usize = 0x40; // CUtlString
+ pub const m_DamagerXuid: usize = 0x48; // uint64_t
+ pub const m_RecipientXuid: usize = 0x50; // uint64_t
+ pub const m_iDamage: usize = 0x58; // int32_t
+ pub const m_iActualHealthRemoved: usize = 0x5C; // int32_t
+ pub const m_iNumHits: usize = 0x60; // int32_t
+ pub const m_iLastBulletUpdate: usize = 0x64; // int32_t
+ pub const m_bIsOtherEnemy: usize = 0x68; // bool
+ pub const m_killType: usize = 0x69; // EKillTypes_t
+}
+
+pub mod CDecalInfo {
+ pub const m_flAnimationScale: usize = 0x0; // float
+ pub const m_flAnimationLifeSpan: usize = 0x4; // float
+ pub const m_flPlaceTime: usize = 0x8; // float
+ pub const m_flFadeStartTime: usize = 0xC; // float
+ pub const m_flFadeDuration: usize = 0x10; // float
+ pub const m_nVBSlot: usize = 0x14; // int32_t
+ pub const m_nBoneIndex: usize = 0x18; // int32_t
+ pub const m_vPosition: usize = 0x28; // Vector
+ pub const m_flBoundingRadiusSqr: usize = 0x34; // float
+ pub const m_pNext: usize = 0x40; // CDecalInfo*
+ pub const m_pPrev: usize = 0x48; // CDecalInfo*
+ pub const m_nDecalMaterialIndex: usize = 0xA8; // int32_t
+}
+
+pub mod CEconItemAttribute {
+ pub const m_iAttributeDefinitionIndex: usize = 0x30; // uint16_t
+ pub const m_flValue: usize = 0x34; // float
+ pub const m_flInitialValue: usize = 0x38; // float
+ pub const m_nRefundableCurrency: usize = 0x3C; // int32_t
+ pub const m_bSetBonus: usize = 0x40; // bool
+}
+
+pub mod CEffectData {
+ pub const m_vOrigin: usize = 0x8; // Vector
+ pub const m_vStart: usize = 0x14; // Vector
+ pub const m_vNormal: usize = 0x20; // Vector
+ pub const m_vAngles: usize = 0x2C; // QAngle
+ pub const m_hEntity: usize = 0x38; // CEntityHandle
+ pub const m_hOtherEntity: usize = 0x3C; // CEntityHandle
+ pub const m_flScale: usize = 0x40; // float
+ pub const m_flMagnitude: usize = 0x44; // float
+ pub const m_flRadius: usize = 0x48; // float
+ pub const m_nSurfaceProp: usize = 0x4C; // CUtlStringToken
+ pub const m_nEffectIndex: usize = 0x50; // CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>
+ pub const m_nDamageType: usize = 0x58; // uint32_t
+ pub const m_nPenetrate: usize = 0x5C; // uint8_t
+ pub const m_nMaterial: usize = 0x5E; // uint16_t
+ pub const m_nHitBox: usize = 0x60; // uint16_t
+ pub const m_nColor: usize = 0x62; // uint8_t
+ pub const m_fFlags: usize = 0x63; // uint8_t
+ pub const m_nAttachmentIndex: usize = 0x64; // AttachmentHandle_t
+ pub const m_nAttachmentName: usize = 0x68; // CUtlStringToken
+ pub const m_iEffectName: usize = 0x6C; // uint16_t
+ pub const m_nExplosionType: usize = 0x6E; // uint8_t
+}
+
+pub mod CEntityComponent {
+}
+
+pub mod CEntityIdentity {
+ pub const m_nameStringableIndex: usize = 0x14; // int32_t
+ pub const m_name: usize = 0x18; // CUtlSymbolLarge
+ pub const m_designerName: usize = 0x20; // CUtlSymbolLarge
+ pub const m_flags: usize = 0x30; // uint32_t
+ pub const m_worldGroupId: usize = 0x38; // WorldGroupId_t
+ pub const m_fDataObjectTypes: usize = 0x3C; // uint32_t
+ pub const m_PathIndex: usize = 0x40; // ChangeAccessorFieldPathIndex_t
+ pub const m_pPrev: usize = 0x58; // CEntityIdentity*
+ pub const m_pNext: usize = 0x60; // CEntityIdentity*
+ pub const m_pPrevByClass: usize = 0x68; // CEntityIdentity*
+ pub const m_pNextByClass: usize = 0x70; // CEntityIdentity*
+}
+
+pub mod CEntityInstance {
+ pub const m_iszPrivateVScripts: usize = 0x8; // CUtlSymbolLarge
+ pub const m_pEntity: usize = 0x10; // CEntityIdentity*
+ pub const m_CScriptComponent: usize = 0x28; // CScriptComponent*
+}
+
+pub mod CFireOverlay { // CGlowOverlay
+ pub const m_pOwner: usize = 0xD0; // C_FireSmoke*
+ pub const m_vBaseColors: usize = 0xD8; // Vector[4]
+ pub const m_flScale: usize = 0x108; // float
+ pub const m_nGUID: usize = 0x10C; // int32_t
+}
+
+pub mod CFlashlightEffect {
+ pub const m_bIsOn: usize = 0x10; // bool
+ pub const m_bMuzzleFlashEnabled: usize = 0x20; // bool
+ pub const m_flMuzzleFlashBrightness: usize = 0x24; // float
+ pub const m_quatMuzzleFlashOrientation: usize = 0x30; // Quaternion
+ pub const m_vecMuzzleFlashOrigin: usize = 0x40; // Vector
+ pub const m_flFov: usize = 0x4C; // float
+ pub const m_flFarZ: usize = 0x50; // float
+ pub const m_flLinearAtten: usize = 0x54; // float
+ pub const m_bCastsShadows: usize = 0x58; // bool
+ pub const m_flCurrentPullBackDist: usize = 0x5C; // float
+ pub const m_FlashlightTexture: usize = 0x60; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_MuzzleFlashTexture: usize = 0x68; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_textureName: usize = 0x70; // char[64]
+}
+
+pub mod CFuncWater { // C_BaseModelEntity
+ pub const m_BuoyancyHelper: usize = 0xCC0; // CBuoyancyHelper
+}
+
+pub mod CGameSceneNode {
+ pub const m_nodeToWorld: usize = 0x10; // CTransform
+ pub const m_pOwner: usize = 0x30; // CEntityInstance*
+ pub const m_pParent: usize = 0x38; // CGameSceneNode*
+ pub const m_pChild: usize = 0x40; // CGameSceneNode*
+ pub const m_pNextSibling: usize = 0x48; // CGameSceneNode*
+ pub const m_hParent: usize = 0x70; // CGameSceneNodeHandle
+ pub const m_vecOrigin: usize = 0x80; // CNetworkOriginCellCoordQuantizedVector
+ pub const m_angRotation: usize = 0xB8; // QAngle
+ pub const m_flScale: usize = 0xC4; // float
+ pub const m_vecAbsOrigin: usize = 0xC8; // Vector
+ pub const m_angAbsRotation: usize = 0xD4; // QAngle
+ pub const m_flAbsScale: usize = 0xE0; // float
+ pub const m_nParentAttachmentOrBone: usize = 0xE4; // int16_t
+ pub const m_bDebugAbsOriginChanges: usize = 0xE6; // bool
+ pub const m_bDormant: usize = 0xE7; // bool
+ pub const m_bForceParentToBeNetworked: usize = 0xE8; // bool
+ pub const m_bDirtyHierarchy: usize = 0x0; // bitfield:1
+ pub const m_bDirtyBoneMergeInfo: usize = 0x0; // bitfield:1
+ pub const m_bNetworkedPositionChanged: usize = 0x0; // bitfield:1
+ pub const m_bNetworkedAnglesChanged: usize = 0x0; // bitfield:1
+ pub const m_bNetworkedScaleChanged: usize = 0x0; // bitfield:1
+ pub const m_bWillBeCallingPostDataUpdate: usize = 0x0; // bitfield:1
+ pub const m_bNotifyBoneTransformsChanged: usize = 0x0; // bitfield:1
+ pub const m_bBoneMergeFlex: usize = 0x0; // bitfield:1
+ pub const m_nLatchAbsOrigin: usize = 0x0; // bitfield:2
+ pub const m_bDirtyBoneMergeBoneToRoot: usize = 0x0; // bitfield:1
+ pub const m_nHierarchicalDepth: usize = 0xEB; // uint8_t
+ pub const m_nHierarchyType: usize = 0xEC; // uint8_t
+ pub const m_nDoNotSetAnimTimeInInvalidatePhysicsCount: usize = 0xED; // uint8_t
+ pub const m_name: usize = 0xF0; // CUtlStringToken
+ pub const m_hierarchyAttachName: usize = 0x130; // CUtlStringToken
+ pub const m_flZOffset: usize = 0x134; // float
+ pub const m_vRenderOrigin: usize = 0x138; // Vector
+}
+
+pub mod CGameSceneNodeHandle {
+ pub const m_hOwner: usize = 0x8; // CEntityHandle
+ pub const m_name: usize = 0xC; // CUtlStringToken
+}
+
+pub mod CGlobalLightBase {
+ pub const m_bSpotLight: usize = 0x10; // bool
+ pub const m_SpotLightOrigin: usize = 0x14; // Vector
+ pub const m_SpotLightAngles: usize = 0x20; // QAngle
+ pub const m_ShadowDirection: usize = 0x2C; // Vector
+ pub const m_AmbientDirection: usize = 0x38; // Vector
+ pub const m_SpecularDirection: usize = 0x44; // Vector
+ pub const m_InspectorSpecularDirection: usize = 0x50; // Vector
+ pub const m_flSpecularPower: usize = 0x5C; // float
+ pub const m_flSpecularIndependence: usize = 0x60; // float
+ pub const m_SpecularColor: usize = 0x64; // Color
+ pub const m_bStartDisabled: usize = 0x68; // bool
+ pub const m_bEnabled: usize = 0x69; // bool
+ pub const m_LightColor: usize = 0x6A; // Color
+ pub const m_AmbientColor1: usize = 0x6E; // Color
+ pub const m_AmbientColor2: usize = 0x72; // Color
+ pub const m_AmbientColor3: usize = 0x76; // Color
+ pub const m_flSunDistance: usize = 0x7C; // float
+ pub const m_flFOV: usize = 0x80; // float
+ pub const m_flNearZ: usize = 0x84; // float
+ pub const m_flFarZ: usize = 0x88; // float
+ pub const m_bEnableShadows: usize = 0x8C; // bool
+ pub const m_bOldEnableShadows: usize = 0x8D; // bool
+ pub const m_bBackgroundClearNotRequired: usize = 0x8E; // bool
+ pub const m_flCloudScale: usize = 0x90; // float
+ pub const m_flCloud1Speed: usize = 0x94; // float
+ pub const m_flCloud1Direction: usize = 0x98; // float
+ pub const m_flCloud2Speed: usize = 0x9C; // float
+ pub const m_flCloud2Direction: usize = 0xA0; // float
+ pub const m_flAmbientScale1: usize = 0xB0; // float
+ pub const m_flAmbientScale2: usize = 0xB4; // float
+ pub const m_flGroundScale: usize = 0xB8; // float
+ pub const m_flLightScale: usize = 0xBC; // float
+ pub const m_flFoWDarkness: usize = 0xC0; // float
+ pub const m_bEnableSeparateSkyboxFog: usize = 0xC4; // bool
+ pub const m_vFowColor: usize = 0xC8; // Vector
+ pub const m_ViewOrigin: usize = 0xD4; // Vector
+ pub const m_ViewAngles: usize = 0xE0; // QAngle
+ pub const m_flViewFoV: usize = 0xEC; // float
+ pub const m_WorldPoints: usize = 0xF0; // Vector[8]
+ pub const m_vFogOffsetLayer0: usize = 0x4A8; // Vector2D
+ pub const m_vFogOffsetLayer1: usize = 0x4B0; // Vector2D
+ pub const m_hEnvWind: usize = 0x4B8; // CHandle<C_BaseEntity>
+ pub const m_hEnvSky: usize = 0x4BC; // CHandle<C_BaseEntity>
+}
+
+pub mod CGlowOverlay {
+ pub const m_vPos: usize = 0x8; // Vector
+ pub const m_bDirectional: usize = 0x14; // bool
+ pub const m_vDirection: usize = 0x18; // Vector
+ pub const m_bInSky: usize = 0x24; // bool
+ pub const m_skyObstructionScale: usize = 0x28; // float
+ pub const m_Sprites: usize = 0x30; // CGlowSprite[4]
+ pub const m_nSprites: usize = 0xB0; // int32_t
+ pub const m_flProxyRadius: usize = 0xB4; // float
+ pub const m_flHDRColorScale: usize = 0xB8; // float
+ pub const m_flGlowObstructionScale: usize = 0xBC; // float
+ pub const m_bCacheGlowObstruction: usize = 0xC0; // bool
+ pub const m_bCacheSkyObstruction: usize = 0xC1; // bool
+ pub const m_bActivated: usize = 0xC2; // int16_t
+ pub const m_ListIndex: usize = 0xC4; // uint16_t
+ pub const m_queryHandle: usize = 0xC8; // int32_t
+}
+
+pub mod CGlowProperty {
+ pub const m_fGlowColor: usize = 0x8; // Vector
+ pub const m_iGlowType: usize = 0x30; // int32_t
+ pub const m_iGlowTeam: usize = 0x34; // int32_t
+ pub const m_nGlowRange: usize = 0x38; // int32_t
+ pub const m_nGlowRangeMin: usize = 0x3C; // int32_t
+ pub const m_glowColorOverride: usize = 0x40; // Color
+ pub const m_bFlashing: usize = 0x44; // bool
+ pub const m_flGlowTime: usize = 0x48; // float
+ pub const m_flGlowStartTime: usize = 0x4C; // float
+ pub const m_bEligibleForScreenHighlight: usize = 0x50; // bool
+ pub const m_bGlowing: usize = 0x51; // bool
+}
+
+pub mod CGlowSprite {
+ pub const m_vColor: usize = 0x0; // Vector
+ pub const m_flHorzSize: usize = 0xC; // float
+ pub const m_flVertSize: usize = 0x10; // float
+ pub const m_hMaterial: usize = 0x18; // CStrongHandle<InfoForResourceTypeIMaterial2>
+}
+
+pub mod CGrenadeTracer { // C_BaseModelEntity
+ pub const m_flTracerDuration: usize = 0xCE0; // float
+ pub const m_nType: usize = 0xCE4; // GrenadeType_t
+}
+
+pub mod CHitboxComponent { // CEntityComponent
+ pub const m_bvDisabledHitGroups: usize = 0x24; // uint32_t[1]
+}
+
+pub mod CHostageRescueZone { // CHostageRescueZoneShim
+}
+
+pub mod CHostageRescueZoneShim { // C_BaseTrigger
+}
+
+pub mod CInfoDynamicShadowHint { // C_PointEntity
+ pub const m_bDisabled: usize = 0x540; // bool
+ pub const m_flRange: usize = 0x544; // float
+ pub const m_nImportance: usize = 0x548; // int32_t
+ pub const m_nLightChoice: usize = 0x54C; // int32_t
+ pub const m_hLight: usize = 0x550; // CHandle<C_BaseEntity>
+}
+
+pub mod CInfoDynamicShadowHintBox { // CInfoDynamicShadowHint
+ pub const m_vBoxMins: usize = 0x558; // Vector
+ pub const m_vBoxMaxs: usize = 0x564; // Vector
+}
+
+pub mod CInfoOffscreenPanoramaTexture { // C_PointEntity
+ pub const m_bDisabled: usize = 0x540; // bool
+ pub const m_nResolutionX: usize = 0x544; // int32_t
+ pub const m_nResolutionY: usize = 0x548; // int32_t
+ pub const m_szLayoutFileName: usize = 0x550; // CUtlSymbolLarge
+ pub const m_RenderAttrName: usize = 0x558; // CUtlSymbolLarge
+ pub const m_TargetEntities: usize = 0x560; // C_NetworkUtlVectorBase<CHandle<C_BaseModelEntity>>
+ pub const m_nTargetChangeCount: usize = 0x578; // int32_t
+ pub const m_vecCSSClasses: usize = 0x580; // C_NetworkUtlVectorBase<CUtlSymbolLarge>
+ pub const m_bCheckCSSClasses: usize = 0x6F8; // bool
+}
+
+pub mod CInfoParticleTarget { // C_PointEntity
+}
+
+pub mod CInfoTarget { // C_PointEntity
+}
+
+pub mod CInfoWorldLayer { // C_BaseEntity
+ pub const m_pOutputOnEntitiesSpawned: usize = 0x540; // CEntityIOOutput
+ pub const m_worldName: usize = 0x568; // CUtlSymbolLarge
+ pub const m_layerName: usize = 0x570; // CUtlSymbolLarge
+ pub const m_bWorldLayerVisible: usize = 0x578; // bool
+ pub const m_bEntitiesSpawned: usize = 0x579; // bool
+ pub const m_bCreateAsChildSpawnGroup: usize = 0x57A; // bool
+ pub const m_hLayerSpawnGroup: usize = 0x57C; // uint32_t
+ pub const m_bWorldLayerActuallyVisible: usize = 0x580; // bool
+}
+
+pub mod CInterpolatedValue {
+ pub const m_flStartTime: usize = 0x0; // float
+ pub const m_flEndTime: usize = 0x4; // float
+ pub const m_flStartValue: usize = 0x8; // float
+ pub const m_flEndValue: usize = 0xC; // float
+ pub const m_nInterpType: usize = 0x10; // int32_t
+}
+
+pub mod CLightComponent { // CEntityComponent
+ pub const __m_pChainEntity: usize = 0x48; // CNetworkVarChainer
+ pub const m_Color: usize = 0x85; // Color
+ pub const m_SecondaryColor: usize = 0x89; // Color
+ pub const m_flBrightness: usize = 0x90; // float
+ pub const m_flBrightnessScale: usize = 0x94; // float
+ pub const m_flBrightnessMult: usize = 0x98; // float
+ pub const m_flRange: usize = 0x9C; // float
+ pub const m_flFalloff: usize = 0xA0; // float
+ pub const m_flAttenuation0: usize = 0xA4; // float
+ pub const m_flAttenuation1: usize = 0xA8; // float
+ pub const m_flAttenuation2: usize = 0xAC; // float
+ pub const m_flTheta: usize = 0xB0; // float
+ pub const m_flPhi: usize = 0xB4; // float
+ pub const m_hLightCookie: usize = 0xB8; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_nCascades: usize = 0xC0; // int32_t
+ pub const m_nCastShadows: usize = 0xC4; // int32_t
+ pub const m_nShadowWidth: usize = 0xC8; // int32_t
+ pub const m_nShadowHeight: usize = 0xCC; // int32_t
+ pub const m_bRenderDiffuse: usize = 0xD0; // bool
+ pub const m_nRenderSpecular: usize = 0xD4; // int32_t
+ pub const m_bRenderTransmissive: usize = 0xD8; // bool
+ pub const m_flOrthoLightWidth: usize = 0xDC; // float
+ pub const m_flOrthoLightHeight: usize = 0xE0; // float
+ pub const m_nStyle: usize = 0xE4; // int32_t
+ pub const m_Pattern: usize = 0xE8; // CUtlString
+ pub const m_nCascadeRenderStaticObjects: usize = 0xF0; // int32_t
+ pub const m_flShadowCascadeCrossFade: usize = 0xF4; // float
+ pub const m_flShadowCascadeDistanceFade: usize = 0xF8; // float
+ pub const m_flShadowCascadeDistance0: usize = 0xFC; // float
+ pub const m_flShadowCascadeDistance1: usize = 0x100; // float
+ pub const m_flShadowCascadeDistance2: usize = 0x104; // float
+ pub const m_flShadowCascadeDistance3: usize = 0x108; // float
+ pub const m_nShadowCascadeResolution0: usize = 0x10C; // int32_t
+ pub const m_nShadowCascadeResolution1: usize = 0x110; // int32_t
+ pub const m_nShadowCascadeResolution2: usize = 0x114; // int32_t
+ pub const m_nShadowCascadeResolution3: usize = 0x118; // int32_t
+ pub const m_bUsesBakedShadowing: usize = 0x11C; // bool
+ pub const m_nShadowPriority: usize = 0x120; // int32_t
+ pub const m_nBakedShadowIndex: usize = 0x124; // int32_t
+ pub const m_bRenderToCubemaps: usize = 0x128; // bool
+ pub const m_nDirectLight: usize = 0x12C; // int32_t
+ pub const m_nIndirectLight: usize = 0x130; // int32_t
+ pub const m_flFadeMinDist: usize = 0x134; // float
+ pub const m_flFadeMaxDist: usize = 0x138; // float
+ pub const m_flShadowFadeMinDist: usize = 0x13C; // float
+ pub const m_flShadowFadeMaxDist: usize = 0x140; // float
+ pub const m_bEnabled: usize = 0x144; // bool
+ pub const m_bFlicker: usize = 0x145; // bool
+ pub const m_bPrecomputedFieldsValid: usize = 0x146; // bool
+ pub const m_vPrecomputedBoundsMins: usize = 0x148; // Vector
+ pub const m_vPrecomputedBoundsMaxs: usize = 0x154; // Vector
+ pub const m_vPrecomputedOBBOrigin: usize = 0x160; // Vector
+ pub const m_vPrecomputedOBBAngles: usize = 0x16C; // QAngle
+ pub const m_vPrecomputedOBBExtent: usize = 0x178; // Vector
+ pub const m_flPrecomputedMaxRange: usize = 0x184; // float
+ pub const m_nFogLightingMode: usize = 0x188; // int32_t
+ pub const m_flFogContributionStength: usize = 0x18C; // float
+ pub const m_flNearClipPlane: usize = 0x190; // float
+ pub const m_SkyColor: usize = 0x194; // Color
+ pub const m_flSkyIntensity: usize = 0x198; // float
+ pub const m_SkyAmbientBounce: usize = 0x19C; // Color
+ pub const m_bUseSecondaryColor: usize = 0x1A0; // bool
+ pub const m_bMixedShadows: usize = 0x1A1; // bool
+ pub const m_flLightStyleStartTime: usize = 0x1A4; // GameTime_t
+ pub const m_flCapsuleLength: usize = 0x1A8; // float
+ pub const m_flMinRoughness: usize = 0x1AC; // float
+}
+
+pub mod CLogicRelay { // CLogicalEntity
+ pub const m_OnTrigger: usize = 0x540; // CEntityIOOutput
+ pub const m_OnSpawn: usize = 0x568; // CEntityIOOutput
+ pub const m_bDisabled: usize = 0x590; // bool
+ pub const m_bWaitForRefire: usize = 0x591; // bool
+ pub const m_bTriggerOnce: usize = 0x592; // bool
+ pub const m_bFastRetrigger: usize = 0x593; // bool
+ pub const m_bPassthoughCaller: usize = 0x594; // bool
+}
+
+pub mod CLogicalEntity { // C_BaseEntity
+}
+
+pub mod CModelState {
+ pub const m_hModel: usize = 0xA0; // CStrongHandle<InfoForResourceTypeCModel>
+ pub const m_ModelName: usize = 0xA8; // CUtlSymbolLarge
+ pub const m_bClientClothCreationSuppressed: usize = 0xE8; // bool
+ pub const m_MeshGroupMask: usize = 0x180; // uint64_t
+ pub const m_nIdealMotionType: usize = 0x222; // int8_t
+ pub const m_nForceLOD: usize = 0x223; // int8_t
+ pub const m_nClothUpdateFlags: usize = 0x224; // int8_t
+}
+
+pub mod CNetworkedSequenceOperation {
+ pub const m_hSequence: usize = 0x8; // HSequence
+ pub const m_flPrevCycle: usize = 0xC; // float
+ pub const m_flCycle: usize = 0x10; // float
+ pub const m_flWeight: usize = 0x14; // CNetworkedQuantizedFloat
+ pub const m_bSequenceChangeNetworked: usize = 0x1C; // bool
+ pub const m_bDiscontinuity: usize = 0x1D; // bool
+ pub const m_flPrevCycleFromDiscontinuity: usize = 0x20; // float
+ pub const m_flPrevCycleForAnimEventDetection: usize = 0x24; // float
+}
+
+pub mod CPlayerSprayDecalRenderHelper {
+}
+
+pub mod CPlayer_AutoaimServices { // CPlayerPawnComponent
+}
+
+pub mod CPlayer_CameraServices { // CPlayerPawnComponent
+ pub const m_vecCsViewPunchAngle: usize = 0x40; // QAngle
+ pub const m_nCsViewPunchAngleTick: usize = 0x4C; // GameTick_t
+ pub const m_flCsViewPunchAngleTickRatio: usize = 0x50; // float
+ pub const m_PlayerFog: usize = 0x58; // C_fogplayerparams_t
+ pub const m_hColorCorrectionCtrl: usize = 0x98; // CHandle<C_ColorCorrection>
+ pub const m_hViewEntity: usize = 0x9C; // CHandle<C_BaseEntity>
+ pub const m_hTonemapController: usize = 0xA0; // CHandle<C_TonemapController2>
+ pub const m_audio: usize = 0xA8; // audioparams_t
+ pub const m_PostProcessingVolumes: usize = 0x120; // C_NetworkUtlVectorBase<CHandle<C_PostProcessingVolume>>
+ pub const m_flOldPlayerZ: usize = 0x138; // float
+ pub const m_flOldPlayerViewOffsetZ: usize = 0x13C; // float
+ pub const m_CurrentFog: usize = 0x140; // fogparams_t
+ pub const m_hOldFogController: usize = 0x1A8; // CHandle<C_FogController>
+ pub const m_bOverrideFogColor: usize = 0x1AC; // bool[5]
+ pub const m_OverrideFogColor: usize = 0x1B1; // Color[5]
+ pub const m_bOverrideFogStartEnd: usize = 0x1C5; // bool[5]
+ pub const m_fOverrideFogStart: usize = 0x1CC; // float[5]
+ pub const m_fOverrideFogEnd: usize = 0x1E0; // float[5]
+ pub const m_hActivePostProcessingVolume: usize = 0x1F4; // CHandle<C_PostProcessingVolume>
+ pub const m_angDemoViewAngles: usize = 0x1F8; // QAngle
+}
+
+pub mod CPlayer_FlashlightServices { // CPlayerPawnComponent
+}
+
+pub mod CPlayer_ItemServices { // CPlayerPawnComponent
+}
+
+pub mod CPlayer_MovementServices { // CPlayerPawnComponent
+ pub const m_nImpulse: usize = 0x40; // int32_t
+ pub const m_nButtons: usize = 0x48; // CInButtonState
+ pub const m_nQueuedButtonDownMask: usize = 0x68; // uint64_t
+ pub const m_nQueuedButtonChangeMask: usize = 0x70; // uint64_t
+ pub const m_nButtonDoublePressed: usize = 0x78; // uint64_t
+ pub const m_pButtonPressedCmdNumber: usize = 0x80; // uint32_t[64]
+ pub const m_nLastCommandNumberProcessed: usize = 0x180; // uint32_t
+ pub const m_nToggleButtonDownMask: usize = 0x188; // uint64_t
+ pub const m_flMaxspeed: usize = 0x190; // float
+ pub const m_arrForceSubtickMoveWhen: usize = 0x194; // float[4]
+ pub const m_flForwardMove: usize = 0x1A4; // float
+ pub const m_flLeftMove: usize = 0x1A8; // float
+ pub const m_flUpMove: usize = 0x1AC; // float
+ pub const m_vecLastMovementImpulses: usize = 0x1B0; // Vector
+ pub const m_vecOldViewAngles: usize = 0x1BC; // QAngle
+}
+
+pub mod CPlayer_MovementServices_Humanoid { // CPlayer_MovementServices
+ pub const m_flStepSoundTime: usize = 0x1D0; // float
+ pub const m_flFallVelocity: usize = 0x1D4; // float
+ pub const m_bInCrouch: usize = 0x1D8; // bool
+ pub const m_nCrouchState: usize = 0x1DC; // uint32_t
+ pub const m_flCrouchTransitionStartTime: usize = 0x1E0; // GameTime_t
+ pub const m_bDucked: usize = 0x1E4; // bool
+ pub const m_bDucking: usize = 0x1E5; // bool
+ pub const m_bInDuckJump: usize = 0x1E6; // bool
+ pub const m_groundNormal: usize = 0x1E8; // Vector
+ pub const m_flSurfaceFriction: usize = 0x1F4; // float
+ pub const m_surfaceProps: usize = 0x1F8; // CUtlStringToken
+ pub const m_nStepside: usize = 0x208; // int32_t
+}
+
+pub mod CPlayer_ObserverServices { // CPlayerPawnComponent
+ pub const m_iObserverMode: usize = 0x40; // uint8_t
+ pub const m_hObserverTarget: usize = 0x44; // CHandle<C_BaseEntity>
+ pub const m_iObserverLastMode: usize = 0x48; // ObserverMode_t
+ pub const m_bForcedObserverMode: usize = 0x4C; // bool
+ pub const m_flObserverChaseDistance: usize = 0x50; // float
+ pub const m_flObserverChaseDistanceCalcTime: usize = 0x54; // GameTime_t
+}
+
+pub mod CPlayer_UseServices { // CPlayerPawnComponent
+}
+
+pub mod CPlayer_ViewModelServices { // CPlayerPawnComponent
+}
+
+pub mod CPlayer_WaterServices { // CPlayerPawnComponent
+}
+
+pub mod CPlayer_WeaponServices { // CPlayerPawnComponent
+ pub const m_bAllowSwitchToNoWeapon: usize = 0x40; // bool
+ pub const m_hMyWeapons: usize = 0x48; // C_NetworkUtlVectorBase<CHandle<C_BasePlayerWeapon>>
+ pub const m_hActiveWeapon: usize = 0x60; // CHandle<C_BasePlayerWeapon>
+ pub const m_hLastWeapon: usize = 0x64; // CHandle<C_BasePlayerWeapon>
+ pub const m_iAmmo: usize = 0x68; // uint16_t[32]
+}
+
+pub mod CPointOffScreenIndicatorUi { // C_PointClientUIWorldPanel
+ pub const m_bBeenEnabled: usize = 0xF20; // bool
+ pub const m_bHide: usize = 0xF21; // bool
+ pub const m_flSeenTargetTime: usize = 0xF24; // float
+ pub const m_pTargetPanel: usize = 0xF28; // C_PointClientUIWorldPanel*
+}
+
+pub mod CPointTemplate { // CLogicalEntity
+ pub const m_iszWorldName: usize = 0x540; // CUtlSymbolLarge
+ pub const m_iszSource2EntityLumpName: usize = 0x548; // CUtlSymbolLarge
+ pub const m_iszEntityFilterName: usize = 0x550; // CUtlSymbolLarge
+ pub const m_flTimeoutInterval: usize = 0x558; // float
+ pub const m_bAsynchronouslySpawnEntities: usize = 0x55C; // bool
+ pub const m_pOutputOnSpawned: usize = 0x560; // CEntityIOOutput
+ pub const m_clientOnlyEntityBehavior: usize = 0x588; // PointTemplateClientOnlyEntityBehavior_t
+ pub const m_ownerSpawnGroupType: usize = 0x58C; // PointTemplateOwnerSpawnGroupType_t
+ pub const m_createdSpawnGroupHandles: usize = 0x590; // CUtlVector<uint32_t>
+ pub const m_SpawnedEntityHandles: usize = 0x5A8; // CUtlVector<CEntityHandle>
+ pub const m_ScriptSpawnCallback: usize = 0x5C0; // HSCRIPT
+ pub const m_ScriptCallbackScope: usize = 0x5C8; // HSCRIPT
+}
+
+pub mod CPrecipitationVData { // CEntitySubclassVDataBase
+ pub const m_szParticlePrecipitationEffect: usize = 0x28; // CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>>
+ pub const m_flInnerDistance: usize = 0x108; // float
+ pub const m_nAttachType: usize = 0x10C; // ParticleAttachment_t
+ pub const m_bBatchSameVolumeType: usize = 0x110; // bool
+ pub const m_nRTEnvCP: usize = 0x114; // int32_t
+ pub const m_nRTEnvCPComponent: usize = 0x118; // int32_t
+ pub const m_szModifier: usize = 0x120; // CUtlString
+}
+
+pub mod CProjectedTextureBase {
+ pub const m_hTargetEntity: usize = 0xC; // CHandle<C_BaseEntity>
+ pub const m_bState: usize = 0x10; // bool
+ pub const m_bAlwaysUpdate: usize = 0x11; // bool
+ pub const m_flLightFOV: usize = 0x14; // float
+ pub const m_bEnableShadows: usize = 0x18; // bool
+ pub const m_bSimpleProjection: usize = 0x19; // bool
+ pub const m_bLightOnlyTarget: usize = 0x1A; // bool
+ pub const m_bLightWorld: usize = 0x1B; // bool
+ pub const m_bCameraSpace: usize = 0x1C; // bool
+ pub const m_flBrightnessScale: usize = 0x20; // float
+ pub const m_LightColor: usize = 0x24; // Color
+ pub const m_flIntensity: usize = 0x28; // float
+ pub const m_flLinearAttenuation: usize = 0x2C; // float
+ pub const m_flQuadraticAttenuation: usize = 0x30; // float
+ pub const m_bVolumetric: usize = 0x34; // bool
+ pub const m_flVolumetricIntensity: usize = 0x38; // float
+ pub const m_flNoiseStrength: usize = 0x3C; // float
+ pub const m_flFlashlightTime: usize = 0x40; // float
+ pub const m_nNumPlanes: usize = 0x44; // uint32_t
+ pub const m_flPlaneOffset: usize = 0x48; // float
+ pub const m_flColorTransitionTime: usize = 0x4C; // float
+ pub const m_flAmbient: usize = 0x50; // float
+ pub const m_SpotlightTextureName: usize = 0x54; // char[512]
+ pub const m_nSpotlightTextureFrame: usize = 0x254; // int32_t
+ pub const m_nShadowQuality: usize = 0x258; // uint32_t
+ pub const m_flNearZ: usize = 0x25C; // float
+ pub const m_flFarZ: usize = 0x260; // float
+ pub const m_flProjectionSize: usize = 0x264; // float
+ pub const m_flRotation: usize = 0x268; // float
+ pub const m_bFlipHorizontal: usize = 0x26C; // bool
+}
+
+pub mod CRenderComponent { // CEntityComponent
+ pub const __m_pChainEntity: usize = 0x10; // CNetworkVarChainer
+ pub const m_bIsRenderingWithViewModels: usize = 0x50; // bool
+ pub const m_nSplitscreenFlags: usize = 0x54; // uint32_t
+ pub const m_bEnableRendering: usize = 0x60; // bool
+ pub const m_bInterpolationReadyToDraw: usize = 0xB0; // bool
+}
+
+pub mod CSMatchStats_t { // CSPerRoundStats_t
+ pub const m_iEnemy5Ks: usize = 0x68; // int32_t
+ pub const m_iEnemy4Ks: usize = 0x6C; // int32_t
+ pub const m_iEnemy3Ks: usize = 0x70; // int32_t
+}
+
+pub mod CSPerRoundStats_t {
+ pub const m_iKills: usize = 0x30; // int32_t
+ pub const m_iDeaths: usize = 0x34; // int32_t
+ pub const m_iAssists: usize = 0x38; // int32_t
+ pub const m_iDamage: usize = 0x3C; // int32_t
+ pub const m_iEquipmentValue: usize = 0x40; // int32_t
+ pub const m_iMoneySaved: usize = 0x44; // int32_t
+ pub const m_iKillReward: usize = 0x48; // int32_t
+ pub const m_iLiveTime: usize = 0x4C; // int32_t
+ pub const m_iHeadShotKills: usize = 0x50; // int32_t
+ pub const m_iObjective: usize = 0x54; // int32_t
+ pub const m_iCashEarned: usize = 0x58; // int32_t
+ pub const m_iUtilityDamage: usize = 0x5C; // int32_t
+ pub const m_iEnemiesFlashed: usize = 0x60; // int32_t
+}
+
+pub mod CScriptComponent { // CEntityComponent
+ pub const m_scriptClassName: usize = 0x30; // CUtlSymbolLarge
+}
+
+pub mod CServerOnlyModelEntity { // C_BaseModelEntity
+}
+
+pub mod CSkeletonInstance { // CGameSceneNode
+ pub const m_modelState: usize = 0x160; // CModelState
+ pub const m_bIsAnimationEnabled: usize = 0x390; // bool
+ pub const m_bUseParentRenderBounds: usize = 0x391; // bool
+ pub const m_bDisableSolidCollisionsForHierarchy: usize = 0x392; // bool
+ pub const m_bDirtyMotionType: usize = 0x0; // bitfield:1
+ pub const m_bIsGeneratingLatchedParentSpaceState: usize = 0x0; // bitfield:1
+ pub const m_materialGroup: usize = 0x394; // CUtlStringToken
+ pub const m_nHitboxSet: usize = 0x398; // uint8_t
+}
+
+pub mod CSkyboxReference { // C_BaseEntity
+ pub const m_worldGroupId: usize = 0x540; // WorldGroupId_t
+ pub const m_hSkyCamera: usize = 0x544; // CHandle<C_SkyCamera>
+}
+
+pub mod CTablet { // C_CSWeaponBase
+}
+
+pub mod CTimeline { // IntervalTimer
+ pub const m_flValues: usize = 0x10; // float[64]
+ pub const m_nValueCounts: usize = 0x110; // int32_t[64]
+ pub const m_nBucketCount: usize = 0x210; // int32_t
+ pub const m_flInterval: usize = 0x214; // float
+ pub const m_flFinalValue: usize = 0x218; // float
+ pub const m_nCompressionType: usize = 0x21C; // TimelineCompression_t
+ pub const m_bStopped: usize = 0x220; // bool
+}
+
+pub mod CTripWireFire { // C_BaseCSGrenade
+}
+
+pub mod CTripWireFireProjectile { // C_BaseGrenade
+}
+
+pub mod CWaterSplasher { // C_BaseModelEntity
+}
+
+pub mod CWeaponZoneRepulsor { // C_CSWeaponBaseGun
+}
+
+pub mod C_AK47 { // C_CSWeaponBaseGun
+}
+
+pub mod C_AttributeContainer { // CAttributeManager
+ pub const m_Item: usize = 0x50; // C_EconItemView
+ pub const m_iExternalItemProviderRegisteredToken: usize = 0x498; // int32_t
+ pub const m_ullRegisteredAsItemID: usize = 0x4A0; // uint64_t
+}
+
+pub mod C_BarnLight { // C_BaseModelEntity
+ pub const m_bEnabled: usize = 0xCC0; // bool
+ pub const m_nColorMode: usize = 0xCC4; // int32_t
+ pub const m_Color: usize = 0xCC8; // Color
+ pub const m_flColorTemperature: usize = 0xCCC; // float
+ pub const m_flBrightness: usize = 0xCD0; // float
+ pub const m_flBrightnessScale: usize = 0xCD4; // float
+ pub const m_nDirectLight: usize = 0xCD8; // int32_t
+ pub const m_nBakedShadowIndex: usize = 0xCDC; // int32_t
+ pub const m_nLuminaireShape: usize = 0xCE0; // int32_t
+ pub const m_flLuminaireSize: usize = 0xCE4; // float
+ pub const m_flLuminaireAnisotropy: usize = 0xCE8; // float
+ pub const m_LightStyleString: usize = 0xCF0; // CUtlString
+ pub const m_flLightStyleStartTime: usize = 0xCF8; // GameTime_t
+ pub const m_QueuedLightStyleStrings: usize = 0xD00; // C_NetworkUtlVectorBase<CUtlString>
+ pub const m_LightStyleEvents: usize = 0xD18; // C_NetworkUtlVectorBase<CUtlString>
+ pub const m_LightStyleTargets: usize = 0xD30; // C_NetworkUtlVectorBase<CHandle<C_BaseModelEntity>>
+ pub const m_StyleEvent: usize = 0xD48; // CEntityIOOutput[4]
+ pub const m_hLightCookie: usize = 0xDE8; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_flShape: usize = 0xDF0; // float
+ pub const m_flSoftX: usize = 0xDF4; // float
+ pub const m_flSoftY: usize = 0xDF8; // float
+ pub const m_flSkirt: usize = 0xDFC; // float
+ pub const m_flSkirtNear: usize = 0xE00; // float
+ pub const m_vSizeParams: usize = 0xE04; // Vector
+ pub const m_flRange: usize = 0xE10; // float
+ pub const m_vShear: usize = 0xE14; // Vector
+ pub const m_nBakeSpecularToCubemaps: usize = 0xE20; // int32_t
+ pub const m_vBakeSpecularToCubemapsSize: usize = 0xE24; // Vector
+ pub const m_nCastShadows: usize = 0xE30; // int32_t
+ pub const m_nShadowMapSize: usize = 0xE34; // int32_t
+ pub const m_nShadowPriority: usize = 0xE38; // int32_t
+ pub const m_bContactShadow: usize = 0xE3C; // bool
+ pub const m_nBounceLight: usize = 0xE40; // int32_t
+ pub const m_flBounceScale: usize = 0xE44; // float
+ pub const m_flMinRoughness: usize = 0xE48; // float
+ pub const m_vAlternateColor: usize = 0xE4C; // Vector
+ pub const m_fAlternateColorBrightness: usize = 0xE58; // float
+ pub const m_nFog: usize = 0xE5C; // int32_t
+ pub const m_flFogStrength: usize = 0xE60; // float
+ pub const m_nFogShadows: usize = 0xE64; // int32_t
+ pub const m_flFogScale: usize = 0xE68; // float
+ pub const m_flFadeSizeStart: usize = 0xE6C; // float
+ pub const m_flFadeSizeEnd: usize = 0xE70; // float
+ pub const m_flShadowFadeSizeStart: usize = 0xE74; // float
+ pub const m_flShadowFadeSizeEnd: usize = 0xE78; // float
+ pub const m_bPrecomputedFieldsValid: usize = 0xE7C; // bool
+ pub const m_vPrecomputedBoundsMins: usize = 0xE80; // Vector
+ pub const m_vPrecomputedBoundsMaxs: usize = 0xE8C; // Vector
+ pub const m_vPrecomputedOBBOrigin: usize = 0xE98; // Vector
+ pub const m_vPrecomputedOBBAngles: usize = 0xEA4; // QAngle
+ pub const m_vPrecomputedOBBExtent: usize = 0xEB0; // Vector
+}
+
+pub mod C_BaseButton { // C_BaseToggle
+ pub const m_glowEntity: usize = 0xCC0; // CHandle<C_BaseModelEntity>
+ pub const m_usable: usize = 0xCC4; // bool
+ pub const m_szDisplayText: usize = 0xCC8; // CUtlSymbolLarge
+}
+
+pub mod C_BaseCSGrenade { // C_CSWeaponBase
+ pub const m_bClientPredictDelete: usize = 0x1A10; // bool
+ pub const m_bRedraw: usize = 0x1A11; // bool
+ pub const m_bIsHeldByPlayer: usize = 0x1A12; // bool
+ pub const m_bPinPulled: usize = 0x1A13; // bool
+ pub const m_bJumpThrow: usize = 0x1A14; // bool
+ pub const m_bThrowAnimating: usize = 0x1A15; // bool
+ pub const m_fThrowTime: usize = 0x1A18; // GameTime_t
+ pub const m_flThrowStrength: usize = 0x1A1C; // float
+ pub const m_flThrowStrengthApproach: usize = 0x1A20; // float
+ pub const m_fDropTime: usize = 0x1A24; // GameTime_t
+ pub const m_bJustPulledPin: usize = 0x1A28; // bool
+ pub const m_nNextHoldTick: usize = 0x1A2C; // GameTick_t
+ pub const m_flNextHoldFrac: usize = 0x1A30; // float
+ pub const m_hSwitchToWeaponAfterThrow: usize = 0x1A34; // CHandle<C_CSWeaponBase>
+}
+
+pub mod C_BaseCSGrenadeProjectile { // C_BaseGrenade
+ pub const m_vInitialPosition: usize = 0x1068; // Vector
+ pub const m_vInitialVelocity: usize = 0x1074; // Vector
+ pub const m_nBounces: usize = 0x1080; // int32_t
+ pub const m_nExplodeEffectIndex: usize = 0x1088; // CStrongHandle<InfoForResourceTypeIParticleSystemDefinition>
+ pub const m_nExplodeEffectTickBegin: usize = 0x1090; // int32_t
+ pub const m_vecExplodeEffectOrigin: usize = 0x1094; // Vector
+ pub const m_flSpawnTime: usize = 0x10A0; // GameTime_t
+ pub const vecLastTrailLinePos: usize = 0x10A4; // Vector
+ pub const flNextTrailLineTime: usize = 0x10B0; // GameTime_t
+ pub const m_bExplodeEffectBegan: usize = 0x10B4; // bool
+ pub const m_bCanCreateGrenadeTrail: usize = 0x10B5; // bool
+ pub const m_nSnapshotTrajectoryEffectIndex: usize = 0x10B8; // ParticleIndex_t
+ pub const m_hSnapshotTrajectoryParticleSnapshot: usize = 0x10C0; // CStrongHandle<InfoForResourceTypeIParticleSnapshot>
+ pub const m_arrTrajectoryTrailPoints: usize = 0x10C8; // CUtlVector<Vector>
+ pub const m_arrTrajectoryTrailPointCreationTimes: usize = 0x10E0; // CUtlVector<float>
+ pub const m_flTrajectoryTrailEffectCreationTime: usize = 0x10F8; // float
+}
+
+pub mod C_BaseClientUIEntity { // C_BaseModelEntity
+ pub const m_bEnabled: usize = 0xCC8; // bool
+ pub const m_DialogXMLName: usize = 0xCD0; // CUtlSymbolLarge
+ pub const m_PanelClassName: usize = 0xCD8; // CUtlSymbolLarge
+ pub const m_PanelID: usize = 0xCE0; // CUtlSymbolLarge
+}
+
+pub mod C_BaseCombatCharacter { // C_BaseFlex
+ pub const m_hMyWearables: usize = 0x1018; // C_NetworkUtlVectorBase<CHandle<C_EconWearable>>
+ pub const m_bloodColor: usize = 0x1030; // int32_t
+ pub const m_leftFootAttachment: usize = 0x1034; // AttachmentHandle_t
+ pub const m_rightFootAttachment: usize = 0x1035; // AttachmentHandle_t
+ pub const m_nWaterWakeMode: usize = 0x1038; // C_BaseCombatCharacter::WaterWakeMode_t
+ pub const m_flWaterWorldZ: usize = 0x103C; // float
+ pub const m_flWaterNextTraceTime: usize = 0x1040; // float
+ pub const m_flFieldOfView: usize = 0x1044; // float
+}
+
+pub mod C_BaseDoor { // C_BaseToggle
+ pub const m_bIsUsable: usize = 0xCC0; // bool
+}
+
+pub mod C_BaseEntity { // CEntityInstance
+ pub const m_CBodyComponent: usize = 0x30; // CBodyComponent*
+ pub const m_NetworkTransmitComponent: usize = 0x38; // CNetworkTransmitComponent
+ pub const m_nLastThinkTick: usize = 0x308; // GameTick_t
+ pub const m_pGameSceneNode: usize = 0x310; // CGameSceneNode*
+ pub const m_pRenderComponent: usize = 0x318; // CRenderComponent*
+ pub const m_pCollision: usize = 0x320; // CCollisionProperty*
+ pub const m_iMaxHealth: usize = 0x328; // int32_t
+ pub const m_iHealth: usize = 0x32C; // int32_t
+ pub const m_lifeState: usize = 0x330; // uint8_t
+ pub const m_bTakesDamage: usize = 0x331; // bool
+ pub const m_nTakeDamageFlags: usize = 0x334; // TakeDamageFlags_t
+ pub const m_ubInterpolationFrame: usize = 0x338; // uint8_t
+ pub const m_hSceneObjectController: usize = 0x33C; // CHandle<C_BaseEntity>
+ pub const m_nNoInterpolationTick: usize = 0x340; // int32_t
+ pub const m_nVisibilityNoInterpolationTick: usize = 0x344; // int32_t
+ pub const m_flProxyRandomValue: usize = 0x348; // float
+ pub const m_iEFlags: usize = 0x34C; // int32_t
+ pub const m_nWaterType: usize = 0x350; // uint8_t
+ pub const m_bInterpolateEvenWithNoModel: usize = 0x351; // bool
+ pub const m_bPredictionEligible: usize = 0x352; // bool
+ pub const m_bApplyLayerMatchIDToModel: usize = 0x353; // bool
+ pub const m_tokLayerMatchID: usize = 0x354; // CUtlStringToken
+ pub const m_nSubclassID: usize = 0x358; // CUtlStringToken
+ pub const m_nSimulationTick: usize = 0x368; // int32_t
+ pub const m_iCurrentThinkContext: usize = 0x36C; // int32_t
+ pub const m_aThinkFunctions: usize = 0x370; // CUtlVector<thinkfunc_t>
+ pub const m_flAnimTime: usize = 0x388; // float
+ pub const m_flSimulationTime: usize = 0x38C; // float
+ pub const m_nSceneObjectOverrideFlags: usize = 0x390; // uint8_t
+ pub const m_bHasSuccessfullyInterpolated: usize = 0x391; // bool
+ pub const m_bHasAddedVarsToInterpolation: usize = 0x392; // bool
+ pub const m_bRenderEvenWhenNotSuccessfullyInterpolated: usize = 0x393; // bool
+ pub const m_nInterpolationLatchDirtyFlags: usize = 0x394; // int32_t[2]
+ pub const m_ListEntry: usize = 0x39C; // uint16_t[11]
+ pub const m_flCreateTime: usize = 0x3B4; // GameTime_t
+ pub const m_flSpeed: usize = 0x3B8; // float
+ pub const m_EntClientFlags: usize = 0x3BC; // uint16_t
+ pub const m_bClientSideRagdoll: usize = 0x3BE; // bool
+ pub const m_iTeamNum: usize = 0x3BF; // uint8_t
+ pub const m_spawnflags: usize = 0x3C0; // uint32_t
+ pub const m_nNextThinkTick: usize = 0x3C4; // GameTick_t
+ pub const m_fFlags: usize = 0x3C8; // uint32_t
+ pub const m_vecAbsVelocity: usize = 0x3CC; // Vector
+ pub const m_vecVelocity: usize = 0x3D8; // CNetworkVelocityVector
+ pub const m_vecBaseVelocity: usize = 0x408; // Vector
+ pub const m_hEffectEntity: usize = 0x414; // CHandle<C_BaseEntity>
+ pub const m_hOwnerEntity: usize = 0x418; // CHandle<C_BaseEntity>
+ pub const m_MoveCollide: usize = 0x41C; // MoveCollide_t
+ pub const m_MoveType: usize = 0x41D; // MoveType_t
+ pub const m_flWaterLevel: usize = 0x420; // float
+ pub const m_fEffects: usize = 0x424; // uint32_t
+ pub const m_hGroundEntity: usize = 0x428; // CHandle<C_BaseEntity>
+ pub const m_flFriction: usize = 0x42C; // float
+ pub const m_flElasticity: usize = 0x430; // float
+ pub const m_flGravityScale: usize = 0x434; // float
+ pub const m_flTimeScale: usize = 0x438; // float
+ pub const m_bSimulatedEveryTick: usize = 0x43C; // bool
+ pub const m_bAnimatedEveryTick: usize = 0x43D; // bool
+ pub const m_flNavIgnoreUntilTime: usize = 0x440; // GameTime_t
+ pub const m_hThink: usize = 0x444; // uint16_t
+ pub const m_fBBoxVisFlags: usize = 0x450; // uint8_t
+ pub const m_bPredictable: usize = 0x451; // bool
+ pub const m_bRenderWithViewModels: usize = 0x452; // bool
+ pub const m_nSplitUserPlayerPredictionSlot: usize = 0x454; // CSplitScreenSlot
+ pub const m_nFirstPredictableCommand: usize = 0x458; // int32_t
+ pub const m_nLastPredictableCommand: usize = 0x45C; // int32_t
+ pub const m_hOldMoveParent: usize = 0x460; // CHandle<C_BaseEntity>
+ pub const m_Particles: usize = 0x468; // CParticleProperty
+ pub const m_vecPredictedScriptFloats: usize = 0x490; // CUtlVector<float>
+ pub const m_vecPredictedScriptFloatIDs: usize = 0x4A8; // CUtlVector<int32_t>
+ pub const m_nNextScriptVarRecordID: usize = 0x4D8; // int32_t
+ pub const m_vecAngVelocity: usize = 0x4E8; // QAngle
+ pub const m_DataChangeEventRef: usize = 0x4F4; // int32_t
+ pub const m_dependencies: usize = 0x4F8; // CUtlVector<CEntityHandle>
+ pub const m_nCreationTick: usize = 0x510; // int32_t
+ pub const m_bAnimTimeChanged: usize = 0x529; // bool
+ pub const m_bSimulationTimeChanged: usize = 0x52A; // bool
+ pub const m_sUniqueHammerID: usize = 0x538; // CUtlString
+}
+
+pub mod C_BaseFire { // C_BaseEntity
+ pub const m_flScale: usize = 0x540; // float
+ pub const m_flStartScale: usize = 0x544; // float
+ pub const m_flScaleTime: usize = 0x548; // float
+ pub const m_nFlags: usize = 0x54C; // uint32_t
+}
+
+pub mod C_BaseFlex { // CBaseAnimGraph
+ pub const m_flexWeight: usize = 0xE90; // C_NetworkUtlVectorBase<float>
+ pub const m_vLookTargetPosition: usize = 0xEA8; // Vector
+ pub const m_blinktoggle: usize = 0xEC0; // bool
+ pub const m_nLastFlexUpdateFrameCount: usize = 0xF20; // int32_t
+ pub const m_CachedViewTarget: usize = 0xF24; // Vector
+ pub const m_nNextSceneEventId: usize = 0xF30; // uint32_t
+ pub const m_iBlink: usize = 0xF34; // int32_t
+ pub const m_blinktime: usize = 0xF38; // float
+ pub const m_prevblinktoggle: usize = 0xF3C; // bool
+ pub const m_iJawOpen: usize = 0xF40; // int32_t
+ pub const m_flJawOpenAmount: usize = 0xF44; // float
+ pub const m_flBlinkAmount: usize = 0xF48; // float
+ pub const m_iMouthAttachment: usize = 0xF4C; // AttachmentHandle_t
+ pub const m_iEyeAttachment: usize = 0xF4D; // AttachmentHandle_t
+ pub const m_bResetFlexWeightsOnModelChange: usize = 0xF4E; // bool
+ pub const m_nEyeOcclusionRendererBone: usize = 0xF68; // int32_t
+ pub const m_mEyeOcclusionRendererCameraToBoneTransform: usize = 0xF6C; // matrix3x4_t
+ pub const m_vEyeOcclusionRendererHalfExtent: usize = 0xF9C; // Vector
+ pub const m_PhonemeClasses: usize = 0xFB8; // C_BaseFlex::Emphasized_Phoneme[3]
+}
+
+pub mod C_BaseFlex_Emphasized_Phoneme {
+ pub const m_sClassName: usize = 0x0; // CUtlString
+ pub const m_flAmount: usize = 0x18; // float
+ pub const m_bRequired: usize = 0x1C; // bool
+ pub const m_bBasechecked: usize = 0x1D; // bool
+ pub const m_bValid: usize = 0x1E; // bool
+}
+
+pub mod C_BaseGrenade { // C_BaseFlex
+ pub const m_bHasWarnedAI: usize = 0x1018; // bool
+ pub const m_bIsSmokeGrenade: usize = 0x1019; // bool
+ pub const m_bIsLive: usize = 0x101A; // bool
+ pub const m_DmgRadius: usize = 0x101C; // float
+ pub const m_flDetonateTime: usize = 0x1020; // GameTime_t
+ pub const m_flWarnAITime: usize = 0x1024; // float
+ pub const m_flDamage: usize = 0x1028; // float
+ pub const m_iszBounceSound: usize = 0x1030; // CUtlSymbolLarge
+ pub const m_ExplosionSound: usize = 0x1038; // CUtlString
+ pub const m_hThrower: usize = 0x1044; // CHandle<C_CSPlayerPawn>
+ pub const m_flNextAttack: usize = 0x105C; // GameTime_t
+ pub const m_hOriginalThrower: usize = 0x1060; // CHandle<C_CSPlayerPawn>
+}
+
+pub mod C_BaseModelEntity { // C_BaseEntity
+ pub const m_CRenderComponent: usize = 0xA10; // CRenderComponent*
+ pub const m_CHitboxComponent: usize = 0xA18; // CHitboxComponent
+ pub const m_bInitModelEffects: usize = 0xA60; // bool
+ pub const m_bIsStaticProp: usize = 0xA61; // bool
+ pub const m_nLastAddDecal: usize = 0xA64; // int32_t
+ pub const m_nDecalsAdded: usize = 0xA68; // int32_t
+ pub const m_iOldHealth: usize = 0xA6C; // int32_t
+ pub const m_nRenderMode: usize = 0xA70; // RenderMode_t
+ pub const m_nRenderFX: usize = 0xA71; // RenderFx_t
+ pub const m_bAllowFadeInView: usize = 0xA72; // bool
+ pub const m_clrRender: usize = 0xA73; // Color
+ pub const m_vecRenderAttributes: usize = 0xA78; // C_UtlVectorEmbeddedNetworkVar<EntityRenderAttribute_t>
+ pub const m_bRenderToCubemaps: usize = 0xAE0; // bool
+ pub const m_Collision: usize = 0xAE8; // CCollisionProperty
+ pub const m_Glow: usize = 0xB98; // CGlowProperty
+ pub const m_flGlowBackfaceMult: usize = 0xBF0; // float
+ pub const m_fadeMinDist: usize = 0xBF4; // float
+ pub const m_fadeMaxDist: usize = 0xBF8; // float
+ pub const m_flFadeScale: usize = 0xBFC; // float
+ pub const m_flShadowStrength: usize = 0xC00; // float
+ pub const m_nObjectCulling: usize = 0xC04; // uint8_t
+ pub const m_nAddDecal: usize = 0xC08; // int32_t
+ pub const m_vDecalPosition: usize = 0xC0C; // Vector
+ pub const m_vDecalForwardAxis: usize = 0xC18; // Vector
+ pub const m_flDecalHealBloodRate: usize = 0xC24; // float
+ pub const m_flDecalHealHeightRate: usize = 0xC28; // float
+ pub const m_ConfigEntitiesToPropagateMaterialDecalsTo: usize = 0xC30; // C_NetworkUtlVectorBase<CHandle<C_BaseModelEntity>>
+ pub const m_vecViewOffset: usize = 0xC48; // CNetworkViewOffsetVector
+ pub const m_pClientAlphaProperty: usize = 0xC78; // CClientAlphaProperty*
+ pub const m_ClientOverrideTint: usize = 0xC80; // Color
+ pub const m_bUseClientOverrideTint: usize = 0xC84; // bool
+}
+
+pub mod C_BasePlayerPawn { // C_BaseCombatCharacter
+ pub const m_pWeaponServices: usize = 0x10A8; // CPlayer_WeaponServices*
+ pub const m_pItemServices: usize = 0x10B0; // CPlayer_ItemServices*
+ pub const m_pAutoaimServices: usize = 0x10B8; // CPlayer_AutoaimServices*
+ pub const m_pObserverServices: usize = 0x10C0; // CPlayer_ObserverServices*
+ pub const m_pWaterServices: usize = 0x10C8; // CPlayer_WaterServices*
+ pub const m_pUseServices: usize = 0x10D0; // CPlayer_UseServices*
+ pub const m_pFlashlightServices: usize = 0x10D8; // CPlayer_FlashlightServices*
+ pub const m_pCameraServices: usize = 0x10E0; // CPlayer_CameraServices*
+ pub const m_pMovementServices: usize = 0x10E8; // CPlayer_MovementServices*
+ pub const m_ServerViewAngleChanges: usize = 0x10F8; // C_UtlVectorEmbeddedNetworkVar<ViewAngleServerChange_t>
+ pub const m_nHighestConsumedServerViewAngleChangeIndex: usize = 0x1148; // uint32_t
+ pub const v_angle: usize = 0x114C; // QAngle
+ pub const v_anglePrevious: usize = 0x1158; // QAngle
+ pub const m_iHideHUD: usize = 0x1164; // uint32_t
+ pub const m_skybox3d: usize = 0x1168; // sky3dparams_t
+ pub const m_flDeathTime: usize = 0x11F8; // GameTime_t
+ pub const m_vecPredictionError: usize = 0x11FC; // Vector
+ pub const m_flPredictionErrorTime: usize = 0x1208; // GameTime_t
+ pub const m_vecLastCameraSetupLocalOrigin: usize = 0x120C; // Vector
+ pub const m_flLastCameraSetupTime: usize = 0x1218; // GameTime_t
+ pub const m_flFOVSensitivityAdjust: usize = 0x121C; // float
+ pub const m_flMouseSensitivity: usize = 0x1220; // float
+ pub const m_vOldOrigin: usize = 0x1224; // Vector
+ pub const m_flOldSimulationTime: usize = 0x1230; // float
+ pub const m_nLastExecutedCommandNumber: usize = 0x1234; // int32_t
+ pub const m_nLastExecutedCommandTick: usize = 0x1238; // int32_t
+ pub const m_hController: usize = 0x123C; // CHandle<CBasePlayerController>
+ pub const m_bIsSwappingToPredictableController: usize = 0x1240; // bool
+}
+
+pub mod C_BasePlayerWeapon { // C_EconEntity
+ pub const m_nNextPrimaryAttackTick: usize = 0x1560; // GameTick_t
+ pub const m_flNextPrimaryAttackTickRatio: usize = 0x1564; // float
+ pub const m_nNextSecondaryAttackTick: usize = 0x1568; // GameTick_t
+ pub const m_flNextSecondaryAttackTickRatio: usize = 0x156C; // float
+ pub const m_iClip1: usize = 0x1570; // int32_t
+ pub const m_iClip2: usize = 0x1574; // int32_t
+ pub const m_pReserveAmmo: usize = 0x1578; // int32_t[2]
+}
+
+pub mod C_BasePropDoor { // C_DynamicProp
+ pub const m_eDoorState: usize = 0x10F8; // DoorState_t
+ pub const m_modelChanged: usize = 0x10FC; // bool
+ pub const m_bLocked: usize = 0x10FD; // bool
+ pub const m_closedPosition: usize = 0x1100; // Vector
+ pub const m_closedAngles: usize = 0x110C; // QAngle
+ pub const m_hMaster: usize = 0x1118; // CHandle<C_BasePropDoor>
+ pub const m_vWhereToSetLightingOrigin: usize = 0x111C; // Vector
+}
+
+pub mod C_BaseToggle { // C_BaseModelEntity
+}
+
+pub mod C_BaseTrigger { // C_BaseToggle
+ pub const m_bDisabled: usize = 0xCC0; // bool
+ pub const m_bClientSidePredicted: usize = 0xCC1; // bool
+}
+
+pub mod C_BaseViewModel { // CBaseAnimGraph
+ pub const m_vecLastFacing: usize = 0xE88; // Vector
+ pub const m_nViewModelIndex: usize = 0xE94; // uint32_t
+ pub const m_nAnimationParity: usize = 0xE98; // uint32_t
+ pub const m_flAnimationStartTime: usize = 0xE9C; // float
+ pub const m_hWeapon: usize = 0xEA0; // CHandle<C_BasePlayerWeapon>
+ pub const m_sVMName: usize = 0xEA8; // CUtlSymbolLarge
+ pub const m_sAnimationPrefix: usize = 0xEB0; // CUtlSymbolLarge
+ pub const m_hWeaponModel: usize = 0xEB8; // CHandle<C_ViewmodelWeapon>
+ pub const m_iCameraAttachment: usize = 0xEBC; // AttachmentHandle_t
+ pub const m_vecLastCameraAngles: usize = 0xEC0; // QAngle
+ pub const m_previousElapsedDuration: usize = 0xECC; // float
+ pub const m_previousCycle: usize = 0xED0; // float
+ pub const m_nOldAnimationParity: usize = 0xED4; // int32_t
+ pub const m_hOldLayerSequence: usize = 0xED8; // HSequence
+ pub const m_oldLayer: usize = 0xEDC; // int32_t
+ pub const m_oldLayerStartTime: usize = 0xEE0; // float
+ pub const m_hControlPanel: usize = 0xEE4; // CHandle<C_BaseEntity>
+}
+
+pub mod C_Beam { // C_BaseModelEntity
+ pub const m_flFrameRate: usize = 0xCC0; // float
+ pub const m_flHDRColorScale: usize = 0xCC4; // float
+ pub const m_flFireTime: usize = 0xCC8; // GameTime_t
+ pub const m_flDamage: usize = 0xCCC; // float
+ pub const m_nNumBeamEnts: usize = 0xCD0; // uint8_t
+ pub const m_queryHandleHalo: usize = 0xCD4; // int32_t
+ pub const m_hBaseMaterial: usize = 0xCF8; // CStrongHandle<InfoForResourceTypeIMaterial2>
+ pub const m_nHaloIndex: usize = 0xD00; // CStrongHandle<InfoForResourceTypeIMaterial2>
+ pub const m_nBeamType: usize = 0xD08; // BeamType_t
+ pub const m_nBeamFlags: usize = 0xD0C; // uint32_t
+ pub const m_hAttachEntity: usize = 0xD10; // CHandle<C_BaseEntity>[10]
+ pub const m_nAttachIndex: usize = 0xD38; // AttachmentHandle_t[10]
+ pub const m_fWidth: usize = 0xD44; // float
+ pub const m_fEndWidth: usize = 0xD48; // float
+ pub const m_fFadeLength: usize = 0xD4C; // float
+ pub const m_fHaloScale: usize = 0xD50; // float
+ pub const m_fAmplitude: usize = 0xD54; // float
+ pub const m_fStartFrame: usize = 0xD58; // float
+ pub const m_fSpeed: usize = 0xD5C; // float
+ pub const m_flFrame: usize = 0xD60; // float
+ pub const m_nClipStyle: usize = 0xD64; // BeamClipStyle_t
+ pub const m_bTurnedOff: usize = 0xD68; // bool
+ pub const m_vecEndPos: usize = 0xD6C; // Vector
+ pub const m_hEndEntity: usize = 0xD78; // CHandle<C_BaseEntity>
+}
+
+pub mod C_Breakable { // C_BaseModelEntity
+}
+
+pub mod C_BreakableProp { // CBaseProp
+ pub const m_OnBreak: usize = 0xEC8; // CEntityIOOutput
+ pub const m_OnHealthChanged: usize = 0xEF0; // CEntityOutputTemplate<float>
+ pub const m_OnTakeDamage: usize = 0xF18; // CEntityIOOutput
+ pub const m_impactEnergyScale: usize = 0xF40; // float
+ pub const m_iMinHealthDmg: usize = 0xF44; // int32_t
+ pub const m_flPressureDelay: usize = 0xF48; // float
+ pub const m_hBreaker: usize = 0xF4C; // CHandle<C_BaseEntity>
+ pub const m_PerformanceMode: usize = 0xF50; // PerformanceMode_t
+ pub const m_flDmgModBullet: usize = 0xF54; // float
+ pub const m_flDmgModClub: usize = 0xF58; // float
+ pub const m_flDmgModExplosive: usize = 0xF5C; // float
+ pub const m_flDmgModFire: usize = 0xF60; // float
+ pub const m_iszPhysicsDamageTableName: usize = 0xF68; // CUtlSymbolLarge
+ pub const m_iszBasePropData: usize = 0xF70; // CUtlSymbolLarge
+ pub const m_iInteractions: usize = 0xF78; // int32_t
+ pub const m_flPreventDamageBeforeTime: usize = 0xF7C; // GameTime_t
+ pub const m_bHasBreakPiecesOrCommands: usize = 0xF80; // bool
+ pub const m_explodeDamage: usize = 0xF84; // float
+ pub const m_explodeRadius: usize = 0xF88; // float
+ pub const m_explosionDelay: usize = 0xF90; // float
+ pub const m_explosionBuildupSound: usize = 0xF98; // CUtlSymbolLarge
+ pub const m_explosionCustomEffect: usize = 0xFA0; // CUtlSymbolLarge
+ pub const m_explosionCustomSound: usize = 0xFA8; // CUtlSymbolLarge
+ pub const m_explosionModifier: usize = 0xFB0; // CUtlSymbolLarge
+ pub const m_hPhysicsAttacker: usize = 0xFB8; // CHandle<C_BasePlayerPawn>
+ pub const m_flLastPhysicsInfluenceTime: usize = 0xFBC; // GameTime_t
+ pub const m_flDefaultFadeScale: usize = 0xFC0; // float
+ pub const m_hLastAttacker: usize = 0xFC4; // CHandle<C_BaseEntity>
+ pub const m_hFlareEnt: usize = 0xFC8; // CHandle<C_BaseEntity>
+ pub const m_noGhostCollision: usize = 0xFCC; // bool
+}
+
+pub mod C_BulletHitModel { // CBaseAnimGraph
+ pub const m_matLocal: usize = 0xE80; // matrix3x4_t
+ pub const m_iBoneIndex: usize = 0xEB0; // int32_t
+ pub const m_hPlayerParent: usize = 0xEB4; // CHandle<C_BaseEntity>
+ pub const m_bIsHit: usize = 0xEB8; // bool
+ pub const m_flTimeCreated: usize = 0xEBC; // float
+ pub const m_vecStartPos: usize = 0xEC0; // Vector
+}
+
+pub mod C_C4 { // C_CSWeaponBase
+ pub const m_szScreenText: usize = 0x1A10; // char[32]
+ pub const m_activeLightParticleIndex: usize = 0x1A30; // ParticleIndex_t
+ pub const m_eActiveLightEffect: usize = 0x1A34; // C4LightEffect_t
+ pub const m_bStartedArming: usize = 0x1A38; // bool
+ pub const m_fArmedTime: usize = 0x1A3C; // GameTime_t
+ pub const m_bBombPlacedAnimation: usize = 0x1A40; // bool
+ pub const m_bIsPlantingViaUse: usize = 0x1A41; // bool
+ pub const m_entitySpottedState: usize = 0x1A48; // EntitySpottedState_t
+ pub const m_nSpotRules: usize = 0x1A60; // int32_t
+ pub const m_bPlayedArmingBeeps: usize = 0x1A64; // bool[7]
+ pub const m_bBombPlanted: usize = 0x1A6B; // bool
+ pub const m_bDroppedFromDeath: usize = 0x1A6C; // bool
+}
+
+pub mod C_CSGOViewModel { // C_PredictedViewModel
+ pub const m_bShouldIgnoreOffsetAndAccuracy: usize = 0xF10; // bool
+ pub const m_nWeaponParity: usize = 0xF14; // uint32_t
+ pub const m_nOldWeaponParity: usize = 0xF18; // uint32_t
+ pub const m_nLastKnownAssociatedWeaponEntIndex: usize = 0xF1C; // CEntityIndex
+ pub const m_bNeedToQueueHighResComposite: usize = 0xF20; // bool
+ pub const m_vLoweredWeaponOffset: usize = 0xF64; // QAngle
+}
+
+pub mod C_CSGO_CounterTerroristTeamIntroCamera { // C_CSGO_TeamPreviewCamera
+}
+
+pub mod C_CSGO_CounterTerroristWingmanIntroCamera { // C_CSGO_TeamPreviewCamera
+}
+
+pub mod C_CSGO_EndOfMatchCamera { // C_CSGO_TeamPreviewCamera
+}
+
+pub mod C_CSGO_EndOfMatchCharacterPosition { // C_CSGO_TeamPreviewCharacterPosition
+}
+
+pub mod C_CSGO_EndOfMatchLineupEnd { // C_CSGO_EndOfMatchLineupEndpoint
+}
+
+pub mod C_CSGO_EndOfMatchLineupEndpoint { // C_BaseEntity
+}
+
+pub mod C_CSGO_EndOfMatchLineupStart { // C_CSGO_EndOfMatchLineupEndpoint
+}
+
+pub mod C_CSGO_MapPreviewCameraPath { // C_BaseEntity
+ pub const m_flZFar: usize = 0x540; // float
+ pub const m_flZNear: usize = 0x544; // float
+ pub const m_bLoop: usize = 0x548; // bool
+ pub const m_bVerticalFOV: usize = 0x549; // bool
+ pub const m_bConstantSpeed: usize = 0x54A; // bool
+ pub const m_flDuration: usize = 0x54C; // float
+ pub const m_flPathLength: usize = 0x590; // float
+ pub const m_flPathDuration: usize = 0x594; // float
+}
+
+pub mod C_CSGO_MapPreviewCameraPathNode { // C_BaseEntity
+ pub const m_szParentPathUniqueID: usize = 0x540; // CUtlSymbolLarge
+ pub const m_nPathIndex: usize = 0x548; // int32_t
+ pub const m_vInTangentLocal: usize = 0x54C; // Vector
+ pub const m_vOutTangentLocal: usize = 0x558; // Vector
+ pub const m_flFOV: usize = 0x564; // float
+ pub const m_flSpeed: usize = 0x568; // float
+ pub const m_flEaseIn: usize = 0x56C; // float
+ pub const m_flEaseOut: usize = 0x570; // float
+ pub const m_vInTangentWorld: usize = 0x574; // Vector
+ pub const m_vOutTangentWorld: usize = 0x580; // Vector
+}
+
+pub mod C_CSGO_PreviewModel { // C_BaseFlex
+ pub const m_animgraph: usize = 0x1018; // CUtlString
+ pub const m_animgraphCharacterModeString: usize = 0x1020; // CUtlString
+ pub const m_defaultAnim: usize = 0x1028; // CUtlString
+ pub const m_nDefaultAnimLoopMode: usize = 0x1030; // AnimLoopMode_t
+ pub const m_flInitialModelScale: usize = 0x1034; // float
+}
+
+pub mod C_CSGO_PreviewModelAlias_csgo_item_previewmodel { // C_CSGO_PreviewModel
+}
+
+pub mod C_CSGO_PreviewPlayer { // C_CSPlayerPawn
+ pub const m_animgraph: usize = 0x23B8; // CUtlString
+ pub const m_animgraphCharacterModeString: usize = 0x23C0; // CUtlString
+ pub const m_flInitialModelScale: usize = 0x23C8; // float
+}
+
+pub mod C_CSGO_PreviewPlayerAlias_csgo_player_previewmodel { // C_CSGO_PreviewPlayer
+}
+
+pub mod C_CSGO_TeamIntroCharacterPosition { // C_CSGO_TeamPreviewCharacterPosition
+}
+
+pub mod C_CSGO_TeamIntroCounterTerroristPosition { // C_CSGO_TeamIntroCharacterPosition
+}
+
+pub mod C_CSGO_TeamIntroTerroristPosition { // C_CSGO_TeamIntroCharacterPosition
+}
+
+pub mod C_CSGO_TeamPreviewCamera { // C_CSGO_MapPreviewCameraPath
+ pub const m_nVariant: usize = 0x5A0; // int32_t
+ pub const m_bDofEnabled: usize = 0x5A4; // bool
+ pub const m_flDofNearBlurry: usize = 0x5A8; // float
+ pub const m_flDofNearCrisp: usize = 0x5AC; // float
+ pub const m_flDofFarCrisp: usize = 0x5B0; // float
+ pub const m_flDofFarBlurry: usize = 0x5B4; // float
+ pub const m_flDofTiltToGround: usize = 0x5B8; // float
+}
+
+pub mod C_CSGO_TeamPreviewCharacterPosition { // C_BaseEntity
+ pub const m_nVariant: usize = 0x540; // int32_t
+ pub const m_nRandom: usize = 0x544; // int32_t
+ pub const m_nOrdinal: usize = 0x548; // int32_t
+ pub const m_sWeaponName: usize = 0x550; // CUtlString
+ pub const m_xuid: usize = 0x558; // uint64_t
+ pub const m_agentItem: usize = 0x560; // C_EconItemView
+ pub const m_glovesItem: usize = 0x9A8; // C_EconItemView
+ pub const m_weaponItem: usize = 0xDF0; // C_EconItemView
+}
+
+pub mod C_CSGO_TeamPreviewModel { // C_CSGO_PreviewPlayer
+}
+
+pub mod C_CSGO_TeamSelectCamera { // C_CSGO_TeamPreviewCamera
+}
+
+pub mod C_CSGO_TeamSelectCharacterPosition { // C_CSGO_TeamPreviewCharacterPosition
+}
+
+pub mod C_CSGO_TeamSelectCounterTerroristPosition { // C_CSGO_TeamSelectCharacterPosition
+}
+
+pub mod C_CSGO_TeamSelectTerroristPosition { // C_CSGO_TeamSelectCharacterPosition
+}
+
+pub mod C_CSGO_TerroristTeamIntroCamera { // C_CSGO_TeamPreviewCamera
+}
+
+pub mod C_CSGO_TerroristWingmanIntroCamera { // C_CSGO_TeamPreviewCamera
+}
+
+pub mod C_CSGameRules { // C_TeamplayRules
+ pub const __m_pChainEntity: usize = 0x8; // CNetworkVarChainer
+ pub const m_bFreezePeriod: usize = 0x30; // bool
+ pub const m_bWarmupPeriod: usize = 0x31; // bool
+ pub const m_fWarmupPeriodEnd: usize = 0x34; // GameTime_t
+ pub const m_fWarmupPeriodStart: usize = 0x38; // GameTime_t
+ pub const m_nTotalPausedTicks: usize = 0x3C; // int32_t
+ pub const m_nPauseStartTick: usize = 0x40; // int32_t
+ pub const m_bServerPaused: usize = 0x44; // bool
+ pub const m_bGamePaused: usize = 0x45; // bool
+ pub const m_bTerroristTimeOutActive: usize = 0x46; // bool
+ pub const m_bCTTimeOutActive: usize = 0x47; // bool
+ pub const m_flTerroristTimeOutRemaining: usize = 0x48; // float
+ pub const m_flCTTimeOutRemaining: usize = 0x4C; // float
+ pub const m_nTerroristTimeOuts: usize = 0x50; // int32_t
+ pub const m_nCTTimeOuts: usize = 0x54; // int32_t
+ pub const m_bTechnicalTimeOut: usize = 0x58; // bool
+ pub const m_bMatchWaitingForResume: usize = 0x59; // bool
+ pub const m_iRoundTime: usize = 0x5C; // int32_t
+ pub const m_fMatchStartTime: usize = 0x60; // float
+ pub const m_fRoundStartTime: usize = 0x64; // GameTime_t
+ pub const m_flRestartRoundTime: usize = 0x68; // GameTime_t
+ pub const m_bGameRestart: usize = 0x6C; // bool
+ pub const m_flGameStartTime: usize = 0x70; // float
+ pub const m_timeUntilNextPhaseStarts: usize = 0x74; // float
+ pub const m_gamePhase: usize = 0x78; // int32_t
+ pub const m_totalRoundsPlayed: usize = 0x7C; // int32_t
+ pub const m_nRoundsPlayedThisPhase: usize = 0x80; // int32_t
+ pub const m_nOvertimePlaying: usize = 0x84; // int32_t
+ pub const m_iHostagesRemaining: usize = 0x88; // int32_t
+ pub const m_bAnyHostageReached: usize = 0x8C; // bool
+ pub const m_bMapHasBombTarget: usize = 0x8D; // bool
+ pub const m_bMapHasRescueZone: usize = 0x8E; // bool
+ pub const m_bMapHasBuyZone: usize = 0x8F; // bool
+ pub const m_bIsQueuedMatchmaking: usize = 0x90; // bool
+ pub const m_nQueuedMatchmakingMode: usize = 0x94; // int32_t
+ pub const m_bIsValveDS: usize = 0x98; // bool
+ pub const m_bLogoMap: usize = 0x99; // bool
+ pub const m_bPlayAllStepSoundsOnServer: usize = 0x9A; // bool
+ pub const m_iSpectatorSlotCount: usize = 0x9C; // int32_t
+ pub const m_MatchDevice: usize = 0xA0; // int32_t
+ pub const m_bHasMatchStarted: usize = 0xA4; // bool
+ pub const m_nNextMapInMapgroup: usize = 0xA8; // int32_t
+ pub const m_szTournamentEventName: usize = 0xAC; // char[512]
+ pub const m_szTournamentEventStage: usize = 0x2AC; // char[512]
+ pub const m_szMatchStatTxt: usize = 0x4AC; // char[512]
+ pub const m_szTournamentPredictionsTxt: usize = 0x6AC; // char[512]
+ pub const m_nTournamentPredictionsPct: usize = 0x8AC; // int32_t
+ pub const m_flCMMItemDropRevealStartTime: usize = 0x8B0; // GameTime_t
+ pub const m_flCMMItemDropRevealEndTime: usize = 0x8B4; // GameTime_t
+ pub const m_bIsDroppingItems: usize = 0x8B8; // bool
+ pub const m_bIsQuestEligible: usize = 0x8B9; // bool
+ pub const m_bIsHltvActive: usize = 0x8BA; // bool
+ pub const m_nGuardianModeWaveNumber: usize = 0x8BC; // int32_t
+ pub const m_nGuardianModeSpecialKillsRemaining: usize = 0x8C0; // int32_t
+ pub const m_nGuardianModeSpecialWeaponNeeded: usize = 0x8C4; // int32_t
+ pub const m_nGuardianGrenadesToGiveBots: usize = 0x8C8; // int32_t
+ pub const m_nNumHeaviesToSpawn: usize = 0x8CC; // int32_t
+ pub const m_numGlobalGiftsGiven: usize = 0x8D0; // uint32_t
+ pub const m_numGlobalGifters: usize = 0x8D4; // uint32_t
+ pub const m_numGlobalGiftsPeriodSeconds: usize = 0x8D8; // uint32_t
+ pub const m_arrFeaturedGiftersAccounts: usize = 0x8DC; // uint32_t[4]
+ pub const m_arrFeaturedGiftersGifts: usize = 0x8EC; // uint32_t[4]
+ pub const m_arrProhibitedItemIndices: usize = 0x8FC; // uint16_t[100]
+ pub const m_arrTournamentActiveCasterAccounts: usize = 0x9C4; // uint32_t[4]
+ pub const m_numBestOfMaps: usize = 0x9D4; // int32_t
+ pub const m_nHalloweenMaskListSeed: usize = 0x9D8; // int32_t
+ pub const m_bBombDropped: usize = 0x9DC; // bool
+ pub const m_bBombPlanted: usize = 0x9DD; // bool
+ pub const m_iRoundWinStatus: usize = 0x9E0; // int32_t
+ pub const m_eRoundWinReason: usize = 0x9E4; // int32_t
+ pub const m_bTCantBuy: usize = 0x9E8; // bool
+ pub const m_bCTCantBuy: usize = 0x9E9; // bool
+ pub const m_flGuardianBuyUntilTime: usize = 0x9EC; // GameTime_t
+ pub const m_iMatchStats_RoundResults: usize = 0x9F0; // int32_t[30]
+ pub const m_iMatchStats_PlayersAlive_CT: usize = 0xA68; // int32_t[30]
+ pub const m_iMatchStats_PlayersAlive_T: usize = 0xAE0; // int32_t[30]
+ pub const m_TeamRespawnWaveTimes: usize = 0xB58; // float[32]
+ pub const m_flNextRespawnWave: usize = 0xBD8; // GameTime_t[32]
+ pub const m_nServerQuestID: usize = 0xC58; // int32_t
+ pub const m_vMinimapMins: usize = 0xC5C; // Vector
+ pub const m_vMinimapMaxs: usize = 0xC68; // Vector
+ pub const m_MinimapVerticalSectionHeights: usize = 0xC74; // float[8]
+ pub const m_bDontIncrementCoopWave: usize = 0xC94; // bool
+ pub const m_bSpawnedTerrorHuntHeavy: usize = 0xC95; // bool
+ pub const m_nEndMatchMapGroupVoteTypes: usize = 0xC98; // int32_t[10]
+ pub const m_nEndMatchMapGroupVoteOptions: usize = 0xCC0; // int32_t[10]
+ pub const m_nEndMatchMapVoteWinner: usize = 0xCE8; // int32_t
+ pub const m_iNumConsecutiveCTLoses: usize = 0xCEC; // int32_t
+ pub const m_iNumConsecutiveTerroristLoses: usize = 0xCF0; // int32_t
+ pub const m_bMarkClientStopRecordAtRoundEnd: usize = 0xD10; // bool
+ pub const m_nMatchAbortedEarlyReason: usize = 0xD68; // int32_t
+ pub const m_bHasTriggeredRoundStartMusic: usize = 0xD6C; // bool
+ pub const m_bHasTriggeredCoopSpawnReset: usize = 0xD6D; // bool
+ pub const m_bSwitchingTeamsAtRoundReset: usize = 0xD6E; // bool
+ pub const m_pGameModeRules: usize = 0xD88; // CCSGameModeRules*
+ pub const m_RetakeRules: usize = 0xD90; // C_RetakeGameRules
+ pub const m_nMatchEndCount: usize = 0xEA8; // uint8_t
+ pub const m_nTTeamIntroVariant: usize = 0xEAC; // int32_t
+ pub const m_nCTTeamIntroVariant: usize = 0xEB0; // int32_t
+ pub const m_bTeamIntroPeriod: usize = 0xEB4; // bool
+ pub const m_flLastPerfSampleTime: usize = 0x4EC0; // double
+}
+
+pub mod C_CSGameRulesProxy { // C_GameRulesProxy
+ pub const m_pGameRules: usize = 0x540; // C_CSGameRules*
+}
+
+pub mod C_CSMinimapBoundary { // C_BaseEntity
+}
+
+pub mod C_CSObserverPawn { // C_CSPlayerPawnBase
+ pub const m_hDetectParentChange: usize = 0x16B8; // CEntityHandle
+}
+
+pub mod C_CSPlayerPawn { // C_CSPlayerPawnBase
+ pub const m_pBulletServices: usize = 0x16B8; // CCSPlayer_BulletServices*
+ pub const m_pHostageServices: usize = 0x16C0; // CCSPlayer_HostageServices*
+ pub const m_pBuyServices: usize = 0x16C8; // CCSPlayer_BuyServices*
+ pub const m_pGlowServices: usize = 0x16D0; // CCSPlayer_GlowServices*
+ pub const m_pActionTrackingServices: usize = 0x16D8; // CCSPlayer_ActionTrackingServices*
+ pub const m_flHealthShotBoostExpirationTime: usize = 0x16E0; // GameTime_t
+ pub const m_flLastFiredWeaponTime: usize = 0x16E4; // GameTime_t
+ pub const m_bHasFemaleVoice: usize = 0x16E8; // bool
+ pub const m_flLandseconds: usize = 0x16EC; // float
+ pub const m_flOldFallVelocity: usize = 0x16F0; // float
+ pub const m_szLastPlaceName: usize = 0x16F4; // char[18]
+ pub const m_bPrevDefuser: usize = 0x1706; // bool
+ pub const m_bPrevHelmet: usize = 0x1707; // bool
+ pub const m_nPrevArmorVal: usize = 0x1708; // int32_t
+ pub const m_nPrevGrenadeAmmoCount: usize = 0x170C; // int32_t
+ pub const m_unPreviousWeaponHash: usize = 0x1710; // uint32_t
+ pub const m_unWeaponHash: usize = 0x1714; // uint32_t
+ pub const m_bInBuyZone: usize = 0x1718; // bool
+ pub const m_bPreviouslyInBuyZone: usize = 0x1719; // bool
+ pub const m_aimPunchAngle: usize = 0x171C; // QAngle
+ pub const m_aimPunchAngleVel: usize = 0x1728; // QAngle
+ pub const m_aimPunchTickBase: usize = 0x1734; // int32_t
+ pub const m_aimPunchTickFraction: usize = 0x1738; // float
+ pub const m_aimPunchCache: usize = 0x1740; // CUtlVector<QAngle>
+ pub const m_bInLanding: usize = 0x1760; // bool
+ pub const m_flLandingTime: usize = 0x1764; // float
+ pub const m_bInHostageRescueZone: usize = 0x1768; // bool
+ pub const m_bInBombZone: usize = 0x1769; // bool
+ pub const m_bIsBuyMenuOpen: usize = 0x176A; // bool
+ pub const m_flTimeOfLastInjury: usize = 0x176C; // GameTime_t
+ pub const m_flNextSprayDecalTime: usize = 0x1770; // GameTime_t
+ pub const m_iRetakesOffering: usize = 0x1888; // int32_t
+ pub const m_iRetakesOfferingCard: usize = 0x188C; // int32_t
+ pub const m_bRetakesHasDefuseKit: usize = 0x1890; // bool
+ pub const m_bRetakesMVPLastRound: usize = 0x1891; // bool
+ pub const m_iRetakesMVPBoostItem: usize = 0x1894; // int32_t
+ pub const m_RetakesMVPBoostExtraUtility: usize = 0x1898; // loadout_slot_t
+ pub const m_bNeedToReApplyGloves: usize = 0x18B8; // bool
+ pub const m_EconGloves: usize = 0x18C0; // C_EconItemView
+ pub const m_bMustSyncRagdollState: usize = 0x1D08; // bool
+ pub const m_nRagdollDamageBone: usize = 0x1D0C; // int32_t
+ pub const m_vRagdollDamageForce: usize = 0x1D10; // Vector
+ pub const m_vRagdollDamagePosition: usize = 0x1D1C; // Vector
+ pub const m_szRagdollDamageWeaponName: usize = 0x1D28; // char[64]
+ pub const m_bRagdollDamageHeadshot: usize = 0x1D68; // bool
+ pub const m_vRagdollServerOrigin: usize = 0x1D6C; // Vector
+ pub const m_bLastHeadBoneTransformIsValid: usize = 0x2380; // bool
+ pub const m_lastLandTime: usize = 0x2384; // GameTime_t
+ pub const m_bOnGroundLastTick: usize = 0x2388; // bool
+ pub const m_qDeathEyeAngles: usize = 0x23A4; // QAngle
+ pub const m_bSkipOneHeadConstraintUpdate: usize = 0x23B0; // bool
+}
+
+pub mod C_CSPlayerPawnBase { // C_BasePlayerPawn
+ pub const m_pPingServices: usize = 0x1268; // CCSPlayer_PingServices*
+ pub const m_pViewModelServices: usize = 0x1270; // CPlayer_ViewModelServices*
+ pub const m_fRenderingClipPlane: usize = 0x1280; // float[4]
+ pub const m_nLastClipPlaneSetupFrame: usize = 0x1290; // int32_t
+ pub const m_vecLastClipCameraPos: usize = 0x1294; // Vector
+ pub const m_vecLastClipCameraForward: usize = 0x12A0; // Vector
+ pub const m_bClipHitStaticWorld: usize = 0x12AC; // bool
+ pub const m_bCachedPlaneIsValid: usize = 0x12AD; // bool
+ pub const m_pClippingWeapon: usize = 0x12B0; // C_CSWeaponBase*
+ pub const m_previousPlayerState: usize = 0x12B8; // CSPlayerState
+ pub const m_flLastCollisionCeiling: usize = 0x12BC; // float
+ pub const m_flLastCollisionCeilingChangeTime: usize = 0x12C0; // float
+ pub const m_grenadeParameterStashTime: usize = 0x12E0; // GameTime_t
+ pub const m_bGrenadeParametersStashed: usize = 0x12E4; // bool
+ pub const m_angStashedShootAngles: usize = 0x12E8; // QAngle
+ pub const m_vecStashedGrenadeThrowPosition: usize = 0x12F4; // Vector
+ pub const m_vecStashedVelocity: usize = 0x1300; // Vector
+ pub const m_angShootAngleHistory: usize = 0x130C; // QAngle[2]
+ pub const m_vecThrowPositionHistory: usize = 0x1324; // Vector[2]
+ pub const m_vecVelocityHistory: usize = 0x133C; // Vector[2]
+ pub const m_thirdPersonHeading: usize = 0x1358; // QAngle
+ pub const m_flSlopeDropOffset: usize = 0x1370; // float
+ pub const m_flSlopeDropHeight: usize = 0x1380; // float
+ pub const m_vHeadConstraintOffset: usize = 0x1390; // Vector
+ pub const m_bIsScoped: usize = 0x13A8; // bool
+ pub const m_bIsWalking: usize = 0x13A9; // bool
+ pub const m_bResumeZoom: usize = 0x13AA; // bool
+ pub const m_iPlayerState: usize = 0x13AC; // CSPlayerState
+ pub const m_bIsDefusing: usize = 0x13B0; // bool
+ pub const m_bIsGrabbingHostage: usize = 0x13B1; // bool
+ pub const m_iBlockingUseActionInProgress: usize = 0x13B4; // CSPlayerBlockingUseAction_t
+ pub const m_bIsRescuing: usize = 0x13B8; // bool
+ pub const m_fImmuneToGunGameDamageTime: usize = 0x13BC; // GameTime_t
+ pub const m_fImmuneToGunGameDamageTimeLast: usize = 0x13C0; // GameTime_t
+ pub const m_bGunGameImmunity: usize = 0x13C4; // bool
+ pub const m_bHasMovedSinceSpawn: usize = 0x13C5; // bool
+ pub const m_fMolotovUseTime: usize = 0x13C8; // float
+ pub const m_fMolotovDamageTime: usize = 0x13CC; // float
+ pub const m_nWhichBombZone: usize = 0x13D0; // int32_t
+ pub const m_bInNoDefuseArea: usize = 0x13D4; // bool
+ pub const m_iThrowGrenadeCounter: usize = 0x13D8; // int32_t
+ pub const m_bWaitForNoAttack: usize = 0x13DC; // bool
+ pub const m_flGuardianTooFarDistFrac: usize = 0x13E0; // float
+ pub const m_flDetectedByEnemySensorTime: usize = 0x13E4; // GameTime_t
+ pub const m_flNextGuardianTooFarWarning: usize = 0x13E8; // float
+ pub const m_bSuppressGuardianTooFarWarningAudio: usize = 0x13EC; // bool
+ pub const m_bKilledByTaser: usize = 0x13ED; // bool
+ pub const m_iMoveState: usize = 0x13F0; // int32_t
+ pub const m_bCanMoveDuringFreezePeriod: usize = 0x13F4; // bool
+ pub const m_flLowerBodyYawTarget: usize = 0x13F8; // float
+ pub const m_bStrafing: usize = 0x13FC; // bool
+ pub const m_flLastSpawnTimeIndex: usize = 0x1400; // GameTime_t
+ pub const m_flEmitSoundTime: usize = 0x1404; // GameTime_t
+ pub const m_iAddonBits: usize = 0x1408; // int32_t
+ pub const m_iPrimaryAddon: usize = 0x140C; // int32_t
+ pub const m_iSecondaryAddon: usize = 0x1410; // int32_t
+ pub const m_iProgressBarDuration: usize = 0x1414; // int32_t
+ pub const m_flProgressBarStartTime: usize = 0x1418; // float
+ pub const m_iDirection: usize = 0x141C; // int32_t
+ pub const m_iShotsFired: usize = 0x1420; // int32_t
+ pub const m_bNightVisionOn: usize = 0x1424; // bool
+ pub const m_bHasNightVision: usize = 0x1425; // bool
+ pub const m_flVelocityModifier: usize = 0x1428; // float
+ pub const m_flHitHeading: usize = 0x142C; // float
+ pub const m_nHitBodyPart: usize = 0x1430; // int32_t
+ pub const m_iStartAccount: usize = 0x1434; // int32_t
+ pub const m_vecIntroStartEyePosition: usize = 0x1438; // Vector
+ pub const m_vecIntroStartPlayerForward: usize = 0x1444; // Vector
+ pub const m_flClientDeathTime: usize = 0x1450; // GameTime_t
+ pub const m_flNightVisionAlpha: usize = 0x1454; // float
+ pub const m_bScreenTearFrameCaptured: usize = 0x1458; // bool
+ pub const m_flFlashBangTime: usize = 0x145C; // float
+ pub const m_flFlashScreenshotAlpha: usize = 0x1460; // float
+ pub const m_flFlashOverlayAlpha: usize = 0x1464; // float
+ pub const m_bFlashBuildUp: usize = 0x1468; // bool
+ pub const m_bFlashDspHasBeenCleared: usize = 0x1469; // bool
+ pub const m_bFlashScreenshotHasBeenGrabbed: usize = 0x146A; // bool
+ pub const m_flFlashMaxAlpha: usize = 0x146C; // float
+ pub const m_flFlashDuration: usize = 0x1470; // float
+ pub const m_lastStandingPos: usize = 0x1474; // Vector
+ pub const m_vecLastMuzzleFlashPos: usize = 0x1480; // Vector
+ pub const m_angLastMuzzleFlashAngle: usize = 0x148C; // QAngle
+ pub const m_hMuzzleFlashShape: usize = 0x1498; // CHandle<C_BaseEntity>
+ pub const m_iHealthBarRenderMaskIndex: usize = 0x149C; // int32_t
+ pub const m_flHealthFadeValue: usize = 0x14A0; // float
+ pub const m_flHealthFadeAlpha: usize = 0x14A4; // float
+ pub const m_nMyCollisionGroup: usize = 0x14A8; // int32_t
+ pub const m_ignoreLadderJumpTime: usize = 0x14AC; // float
+ pub const m_ladderSurpressionTimer: usize = 0x14B0; // CountdownTimer
+ pub const m_lastLadderNormal: usize = 0x14C8; // Vector
+ pub const m_lastLadderPos: usize = 0x14D4; // Vector
+ pub const m_flDeathCCWeight: usize = 0x14E8; // float
+ pub const m_bOldIsScoped: usize = 0x14EC; // bool
+ pub const m_flPrevRoundEndTime: usize = 0x14F0; // float
+ pub const m_flPrevMatchEndTime: usize = 0x14F4; // float
+ pub const m_unCurrentEquipmentValue: usize = 0x14F8; // uint16_t
+ pub const m_unRoundStartEquipmentValue: usize = 0x14FA; // uint16_t
+ pub const m_unFreezetimeEndEquipmentValue: usize = 0x14FC; // uint16_t
+ pub const m_vecThirdPersonViewPositionOverride: usize = 0x1500; // Vector
+ pub const m_nHeavyAssaultSuitCooldownRemaining: usize = 0x150C; // int32_t
+ pub const m_ArmorValue: usize = 0x1510; // int32_t
+ pub const m_angEyeAngles: usize = 0x1518; // QAngle
+ pub const m_fNextThinkPushAway: usize = 0x1530; // float
+ pub const m_bShouldAutobuyDMWeapons: usize = 0x1534; // bool
+ pub const m_bShouldAutobuyNow: usize = 0x1535; // bool
+ pub const m_bHud_MiniScoreHidden: usize = 0x1536; // bool
+ pub const m_bHud_RadarHidden: usize = 0x1537; // bool
+ pub const m_nLastKillerIndex: usize = 0x1538; // CEntityIndex
+ pub const m_nLastConcurrentKilled: usize = 0x153C; // int32_t
+ pub const m_nDeathCamMusic: usize = 0x1540; // int32_t
+ pub const m_iIDEntIndex: usize = 0x1544; // CEntityIndex
+ pub const m_delayTargetIDTimer: usize = 0x1548; // CountdownTimer
+ pub const m_iTargetedWeaponEntIndex: usize = 0x1560; // CEntityIndex
+ pub const m_iOldIDEntIndex: usize = 0x1564; // CEntityIndex
+ pub const m_holdTargetIDTimer: usize = 0x1568; // CountdownTimer
+ pub const m_flCurrentMusicStartTime: usize = 0x1584; // float
+ pub const m_flMusicRoundStartTime: usize = 0x1588; // float
+ pub const m_bDeferStartMusicOnWarmup: usize = 0x158C; // bool
+ pub const m_cycleLatch: usize = 0x1590; // int32_t
+ pub const m_serverIntendedCycle: usize = 0x1594; // float
+ pub const m_vecPlayerPatchEconIndices: usize = 0x1598; // uint32_t[5]
+ pub const m_bHideTargetID: usize = 0x15B4; // bool
+ pub const m_nextTaserShakeTime: usize = 0x15B8; // float
+ pub const m_firstTaserShakeTime: usize = 0x15BC; // float
+ pub const m_flLastSmokeOverlayAlpha: usize = 0x15C0; // float
+ pub const m_vLastSmokeOverlayColor: usize = 0x15C4; // Vector
+ pub const m_nPlayerSmokedFx: usize = 0x15D0; // ParticleIndex_t
+ pub const m_flNextMagDropTime: usize = 0x15D4; // float
+ pub const m_nLastMagDropAttachmentIndex: usize = 0x15D8; // int32_t
+ pub const m_vecBulletHitModels: usize = 0x15E0; // CUtlVector<C_BulletHitModel*>
+ pub const m_vecPickupModelSlerpers: usize = 0x15F8; // CUtlVector<C_PickUpModelSlerper*>
+ pub const m_vecLastAliveLocalVelocity: usize = 0x1610; // Vector
+ pub const m_entitySpottedState: usize = 0x1638; // EntitySpottedState_t
+ pub const m_nSurvivalTeamNumber: usize = 0x1650; // int32_t
+ pub const m_bGuardianShouldSprayCustomXMark: usize = 0x1654; // bool
+ pub const m_bHasDeathInfo: usize = 0x1655; // bool
+ pub const m_flDeathInfoTime: usize = 0x1658; // float
+ pub const m_vecDeathInfoOrigin: usize = 0x165C; // Vector
+ pub const m_bKilledByHeadshot: usize = 0x1668; // bool
+ pub const m_hOriginalController: usize = 0x166C; // CHandle<CCSPlayerController>
+}
+
+pub mod C_CSPlayerResource { // C_BaseEntity
+ pub const m_bHostageAlive: usize = 0x540; // bool[12]
+ pub const m_isHostageFollowingSomeone: usize = 0x54C; // bool[12]
+ pub const m_iHostageEntityIDs: usize = 0x558; // CEntityIndex[12]
+ pub const m_bombsiteCenterA: usize = 0x588; // Vector
+ pub const m_bombsiteCenterB: usize = 0x594; // Vector
+ pub const m_hostageRescueX: usize = 0x5A0; // int32_t[4]
+ pub const m_hostageRescueY: usize = 0x5B0; // int32_t[4]
+ pub const m_hostageRescueZ: usize = 0x5C0; // int32_t[4]
+ pub const m_bEndMatchNextMapAllVoted: usize = 0x5D0; // bool
+ pub const m_foundGoalPositions: usize = 0x5D1; // bool
+}
+
+pub mod C_CSTeam { // C_Team
+ pub const m_szTeamMatchStat: usize = 0x5F8; // char[512]
+ pub const m_numMapVictories: usize = 0x7F8; // int32_t
+ pub const m_bSurrendered: usize = 0x7FC; // bool
+ pub const m_scoreFirstHalf: usize = 0x800; // int32_t
+ pub const m_scoreSecondHalf: usize = 0x804; // int32_t
+ pub const m_scoreOvertime: usize = 0x808; // int32_t
+ pub const m_szClanTeamname: usize = 0x80C; // char[129]
+ pub const m_iClanID: usize = 0x890; // uint32_t
+ pub const m_szTeamFlagImage: usize = 0x894; // char[8]
+ pub const m_szTeamLogoImage: usize = 0x89C; // char[8]
+}
+
+pub mod C_CSWeaponBase { // C_BasePlayerWeapon
+ pub const m_flFireSequenceStartTime: usize = 0x15D4; // float
+ pub const m_nFireSequenceStartTimeChange: usize = 0x15D8; // int32_t
+ pub const m_nFireSequenceStartTimeAck: usize = 0x15DC; // int32_t
+ pub const m_ePlayerFireEvent: usize = 0x15E0; // PlayerAnimEvent_t
+ pub const m_ePlayerFireEventAttackType: usize = 0x15E4; // WeaponAttackType_t
+ pub const m_seqIdle: usize = 0x15E8; // HSequence
+ pub const m_seqFirePrimary: usize = 0x15EC; // HSequence
+ pub const m_seqFireSecondary: usize = 0x15F0; // HSequence
+ pub const m_thirdPersonFireSequences: usize = 0x15F8; // CUtlVector<HSequence>
+ pub const m_hCurrentThirdPersonSequence: usize = 0x1610; // HSequence
+ pub const m_nSilencerBoneIndex: usize = 0x1614; // int32_t
+ pub const m_thirdPersonSequences: usize = 0x1618; // HSequence[7]
+ pub const m_ClientPreviousWeaponState: usize = 0x1650; // CSWeaponState_t
+ pub const m_iState: usize = 0x1654; // CSWeaponState_t
+ pub const m_flCrosshairDistance: usize = 0x1658; // float
+ pub const m_iAmmoLastCheck: usize = 0x165C; // int32_t
+ pub const m_iAlpha: usize = 0x1660; // int32_t
+ pub const m_iScopeTextureID: usize = 0x1664; // int32_t
+ pub const m_iCrosshairTextureID: usize = 0x1668; // int32_t
+ pub const m_flGunAccuracyPosition: usize = 0x166C; // float
+ pub const m_nViewModelIndex: usize = 0x1670; // uint32_t
+ pub const m_bReloadsWithClips: usize = 0x1674; // bool
+ pub const m_flTimeWeaponIdle: usize = 0x1678; // GameTime_t
+ pub const m_bFireOnEmpty: usize = 0x167C; // bool
+ pub const m_OnPlayerPickup: usize = 0x1680; // CEntityIOOutput
+ pub const m_weaponMode: usize = 0x16A8; // CSWeaponMode
+ pub const m_flTurningInaccuracyDelta: usize = 0x16AC; // float
+ pub const m_vecTurningInaccuracyEyeDirLast: usize = 0x16B0; // Vector
+ pub const m_flTurningInaccuracy: usize = 0x16BC; // float
+ pub const m_fAccuracyPenalty: usize = 0x16C0; // float
+ pub const m_flLastAccuracyUpdateTime: usize = 0x16C4; // GameTime_t
+ pub const m_fAccuracySmoothedForZoom: usize = 0x16C8; // float
+ pub const m_fScopeZoomEndTime: usize = 0x16CC; // GameTime_t
+ pub const m_iRecoilIndex: usize = 0x16D0; // int32_t
+ pub const m_flRecoilIndex: usize = 0x16D4; // float
+ pub const m_bBurstMode: usize = 0x16D8; // bool
+ pub const m_nPostponeFireReadyTicks: usize = 0x16DC; // GameTick_t
+ pub const m_flPostponeFireReadyFrac: usize = 0x16E0; // float
+ pub const m_bInReload: usize = 0x16E4; // bool
+ pub const m_bReloadVisuallyComplete: usize = 0x16E5; // bool
+ pub const m_flDroppedAtTime: usize = 0x16E8; // GameTime_t
+ pub const m_bIsHauledBack: usize = 0x16EC; // bool
+ pub const m_bSilencerOn: usize = 0x16ED; // bool
+ pub const m_flTimeSilencerSwitchComplete: usize = 0x16F0; // GameTime_t
+ pub const m_iOriginalTeamNumber: usize = 0x16F4; // int32_t
+ pub const m_flNextAttackRenderTimeOffset: usize = 0x16F8; // float
+ pub const m_bVisualsDataSet: usize = 0x1780; // bool
+ pub const m_bOldFirstPersonSpectatedState: usize = 0x1781; // bool
+ pub const m_hOurPing: usize = 0x1784; // CHandle<C_BaseEntity>
+ pub const m_nOurPingIndex: usize = 0x1788; // CEntityIndex
+ pub const m_vecOurPingPos: usize = 0x178C; // Vector
+ pub const m_bGlowForPing: usize = 0x1798; // bool
+ pub const m_bUIWeapon: usize = 0x1799; // bool
+ pub const m_hPrevOwner: usize = 0x17A8; // CHandle<C_CSPlayerPawn>
+ pub const m_nDropTick: usize = 0x17AC; // GameTick_t
+ pub const m_donated: usize = 0x17CC; // bool
+ pub const m_fLastShotTime: usize = 0x17D0; // GameTime_t
+ pub const m_bWasOwnedByCT: usize = 0x17D4; // bool
+ pub const m_bWasOwnedByTerrorist: usize = 0x17D5; // bool
+ pub const m_gunHeat: usize = 0x17D8; // float
+ pub const m_smokeAttachments: usize = 0x17DC; // uint32_t
+ pub const m_lastSmokeTime: usize = 0x17E0; // GameTime_t
+ pub const m_flNextClientFireBulletTime: usize = 0x17E4; // float
+ pub const m_flNextClientFireBulletTime_Repredict: usize = 0x17E8; // float
+ pub const m_IronSightController: usize = 0x18C0; // C_IronSightController
+ pub const m_iIronSightMode: usize = 0x1970; // int32_t
+ pub const m_flLastLOSTraceFailureTime: usize = 0x1980; // GameTime_t
+ pub const m_iNumEmptyAttacks: usize = 0x1984; // int32_t
+ pub const m_flLastMagDropRequestTime: usize = 0x1A00; // GameTime_t
+}
+
+pub mod C_CSWeaponBaseGun { // C_CSWeaponBase
+ pub const m_zoomLevel: usize = 0x1A10; // int32_t
+ pub const m_iBurstShotsRemaining: usize = 0x1A14; // int32_t
+ pub const m_iSilencerBodygroup: usize = 0x1A18; // int32_t
+ pub const m_silencedModelIndex: usize = 0x1A28; // int32_t
+ pub const m_inPrecache: usize = 0x1A2C; // bool
+ pub const m_bNeedsBoltAction: usize = 0x1A2D; // bool
+}
+
+pub mod C_Chicken { // C_DynamicProp
+ pub const m_hHolidayHatAddon: usize = 0x10F0; // CHandle<CBaseAnimGraph>
+ pub const m_jumpedThisFrame: usize = 0x10F4; // bool
+ pub const m_leader: usize = 0x10F8; // CHandle<C_CSPlayerPawnBase>
+ pub const m_AttributeManager: usize = 0x1100; // C_AttributeContainer
+ pub const m_OriginalOwnerXuidLow: usize = 0x15A8; // uint32_t
+ pub const m_OriginalOwnerXuidHigh: usize = 0x15AC; // uint32_t
+ pub const m_bAttributesInitialized: usize = 0x15B0; // bool
+ pub const m_hWaterWakeParticles: usize = 0x15B4; // ParticleIndex_t
+}
+
+pub mod C_ClientRagdoll { // CBaseAnimGraph
+ pub const m_bFadeOut: usize = 0xE80; // bool
+ pub const m_bImportant: usize = 0xE81; // bool
+ pub const m_flEffectTime: usize = 0xE84; // GameTime_t
+ pub const m_gibDespawnTime: usize = 0xE88; // GameTime_t
+ pub const m_iCurrentFriction: usize = 0xE8C; // int32_t
+ pub const m_iMinFriction: usize = 0xE90; // int32_t
+ pub const m_iMaxFriction: usize = 0xE94; // int32_t
+ pub const m_iFrictionAnimState: usize = 0xE98; // int32_t
+ pub const m_bReleaseRagdoll: usize = 0xE9C; // bool
+ pub const m_iEyeAttachment: usize = 0xE9D; // AttachmentHandle_t
+ pub const m_bFadingOut: usize = 0xE9E; // bool
+ pub const m_flScaleEnd: usize = 0xEA0; // float[10]
+ pub const m_flScaleTimeStart: usize = 0xEC8; // GameTime_t[10]
+ pub const m_flScaleTimeEnd: usize = 0xEF0; // GameTime_t[10]
+}
+
+pub mod C_ColorCorrection { // C_BaseEntity
+ pub const m_vecOrigin: usize = 0x540; // Vector
+ pub const m_MinFalloff: usize = 0x54C; // float
+ pub const m_MaxFalloff: usize = 0x550; // float
+ pub const m_flFadeInDuration: usize = 0x554; // float
+ pub const m_flFadeOutDuration: usize = 0x558; // float
+ pub const m_flMaxWeight: usize = 0x55C; // float
+ pub const m_flCurWeight: usize = 0x560; // float
+ pub const m_netlookupFilename: usize = 0x564; // char[512]
+ pub const m_bEnabled: usize = 0x764; // bool
+ pub const m_bMaster: usize = 0x765; // bool
+ pub const m_bClientSide: usize = 0x766; // bool
+ pub const m_bExclusive: usize = 0x767; // bool
+ pub const m_bEnabledOnClient: usize = 0x768; // bool[1]
+ pub const m_flCurWeightOnClient: usize = 0x76C; // float[1]
+ pub const m_bFadingIn: usize = 0x770; // bool[1]
+ pub const m_flFadeStartWeight: usize = 0x774; // float[1]
+ pub const m_flFadeStartTime: usize = 0x778; // float[1]
+ pub const m_flFadeDuration: usize = 0x77C; // float[1]
+}
+
+pub mod C_ColorCorrectionVolume { // C_BaseTrigger
+ pub const m_LastEnterWeight: usize = 0xCC8; // float
+ pub const m_LastEnterTime: usize = 0xCCC; // float
+ pub const m_LastExitWeight: usize = 0xCD0; // float
+ pub const m_LastExitTime: usize = 0xCD4; // float
+ pub const m_bEnabled: usize = 0xCD8; // bool
+ pub const m_MaxWeight: usize = 0xCDC; // float
+ pub const m_FadeDuration: usize = 0xCE0; // float
+ pub const m_Weight: usize = 0xCE4; // float
+ pub const m_lookupFilename: usize = 0xCE8; // char[512]
+}
+
+pub mod C_CommandContext {
+ pub const needsprocessing: usize = 0x0; // bool
+ pub const command_number: usize = 0xA8; // int32_t
+}
+
+pub mod C_CsmFovOverride { // C_BaseEntity
+ pub const m_cameraName: usize = 0x540; // CUtlString
+ pub const m_flCsmFovOverrideValue: usize = 0x548; // float
+}
+
+pub mod C_DEagle { // C_CSWeaponBaseGun
+}
+
+pub mod C_DecoyGrenade { // C_BaseCSGrenade
+}
+
+pub mod C_DecoyProjectile { // C_BaseCSGrenadeProjectile
+ pub const m_nDecoyShotTick: usize = 0x1100; // int32_t
+ pub const m_nClientLastKnownDecoyShotTick: usize = 0x1104; // int32_t
+ pub const m_flTimeParticleEffectSpawn: usize = 0x1128; // GameTime_t
+}
+
+pub mod C_DynamicLight { // C_BaseModelEntity
+ pub const m_Flags: usize = 0xCC0; // uint8_t
+ pub const m_LightStyle: usize = 0xCC1; // uint8_t
+ pub const m_Radius: usize = 0xCC4; // float
+ pub const m_Exponent: usize = 0xCC8; // int32_t
+ pub const m_InnerAngle: usize = 0xCCC; // float
+ pub const m_OuterAngle: usize = 0xCD0; // float
+ pub const m_SpotRadius: usize = 0xCD4; // float
+}
+
+pub mod C_DynamicProp { // C_BreakableProp
+ pub const m_bUseHitboxesForRenderBox: usize = 0xFD0; // bool
+ pub const m_bUseAnimGraph: usize = 0xFD1; // bool
+ pub const m_pOutputAnimBegun: usize = 0xFD8; // CEntityIOOutput
+ pub const m_pOutputAnimOver: usize = 0x1000; // CEntityIOOutput
+ pub const m_pOutputAnimLoopCycleOver: usize = 0x1028; // CEntityIOOutput
+ pub const m_OnAnimReachedStart: usize = 0x1050; // CEntityIOOutput
+ pub const m_OnAnimReachedEnd: usize = 0x1078; // CEntityIOOutput
+ pub const m_iszDefaultAnim: usize = 0x10A0; // CUtlSymbolLarge
+ pub const m_nDefaultAnimLoopMode: usize = 0x10A8; // AnimLoopMode_t
+ pub const m_bAnimateOnServer: usize = 0x10AC; // bool
+ pub const m_bRandomizeCycle: usize = 0x10AD; // bool
+ pub const m_bStartDisabled: usize = 0x10AE; // bool
+ pub const m_bScriptedMovement: usize = 0x10AF; // bool
+ pub const m_bFiredStartEndOutput: usize = 0x10B0; // bool
+ pub const m_bForceNpcExclude: usize = 0x10B1; // bool
+ pub const m_bCreateNonSolid: usize = 0x10B2; // bool
+ pub const m_bIsOverrideProp: usize = 0x10B3; // bool
+ pub const m_iInitialGlowState: usize = 0x10B4; // int32_t
+ pub const m_nGlowRange: usize = 0x10B8; // int32_t
+ pub const m_nGlowRangeMin: usize = 0x10BC; // int32_t
+ pub const m_glowColor: usize = 0x10C0; // Color
+ pub const m_nGlowTeam: usize = 0x10C4; // int32_t
+ pub const m_iCachedFrameCount: usize = 0x10C8; // int32_t
+ pub const m_vecCachedRenderMins: usize = 0x10CC; // Vector
+ pub const m_vecCachedRenderMaxs: usize = 0x10D8; // Vector
+}
+
+pub mod C_DynamicPropAlias_cable_dynamic { // C_DynamicProp
+}
+
+pub mod C_DynamicPropAlias_dynamic_prop { // C_DynamicProp
+}
+
+pub mod C_DynamicPropAlias_prop_dynamic_override { // C_DynamicProp
+}
+
+pub mod C_EconEntity { // C_BaseFlex
+ pub const m_flFlexDelayTime: usize = 0x1028; // float
+ pub const m_flFlexDelayedWeight: usize = 0x1030; // float*
+ pub const m_bAttributesInitialized: usize = 0x1038; // bool
+ pub const m_AttributeManager: usize = 0x1040; // C_AttributeContainer
+ pub const m_OriginalOwnerXuidLow: usize = 0x14E8; // uint32_t
+ pub const m_OriginalOwnerXuidHigh: usize = 0x14EC; // uint32_t
+ pub const m_nFallbackPaintKit: usize = 0x14F0; // int32_t
+ pub const m_nFallbackSeed: usize = 0x14F4; // int32_t
+ pub const m_flFallbackWear: usize = 0x14F8; // float
+ pub const m_nFallbackStatTrak: usize = 0x14FC; // int32_t
+ pub const m_bClientside: usize = 0x1500; // bool
+ pub const m_bParticleSystemsCreated: usize = 0x1501; // bool
+ pub const m_vecAttachedParticles: usize = 0x1508; // CUtlVector<int32_t>
+ pub const m_hViewmodelAttachment: usize = 0x1520; // CHandle<CBaseAnimGraph>
+ pub const m_iOldTeam: usize = 0x1524; // int32_t
+ pub const m_bAttachmentDirty: usize = 0x1528; // bool
+ pub const m_nUnloadedModelIndex: usize = 0x152C; // int32_t
+ pub const m_iNumOwnerValidationRetries: usize = 0x1530; // int32_t
+ pub const m_hOldProvidee: usize = 0x1540; // CHandle<C_BaseEntity>
+ pub const m_vecAttachedModels: usize = 0x1548; // CUtlVector<C_EconEntity::AttachedModelData_t>
+}
+
+pub mod C_EconEntity_AttachedModelData_t {
+ pub const m_iModelDisplayFlags: usize = 0x0; // int32_t
+}
+
+pub mod C_EconItemView { // IEconItemInterface
+ pub const m_bInventoryImageRgbaRequested: usize = 0x60; // bool
+ pub const m_bInventoryImageTriedCache: usize = 0x61; // bool
+ pub const m_nInventoryImageRgbaWidth: usize = 0x80; // int32_t
+ pub const m_nInventoryImageRgbaHeight: usize = 0x84; // int32_t
+ pub const m_szCurrentLoadCachedFileName: usize = 0x88; // char[260]
+ pub const m_bRestoreCustomMaterialAfterPrecache: usize = 0x1B8; // bool
+ pub const m_iItemDefinitionIndex: usize = 0x1BA; // uint16_t
+ pub const m_iEntityQuality: usize = 0x1BC; // int32_t
+ pub const m_iEntityLevel: usize = 0x1C0; // uint32_t
+ pub const m_iItemID: usize = 0x1C8; // uint64_t
+ pub const m_iItemIDHigh: usize = 0x1D0; // uint32_t
+ pub const m_iItemIDLow: usize = 0x1D4; // uint32_t
+ pub const m_iAccountID: usize = 0x1D8; // uint32_t
+ pub const m_iInventoryPosition: usize = 0x1DC; // uint32_t
+ pub const m_bInitialized: usize = 0x1E8; // bool
+ pub const m_bIsStoreItem: usize = 0x1E9; // bool
+ pub const m_bIsTradeItem: usize = 0x1EA; // bool
+ pub const m_iEntityQuantity: usize = 0x1EC; // int32_t
+ pub const m_iRarityOverride: usize = 0x1F0; // int32_t
+ pub const m_iQualityOverride: usize = 0x1F4; // int32_t
+ pub const m_unClientFlags: usize = 0x1F8; // uint8_t
+ pub const m_unOverrideStyle: usize = 0x1F9; // uint8_t
+ pub const m_AttributeList: usize = 0x210; // CAttributeList
+ pub const m_NetworkedDynamicAttributes: usize = 0x270; // CAttributeList
+ pub const m_szCustomName: usize = 0x2D0; // char[161]
+ pub const m_szCustomNameOverride: usize = 0x371; // char[161]
+ pub const m_bInitializedTags: usize = 0x440; // bool
+}
+
+pub mod C_EconWearable { // C_EconEntity
+ pub const m_nForceSkin: usize = 0x1560; // int32_t
+ pub const m_bAlwaysAllow: usize = 0x1564; // bool
+}
+
+pub mod C_EntityDissolve { // C_BaseModelEntity
+ pub const m_flStartTime: usize = 0xCC8; // GameTime_t
+ pub const m_flFadeInStart: usize = 0xCCC; // float
+ pub const m_flFadeInLength: usize = 0xCD0; // float
+ pub const m_flFadeOutModelStart: usize = 0xCD4; // float
+ pub const m_flFadeOutModelLength: usize = 0xCD8; // float
+ pub const m_flFadeOutStart: usize = 0xCDC; // float
+ pub const m_flFadeOutLength: usize = 0xCE0; // float
+ pub const m_flNextSparkTime: usize = 0xCE4; // GameTime_t
+ pub const m_nDissolveType: usize = 0xCE8; // EntityDisolveType_t
+ pub const m_vDissolverOrigin: usize = 0xCEC; // Vector
+ pub const m_nMagnitude: usize = 0xCF8; // uint32_t
+ pub const m_bCoreExplode: usize = 0xCFC; // bool
+ pub const m_bLinkedToServerEnt: usize = 0xCFD; // bool
+}
+
+pub mod C_EntityFlame { // C_BaseEntity
+ pub const m_hEntAttached: usize = 0x540; // CHandle<C_BaseEntity>
+ pub const m_hOldAttached: usize = 0x568; // CHandle<C_BaseEntity>
+ pub const m_bCheapEffect: usize = 0x56C; // bool
+}
+
+pub mod C_EnvCombinedLightProbeVolume { // C_BaseEntity
+ pub const m_Color: usize = 0x1598; // Color
+ pub const m_flBrightness: usize = 0x159C; // float
+ pub const m_hCubemapTexture: usize = 0x15A0; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_bCustomCubemapTexture: usize = 0x15A8; // bool
+ pub const m_hLightProbeTexture: usize = 0x15B0; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_hLightProbeDirectLightIndicesTexture: usize = 0x15B8; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_hLightProbeDirectLightScalarsTexture: usize = 0x15C0; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_hLightProbeDirectLightShadowsTexture: usize = 0x15C8; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_vBoxMins: usize = 0x15D0; // Vector
+ pub const m_vBoxMaxs: usize = 0x15DC; // Vector
+ pub const m_bMoveable: usize = 0x15E8; // bool
+ pub const m_nHandshake: usize = 0x15EC; // int32_t
+ pub const m_nEnvCubeMapArrayIndex: usize = 0x15F0; // int32_t
+ pub const m_nPriority: usize = 0x15F4; // int32_t
+ pub const m_bStartDisabled: usize = 0x15F8; // bool
+ pub const m_flEdgeFadeDist: usize = 0x15FC; // float
+ pub const m_vEdgeFadeDists: usize = 0x1600; // Vector
+ pub const m_nLightProbeSizeX: usize = 0x160C; // int32_t
+ pub const m_nLightProbeSizeY: usize = 0x1610; // int32_t
+ pub const m_nLightProbeSizeZ: usize = 0x1614; // int32_t
+ pub const m_nLightProbeAtlasX: usize = 0x1618; // int32_t
+ pub const m_nLightProbeAtlasY: usize = 0x161C; // int32_t
+ pub const m_nLightProbeAtlasZ: usize = 0x1620; // int32_t
+ pub const m_bEnabled: usize = 0x1639; // bool
+}
+
+pub mod C_EnvCubemap { // C_BaseEntity
+ pub const m_hCubemapTexture: usize = 0x5C0; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_bCustomCubemapTexture: usize = 0x5C8; // bool
+ pub const m_flInfluenceRadius: usize = 0x5CC; // float
+ pub const m_vBoxProjectMins: usize = 0x5D0; // Vector
+ pub const m_vBoxProjectMaxs: usize = 0x5DC; // Vector
+ pub const m_bMoveable: usize = 0x5E8; // bool
+ pub const m_nHandshake: usize = 0x5EC; // int32_t
+ pub const m_nEnvCubeMapArrayIndex: usize = 0x5F0; // int32_t
+ pub const m_nPriority: usize = 0x5F4; // int32_t
+ pub const m_flEdgeFadeDist: usize = 0x5F8; // float
+ pub const m_vEdgeFadeDists: usize = 0x5FC; // Vector
+ pub const m_flDiffuseScale: usize = 0x608; // float
+ pub const m_bStartDisabled: usize = 0x60C; // bool
+ pub const m_bDefaultEnvMap: usize = 0x60D; // bool
+ pub const m_bDefaultSpecEnvMap: usize = 0x60E; // bool
+ pub const m_bIndoorCubeMap: usize = 0x60F; // bool
+ pub const m_bCopyDiffuseFromDefaultCubemap: usize = 0x610; // bool
+ pub const m_bEnabled: usize = 0x620; // bool
+}
+
+pub mod C_EnvCubemapBox { // C_EnvCubemap
+}
+
+pub mod C_EnvCubemapFog { // C_BaseEntity
+ pub const m_flEndDistance: usize = 0x540; // float
+ pub const m_flStartDistance: usize = 0x544; // float
+ pub const m_flFogFalloffExponent: usize = 0x548; // float
+ pub const m_bHeightFogEnabled: usize = 0x54C; // bool
+ pub const m_flFogHeightWidth: usize = 0x550; // float
+ pub const m_flFogHeightEnd: usize = 0x554; // float
+ pub const m_flFogHeightStart: usize = 0x558; // float
+ pub const m_flFogHeightExponent: usize = 0x55C; // float
+ pub const m_flLODBias: usize = 0x560; // float
+ pub const m_bActive: usize = 0x564; // bool
+ pub const m_bStartDisabled: usize = 0x565; // bool
+ pub const m_flFogMaxOpacity: usize = 0x568; // float
+ pub const m_nCubemapSourceType: usize = 0x56C; // int32_t
+ pub const m_hSkyMaterial: usize = 0x570; // CStrongHandle<InfoForResourceTypeIMaterial2>
+ pub const m_iszSkyEntity: usize = 0x578; // CUtlSymbolLarge
+ pub const m_hFogCubemapTexture: usize = 0x580; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_bHasHeightFogEnd: usize = 0x588; // bool
+ pub const m_bFirstTime: usize = 0x589; // bool
+}
+
+pub mod C_EnvDecal { // C_BaseModelEntity
+ pub const m_hDecalMaterial: usize = 0xCC0; // CStrongHandle<InfoForResourceTypeIMaterial2>
+ pub const m_flWidth: usize = 0xCC8; // float
+ pub const m_flHeight: usize = 0xCCC; // float
+ pub const m_flDepth: usize = 0xCD0; // float
+ pub const m_nRenderOrder: usize = 0xCD4; // uint32_t
+ pub const m_bProjectOnWorld: usize = 0xCD8; // bool
+ pub const m_bProjectOnCharacters: usize = 0xCD9; // bool
+ pub const m_bProjectOnWater: usize = 0xCDA; // bool
+ pub const m_flDepthSortBias: usize = 0xCDC; // float
+}
+
+pub mod C_EnvDetailController { // C_BaseEntity
+ pub const m_flFadeStartDist: usize = 0x540; // float
+ pub const m_flFadeEndDist: usize = 0x544; // float
+}
+
+pub mod C_EnvLightProbeVolume { // C_BaseEntity
+ pub const m_hLightProbeTexture: usize = 0x1518; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_hLightProbeDirectLightIndicesTexture: usize = 0x1520; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_hLightProbeDirectLightScalarsTexture: usize = 0x1528; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_hLightProbeDirectLightShadowsTexture: usize = 0x1530; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_vBoxMins: usize = 0x1538; // Vector
+ pub const m_vBoxMaxs: usize = 0x1544; // Vector
+ pub const m_bMoveable: usize = 0x1550; // bool
+ pub const m_nHandshake: usize = 0x1554; // int32_t
+ pub const m_nPriority: usize = 0x1558; // int32_t
+ pub const m_bStartDisabled: usize = 0x155C; // bool
+ pub const m_nLightProbeSizeX: usize = 0x1560; // int32_t
+ pub const m_nLightProbeSizeY: usize = 0x1564; // int32_t
+ pub const m_nLightProbeSizeZ: usize = 0x1568; // int32_t
+ pub const m_nLightProbeAtlasX: usize = 0x156C; // int32_t
+ pub const m_nLightProbeAtlasY: usize = 0x1570; // int32_t
+ pub const m_nLightProbeAtlasZ: usize = 0x1574; // int32_t
+ pub const m_bEnabled: usize = 0x1581; // bool
+}
+
+pub mod C_EnvParticleGlow { // C_ParticleSystem
+ pub const m_flAlphaScale: usize = 0x1270; // float
+ pub const m_flRadiusScale: usize = 0x1274; // float
+ pub const m_flSelfIllumScale: usize = 0x1278; // float
+ pub const m_ColorTint: usize = 0x127C; // Color
+ pub const m_hTextureOverride: usize = 0x1280; // CStrongHandle<InfoForResourceTypeCTextureBase>
+}
+
+pub mod C_EnvProjectedTexture { // C_ModelPointEntity
+}
+
+pub mod C_EnvScreenOverlay { // C_PointEntity
+ pub const m_iszOverlayNames: usize = 0x540; // CUtlSymbolLarge[10]
+ pub const m_flOverlayTimes: usize = 0x590; // float[10]
+ pub const m_flStartTime: usize = 0x5B8; // GameTime_t
+ pub const m_iDesiredOverlay: usize = 0x5BC; // int32_t
+ pub const m_bIsActive: usize = 0x5C0; // bool
+ pub const m_bWasActive: usize = 0x5C1; // bool
+ pub const m_iCachedDesiredOverlay: usize = 0x5C4; // int32_t
+ pub const m_iCurrentOverlay: usize = 0x5C8; // int32_t
+ pub const m_flCurrentOverlayTime: usize = 0x5CC; // GameTime_t
+}
+
+pub mod C_EnvSky { // C_BaseModelEntity
+ pub const m_hSkyMaterial: usize = 0xCC0; // CStrongHandle<InfoForResourceTypeIMaterial2>
+ pub const m_hSkyMaterialLightingOnly: usize = 0xCC8; // CStrongHandle<InfoForResourceTypeIMaterial2>
+ pub const m_bStartDisabled: usize = 0xCD0; // bool
+ pub const m_vTintColor: usize = 0xCD1; // Color
+ pub const m_vTintColorLightingOnly: usize = 0xCD5; // Color
+ pub const m_flBrightnessScale: usize = 0xCDC; // float
+ pub const m_nFogType: usize = 0xCE0; // int32_t
+ pub const m_flFogMinStart: usize = 0xCE4; // float
+ pub const m_flFogMinEnd: usize = 0xCE8; // float
+ pub const m_flFogMaxStart: usize = 0xCEC; // float
+ pub const m_flFogMaxEnd: usize = 0xCF0; // float
+ pub const m_bEnabled: usize = 0xCF4; // bool
+}
+
+pub mod C_EnvVolumetricFogController { // C_BaseEntity
+ pub const m_flScattering: usize = 0x540; // float
+ pub const m_flAnisotropy: usize = 0x544; // float
+ pub const m_flFadeSpeed: usize = 0x548; // float
+ pub const m_flDrawDistance: usize = 0x54C; // float
+ pub const m_flFadeInStart: usize = 0x550; // float
+ pub const m_flFadeInEnd: usize = 0x554; // float
+ pub const m_flIndirectStrength: usize = 0x558; // float
+ pub const m_nIndirectTextureDimX: usize = 0x55C; // int32_t
+ pub const m_nIndirectTextureDimY: usize = 0x560; // int32_t
+ pub const m_nIndirectTextureDimZ: usize = 0x564; // int32_t
+ pub const m_vBoxMins: usize = 0x568; // Vector
+ pub const m_vBoxMaxs: usize = 0x574; // Vector
+ pub const m_bActive: usize = 0x580; // bool
+ pub const m_flStartAnisoTime: usize = 0x584; // GameTime_t
+ pub const m_flStartScatterTime: usize = 0x588; // GameTime_t
+ pub const m_flStartDrawDistanceTime: usize = 0x58C; // GameTime_t
+ pub const m_flStartAnisotropy: usize = 0x590; // float
+ pub const m_flStartScattering: usize = 0x594; // float
+ pub const m_flStartDrawDistance: usize = 0x598; // float
+ pub const m_flDefaultAnisotropy: usize = 0x59C; // float
+ pub const m_flDefaultScattering: usize = 0x5A0; // float
+ pub const m_flDefaultDrawDistance: usize = 0x5A4; // float
+ pub const m_bStartDisabled: usize = 0x5A8; // bool
+ pub const m_bEnableIndirect: usize = 0x5A9; // bool
+ pub const m_bIsMaster: usize = 0x5AA; // bool
+ pub const m_hFogIndirectTexture: usize = 0x5B0; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_nForceRefreshCount: usize = 0x5B8; // int32_t
+ pub const m_bFirstTime: usize = 0x5BC; // bool
+}
+
+pub mod C_EnvVolumetricFogVolume { // C_BaseEntity
+ pub const m_bActive: usize = 0x540; // bool
+ pub const m_vBoxMins: usize = 0x544; // Vector
+ pub const m_vBoxMaxs: usize = 0x550; // Vector
+ pub const m_bStartDisabled: usize = 0x55C; // bool
+ pub const m_flStrength: usize = 0x560; // float
+ pub const m_nFalloffShape: usize = 0x564; // int32_t
+ pub const m_flFalloffExponent: usize = 0x568; // float
+}
+
+pub mod C_EnvWind { // C_BaseEntity
+ pub const m_EnvWindShared: usize = 0x540; // C_EnvWindShared
+}
+
+pub mod C_EnvWindClientside { // C_BaseEntity
+ pub const m_EnvWindShared: usize = 0x540; // C_EnvWindShared
+}
+
+pub mod C_EnvWindShared {
+ pub const m_flStartTime: usize = 0x8; // GameTime_t
+ pub const m_iWindSeed: usize = 0xC; // uint32_t
+ pub const m_iMinWind: usize = 0x10; // uint16_t
+ pub const m_iMaxWind: usize = 0x12; // uint16_t
+ pub const m_windRadius: usize = 0x14; // int32_t
+ pub const m_iMinGust: usize = 0x18; // uint16_t
+ pub const m_iMaxGust: usize = 0x1A; // uint16_t
+ pub const m_flMinGustDelay: usize = 0x1C; // float
+ pub const m_flMaxGustDelay: usize = 0x20; // float
+ pub const m_flGustDuration: usize = 0x24; // float
+ pub const m_iGustDirChange: usize = 0x28; // uint16_t
+ pub const m_location: usize = 0x2C; // Vector
+ pub const m_iszGustSound: usize = 0x38; // int32_t
+ pub const m_iWindDir: usize = 0x3C; // int32_t
+ pub const m_flWindSpeed: usize = 0x40; // float
+ pub const m_currentWindVector: usize = 0x44; // Vector
+ pub const m_CurrentSwayVector: usize = 0x50; // Vector
+ pub const m_PrevSwayVector: usize = 0x5C; // Vector
+ pub const m_iInitialWindDir: usize = 0x68; // uint16_t
+ pub const m_flInitialWindSpeed: usize = 0x6C; // float
+ pub const m_flVariationTime: usize = 0x70; // GameTime_t
+ pub const m_flSwayTime: usize = 0x74; // GameTime_t
+ pub const m_flSimTime: usize = 0x78; // GameTime_t
+ pub const m_flSwitchTime: usize = 0x7C; // GameTime_t
+ pub const m_flAveWindSpeed: usize = 0x80; // float
+ pub const m_bGusting: usize = 0x84; // bool
+ pub const m_flWindAngleVariation: usize = 0x88; // float
+ pub const m_flWindSpeedVariation: usize = 0x8C; // float
+ pub const m_iEntIndex: usize = 0x90; // CEntityIndex
+}
+
+pub mod C_EnvWindShared_WindAveEvent_t {
+ pub const m_flStartWindSpeed: usize = 0x0; // float
+ pub const m_flAveWindSpeed: usize = 0x4; // float
+}
+
+pub mod C_EnvWindShared_WindVariationEvent_t {
+ pub const m_flWindAngleVariation: usize = 0x0; // float
+ pub const m_flWindSpeedVariation: usize = 0x4; // float
+}
+
+pub mod C_FireCrackerBlast { // C_Inferno
+}
+
+pub mod C_FireFromAboveSprite { // C_Sprite
+}
+
+pub mod C_FireSmoke { // C_BaseFire
+ pub const m_nFlameModelIndex: usize = 0x550; // int32_t
+ pub const m_nFlameFromAboveModelIndex: usize = 0x554; // int32_t
+ pub const m_flScaleRegister: usize = 0x558; // float
+ pub const m_flScaleStart: usize = 0x55C; // float
+ pub const m_flScaleEnd: usize = 0x560; // float
+ pub const m_flScaleTimeStart: usize = 0x564; // GameTime_t
+ pub const m_flScaleTimeEnd: usize = 0x568; // GameTime_t
+ pub const m_flChildFlameSpread: usize = 0x56C; // float
+ pub const m_flClipPerc: usize = 0x580; // float
+ pub const m_bClipTested: usize = 0x584; // bool
+ pub const m_bFadingOut: usize = 0x585; // bool
+ pub const m_tParticleSpawn: usize = 0x588; // TimedEvent
+ pub const m_pFireOverlay: usize = 0x590; // CFireOverlay*
+}
+
+pub mod C_FireSprite { // C_Sprite
+ pub const m_vecMoveDir: usize = 0xDF0; // Vector
+ pub const m_bFadeFromAbove: usize = 0xDFC; // bool
+}
+
+pub mod C_Fish { // CBaseAnimGraph
+ pub const m_pos: usize = 0xE80; // Vector
+ pub const m_vel: usize = 0xE8C; // Vector
+ pub const m_angles: usize = 0xE98; // QAngle
+ pub const m_localLifeState: usize = 0xEA4; // int32_t
+ pub const m_deathDepth: usize = 0xEA8; // float
+ pub const m_deathAngle: usize = 0xEAC; // float
+ pub const m_buoyancy: usize = 0xEB0; // float
+ pub const m_wiggleTimer: usize = 0xEB8; // CountdownTimer
+ pub const m_wigglePhase: usize = 0xED0; // float
+ pub const m_wiggleRate: usize = 0xED4; // float
+ pub const m_actualPos: usize = 0xED8; // Vector
+ pub const m_actualAngles: usize = 0xEE4; // QAngle
+ pub const m_poolOrigin: usize = 0xEF0; // Vector
+ pub const m_waterLevel: usize = 0xEFC; // float
+ pub const m_gotUpdate: usize = 0xF00; // bool
+ pub const m_x: usize = 0xF04; // float
+ pub const m_y: usize = 0xF08; // float
+ pub const m_z: usize = 0xF0C; // float
+ pub const m_angle: usize = 0xF10; // float
+ pub const m_errorHistory: usize = 0xF14; // float[20]
+ pub const m_errorHistoryIndex: usize = 0xF64; // int32_t
+ pub const m_errorHistoryCount: usize = 0xF68; // int32_t
+ pub const m_averageError: usize = 0xF6C; // float
+}
+
+pub mod C_Fists { // C_CSWeaponBase
+ pub const m_bPlayingUninterruptableAct: usize = 0x1A10; // bool
+ pub const m_nUninterruptableActivity: usize = 0x1A14; // PlayerAnimEvent_t
+}
+
+pub mod C_Flashbang { // C_BaseCSGrenade
+}
+
+pub mod C_FlashbangProjectile { // C_BaseCSGrenadeProjectile
+}
+
+pub mod C_FogController { // C_BaseEntity
+ pub const m_fog: usize = 0x540; // fogparams_t
+ pub const m_bUseAngles: usize = 0x5A8; // bool
+ pub const m_iChangedVariables: usize = 0x5AC; // int32_t
+}
+
+pub mod C_FootstepControl { // C_BaseTrigger
+ pub const m_source: usize = 0xCC8; // CUtlSymbolLarge
+ pub const m_destination: usize = 0xCD0; // CUtlSymbolLarge
+}
+
+pub mod C_FuncBrush { // C_BaseModelEntity
+}
+
+pub mod C_FuncConveyor { // C_BaseModelEntity
+ pub const m_vecMoveDirEntitySpace: usize = 0xCC8; // Vector
+ pub const m_flTargetSpeed: usize = 0xCD4; // float
+ pub const m_nTransitionStartTick: usize = 0xCD8; // GameTick_t
+ pub const m_nTransitionDurationTicks: usize = 0xCDC; // int32_t
+ pub const m_flTransitionStartSpeed: usize = 0xCE0; // float
+ pub const m_hConveyorModels: usize = 0xCE8; // C_NetworkUtlVectorBase<CHandle<C_BaseEntity>>
+ pub const m_flCurrentConveyorOffset: usize = 0xD00; // float
+ pub const m_flCurrentConveyorSpeed: usize = 0xD04; // float
+}
+
+pub mod C_FuncElectrifiedVolume { // C_FuncBrush
+ pub const m_nAmbientEffect: usize = 0xCC0; // ParticleIndex_t
+ pub const m_EffectName: usize = 0xCC8; // CUtlSymbolLarge
+ pub const m_bState: usize = 0xCD0; // bool
+}
+
+pub mod C_FuncLadder { // C_BaseModelEntity
+ pub const m_vecLadderDir: usize = 0xCC0; // Vector
+ pub const m_Dismounts: usize = 0xCD0; // CUtlVector<CHandle<C_InfoLadderDismount>>
+ pub const m_vecLocalTop: usize = 0xCE8; // Vector
+ pub const m_vecPlayerMountPositionTop: usize = 0xCF4; // Vector
+ pub const m_vecPlayerMountPositionBottom: usize = 0xD00; // Vector
+ pub const m_flAutoRideSpeed: usize = 0xD0C; // float
+ pub const m_bDisabled: usize = 0xD10; // bool
+ pub const m_bFakeLadder: usize = 0xD11; // bool
+ pub const m_bHasSlack: usize = 0xD12; // bool
+}
+
+pub mod C_FuncMonitor { // C_FuncBrush
+ pub const m_targetCamera: usize = 0xCC0; // CUtlString
+ pub const m_nResolutionEnum: usize = 0xCC8; // int32_t
+ pub const m_bRenderShadows: usize = 0xCCC; // bool
+ pub const m_bUseUniqueColorTarget: usize = 0xCCD; // bool
+ pub const m_brushModelName: usize = 0xCD0; // CUtlString
+ pub const m_hTargetCamera: usize = 0xCD8; // CHandle<C_BaseEntity>
+ pub const m_bEnabled: usize = 0xCDC; // bool
+ pub const m_bDraw3DSkybox: usize = 0xCDD; // bool
+}
+
+pub mod C_FuncMoveLinear { // C_BaseToggle
+}
+
+pub mod C_FuncRotating { // C_BaseModelEntity
+}
+
+pub mod C_FuncTrackTrain { // C_BaseModelEntity
+ pub const m_nLongAxis: usize = 0xCC0; // int32_t
+ pub const m_flRadius: usize = 0xCC4; // float
+ pub const m_flLineLength: usize = 0xCC8; // float
+}
+
+pub mod C_GameRules {
+}
+
+pub mod C_GameRulesProxy { // C_BaseEntity
+}
+
+pub mod C_GlobalLight { // C_BaseEntity
+ pub const m_WindClothForceHandle: usize = 0xA00; // uint16_t
+}
+
+pub mod C_GradientFog { // C_BaseEntity
+ pub const m_hGradientFogTexture: usize = 0x540; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_flFogStartDistance: usize = 0x548; // float
+ pub const m_flFogEndDistance: usize = 0x54C; // float
+ pub const m_bHeightFogEnabled: usize = 0x550; // bool
+ pub const m_flFogStartHeight: usize = 0x554; // float
+ pub const m_flFogEndHeight: usize = 0x558; // float
+ pub const m_flFarZ: usize = 0x55C; // float
+ pub const m_flFogMaxOpacity: usize = 0x560; // float
+ pub const m_flFogFalloffExponent: usize = 0x564; // float
+ pub const m_flFogVerticalExponent: usize = 0x568; // float
+ pub const m_fogColor: usize = 0x56C; // Color
+ pub const m_flFogStrength: usize = 0x570; // float
+ pub const m_flFadeTime: usize = 0x574; // float
+ pub const m_bStartDisabled: usize = 0x578; // bool
+ pub const m_bIsEnabled: usize = 0x579; // bool
+ pub const m_bGradientFogNeedsTextures: usize = 0x57A; // bool
+}
+
+pub mod C_HEGrenade { // C_BaseCSGrenade
+}
+
+pub mod C_HEGrenadeProjectile { // C_BaseCSGrenadeProjectile
+}
+
+pub mod C_HandleTest { // C_BaseEntity
+ pub const m_Handle: usize = 0x540; // CHandle<C_BaseEntity>
+ pub const m_bSendHandle: usize = 0x544; // bool
+}
+
+pub mod C_Hostage { // C_BaseCombatCharacter
+ pub const m_entitySpottedState: usize = 0x10A8; // EntitySpottedState_t
+ pub const m_leader: usize = 0x10C0; // CHandle<C_BaseEntity>
+ pub const m_reuseTimer: usize = 0x10C8; // CountdownTimer
+ pub const m_vel: usize = 0x10E0; // Vector
+ pub const m_isRescued: usize = 0x10EC; // bool
+ pub const m_jumpedThisFrame: usize = 0x10ED; // bool
+ pub const m_nHostageState: usize = 0x10F0; // int32_t
+ pub const m_bHandsHaveBeenCut: usize = 0x10F4; // bool
+ pub const m_hHostageGrabber: usize = 0x10F8; // CHandle<C_CSPlayerPawn>
+ pub const m_fLastGrabTime: usize = 0x10FC; // GameTime_t
+ pub const m_vecGrabbedPos: usize = 0x1100; // Vector
+ pub const m_flRescueStartTime: usize = 0x110C; // GameTime_t
+ pub const m_flGrabSuccessTime: usize = 0x1110; // GameTime_t
+ pub const m_flDropStartTime: usize = 0x1114; // GameTime_t
+ pub const m_flDeadOrRescuedTime: usize = 0x1118; // GameTime_t
+ pub const m_blinkTimer: usize = 0x1120; // CountdownTimer
+ pub const m_lookAt: usize = 0x1138; // Vector
+ pub const m_lookAroundTimer: usize = 0x1148; // CountdownTimer
+ pub const m_isInit: usize = 0x1160; // bool
+ pub const m_eyeAttachment: usize = 0x1161; // AttachmentHandle_t
+ pub const m_chestAttachment: usize = 0x1162; // AttachmentHandle_t
+ pub const m_pPredictionOwner: usize = 0x1168; // CBasePlayerController*
+ pub const m_fNewestAlphaThinkTime: usize = 0x1170; // GameTime_t
+}
+
+pub mod C_HostageCarriableProp { // CBaseAnimGraph
+}
+
+pub mod C_IncendiaryGrenade { // C_MolotovGrenade
+}
+
+pub mod C_Inferno { // C_BaseModelEntity
+ pub const m_nfxFireDamageEffect: usize = 0xD00; // ParticleIndex_t
+ pub const m_firePositions: usize = 0xD04; // Vector[64]
+ pub const m_fireParentPositions: usize = 0x1004; // Vector[64]
+ pub const m_bFireIsBurning: usize = 0x1304; // bool[64]
+ pub const m_BurnNormal: usize = 0x1344; // Vector[64]
+ pub const m_fireCount: usize = 0x1644; // int32_t
+ pub const m_nInfernoType: usize = 0x1648; // int32_t
+ pub const m_nFireLifetime: usize = 0x164C; // float
+ pub const m_bInPostEffectTime: usize = 0x1650; // bool
+ pub const m_lastFireCount: usize = 0x1654; // int32_t
+ pub const m_nFireEffectTickBegin: usize = 0x1658; // int32_t
+ pub const m_drawableCount: usize = 0x8260; // int32_t
+ pub const m_blosCheck: usize = 0x8264; // bool
+ pub const m_nlosperiod: usize = 0x8268; // int32_t
+ pub const m_maxFireHalfWidth: usize = 0x826C; // float
+ pub const m_maxFireHeight: usize = 0x8270; // float
+ pub const m_minBounds: usize = 0x8274; // Vector
+ pub const m_maxBounds: usize = 0x8280; // Vector
+ pub const m_flLastGrassBurnThink: usize = 0x828C; // float
+}
+
+pub mod C_InfoInstructorHintHostageRescueZone { // C_PointEntity
+}
+
+pub mod C_InfoLadderDismount { // C_BaseEntity
+}
+
+pub mod C_InfoVisibilityBox { // C_BaseEntity
+ pub const m_nMode: usize = 0x544; // int32_t
+ pub const m_vBoxSize: usize = 0x548; // Vector
+ pub const m_bEnabled: usize = 0x554; // bool
+}
+
+pub mod C_IronSightController {
+ pub const m_bIronSightAvailable: usize = 0x10; // bool
+ pub const m_flIronSightAmount: usize = 0x14; // float
+ pub const m_flIronSightAmountGained: usize = 0x18; // float
+ pub const m_flIronSightAmountBiased: usize = 0x1C; // float
+ pub const m_flIronSightAmount_Interpolated: usize = 0x20; // float
+ pub const m_flIronSightAmountGained_Interpolated: usize = 0x24; // float
+ pub const m_flIronSightAmountBiased_Interpolated: usize = 0x28; // float
+ pub const m_flInterpolationLastUpdated: usize = 0x2C; // float
+ pub const m_angDeltaAverage: usize = 0x30; // QAngle[8]
+ pub const m_angViewLast: usize = 0x90; // QAngle
+ pub const m_vecDotCoords: usize = 0x9C; // Vector2D
+ pub const m_flDotBlur: usize = 0xA4; // float
+ pub const m_flSpeedRatio: usize = 0xA8; // float
+}
+
+pub mod C_Item { // C_EconEntity
+ pub const m_bShouldGlow: usize = 0x1560; // bool
+ pub const m_pReticleHintTextName: usize = 0x1561; // char[256]
+}
+
+pub mod C_ItemDogtags { // C_Item
+ pub const m_OwningPlayer: usize = 0x1668; // CHandle<C_CSPlayerPawn>
+ pub const m_KillingPlayer: usize = 0x166C; // CHandle<C_CSPlayerPawn>
+}
+
+pub mod C_Item_Healthshot { // C_WeaponBaseItem
+}
+
+pub mod C_Knife { // C_CSWeaponBase
+}
+
+pub mod C_LightDirectionalEntity { // C_LightEntity
+}
+
+pub mod C_LightEntity { // C_BaseModelEntity
+ pub const m_CLightComponent: usize = 0xCC0; // CLightComponent*
+}
+
+pub mod C_LightEnvironmentEntity { // C_LightDirectionalEntity
+}
+
+pub mod C_LightGlow { // C_BaseModelEntity
+ pub const m_nHorizontalSize: usize = 0xCC0; // uint32_t
+ pub const m_nVerticalSize: usize = 0xCC4; // uint32_t
+ pub const m_nMinDist: usize = 0xCC8; // uint32_t
+ pub const m_nMaxDist: usize = 0xCCC; // uint32_t
+ pub const m_nOuterMaxDist: usize = 0xCD0; // uint32_t
+ pub const m_flGlowProxySize: usize = 0xCD4; // float
+ pub const m_flHDRColorScale: usize = 0xCD8; // float
+ pub const m_Glow: usize = 0xCE0; // C_LightGlowOverlay
+}
+
+pub mod C_LightGlowOverlay { // CGlowOverlay
+ pub const m_vecOrigin: usize = 0xD0; // Vector
+ pub const m_vecDirection: usize = 0xDC; // Vector
+ pub const m_nMinDist: usize = 0xE8; // int32_t
+ pub const m_nMaxDist: usize = 0xEC; // int32_t
+ pub const m_nOuterMaxDist: usize = 0xF0; // int32_t
+ pub const m_bOneSided: usize = 0xF4; // bool
+ pub const m_bModulateByDot: usize = 0xF5; // bool
+}
+
+pub mod C_LightOrthoEntity { // C_LightEntity
+}
+
+pub mod C_LightSpotEntity { // C_LightEntity
+}
+
+pub mod C_LocalTempEntity { // CBaseAnimGraph
+ pub const flags: usize = 0xE98; // int32_t
+ pub const die: usize = 0xE9C; // GameTime_t
+ pub const m_flFrameMax: usize = 0xEA0; // float
+ pub const x: usize = 0xEA4; // float
+ pub const y: usize = 0xEA8; // float
+ pub const fadeSpeed: usize = 0xEAC; // float
+ pub const bounceFactor: usize = 0xEB0; // float
+ pub const hitSound: usize = 0xEB4; // int32_t
+ pub const priority: usize = 0xEB8; // int32_t
+ pub const tentOffset: usize = 0xEBC; // Vector
+ pub const m_vecTempEntAngVelocity: usize = 0xEC8; // QAngle
+ pub const tempent_renderamt: usize = 0xED4; // int32_t
+ pub const m_vecNormal: usize = 0xED8; // Vector
+ pub const m_flSpriteScale: usize = 0xEE4; // float
+ pub const m_nFlickerFrame: usize = 0xEE8; // int32_t
+ pub const m_flFrameRate: usize = 0xEEC; // float
+ pub const m_flFrame: usize = 0xEF0; // float
+ pub const m_pszImpactEffect: usize = 0xEF8; // char*
+ pub const m_pszParticleEffect: usize = 0xF00; // char*
+ pub const m_bParticleCollision: usize = 0xF08; // bool
+ pub const m_iLastCollisionFrame: usize = 0xF0C; // int32_t
+ pub const m_vLastCollisionOrigin: usize = 0xF10; // Vector
+ pub const m_vecTempEntVelocity: usize = 0xF1C; // Vector
+ pub const m_vecPrevAbsOrigin: usize = 0xF28; // Vector
+ pub const m_vecTempEntAcceleration: usize = 0xF34; // Vector
+}
+
+pub mod C_MapPreviewParticleSystem { // C_ParticleSystem
+}
+
+pub mod C_MapVetoPickController { // C_BaseEntity
+ pub const m_nDraftType: usize = 0x550; // int32_t
+ pub const m_nTeamWinningCoinToss: usize = 0x554; // int32_t
+ pub const m_nTeamWithFirstChoice: usize = 0x558; // int32_t[64]
+ pub const m_nVoteMapIdsList: usize = 0x658; // int32_t[7]
+ pub const m_nAccountIDs: usize = 0x674; // int32_t[64]
+ pub const m_nMapId0: usize = 0x774; // int32_t[64]
+ pub const m_nMapId1: usize = 0x874; // int32_t[64]
+ pub const m_nMapId2: usize = 0x974; // int32_t[64]
+ pub const m_nMapId3: usize = 0xA74; // int32_t[64]
+ pub const m_nMapId4: usize = 0xB74; // int32_t[64]
+ pub const m_nMapId5: usize = 0xC74; // int32_t[64]
+ pub const m_nStartingSide0: usize = 0xD74; // int32_t[64]
+ pub const m_nCurrentPhase: usize = 0xE74; // int32_t
+ pub const m_nPhaseStartTick: usize = 0xE78; // int32_t
+ pub const m_nPhaseDurationTicks: usize = 0xE7C; // int32_t
+ pub const m_nPostDataUpdateTick: usize = 0xE80; // int32_t
+ pub const m_bDisabledHud: usize = 0xE84; // bool
+}
+
+pub mod C_Melee { // C_CSWeaponBase
+}
+
+pub mod C_ModelPointEntity { // C_BaseModelEntity
+}
+
+pub mod C_MolotovGrenade { // C_BaseCSGrenade
+}
+
+pub mod C_MolotovProjectile { // C_BaseCSGrenadeProjectile
+ pub const m_bIsIncGrenade: usize = 0x1100; // bool
+}
+
+pub mod C_Multimeter { // CBaseAnimGraph
+ pub const m_hTargetC4: usize = 0xE88; // CHandle<C_PlantedC4>
+}
+
+pub mod C_MultiplayRules { // C_GameRules
+}
+
+pub mod C_NetTestBaseCombatCharacter { // C_BaseCombatCharacter
+}
+
+pub mod C_OmniLight { // C_BarnLight
+ pub const m_flInnerAngle: usize = 0xF08; // float
+ pub const m_flOuterAngle: usize = 0xF0C; // float
+ pub const m_bShowLight: usize = 0xF10; // bool
+}
+
+pub mod C_ParticleSystem { // C_BaseModelEntity
+ pub const m_szSnapshotFileName: usize = 0xCC0; // char[512]
+ pub const m_bActive: usize = 0xEC0; // bool
+ pub const m_bFrozen: usize = 0xEC1; // bool
+ pub const m_flFreezeTransitionDuration: usize = 0xEC4; // float
+ pub const m_nStopType: usize = 0xEC8; // int32_t
+ pub const m_bAnimateDuringGameplayPause: usize = 0xECC; // bool
+ pub const m_iEffectIndex: usize = 0xED0; // CStrongHandle<InfoForResourceTypeIParticleSystemDefinition>
+ pub const m_flStartTime: usize = 0xED8; // GameTime_t
+ pub const m_flPreSimTime: usize = 0xEDC; // float
+ pub const m_vServerControlPoints: usize = 0xEE0; // Vector[4]
+ pub const m_iServerControlPointAssignments: usize = 0xF10; // uint8_t[4]
+ pub const m_hControlPointEnts: usize = 0xF14; // CHandle<C_BaseEntity>[64]
+ pub const m_bNoSave: usize = 0x1014; // bool
+ pub const m_bNoFreeze: usize = 0x1015; // bool
+ pub const m_bNoRamp: usize = 0x1016; // bool
+ pub const m_bStartActive: usize = 0x1017; // bool
+ pub const m_iszEffectName: usize = 0x1018; // CUtlSymbolLarge
+ pub const m_iszControlPointNames: usize = 0x1020; // CUtlSymbolLarge[64]
+ pub const m_nDataCP: usize = 0x1220; // int32_t
+ pub const m_vecDataCPValue: usize = 0x1224; // Vector
+ pub const m_nTintCP: usize = 0x1230; // int32_t
+ pub const m_clrTint: usize = 0x1234; // Color
+ pub const m_bOldActive: usize = 0x1258; // bool
+ pub const m_bOldFrozen: usize = 0x1259; // bool
+}
+
+pub mod C_PathParticleRope { // C_BaseEntity
+ pub const m_bStartActive: usize = 0x540; // bool
+ pub const m_flMaxSimulationTime: usize = 0x544; // float
+ pub const m_iszEffectName: usize = 0x548; // CUtlSymbolLarge
+ pub const m_PathNodes_Name: usize = 0x550; // CUtlVector<CUtlSymbolLarge>
+ pub const m_flParticleSpacing: usize = 0x568; // float
+ pub const m_flSlack: usize = 0x56C; // float
+ pub const m_flRadius: usize = 0x570; // float
+ pub const m_ColorTint: usize = 0x574; // Color
+ pub const m_nEffectState: usize = 0x578; // int32_t
+ pub const m_iEffectIndex: usize = 0x580; // CStrongHandle<InfoForResourceTypeIParticleSystemDefinition>
+ pub const m_PathNodes_Position: usize = 0x588; // C_NetworkUtlVectorBase<Vector>
+ pub const m_PathNodes_TangentIn: usize = 0x5A0; // C_NetworkUtlVectorBase<Vector>
+ pub const m_PathNodes_TangentOut: usize = 0x5B8; // C_NetworkUtlVectorBase<Vector>
+ pub const m_PathNodes_Color: usize = 0x5D0; // C_NetworkUtlVectorBase<Vector>
+ pub const m_PathNodes_PinEnabled: usize = 0x5E8; // C_NetworkUtlVectorBase<bool>
+ pub const m_PathNodes_RadiusScale: usize = 0x600; // C_NetworkUtlVectorBase<float>
+}
+
+pub mod C_PathParticleRopeAlias_path_particle_rope_clientside { // C_PathParticleRope
+}
+
+pub mod C_PhysBox { // C_Breakable
+}
+
+pub mod C_PhysMagnet { // CBaseAnimGraph
+ pub const m_aAttachedObjectsFromServer: usize = 0xE80; // CUtlVector<int32_t>
+ pub const m_aAttachedObjects: usize = 0xE98; // CUtlVector<CHandle<C_BaseEntity>>
+}
+
+pub mod C_PhysPropClientside { // C_BreakableProp
+ pub const m_flTouchDelta: usize = 0xFD0; // GameTime_t
+ pub const m_fDeathTime: usize = 0xFD4; // GameTime_t
+ pub const m_impactEnergyScale: usize = 0xFD8; // float
+ pub const m_inertiaScale: usize = 0xFDC; // float
+ pub const m_flDmgModBullet: usize = 0xFE0; // float
+ pub const m_flDmgModClub: usize = 0xFE4; // float
+ pub const m_flDmgModExplosive: usize = 0xFE8; // float
+ pub const m_flDmgModFire: usize = 0xFEC; // float
+ pub const m_iszPhysicsDamageTableName: usize = 0xFF0; // CUtlSymbolLarge
+ pub const m_iszBasePropData: usize = 0xFF8; // CUtlSymbolLarge
+ pub const m_iInteractions: usize = 0x1000; // int32_t
+ pub const m_bHasBreakPiecesOrCommands: usize = 0x1004; // bool
+ pub const m_vecDamagePosition: usize = 0x1008; // Vector
+ pub const m_vecDamageDirection: usize = 0x1014; // Vector
+ pub const m_nDamageType: usize = 0x1020; // int32_t
+}
+
+pub mod C_PhysicsProp { // C_BreakableProp
+ pub const m_bAwake: usize = 0xFD0; // bool
+}
+
+pub mod C_PhysicsPropMultiplayer { // C_PhysicsProp
+}
+
+pub mod C_PickUpModelSlerper { // CBaseAnimGraph
+ pub const m_hPlayerParent: usize = 0xE80; // CHandle<C_BaseEntity>
+ pub const m_hItem: usize = 0xE84; // CHandle<C_BaseEntity>
+ pub const m_flTimePickedUp: usize = 0xE88; // float
+ pub const m_angOriginal: usize = 0xE8C; // QAngle
+ pub const m_vecPosOriginal: usize = 0xE98; // Vector
+ pub const m_angRandom: usize = 0xEA8; // QAngle
+}
+
+pub mod C_PlantedC4 { // CBaseAnimGraph
+ pub const m_bBombTicking: usize = 0xE80; // bool
+ pub const m_nBombSite: usize = 0xE84; // int32_t
+ pub const m_nSourceSoundscapeHash: usize = 0xE88; // int32_t
+ pub const m_entitySpottedState: usize = 0xE90; // EntitySpottedState_t
+ pub const m_flNextGlow: usize = 0xEA8; // GameTime_t
+ pub const m_flNextBeep: usize = 0xEAC; // GameTime_t
+ pub const m_flC4Blow: usize = 0xEB0; // GameTime_t
+ pub const m_bCannotBeDefused: usize = 0xEB4; // bool
+ pub const m_bHasExploded: usize = 0xEB5; // bool
+ pub const m_flTimerLength: usize = 0xEB8; // float
+ pub const m_bBeingDefused: usize = 0xEBC; // bool
+ pub const m_bTriggerWarning: usize = 0xEC0; // float
+ pub const m_bExplodeWarning: usize = 0xEC4; // float
+ pub const m_bC4Activated: usize = 0xEC8; // bool
+ pub const m_bTenSecWarning: usize = 0xEC9; // bool
+ pub const m_flDefuseLength: usize = 0xECC; // float
+ pub const m_flDefuseCountDown: usize = 0xED0; // GameTime_t
+ pub const m_bBombDefused: usize = 0xED4; // bool
+ pub const m_hBombDefuser: usize = 0xED8; // CHandle<C_CSPlayerPawn>
+ pub const m_hControlPanel: usize = 0xEDC; // CHandle<C_BaseEntity>
+ pub const m_hDefuserMultimeter: usize = 0xEE0; // CHandle<C_Multimeter>
+ pub const m_flNextRadarFlashTime: usize = 0xEE4; // GameTime_t
+ pub const m_bRadarFlash: usize = 0xEE8; // bool
+ pub const m_pBombDefuser: usize = 0xEEC; // CHandle<C_CSPlayerPawn>
+ pub const m_fLastDefuseTime: usize = 0xEF0; // GameTime_t
+ pub const m_pPredictionOwner: usize = 0xEF8; // CBasePlayerController*
+}
+
+pub mod C_PlayerPing { // C_BaseEntity
+ pub const m_hPlayer: usize = 0x570; // CHandle<C_CSPlayerPawn>
+ pub const m_hPingedEntity: usize = 0x574; // CHandle<C_BaseEntity>
+ pub const m_iType: usize = 0x578; // int32_t
+ pub const m_bUrgent: usize = 0x57C; // bool
+ pub const m_szPlaceName: usize = 0x57D; // char[18]
+}
+
+pub mod C_PlayerSprayDecal { // C_ModelPointEntity
+ pub const m_nUniqueID: usize = 0xCC0; // int32_t
+ pub const m_unAccountID: usize = 0xCC4; // uint32_t
+ pub const m_unTraceID: usize = 0xCC8; // uint32_t
+ pub const m_rtGcTime: usize = 0xCCC; // uint32_t
+ pub const m_vecEndPos: usize = 0xCD0; // Vector
+ pub const m_vecStart: usize = 0xCDC; // Vector
+ pub const m_vecLeft: usize = 0xCE8; // Vector
+ pub const m_vecNormal: usize = 0xCF4; // Vector
+ pub const m_nPlayer: usize = 0xD00; // int32_t
+ pub const m_nEntity: usize = 0xD04; // int32_t
+ pub const m_nHitbox: usize = 0xD08; // int32_t
+ pub const m_flCreationTime: usize = 0xD0C; // float
+ pub const m_nTintID: usize = 0xD10; // int32_t
+ pub const m_nVersion: usize = 0xD14; // uint8_t
+ pub const m_ubSignature: usize = 0xD15; // uint8_t[128]
+ pub const m_SprayRenderHelper: usize = 0xDA0; // CPlayerSprayDecalRenderHelper
+}
+
+pub mod C_PlayerVisibility { // C_BaseEntity
+ pub const m_flVisibilityStrength: usize = 0x540; // float
+ pub const m_flFogDistanceMultiplier: usize = 0x544; // float
+ pub const m_flFogMaxDensityMultiplier: usize = 0x548; // float
+ pub const m_flFadeTime: usize = 0x54C; // float
+ pub const m_bStartDisabled: usize = 0x550; // bool
+ pub const m_bIsEnabled: usize = 0x551; // bool
+}
+
+pub mod C_PointCamera { // C_BaseEntity
+ pub const m_FOV: usize = 0x540; // float
+ pub const m_Resolution: usize = 0x544; // float
+ pub const m_bFogEnable: usize = 0x548; // bool
+ pub const m_FogColor: usize = 0x549; // Color
+ pub const m_flFogStart: usize = 0x550; // float
+ pub const m_flFogEnd: usize = 0x554; // float
+ pub const m_flFogMaxDensity: usize = 0x558; // float
+ pub const m_bActive: usize = 0x55C; // bool
+ pub const m_bUseScreenAspectRatio: usize = 0x55D; // bool
+ pub const m_flAspectRatio: usize = 0x560; // float
+ pub const m_bNoSky: usize = 0x564; // bool
+ pub const m_fBrightness: usize = 0x568; // float
+ pub const m_flZFar: usize = 0x56C; // float
+ pub const m_flZNear: usize = 0x570; // float
+ pub const m_bCanHLTVUse: usize = 0x574; // bool
+ pub const m_bDofEnabled: usize = 0x575; // bool
+ pub const m_flDofNearBlurry: usize = 0x578; // float
+ pub const m_flDofNearCrisp: usize = 0x57C; // float
+ pub const m_flDofFarCrisp: usize = 0x580; // float
+ pub const m_flDofFarBlurry: usize = 0x584; // float
+ pub const m_flDofTiltToGround: usize = 0x588; // float
+ pub const m_TargetFOV: usize = 0x58C; // float
+ pub const m_DegreesPerSecond: usize = 0x590; // float
+ pub const m_bIsOn: usize = 0x594; // bool
+ pub const m_pNext: usize = 0x598; // C_PointCamera*
+}
+
+pub mod C_PointCameraVFOV { // C_PointCamera
+ pub const m_flVerticalFOV: usize = 0x5A0; // float
+}
+
+pub mod C_PointClientUIDialog { // C_BaseClientUIEntity
+ pub const m_hActivator: usize = 0xCF0; // CHandle<C_BaseEntity>
+ pub const m_bStartEnabled: usize = 0xCF4; // bool
+}
+
+pub mod C_PointClientUIHUD { // C_BaseClientUIEntity
+ pub const m_bCheckCSSClasses: usize = 0xCF8; // bool
+ pub const m_bIgnoreInput: usize = 0xE80; // bool
+ pub const m_flWidth: usize = 0xE84; // float
+ pub const m_flHeight: usize = 0xE88; // float
+ pub const m_flDPI: usize = 0xE8C; // float
+ pub const m_flInteractDistance: usize = 0xE90; // float
+ pub const m_flDepthOffset: usize = 0xE94; // float
+ pub const m_unOwnerContext: usize = 0xE98; // uint32_t
+ pub const m_unHorizontalAlign: usize = 0xE9C; // uint32_t
+ pub const m_unVerticalAlign: usize = 0xEA0; // uint32_t
+ pub const m_unOrientation: usize = 0xEA4; // uint32_t
+ pub const m_bAllowInteractionFromAllSceneWorlds: usize = 0xEA8; // bool
+ pub const m_vecCSSClasses: usize = 0xEB0; // C_NetworkUtlVectorBase<CUtlSymbolLarge>
+}
+
+pub mod C_PointClientUIWorldPanel { // C_BaseClientUIEntity
+ pub const m_bForceRecreateNextUpdate: usize = 0xCF8; // bool
+ pub const m_bMoveViewToPlayerNextThink: usize = 0xCF9; // bool
+ pub const m_bCheckCSSClasses: usize = 0xCFA; // bool
+ pub const m_anchorDeltaTransform: usize = 0xD00; // CTransform
+ pub const m_pOffScreenIndicator: usize = 0xEA0; // CPointOffScreenIndicatorUi*
+ pub const m_bIgnoreInput: usize = 0xEC8; // bool
+ pub const m_bLit: usize = 0xEC9; // bool
+ pub const m_bFollowPlayerAcrossTeleport: usize = 0xECA; // bool
+ pub const m_flWidth: usize = 0xECC; // float
+ pub const m_flHeight: usize = 0xED0; // float
+ pub const m_flDPI: usize = 0xED4; // float
+ pub const m_flInteractDistance: usize = 0xED8; // float
+ pub const m_flDepthOffset: usize = 0xEDC; // float
+ pub const m_unOwnerContext: usize = 0xEE0; // uint32_t
+ pub const m_unHorizontalAlign: usize = 0xEE4; // uint32_t
+ pub const m_unVerticalAlign: usize = 0xEE8; // uint32_t
+ pub const m_unOrientation: usize = 0xEEC; // uint32_t
+ pub const m_bAllowInteractionFromAllSceneWorlds: usize = 0xEF0; // bool
+ pub const m_vecCSSClasses: usize = 0xEF8; // C_NetworkUtlVectorBase<CUtlSymbolLarge>
+ pub const m_bOpaque: usize = 0xF10; // bool
+ pub const m_bNoDepth: usize = 0xF11; // bool
+ pub const m_bRenderBackface: usize = 0xF12; // bool
+ pub const m_bUseOffScreenIndicator: usize = 0xF13; // bool
+ pub const m_bExcludeFromSaveGames: usize = 0xF14; // bool
+ pub const m_bGrabbable: usize = 0xF15; // bool
+ pub const m_bOnlyRenderToTexture: usize = 0xF16; // bool
+ pub const m_bDisableMipGen: usize = 0xF17; // bool
+ pub const m_nExplicitImageLayout: usize = 0xF18; // int32_t
+}
+
+pub mod C_PointClientUIWorldTextPanel { // C_PointClientUIWorldPanel
+ pub const m_messageText: usize = 0xF20; // char[512]
+}
+
+pub mod C_PointCommentaryNode { // CBaseAnimGraph
+ pub const m_bActive: usize = 0xE88; // bool
+ pub const m_bWasActive: usize = 0xE89; // bool
+ pub const m_flEndTime: usize = 0xE8C; // GameTime_t
+ pub const m_flStartTime: usize = 0xE90; // GameTime_t
+ pub const m_flStartTimeInCommentary: usize = 0xE94; // float
+ pub const m_iszCommentaryFile: usize = 0xE98; // CUtlSymbolLarge
+ pub const m_iszTitle: usize = 0xEA0; // CUtlSymbolLarge
+ pub const m_iszSpeakers: usize = 0xEA8; // CUtlSymbolLarge
+ pub const m_iNodeNumber: usize = 0xEB0; // int32_t
+ pub const m_iNodeNumberMax: usize = 0xEB4; // int32_t
+ pub const m_bListenedTo: usize = 0xEB8; // bool
+ pub const m_hViewPosition: usize = 0xEC8; // CHandle<C_BaseEntity>
+ pub const m_bRestartAfterRestore: usize = 0xECC; // bool
+}
+
+pub mod C_PointEntity { // C_BaseEntity
+}
+
+pub mod C_PointValueRemapper { // C_BaseEntity
+ pub const m_bDisabled: usize = 0x540; // bool
+ pub const m_bDisabledOld: usize = 0x541; // bool
+ pub const m_bUpdateOnClient: usize = 0x542; // bool
+ pub const m_nInputType: usize = 0x544; // ValueRemapperInputType_t
+ pub const m_hRemapLineStart: usize = 0x548; // CHandle<C_BaseEntity>
+ pub const m_hRemapLineEnd: usize = 0x54C; // CHandle<C_BaseEntity>
+ pub const m_flMaximumChangePerSecond: usize = 0x550; // float
+ pub const m_flDisengageDistance: usize = 0x554; // float
+ pub const m_flEngageDistance: usize = 0x558; // float
+ pub const m_bRequiresUseKey: usize = 0x55C; // bool
+ pub const m_nOutputType: usize = 0x560; // ValueRemapperOutputType_t
+ pub const m_hOutputEntities: usize = 0x568; // C_NetworkUtlVectorBase<CHandle<C_BaseEntity>>
+ pub const m_nHapticsType: usize = 0x580; // ValueRemapperHapticsType_t
+ pub const m_nMomentumType: usize = 0x584; // ValueRemapperMomentumType_t
+ pub const m_flMomentumModifier: usize = 0x588; // float
+ pub const m_flSnapValue: usize = 0x58C; // float
+ pub const m_flCurrentMomentum: usize = 0x590; // float
+ pub const m_nRatchetType: usize = 0x594; // ValueRemapperRatchetType_t
+ pub const m_flRatchetOffset: usize = 0x598; // float
+ pub const m_flInputOffset: usize = 0x59C; // float
+ pub const m_bEngaged: usize = 0x5A0; // bool
+ pub const m_bFirstUpdate: usize = 0x5A1; // bool
+ pub const m_flPreviousValue: usize = 0x5A4; // float
+ pub const m_flPreviousUpdateTickTime: usize = 0x5A8; // GameTime_t
+ pub const m_vecPreviousTestPoint: usize = 0x5AC; // Vector
+}
+
+pub mod C_PointWorldText { // C_ModelPointEntity
+ pub const m_bForceRecreateNextUpdate: usize = 0xCC8; // bool
+ pub const m_messageText: usize = 0xCD8; // char[512]
+ pub const m_FontName: usize = 0xED8; // char[64]
+ pub const m_bEnabled: usize = 0xF18; // bool
+ pub const m_bFullbright: usize = 0xF19; // bool
+ pub const m_flWorldUnitsPerPx: usize = 0xF1C; // float
+ pub const m_flFontSize: usize = 0xF20; // float
+ pub const m_flDepthOffset: usize = 0xF24; // float
+ pub const m_Color: usize = 0xF28; // Color
+ pub const m_nJustifyHorizontal: usize = 0xF2C; // PointWorldTextJustifyHorizontal_t
+ pub const m_nJustifyVertical: usize = 0xF30; // PointWorldTextJustifyVertical_t
+ pub const m_nReorientMode: usize = 0xF34; // PointWorldTextReorientMode_t
+}
+
+pub mod C_PostProcessingVolume { // C_BaseTrigger
+ pub const m_hPostSettings: usize = 0xCD8; // CStrongHandle<InfoForResourceTypeCPostProcessingResource>
+ pub const m_flFadeDuration: usize = 0xCE0; // float
+ pub const m_flMinLogExposure: usize = 0xCE4; // float
+ pub const m_flMaxLogExposure: usize = 0xCE8; // float
+ pub const m_flMinExposure: usize = 0xCEC; // float
+ pub const m_flMaxExposure: usize = 0xCF0; // float
+ pub const m_flExposureCompensation: usize = 0xCF4; // float
+ pub const m_flExposureFadeSpeedUp: usize = 0xCF8; // float
+ pub const m_flExposureFadeSpeedDown: usize = 0xCFC; // float
+ pub const m_flTonemapEVSmoothingRange: usize = 0xD00; // float
+ pub const m_bMaster: usize = 0xD04; // bool
+ pub const m_bExposureControl: usize = 0xD05; // bool
+ pub const m_flRate: usize = 0xD08; // float
+ pub const m_flTonemapPercentTarget: usize = 0xD0C; // float
+ pub const m_flTonemapPercentBrightPixels: usize = 0xD10; // float
+ pub const m_flTonemapMinAvgLum: usize = 0xD14; // float
+}
+
+pub mod C_Precipitation { // C_BaseTrigger
+ pub const m_flDensity: usize = 0xCC8; // float
+ pub const m_flParticleInnerDist: usize = 0xCD8; // float
+ pub const m_pParticleDef: usize = 0xCE0; // char*
+ pub const m_tParticlePrecipTraceTimer: usize = 0xD08; // TimedEvent[1]
+ pub const m_bActiveParticlePrecipEmitter: usize = 0xD10; // bool[1]
+ pub const m_bParticlePrecipInitialized: usize = 0xD11; // bool
+ pub const m_bHasSimulatedSinceLastSceneObjectUpdate: usize = 0xD12; // bool
+ pub const m_nAvailableSheetSequencesMaxIndex: usize = 0xD14; // int32_t
+}
+
+pub mod C_PrecipitationBlocker { // C_BaseModelEntity
+}
+
+pub mod C_PredictedViewModel { // C_BaseViewModel
+ pub const m_LagAnglesHistory: usize = 0xEE8; // QAngle
+ pub const m_vPredictedOffset: usize = 0xF00; // Vector
+}
+
+pub mod C_RagdollManager { // C_BaseEntity
+ pub const m_iCurrentMaxRagdollCount: usize = 0x540; // int8_t
+}
+
+pub mod C_RagdollProp { // CBaseAnimGraph
+ pub const m_ragPos: usize = 0xE88; // C_NetworkUtlVectorBase<Vector>
+ pub const m_ragAngles: usize = 0xEA0; // C_NetworkUtlVectorBase<QAngle>
+ pub const m_flBlendWeight: usize = 0xEB8; // float
+ pub const m_hRagdollSource: usize = 0xEBC; // CHandle<C_BaseEntity>
+ pub const m_iEyeAttachment: usize = 0xEC0; // AttachmentHandle_t
+ pub const m_flBlendWeightCurrent: usize = 0xEC4; // float
+ pub const m_parentPhysicsBoneIndices: usize = 0xEC8; // CUtlVector<int32_t>
+ pub const m_worldSpaceBoneComputationOrder: usize = 0xEE0; // CUtlVector<int32_t>
+}
+
+pub mod C_RagdollPropAttached { // C_RagdollProp
+ pub const m_boneIndexAttached: usize = 0xEF8; // uint32_t
+ pub const m_ragdollAttachedObjectIndex: usize = 0xEFC; // uint32_t
+ pub const m_attachmentPointBoneSpace: usize = 0xF00; // Vector
+ pub const m_attachmentPointRagdollSpace: usize = 0xF0C; // Vector
+ pub const m_vecOffset: usize = 0xF18; // Vector
+ pub const m_parentTime: usize = 0xF24; // float
+ pub const m_bHasParent: usize = 0xF28; // bool
+}
+
+pub mod C_RectLight { // C_BarnLight
+ pub const m_bShowLight: usize = 0xF08; // bool
+}
+
+pub mod C_RetakeGameRules {
+ pub const m_nMatchSeed: usize = 0xF8; // int32_t
+ pub const m_bBlockersPresent: usize = 0xFC; // bool
+ pub const m_bRoundInProgress: usize = 0xFD; // bool
+ pub const m_iFirstSecondHalfRound: usize = 0x100; // int32_t
+ pub const m_iBombSite: usize = 0x104; // int32_t
+}
+
+pub mod C_RopeKeyframe { // C_BaseModelEntity
+ pub const m_LinksTouchingSomething: usize = 0xCC8; // CBitVec<10>
+ pub const m_nLinksTouchingSomething: usize = 0xCCC; // int32_t
+ pub const m_bApplyWind: usize = 0xCD0; // bool
+ pub const m_fPrevLockedPoints: usize = 0xCD4; // int32_t
+ pub const m_iForcePointMoveCounter: usize = 0xCD8; // int32_t
+ pub const m_bPrevEndPointPos: usize = 0xCDC; // bool[2]
+ pub const m_vPrevEndPointPos: usize = 0xCE0; // Vector[2]
+ pub const m_flCurScroll: usize = 0xCF8; // float
+ pub const m_flScrollSpeed: usize = 0xCFC; // float
+ pub const m_RopeFlags: usize = 0xD00; // uint16_t
+ pub const m_iRopeMaterialModelIndex: usize = 0xD08; // CStrongHandle<InfoForResourceTypeIMaterial2>
+ pub const m_LightValues: usize = 0xF80; // Vector[10]
+ pub const m_nSegments: usize = 0xFF8; // uint8_t
+ pub const m_hStartPoint: usize = 0xFFC; // CHandle<C_BaseEntity>
+ pub const m_hEndPoint: usize = 0x1000; // CHandle<C_BaseEntity>
+ pub const m_iStartAttachment: usize = 0x1004; // AttachmentHandle_t
+ pub const m_iEndAttachment: usize = 0x1005; // AttachmentHandle_t
+ pub const m_Subdiv: usize = 0x1006; // uint8_t
+ pub const m_RopeLength: usize = 0x1008; // int16_t
+ pub const m_Slack: usize = 0x100A; // int16_t
+ pub const m_TextureScale: usize = 0x100C; // float
+ pub const m_fLockedPoints: usize = 0x1010; // uint8_t
+ pub const m_nChangeCount: usize = 0x1011; // uint8_t
+ pub const m_Width: usize = 0x1014; // float
+ pub const m_PhysicsDelegate: usize = 0x1018; // C_RopeKeyframe::CPhysicsDelegate
+ pub const m_hMaterial: usize = 0x1028; // CStrongHandle<InfoForResourceTypeIMaterial2>
+ pub const m_TextureHeight: usize = 0x1030; // int32_t
+ pub const m_vecImpulse: usize = 0x1034; // Vector
+ pub const m_vecPreviousImpulse: usize = 0x1040; // Vector
+ pub const m_flCurrentGustTimer: usize = 0x104C; // float
+ pub const m_flCurrentGustLifetime: usize = 0x1050; // float
+ pub const m_flTimeToNextGust: usize = 0x1054; // float
+ pub const m_vWindDir: usize = 0x1058; // Vector
+ pub const m_vColorMod: usize = 0x1064; // Vector
+ pub const m_vCachedEndPointAttachmentPos: usize = 0x1070; // Vector[2]
+ pub const m_vCachedEndPointAttachmentAngle: usize = 0x1088; // QAngle[2]
+ pub const m_bConstrainBetweenEndpoints: usize = 0x10A0; // bool
+ pub const m_bEndPointAttachmentPositionsDirty: usize = 0x0; // bitfield:1
+ pub const m_bEndPointAttachmentAnglesDirty: usize = 0x0; // bitfield:1
+ pub const m_bNewDataThisFrame: usize = 0x0; // bitfield:1
+ pub const m_bPhysicsInitted: usize = 0x0; // bitfield:1
+}
+
+pub mod C_RopeKeyframe_CPhysicsDelegate {
+ pub const m_pKeyframe: usize = 0x8; // C_RopeKeyframe*
+}
+
+pub mod C_SceneEntity { // C_PointEntity
+ pub const m_bIsPlayingBack: usize = 0x548; // bool
+ pub const m_bPaused: usize = 0x549; // bool
+ pub const m_bMultiplayer: usize = 0x54A; // bool
+ pub const m_bAutogenerated: usize = 0x54B; // bool
+ pub const m_flForceClientTime: usize = 0x54C; // float
+ pub const m_nSceneStringIndex: usize = 0x550; // uint16_t
+ pub const m_bClientOnly: usize = 0x552; // bool
+ pub const m_hOwner: usize = 0x554; // CHandle<C_BaseFlex>
+ pub const m_hActorList: usize = 0x558; // C_NetworkUtlVectorBase<CHandle<C_BaseFlex>>
+ pub const m_bWasPlaying: usize = 0x570; // bool
+ pub const m_QueuedEvents: usize = 0x580; // CUtlVector<C_SceneEntity::QueuedEvents_t>
+ pub const m_flCurrentTime: usize = 0x598; // float
+}
+
+pub mod C_SceneEntity_QueuedEvents_t {
+ pub const starttime: usize = 0x0; // float
+}
+
+pub mod C_SensorGrenade { // C_BaseCSGrenade
+}
+
+pub mod C_SensorGrenadeProjectile { // C_BaseCSGrenadeProjectile
+}
+
+pub mod C_ShatterGlassShardPhysics { // C_PhysicsProp
+ pub const m_ShardDesc: usize = 0xFE0; // shard_model_desc_t
+}
+
+pub mod C_SingleplayRules { // C_GameRules
+}
+
+pub mod C_SkyCamera { // C_BaseEntity
+ pub const m_skyboxData: usize = 0x540; // sky3dparams_t
+ pub const m_skyboxSlotToken: usize = 0x5D0; // CUtlStringToken
+ pub const m_bUseAngles: usize = 0x5D4; // bool
+ pub const m_pNext: usize = 0x5D8; // C_SkyCamera*
+}
+
+pub mod C_SmokeGrenade { // C_BaseCSGrenade
+}
+
+pub mod C_SmokeGrenadeProjectile { // C_BaseCSGrenadeProjectile
+ pub const m_nSmokeEffectTickBegin: usize = 0x1108; // int32_t
+ pub const m_bDidSmokeEffect: usize = 0x110C; // bool
+ pub const m_nRandomSeed: usize = 0x1110; // int32_t
+ pub const m_vSmokeColor: usize = 0x1114; // Vector
+ pub const m_vSmokeDetonationPos: usize = 0x1120; // Vector
+ pub const m_VoxelFrameData: usize = 0x1130; // CUtlVector<uint8_t>
+ pub const m_bSmokeVolumeDataReceived: usize = 0x1148; // bool
+ pub const m_bSmokeEffectSpawned: usize = 0x1149; // bool
+}
+
+pub mod C_SoundAreaEntityBase { // C_BaseEntity
+ pub const m_bDisabled: usize = 0x540; // bool
+ pub const m_bWasEnabled: usize = 0x548; // bool
+ pub const m_iszSoundAreaType: usize = 0x550; // CUtlSymbolLarge
+ pub const m_vPos: usize = 0x558; // Vector
+}
+
+pub mod C_SoundAreaEntityOrientedBox { // C_SoundAreaEntityBase
+ pub const m_vMin: usize = 0x568; // Vector
+ pub const m_vMax: usize = 0x574; // Vector
+}
+
+pub mod C_SoundAreaEntitySphere { // C_SoundAreaEntityBase
+ pub const m_flRadius: usize = 0x568; // float
+}
+
+pub mod C_SoundOpvarSetAABBEntity { // C_SoundOpvarSetPointEntity
+}
+
+pub mod C_SoundOpvarSetOBBEntity { // C_SoundOpvarSetAABBEntity
+}
+
+pub mod C_SoundOpvarSetOBBWindEntity { // C_SoundOpvarSetPointBase
+}
+
+pub mod C_SoundOpvarSetPathCornerEntity { // C_SoundOpvarSetPointEntity
+}
+
+pub mod C_SoundOpvarSetPointBase { // C_BaseEntity
+ pub const m_iszStackName: usize = 0x540; // CUtlSymbolLarge
+ pub const m_iszOperatorName: usize = 0x548; // CUtlSymbolLarge
+ pub const m_iszOpvarName: usize = 0x550; // CUtlSymbolLarge
+ pub const m_iOpvarIndex: usize = 0x558; // int32_t
+ pub const m_bUseAutoCompare: usize = 0x55C; // bool
+}
+
+pub mod C_SoundOpvarSetPointEntity { // C_SoundOpvarSetPointBase
+}
+
+pub mod C_SpotlightEnd { // C_BaseModelEntity
+ pub const m_flLightScale: usize = 0xCC0; // float
+ pub const m_Radius: usize = 0xCC4; // float
+}
+
+pub mod C_Sprite { // C_BaseModelEntity
+ pub const m_hSpriteMaterial: usize = 0xCD8; // CStrongHandle<InfoForResourceTypeIMaterial2>
+ pub const m_hAttachedToEntity: usize = 0xCE0; // CHandle<C_BaseEntity>
+ pub const m_nAttachment: usize = 0xCE4; // AttachmentHandle_t
+ pub const m_flSpriteFramerate: usize = 0xCE8; // float
+ pub const m_flFrame: usize = 0xCEC; // float
+ pub const m_flDieTime: usize = 0xCF0; // GameTime_t
+ pub const m_nBrightness: usize = 0xD00; // uint32_t
+ pub const m_flBrightnessDuration: usize = 0xD04; // float
+ pub const m_flSpriteScale: usize = 0xD08; // float
+ pub const m_flScaleDuration: usize = 0xD0C; // float
+ pub const m_bWorldSpaceScale: usize = 0xD10; // bool
+ pub const m_flGlowProxySize: usize = 0xD14; // float
+ pub const m_flHDRColorScale: usize = 0xD18; // float
+ pub const m_flLastTime: usize = 0xD1C; // GameTime_t
+ pub const m_flMaxFrame: usize = 0xD20; // float
+ pub const m_flStartScale: usize = 0xD24; // float
+ pub const m_flDestScale: usize = 0xD28; // float
+ pub const m_flScaleTimeStart: usize = 0xD2C; // GameTime_t
+ pub const m_nStartBrightness: usize = 0xD30; // int32_t
+ pub const m_nDestBrightness: usize = 0xD34; // int32_t
+ pub const m_flBrightnessTimeStart: usize = 0xD38; // GameTime_t
+ pub const m_hOldSpriteMaterial: usize = 0xD40; // CWeakHandle<InfoForResourceTypeIMaterial2>
+ pub const m_nSpriteWidth: usize = 0xDE8; // int32_t
+ pub const m_nSpriteHeight: usize = 0xDEC; // int32_t
+}
+
+pub mod C_SpriteOriented { // C_Sprite
+}
+
+pub mod C_Sun { // C_BaseModelEntity
+ pub const m_fxSSSunFlareEffectIndex: usize = 0xCC0; // ParticleIndex_t
+ pub const m_fxSunFlareEffectIndex: usize = 0xCC4; // ParticleIndex_t
+ pub const m_fdistNormalize: usize = 0xCC8; // float
+ pub const m_vSunPos: usize = 0xCCC; // Vector
+ pub const m_vDirection: usize = 0xCD8; // Vector
+ pub const m_iszEffectName: usize = 0xCE8; // CUtlSymbolLarge
+ pub const m_iszSSEffectName: usize = 0xCF0; // CUtlSymbolLarge
+ pub const m_clrOverlay: usize = 0xCF8; // Color
+ pub const m_bOn: usize = 0xCFC; // bool
+ pub const m_bmaxColor: usize = 0xCFD; // bool
+ pub const m_flSize: usize = 0xD00; // float
+ pub const m_flHazeScale: usize = 0xD04; // float
+ pub const m_flRotation: usize = 0xD08; // float
+ pub const m_flHDRColorScale: usize = 0xD0C; // float
+ pub const m_flAlphaHaze: usize = 0xD10; // float
+ pub const m_flAlphaScale: usize = 0xD14; // float
+ pub const m_flAlphaHdr: usize = 0xD18; // float
+ pub const m_flFarZScale: usize = 0xD1C; // float
+}
+
+pub mod C_SunGlowOverlay { // CGlowOverlay
+ pub const m_bModulateByDot: usize = 0xD0; // bool
+}
+
+pub mod C_Team { // C_BaseEntity
+ pub const m_aPlayerControllers: usize = 0x540; // C_NetworkUtlVectorBase<CHandle<CBasePlayerController>>
+ pub const m_aPlayers: usize = 0x558; // C_NetworkUtlVectorBase<CHandle<C_BasePlayerPawn>>
+ pub const m_iScore: usize = 0x570; // int32_t
+ pub const m_szTeamname: usize = 0x574; // char[129]
+}
+
+pub mod C_TeamRoundTimer { // C_BaseEntity
+ pub const m_bTimerPaused: usize = 0x540; // bool
+ pub const m_flTimeRemaining: usize = 0x544; // float
+ pub const m_flTimerEndTime: usize = 0x548; // GameTime_t
+ pub const m_bIsDisabled: usize = 0x54C; // bool
+ pub const m_bShowInHUD: usize = 0x54D; // bool
+ pub const m_nTimerLength: usize = 0x550; // int32_t
+ pub const m_nTimerInitialLength: usize = 0x554; // int32_t
+ pub const m_nTimerMaxLength: usize = 0x558; // int32_t
+ pub const m_bAutoCountdown: usize = 0x55C; // bool
+ pub const m_nSetupTimeLength: usize = 0x560; // int32_t
+ pub const m_nState: usize = 0x564; // int32_t
+ pub const m_bStartPaused: usize = 0x568; // bool
+ pub const m_bInCaptureWatchState: usize = 0x569; // bool
+ pub const m_flTotalTime: usize = 0x56C; // float
+ pub const m_bStopWatchTimer: usize = 0x570; // bool
+ pub const m_bFireFinished: usize = 0x571; // bool
+ pub const m_bFire5MinRemain: usize = 0x572; // bool
+ pub const m_bFire4MinRemain: usize = 0x573; // bool
+ pub const m_bFire3MinRemain: usize = 0x574; // bool
+ pub const m_bFire2MinRemain: usize = 0x575; // bool
+ pub const m_bFire1MinRemain: usize = 0x576; // bool
+ pub const m_bFire30SecRemain: usize = 0x577; // bool
+ pub const m_bFire10SecRemain: usize = 0x578; // bool
+ pub const m_bFire5SecRemain: usize = 0x579; // bool
+ pub const m_bFire4SecRemain: usize = 0x57A; // bool
+ pub const m_bFire3SecRemain: usize = 0x57B; // bool
+ pub const m_bFire2SecRemain: usize = 0x57C; // bool
+ pub const m_bFire1SecRemain: usize = 0x57D; // bool
+ pub const m_nOldTimerLength: usize = 0x580; // int32_t
+ pub const m_nOldTimerState: usize = 0x584; // int32_t
+}
+
+pub mod C_TeamplayRules { // C_MultiplayRules
+}
+
+pub mod C_TextureBasedAnimatable { // C_BaseModelEntity
+ pub const m_bLoop: usize = 0xCC0; // bool
+ pub const m_flFPS: usize = 0xCC4; // float
+ pub const m_hPositionKeys: usize = 0xCC8; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_hRotationKeys: usize = 0xCD0; // CStrongHandle<InfoForResourceTypeCTextureBase>
+ pub const m_vAnimationBoundsMin: usize = 0xCD8; // Vector
+ pub const m_vAnimationBoundsMax: usize = 0xCE4; // Vector
+ pub const m_flStartTime: usize = 0xCF0; // float
+ pub const m_flStartFrame: usize = 0xCF4; // float
+}
+
+pub mod C_TintController { // C_BaseEntity
+}
+
+pub mod C_TonemapController2 { // C_BaseEntity
+ pub const m_flAutoExposureMin: usize = 0x540; // float
+ pub const m_flAutoExposureMax: usize = 0x544; // float
+ pub const m_flTonemapPercentTarget: usize = 0x548; // float
+ pub const m_flTonemapPercentBrightPixels: usize = 0x54C; // float
+ pub const m_flTonemapMinAvgLum: usize = 0x550; // float
+ pub const m_flExposureAdaptationSpeedUp: usize = 0x554; // float
+ pub const m_flExposureAdaptationSpeedDown: usize = 0x558; // float
+ pub const m_flTonemapEVSmoothingRange: usize = 0x55C; // float
+}
+
+pub mod C_TonemapController2Alias_env_tonemap_controller2 { // C_TonemapController2
+}
+
+pub mod C_TriggerBuoyancy { // C_BaseTrigger
+ pub const m_BuoyancyHelper: usize = 0xCC8; // CBuoyancyHelper
+ pub const m_flFluidDensity: usize = 0xCE8; // float
+}
+
+pub mod C_TriggerLerpObject { // C_BaseTrigger
+}
+
+pub mod C_TriggerMultiple { // C_BaseTrigger
+}
+
+pub mod C_TriggerVolume { // C_BaseModelEntity
+}
+
+pub mod C_ViewmodelAttachmentModel { // CBaseAnimGraph
+}
+
+pub mod C_ViewmodelWeapon { // CBaseAnimGraph
+ pub const m_worldModel: usize = 0xE80; // char*
+}
+
+pub mod C_VoteController { // C_BaseEntity
+ pub const m_iActiveIssueIndex: usize = 0x550; // int32_t
+ pub const m_iOnlyTeamToVote: usize = 0x554; // int32_t
+ pub const m_nVoteOptionCount: usize = 0x558; // int32_t[5]
+ pub const m_nPotentialVotes: usize = 0x56C; // int32_t
+ pub const m_bVotesDirty: usize = 0x570; // bool
+ pub const m_bTypeDirty: usize = 0x571; // bool
+ pub const m_bIsYesNoVote: usize = 0x572; // bool
+}
+
+pub mod C_WaterBullet { // CBaseAnimGraph
+}
+
+pub mod C_WeaponAWP { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponAug { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponBaseItem { // C_CSWeaponBase
+ pub const m_SequenceCompleteTimer: usize = 0x1A10; // CountdownTimer
+ pub const m_bRedraw: usize = 0x1A28; // bool
+}
+
+pub mod C_WeaponBizon { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponCZ75a { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponElite { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponFamas { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponFiveSeven { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponG3SG1 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponGalilAR { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponGlock { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponHKP2000 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponM249 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponM4A1 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponM4A1Silencer { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponMAC10 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponMP5SD { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponMP7 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponMP9 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponMag7 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponNOVA { // C_CSWeaponBase
+}
+
+pub mod C_WeaponNegev { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponP250 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponP90 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponRevolver { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponSCAR20 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponSG556 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponSSG08 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponSawedoff { // C_CSWeaponBase
+}
+
+pub mod C_WeaponShield { // C_CSWeaponBaseGun
+ pub const m_flDisplayHealth: usize = 0x1A30; // float
+}
+
+pub mod C_WeaponTaser { // C_CSWeaponBaseGun
+ pub const m_fFireTime: usize = 0x1A30; // GameTime_t
+}
+
+pub mod C_WeaponTec9 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponUMP45 { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponUSPSilencer { // C_CSWeaponBaseGun
+}
+
+pub mod C_WeaponXM1014 { // C_CSWeaponBase
+}
+
+pub mod C_World { // C_BaseModelEntity
+}
+
+pub mod C_WorldModelGloves { // CBaseAnimGraph
+}
+
+pub mod C_WorldModelNametag { // CBaseAnimGraph
+}
+
+pub mod C_WorldModelStattrak { // CBaseAnimGraph
+}
+
+pub mod C_fogplayerparams_t {
+ pub const m_hCtrl: usize = 0x8; // CHandle<C_FogController>
+ pub const m_flTransitionTime: usize = 0xC; // float
+ pub const m_OldColor: usize = 0x10; // Color
+ pub const m_flOldStart: usize = 0x14; // float
+ pub const m_flOldEnd: usize = 0x18; // float
+ pub const m_flOldMaxDensity: usize = 0x1C; // float
+ pub const m_flOldHDRColorScale: usize = 0x20; // float
+ pub const m_flOldFarZ: usize = 0x24; // float
+ pub const m_NewColor: usize = 0x28; // Color
+ pub const m_flNewStart: usize = 0x2C; // float
+ pub const m_flNewEnd: usize = 0x30; // float
+ pub const m_flNewMaxDensity: usize = 0x34; // float
+ pub const m_flNewHDRColorScale: usize = 0x38; // float
+ pub const m_flNewFarZ: usize = 0x3C; // float
+}
+
+pub mod CompMatMutatorCondition_t {
+ pub const m_nMutatorCondition: usize = 0x0; // CompMatPropertyMutatorConditionType_t
+ pub const m_strMutatorConditionContainerName: usize = 0x8; // CUtlString
+ pub const m_strMutatorConditionContainerVarName: usize = 0x10; // CUtlString
+ pub const m_strMutatorConditionContainerVarValue: usize = 0x18; // CUtlString
+ pub const m_bPassWhenTrue: usize = 0x20; // bool
+}
+
+pub mod CompMatPropertyMutator_t {
+ pub const m_bEnabled: usize = 0x0; // bool
+ pub const m_nMutatorCommandType: usize = 0x4; // CompMatPropertyMutatorType_t
+ pub const m_strInitWith_Container: usize = 0x8; // CUtlString
+ pub const m_strCopyProperty_InputContainerSrc: usize = 0x10; // CUtlString
+ pub const m_strCopyProperty_InputContainerProperty: usize = 0x18; // CUtlString
+ pub const m_strCopyProperty_TargetProperty: usize = 0x20; // CUtlString
+ pub const m_strRandomRollInputVars_SeedInputVar: usize = 0x28; // CUtlString
+ pub const m_vecRandomRollInputVars_InputVarsToRoll: usize = 0x30; // CUtlVector<CUtlString>
+ pub const m_strCopyMatchingKeys_InputContainerSrc: usize = 0x48; // CUtlString
+ pub const m_strCopyKeysWithSuffix_InputContainerSrc: usize = 0x50; // CUtlString
+ pub const m_strCopyKeysWithSuffix_FindSuffix: usize = 0x58; // CUtlString
+ pub const m_strCopyKeysWithSuffix_ReplaceSuffix: usize = 0x60; // CUtlString
+ pub const m_nSetValue_Value: usize = 0x68; // CompositeMaterialInputLooseVariable_t
+ pub const m_strGenerateTexture_TargetParam: usize = 0x2D8; // CUtlString
+ pub const m_strGenerateTexture_InitialContainer: usize = 0x2E0; // CUtlString
+ pub const m_nResolution: usize = 0x2E8; // int32_t
+ pub const m_bIsScratchTarget: usize = 0x2EC; // bool
+ pub const m_bSplatDebugInfo: usize = 0x2ED; // bool
+ pub const m_bCaptureInRenderDoc: usize = 0x2EE; // bool
+ pub const m_vecTexGenInstructions: usize = 0x2F0; // CUtlVector<CompMatPropertyMutator_t>
+ pub const m_vecConditionalMutators: usize = 0x308; // CUtlVector<CompMatPropertyMutator_t>
+ pub const m_strPopInputQueue_Container: usize = 0x320; // CUtlString
+ pub const m_strDrawText_InputContainerSrc: usize = 0x328; // CUtlString
+ pub const m_strDrawText_InputContainerProperty: usize = 0x330; // CUtlString
+ pub const m_vecDrawText_Position: usize = 0x338; // Vector2D
+ pub const m_colDrawText_Color: usize = 0x340; // Color
+ pub const m_strDrawText_Font: usize = 0x348; // CUtlString
+ pub const m_vecConditions: usize = 0x350; // CUtlVector<CompMatMutatorCondition_t>
+}
+
+pub mod CompositeMaterialAssemblyProcedure_t {
+ pub const m_vecCompMatIncludes: usize = 0x0; // CUtlVector<CResourceName>
+ pub const m_vecMatchFilters: usize = 0x18; // CUtlVector<CompositeMaterialMatchFilter_t>
+ pub const m_vecCompositeInputContainers: usize = 0x30; // CUtlVector<CompositeMaterialInputContainer_t>
+ pub const m_vecPropertyMutators: usize = 0x48; // CUtlVector<CompMatPropertyMutator_t>
+}
+
+pub mod CompositeMaterialEditorPoint_t {
+ pub const m_ModelName: usize = 0x0; // CResourceName
+ pub const m_nSequenceIndex: usize = 0xE0; // int32_t
+ pub const m_flCycle: usize = 0xE4; // float
+ pub const m_KVModelStateChoices: usize = 0xE8; // KeyValues3
+ pub const m_bEnableChildModel: usize = 0xF8; // bool
+ pub const m_ChildModelName: usize = 0x100; // CResourceName
+ pub const m_vecCompositeMaterialAssemblyProcedures: usize = 0x1E0; // CUtlVector<CompositeMaterialAssemblyProcedure_t>
+ pub const m_vecCompositeMaterials: usize = 0x1F8; // CUtlVector<CompositeMaterial_t>
+}
+
+pub mod CompositeMaterialInputContainer_t {
+ pub const m_bEnabled: usize = 0x0; // bool
+ pub const m_nCompositeMaterialInputContainerSourceType: usize = 0x4; // CompositeMaterialInputContainerSourceType_t
+ pub const m_strSpecificContainerMaterial: usize = 0x8; // CResourceName
+ pub const m_strAttrName: usize = 0xE8; // CUtlString
+ pub const m_strAlias: usize = 0xF0; // CUtlString
+ pub const m_vecLooseVariables: usize = 0xF8; // CUtlVector<CompositeMaterialInputLooseVariable_t>
+ pub const m_strAttrNameForVar: usize = 0x110; // CUtlString
+ pub const m_bExposeExternally: usize = 0x118; // bool
+}
+
+pub mod CompositeMaterialInputLooseVariable_t {
+ pub const m_strName: usize = 0x0; // CUtlString
+ pub const m_bExposeExternally: usize = 0x8; // bool
+ pub const m_strExposedFriendlyName: usize = 0x10; // CUtlString
+ pub const m_strExposedFriendlyGroupName: usize = 0x18; // CUtlString
+ pub const m_bExposedVariableIsFixedRange: usize = 0x20; // bool
+ pub const m_strExposedVisibleWhenTrue: usize = 0x28; // CUtlString
+ pub const m_strExposedHiddenWhenTrue: usize = 0x30; // CUtlString
+ pub const m_nVariableType: usize = 0x38; // CompositeMaterialInputLooseVariableType_t
+ pub const m_bValueBoolean: usize = 0x3C; // bool
+ pub const m_nValueIntX: usize = 0x40; // int32_t
+ pub const m_nValueIntY: usize = 0x44; // int32_t
+ pub const m_nValueIntZ: usize = 0x48; // int32_t
+ pub const m_nValueIntW: usize = 0x4C; // int32_t
+ pub const m_bHasFloatBounds: usize = 0x50; // bool
+ pub const m_flValueFloatX: usize = 0x54; // float
+ pub const m_flValueFloatX_Min: usize = 0x58; // float
+ pub const m_flValueFloatX_Max: usize = 0x5C; // float
+ pub const m_flValueFloatY: usize = 0x60; // float
+ pub const m_flValueFloatY_Min: usize = 0x64; // float
+ pub const m_flValueFloatY_Max: usize = 0x68; // float
+ pub const m_flValueFloatZ: usize = 0x6C; // float
+ pub const m_flValueFloatZ_Min: usize = 0x70; // float
+ pub const m_flValueFloatZ_Max: usize = 0x74; // float
+ pub const m_flValueFloatW: usize = 0x78; // float
+ pub const m_flValueFloatW_Min: usize = 0x7C; // float
+ pub const m_flValueFloatW_Max: usize = 0x80; // float
+ pub const m_cValueColor4: usize = 0x84; // Color
+ pub const m_nValueSystemVar: usize = 0x88; // CompositeMaterialVarSystemVar_t
+ pub const m_strResourceMaterial: usize = 0x90; // CResourceName
+ pub const m_strTextureContentAssetPath: usize = 0x170; // CUtlString
+ pub const m_strTextureRuntimeResourcePath: usize = 0x178; // CResourceName
+ pub const m_strTextureCompilationVtexTemplate: usize = 0x258; // CUtlString
+ pub const m_nTextureType: usize = 0x260; // CompositeMaterialInputTextureType_t
+ pub const m_strString: usize = 0x268; // CUtlString
+}
+
+pub mod CompositeMaterialMatchFilter_t {
+ pub const m_nCompositeMaterialMatchFilterType: usize = 0x0; // CompositeMaterialMatchFilterType_t
+ pub const m_strMatchFilter: usize = 0x8; // CUtlString
+ pub const m_strMatchValue: usize = 0x10; // CUtlString
+ pub const m_bPassWhenTrue: usize = 0x18; // bool
+}
+
+pub mod CompositeMaterial_t {
+ pub const m_TargetKVs: usize = 0x8; // KeyValues3
+ pub const m_PreGenerationKVs: usize = 0x18; // KeyValues3
+ pub const m_FinalKVs: usize = 0x28; // KeyValues3
+ pub const m_vecGeneratedTextures: usize = 0x40; // CUtlVector<GeneratedTextureHandle_t>
+}
+
+pub mod CountdownTimer {
+ pub const m_duration: usize = 0x8; // float
+ pub const m_timestamp: usize = 0xC; // GameTime_t
+ pub const m_timescale: usize = 0x10; // float
+ pub const m_nWorldGroupId: usize = 0x14; // WorldGroupId_t
+}
+
+pub mod EngineCountdownTimer {
+ pub const m_duration: usize = 0x8; // float
+ pub const m_timestamp: usize = 0xC; // float
+ pub const m_timescale: usize = 0x10; // float
+}
+
+pub mod EntityRenderAttribute_t {
+ pub const m_ID: usize = 0x30; // CUtlStringToken
+ pub const m_Values: usize = 0x34; // Vector4D
+}
+
+pub mod EntitySpottedState_t {
+ pub const m_bSpotted: usize = 0x8; // bool
+ pub const m_bSpottedByMask: usize = 0xC; // uint32_t[2]
+}
+
+pub mod GeneratedTextureHandle_t {
+ pub const m_strBitmapName: usize = 0x0; // CUtlString
+}
+
+pub mod IClientAlphaProperty {
+}
+
+pub mod IntervalTimer {
+ pub const m_timestamp: usize = 0x8; // GameTime_t
+ pub const m_nWorldGroupId: usize = 0xC; // WorldGroupId_t
+}
+
+pub mod PhysicsRagdollPose_t {
+ pub const __m_pChainEntity: usize = 0x8; // CNetworkVarChainer
+ pub const m_Transforms: usize = 0x30; // C_NetworkUtlVectorBase<CTransform>
+ pub const m_hOwner: usize = 0x48; // CHandle<C_BaseEntity>
+ pub const m_bDirty: usize = 0x68; // bool
+}
+
+pub mod SellbackPurchaseEntry_t {
+ pub const m_unDefIdx: usize = 0x30; // uint16_t
+ pub const m_nCost: usize = 0x34; // int32_t
+ pub const m_nPrevArmor: usize = 0x38; // int32_t
+ pub const m_bPrevHelmet: usize = 0x3C; // bool
+ pub const m_hItem: usize = 0x40; // CEntityHandle
+}
+
+pub mod ServerAuthoritativeWeaponSlot_t {
+ pub const unClass: usize = 0x28; // uint16_t
+ pub const unSlot: usize = 0x2A; // uint16_t
+ pub const unItemDefIdx: usize = 0x2C; // uint16_t
+}
+
+pub mod TimedEvent {
+ pub const m_TimeBetweenEvents: usize = 0x0; // float
+ pub const m_fNextEvent: usize = 0x4; // float
+}
+
+pub mod VPhysicsCollisionAttribute_t {
+ pub const m_nInteractsAs: usize = 0x8; // uint64_t
+ pub const m_nInteractsWith: usize = 0x10; // uint64_t
+ pub const m_nInteractsExclude: usize = 0x18; // uint64_t
+ pub const m_nEntityId: usize = 0x20; // uint32_t
+ pub const m_nOwnerId: usize = 0x24; // uint32_t
+ pub const m_nHierarchyId: usize = 0x28; // uint16_t
+ pub const m_nCollisionGroup: usize = 0x2A; // uint8_t
+ pub const m_nCollisionFunctionMask: usize = 0x2B; // uint8_t
+}
+
+pub mod ViewAngleServerChange_t {
+ pub const nType: usize = 0x30; // FixAngleSet_t
+ pub const qAngle: usize = 0x34; // QAngle
+ pub const nIndex: usize = 0x40; // uint32_t
+}
+
+pub mod WeaponPurchaseCount_t {
+ pub const m_nItemDefIndex: usize = 0x30; // uint16_t
+ pub const m_nCount: usize = 0x32; // uint16_t
+}
+
+pub mod WeaponPurchaseTracker_t {
+ pub const m_weaponPurchases: usize = 0x8; // C_UtlVectorEmbeddedNetworkVar<WeaponPurchaseCount_t>
+}
+
+pub mod audioparams_t {
+ pub const localSound: usize = 0x8; // Vector[8]
+ pub const soundscapeIndex: usize = 0x68; // int32_t
+ pub const localBits: usize = 0x6C; // uint8_t
+ pub const soundscapeEntityListIndex: usize = 0x70; // int32_t
+ pub const soundEventHash: usize = 0x74; // uint32_t
+}
+
+pub mod fogparams_t {
+ pub const dirPrimary: usize = 0x8; // Vector
+ pub const colorPrimary: usize = 0x14; // Color
+ pub const colorSecondary: usize = 0x18; // Color
+ pub const colorPrimaryLerpTo: usize = 0x1C; // Color
+ pub const colorSecondaryLerpTo: usize = 0x20; // Color
+ pub const start: usize = 0x24; // float
+ pub const end: usize = 0x28; // float
+ pub const farz: usize = 0x2C; // float
+ pub const maxdensity: usize = 0x30; // float
+ pub const exponent: usize = 0x34; // float
+ pub const HDRColorScale: usize = 0x38; // float
+ pub const skyboxFogFactor: usize = 0x3C; // float
+ pub const skyboxFogFactorLerpTo: usize = 0x40; // float
+ pub const startLerpTo: usize = 0x44; // float
+ pub const endLerpTo: usize = 0x48; // float
+ pub const maxdensityLerpTo: usize = 0x4C; // float
+ pub const lerptime: usize = 0x50; // GameTime_t
+ pub const duration: usize = 0x54; // float
+ pub const blendtobackground: usize = 0x58; // float
+ pub const scattering: usize = 0x5C; // float
+ pub const locallightscale: usize = 0x60; // float
+ pub const enable: usize = 0x64; // bool
+ pub const blend: usize = 0x65; // bool
+ pub const m_bNoReflectionFog: usize = 0x66; // bool
+ pub const m_bPadding: usize = 0x67; // bool
+}
+
+pub mod shard_model_desc_t {
+ pub const m_nModelID: usize = 0x8; // int32_t
+ pub const m_hMaterial: usize = 0x10; // CStrongHandle<InfoForResourceTypeIMaterial2>
+ pub const m_solid: usize = 0x18; // ShardSolid_t
+ pub const m_ShatterPanelMode: usize = 0x19; // ShatterPanelMode
+ pub const m_vecPanelSize: usize = 0x1C; // Vector2D
+ pub const m_vecStressPositionA: usize = 0x24; // Vector2D
+ pub const m_vecStressPositionB: usize = 0x2C; // Vector2D
+ pub const m_vecPanelVertices: usize = 0x38; // C_NetworkUtlVectorBase<Vector2D>
+ pub const m_flGlassHalfThickness: usize = 0x50; // float
+ pub const m_bHasParent: usize = 0x54; // bool
+ pub const m_bParentFrozen: usize = 0x55; // bool
+ pub const m_SurfacePropStringToken: usize = 0x58; // CUtlStringToken
+}
+
+pub mod sky3dparams_t {
+ pub const scale: usize = 0x8; // int16_t
+ pub const origin: usize = 0xC; // Vector
+ pub const bClip3DSkyBoxNearToWorldFar: usize = 0x18; // bool
+ pub const flClip3DSkyBoxNearToWorldFarOffset: usize = 0x1C; // float
+ pub const fog: usize = 0x20; // fogparams_t
+ pub const m_nWorldGroupID: usize = 0x88; // WorldGroupId_t
+}1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +
/*
+ * Created using https://github.com/a2x/cs2-dumper
+ * Sat, 30 Dec 2023 03:17:25 +0000
+ */
+
+#![allow(non_snake_case, non_upper_case_globals)]
+
+pub mod CEmptyEntityInstance {
+}
+
+pub mod CEntityComponent {
+}
+
+pub mod CEntityComponentHelper {
+ pub const m_flags: usize = 0x8; // uint32_t
+ pub const m_pInfo: usize = 0x10; // EntComponentInfo_t*
+ pub const m_nPriority: usize = 0x18; // int32_t
+ pub const m_pNext: usize = 0x20; // CEntityComponentHelper*
+}
+
+pub mod CEntityIOOutput {
+ pub const m_Value: usize = 0x18; // CVariantBase<CVariantDefaultAllocator>
+}
+
+pub mod CEntityIdentity {
+ pub const m_nameStringableIndex: usize = 0x14; // int32_t
+ pub const m_name: usize = 0x18; // CUtlSymbolLarge
+ pub const m_designerName: usize = 0x20; // CUtlSymbolLarge
+ pub const m_flags: usize = 0x30; // uint32_t
+ pub const m_worldGroupId: usize = 0x38; // WorldGroupId_t
+ pub const m_fDataObjectTypes: usize = 0x3C; // uint32_t
+ pub const m_PathIndex: usize = 0x40; // ChangeAccessorFieldPathIndex_t
+ pub const m_pPrev: usize = 0x58; // CEntityIdentity*
+ pub const m_pNext: usize = 0x60; // CEntityIdentity*
+ pub const m_pPrevByClass: usize = 0x68; // CEntityIdentity*
+ pub const m_pNextByClass: usize = 0x70; // CEntityIdentity*
+}
+
+pub mod CEntityInstance {
+ pub const m_iszPrivateVScripts: usize = 0x8; // CUtlSymbolLarge
+ pub const m_pEntity: usize = 0x10; // CEntityIdentity*
+ pub const m_CScriptComponent: usize = 0x28; // CScriptComponent*
+}
+
+pub mod CNetworkVarChainer {
+ pub const m_PathIndex: usize = 0x20; // ChangeAccessorFieldPathIndex_t
+}
+
+pub mod CScriptComponent { // CEntityComponent
+ pub const m_scriptClassName: usize = 0x30; // CUtlSymbolLarge
+}
+
+pub mod CVariantDefaultAllocator {
+}
+
+pub mod EngineLoopState_t {
+ pub const m_nPlatWindowWidth: usize = 0x18; // int32_t
+ pub const m_nPlatWindowHeight: usize = 0x1C; // int32_t
+ pub const m_nRenderWidth: usize = 0x20; // int32_t
+ pub const m_nRenderHeight: usize = 0x24; // int32_t
+}
+
+pub mod EntComponentInfo_t {
+ pub const m_pName: usize = 0x0; // char*
+ pub const m_pCPPClassname: usize = 0x8; // char*
+ pub const m_pNetworkDataReferencedDescription: usize = 0x10; // char*
+ pub const m_pNetworkDataReferencedPtrPropDescription: usize = 0x18; // char*
+ pub const m_nRuntimeIndex: usize = 0x20; // int32_t
+ pub const m_nFlags: usize = 0x24; // uint32_t
+ pub const m_pBaseClassComponentHelper: usize = 0x60; // CEntityComponentHelper*
+}
+
+pub mod EntInput_t {
+}
+
+pub mod EntOutput_t {
+}
+
+pub mod EventAdvanceTick_t { // EventSimulate_t
+ pub const m_nCurrentTick: usize = 0x30; // int32_t
+ pub const m_nCurrentTickThisFrame: usize = 0x34; // int32_t
+ pub const m_nTotalTicksThisFrame: usize = 0x38; // int32_t
+ pub const m_nTotalTicks: usize = 0x3C; // int32_t
+}
+
+pub mod EventAppShutdown_t {
+ pub const m_nDummy0: usize = 0x0; // int32_t
+}
+
+pub mod EventClientAdvanceTick_t { // EventAdvanceTick_t
+}
+
+pub mod EventClientFrameSimulate_t {
+ pub const m_LoopState: usize = 0x0; // EngineLoopState_t
+ pub const m_flRealTime: usize = 0x28; // float
+ pub const m_flFrameTime: usize = 0x2C; // float
+}
+
+pub mod EventClientOutput_t {
+ pub const m_LoopState: usize = 0x0; // EngineLoopState_t
+ pub const m_flRenderTime: usize = 0x28; // float
+ pub const m_flRealTime: usize = 0x2C; // float
+ pub const m_flRenderFrameTimeUnbounded: usize = 0x30; // float
+ pub const m_bRenderOnly: usize = 0x34; // bool
+}
+
+pub mod EventClientPauseSimulate_t { // EventSimulate_t
+}
+
+pub mod EventClientPollInput_t {
+ pub const m_LoopState: usize = 0x0; // EngineLoopState_t
+ pub const m_flRealTime: usize = 0x28; // float
+}
+
+pub mod EventClientPollNetworking_t {
+ pub const m_nTickCount: usize = 0x0; // int32_t
+}
+
+pub mod EventClientPostAdvanceTick_t { // EventPostAdvanceTick_t
+}
+
+pub mod EventClientPostOutput_t {
+ pub const m_LoopState: usize = 0x0; // EngineLoopState_t
+ pub const m_flRenderTime: usize = 0x28; // double
+ pub const m_flRenderFrameTime: usize = 0x30; // float
+ pub const m_flRenderFrameTimeUnbounded: usize = 0x34; // float
+ pub const m_bRenderOnly: usize = 0x38; // bool
+}
+
+pub mod EventClientPostSimulate_t { // EventSimulate_t
+}
+
+pub mod EventClientPreOutput_t {
+ pub const m_LoopState: usize = 0x0; // EngineLoopState_t
+ pub const m_flRenderTime: usize = 0x28; // double
+ pub const m_flRenderFrameTime: usize = 0x30; // double
+ pub const m_flRenderFrameTimeUnbounded: usize = 0x38; // double
+ pub const m_flRealTime: usize = 0x40; // float
+ pub const m_bRenderOnly: usize = 0x44; // bool
+}
+
+pub mod EventClientPreSimulate_t { // EventSimulate_t
+}
+
+pub mod EventClientPredictionPostNetupdate_t {
+}
+
+pub mod EventClientProcessGameInput_t {
+ pub const m_LoopState: usize = 0x0; // EngineLoopState_t
+ pub const m_flRealTime: usize = 0x28; // float
+ pub const m_flFrameTime: usize = 0x2C; // float
+}
+
+pub mod EventClientProcessInput_t {
+ pub const m_LoopState: usize = 0x0; // EngineLoopState_t
+ pub const m_flRealTime: usize = 0x28; // float
+ pub const m_flTickInterval: usize = 0x2C; // float
+ pub const m_flTickStartTime: usize = 0x30; // double
+}
+
+pub mod EventClientProcessNetworking_t {
+}
+
+pub mod EventClientSceneSystemThreadStateChange_t {
+ pub const m_bThreadsActive: usize = 0x0; // bool
+}
+
+pub mod EventClientSendInput_t {
+ pub const m_bFinalClientCommandTick: usize = 0x0; // bool
+ pub const m_nAdditionalClientCommandsToCreate: usize = 0x4; // int32_t
+}
+
+pub mod EventClientSimulate_t { // EventSimulate_t
+}
+
+pub mod EventFrameBoundary_t {
+ pub const m_flFrameTime: usize = 0x0; // float
+}
+
+pub mod EventModInitialized_t {
+}
+
+pub mod EventPostAdvanceTick_t { // EventSimulate_t
+ pub const m_nCurrentTick: usize = 0x30; // int32_t
+ pub const m_nCurrentTickThisFrame: usize = 0x34; // int32_t
+ pub const m_nTotalTicksThisFrame: usize = 0x38; // int32_t
+ pub const m_nTotalTicks: usize = 0x3C; // int32_t
+}
+
+pub mod EventPostDataUpdate_t {
+ pub const m_nCount: usize = 0x0; // int32_t
+}
+
+pub mod EventPreDataUpdate_t {
+ pub const m_nCount: usize = 0x0; // int32_t
+}
+
+pub mod EventProfileStorageAvailable_t {
+ pub const m_nSplitScreenSlot: usize = 0x0; // CSplitScreenSlot
+}
+
+pub mod EventServerAdvanceTick_t { // EventAdvanceTick_t
+}
+
+pub mod EventServerPollNetworking_t { // EventSimulate_t
+}
+
+pub mod EventServerPostAdvanceTick_t { // EventPostAdvanceTick_t
+}
+
+pub mod EventServerPostSimulate_t { // EventSimulate_t
+}
+
+pub mod EventServerProcessNetworking_t { // EventSimulate_t
+}
+
+pub mod EventServerSimulate_t { // EventSimulate_t
+}
+
+pub mod EventSetTime_t {
+ pub const m_LoopState: usize = 0x0; // EngineLoopState_t
+ pub const m_nClientOutputFrames: usize = 0x28; // int32_t
+ pub const m_flRealTime: usize = 0x30; // double
+ pub const m_flRenderTime: usize = 0x38; // double
+ pub const m_flRenderFrameTime: usize = 0x40; // double
+ pub const m_flRenderFrameTimeUnbounded: usize = 0x48; // double
+ pub const m_flRenderFrameTimeUnscaled: usize = 0x50; // double
+ pub const m_flTickRemainder: usize = 0x58; // double
+}
+
+pub mod EventSimpleLoopFrameUpdate_t {
+ pub const m_LoopState: usize = 0x0; // EngineLoopState_t
+ pub const m_flRealTime: usize = 0x28; // float
+ pub const m_flFrameTime: usize = 0x2C; // float
+}
+
+pub mod EventSimulate_t {
+ pub const m_LoopState: usize = 0x0; // EngineLoopState_t
+ pub const m_bFirstTick: usize = 0x28; // bool
+ pub const m_bLastTick: usize = 0x29; // bool
+}
+
+pub mod EventSplitScreenStateChanged_t {
+}1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +
/*
+ * Created using https://github.com/a2x/cs2-dumper
+ * Sat, 30 Dec 2023 03:17:26 +0000
+ */
+
+#![allow(non_snake_case, non_upper_case_globals)]
+
+pub mod client_dll { // client.dll
+ pub const dwEntityList: usize = 0x17C1950;
+ pub const dwForceAttack: usize = 0x16C1E70;
+ pub const dwForceAttack2: usize = 0x16C1F00;
+ pub const dwForceBackward: usize = 0x16C2140;
+ pub const dwForceCrouch: usize = 0x16C2410;
+ pub const dwForceForward: usize = 0x16C20B0;
+ pub const dwForceJump: usize = 0x16C2380;
+ pub const dwForceLeft: usize = 0x16C21D0;
+ pub const dwForceRight: usize = 0x16C2260;
+ pub const dwGameEntitySystem: usize = 0x18ED250;
+ pub const dwGameEntitySystem_getHighestEntityIndex: usize = 0x1510;
+ pub const dwGameRules: usize = 0x181E048;
+ pub const dwGlobalVars: usize = 0x16BDC98;
+ pub const dwGlowManager: usize = 0x181D7B0;
+ pub const dwInterfaceLinkList: usize = 0x191AEE8;
+ pub const dwLocalPlayerController: usize = 0x1810F48;
+ pub const dwLocalPlayerPawn: usize = 0x16C8F38;
+ pub const dwPlantedC4: usize = 0x1824A88;
+ pub const dwPrediction: usize = 0x16C8E00;
+ pub const dwSensitivity: usize = 0x181ED48;
+ pub const dwSensitivity_sensitivity: usize = 0x40;
+ pub const dwViewAngles: usize = 0x1880DC0;
+ pub const dwViewMatrix: usize = 0x1820150;
+ pub const dwViewRender: usize = 0x1820998;
+}
+
+pub mod engine2_dll { // engine2.dll
+ pub const dwBuildNumber: usize = 0x4E03D4;
+ pub const dwNetworkGameClient: usize = 0x4DF988;
+ pub const dwNetworkGameClient_getLocalPlayer: usize = 0xF0;
+ pub const dwNetworkGameClient_maxClients: usize = 0x250;
+ pub const dwNetworkGameClient_signOnState: usize = 0x240;
+ pub const dwWindowHeight: usize = 0x596E1C;
+ pub const dwWindowWidth: usize = 0x596E18;
+}
+
+pub mod game_info { // Some additional information about the game at dump time
+ pub const buildNumber: usize = 0x369F; // Game build number
+}
+
+pub mod inputsystem_dll { // inputsystem.dll
+ pub const dwInputSystem: usize = 0x35760;
+}1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +
use memflow::types::Address;
+use thiserror::Error;
+
+use crate::structs::Vec3;
+
+#[derive(Error, Debug)]
+pub enum Error {
+ /// Game version mismatch.
+ /// First arg is the game version, second is the offset version.
+ #[error("version mismatch, game has version {0}, but offsets have version {1}")]
+ GameVersionMismatch(usize, usize),
+
+ #[error("memflow error: {0}")]
+ Memflow(#[from] memflow::error::Error),
+
+ #[error("memflow partial error when reading address: {0}")]
+ MemflowPartialAddress(#[from] memflow::error::PartialError<Address>),
+
+ #[error("memflow partial error when reading Vec3: {0}")]
+ MemflowPartialVec3(#[from] memflow::error::PartialError<Vec3>),
+
+ #[error("memflow partial error when reading String: {0}")]
+ MemflowPartialString(#[from] memflow::error::PartialError<String>),
+
+ #[error("memflow partial error when reading i32: {0}")]
+ MemflowPartiali32(#[from] memflow::error::PartialError<i32>),
+
+ #[error("memflow partial error when reading u32: {0}")]
+ MemflowPartialu32(#[from] memflow::error::PartialError<u32>),
+
+ #[error("memflow partial error when reading u8: {0}")]
+ MemflowPartialu8(#[from] memflow::error::PartialError<u8>)
+}1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +
use memflow::{types::Address, mem::MemoryView};
+use crate::{CheatCtx, Error, cs2dumper, traits::{BaseEntity, MemoryClass}, structs::Vec3};
+
+pub struct CBaseEntity(Address);
+
+impl MemoryClass for CBaseEntity {
+ fn ptr(&self) -> Address {
+ self.0
+ }
+
+ fn new(ptr: Address) -> Self {
+ Self(ptr)
+ }
+}
+
+impl BaseEntity for CBaseEntity {
+ fn from_index(ctx: &mut CheatCtx, entity_list: Address, index: i32) -> Result<Option<CBaseEntity>, Error> {
+ let list_entry = ctx.process.read_addr64(entity_list + 8 * (index >> 9) + 16)?;
+ if list_entry.is_null() && !list_entry.is_valid() {
+ return Ok(None);
+ }
+
+ let player_ptr = ctx.process.read_addr64(list_entry + 120 * (index & 0x1FF))?;
+ if player_ptr.is_null() && !player_ptr.is_valid() {
+ return Ok(None);
+ }
+
+ Ok(Some(Self::new(player_ptr)))
+ }
+
+ fn pos(&self, ctx: &mut CheatCtx) -> Result<Vec3, Error> {
+ let node = ctx.process.read_addr64(self.0 + cs2dumper::client::C_BaseEntity::m_pGameSceneNode)?;
+ Ok(ctx.process.read(node + cs2dumper::client::CGameSceneNode::m_vecAbsOrigin)?)
+ }
+
+ fn class_name(&self, ctx: &mut CheatCtx) -> Result<String, Error> {
+ let entity_identity_ptr = ctx.process.read_addr64(self.0 + cs2dumper::client::CEntityInstance::m_pEntity)?;
+ let class_name_ptr = ctx.process.read_addr64(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_designerName)?;
+ Ok(ctx.process.read_char_string_n(class_name_ptr, 32)?)
+ }
+}
+
+impl CBaseEntity {
+ pub fn to_player_controller(&self) -> super::CPlayerController {
+ super::CPlayerController::new(self.0)
+ }
+}1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +
use memflow::{types::Address, mem::MemoryView};
+use num_traits::FromPrimitive;
+
+use crate::{CheatCtx, Error, cs2dumper, structs::Vec3, traits::{MemoryClass, BaseEntity}, enums::{TeamID, PlayerType}};
+
+pub struct CPlayerController(Address);
+
+impl MemoryClass for CPlayerController {
+ fn ptr(&self) -> Address {
+ self.0
+ }
+
+ fn new(ptr: Address) -> Self {
+ Self(ptr)
+ }
+}
+
+impl BaseEntity for CPlayerController {
+ fn from_index(ctx: &mut CheatCtx, entity_list: Address, index: i32) -> Result<Option<CPlayerController>, Error> {
+ let list_entry = ctx.process.read_addr64(entity_list + 8 * (index >> 9) + 16)?;
+ if list_entry.is_null() && !list_entry.is_valid() {
+ return Ok(None);
+ }
+
+ let player_ptr = ctx.process.read_addr64(list_entry + 120 * (index & 0x1FF))?;
+ if player_ptr.is_null() && !player_ptr.is_valid() {
+ return Ok(None);
+ }
+
+ Ok(Some(Self::new(player_ptr)))
+ }
+
+ fn pos(&self, ctx: &mut CheatCtx) -> Result<Vec3, Error> {
+ let node = ctx.process.read_addr64(self.0 + cs2dumper::client::C_BaseEntity::m_pGameSceneNode)?;
+ Ok(ctx.process.read(node + cs2dumper::client::CGameSceneNode::m_vecAbsOrigin)?)
+ }
+
+ fn class_name(&self, ctx: &mut CheatCtx) -> Result<String, Error> {
+ let entity_identity_ptr = ctx.process.read_addr64(self.0 + cs2dumper::client::CEntityInstance::m_pEntity)?;
+ let class_name_ptr = ctx.process.read_addr64(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_designerName)?;
+ Ok(ctx.process.read_char_string_n(class_name_ptr, 32)?)
+ }
+}
+
+impl CPlayerController {
+ pub fn get_pawn(&self, ctx: &mut CheatCtx, entity_list: Address) -> Result<Option<super::CPlayerPawn>, Error> {
+ let uhandle = ctx.process.read(self.0 + cs2dumper::client::CCSPlayerController::m_hPlayerPawn)?;
+ super::CPlayerPawn::from_uhandle(ctx, entity_list, uhandle)
+ }
+
+ // Technically something that should be in the BaseEntity trait, but we are only gonna use it on CPlayerController
+ pub fn get_team(&self, ctx: &mut CheatCtx) -> Result<Option<TeamID>, Error> {
+ let team_num: i32 = ctx.process.read(self.0 + cs2dumper::client::C_BaseEntity::m_iTeamNum)?;
+ Ok(TeamID::from_i32(team_num))
+ }
+
+ pub fn get_player_type(&self, ctx: &mut CheatCtx, local: &CPlayerController) -> Result<Option<PlayerType>, Error> {
+ if self.0 == local.0 {
+ return Ok(Some(PlayerType::Local))
+ }
+
+ let team = {
+ match self.get_team(ctx)? {
+ Some(t) => t,
+ None => { return Ok(None) },
+ }
+ };
+
+ let local_team = {
+ match local.get_team(ctx)? {
+ Some(t) => t,
+ None => { return Ok(None) },
+ }
+ };
+
+ let player_type = {
+ if team == TeamID::Spectator {
+ PlayerType::Spectator
+ } else if team != local_team {
+ PlayerType::Enemy
+ } else {
+ PlayerType::Team
+ }
+ };
+
+ Ok(Some(player_type))
+ }
+}1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +
use memflow::{types::Address, mem::MemoryView};
+
+use crate::{Error, CheatCtx, cs2dumper, structs::Vec3, traits::MemoryClass};
+
+pub struct CPlayerPawn(Address);
+
+impl MemoryClass for CPlayerPawn {
+ fn ptr(&self) -> Address {
+ self.0
+ }
+
+ fn new(ptr: Address) -> Self {
+ Self(ptr)
+ }
+}
+
+impl CPlayerPawn {
+ pub fn from_uhandle(ctx: &mut CheatCtx, entity_list: Address, uhandle: u32) -> Result<Option<Self>, Error> {
+ let list_entry = ctx.process.read_addr64(entity_list + 0x8 * ((uhandle & 0x7FFF) >> 9) + 16)?;
+
+ if list_entry.is_null() || !list_entry.is_valid() {
+ Ok(None)
+ } else {
+ let ptr = ctx.process.read_addr64(list_entry + 120 * (uhandle & 0x1FF))?;
+ Ok(Some(Self(ptr)))
+ }
+ }
+
+ // Todo: Optimize this function: find another way to do this
+ pub fn has_c4(&self, ctx: &mut CheatCtx, entity_list: Address) -> Result<bool, Error> {
+ let mut has_c4 = false;
+ let wep_services = ctx.process.read_addr64(self.0 + cs2dumper::client::C_BasePlayerPawn::m_pWeaponServices)?;
+ let wep_count: i32 = ctx.process.read(wep_services + cs2dumper::client::CPlayer_WeaponServices::m_hMyWeapons)?;
+ let wep_base = ctx.process.read_addr64(wep_services + cs2dumper::client::CPlayer_WeaponServices::m_hMyWeapons + 0x8)?;
+
+ for wep_idx in 0..wep_count {
+ let handle: i32 = ctx.process.read(wep_base + wep_idx * 0x4)?;
+ if handle == -1 {
+ continue;
+ }
+
+ let list_entry = ctx.process.read_addr64(entity_list + 0x8 * ((handle & 0x7FFF) >> 9) + 16)?;
+ if let Some(wep_ptr) = {
+ if list_entry.is_null() || !list_entry.is_valid() {
+ None
+ } else {
+ let ptr = ctx.process.read_addr64(list_entry + 120 * (handle & 0x1FF))?;
+ Some(ptr)
+ }
+ } {
+ let wep_data = ctx.process.read_addr64(wep_ptr + cs2dumper::client::C_BaseEntity::m_nSubclassID + 0x8)?;
+ let id: i32 = ctx.process.read(wep_data + cs2dumper::client::CCSWeaponBaseVData::m_WeaponType)?;
+
+ if id == 7 {
+ has_c4 = true;
+ break;
+ }
+ }
+ }
+
+ Ok(has_c4)
+ }
+
+ pub fn pos(&self, ctx: &mut CheatCtx) -> Result<Vec3, Error> {
+ Ok(ctx.process.read(self.0 + cs2dumper::client::C_BasePlayerPawn::m_vOldOrigin)?)
+ }
+
+ pub fn angles(&self, ctx: &mut CheatCtx) -> Result<Vec3, Error> {
+ Ok(ctx.process.read(self.0 + cs2dumper::client::C_CSPlayerPawnBase::m_angEyeAngles)?)
+ }
+
+ pub fn health(&self, ctx: &mut CheatCtx) -> Result<u32, Error> {
+ Ok(ctx.process.read(self.0 + cs2dumper::client::C_BaseEntity::m_iHealth)?)
+ }
+
+ /// Same as ::get_health > 0
+ pub fn is_alive(&self, ctx: &mut CheatCtx) -> Result<bool, Error> {
+ Ok(self.health(ctx)? > 0)
+ }
+}use memflow::types::Address;
+
+use crate::{CheatCtx, structs::Vec3, Error};
+
+/// A trait for basic functions from C_BaseEntity
+/// CCSPlayerController inherits C_BaseEntity, which is why this trait exists.
+pub trait BaseEntity {
+ fn from_index(ctx: &mut CheatCtx, entity_list: Address, index: i32) -> Result<Option<Self>, Error> where Self: std::marker::Sized;
+ fn pos(&self, ctx: &mut CheatCtx) -> Result<Vec3, Error>;
+ fn class_name(&self, ctx: &mut CheatCtx) -> Result<String, Error>;
+}1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +
use std::path::PathBuf;
+
+use clap::{Parser, ValueEnum};
+use csflow::{Connector, memflow::Inventory};
+
+const PORT_RANGE: std::ops::RangeInclusive<usize> = 8000..=65535;
+const POLL_RANGE: std::ops::RangeInclusive<usize> = 1..=1000;
+
+#[derive(Parser)]
+#[command(author, version = version(), about, long_about = None)]
+pub struct Cli {
+ /// Specifies the connector type for DMA
+ #[clap(value_enum, short, long, ignore_case = true, default_value_t = Connector::Qemu)]
+ pub connector: Connector,
+
+ /// Name of the Pcileech device
+ #[clap(long, default_value_t = String::from("FPGA"))]
+ pub pcileech_device: String,
+
+ /// Port number for the Webserver to run on
+ #[arg(short, long, default_value_t = 8000, value_parser = port_in_range)]
+ pub port: u16,
+
+ /// Path to the directory served by the Webserver
+ #[arg(short, long, default_value = "./webradar", value_parser = valid_path)]
+ pub web_path: PathBuf,
+
+ /// Polling frequency in times per second for the DMA thread
+ #[arg(short = 'r', long, default_value_t = 60, value_parser = poll_in_range)]
+ pub poll_rate: u16,
+
+ /// Verbosity level for logging to the console
+ #[arg(value_enum, long, short, ignore_case = true, default_value_t = Loglevel::Warn)]
+ pub loglevel: Loglevel,
+}
+
+fn version() -> String {
+ let pkg_ver = env!("CARGO_PKG_VERSION");
+ let git_hash = option_env!("VERGEN_GIT_SHA").unwrap_or("unknown");
+ let commit_date = option_env!("VERGEN_GIT_COMMIT_DATE").unwrap_or("unknown");
+ let avail_cons = {
+ let inventory = Inventory::scan();
+ inventory.available_connectors().join(", ")
+ };
+
+ format!(" {pkg_ver} (rev {git_hash})\nCommit Date: {commit_date}\nAvailable Connectors: {avail_cons}")
+}
+
+fn port_in_range(s: &str) -> Result<u16, String> {
+ let port: usize = s
+ .parse()
+ .map_err(|_| format!("`{s}` isn't a port number"))?;
+ if PORT_RANGE.contains(&port) {
+ Ok(port as u16)
+ } else {
+ Err(format!(
+ "port not in range {}-{}",
+ PORT_RANGE.start(),
+ PORT_RANGE.end()
+ ))
+ }
+}
+
+fn valid_path(s: &str) -> Result<PathBuf, String> {
+ let path = PathBuf::from(s);
+
+ if !path.exists() {
+ return Err("Path does not exist".to_string())
+ }
+
+ if !path.is_dir() {
+ return Err("Path is not a directory".to_string())
+ }
+
+ Ok(path)
+}
+
+fn poll_in_range(s: &str) -> Result<u16, String> {
+ let port: usize = s
+ .parse()
+ .map_err(|_| format!("`{s}` isn't a valid number"))?;
+ if POLL_RANGE.contains(&port) {
+ Ok(port as u16)
+ } else {
+ Err(format!(
+ "not in range {}-{}",
+ POLL_RANGE.start(),
+ POLL_RANGE.end()
+ ))
+ }
+}
+
+/// Wrapper because log::LevelFilter doesn't implement ValueEnum
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum, Default)]
+pub enum Loglevel {
+ Error,
+ #[default]
+ Warn,
+ Info,
+ Debug,
+ Trace,
+}
+
+impl From<Loglevel> for log::LevelFilter {
+ fn from(val: Loglevel) -> Self {
+ match val {
+ Loglevel::Error => log::LevelFilter::Error,
+ Loglevel::Warn => log::LevelFilter::Warn,
+ Loglevel::Info => log::LevelFilter::Info,
+ Loglevel::Debug => log::LevelFilter::Debug,
+ Loglevel::Trace => log::LevelFilter::Trace,
+ }
+ }
+}1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +
use csflow::{enums::PlayerType, structs::Vec3};
+use serde::{Serialize, Deserialize};
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct PlayerData {
+ pos: Vec3,
+ yaw: f32,
+ #[serde(rename = "playerType")]
+ player_type: PlayerType,
+
+ #[serde(rename = "hasBomb")]
+ has_bomb: bool
+}
+
+impl PlayerData {
+ pub fn new(pos: Vec3, yaw: f32, player_type: PlayerType, has_bomb: bool) -> PlayerData {
+ PlayerData { pos, yaw, player_type, has_bomb }
+ }
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct BombData {
+ pos: Vec3,
+ #[serde(rename = "isPlanted")]
+ is_planted: bool
+}
+
+#[allow(dead_code)]
+impl BombData {
+ pub fn new(pos: Vec3, is_planted: bool) -> BombData {
+ BombData { pos, is_planted }
+ }
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub enum EntityData {
+ Player(PlayerData),
+ Bomb(BombData)
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct RadarData {
+ ingame: bool,
+
+ #[serde(rename = "mapName")]
+ map_name: String,
+
+ #[serde(rename(serialize = "entityData"))]
+ player_data: Vec<EntityData>,
+
+ //#[serde(rename(serialize = "localYaw"))]
+ //local_yaw: f32,
+}
+
+impl RadarData {
+ pub fn new(ingame: bool, map_name: String, player_data: Vec<EntityData>) -> RadarData {
+ RadarData { ingame, map_name, player_data }
+ }
+
+ /// Returns empty RadarData, it's also the same data that gets sent to clients when not ingame
+ pub fn empty() -> RadarData {
+ RadarData {
+ ingame: false,
+ map_name: String::new(),
+ player_data: Vec::new(),
+ }
+ }
+}1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +
use csflow::{memflow::Address, enums::PlayerType};
+
+#[derive(Clone, Copy)]
+pub enum CachedEntity {
+ Bomb {ptr: Address},
+ Player {ptr: Address, player_type: PlayerType},
+}
+
+pub struct Cache {
+ timestamp: std::time::Instant,
+ entity_cache: Vec<CachedEntity>,
+ map_name: String,
+ entity_list: Address,
+}
+
+impl Cache {
+ pub fn is_valid(&self) -> bool {
+ if self.timestamp.elapsed() > std::time::Duration::from_millis(250) {
+ return false;
+ }
+
+ true
+ }
+
+ pub fn new_invalid() -> Cache {
+ Cache {
+ timestamp: std::time::Instant::now().checked_sub(std::time::Duration::from_millis(500)).unwrap(),
+ entity_cache: Vec::new(),
+ map_name: String::new(),
+ entity_list: Address::null(),
+ }
+ }
+
+ pub fn entity_cache(&mut self) -> Vec<CachedEntity> {
+ self.entity_cache.clone()
+ }
+
+ pub fn map_name(&self) -> String {
+ self.map_name.clone()
+ }
+
+ pub fn entity_list(&self) -> Address {
+ self.entity_list
+ }
+}
+
+pub struct CacheBuilder {
+ entity_cache: Option<Vec<CachedEntity>>,
+ map_name: Option<String>,
+ entity_list: Option<Address>
+}
+
+impl CacheBuilder {
+ pub fn new() -> CacheBuilder {
+ CacheBuilder {
+ entity_cache: None,
+ map_name: None,
+ entity_list: None,
+ }
+ }
+
+ pub fn entity_cache(mut self, entity_cache: Vec<CachedEntity>) -> CacheBuilder {
+ self.entity_cache = Some(entity_cache);
+ self
+ }
+
+ pub fn map_name(mut self, map_name: String) -> CacheBuilder {
+ self.map_name = Some(map_name);
+ self
+ }
+
+ pub fn entity_list(mut self, entity_list: Address) -> CacheBuilder {
+ self.entity_list = Some(entity_list);
+ self
+ }
+
+ pub fn build(self) -> anyhow::Result<Cache> {
+ Ok(Cache {
+ timestamp: std::time::Instant::now(),
+ entity_cache: self.entity_cache.ok_or(anyhow::anyhow!("entity_cache not set on builder"))?,
+ map_name: self.map_name.ok_or(anyhow::anyhow!("map_name not set on builder"))?,
+ entity_list: self.entity_list.ok_or(anyhow::anyhow!("entity_list not set on builder"))?,
+ })
+ }
+}1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +
use std::sync::Arc;
+
+use csflow::{CheatCtx, Connector, memflow::Process, traits::{MemoryClass, BaseEntity}, enums::PlayerType, structs::{CBaseEntity, CPlayerController}};
+use tokio::{sync::RwLock, time::{Duration, Instant}};
+
+use crate::{comms::{RadarData, EntityData, BombData, PlayerData}, dma::cache::CacheBuilder};
+
+use self::cache::Cache;
+
+mod cache;
+
+const SECOND_AS_NANO: u64 = 1000*1000*1000;
+static ONCE: std::sync::Once = std::sync::Once::new();
+
+pub async fn run(connector: Connector, pcileech_device: String, poll_rate: u16, data_lock: Arc<RwLock<RadarData>>) -> anyhow::Result<()> {
+ let mut ctx = CheatCtx::setup(connector, pcileech_device)?;
+
+ println!("---------------------------------------------------");
+ println!("Found cs2.exe at {:X}", ctx.process.info().address);
+ println!("Found engine module at cs2.exe+{:X}", ctx.engine_module.base);
+ println!("Found client module at cs2.exe+{:X}", ctx.client_module.base);
+ println!("---------------------------------------------------");
+
+ // Avoid printing warnings and other stuff before the initial prints are complete
+ tokio::time::sleep(Duration::from_millis(500)).await;
+
+ // For poll rate timing
+ let should_time = poll_rate != 0;
+
+ let target_interval = Duration::from_nanos(SECOND_AS_NANO / poll_rate as u64);
+ let mut last_iteration_time = Instant::now();
+ let mut missmatch_count = 0;
+
+ let mut cache = Cache::new_invalid();
+
+ loop {
+ if ctx.process.state().is_dead() {
+ break;
+ }
+
+ if !cache.is_valid() {
+ let mut cached_entities = Vec::new();
+
+ let globals = ctx.get_globals()?;
+ let highest_index = ctx.highest_entity_index()?;
+ let map_name = ctx.map_name(globals)?;
+ let entity_list = ctx.get_entity_list()?;
+
+ let local = ctx.get_local()?;
+
+ if local.get_pawn(&mut ctx, entity_list)?.is_some() {
+ cached_entities.push(cache::CachedEntity::Player {
+ ptr: local.ptr(),
+ player_type: PlayerType::Local
+ });
+
+ for idx in 1..=highest_index {
+ if let Some(entity) = CBaseEntity::from_index(&mut ctx, entity_list, idx)? {
+
+ let class_name = entity.class_name(&mut ctx)?;
+
+ match class_name.as_str() {
+ "weapon_c4" => {
+ cached_entities.push(cache::CachedEntity::Bomb {
+ ptr: entity.ptr()
+ })
+ },
+ "cs_player_controller" => {
+ let controller = entity.to_player_controller();
+
+ let player_type = {
+ match controller.get_player_type(&mut ctx, &local)? {
+ Some(t) => {
+ if t == PlayerType::Spectator { continue } else { t }
+ },
+ None => { continue },
+ }
+ };
+
+ cached_entities.push(cache::CachedEntity::Player {
+ ptr: entity.ptr(),
+ player_type,
+ })
+ }
+ _ => {}
+ }
+ }
+ }
+ }
+
+ cache = CacheBuilder::new()
+ .entity_cache(cached_entities)
+ .entity_list(entity_list)
+ .map_name(map_name)
+ .build()?;
+
+ log::debug!("Rebuilt cache.");
+ }
+
+ if ctx.network_is_ingame()? {
+ let mut radar_data = Vec::with_capacity(64);
+
+ if ctx.is_bomb_planted()? {
+ let bomb = ctx.get_plantedc4()?;
+ let bomb_pos = bomb.pos(&mut ctx)?;
+ radar_data.push(
+ EntityData::Bomb(BombData::new(
+ bomb_pos,
+ true
+ ))
+ );
+ }
+
+ for cached_data in cache.entity_cache() {
+ match cached_data {
+ cache::CachedEntity::Bomb { ptr } => {
+ if ctx.is_bomb_dropped()? {
+ let bomb_entity = CBaseEntity::new(ptr);
+ let pos = bomb_entity.pos(&mut ctx)?;
+
+ radar_data.push(
+ EntityData::Bomb(
+ BombData::new(
+ pos,
+ false
+ )
+ )
+ );
+ }
+ },
+ cache::CachedEntity::Player { ptr, player_type } => {
+ let controller = CPlayerController::new(ptr);
+ if let Some(pawn) = controller.get_pawn(&mut ctx, cache.entity_list())? {
+ if pawn.is_alive(&mut ctx)? {
+ let pos = pawn.pos(&mut ctx)?;
+ let yaw = pawn.angles(&mut ctx)?.y;
+ let has_bomb = pawn.has_c4(&mut ctx, cache.entity_list())?;
+
+ radar_data.push(
+ EntityData::Player(
+ PlayerData::new(
+ pos,
+ yaw,
+ player_type,
+ has_bomb
+ )
+ )
+ );
+ }
+ }
+ },
+ }
+ }
+
+ let mut data = data_lock.write().await;
+ if cache.map_name() == "<empty>" || cache.map_name().is_empty() {
+ *data = RadarData::empty()
+ } else {
+ *data = RadarData::new(true, cache.map_name(), radar_data)
+ }
+ } else {
+ let mut data = data_lock.write().await;
+ *data = RadarData::empty()
+ }
+
+ if should_time {
+ let elapsed = last_iteration_time.elapsed();
+
+ let remaining = match target_interval.checked_sub(elapsed) {
+ Some(t) => t,
+ None => {
+ if missmatch_count >= 25 {
+ ONCE.call_once(|| {
+ log::warn!("Remaining time till target interval was negative more than 25 times");
+ log::warn!("You should decrease your poll rate.");
+ log::warn!("elapsed: {}ns", elapsed.as_nanos());
+ log::warn!("target: {}ns", target_interval.as_nanos());
+ });
+ } else {
+ missmatch_count += 1;
+ }
+ Duration::from_nanos(0)
+ },
+ };
+
+ #[cfg(target_os = "linux")]
+ tokio_timerfd::sleep(remaining).await?;
+
+ #[cfg(not(target_os = "linux"))]
+ tokio::time::sleep(remaining).await;
+
+ log::info!("poll rate: {:.2}Hz", SECOND_AS_NANO as f64 / last_iteration_time.elapsed().as_nanos() as f64);
+ log::trace!("elapsed: {}ns", elapsed.as_nanos());
+ log::trace!("target: {}ns", target_interval.as_nanos());
+ log::trace!("missmatch count: {}", missmatch_count);
+
+ last_iteration_time = Instant::now();
+ }
+ }
+
+ Ok(())
+}
+1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +
use std::sync::Arc;
+
+use clap::Parser;
+use cli::Cli;
+use comms::RadarData;
+use tokio::sync::RwLock;
+
+mod comms;
+mod cli;
+
+mod dma;
+mod websocket;
+
+#[tokio::main]
+async fn main() -> anyhow::Result<()> {
+ let cli = Cli::parse();
+
+ simple_logger::SimpleLogger::new()
+ .with_level(cli.loglevel.into())
+ .init()
+ .expect("Initializing logger");
+
+ let rwlock = Arc::new(
+ RwLock::new(
+ RadarData::empty()
+ )
+ );
+
+ let rwlock_clone = rwlock.clone();
+ let dma_handle = tokio::spawn(async move {
+ if let Err(err) = dma::run(cli.connector, cli.pcileech_device, cli.poll_rate, rwlock_clone).await {
+ log::error!("Error in dma thread: [{}]", err.to_string());
+ }
+ });
+
+ tokio::spawn(async move {
+ let future = websocket::run(cli.web_path, cli.port, rwlock);
+
+ if let Ok(my_local_ip) = local_ip_address::local_ip() {
+ let address = format!("http://{}:{}", my_local_ip, cli.port);
+ println!("Launched webserver at {}", address);
+ } else {
+ let address = format!("http://0.0.0.0:{}", cli.port);
+ println!("launched webserver at! {}", address);
+ }
+
+ if let Err(err) = future.await {
+ log::error!("Error in websocket server: [{}]", err.to_string());
+ }
+ });
+
+ if let Err(err) = dma_handle.await {
+ log::error!("Error when waiting for dma thread: {}", err.to_string());
+ }
+
+ Ok(())
+}
+1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +
use std::{sync::Arc, path::PathBuf};
+
+use axum::{
+ extract::{ws::{WebSocketUpgrade, WebSocket, Message}, State},
+ response::Response,
+ routing::get,
+ Router,
+};
+
+use tokio::sync::RwLock;
+use tower_http::services::ServeDir;
+
+use crate::comms::RadarData;
+
+#[derive(Clone)]
+struct AppState {
+ data_lock: Arc<RwLock<RadarData>>
+}
+
+async fn ws_handler(ws: WebSocketUpgrade, State(state): State<AppState>) -> Response {
+ ws.on_upgrade(|socket| handle_socket(socket, state))
+}
+
+async fn handle_socket(mut socket: WebSocket, state: AppState) {
+ while let Some(msg) = socket.recv().await {
+ if let Ok(msg) = msg {
+ if msg == Message::Text("requestInfo".to_string()) {
+ let data = state.data_lock.read().await;
+
+ let str = {
+ match serde_json::to_string(&*data) {
+ Ok(json) => json,
+ Err(e) => {
+ log::error!("Could not serialize data into json: {}", e.to_string());
+ log::error!("Sending \"error\" instead");
+ "error".to_string()
+ },
+ }
+ };
+
+ if socket.send(Message::Text(str)).await.is_err() {
+ // client disconnected
+ return;
+ }
+ }
+ } else {
+ // client disconnected
+ return;
+ }
+ }
+}
+
+pub async fn run(path: PathBuf, port: u16, data_lock: Arc<RwLock<RadarData>>) -> anyhow::Result<()> {
+ let app = Router::new()
+ .nest_service("/", ServeDir::new(path))
+ .route("/ws", get(ws_handler))
+ .with_state(AppState { data_lock });
+
+ let address = format!("0.0.0.0:{}", port);
+
+ axum::Server::bind(&address.parse()?)
+ .serve(app.into_make_service())
+ .await?;
+
+ Ok(())
+}fn:) to \
+ restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \
+ enum, trait, type, macro, \
+ and const.","Search functions by type signature (e.g., vec -> usize or \
+ -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \
+ your request: \"string\"","Look for functions that accept or return \
+ slices and \
+ arrays by writing \
+ square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>""+x+"
").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="