set d_end if minetest.close_formspec is used in a function
This commit is contained in:
parent
a03d2895d0
commit
26db498afe
@ -45,6 +45,7 @@ yl_speak_up.check_one_npc_for_migration = function(dialog, pname, n_id)
|
|||||||
-- iterate over all options
|
-- iterate over all options
|
||||||
for o_id, o in pairs(d.d_options) do
|
for o_id, o in pairs(d.d_options) do
|
||||||
if(o_id and o and o.o_results) then
|
if(o_id and o and o.o_results) then
|
||||||
|
local has_close_formspec = false
|
||||||
local dialog_results = {}
|
local dialog_results = {}
|
||||||
-- iterate over all results
|
-- iterate over all results
|
||||||
for r_id, r in pairs(o.o_results) do
|
for r_id, r in pairs(o.o_results) do
|
||||||
@ -52,6 +53,11 @@ yl_speak_up.check_one_npc_for_migration = function(dialog, pname, n_id)
|
|||||||
table.insert(dialog_results, r_id)
|
table.insert(dialog_results, r_id)
|
||||||
elseif(r.r_type == "function") then
|
elseif(r.r_type == "function") then
|
||||||
c_effect_exec_lua = c_effect_exec_lua + 1
|
c_effect_exec_lua = c_effect_exec_lua + 1
|
||||||
|
-- if the formspec is closed, we need to use the
|
||||||
|
-- target dialog d_end
|
||||||
|
if(string.find(r.r_value , "minetest.close_formspec")) then
|
||||||
|
has_close_formspec = true
|
||||||
|
end
|
||||||
elseif(r.r_type == "move") then
|
elseif(r.r_type == "move") then
|
||||||
c_effect_move_player = c_effect_move_player + 1
|
c_effect_move_player = c_effect_move_player + 1
|
||||||
elseif(r.r_type == "give_item") then
|
elseif(r.r_type == "give_item") then
|
||||||
@ -70,6 +76,23 @@ yl_speak_up.check_one_npc_for_migration = function(dialog, pname, n_id)
|
|||||||
if(pname) then
|
if(pname) then
|
||||||
minetest.chat_send_player(pname, msg)
|
minetest.chat_send_player(pname, msg)
|
||||||
end
|
end
|
||||||
|
-- sometimes we need d_end because minetest.close_formspec in
|
||||||
|
-- an effect of type "function" is not enough
|
||||||
|
elseif(has_close_formspec) then
|
||||||
|
local d_old = ""
|
||||||
|
for r_id, r in pairs(o.o_results) do
|
||||||
|
if(r.r_type == "dialog" and r.r_value ~= "d_end") then
|
||||||
|
d_old = r.r_value
|
||||||
|
r.r_value = "d_end"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
yl_speak_up.save_dialog(n_id, dialog)
|
||||||
|
local msg = "ERROR: Dialog "..
|
||||||
|
tostring(d_id)..", option "..tostring(o_id)..
|
||||||
|
", uses minetest.close_formspec in its lua code "..
|
||||||
|
"but "..tostring(d_old).." instead of d_end as "..
|
||||||
|
"target dialog. Fixing."
|
||||||
|
minetest.chat_send_player(pname, msg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if(o_id and o and o.o_prerequisites) then
|
if(o_id and o and o.o_prerequisites) then
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user