feat: add native mode

- Add native mode
- Fix bomb holder search and wrong bomb holder on round starts
This commit is contained in:
Janek
2024-04-17 18:43:21 +02:00
parent 10da0883a1
commit 00d883a41c
7 changed files with 515 additions and 55 deletions

View File

@@ -1,6 +1,6 @@
use std::{thread, time::{Duration, Instant}};
use memflow::{os::Process, mem::MemoryView};
use memflow::{mem::MemoryView, os::Process, types::Address};
use crate::{enums::PlayerType, comms::{EntityData, PlayerData, RadarData, ArcRwlockRadarData, BombData}};
@@ -19,6 +19,8 @@ pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_
// For read timing
let mut last_bomb_dropped = false;
let mut last_bomb_planted = false;
let mut last_freeze_period = false;
let mut last_round_start_count = 0u8;
let mut last_tick_count = 0;
let mut last_big_read = Instant::now();
@@ -50,12 +52,33 @@ pub async fn run(radar_data: ArcRwlockRadarData, connector: Connector, pcileech_
data.update_bomb(&mut ctx);
}
if !data.bomb_dropped && last_bomb_dropped && !data.bomb_planted {
if data.bomb_dropped != last_bomb_dropped && !data.bomb_planted {
log::debug!("Bomb holder recheck due to bomb drop status");
data.recheck_bomb_holder = true;
}
if last_freeze_period != data.freeze_period {
log::debug!("Bomb holder recheck due to freeze time");
data.recheck_bomb_holder = true;
}
if last_round_start_count != data.round_start_count {
log::debug!("Bomb holder recheck due to round start");
data.recheck_bomb_holder = true;
}
last_freeze_period = data.freeze_period;
last_round_start_count = data.round_start_count;
if data.recheck_bomb_holder {
let pawns = data.players.clone().into_iter().map(|(_, pawn)| pawn).collect();
let mut pawns: Vec<Address> = data.players
.clone()
.into_iter()
.map(|(_, pawn)| pawn)
.collect();
pawns.push(data.local_pawn.into());
data.bomb_holder = ctx.get_c4_holder(pawns, data.entity_list.into());
data.recheck_bomb_holder = false;
}