forked from Sokomine/yl_speak_up
64 lines
2.5 KiB
Lua
64 lines
2.5 KiB
Lua
-- 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 <n_id> as generic dialogs.\n"..
|
|
"Call: [list|add|remove|reload] [<n_id>]",
|
|
privs = {privs = true},
|
|
func = function(pname, param)
|
|
if(not(param) or param == "") then
|
|
minetest.chat_send_player(pname, "Usage: [list|add|remove|reload] <n_id>")
|
|
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] <n_id>")
|
|
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
|
|
})
|