-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathresize.lua
More file actions
99 lines (87 loc) · 2.46 KB
/
Copy pathresize.lua
File metadata and controls
99 lines (87 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
entity_modifier.resize_player = function(player, size)
local player_name = player:get_player_name()
size = size or 1
--a too high number makes the game lag
if size < 0 or size > 80 then
minetest.chat_send_player(player_name, "Invalid size: " .. size)
return
end
local default_properties =
entity_modifier.player_original_disguise_properties[player_name] or
player_api.registered_models[player:get_properties().mesh]
local jump = 1
-- max. values `{x=-10/10,y=-10,15,z=-5/5}`
if size == 1 then
player:set_eye_offset(
{x=0, y=0, z=0},
{x=0, y=0, z=0}
)
elseif size < 1 then
player:set_eye_offset(
{x=0, y=0, z=0},
{x=0, y=0, z=math.floor(5.5 - size * 5)}
)
else
player:set_eye_offset(
{x=0, y=0, z=0},
{x=0, y=size * 5, z=-size}
)
if size >= 4 then
jump = 2
end
end
player:set_physics_override({jump = jump})
local new_properties = {}
-- corner positions: (x,y,z), (x,y,z)
if default_properties.collisionbox then
for i, v in ipairs(default_properties.collisionbox) do
default_properties.collisionbox[i] = v * size
end
end
if default_properties.selectionbox then
for i, v in ipairs(default_properties.selectionbox) do
default_properties.selectionbox[i] = v * size
end
end
if default_properties.eye_height then
new_properties.eye_height = default_properties.eye_height * size
end
new_properties.visual_size = {x=size, y=size}
player:set_properties(new_properties)
end
minetest.register_privilege("resize", {
description = "Can resize players"
})
minetest.register_chatcommand("resize", {
params = "resize <name> [<size>]",
description = "resize a player size (0.0 to 80)",
privs = { resize = true },
func = function(name, params)
local args = params:split(" ")
local player_name = args[1]
if not player_name then
minetest.chat_send_player(name, "Invalid usage: " .. params)
return
end
local player = minetest.get_player_by_name(player_name)
if player then
entity_modifier.resize_player(player, tonumber(args[2]))
else
minetest.chat_send_player(name, "Invalid player name: " .. player_name)
end
end
})
minetest.register_privilege("resizeme", {
description = "Can resize itself"
})
minetest.register_chatcommand("resizeme", {
params = "resizeme [<size>]",
description = "resize your player size (0.0 to 80)",
privs = { resizeme = true },
func = function(player_name, size_string)
entity_modifier.resize_player(
minetest.get_player_by_name(player_name),
tonumber(size_string)
)
end
})