forked from Mirrorlandia_minetest/minetest
Change command prefix to "." and add "help" command.
This commit is contained in:
parent
4d5177ff70
commit
e70e15134c
@ -2,27 +2,35 @@
|
|||||||
|
|
||||||
|
|
||||||
core.register_on_sending_chat_messages(function(message)
|
core.register_on_sending_chat_messages(function(message)
|
||||||
if not (message:sub(1,1) == "/") then
|
local first_char = message:sub(1,1)
|
||||||
|
if first_char == "/" or first_char == "." then
|
||||||
|
core.display_chat_message("issued command: " .. message)
|
||||||
|
end
|
||||||
|
|
||||||
|
if first_char ~= "." then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
core.display_chat_message("issued command: " .. message)
|
local cmd, param = string.match(message, "^%.([^ ]+) *(.*)")
|
||||||
|
|
||||||
local cmd, param = string.match(message, "^/([^ ]+) *(.*)")
|
|
||||||
if not param then
|
if not param then
|
||||||
param = ""
|
param = ""
|
||||||
end
|
end
|
||||||
|
|
||||||
local cmd_def = core.registered_chatcommands[cmd]
|
if not cmd then
|
||||||
|
core.display_chat_message("-!- Empty command")
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
local cmd_def = core.registered_chatcommands[cmd]
|
||||||
if cmd_def then
|
if cmd_def then
|
||||||
core.set_last_run_mod(cmd_def.mod_origin)
|
core.set_last_run_mod(cmd_def.mod_origin)
|
||||||
local _, message = cmd_def.func(param)
|
local _, message = cmd_def.func(param)
|
||||||
if message then
|
if message then
|
||||||
core.display_chat_message(message)
|
core.display_chat_message(message)
|
||||||
end
|
end
|
||||||
return true
|
else
|
||||||
|
core.display_chat_message("-!- Invalid command: " .. cmd)
|
||||||
end
|
end
|
||||||
|
|
||||||
return false
|
return true
|
||||||
end)
|
end)
|
||||||
|
@ -28,3 +28,74 @@ function core.override_chatcommand(name, redefinition)
|
|||||||
end
|
end
|
||||||
core.registered_chatcommands[name] = chatcommand
|
core.registered_chatcommands[name] = chatcommand
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local cmd_marker = "/"
|
||||||
|
|
||||||
|
if INIT == "client" then
|
||||||
|
cmd_marker = "."
|
||||||
|
end
|
||||||
|
|
||||||
|
local function do_help_cmd(name, param)
|
||||||
|
local function format_help_line(cmd, def)
|
||||||
|
local msg = core.colorize("#00ffff", cmd_marker .. cmd)
|
||||||
|
if def.params and def.params ~= "" then
|
||||||
|
msg = msg .. " " .. def.params
|
||||||
|
end
|
||||||
|
if def.description and def.description ~= "" then
|
||||||
|
msg = msg .. ": " .. def.description
|
||||||
|
end
|
||||||
|
return msg
|
||||||
|
end
|
||||||
|
if param == "" then
|
||||||
|
local cmds = {}
|
||||||
|
for cmd, def in pairs(core.registered_chatcommands) do
|
||||||
|
if INIT == "client" or core.check_player_privs(name, def.privs) then
|
||||||
|
cmds[#cmds + 1] = cmd
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.sort(cmds)
|
||||||
|
return true, "Available commands: " .. table.concat(cmds, " ") .. "\n"
|
||||||
|
.. "Use '"..cmd_marker.."help <cmd>' to get more information,"
|
||||||
|
.. " or '"..cmd_marker.."help all' to list everything."
|
||||||
|
elseif param == "all" then
|
||||||
|
local cmds = {}
|
||||||
|
for cmd, def in pairs(core.registered_chatcommands) do
|
||||||
|
if INIT == "client" or core.check_player_privs(name, def.privs) then
|
||||||
|
cmds[#cmds + 1] = format_help_line(cmd, def)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.sort(cmds)
|
||||||
|
return true, "Available commands:\n"..table.concat(cmds, "\n")
|
||||||
|
elseif INIT == "game" and param == "privs" then
|
||||||
|
local privs = {}
|
||||||
|
for priv, def in pairs(core.registered_privileges) do
|
||||||
|
privs[#privs + 1] = priv .. ": " .. def.description
|
||||||
|
end
|
||||||
|
table.sort(privs)
|
||||||
|
return true, "Available privileges:\n"..table.concat(privs, "\n")
|
||||||
|
else
|
||||||
|
local cmd = param
|
||||||
|
local def = core.registered_chatcommands[cmd]
|
||||||
|
if not def then
|
||||||
|
return false, "Command not available: "..cmd
|
||||||
|
else
|
||||||
|
return true, format_help_line(cmd, def)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if INIT == "client" then
|
||||||
|
core.register_chatcommand("help", {
|
||||||
|
params = "[all/<cmd>]",
|
||||||
|
description = "Get help for commands",
|
||||||
|
func = function(param)
|
||||||
|
return do_help_cmd(nil, param)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
else
|
||||||
|
core.register_chatcommand("help", {
|
||||||
|
params = "[all/privs/<cmd>]",
|
||||||
|
description = "Get help for commands or list privileges",
|
||||||
|
func = do_help_cmd,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
@ -82,61 +82,6 @@ core.register_chatcommand("admin", {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
core.register_chatcommand("help", {
|
|
||||||
privs = {},
|
|
||||||
params = "[all/privs/<cmd>]",
|
|
||||||
description = "Get help for commands or list privileges",
|
|
||||||
func = function(name, param)
|
|
||||||
local function format_help_line(cmd, def)
|
|
||||||
local msg = core.colorize("#00ffff", "/"..cmd)
|
|
||||||
if def.params and def.params ~= "" then
|
|
||||||
msg = msg .. " " .. def.params
|
|
||||||
end
|
|
||||||
if def.description and def.description ~= "" then
|
|
||||||
msg = msg .. ": " .. def.description
|
|
||||||
end
|
|
||||||
return msg
|
|
||||||
end
|
|
||||||
if param == "" then
|
|
||||||
local msg = ""
|
|
||||||
local cmds = {}
|
|
||||||
for cmd, def in pairs(core.registered_chatcommands) do
|
|
||||||
if core.check_player_privs(name, def.privs) then
|
|
||||||
cmds[#cmds + 1] = cmd
|
|
||||||
end
|
|
||||||
end
|
|
||||||
table.sort(cmds)
|
|
||||||
return true, "Available commands: " .. table.concat(cmds, " ") .. "\n"
|
|
||||||
.. "Use '/help <cmd>' to get more information,"
|
|
||||||
.. " or '/help all' to list everything."
|
|
||||||
elseif param == "all" then
|
|
||||||
local cmds = {}
|
|
||||||
for cmd, def in pairs(core.registered_chatcommands) do
|
|
||||||
if core.check_player_privs(name, def.privs) then
|
|
||||||
cmds[#cmds + 1] = format_help_line(cmd, def)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
table.sort(cmds)
|
|
||||||
return true, "Available commands:\n"..table.concat(cmds, "\n")
|
|
||||||
elseif param == "privs" then
|
|
||||||
local privs = {}
|
|
||||||
for priv, def in pairs(core.registered_privileges) do
|
|
||||||
privs[#privs + 1] = priv .. ": " .. def.description
|
|
||||||
end
|
|
||||||
table.sort(privs)
|
|
||||||
return true, "Available privileges:\n"..table.concat(privs, "\n")
|
|
||||||
else
|
|
||||||
local cmd = param
|
|
||||||
local def = core.registered_chatcommands[cmd]
|
|
||||||
if not def then
|
|
||||||
return false, "Command not available: "..cmd
|
|
||||||
else
|
|
||||||
return true, format_help_line(cmd, def)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
core.register_chatcommand("privs", {
|
core.register_chatcommand("privs", {
|
||||||
params = "<name>",
|
params = "<name>",
|
||||||
description = "Print privileges of player",
|
description = "Print privileges of player",
|
||||||
|
@ -156,6 +156,10 @@ keymap_chat (Chat key) key KEY_KEY_T
|
|||||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||||
keymap_cmd (Command key) key /
|
keymap_cmd (Command key) key /
|
||||||
|
|
||||||
|
# Key for opening the chat window to type local commands.
|
||||||
|
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||||
|
keymap_cmd_local (Command key) key .
|
||||||
|
|
||||||
# Key for opening the chat console.
|
# Key for opening the chat console.
|
||||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||||
keyman_console (Console key) key KEY_F10
|
keyman_console (Console key) key KEY_F10
|
||||||
|
@ -148,6 +148,11 @@
|
|||||||
# type: key
|
# type: key
|
||||||
# keymap_cmd = /
|
# keymap_cmd = /
|
||||||
|
|
||||||
|
# Key for opening the chat window to type local commands.
|
||||||
|
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||||
|
# type: key
|
||||||
|
# keymap_cmd_local = .
|
||||||
|
|
||||||
# Key for opening the chat console.
|
# Key for opening the chat console.
|
||||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||||
# type: key
|
# type: key
|
||||||
|
@ -42,6 +42,7 @@ public:
|
|||||||
INVENTORY,
|
INVENTORY,
|
||||||
CHAT,
|
CHAT,
|
||||||
CMD,
|
CMD,
|
||||||
|
CMD_LOCAL,
|
||||||
CONSOLE,
|
CONSOLE,
|
||||||
MINIMAP,
|
MINIMAP,
|
||||||
FREEMOVE,
|
FREEMOVE,
|
||||||
|
@ -72,6 +72,7 @@ void set_default_settings(Settings *settings)
|
|||||||
settings->setDefault("keymap_special1", "KEY_KEY_E");
|
settings->setDefault("keymap_special1", "KEY_KEY_E");
|
||||||
settings->setDefault("keymap_chat", "KEY_KEY_T");
|
settings->setDefault("keymap_chat", "KEY_KEY_T");
|
||||||
settings->setDefault("keymap_cmd", "/");
|
settings->setDefault("keymap_cmd", "/");
|
||||||
|
settings->setDefault("keymap_cmd_local", ".");
|
||||||
settings->setDefault("keymap_minimap", "KEY_F9");
|
settings->setDefault("keymap_minimap", "KEY_F9");
|
||||||
settings->setDefault("keymap_console", "KEY_F10");
|
settings->setDefault("keymap_console", "KEY_F10");
|
||||||
settings->setDefault("keymap_rangeselect", "KEY_KEY_R");
|
settings->setDefault("keymap_rangeselect", "KEY_KEY_R");
|
||||||
|
@ -1034,6 +1034,7 @@ void KeyCache::populate()
|
|||||||
key[KeyType::INVENTORY] = getKeySetting("keymap_inventory");
|
key[KeyType::INVENTORY] = getKeySetting("keymap_inventory");
|
||||||
key[KeyType::CHAT] = getKeySetting("keymap_chat");
|
key[KeyType::CHAT] = getKeySetting("keymap_chat");
|
||||||
key[KeyType::CMD] = getKeySetting("keymap_cmd");
|
key[KeyType::CMD] = getKeySetting("keymap_cmd");
|
||||||
|
key[KeyType::CMD_LOCAL] = getKeySetting("keymap_cmd_local");
|
||||||
key[KeyType::CONSOLE] = getKeySetting("keymap_console");
|
key[KeyType::CONSOLE] = getKeySetting("keymap_console");
|
||||||
key[KeyType::MINIMAP] = getKeySetting("keymap_minimap");
|
key[KeyType::MINIMAP] = getKeySetting("keymap_minimap");
|
||||||
key[KeyType::FREEMOVE] = getKeySetting("keymap_freemove");
|
key[KeyType::FREEMOVE] = getKeySetting("keymap_freemove");
|
||||||
@ -2449,6 +2450,8 @@ void Game::processKeyInput()
|
|||||||
openConsole(0.2, L"");
|
openConsole(0.2, L"");
|
||||||
} else if (wasKeyDown(KeyType::CMD)) {
|
} else if (wasKeyDown(KeyType::CMD)) {
|
||||||
openConsole(0.2, L"/");
|
openConsole(0.2, L"/");
|
||||||
|
} else if (wasKeyDown(KeyType::CMD_LOCAL)) {
|
||||||
|
openConsole(0.2, L".");
|
||||||
} else if (wasKeyDown(KeyType::CONSOLE)) {
|
} else if (wasKeyDown(KeyType::CONSOLE)) {
|
||||||
openConsole(core::clamp(g_settings->getFloat("console_height"), 0.1f, 1.0f));
|
openConsole(core::clamp(g_settings->getFloat("console_height"), 0.1f, 1.0f));
|
||||||
} else if (wasKeyDown(KeyType::FREEMOVE)) {
|
} else if (wasKeyDown(KeyType::FREEMOVE)) {
|
||||||
|
@ -53,6 +53,7 @@ enum
|
|||||||
GUI_ID_KEY_CINEMATIC_BUTTON,
|
GUI_ID_KEY_CINEMATIC_BUTTON,
|
||||||
GUI_ID_KEY_CHAT_BUTTON,
|
GUI_ID_KEY_CHAT_BUTTON,
|
||||||
GUI_ID_KEY_CMD_BUTTON,
|
GUI_ID_KEY_CMD_BUTTON,
|
||||||
|
GUI_ID_KEY_CMD_LOCAL_BUTTON,
|
||||||
GUI_ID_KEY_CONSOLE_BUTTON,
|
GUI_ID_KEY_CONSOLE_BUTTON,
|
||||||
GUI_ID_KEY_SNEAK_BUTTON,
|
GUI_ID_KEY_SNEAK_BUTTON,
|
||||||
GUI_ID_KEY_DROP_BUTTON,
|
GUI_ID_KEY_DROP_BUTTON,
|
||||||
@ -408,6 +409,7 @@ void GUIKeyChangeMenu::init_keys()
|
|||||||
this->add_key(GUI_ID_KEY_INVENTORY_BUTTON, wgettext("Inventory"), "keymap_inventory");
|
this->add_key(GUI_ID_KEY_INVENTORY_BUTTON, wgettext("Inventory"), "keymap_inventory");
|
||||||
this->add_key(GUI_ID_KEY_CHAT_BUTTON, wgettext("Chat"), "keymap_chat");
|
this->add_key(GUI_ID_KEY_CHAT_BUTTON, wgettext("Chat"), "keymap_chat");
|
||||||
this->add_key(GUI_ID_KEY_CMD_BUTTON, wgettext("Command"), "keymap_cmd");
|
this->add_key(GUI_ID_KEY_CMD_BUTTON, wgettext("Command"), "keymap_cmd");
|
||||||
|
this->add_key(GUI_ID_KEY_CMD_LOCAL_BUTTON, wgettext("Local command"), "keymap_cmd_local");
|
||||||
this->add_key(GUI_ID_KEY_CONSOLE_BUTTON, wgettext("Console"), "keymap_console");
|
this->add_key(GUI_ID_KEY_CONSOLE_BUTTON, wgettext("Console"), "keymap_console");
|
||||||
this->add_key(GUI_ID_KEY_FLY_BUTTON, wgettext("Toggle fly"), "keymap_freemove");
|
this->add_key(GUI_ID_KEY_FLY_BUTTON, wgettext("Toggle fly"), "keymap_freemove");
|
||||||
this->add_key(GUI_ID_KEY_FAST_BUTTON, wgettext("Toggle fast"), "keymap_fastmove");
|
this->add_key(GUI_ID_KEY_FAST_BUTTON, wgettext("Toggle fast"), "keymap_fastmove");
|
||||||
|
Loading…
Reference in New Issue
Block a user