From c9cc112169b56376cd8329cd0fb8d43b94d42c6a Mon Sep 17 00:00:00 2001 From: Sokomine Date: Sun, 6 Nov 2022 12:20:55 +0100 Subject: [PATCH] fixed bug in storing new variable values; also checking success of variable changes now --- fs_manage_variables.lua | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/fs_manage_variables.lua b/fs_manage_variables.lua index 376dfbf..a825c68 100644 --- a/fs_manage_variables.lua +++ b/fs_manage_variables.lua @@ -100,6 +100,7 @@ yl_speak_up.input_fs_manage_variables = function(player, formname, fields) if(not(var_name)) then var_name = "" end + local var_name_with_prefix = yl_speak_up.restore_complete_var_name(var_name, pname) -- show all stored values for a variable in a table @@ -155,33 +156,53 @@ yl_speak_up.input_fs_manage_variables = function(player, formname, fields) -- change the value for a player (possibly to nil) elseif(fields and fields.store_new_value_for_player and var_name and fields.stored_value_for_player and fields.stored_value_for_player ~= "") then - yl_speak_up.set_quest_variable_value(fields.stored_value_for_player, var_name, + local old_value = yl_speak_up.get_quest_variable_value( + fields.stored_value_for_player, var_name_with_prefix) + yl_speak_up.set_quest_variable_value(fields.stored_value_for_player, var_name_with_prefix, fields.current_value_for_player) + local new_value = yl_speak_up.get_quest_variable_value( + fields.stored_value_for_player, var_name_with_prefix) + local success_msg = minetest.colorize("#00FF00", "Successfully set variable") + if(new_value ~= fields.current_value_for_player) then + success_msg = minetest.colorize("#FF0000", "FAILED TO set variable") + end yl_speak_up.show_fs(player, "msg", { input_to = "yl_speak_up:manage_variables", - formspec = "size[10,2]".. - "label[0.2,0.0;Set variable \"".. + formspec = "size[10,2.5]".. + "label[0.2,0.0;"..success_msg.." \"".. minetest.colorize("#FFFF00", minetest.formspec_escape(tostring(var_name))).. "\"\nfor player ".. minetest.formspec_escape(fields.stored_value_for_player).. - "\nto new value ".. + "\n(old value: ".. + minetest.colorize("#AAAAAA", old_value).. + ")\nto new value ".. minetest.colorize("#FFFF00", fields.current_value_for_player)..".]".. - "button[1.5,1.5;2,0.9;back_from_msg;Back]"}) + "button[1.5,2.0;2,0.9;back_from_msg;Back]"}) return -- remove the value for a player (set to nil) elseif(fields and fields.unset_value_for_player and var_name and fields.stored_value_for_player and fields.stored_value_for_player ~= "") then - yl_speak_up.set_quest_variable_value(fields.stored_value_for_player, var_name, nil) + local old_value = yl_speak_up.get_quest_variable_value( + fields.stored_value_for_player, var_name_with_prefix) + yl_speak_up.set_quest_variable_value(fields.stored_value_for_player, var_name_with_prefix, nil) + local new_value = yl_speak_up.get_quest_variable_value( + fields.stored_value_for_player, var_name_with_prefix) + local success_msg = minetest.colorize("#00FF00", "Unset variable") + if(new_value) then + success_msg = minetest.colorize("#FF0000", "FAILED TO unset variable") + end yl_speak_up.show_fs(player, "msg", { input_to = "yl_speak_up:manage_variables", formspec = "size[10,2]".. - "label[0.2,0.0;Unset variable \"".. + "label[0.2,0.0;"..success_msg.." \"".. minetest.colorize("#FFFF00", minetest.formspec_escape(tostring(var_name))).. "\"\nfor player ".. minetest.formspec_escape(fields.stored_value_for_player).. - ".]".. + "\n(old value: ".. + minetest.colorize("#AAAAAA", old_value).. + ").]".. "button[1.5,1.5;2,0.9;back_from_msg;Back]"}) return