mirror of
https://github.com/BeamMP/BeamMP-Server.git
synced 2026-10-25 21:40:09 +00:00
wip improved return system thingy
This commit is contained in:
1 parent
6ed714b863
commit
03ea9513b9
3 files changed
+19
-6
No files matched your search
@@ -425,6 +425,7 @@ impl Server {
|
|||||||
let mut allowed = true;
|
let mut allowed = true;
|
||||||
for v in res {
|
for v in res {
|
||||||
match v {
|
match v {
|
||||||
|
Argument::Integer(i) => if i == 1 { allowed = false; },
|
||||||
Argument::Number(n) => if n == 1f32 { allowed = false; },
|
Argument::Number(n) => if n == 1f32 { allowed = false; },
|
||||||
Argument::Boolean(b) => if b { allowed = false; },
|
Argument::Boolean(b) => if b { allowed = false; },
|
||||||
_ => {}, // TODO: Handle this somehow?
|
_ => {}, // TODO: Handle this somehow?
|
||||||
|
|||||||
@@ -139,10 +139,11 @@ impl Backend for BackendLua {
|
|||||||
ScriptEvent::OnPluginLoaded => ("onInit", vec![]),
|
ScriptEvent::OnPluginLoaded => ("onInit", vec![]),
|
||||||
ScriptEvent::OnShutdown => ("onShutdown", vec![]),
|
ScriptEvent::OnShutdown => ("onShutdown", vec![]),
|
||||||
ScriptEvent::OnPlayerAuthenticated { name, role, is_guest, identifiers } => ("onPlayerAuth", vec![Argument::String(name), Argument::String(role), Argument::Boolean(is_guest), Argument::Table(identifiers.to_map())]),
|
ScriptEvent::OnPlayerAuthenticated { name, role, is_guest, identifiers } => ("onPlayerAuth", vec![Argument::String(name), Argument::String(role), Argument::Boolean(is_guest), Argument::Table(identifiers.to_map())]),
|
||||||
ScriptEvent::OnPlayerDisconnect { pid, name } => ("onPlayerDisconnect", vec![Argument::Number(pid as f32), Argument::String(name)]),
|
ScriptEvent::OnPlayerDisconnect { pid, name } => ("onPlayerDisconnect", vec![Argument::Integer(pid as i64), Argument::String(name)]),
|
||||||
|
ScriptEvent::OnChatMessage { pid, name, message } => ("onChatMessage", vec![Argument::Integer(pid as i64), Argument::String(name), Argument::String(message)]),
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut ret = -1f32;
|
let mut ret = Value::Number(-1f64);
|
||||||
// TODO: Error handling
|
// TODO: Error handling
|
||||||
{
|
{
|
||||||
let ctx: Context = self.lua.globals().get("MP").expect("MP is missing!");
|
let ctx: Context = self.lua.globals().get("MP").expect("MP is missing!");
|
||||||
@@ -153,11 +154,11 @@ impl Backend for BackendLua {
|
|||||||
let mapped_args = args.into_iter().map(|arg| {
|
let mapped_args = args.into_iter().map(|arg| {
|
||||||
arg_to_value(&self.lua, arg)
|
arg_to_value(&self.lua, arg)
|
||||||
}).filter(|v| v.is_some());
|
}).filter(|v| v.is_some());
|
||||||
match func.call::<_, Option<f32>>(Variadic::from_iter(mapped_args)) {
|
match func.call::<_, Option<Value>>(Variadic::from_iter(mapped_args)) {
|
||||||
Ok(res) => { trace!("fn ret: {:?}", ret); ret = res.unwrap_or(-1f32); }
|
Ok(res) => { trace!("fn ret: {:?}", ret); ret = res.unwrap_or(Value::Number(-1f64)); }
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("[LUA] {}", e);
|
error!("[LUA] {}", e);
|
||||||
ret = -1f32;
|
ret = Value::Number(-1f64);
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -165,7 +166,16 @@ impl Backend for BackendLua {
|
|||||||
}
|
}
|
||||||
|
|
||||||
debug!("sending result...");
|
debug!("sending result...");
|
||||||
if let Some(resp) = resp { resp.send(Argument::Number(ret)).expect("Failed to send!"); }
|
if let Some(resp) = resp {
|
||||||
|
let arg = match ret {
|
||||||
|
Value::Boolean(b) => Argument::Boolean(b),
|
||||||
|
Value::Integer(i) => Argument::Integer(i),
|
||||||
|
Value::Number(f) => Argument::Number(f as f32),
|
||||||
|
Value::String(s) => Argument::String(s.to_string_lossy().to_string()),
|
||||||
|
_ => Argument::Number(-1f32),
|
||||||
|
};
|
||||||
|
resp.send(arg).expect("Failed to send!");
|
||||||
|
}
|
||||||
debug!("call_event_handler done");
|
debug!("call_event_handler done");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ pub enum ScriptEvent {
|
|||||||
OnPlayerAuthenticated { name: String, role: String, is_guest: bool, identifiers: PlayerIdentifiers },
|
OnPlayerAuthenticated { name: String, role: String, is_guest: bool, identifiers: PlayerIdentifiers },
|
||||||
|
|
||||||
OnPlayerDisconnect { pid: u8, name: String },
|
OnPlayerDisconnect { pid: u8, name: String },
|
||||||
|
|
||||||
|
OnChatMessage { pid: u8, name: String, message: String },
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|||||||
Reference in new issue
Block a user