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
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
```

View File

@ -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

View File

@ -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