85 lines
1.6 KiB
Lua
85 lines
1.6 KiB
Lua
|
|
local markers = {} -- playername -> boolean
|
|
|
|
local FORMNAME = "mission_block_step_message"
|
|
|
|
missions.register_step({
|
|
|
|
type = "message",
|
|
name = "Show message",
|
|
|
|
create = function()
|
|
return {title="", message=""}
|
|
end,
|
|
|
|
edit_formspec = function(ctx)
|
|
local stepdata = ctx.step.data
|
|
|
|
local formspec = "size[8,8;]" ..
|
|
"label[0,0;Show a message]" ..
|
|
"field[0,1;8,1;title;Title;" .. stepdata.title .. "]" ..
|
|
"textarea[0,2;8,4;message;Message;" .. stepdata.message .. "]" ..
|
|
"button[0,7;8,1;save;Save]"
|
|
|
|
return formspec;
|
|
end,
|
|
|
|
update = function(ctx)
|
|
local fields = ctx.fields
|
|
local stepdata = ctx.step.data
|
|
|
|
if fields.title then
|
|
stepdata.title = fields.title
|
|
end
|
|
|
|
if fields.message then
|
|
stepdata.message = fields.message
|
|
end
|
|
|
|
ctx.show_mission()
|
|
end,
|
|
|
|
on_step_enter = function(ctx)
|
|
local player = ctx.player
|
|
local stepdata = ctx.step.data
|
|
|
|
markers[player:get_player_name()] = false
|
|
|
|
local formspec = "size[8,8;]" ..
|
|
"label[0,0;" .. stepdata.title .. "]" ..
|
|
"label[0,2;" .. stepdata.message .. "]" ..
|
|
"button_exit[5.5,1;2,1;ok;OK]" ..
|
|
missions.FORMBG
|
|
|
|
minetest.show_formspec(player:get_player_name(), FORMNAME, formspec)
|
|
end,
|
|
|
|
on_step_interval = function(ctx)
|
|
local player = ctx.player
|
|
|
|
if markers[player:get_player_name()] then
|
|
ctx.on_success()
|
|
end
|
|
end,
|
|
|
|
on_step_exit = function(ctx)
|
|
local player = ctx.player
|
|
markers[player:get_player_name()] = false
|
|
end
|
|
|
|
|
|
})
|
|
|
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|
if formname ~= FORMNAME then
|
|
return
|
|
end
|
|
|
|
markers[player:get_player_name()] = true
|
|
end)
|
|
|
|
|
|
|
|
|
|
|