mirror of
https://gitea.your-land.de/Sokomine/yl_speak_up.git
synced 2025-06-19 13:48:02 +02:00
did preparations for making blocks talk
This commit is contained in:
parent
3dfae53782
commit
2ade21640e
@ -96,7 +96,10 @@ yl_speak_up.set_npc_property = function(pname, property_name, property_value, re
|
||||
end
|
||||
end
|
||||
-- store it
|
||||
property_data.entity.yl_speak_up.properties[property_name] = property_value
|
||||
if(entity) then
|
||||
property_data.entity.yl_speak_up.properties[property_name] = property_value
|
||||
end
|
||||
-- TODO: handle non-npc (blocks etc)
|
||||
return "OK"
|
||||
end
|
||||
|
||||
@ -152,6 +155,9 @@ yl_speak_up.get_fs_properties = function(pname, selected)
|
||||
return
|
||||
end
|
||||
local s = ""
|
||||
if(not(property_data.prop_names)) then
|
||||
property_data.prop_names = {}
|
||||
end
|
||||
local anz_prop = #property_data.prop_names
|
||||
for i, k in ipairs(property_data.prop_names) do
|
||||
local v = property_data.properties[k]
|
||||
|
@ -384,8 +384,22 @@ function yl_speak_up.talk(self, clicker)
|
||||
return
|
||||
end
|
||||
|
||||
local id_prefix = "n"
|
||||
-- we are not dealing with an NPC but with a position/block on the map
|
||||
if(self.is_block) then
|
||||
id_prefix = "p"
|
||||
self.yl_speak_up = {
|
||||
talk = true,
|
||||
id = minetest.pos_to_string(self.pos, 0),
|
||||
textures = {},
|
||||
owner = "TODO_owner_name", -- TODO
|
||||
npc_name = "TODO_npc_name", -- TODO
|
||||
object = nil, -- blocks don't have an object
|
||||
}
|
||||
-- TODO: remember somewhere that this block is relevant
|
||||
|
||||
-- initialize the mob if necessary; this happens at the time of first talk, not at spawn time!
|
||||
if(not(self.yl_speak_up) or not(self.yl_speak_up.id)) then
|
||||
elseif(not(self.yl_speak_up) or not(self.yl_speak_up.id)) then
|
||||
local m_id = yl_speak_up.number_of_npcs + 1
|
||||
yl_speak_up.number_of_npcs = m_id
|
||||
yl_speak_up.modstorage:set_int("amount", m_id)
|
||||
@ -398,11 +412,11 @@ function yl_speak_up.talk(self, clicker)
|
||||
end
|
||||
|
||||
-- create a detached inventory for the npc and load its inventory
|
||||
yl_speak_up.load_npc_inventory("n_"..tostring(self.yl_speak_up.id))
|
||||
yl_speak_up.load_npc_inventory(id_prefix.."_"..tostring(self.yl_speak_up.id))
|
||||
|
||||
|
||||
local npc_id = self.yl_speak_up.id
|
||||
local n_id = "n_" .. npc_id
|
||||
local n_id = id_prefix.."_" .. npc_id
|
||||
|
||||
-- remember whom the npc belongs to (as long as we still have self.owner available for easy access)
|
||||
yl_speak_up.npc_owner[ n_id ] = self.owner
|
||||
@ -410,12 +424,16 @@ function yl_speak_up.talk(self, clicker)
|
||||
local pname = clicker:get_player_name()
|
||||
if not self.yl_speak_up or not self.yl_speak_up.talk or self.yl_speak_up.talk~=true then
|
||||
|
||||
local was = "This NPC"
|
||||
if(id_prefix ~= "n") then
|
||||
was = "This block"
|
||||
end
|
||||
-- show a formspec to other players that this NPC is busy
|
||||
if(not(yl_speak_up.may_edit_npc(clicker, n_id))) then
|
||||
-- show a formspec so that the player knows that he may come back later
|
||||
yl_speak_up.show_fs(player, "msg", {input_to = "yl_spaek_up:ignore", formspec =
|
||||
"size[6,2]"..
|
||||
"label[1.2,0.0;"..minetest.formspec_escape((self.yl_speak_up.npc_name or "This NPC")..
|
||||
"label[1.2,0.0;"..minetest.formspec_escape((self.yl_speak_up.npc_name or was)..
|
||||
" [muted]").."]"..
|
||||
"label[0.2,0.5;Sorry! I'm currently busy learning new things.]"..
|
||||
"label[0.2,1.0;Please come back later.]"..
|
||||
@ -423,7 +441,7 @@ function yl_speak_up.talk(self, clicker)
|
||||
return
|
||||
end
|
||||
-- allow the owner to edit (and subsequently unmute) the npc
|
||||
minetest.chat_send_player(pname, "This NPC is muted. It will only talk to you.")
|
||||
minetest.chat_send_player(pname, was.." is muted. It will only talk to you.")
|
||||
end
|
||||
|
||||
yl_speak_up.speak_to[pname] = {}
|
||||
|
Loading…
Reference in New Issue
Block a user