Initial release
This commit is contained in:
parent
adf69fdc29
commit
8501e2ae5c
69
commands.lua
Normal file
69
commands.lua
Normal file
@ -0,0 +1,69 @@
|
||||
-- Kill Function
|
||||
|
||||
local function handle_kill_command(suspect, victim)
|
||||
local victimref = minetest.get_player_by_name(victim)
|
||||
if victimref == nil then
|
||||
return false, ("Player "..victim.." does not exist.")
|
||||
elseif victimref:get_hp() <= 0 then
|
||||
if suspect == victim then
|
||||
return false, "You are already dead"
|
||||
else
|
||||
return false, (victim.." is already dead")
|
||||
end
|
||||
end
|
||||
if not suspect == victim then
|
||||
minetest.log("action", suspect.." killed "..victim)
|
||||
end
|
||||
victimref:set_hp(0)
|
||||
end
|
||||
|
||||
-- Kill a player
|
||||
|
||||
minetest.register_chatcommand("kill", {
|
||||
params = "<name>",
|
||||
description = "Kill player",
|
||||
privs = {kill=true},
|
||||
func = function(name, param)
|
||||
return handle_kill_command(name, param)
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
-- Kill yourself
|
||||
|
||||
minetest.register_chatcommand("killme", {
|
||||
description = "Kill yourself",
|
||||
func = function(name)
|
||||
return handle_kill_command(name, name)
|
||||
end,
|
||||
})
|
||||
|
||||
-- List banned players
|
||||
|
||||
minetest.register_chatcommand("banlist", {
|
||||
description = "List bans",
|
||||
privs = minetest.chatcommands["ban"].privs,
|
||||
func = function(name)
|
||||
return true, "Ban list: " .. core.get_ban_list()
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
|
||||
-- Aliases function
|
||||
|
||||
local function register_chatcommand_alias(alias, cmd)
|
||||
local def = minetest.chatcommands[cmd]
|
||||
minetest.register_chatcommand(alias, def)
|
||||
end
|
||||
|
||||
-- Minecraft commands for minetest
|
||||
|
||||
register_chatcommand_alias("?", "help")
|
||||
register_chatcommand_alias("list", "status")
|
||||
register_chatcommand_alias("pardon", "unban")
|
||||
register_chatcommand_alias("stop", "shutdown")
|
||||
register_chatcommand_alias("tell", "msg")
|
||||
register_chatcommand_alias("w", "msg")
|
||||
register_chatcommand_alias("tp", "teleport")
|
||||
|
85
init.lua
Normal file
85
init.lua
Normal file
@ -0,0 +1,85 @@
|
||||
local commander = ""
|
||||
minetest.after(0, function()
|
||||
for cmd in pairs(minetest.chatcommands) do
|
||||
if cmd ~= "command_gui" then
|
||||
commander = commander..cmd..","
|
||||
end
|
||||
end
|
||||
commander = commander:sub(1, -2)
|
||||
end)
|
||||
|
||||
local function formspec(cmd_name)
|
||||
local number = 1
|
||||
if cmd_name then
|
||||
for i, cmd in ipairs(commander:split(",")) do
|
||||
if cmd == cmd_name then
|
||||
number = i
|
||||
break
|
||||
end
|
||||
end
|
||||
else
|
||||
cmd_name = commander:split(",")[1]
|
||||
end
|
||||
|
||||
local def = minetest.chatcommands[cmd_name]
|
||||
|
||||
local privileges = ""
|
||||
for priv, bool in pairs(def.privs or {}) do
|
||||
if bool then
|
||||
privileges = privileges..priv..","
|
||||
end
|
||||
end
|
||||
privileges = minetest.formspec_escape(#privileges ~= 0 and privileges:sub(1, -2) or "")
|
||||
local description = minetest.formspec_escape(def.description or "")
|
||||
local parameters = minetest.formspec_escape(def.params or "")
|
||||
|
||||
return "size[9,4;]"..
|
||||
"dropdown[,;9.5,1;command;"..commander..";"..number.."]"..
|
||||
"label[,1;Description: "..description.."]"..
|
||||
"label[,1.5;Privileges: "..privileges.."]"..
|
||||
"field[.3,2.7;9,1;param;Parameter:;"..parameters.."]"..
|
||||
"button[,3.3;9,1;run;Run]"
|
||||
end
|
||||
|
||||
|
||||
-- Open command gui by chat
|
||||
|
||||
minetest.register_chatcommand("command_gui", {
|
||||
func = function(name)
|
||||
minetest.after(0.5, minetest.show_formspec, name, "command_gui:menu", formspec())
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname ~= "command_gui:menu" then
|
||||
return
|
||||
end
|
||||
|
||||
local name = player:get_player_name()
|
||||
|
||||
if fields.run then
|
||||
local def = minetest.chatcommands[fields.command]
|
||||
if not def then
|
||||
return
|
||||
end
|
||||
|
||||
local has_privs, missing_privs = minetest.check_player_privs(name, def.privs)
|
||||
if has_privs then
|
||||
minetest.set_last_run_mod(def.mod_origin)
|
||||
local success, message = def.func(name, fields.param)
|
||||
if message then
|
||||
minetest.chat_send_player(name, message)
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(name, "You don't have permission"..
|
||||
" to run this command (missing privileges: "..
|
||||
table.concat(missing_privs, ", ") .. ")")
|
||||
end
|
||||
elseif fields.command and not fields.quit then
|
||||
minetest.show_formspec(name, "command_gui:menu", formspec(fields.command))
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
dofile(minetest.get_modpath("commander").."/commands.lua")
|
Loading…
x
Reference in New Issue
Block a user