1 ----- EXAMPLE EFFECT TYPES -----
3 -- Makes the user faster
4 playereffects
.register_effect_type("high_speed", "High speed", nil, {"speed"},
6 player
:set_physics_override(4,nil,nil)
10 local player
= minetest
.get_player_by_name(effect
.playername
)
11 player
:set_physics_override(1,nil,nil)
15 -- Makes the user faster (hidden effect)
16 playereffects
.register_effect_type("high_speed_hidden", "High speed", nil, {"speed"},
18 player
:set_physics_override(4,nil,nil)
22 local player
= minetest
.get_player_by_name(effect
.playername
)
23 player
:set_physics_override(1,nil,nil)
30 -- Slows the user down
31 playereffects
.register_effect_type("low_speed", "Low speed", nil, {"speed"},
33 player
:set_physics_override(0.25,nil,nil)
37 local player
= minetest
.get_player_by_name(effect
.playername
)
38 player
:set_physics_override(1,nil,nil)
42 -- Increases the jump height
43 playereffects
.register_effect_type("highjump", "Greater jump height", "playereffects_example_highjump.png", {"jump"},
45 player
:set_physics_override(nil,2,nil)
48 local player
= minetest
.get_player_by_name(effect
.playername
)
49 player
:set_physics_override(nil,1,nil)
53 -- Adds the “fly” privilege
54 playereffects
.register_effect_type("fly", "Fly mode available", "playereffects_example_fly.png", {"fly"},
56 local playername
= player
:get_player_name()
57 local privs
= minetest
.get_player_privs(playername
)
59 minetest
.set_player_privs(playername
, privs
)
62 local privs
= minetest
.get_player_privs(effect
.playername
)
64 minetest
.set_player_privs(effect
.playername
, privs
)
68 -- Dummy effect for the stree test
69 playereffects
.register_effect_type("stress", "Stress Test Effect", nil, {},
77 ------ Chat commands for the example effects ------
79 minetest
.register_chatcommand("fast", {
81 description
= "Makes you fast for a short time.",
83 func
= function(name
, param
)
84 playereffects
.apply_effect_type("high_speed", 10, minetest
.get_player_by_name(name
))
87 minetest
.register_chatcommand("hfast", {
89 description
= "Makes you fast for a short time (hidden effect).",
91 func
= function(name
, param
)
92 playereffects
.apply_effect_type("high_speed_hidden", 10, minetest
.get_player_by_name(name
))
95 minetest
.register_chatcommand("slow", {
97 description
= "Makes you slow for a long time.",
99 func
= function(name
, param
)
100 playereffects
.apply_effect_type("low_speed", 120, minetest
.get_player_by_name(name
))
103 minetest
.register_chatcommand("highjump", {
105 description
= "Makes you jump higher for a short time.",
107 func
= function(name
, param
)
108 playereffects
.apply_effect_type("highjump", 20, minetest
.get_player_by_name(name
))
112 minetest
.register_chatcommand("fly", {
114 description
= "Grants you the fly privilege for a short time.",
116 func
= function(name
, param
)
117 playereffects
.apply_effect_type("fly", 20, minetest
.get_player_by_name(name
))
121 --[[ The stress test applies a shitload of effects at once.
122 This is used to test the performance of this mod at very large effect numbers. ]]
123 minetest
.register_chatcommand("stresstest", {
124 params
= "[<effects>]",
125 descriptions
= "Start the stress test for Player Effects with <effects> effects.",
126 privs
= {server
=true},
127 func
= function(name
, param
)
128 local player
= minetest
.get_player_by_name(name
)
130 if(type(param
)=="string") then
131 if(type(tonumber(param
)) == "number") then
132 max = tonumber(param
)
133 if(max > 1000) then max = 1000 end
136 minetest
.debug("[playereffects] Stress test started for "..name
.." with "..max.." effects.")
138 playereffects
.apply_effect_type("stress", 10, player
)