diff --git a/rust/src/game_manager.rs b/rust/src/game_manager.rs index 68b5c20..d30c71d 100644 --- a/rust/src/game_manager.rs +++ b/rust/src/game_manager.rs @@ -340,8 +340,13 @@ impl Game { look_up: f32, deal_damage: bool, ) -> bool { + let self_id = self.self_id.clone().unwrap_or(0); if let Some(player) = self.find_player_mut(player_id) { - player.try_shoot(to, transform, look_up, deal_damage) + if player.id != self_id { + player.try_shoot(to, transform, look_up, deal_damage) + } else { + false + } } else { false } diff --git a/rust/src/player.rs b/rust/src/player.rs index bed8cf4..e39db1c 100644 --- a/rust/src/player.rs +++ b/rust/src/player.rs @@ -255,10 +255,12 @@ impl ICharacterBody3D for LocalPlayer { if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer { match peer { PeerKind::Client(peer, addr) => { - peer.send_reliable( - addr, - Shoot(0, pos.into(), self.get_transform(), self.look_up), - ); + if self.try_shoot(pos, false) { + peer.send_reliable( + addr, + Shoot(0, pos.into(), self.get_transform(), self.look_up), + ); + } } PeerKind::Server(peer, _) => { if self.try_shoot(pos, true) {