diff --git a/src/cli.rs b/src/cli.rs index 8ccfe9c..500c96b 100755 --- a/src/cli.rs +++ b/src/cli.rs @@ -28,6 +28,10 @@ pub struct Cli { /// Verbosity level for logging to the console #[arg(value_enum, long, short, ignore_case = true, default_value_t = Loglevel::Warn)] pub loglevel: Loglevel, + + /// Skip the dwBuildNumber check, allows for running with *possibly* outdated offsets. + #[arg(long)] + pub skip_version: bool, } fn version() -> String { diff --git a/src/dma/context/mod.rs b/src/dma/context/mod.rs index 50ede3c..256b4b5 100755 --- a/src/dma/context/mod.rs +++ b/src/dma/context/mod.rs @@ -31,7 +31,7 @@ impl DmaCtx { Ok(()) } - pub fn setup(connector: Connector, pcileech_device: String) -> anyhow::Result<DmaCtx> { + pub fn setup(connector: Connector, pcileech_device: String, skip_version: bool) -> anyhow::Result<DmaCtx> { let inventory = Inventory::scan(); let os = { @@ -66,7 +66,9 @@ impl DmaCtx { engine_module, }; - ctx.check_version()?; + if !skip_version { + ctx.check_version()?; + } Ok(ctx) } diff --git a/src/dma/mod.rs b/src/dma/mod.rs index 7f2c5a0..63f0288 100755 --- a/src/dma/mod.rs +++ b/src/dma/mod.rs @@ -12,8 +12,8 @@ mod cs2dumper; pub use context::Connector; -pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_device: String) -> anyhow::Result<()> { - let mut ctx = DmaCtx::setup(connector, pcileech_device)?; +pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_device: String, skip_version: bool) -> anyhow::Result<()> { + let mut ctx = DmaCtx::setup(connector, pcileech_device, skip_version)?; let mut data = CsData::default(); // For read timing diff --git a/src/main.rs b/src/main.rs index caa9d9b..2d9619b 100755 --- a/src/main.rs +++ b/src/main.rs @@ -30,7 +30,7 @@ async fn main() -> anyhow::Result<()> { let radar_clone = radar_data.clone(); let dma_handle = tokio::spawn(async move { - if let Err(err) = dma::run(radar_clone, cli.connector, cli.pcileech_device).await { + if let Err(err) = dma::run(radar_clone, cli.connector, cli.pcileech_device, cli.skip_version).await { log::error!("Error in dma thread: [{}]", err.to_string()); } else { println!("CS2 Process exited, exiting program...")