Add “player” argument to the cancel callback
This commit is contained in:
parent
86ed00c7c8
commit
54b18385c8
|
@ -98,8 +98,8 @@ Adds a new effect type for the Player Effects mods, so it can be later be applie
|
|||
* `description` is the text which is exposed to the HUD and visible to the player.
|
||||
* `icon`: This is optional an can be `nil`. It can be the file name of a texture. Should have a size of 16px×16px. In this case, this is the icon for the HUD. Basically this is just eye-candy. If this is `nil`, no icon is shown. The icon will be exposed to the HUD, iff `hidden` is `false`.
|
||||
* `groups` is a table of strings to which the effect type is assigned to.
|
||||
* `apply` is a function which takes a player object. It is the player object to which the effect is applied to. This function isused by the framework to start the effect; it should only contain the gameplay-relevant stuff, the framework does the rest for you.
|
||||
* `cancel` is a function which takes an effect table. It is the effect which is to be cancelled. This function is called by the framework when the effect expires or is explicitly cancelled by other means..
|
||||
* `apply`: See below.
|
||||
* `cancel`: See below.
|
||||
* `hidden` is an optional boolean value. Iff `true`, the effect description and icon will not be exposed to the player HUD. Otherwise, the effect is exposed. Default: `false`
|
||||
* `cancel_on_death` is an optional boolean value. Iff true, the effect will be cancelled automatically when the player dies. Default: `true`.
|
||||
|
||||
|
@ -118,7 +118,7 @@ The function may also return just `nil` on a normal success without metadata.
|
|||
###### `cancel` function
|
||||
The `cancel` function is called by Player Effects when the effect is to be cancelled. Here the modder can do all the code which is needed to revert the changes an earlier `apply` call made.
|
||||
|
||||
`cancel` takes an `effect` as its only argument. Remember, this `effect` may also contain a field called `metadata`, which may have been added by an earlier `apply` call.
|
||||
`cancel` takes an `effect` as its first argument and a player object as its second argument. Remember, this `effect` may also contain a field called `metadata`, which may have been added by an earlier `apply` call. `player` is the player to which the effect is/was applied. This argument is just there for convenience reasons.
|
||||
|
||||
Player Effects does not care about the return value of this function.
|
||||
|
||||
|
|
19
examples.lua
19
examples.lua
|
@ -34,8 +34,7 @@ playereffects.register_effect_type("blind", "Blind", nil, {},
|
|||
return false
|
||||
end
|
||||
end,
|
||||
function(effect)
|
||||
local player = minetest.get_player_by_name(effect.playername)
|
||||
function(effect, player)
|
||||
player:hud_remove(effect.metadata.hudid)
|
||||
end
|
||||
)
|
||||
|
@ -46,8 +45,7 @@ playereffects.register_effect_type("high_speed", "High speed", nil, {"speed"},
|
|||
player:set_physics_override(4,nil,nil)
|
||||
end,
|
||||
|
||||
function(effect)
|
||||
local player = minetest.get_player_by_name(effect.playername)
|
||||
function(effect, player)
|
||||
player:set_physics_override(1,nil,nil)
|
||||
end
|
||||
)
|
||||
|
@ -58,8 +56,7 @@ playereffects.register_effect_type("high_speed_hidden", "High speed", nil, {"spe
|
|||
player:set_physics_override(4,nil,nil)
|
||||
end,
|
||||
|
||||
function(effect)
|
||||
local player = minetest.get_player_by_name(effect.playername)
|
||||
function(effect, player)
|
||||
player:set_physics_override(1,nil,nil)
|
||||
end,
|
||||
true
|
||||
|
@ -73,8 +70,7 @@ playereffects.register_effect_type("low_speed", "Low speed", nil, {"speed"},
|
|||
player:set_physics_override(0.25,nil,nil)
|
||||
end,
|
||||
|
||||
function(effect)
|
||||
local player = minetest.get_player_by_name(effect.playername)
|
||||
function(effect, player)
|
||||
player:set_physics_override(1,nil,nil)
|
||||
end
|
||||
)
|
||||
|
@ -84,8 +80,7 @@ playereffects.register_effect_type("highjump", "Greater jump height", "playereff
|
|||
function(player)
|
||||
player:set_physics_override(nil,2,nil)
|
||||
end,
|
||||
function(effect)
|
||||
local player = minetest.get_player_by_name(effect.playername)
|
||||
function(effect, player)
|
||||
player:set_physics_override(nil,1,nil)
|
||||
end
|
||||
)
|
||||
|
@ -98,7 +93,7 @@ playereffects.register_effect_type("fly", "Fly mode available", "playereffects_e
|
|||
privs.fly = true
|
||||
minetest.set_player_privs(playername, privs)
|
||||
end,
|
||||
function(effect)
|
||||
function(effect, player)
|
||||
local privs = minetest.get_player_privs(effect.playername)
|
||||
privs.fly = nil
|
||||
minetest.set_player_privs(effect.playername, privs)
|
||||
|
@ -111,7 +106,7 @@ playereffects.register_effect_type("fly", "Fly mode available", "playereffects_e
|
|||
playereffects.register_effect_type("stress", "Stress Test Effect", nil, {},
|
||||
function(player)
|
||||
end,
|
||||
function(effect)
|
||||
function(effect, player)
|
||||
end
|
||||
)
|
||||
|
||||
|
|
2
init.lua
2
init.lua
|
@ -192,7 +192,7 @@ function playereffects.cancel_effect(effect_id)
|
|||
if(effect.hudids.icon_id~=nil) then
|
||||
player:hud_remove(effect.hudids.icon_id)
|
||||
end
|
||||
playereffects.effect_types[effect.effect_type_id].cancel(effect)
|
||||
playereffects.effect_types[effect.effect_type_id].cancel(effect, player)
|
||||
playereffects.effects[effect_id] = nil
|
||||
minetest.log("action", "[playereffects] Effect type "..effect.effect_type_id.." cancelled from player "..effect.playername.."!")
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user