mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2024-11-14 14:30:34 +01:00
191 lines
5.9 KiB
Lua
Executable File
191 lines
5.9 KiB
Lua
Executable File
minetest.register_privilege("physics", {
|
|
description = "Allows player to set their gravity, jump height and movement speed"})
|
|
|
|
-- Infotool code by PilzAdam:
|
|
minetest.register_craftitem(":default:infotool", {
|
|
description = "Infotool",
|
|
inventory_image = "default_infotool.png",
|
|
wield_image = "default_infotool.png^[transformR90",
|
|
groups = {not_in_creative_inventory = 1},
|
|
on_use = function(_, user, pt)
|
|
if pt.type ~= "node" then return end
|
|
local nn = minetest.get_node(pt.under).name
|
|
if minetest.registered_items[nn] == nil or minetest.registered_items[nn].tiles == nil or type(minetest.registered_items[nn].tiles[1]) ~= "string" then return end
|
|
local def = minetest.registered_nodes[nn]
|
|
if not def then return end
|
|
|
|
local textures = def.tiles
|
|
local description = def.description
|
|
if not textures then
|
|
textures = {"(no texture)"}
|
|
end
|
|
if not description then
|
|
description = {"(no description)"}
|
|
end
|
|
for i = 1,6 do
|
|
if not textures[i] then
|
|
textures[i] = textures[i-1]
|
|
end
|
|
end
|
|
local dir = vector.subtract(pt.above, pt.under)
|
|
local index
|
|
-- This doesn't work for facedir or other drawtypes yet.
|
|
if dir.y == 1 then
|
|
index = 1
|
|
elseif dir.y == -1 then
|
|
index = 2
|
|
else
|
|
if dir.x == 1 then
|
|
index = 3
|
|
elseif dir.x == -1 then
|
|
index = 4
|
|
else
|
|
if dir.z == 1 then
|
|
index = 5
|
|
else
|
|
index = 6
|
|
end
|
|
end
|
|
end
|
|
minetest.chat_send_player(user:get_player_name(), description .. ": " .. nn .. " (" .. textures[index] .. ")")
|
|
end,
|
|
})
|
|
|
|
minetest.register_chatcommand("info", {
|
|
description = "Gives an Infotool, click to receive information on the pointed node",
|
|
func = function(name)
|
|
local receiverref = minetest.get_player_by_name(name)
|
|
receiverref:get_inventory():add_item("main", "default:infotool")
|
|
minetest.chat_send_player(name, "\"default:infotool\" added to inventory.")
|
|
end,
|
|
})
|
|
|
|
minetest.register_chatcommand("clearinventory", {
|
|
params = "<inventory>",
|
|
description = "Clears an entire inventory, \"main\" if unspecified, \"craft\" is another possible choice",
|
|
func = function(name, param)
|
|
local player = minetest.get_player_by_name(name)
|
|
local player_inv = player:get_inventory()
|
|
if not player then
|
|
minetest.log("error", "Unable to clear inventory, no player.")
|
|
return false, "Unable to clear inventory, no player."
|
|
end
|
|
if param == "" then
|
|
player_inv:set_list("main", {})
|
|
return true, "Inventory \"main\" cleared."
|
|
else
|
|
player_inv:set_list(param, {})
|
|
return true, "Inventory \"" .. param .. "\" cleared."
|
|
end
|
|
end,
|
|
})
|
|
|
|
-- The following commands /whoami, /suicide, /speed, /gravity and /jump by Wuzzy:
|
|
minetest.register_chatcommand("whoami", {
|
|
params = "",
|
|
description = "Tells your name",
|
|
privs = {},
|
|
func = function(name)
|
|
minetest.chat_send_player(name, "Your name is: " .. name)
|
|
end,
|
|
})
|
|
|
|
minetest.register_chatcommand("ip", {
|
|
params = "",
|
|
description = "Shows your IP address",
|
|
privs = {},
|
|
func = function(name)
|
|
minetest.chat_send_player(name, "Your IP address is: "..minetest.get_player_ip(name))
|
|
end
|
|
})
|
|
|
|
minetest.register_chatcommand("suicide", {
|
|
params = "",
|
|
description = "Kills yourself",
|
|
func = function(name, param)
|
|
local player = minetest.get_player_by_name(name)
|
|
if not player then return end
|
|
player:set_hp(0)
|
|
if minetest.setting_getbool("enable_damage") == false then
|
|
minetest.chat_send_player(name, "[X] Damage is disabled on this server.")
|
|
else
|
|
minetest.chat_send_player(name, "[X] You suicided.")
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_chatcommand("speed", {
|
|
params = "[speed]",
|
|
description = "Sets your movement speed (defaults to 1).",
|
|
privs = {physics = true},
|
|
func = function(name, speed)
|
|
local player = minetest.get_player_by_name(name)
|
|
if not player then return end
|
|
if speed == "" then speed = 1 end
|
|
if type(tonumber(speed)) ~= "number"
|
|
or tonumber(speed) < 0
|
|
or tonumber(speed) > 10 then
|
|
minetest.chat_send_player(name, "[~] Speed must be between 0.0 and 10.0.")
|
|
return
|
|
end
|
|
|
|
player:set_physics_override(tonumber(speed), nil, nil)
|
|
minetest.chat_send_player(name, "[~] Speed set to " .. tonumber(speed) * 100 .. " %.")
|
|
end,
|
|
})
|
|
|
|
minetest.register_chatcommand("gravity", {
|
|
params = "[gravity]",
|
|
description = "Sets your gravity (defaults to 1).",
|
|
privs = {physics = true},
|
|
func = function(name, gravity)
|
|
local player = minetest.get_player_by_name(name)
|
|
if not player then return end
|
|
if gravity == "" then gravity = 1 end
|
|
if type(tonumber(gravity)) ~= "number"
|
|
or tonumber(gravity) < -10
|
|
or tonumber(gravity) > 10 then
|
|
minetest.chat_send_player(name, "[~] Gravity must be between -10.0 and 10.0.")
|
|
return
|
|
end
|
|
|
|
player:set_physics_override(nil, nil, tonumber(gravity))
|
|
minetest.chat_send_player(name, "[~] Gravity set to " .. tonumber(gravity) * 100 .. " %.")
|
|
end,
|
|
})
|
|
|
|
minetest.register_chatcommand("jump", {
|
|
params = "[height]",
|
|
description = "Sets your jump height (defaults to 1)",
|
|
privs = {physics = true},
|
|
func = function(name, jump)
|
|
local player = minetest.get_player_by_name(name)
|
|
if not player then return end
|
|
if jump == "" then jump = 1 end
|
|
if type(tonumber(jump)) ~= "number"
|
|
or tonumber(jump) < 0
|
|
or tonumber(jump) > 10 then
|
|
minetest.chat_send_player(name, "[~] Jump height must be between 0.0 and 10.0.")
|
|
return
|
|
end
|
|
|
|
player:set_physics_override(nil, tonumber(jump), nil)
|
|
minetest.chat_send_player(name, "[~] Jump height set to " .. tonumber(jump) * 100 .. " %.")
|
|
end,
|
|
})
|
|
|
|
minetest.register_chatcommand("hotbar", {
|
|
params = "[size]",
|
|
description = "Sets the size of your hotbar",
|
|
func = function(name, slots)
|
|
if slots == "" then slots = 16 end
|
|
if type(tonumber(slots)) ~= "number" or tonumber(slots) < 1 or tonumber(slots) > 23 then
|
|
minetest.chat_send_player(name, "[_] Hotbar size must be between 1 and 23.")
|
|
return
|
|
end
|
|
local player = minetest.get_player_by_name(name)
|
|
player:hud_set_hotbar_itemcount(tonumber(slots))
|
|
minetest.chat_send_player(name, "[_] Hotbar size set to " .. tonumber(slots) .. ".")
|
|
end,
|
|
})
|