diff options
| -rw-r--r-- | examples.lua | 25 | ||||
| -rw-r--r-- | init.lua | 9 | ||||
| -rw-r--r-- | textures/playereffects_example_black.png | bin | 0 -> 69 bytes | 
3 files changed, 30 insertions, 4 deletions
| diff --git a/examples.lua b/examples.lua index 69950fe..ce3fbcd 100644 --- a/examples.lua +++ b/examples.lua @@ -1,4 +1,20 @@  ----- EXAMPLE EFFECT TYPES ----- +-- Makes the player screen black for 5 seconds (very experimental!) +playereffects.register_effect_type("blind", "Blind", nil, {}, +	function(player) +		local hudid = player:hud_add({ +			hud_elem_type = "image", +			position = { x=0.5, y=0.5 }, +			scale = { x=-100, y=-100 }, +			text = "playereffects_example_black.png", +		}) +		return { hudid = hudid } +	end, +	function(effect) +		local player = minetest.get_player_by_name(effect.playername) +		player:hud_remove(effect.metadata.hudid) +	end +)  -- Makes the user faster  playereffects.register_effect_type("high_speed", "High speed", nil, {"speed"},  @@ -75,7 +91,14 @@ playereffects.register_effect_type("stress", "Stress Test Effect", nil, {},  ------ Chat commands for the example effects ------ - +minetest.register_chatcommand("blind", { +	params = "", +	description = "Makes your screen black for a short time.", +	privs = {}, +	func = function(name, param) +		playereffects.apply_effect_type("blind", 5, minetest.get_player_by_name(name)) +	end, +})  minetest.register_chatcommand("fast", {  	params = "",  	description = "Makes you fast for a short time.", @@ -105,6 +105,8 @@ function playereffects.apply_effect_type(effect_type_id, duration, player)  		hudids = {text_id=nil, icon_id=nil}  	end +	local metadata = playereffects.effect_types[effect_type_id].apply(player) +  	local effect = {  			playername = playername,   			effect_id = effect_id, @@ -113,11 +115,11 @@ function playereffects.apply_effect_type(effect_type_id, duration, player)  			time_left = duration,  			hudids = hudids,  			hudpos = free_hudpos, -			} +			metadata = metadata, +	}  	playereffects.effects[effect_id] = effect -		 -	playereffects.effect_types[effect_type_id].apply(player) +  	minetest.log("action", "[playereffects] Effect type "..effect_type_id.." applied to player "..playername.."!")  	minetest.after(duration, function(effect_id) playereffects.cancel_effect(effect_id) end, effect_id)  end @@ -202,6 +204,7 @@ function playereffects.save_to_file()  			time_left = new_duration,  			start_time = effect.start_time,  			playername = effect.playername, +			metadata = effect.metadata  		}  		if(inactive_effects[effect.playername] == nil) then  			inactive_effects[effect.playername] = {} diff --git a/textures/playereffects_example_black.png b/textures/playereffects_example_black.pngBinary files differ new file mode 100644 index 0000000..cf671d1 --- /dev/null +++ b/textures/playereffects_example_black.png | 
