Added some new cmds

This commit is contained in:
zmv7 2022-02-05 13:37:06 +05:00 committed by GitHub
parent 6a2c56926b
commit 311e2d7340
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

262
init.lua
View File

@ -1,20 +1,24 @@
--[[ privileges ]]
--[[ privs ]]
if(minetest.setting_getbool("enable_damage") == true) then
minetest.register_privilege("heal", {
description = "Allows player to set own health and breath with /sethp, and /setbreath",
description = "Allows set player's health and breath with /sethp, and /setbreath",
give_to_singleplayer = false
})
end
minetest.register_privilege("physics", {
description = "Allows player to set own gravity, jump height and movement speed with /setgravity, /setjump and /setspeed, respectively",
description = "Allows set player's gravity, jump height and movement speed with /gravity, /jump and /speed",
give_to_singleplayer = false
})
minetest.register_privilege("psize", {
description = "Allows set player's to set size with /size",
give_to_singleplayer = false
})
minetest.register_privilege("hotbar", {
description = "Allows player to set the number of slots of the hotbar with /hotbar",
description = "Allows set the number of slots of the hotbar with /hotbar",
give_to_singleplayer = false
})
--[[ informational commands ]]
--[[ info commands ]]
minetest.register_chatcommand("whoami", {
params = "",
description = "Shows your player name",
@ -33,7 +37,7 @@ minetest.register_chatcommand("ip", {
minetest.chat_send_player(name, "Your IP address is "..minetest.get_player_ip(name))
else
if not minetest.check_player_privs(name, "server") then
return minetest.chat_send_player(name,"You are not have server priv")
return false, "You are not have server priv"
end
local pname = minetest.get_player_by_name(param)
if pname then
@ -67,68 +71,48 @@ minetest.register_chatcommand("hotbar", {
end,
})
minetest.register_chatcommand("zoomfov", {
params = "[<FOV>]",
privs = {physics=true},
description = "Set or display your zoom_fov",
func = function(name, param)
local player = minetest.get_player_by_name(name)
if not player then
return false, "No player."
end
if param == "" then
local fov = player:get_properties().zoom_fov
return true, "zoom_fov = "..tostring(fov)
end
local fov = tonumber(param)
if not fov then
return false, "Missing or incorrect zoom_fov parameter!"
end
player:set_properties({zoom_fov = fov})
fov = player:get_properties().zoom_fov
return true, "zoom_fov = "..tostring(fov)
end,
})
--[[ health and breath commands ]]
if(minetest.setting_getbool("enable_damage") == true) then
minetest.register_chatcommand("sethp", {
params = "<hp>",
params = "[<playername>] <hp>",
privs = {heal=true},
description = "Set your health",
description = "Set your or another player's health",
func = function(name, param)
local player = minetest.get_player_by_name(name)
if not player then
return false, "No player."
local nick, hp = param:match("^(%S+)%s(.+)$")
if not nick then
nick, hp = name, param
end
local hp = tonumber(param)
if not hp then
return false, "Missing or incorrect hp parameter!"
local player = minetest.get_player_by_name(nick)
if not player then
return false, "Invalid player"
end
if type(tonumber(hp)) ~= "number" then
return false, "Missing or incorrect hp parameter"
end
player:set_hp(hp)
return true
end,
})
minetest.register_chatcommand("setbreath", {
params = "<breath number>",
description = "Sets your breath to specified breath points",
privs = {heal=true},
func = function(name, breath)
local player = minetest.get_player_by_name(name)
if not player then
return
end
params = "[<breath number>]",
description = "Set your or another player's breath points",
privs = {heal=true},
func = function(name, param)
local nick, breath = param:match("^(%S+)%s(.+)$")
if not nick then
nick, breath = name, param
end
local player = minetest.get_player_by_name(nick)
if not player then return false, "Invalid player" end
if breath == "" then
minetest.chat_send_player(name, "You did not specify the parameter.")
return
return false, 'Your current breath is '..player:get_breath()
end
if type(tonumber(breath)) ~= "number" then
minetest.chat_send_player(name, "This is not a number.")
return
return false, "This is not a number."
end
local bp = math.max(0, tonumber(breath)) -- ensure minimum value of 0
local bp = math.max(0, tonumber(breath))
player:set_breath(bp)
end,
})
@ -148,70 +132,150 @@ end
--[[ Player physics commands ]]
-- speed
minetest.register_chatcommand("setspeed", {
params = "[<speed>]",
description = "Sets your movement speed to <speed> (default: 1)",
minetest.register_chatcommand("speed", {
params = "[<playername>] [<speed>]",
description = "Sets your or another player's movement speed to <speed> (default: 1)",
privs={physics=true},
func = function(name, speed)
local player = minetest.get_player_by_name(name)
if not player then
return
func = function(name, param)
local nick, speed = param:match("^(%S+)%s(.+)$")
if not nick then
nick, speed = name, param
end
local player = minetest.get_player_by_name(nick)
if not player then
return false, "Invalid player" end
if speed == "" then
speed=1
end
if type(tonumber(speed)) ~= "number" then
minetest.chat_send_player(name, "This is not a number.")
return
end
player:set_physics_override(tonumber(speed), nil, nil)
return false, "This is not a number." end
player:set_physics_override(speed, nil, nil)
end,
})
-- gravity
minetest.register_chatcommand("setgravity", {
params = "[<gravity>]",
description = "Sets your gravity to <gravity> (default: 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" then
minetest.chat_send_player(name, "This is not a number.")
return
end
player:set_physics_override(nil, nil, tonumber(gravity))
end,
})
-- jump height
minetest.register_chatcommand("setjump", {
params = "[<height>]",
description = "Sets your jump height to <height> (default: 1)",
minetest.register_chatcommand("jump", {
params = "[<playername>] [<height>]",
description = "Sets your or another player's jump height to <height> (default: 1)",
privs = {physics=true},
func = function(name, jump_height)
local player = minetest.get_player_by_name(name)
if not player then
return
func = function(name, param)
local nick, jump_height = param:match("^(%S+)%s(.+)$")
if not nick then
nick, jump_height = name, param
end
local player = minetest.get_player_by_name(nick)
if not player then return false, "Invalid player"
end
if jump_height == "" then
jump_height=1
end
if type(tonumber(jump_height)) ~= "number" then
minetest.chat_send_player(name, "This is not a number.")
return
end
return false, "This is not a number." end
player:set_physics_override(nil, jump_height, nil)
end,
})
minetest.register_chatcommand("gravity", {
params = "[<playername>] [<gravity>]",
description = "Sets your or another player's gravity to <gravity> (default: 1)",
privs={physics=true},
func = function(name, param)
local nick, gravity = param:match("^(%S+)%s(.+)$")
if not nick then
nick, gravity = name, param
end
local player = minetest.get_player_by_name(nick)
if not player then return false, "Invalid player"
end
if gravity == "" then
gravity=1
end
if type(tonumber(gravity)) ~= "number" then
return false, "This is not a number."
end
player:set_physics_override(nil, nil, gravity)
end,
})
--[[ Punishment cmds ]]
minetest.register_chatcommand("stun", {
params = "<playername>",
description = "Disable player's movement",
privs={physics=true},
func = function(name, param)
local player = minetest.get_player_by_name(param)
if not player then
return false, "Invalid player" end
player:set_physics_override(0, 0, nil)
return true, "# "..param.." stunned"
end,
})
minetest.register_chatcommand("unstun", {
params = "<playername>",
description = "Restore player's movement",
privs={physics=true},
func = function(name, param)
local player = minetest.get_player_by_name(param)
if not player then
return false, "Invalid player" end
player:set_physics_override(1, 1, nil)
return true, "# "..param.." unstunned"
end,
})
minetest.register_chatcommand("xkill", {
params = "<playername>",
privs = {ban=true},
description = "Set player's hp to 0 until rejoin (even with admin armor)",
func = function(name, param)
local player = minetest.get_player_by_name(param)
if not player then return false, "Invalid player" end
player:set_properties({hp_max="0"})
player:set_hp(0)
end})
minetest.register_chatcommand("xres", {
params = "<playername>",
privs = {ban=true},
description = "Resurrect player with 0 hp",
func = function(name, param)
local player = minetest.get_player_by_name(param)
if not player then return false, "Invalid player" end
player:set_properties({hp_max="20"})
player:set_hp(20)
end})
--[[ Player size command ]]
minetest.register_chatcommand("size", {
description = "Change your or another player's size. Range: 0.06 - 30",
params = "[<playername>] <size>",
privs = {psize=true},
func = function(name, param)
local nick, size = param:match("^(%S+)%s(.+)$")
if not nick then
nick, size = name, param
end
local player = minetest.get_player_by_name(nick)
if not player then return false, "Invalid player" end
local chk = tonumber(size)
if not chk or chk < 0.06 or chk > 30 then return false, "Incorrect value / Out of bounds" end
player:set_properties({
collisionbox={-size*0.3, 0.0, -size*0.3, size*0.3, size*1.7, size*0.3},
selectionbox={-size*0.3, 0.0, -size*0.3, size*0.3, size*1.7, size*0.3},
eye_height=size*1.47,
visual_size={x=size,y=size,z=size}})
if size < "1" then
player:set_physics_override(tonumber(math.sqrt(size)), 1, 1)
else
player:set_physics_override(math.sqrt(size), math.sqrt(size), 1/math.sqrt(size))
end
end})
--[[ Pulverize cmd ]]
minetest.register_chatcommand("pulverizeall", {
params = "[<playername>]",
description = "Remove all items in your or player's inventory and crafting grid",
@ -224,7 +288,7 @@ minetest.register_chatcommand("pulverizeall", {
local inv = player:get_inventory()
inv:set_list("main", {})
inv:set_list("craft", {})
return true, "Your stuff pulverized"
return true, "# Your stuff pulverized"
else
if not minetest.check_player_privs(name, "server") then
return minetest.chat_send_player(name,"You are not have server priv")
@ -234,10 +298,10 @@ minetest.register_chatcommand("pulverizeall", {
local inv = pname:get_inventory()
inv:set_list("main", {})
inv:set_list("craft", {})
return true, "Pulverized "..param.."'s stuff"
return true, "# Pulverized "..param.."'s stuff"
else
return false, "Invalid player"
end
end
end,
})
})