diff --git a/add_generic_dialogs.lua b/add_generic_dialogs.lua index adbbd5b..c6c6e06 100644 --- a/add_generic_dialogs.lua +++ b/add_generic_dialogs.lua @@ -67,6 +67,8 @@ end -- returns "OK" if the dialog can be used as a generic dialog, that is: -- * has at least one dialog yl_speak_up.check_and_add_as_generic_dialog = function(dialog, n_id) + yl_speak_up.generic_dialogs[n_id] = nil + yl_speak_up.generic_dialog_conditions[n_id] = nil -- get the start dialog local d_id = yl_speak_up.get_start_dialog_id(dialog) if(not(d_id) @@ -394,10 +396,10 @@ minetest.register_chatcommand( 'npc_talk_generic', { return end local parts = string.split(param, " ") - local do_reload = false local s = yl_speak_up.modstorage:get_string("generic_npc_list") or "" local generic_npc_list = string.split(s, " ") if((parts[1] == "add" or parts[1] == "remove") and #parts == 2) then + local do_reload = false local i = table.indexof(generic_npc_list, parts[2]) if(parts[1] == "add" and i == -1) then local n_id = parts[2] @@ -408,20 +410,24 @@ minetest.register_chatcommand( 'npc_talk_generic', { do_reload = true elseif(parts[1] == "remove" and i ~= -1) then table.remove(generic_npc_list, i) - minetest.chat_send_player(pname, "Removing NPC "..tostring(parts[2]).."..") + minetest.chat_send_player(pname, "Removing NPC "..tostring(parts[2]).." ..") do_reload = true + yl_speak_up.generic_dialogs[parts[2]] = nil + yl_speak_up.generic_dialog_conditions[parts[2]] = nil elseif(parts[1] == "reload") then do_reload = true end + -- actually reload the NPC list + if(do_reload) then + -- store the updated version + yl_speak_up.modstorage:set_string("generic_npc_list", + table.concat(generic_npc_list, " ")) + yl_speak_up.load_generic_dialogs() + end elseif(parts[1] ~= "list" and parts[1] ~= "reload") then minetest.chat_send_player(pname, "Usage: [list|add|remove|reload] ") return end - - -- actually reload the NPC list - if(do_reload) then - yl_speak_up.load_generic_dialogs() - end local liste = {} for n_id, v in pairs(yl_speak_up.generic_dialogs) do table.insert(liste, n_id) @@ -432,14 +438,14 @@ minetest.register_chatcommand( 'npc_talk_generic', { minetest.chat_send_player(pname, "These NPC provide generic dialogs: ".. table.concat(liste, ", ")..".") end - -- store the updated version - yl_speak_up.modstorage:set_string("generic_npc_list", table.concat(generic_npc_list, " ")) return end }) yl_speak_up.load_generic_dialogs = function() + yl_speak_up.generic_dialogs = {} + yl_speak_up.generic_dialog_conditions = {} -- read list of generic NPC from mod storage local s = yl_speak_up.modstorage:get_string("generic_npc_list") or "" for i, n_id in ipairs(string.split(s, " ")) do