added yl_speak_up.update_nametag and yl_speak_up.set_muted for colored nametags depending on muted state
This commit is contained in:
parent
4e16cc760a
commit
0c7f4a4db9
@ -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
|
local i_text = dialog.n_npc .. "\n" .. dialog.n_description .. "\n" .. yl_speak_up.infotext
|
||||||
obj:set_properties({infotext = i_text})
|
obj:set_properties({infotext = i_text})
|
||||||
obj:set_nametag_attributes({color="#00ff00", text=dialog.n_npc})
|
yl_speak_up.update_nametag(ent)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2641,7 +2641,7 @@ minetest.register_on_player_receive_fields(
|
|||||||
ent.owner = dialog.npc_owner
|
ent.owner = dialog.npc_owner
|
||||||
local i_text = dialog.n_npc .. "\n" .. dialog.n_description .. "\n" .. yl_speak_up.infotext
|
local i_text = dialog.n_npc .. "\n" .. dialog.n_description .. "\n" .. yl_speak_up.infotext
|
||||||
obj:set_properties({infotext = i_text})
|
obj:set_properties({infotext = i_text})
|
||||||
obj:set_nametag_attributes({color="#00ff00", text=dialog.n_npc})
|
yl_speak_up.update_nametag(ent)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -3063,10 +3063,7 @@ function yl_speak_up.after_activate(self, staticdata, def, dtime)
|
|||||||
self.object:set_properties({infotext = i_text})
|
self.object:set_properties({infotext = i_text})
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.yl_speak_up.npc_name then
|
yl_speak_up.update_nametag(self)
|
||||||
self.object:set_nametag_attributes({color="#00ff00", text=self.yl_speak_up.npc_name})
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function yl_speak_up.talk(self, clicker)
|
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))
|
minetest.show_formspec(pname, "yl_speak_up:fashion", get_fs_fashion(pname))
|
||||||
end
|
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
|
||||||
|
18
tools.lua
18
tools.lua
@ -53,15 +53,8 @@ minetest.register_tool("yl_speak_up:staff_of_shut_up", {
|
|||||||
end
|
end
|
||||||
|
|
||||||
local p_name = user:get_player_name()
|
local p_name = user:get_player_name()
|
||||||
local luaentity = obj:get_luaentity()
|
yl_speak_up.set_muted(p_name, obj, true)
|
||||||
local npc = luaentity.yl_speak_up.id
|
|
||||||
luaentity.yl_speak_up.talk = false
|
|
||||||
|
|
||||||
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
|
return itemstack
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
@ -77,15 +70,8 @@ minetest.register_tool("yl_speak_up:staff_of_dawai_dawai", {
|
|||||||
end
|
end
|
||||||
|
|
||||||
local p_name = user:get_player_name()
|
local p_name = user:get_player_name()
|
||||||
local luaentity = obj:get_luaentity()
|
yl_speak_up.set_muted(p_name, obj, false)
|
||||||
local npc = luaentity.yl_speak_up.id
|
|
||||||
luaentity.yl_speak_up.talk = true
|
|
||||||
|
|
||||||
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
|
return itemstack
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user