Add ability to exchange private messages between minetest servers

master
HimbeerserverDE 2021-03-17 17:48:42 +01:00
parent 19ea3bf7db
commit 9cbfe42ab4
No known key found for this signature in database
GPG Key ID: 1A651504791E6A8B
3 changed files with 17 additions and 5 deletions

View File

@ -92,11 +92,17 @@ callback: Callback function (params: srvs)
Description: Returns an indexed table containing all server names Description: Returns an indexed table containing all server names
to the callback function to the callback function
``` ```
> `multiserver.send_msg(msg)` > `multiserver.broadcast_msg(msg)`
``` ```
msg: Message to send msg: Message to send
Description: Sends a message to all other minetest servers 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)` > `multiserver.register_on_joinplayer(callback)`
``` ```
callback: Callback function (params: name, srv) callback: Callback function (params: name, srv)
@ -116,7 +122,8 @@ indicates whether the redirection was successful
``` ```
> `multiserver.register_on_msg(callback)` > `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 Description: Registers a callback function for messages sent by other
minetest servers minetest servers, broadcast is true if all servers were sent
the message
``` ```

View File

@ -59,10 +59,14 @@ multiserver.get_servers = function(cb)
multiserver.do_rpc("<-GETSRVS", cb) multiserver.do_rpc("<-GETSRVS", cb)
end end
multiserver.send_msg = function(msg) multiserver.broadcast_msg = function(msg)
multiserver.do_rpc("<-MT2MT " .. msg, nil) multiserver.do_rpc("<-MT2MT " .. msg, nil)
end end
multiserver.send_msg = function(tosrv, msg)
multiserver.do_rpc("<-MSG2MT " .. tosrv .. " " .. msg, nil)
end
multiserver.register_on_joinplayer = function(cb) multiserver.register_on_joinplayer = function(cb)
table.insert(multiserver.on_joinplayer, cb) table.insert(multiserver.on_joinplayer, cb)
end end

View File

@ -57,13 +57,14 @@ minetest.register_on_modchannel_message(function(channel_name, sender, msg)
end end
elseif cmd == "->MT2MT" then elseif cmd == "->MT2MT" then
local smsg = msg:split(" ") local smsg = msg:split(" ")
local broadcast = multiserver.to_bool(smsg[2])
local m = "" local m = ""
for i = 3, #smsg do for i = 3, #smsg do
m = m .. smsg[i] m = m .. smsg[i]
if i < #smsg then m = m .. " " end if i < #smsg then m = m .. " " end
end end
for _, f in ipairs(multiserver.on_msg) do for _, f in ipairs(multiserver.on_msg) do
f(m) f(m, broadcast)
end end
end end
if cb[rrq] == nil then return end if cb[rrq] == nil then return end