forked from Sokomine/yl_speak_up
added function yl_speak_up.may_edit_npc for checking players privs
This commit is contained in:
parent
ab1c8de031
commit
052b6ab73f
@ -1056,9 +1056,7 @@ local function get_fs_initial_config(player, n_id, d_id, is_initial_config)
|
||||
local pname = player:get_player_name()
|
||||
|
||||
-- is the player allowed to edit this npc?
|
||||
if(not(yl_speak_up.npc_owner[ n_id ] == pname
|
||||
and minetest.check_player_privs(player, {npc_talk_owner=true}))
|
||||
and not(minetest.check_player_privs(player, {npc_master=true}))) then
|
||||
if(not(yl_speak_up.may_edit_npc(player, n_id))) then
|
||||
return get_error_message()
|
||||
end
|
||||
|
||||
@ -1517,9 +1515,7 @@ local function get_fs_talkdialog(player, n_id, d_id)
|
||||
|
||||
-- Offer to enter edit mode if the player has the npc_talk_owner priv AND owns the npc.
|
||||
-- The npc_master priv allows to edit all NPC.
|
||||
elseif((yl_speak_up.npc_owner[ n_id ] == pname
|
||||
and minetest.check_player_privs(player, {npc_talk_owner=true}))
|
||||
or (minetest.check_player_privs(player, {npc_master=true}))) then
|
||||
elseif(yl_speak_up.may_edit_npc(player, n_id)) then
|
||||
-- chat option: "I am your owner. I have new orders for you.
|
||||
h = h + 1
|
||||
table.insert(formspec, "button_exit[0.5," .. h .. ";53.8,0.9;button_start_edit_mode;]")
|
||||
@ -2606,9 +2602,7 @@ minetest.register_on_player_receive_fields(
|
||||
-- the player is trying to save the initial configuration
|
||||
if(fields.save_initial_config) then
|
||||
-- is the player allowed to initialize this npc?
|
||||
if(not(yl_speak_up.npc_owner[ n_id ] == pname
|
||||
and minetest.check_player_privs(player, {npc_talk_owner=true}))
|
||||
and not(minetest.check_player_privs(player, {npc_master=true}))) then
|
||||
if(not(yl_speak_up.may_edit_npc(player, n_id))) then
|
||||
return
|
||||
end
|
||||
if(not(fields.n_npc) or string.len(fields.n_npc) < 2) then
|
||||
@ -2693,9 +2687,7 @@ minetest.register_on_player_receive_fields(
|
||||
-- start edit mode (requires npc_talk_owner)
|
||||
if fields.button_start_edit_mode then
|
||||
-- check if this particular NPC is really owned by this player or if the player has global privs
|
||||
if(not(yl_speak_up.npc_owner[ yl_speak_up.speak_to[pname].n_id ] == pname
|
||||
and minetest.check_player_privs(player, {npc_talk_owner=true}))
|
||||
and not(minetest.check_player_privs(player, {npc_master=true}))) then
|
||||
if(not(yl_speak_up.may_edit_npc(player, n_id))) then
|
||||
minetest.chat_send_player(pname, "Sorry. You do not have the npc_talk_owner or npc_master priv.")
|
||||
return
|
||||
end
|
||||
@ -3424,6 +3416,7 @@ function yl_speak_up.fashion(player, obj)
|
||||
end
|
||||
|
||||
|
||||
|
||||
yl_speak_up.update_nametag = function(self)
|
||||
if self.yl_speak_up.npc_name then
|
||||
-- the nametag is normal (green)
|
||||
@ -3473,3 +3466,15 @@ yl_speak_up.set_muted = function(p_name, obj, set_muted)
|
||||
" on command of "..p_name)
|
||||
end
|
||||
end
|
||||
|
||||
-- has the player the right privs?
|
||||
yl_speak_up.may_edit_npc = function(player, n_id)
|
||||
if(not(player)) then
|
||||
return false
|
||||
end
|
||||
local pname = player:get_player_name()
|
||||
-- is the player allowed to edit this npc?
|
||||
return (yl_speak_up.npc_owner[ n_id ] == pname
|
||||
and minetest.check_player_privs(player, {npc_talk_owner=true})
|
||||
or minetest.check_player_privs(player, {npc_master=true}))
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user