added yl_speak_up.update_nametag and yl_speak_up.set_muted for colored nametags depending on muted state

This commit is contained in:
Sokomine 2021-05-10 14:34:47 +02:00
parent 4e16cc760a
commit 0c7f4a4db9
2 changed files with 56 additions and 22 deletions

View File

@ -1916,7 +1916,7 @@ minetest.register_on_player_receive_fields(
local i_text = dialog.n_npc .. "\n" .. dialog.n_description .. "\n" .. yl_speak_up.infotext
obj:set_properties({infotext = i_text})
obj:set_nametag_attributes({color="#00ff00", text=dialog.n_npc})
yl_speak_up.update_nametag(ent)
end
end
@ -2641,7 +2641,7 @@ minetest.register_on_player_receive_fields(
ent.owner = dialog.npc_owner
local i_text = dialog.n_npc .. "\n" .. dialog.n_description .. "\n" .. yl_speak_up.infotext
obj:set_properties({infotext = i_text})
obj:set_nametag_attributes({color="#00ff00", text=dialog.n_npc})
yl_speak_up.update_nametag(ent)
end
end
@ -3063,10 +3063,7 @@ function yl_speak_up.after_activate(self, staticdata, def, dtime)
self.object:set_properties({infotext = i_text})
end
if self.yl_speak_up.npc_name then
self.object:set_nametag_attributes({color="#00ff00", text=self.yl_speak_up.npc_name})
end
yl_speak_up.update_nametag(self)
end
function yl_speak_up.talk(self, clicker)
@ -3398,3 +3395,54 @@ function yl_speak_up.fashion(player, obj)
minetest.show_formspec(pname, "yl_speak_up:fashion", get_fs_fashion(pname))
end
yl_speak_up.update_nametag = function(self)
if self.yl_speak_up.npc_name then
-- the nametag is normal (green)
if(self.yl_speak_up.talk) then
self.object:set_nametag_attributes({color="#00ff00", text=self.yl_speak_up.npc_name})
-- the nametag has the addition "[muted]" and is magenta when muted
else
self.object:set_nametag_attributes({color="#ff00ff", text=self.yl_speak_up.npc_name.." [muted]"})
end
end
end
-- mute the npc; either via the appropriate staff or via talking to him
yl_speak_up.set_muted = function(p_name, obj, set_muted)
if(not(obj)) then
return
end
local luaentity = obj:get_luaentity()
if(not(luaentity)) then
return
end
local npc = luaentity.yl_speak_up.id
npc_name = luaentity.yl_speak_up.npc_name
-- fallback
if(not(npc_name)) then
npc_name = npc
end
if(set_muted and luaentity.yl_speak_up.talk) then
-- the npc is willing to talk
luaentity.yl_speak_up.talk = false
yl_speak_up.update_nametag(luaentity)
minetest.chat_send_player(p_name,"NPC with ID "..npc.." will shut up at pos "..
minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
minetest.log("action","[MOD] yl_speak_up: NPC with ID n_"..npc..
" will shut up at pos "..minetest.pos_to_string(obj:get_pos(),0)..
" on command of "..p_name)
elseif(not(set_muted) and not(luaentity.yl_speak_up.talk)) then
-- mute the npc
luaentity.yl_speak_up.talk = true
yl_speak_up.update_nametag(luaentity)
minetest.chat_send_player(p_name,"NPC with ID "..npc.." will resume speech at pos "..
minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
minetest.log("action","[MOD] yl_speak_up: NPC with ID n_"..npc..
" will resume speech at pos "..minetest.pos_to_string(obj:get_pos(),0)..
" on command of "..p_name)
end
end

View File

@ -53,15 +53,8 @@ minetest.register_tool("yl_speak_up:staff_of_shut_up", {
end
local p_name = user:get_player_name()
local luaentity = obj:get_luaentity()
local npc = luaentity.yl_speak_up.id
luaentity.yl_speak_up.talk = false
yl_speak_up.set_muted(p_name, obj, true)
minetest.chat_send_player(p_name,"NPC with ID "..npc.." will shut up at pos "..
minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
minetest.log("action","[MOD] yl_speak_up: NPC with ID n_"..npc..
" will shut up at pos "..minetest.pos_to_string(obj:get_pos(),0)..
" on command of "..p_name)
return itemstack
end
})
@ -77,15 +70,8 @@ minetest.register_tool("yl_speak_up:staff_of_dawai_dawai", {
end
local p_name = user:get_player_name()
local luaentity = obj:get_luaentity()
local npc = luaentity.yl_speak_up.id
luaentity.yl_speak_up.talk = true
yl_speak_up.set_muted(p_name, obj, false)
minetest.chat_send_player(p_name,"NPC with ID "..npc.." will resume speech at pos "..
minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
minetest.log("action","[MOD] yl_speak_up: NPC with ID n_"..npc..
" will resume speech at pos "..minetest.pos_to_string(obj:get_pos(),0)..
" on command of "..p_name)
return itemstack
end
})