From 9cbfe42ab47ca52e14b186503391cd385b793964 Mon Sep 17 00:00:00 2001 From: HimbeerserverDE Date: Wed, 17 Mar 2021 17:48:42 +0100 Subject: [PATCH] Add ability to exchange private messages between minetest servers --- README.md | 13 ++++++++++--- functions.lua | 6 +++++- rpc.lua | 3 ++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 657a002..6eae95b 100644 --- a/README.md +++ b/README.md @@ -92,11 +92,17 @@ callback: Callback function (params: srvs) Description: Returns an indexed table containing all server names to the callback function ``` -> `multiserver.send_msg(msg)` +> `multiserver.broadcast_msg(msg)` ``` msg: Message to send Description: Sends a message to all other minetest servers ``` +> `multiserver.send_msg(tosrv, msg)` +``` +tosrv: Server to send the message to +msg: Message to send +Description: Sends a message to another minetest server +``` > `multiserver.register_on_joinplayer(callback)` ``` callback: Callback function (params: name, srv) @@ -116,7 +122,8 @@ indicates whether the redirection was successful ``` > `multiserver.register_on_msg(callback)` ``` -callback: Callback function (params: msg) +callback: Callback function (params: msg, broadcast) Description: Registers a callback function for messages sent by other -minetest servers +minetest servers, broadcast is true if all servers were sent +the message ``` diff --git a/functions.lua b/functions.lua index d80475e..4e5dced 100644 --- a/functions.lua +++ b/functions.lua @@ -59,10 +59,14 @@ multiserver.get_servers = function(cb) multiserver.do_rpc("<-GETSRVS", cb) end -multiserver.send_msg = function(msg) +multiserver.broadcast_msg = function(msg) multiserver.do_rpc("<-MT2MT " .. msg, nil) end +multiserver.send_msg = function(tosrv, msg) + multiserver.do_rpc("<-MSG2MT " .. tosrv .. " " .. msg, nil) +end + multiserver.register_on_joinplayer = function(cb) table.insert(multiserver.on_joinplayer, cb) end diff --git a/rpc.lua b/rpc.lua index bec07c1..79cc063 100644 --- a/rpc.lua +++ b/rpc.lua @@ -57,13 +57,14 @@ minetest.register_on_modchannel_message(function(channel_name, sender, msg) end elseif cmd == "->MT2MT" then local smsg = msg:split(" ") + local broadcast = multiserver.to_bool(smsg[2]) local m = "" for i = 3, #smsg do m = m .. smsg[i] if i < #smsg then m = m .. " " end end for _, f in ipairs(multiserver.on_msg) do - f(m) + f(m, broadcast) end end if cb[rrq] == nil then return end