Add help formspec for CSM commands (#13937)

This commit is contained in:
Zemtzov7 2024-02-03 02:12:59 +05:00 committed by GitHub
parent 176e674a51
commit 893594d81a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 48 additions and 22 deletions

@ -7,6 +7,7 @@ dofile(clientpath .. "register.lua")
dofile(commonpath .. "after.lua") dofile(commonpath .. "after.lua")
dofile(commonpath .. "mod_storage.lua") dofile(commonpath .. "mod_storage.lua")
dofile(commonpath .. "chatcommands.lua") dofile(commonpath .. "chatcommands.lua")
dofile(commonpath .. "information_formspecs.lua")
dofile(clientpath .. "chatcommands.lua") dofile(clientpath .. "chatcommands.lua")
dofile(clientpath .. "death_formspec.lua") dofile(clientpath .. "death_formspec.lua")
dofile(clientpath .. "misc.lua") dofile(clientpath .. "misc.lua")

@ -89,7 +89,7 @@ local function do_help_cmd(name, param)
if #args > 1 then if #args > 1 then
return false, S("Too many arguments, try using just /help <command>") return false, S("Too many arguments, try using just /help <command>")
end end
local use_gui = INIT ~= "client" and core.get_player_by_name(name) local use_gui = INIT == "client" or core.get_player_by_name(name)
use_gui = use_gui and not opts:find("t") use_gui = use_gui and not opts:find("t")
if #args == 0 and not use_gui then if #args == 0 and not use_gui then
@ -163,8 +163,8 @@ end
if INIT == "client" then if INIT == "client" then
core.register_chatcommand("help", { core.register_chatcommand("help", {
params = core.gettext("[all | <cmd>]"), params = core.gettext("[all | <cmd>] [-t]"),
description = core.gettext("Get help for commands"), description = core.gettext("Get help for commands (-t: output in chat)"),
func = function(param) func = function(param)
return do_help_cmd(nil, param) return do_help_cmd(nil, param)
end, end,

@ -61,15 +61,20 @@ local function build_chatcommands_formspec(name, sel, copy)
for i, data in ipairs(mod_cmds) do for i, data in ipairs(mod_cmds) do
rows[#rows + 1] = COLOR_BLUE .. ",0," .. F(data[1]) .. "," rows[#rows + 1] = COLOR_BLUE .. ",0," .. F(data[1]) .. ","
for j, cmds in ipairs(data[2]) do for j, cmds in ipairs(data[2]) do
local has_priv = check_player_privs(name, cmds[2].privs) local has_priv = INIT == "client" or check_player_privs(name, cmds[2].privs)
rows[#rows + 1] = ("%s,1,%s,%s"):format( rows[#rows + 1] = ("%s,1,%s,%s"):format(
has_priv and COLOR_GREEN or COLOR_GRAY, has_priv and COLOR_GREEN or COLOR_GRAY,
cmds[1], F(cmds[2].params)) cmds[1], F(cmds[2].params))
if sel == #rows then if sel == #rows then
description = cmds[2].description description = cmds[2].description
if copy then if copy then
core.chat_send_player(name, S("Command: @1 @2", local msg = S("Command: @1 @2",
core.colorize("#0FF", "/" .. cmds[1]), cmds[2].params)) core.colorize("#0FF", "/" .. cmds[1]), cmds[2].params)
if INIT == "client" then
core.display_chat_message(msg)
else
core.chat_send_player(name, msg)
end
end end
end end
end end
@ -111,26 +116,46 @@ end
-- DETAILED CHAT COMMAND INFORMATION -- DETAILED CHAT COMMAND INFORMATION
if INIT == "client" then
core.register_on_formspec_input(function(formname, fields)
if formname ~= "__builtin:help_cmds" or fields.quit then
return
end
core.register_on_player_receive_fields(function(player, formname, fields) local event = core.explode_table_event(fields.list)
if formname ~= "__builtin:help_cmds" or fields.quit then if event.type ~= "INV" then
return core.show_formspec("__builtin:help_cmds",
end build_chatcommands_formspec(nil, event.row, event.type == "DCL"))
end
end)
else
core.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "__builtin:help_cmds" or fields.quit then
return
end
local event = core.explode_table_event(fields.list) local event = core.explode_table_event(fields.list)
if event.type ~= "INV" then if event.type ~= "INV" then
local name = player:get_player_name() local name = player:get_player_name()
core.show_formspec(name, "__builtin:help_cmds", core.show_formspec(name, "__builtin:help_cmds",
build_chatcommands_formspec(name, event.row, event.type == "DCL")) build_chatcommands_formspec(name, event.row, event.type == "DCL"))
end end
end) end)
end
function core.show_general_help_formspec(name) function core.show_general_help_formspec(name)
core.show_formspec(name, "__builtin:help_cmds", if INIT == "client" then
build_chatcommands_formspec(name)) core.show_formspec("__builtin:help_cmds",
build_chatcommands_formspec(name))
else
core.show_formspec(name, "__builtin:help_cmds",
build_chatcommands_formspec(name))
end
end end
function core.show_privs_help_formspec(name) if INIT ~= "client" then
core.show_formspec(name, "__builtin:help_privs", function core.show_privs_help_formspec(name)
build_privs_formspec(name)) core.show_formspec(name, "__builtin:help_privs",
build_privs_formspec(name))
end
end end