forked from Sokomine/yl_speak_up
fixed bug in adding/removing generic npc dialogs
This commit is contained in:
parent
06cadd9f3e
commit
0c099640ac
@ -67,6 +67,8 @@ end
|
|||||||
-- returns "OK" if the dialog can be used as a generic dialog, that is:
|
-- returns "OK" if the dialog can be used as a generic dialog, that is:
|
||||||
-- * has at least one dialog
|
-- * has at least one dialog
|
||||||
yl_speak_up.check_and_add_as_generic_dialog = function(dialog, n_id)
|
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
|
-- get the start dialog
|
||||||
local d_id = yl_speak_up.get_start_dialog_id(dialog)
|
local d_id = yl_speak_up.get_start_dialog_id(dialog)
|
||||||
if(not(d_id)
|
if(not(d_id)
|
||||||
@ -394,10 +396,10 @@ minetest.register_chatcommand( 'npc_talk_generic', {
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
local parts = string.split(param, " ")
|
local parts = string.split(param, " ")
|
||||||
local do_reload = false
|
|
||||||
local s = yl_speak_up.modstorage:get_string("generic_npc_list") or ""
|
local s = yl_speak_up.modstorage:get_string("generic_npc_list") or ""
|
||||||
local generic_npc_list = string.split(s, " ")
|
local generic_npc_list = string.split(s, " ")
|
||||||
if((parts[1] == "add" or parts[1] == "remove") and #parts == 2) then
|
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])
|
local i = table.indexof(generic_npc_list, parts[2])
|
||||||
if(parts[1] == "add" and i == -1) then
|
if(parts[1] == "add" and i == -1) then
|
||||||
local n_id = parts[2]
|
local n_id = parts[2]
|
||||||
@ -408,20 +410,24 @@ minetest.register_chatcommand( 'npc_talk_generic', {
|
|||||||
do_reload = true
|
do_reload = true
|
||||||
elseif(parts[1] == "remove" and i ~= -1) then
|
elseif(parts[1] == "remove" and i ~= -1) then
|
||||||
table.remove(generic_npc_list, i)
|
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
|
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
|
elseif(parts[1] == "reload") then
|
||||||
do_reload = true
|
do_reload = true
|
||||||
end
|
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
|
elseif(parts[1] ~= "list" and parts[1] ~= "reload") then
|
||||||
minetest.chat_send_player(pname, "Usage: [list|add|remove|reload] <n_id>")
|
minetest.chat_send_player(pname, "Usage: [list|add|remove|reload] <n_id>")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- actually reload the NPC list
|
|
||||||
if(do_reload) then
|
|
||||||
yl_speak_up.load_generic_dialogs()
|
|
||||||
end
|
|
||||||
local liste = {}
|
local liste = {}
|
||||||
for n_id, v in pairs(yl_speak_up.generic_dialogs) do
|
for n_id, v in pairs(yl_speak_up.generic_dialogs) do
|
||||||
table.insert(liste, n_id)
|
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: "..
|
minetest.chat_send_player(pname, "These NPC provide generic dialogs: "..
|
||||||
table.concat(liste, ", ")..".")
|
table.concat(liste, ", ")..".")
|
||||||
end
|
end
|
||||||
-- store the updated version
|
|
||||||
yl_speak_up.modstorage:set_string("generic_npc_list", table.concat(generic_npc_list, " "))
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
yl_speak_up.load_generic_dialogs = function()
|
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
|
-- read list of generic NPC from mod storage
|
||||||
local s = yl_speak_up.modstorage:get_string("generic_npc_list") or ""
|
local s = yl_speak_up.modstorage:get_string("generic_npc_list") or ""
|
||||||
for i, n_id in ipairs(string.split(s, " ")) do
|
for i, n_id in ipairs(string.split(s, " ")) do
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user