allow to change owner in fs_initial_config.lua

This commit is contained in:
Sokomine 2021-06-02 22:35:43 +02:00
parent 5409e1fa04
commit 062699b1da

View File

@ -39,6 +39,15 @@ yl_speak_up.input_fs_initial_config = function(player, formname, fields)
-- sensible length limit
elseif(string.len(fields.n_npc)>40 or string.len(fields.n_description)>40) then
error_msg = "The name and description of your NPC\ncannot be longer than 40 characters."
-- want to change the owner?
elseif(fields.n_owner and fields.n_owner ~= yl_speak_up.npc_owner[ n_id ]) then
if( not(minetest.check_player_privs(player, {npc_talk_master=true}))) then
error_msg = "You need the \"npc_talk_master\" priv\nin order to change the owner."
elseif(not(minetest.check_player_privs(fields.n_owner, {npc_talk_owner=true}))) then
error_msg = "The NPC can only be owned by players that\n"..
"have the \"npc_talk_owner\" priv. Else the\n"..
"new owner could not edit his own NPC."
end
end
if(error_msg) then
yl_speak_up.show_fs(player, "msg", { input_to = "yl_speak_up:initial_config",
@ -57,6 +66,17 @@ yl_speak_up.input_fs_initial_config = function(player, formname, fields)
end
end
-- we checked earlier if the player doing this change and the
-- player getting the NPC have appropriate privs
if(fields.n_owner ~= yl_speak_up.npc_owner[ n_id ]) then
yl_speak_up.log_change(pname, n_id,
"Owner changed from "..tostring(yl_speak_up.npc_owner[ n_id ])..
" to "..tostring(fields.n_owner).." for "..
"NPC name: \""..tostring(fields.n_npc))
yl_speak_up.npc_owner[ n_id ] = fields.n_owner
end
-- give the NPC its first dialog
if(not(dialog) or count==0) then
local f = {}
@ -91,6 +111,7 @@ yl_speak_up.input_fs_initial_config = function(player, formname, fields)
"NPC name: \""..tostring(fields.n_npc)..
"\" Description: \""..tostring(fields.n_description).."\"")
end
dialog = yl_speak_up.speak_to[pname].dialog
-- show nametag etc.
@ -128,14 +149,15 @@ yl_speak_up.get_fs_initial_config = function(player, n_id, d_id, is_initial_conf
local tmp_name = n_id
local tmp_descr = "A new NPC without description"
local tmp_text = "Please provide your new NPC with a name and description!"
local tmp_owner = (yl_speak_up.npc_owner[ n_id ] or "- none -")
-- use existing name and description as presets when just editing
if(not(is_initial_config)) then
local dialog = yl_speak_up.speak_to[pname].dialog
tmp_name = dialog.n_npc
tmp_descr = dialog.n_description
tmp_name = (dialog.n_npc or tmp_name)
tmp_descr = (dialog.n_description or tmp_descr)
tmp_text = "You can change the name and description of your NPC."
end
local formspec = "size[10,4]"..
local formspec = "size[10,5]"..
"label[0.2,0.2;"..tmp_text.."]"..
-- name of the npc
"label[0.2,1.05;Name:]"..
@ -145,9 +167,14 @@ yl_speak_up.get_fs_initial_config = function(player, n_id, d_id, is_initial_conf
"label[0.2,2.05;Description:]"..
"field[2.0,2.2;8,0.9;n_description;;"..minetest.formspec_escape(tmp_descr).."]"..
"tooltip[n_description;n_description: A description for the NPC;#FFFFFF;#000000]"..
-- the owner of the NPC
"label[0.2,3.05;Owner:]"..
"field[2.0,3.2;8,0.9;n_owner;;"..minetest.formspec_escape(tmp_owner).."]"..
"tooltip[n_owner;The owner of the NPC. This can only be changed\n"..
"if you have the npc_talk_master priv.;#FFFFFF;#000000]"..
-- save and exit buttons
"button_exit[3.2,3.2;2,0.9;save_initial_config;Save]"..
"button_exit[5.4,3.2;2,0.9;exit;Exit]"
"button_exit[3.2,4.2;2,0.9;save_initial_config;Save]"..
"button_exit[5.4,4.2;2,0.9;exit;Exit]"
-- show the formspec to the player
return formspec
end