From 3d9bbf87198ce3535a5fb437b896940936732610 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Fri, 18 Apr 2025 01:17:51 -0400 Subject: [PATCH] Fix world server with RCON disabled --- src/bin/kawari-world.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/bin/kawari-world.rs b/src/bin/kawari-world.rs index 673ce39..ae71480 100644 --- a/src/bin/kawari-world.rs +++ b/src/bin/kawari-world.rs @@ -1,4 +1,5 @@ use std::collections::HashMap; +use std::net::SocketAddr; use std::sync::{Arc, Mutex}; use kawari::RECEIVE_BUFFER_SIZE; @@ -32,7 +33,7 @@ use kawari::world::{ use mlua::{Function, Lua}; use tokio::io::{AsyncReadExt, AsyncWriteExt}; use tokio::join; -use tokio::net::TcpListener; +use tokio::net::{TcpListener, TcpStream}; use tokio::sync::mpsc::{Receiver, UnboundedReceiver, UnboundedSender, channel, unbounded_channel}; use tokio::sync::oneshot; use tokio::task::JoinHandle; @@ -716,14 +717,14 @@ async fn client_loop( for effect in &effects_builder.effects { match effect.kind { EffectKind::Damage => { - actor.hp -= effect.value as u32; + actor.hp = effect.value as u32; } _ => todo!() } } let actor = *actor; - connection.update_hp_mp(actor.id, actor.hp, 10000).await; + //connection.update_hp_mp(actor.id, actor.hp, 10000).await; } let ipc = ServerZoneIpcSegment { @@ -1022,6 +1023,13 @@ async fn client_loop( } } +async fn handle_rcon(listener: &Option) -> Option<(TcpStream, SocketAddr)> { + match listener { + Some(listener) => Some(listener.accept().await.ok()?), + None => None, + } +} + #[tokio::main] async fn main() { tracing_subscriber::fmt::init(); @@ -1109,7 +1117,7 @@ async fn main() { gamedata: game_data.clone(), }); } - Ok((mut socket, _)) = rcon_listener.as_ref().unwrap().accept(), if rcon_listener.is_some() => { + Some((mut socket, _)) = handle_rcon(&rcon_listener) => { let mut authenticated = false; loop {