(try to) improve performance
parent
e206e704b4
commit
a5e566fc7a
10
README.md
10
README.md
|
@ -5,7 +5,9 @@
|
||||||
|
|
||||||
## Added functions are:
|
## Added functions are:
|
||||||
### For client:
|
### For client:
|
||||||
- `csm_com.register_on_receive(func(msg))`
|
- `csm_com.register_on_receive(func(msg)[, prefix])`
|
||||||
|
`prefix` should be a string. Try not to use many different prefixes,
|
||||||
|
one per mod should be enough.
|
||||||
If function returns `true`, remaining functions are not called.
|
If function returns `true`, remaining functions are not called.
|
||||||
- `csm_com.send(msg)`
|
- `csm_com.send(msg)`
|
||||||
- `csm_com.server_has()`
|
- `csm_com.server_has()`
|
||||||
|
@ -13,10 +15,10 @@ returns `true` if server has this mod installed
|
||||||
- `csm_com.register_on_know(func())`
|
- `csm_com.register_on_know(func())`
|
||||||
Called when `csm_com.server_has()` becomes `true`.
|
Called when `csm_com.server_has()` becomes `true`.
|
||||||
### For server:
|
### For server:
|
||||||
- `csm_com.register_on_receive(func(player_name, msg))`
|
- `csm_com.register_on_receive(func(player_name, msg)[, prefix])`
|
||||||
same as above
|
same as above.
|
||||||
- `csm_com.send(player_name, msg)`
|
- `csm_com.send(player_name, msg)`
|
||||||
- `csm_com.player_has(player_name)`
|
- `csm_com.player_has(player_name)`
|
||||||
returns `true` if player has this mod installed
|
returns `true` if player has this mod installed
|
||||||
- `csm_com.register_on_know(func(player_name))`
|
- `csm_com.register_on_know(func(player_name))`
|
||||||
same as above
|
same as above.
|
||||||
|
|
54
init.lua
54
init.lua
|
@ -20,20 +20,35 @@ local csm_player_a = "I have csm."
|
||||||
|
|
||||||
if INIT == "client" then
|
if INIT == "client" then
|
||||||
local funcs = {}
|
local funcs = {}
|
||||||
function csm_com.register_on_receive(f)
|
local funcsp = {}
|
||||||
funcs[#funcs+1] = f
|
function csm_com.register_on_receive(f, p)
|
||||||
|
if p then
|
||||||
|
funcsp[p][#funcsp[p]+1] = f
|
||||||
|
else
|
||||||
|
funcs[#funcs+1] = f
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_on_receiving_chat_message(function(message)
|
minetest.register_on_receiving_chat_message(function(msg)
|
||||||
if message:sub(1, #prefix_c) ~= prefix_c then
|
if msg:sub(1, #prefix_c) ~= prefix_c then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
message = message:sub(#prefix_c+1)
|
msg = msg:sub(#prefix_c+1)
|
||||||
for i = 1, #funcs do
|
for pre, fs in pairs(funcsp) do
|
||||||
if funcs[i](message) then
|
if msg:sub(1, #pre) == pre then
|
||||||
|
for i = 1, #fs do
|
||||||
|
if fs[i](msg) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
for i = 1, #funcs do
|
||||||
|
if funcs[i](msg) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
return true
|
return true
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -71,19 +86,34 @@ if INIT == "client" then
|
||||||
|
|
||||||
elseif INIT == "game" then
|
elseif INIT == "game" then
|
||||||
local funcs = {}
|
local funcs = {}
|
||||||
function csm_com.register_on_receive(f)
|
local funcsp = {}
|
||||||
funcs[#funcs+1] = f
|
function csm_com.register_on_receive(f, p)
|
||||||
|
if p then
|
||||||
|
funcsp[p][#funcsp[p]+1] = f
|
||||||
|
else
|
||||||
|
funcs[#funcs+1] = f
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local funco = minetest.registered_chatcommands["status"].func
|
local status_o = minetest.registered_chatcommands["status"].func
|
||||||
minetest.override_chatcommand("status", {func = function(name, param)
|
minetest.override_chatcommand("status", {func = function(name, param)
|
||||||
if param:sub(1, #prefix_s) ~= prefix_s then
|
if param:sub(1, #prefix_s) ~= prefix_s then
|
||||||
return funco(name, param)
|
return status_o(name, param)
|
||||||
end
|
end
|
||||||
param = param:sub(#prefix_s+1)
|
param = param:sub(#prefix_s+1)
|
||||||
|
for pre, fs in pairs(funcsp) do
|
||||||
|
if param:sub(1, #pre) == pre then
|
||||||
|
for i = 1, #fs do
|
||||||
|
if fs[i](name, param) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
for i = 1, #funcs do
|
for i = 1, #funcs do
|
||||||
if funcs[i](name, param) then
|
if funcs[i](name, param) then
|
||||||
break
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
|
|
Loading…
Reference in New Issue