coronaserver/commands.lua

111 lines
3.5 KiB
Lua

minetest.register_chatcommand("getip", {
description = "Get the IP of a player",
params = "<player>",
privs = {server = true},
func = function(name, param)
if minetest.get_player_by_name(param) then
minetest.chat_send_player(name, "IP of " .. param .. ": " .. minetest.get_player_information(param).address)
else
minetest.chat_send_player(name, "Player is not online.")
end
end
})
minetest.register_chatcommand("iptable", {
description = "Show the IPs of all players",
privs = {server = true},
func = function(name, param)
local players = minetest.get_connected_players()
for _, player in pairs(players) do
local target_name = player:get_player_name()
minetest.chat_send_player(name, target_name .. " | " .. minetest.get_player_information(target_name).address)
end
end
})
minetest.register_chatcommand("sudo", {
description = "Force other players to run commands",
params = "<player> <command> <arguments...>",
privs = {server = true},
func = function(name, param)
local target = param:split(" ")[1]
local command = param:split(" ")[2]
local argumentsdisp
local cmddef = minetest.chatcommands
local _, _, arguments = string.match(param, "([^ ]+) ([^ ]+) (.+)")
if not arguments then arguments = "" end
if target and command then
if cmddef[command] then
if minetest.get_player_by_name(target) then
if arguments == "" then argumentsdisp = arguments else argumentsdisp = " " .. arguments end
cmddef[command].func(target, arguments)
else
minetest.chat_send_player(name, minetest.colorize("#FF0000", "Invalid Player."))
end
else
minetest.chat_send_player(name, minetest.colorize("#FF0000", "Nonexistant Command."))
end
else
minetest.chat_send_player(name, minetest.colorize("#FF0000", "Invalid Usage."))
end
end
})
minetest.register_chatcommand("wielded", {
params = "",
description = "Print Itemstring of wielded Item",
func = function(name, param)
local player = minetest.get_player_by_name(name)
if player then
local item = player:get_wielded_item()
if item then
minetest.chat_send_player(name, item:get_name())
end
end
end,
})
minetest.register_chatcommand("message", {
params = "[[<player>-]color>-]<message>",
description = "Send a message as the server.",
privs = {server = true},
func = function(player, param)
coronaserver.message(param)
end,
})
minetest.register_chatcommand("creator", {
privs = {server = true},
description = "Den Ersteller des Items anzeigen, was man in der Hand hat, wenn es im Kreativmodus erstellt wurde",
func = function(name)
local player = minetest.get_player_by_name(name)
if not player then return end
local itemstack = player:get_wielded_item()
if not itemstack then return false, "Du hast gereade kein Item in der Hand" end
local meta = itemstack:get_meta()
local creator = meta:get_string("creator")
if creator == "" then return false, "Dieses Item wurde nicht im Kreativmodus erstellt" end
return true, creator .. " hat dieses Item erstellt"
end
})
minetest.register_chatcommand("hp", {
params = "<name> <value>",
description = "Set health of <name> to <value> hitpoints",
privs = {ban=true},
func = function(name, param)
local found, _, target, value = param:find("^([^%s]+)%s+(%d+)$")
if found == nil then
minetest.chat_send_player(name, "Invalid usage: " .. param)
return
end
local player = minetest.get_player_by_name(target)
if player then
player:set_hp(value)
else
minetest.chat_send_player(name, "Invalid target: " .. target)
end
end
})