-- this is used by add_generic_dialogs.lua -- a chat command to grant or deny or disallow npc these privs; -- it is not checked if the NPC exists minetest.register_chatcommand( 'npc_talk_generic', { description = "Lists, add or removes the dialogs of NPC as generic dialogs.\n".. "Call: [list|add|remove|reload] []", privs = {privs = true}, func = function(pname, param) if(not(param) or param == "") then minetest.chat_send_player(pname, "Usage: [list|add|remove|reload] ") return end local parts = string.split(param, " ") 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] table.insert(generic_npc_list, n_id) local dialog = yl_speak_up.load_dialog(n_id, false) local res = yl_speak_up.check_and_add_as_generic_dialog(dialog, n_id) minetest.chat_send_player(pname, "Adding NPC "..tostring(n_id).."..: "..tostring(res)) do_reload = true elseif(parts[1] == "add" and i ~= -1) then minetest.chat_send_player(pname, "NPC "..tostring(parts[2]).. " is already registered as a generic NPC. You may try to ".. "remove and add it again if something went wrong.") elseif(parts[1] == "remove" and i ~= -1) then table.remove(generic_npc_list, i) 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 local liste = {} for n_id, v in pairs(yl_speak_up.generic_dialogs) do table.insert(liste, n_id) end if(#liste < 1) then minetest.chat_send_player(pname, "No NPC provides generic dialogs.") else minetest.chat_send_player(pname, "These NPC provide generic dialogs: ".. table.concat(liste, ", ")..".") end return end })