Locked chest: Add cracked status in infotext
This commit is contained in:
parent
7a1d980f11
commit
3dd86a6f18
@ -37,16 +37,10 @@ function locks.is_locked(meta, player)
|
|||||||
|
|
||||||
local t = minetest.get_gametime()
|
local t = minetest.get_gametime()
|
||||||
|
|
||||||
local lp = meta:get_float("last_lock_pick")
|
local cracked = meta:get_int("lock_cracked")
|
||||||
|
|
||||||
if lp == -1 or lp == nil then
|
if cracked == 1 then
|
||||||
lp = -1
|
|
||||||
end
|
|
||||||
|
|
||||||
if lp > t then
|
|
||||||
return false
|
return false
|
||||||
else
|
|
||||||
meta:set_float("last_lock_pick", -1)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return true
|
return true
|
||||||
@ -77,12 +71,21 @@ minetest.register_tool(
|
|||||||
if math.random(1, 5) <= 1 then
|
if math.random(1, 5) <= 1 then
|
||||||
-- Success!
|
-- Success!
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_float("last_lock_pick", minetest.get_gametime() + picked_time)
|
meta:set_int("lock_cracked", 1)
|
||||||
|
local timer = minetest.get_node_timer(pos)
|
||||||
|
-- Unlock node for a limited time
|
||||||
|
timer:start(picked_time)
|
||||||
|
|
||||||
|
local owner = meta:get_string("lock_owner")
|
||||||
|
if owner == "" then
|
||||||
|
meta:set_string("infotext", S("Locked Chest (cracked open)"))
|
||||||
|
else
|
||||||
|
meta:set_string("infotext", S("Locked Chest (cracked open) (Owned by @1)", owner))
|
||||||
|
end
|
||||||
|
|
||||||
-- TODO: Add graphical effect to show success
|
-- TODO: Add graphical effect to show success
|
||||||
|
|
||||||
local burglar = player:get_player_name()
|
local burglar = player:get_player_name()
|
||||||
local owner = meta:get_string("lock_owner")
|
|
||||||
if owner then
|
if owner then
|
||||||
if owner ~= burglar then
|
if owner ~= burglar then
|
||||||
minetest.chat_send_player(
|
minetest.chat_send_player(
|
||||||
@ -142,7 +145,7 @@ minetest.register_node(
|
|||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_wood_defaults(),
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_float("last_lock_pick", -1)
|
meta:set_int("lock_cracked", 0)
|
||||||
meta:set_string("infotext", S("Locked Chest"))
|
meta:set_string("infotext", S("Locked Chest"))
|
||||||
|
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
@ -159,11 +162,6 @@ minetest.register_node(
|
|||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
|
|
||||||
if not locks.is_locked(meta, player) then
|
if not locks.is_locked(meta, player) then
|
||||||
if locks.is_owner(meta, player) then
|
|
||||||
-- also unlock when owner opens for "sharing" locked stuff
|
|
||||||
meta:set_float("last_lock_pick", minetest.get_gametime() + 5)
|
|
||||||
end
|
|
||||||
|
|
||||||
local np = pos.x .. "," .. pos.y .. "," .. pos.z
|
local np = pos.x .. "," .. pos.y .. "," .. pos.z
|
||||||
local form = default.ui.get_page("default:2part")
|
local form = default.ui.get_page("default:2part")
|
||||||
form = form .. "list[nodemeta:" .. np .. ";main;0.25,0.25;8,4;]"
|
form = form .. "list[nodemeta:" .. np .. ";main;0.25,0.25;8,4;]"
|
||||||
@ -182,6 +180,16 @@ minetest.register_node(
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
on_timer = function(pos, elapsed)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:set_int("lock_cracked", 0)
|
||||||
|
local owner = meta:get_string("lock_owner")
|
||||||
|
if owner == "" then
|
||||||
|
meta:set_string("infotext", S("Locked Chest"))
|
||||||
|
else
|
||||||
|
meta:set_string("infotext", S("Locked Chest (Owned by @1)", owner))
|
||||||
|
end
|
||||||
|
end,
|
||||||
allow_metadata_inventory_move = function(pos, from_l, from_i, to_l, to_i, cnt, player)
|
allow_metadata_inventory_move = function(pos, from_l, from_i, to_l, to_i, cnt, player)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
if locks.is_locked(meta, player) then
|
if locks.is_locked(meta, player) then
|
||||||
|
@ -6,6 +6,8 @@ You have broken into your own locked chest!=Sie haben Ihre eigene abgeschlossene
|
|||||||
Lock=Schloss
|
Lock=Schloss
|
||||||
Locked Chest=Abgeschlossene Truhe
|
Locked Chest=Abgeschlossene Truhe
|
||||||
Locked Chest (Owned by @1)=Abgeschlossene Truhe (Eigentümer: @1)
|
Locked Chest (Owned by @1)=Abgeschlossene Truhe (Eigentümer: @1)
|
||||||
|
Locked Chest (cracked open)=Abgeschlossene Truhe (geknackt)
|
||||||
|
Locked Chest (cracked open) (Owned by @1)=Abgeschlossene Truhe (geknackt) (Eigentümer: @1)
|
||||||
@1 (Owned by @2)=@1 (Eigentümer: @2)
|
@1 (Owned by @2)=@1 (Eigentümer: @2)
|
||||||
Locksmith=Schlossmacher
|
Locksmith=Schlossmacher
|
||||||
Craft a lock.=Fertigen Sie ein Schloss.
|
Craft a lock.=Fertigen Sie ein Schloss.
|
||||||
|
@ -6,6 +6,8 @@ You have broken into your own locked chest!=
|
|||||||
Lock=
|
Lock=
|
||||||
Locked Chest=
|
Locked Chest=
|
||||||
Locked Chest (Owned by @1)=
|
Locked Chest (Owned by @1)=
|
||||||
|
Locked Chest (cracked open)=
|
||||||
|
Locked Chest (cracked open) (Owned by @1)=
|
||||||
@1 (Owned by @2)=
|
@1 (Owned by @2)=
|
||||||
Locksmith=
|
Locksmith=
|
||||||
Craft a lock.=
|
Craft a lock.=
|
||||||
|
Loading…
x
Reference in New Issue
Block a user