From be9dfbf1dd83ff39b90127a0503565395d6ea9b2 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sun, 11 Jul 2021 18:13:45 +0200 Subject: [PATCH] show correct dialog when the player uses an older formspec version; note: does not cover editing --- functions.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/functions.lua b/functions.lua index 8fee3bd..ccb05ca 100644 --- a/functions.lua +++ b/functions.lua @@ -815,6 +815,7 @@ yl_speak_up.get_fs_talkdialog = function(player, n_id, d_id, alternate_text) if(yl_speak_up.npc_owner[ n_id ]) then owner_info = "\n\n(owned by "..minetest.formspec_escape(yl_speak_up.npc_owner[ n_id ])..")" end + if formspec_v >= 4 then formspec = { "formspec_version[3]", @@ -1234,6 +1235,9 @@ yl_speak_up.get_fs_talkdialog = function(player, n_id, d_id, alternate_text) table.insert(formspec, "scroll_container_end[]") table.insert(formspec, "container_end[]") + + -- if the player has an older formspec version + -- TODO: the version for older formspec versions lacks quite a lot - in particular regarding editing else minetest.log( "info", @@ -1254,6 +1258,12 @@ yl_speak_up.get_fs_talkdialog = function(player, n_id, d_id, alternate_text) upgrade_warning = table.concat(warn, "") end + if(alternate_text) then + alternate_text = string.gsub(alternate_text, "%$TEXT%$", active_dialog.d_text) + end + -- replace $NPC_NAME$ etc. + local t = minetest.formspec_escape(yl_speak_up.replace_vars_in_text( + (alternate_text or active_dialog.d_text), dialog, pname)) formspec = { "formspec_version[1]", "size[48,28]", @@ -1303,7 +1313,7 @@ yl_speak_up.get_fs_talkdialog = function(player, n_id, d_id, alternate_text) portrait, "]", "textarea[0.5,5;19.6,13.5;;;", - minetest.formspec_escape(active_dialog.d_text) .. "\n", + t .. "\n", "]", "container[0,18]" }