diff --git a/src/bin/kawari-world.rs b/src/bin/kawari-world.rs index 527f863..be7a405 100644 --- a/src/bin/kawari-world.rs +++ b/src/bin/kawari-world.rs @@ -905,7 +905,9 @@ async fn main() { { let mut lua = lua.lock().unwrap(); - load_global_script(&mut lua); + if let Err(err) = load_global_script(&mut lua) { + tracing::warn!("Failed to load Global.lua: {:?}", err); + } } let (handle, _) = spawn_main_loop(); diff --git a/src/world/connection.rs b/src/world/connection.rs index 67a0fc7..cfb226c 100644 --- a/src/world/connection.rs +++ b/src/world/connection.rs @@ -626,7 +626,9 @@ impl ZoneConnection { } Task::ReloadScripts => { let mut lua = self.lua.lock().unwrap(); - load_global_script(&mut lua); + if let Err(err) = load_global_script(&mut lua) { + tracing::warn!("Failed to load Global.lua: {:?}", err); + } } Task::ToggleInvisibility { invisible } => { self.toggle_invisibility(*invisible).await; diff --git a/src/world/lua.rs b/src/world/lua.rs index 36c4dbc..ae2a04c 100644 --- a/src/world/lua.rs +++ b/src/world/lua.rs @@ -415,56 +415,46 @@ impl FromLua for EffectsBuilder { } /// Loads `Global.lua` -pub fn load_global_script(lua: &mut Lua) { - let register_action_func = lua - .create_function(|lua, (action_id, action_script): (u32, String)| { +pub fn load_global_script(lua: &mut Lua) -> mlua::Result<()> { + let register_action_func = + lua.create_function(|lua, (action_id, action_script): (u32, String)| { tracing::info!("Registering {action_id} with {action_script}!"); let mut state = lua.app_data_mut::().unwrap(); let _ = state.action_scripts.insert(action_id, action_script); Ok(()) - }) - .unwrap(); + })?; - let register_event_func = lua - .create_function(|lua, (event_id, event_script): (u32, String)| { + let register_event_func = + lua.create_function(|lua, (event_id, event_script): (u32, String)| { tracing::info!("Registering {event_id} with {event_script}!"); let mut state = lua.app_data_mut::().unwrap(); let _ = state.event_scripts.insert(event_id, event_script); Ok(()) - }) - .unwrap(); + })?; - let register_command_func = lua - .create_function(|lua, (command_name, command_script): (String, String)| { + let register_command_func = + lua.create_function(|lua, (command_name, command_script): (String, String)| { tracing::info!("Registering {command_name} with {command_script}!"); let mut state = lua.app_data_mut::().unwrap(); let _ = state.command_scripts.insert(command_name, command_script); Ok(()) - }) - .unwrap(); + })?; lua.set_app_data(ExtraLuaState::default()); + lua.globals().set("registerAction", register_action_func)?; + lua.globals().set("registerEvent", register_event_func)?; lua.globals() - .set("registerAction", register_action_func) - .unwrap(); - lua.globals() - .set("registerEvent", register_event_func) - .unwrap(); - lua.globals() - .set("registerCommand", register_command_func) - .unwrap(); + .set("registerCommand", register_command_func)?; - let effectsbuilder_constructor = lua - .create_function(|_, ()| Ok(EffectsBuilder::default())) - .unwrap(); + let effectsbuilder_constructor = lua.create_function(|_, ()| Ok(EffectsBuilder::default()))?; lua.globals() - .set("EffectsBuilder", effectsbuilder_constructor) - .unwrap(); + .set("EffectsBuilder", effectsbuilder_constructor)?; let config = get_config(); let file_name = format!("{}/Global.lua", &config.world.scripts_location); lua.load(std::fs::read(&file_name).expect("Failed to locate scripts directory!")) .set_name("@".to_string() + &file_name) - .exec() - .unwrap(); + .exec()?; + + Ok(()) }