forked from Mirrorlandia_minetest/emeraldbank
features
on take item remove shop_item on punch call get_stonks() can_dig defined fix owner in get_stonks()
This commit is contained in:
parent
180dbbbf34
commit
bfe60227d4
41
shop.lua
41
shop.lua
@ -77,13 +77,22 @@ local function set_item(pos, listname, index, stack, player)
|
||||
core.show_formspec(player:get_player_name(), formspec_prefix..core.pos_to_string(pos), emeraldbank.get_shop_fs(pos, player) )
|
||||
end
|
||||
|
||||
local function get_stonks(pos, clicker)
|
||||
local name = clicker:get_player_name()
|
||||
local owner = clicker:get_player_name()
|
||||
local function check_empty(pos, listname, index, stack, player)
|
||||
local meta = core.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if inv:is_empty("stock") then
|
||||
meta:set_string("shop_item", "")
|
||||
end
|
||||
core.show_formspec(player:get_player_name(), formspec_prefix..core.pos_to_string(pos), emeraldbank.get_shop_fs(pos, player) )
|
||||
end
|
||||
|
||||
local function get_stonks(pos, player)
|
||||
local name = player:get_player_name()
|
||||
local meta = core.get_meta(pos)
|
||||
local owner = meta:get_string("owner")
|
||||
local stonks = meta:get_int("stonks")
|
||||
if name == owner and stonks > 0 then
|
||||
emeraldbank.add_emeralds(clicker, stonks)
|
||||
emeraldbank.add_emeralds(player, stonks)
|
||||
meta:set_int("stonks", 0)
|
||||
core.chat_send_player(name, S("You've earned @1 Emeralds with this shop.", stonks) )
|
||||
end
|
||||
@ -119,24 +128,24 @@ core.register_node("emeraldbank:shop", {
|
||||
get_stonks(pos, clicker)
|
||||
core.show_formspec(clicker:get_player_name(), formspec_prefix..core.pos_to_string(pos), emeraldbank.get_shop_fs(pos, clicker) )
|
||||
end,
|
||||
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
get_stonks(pos, puncher)
|
||||
end,
|
||||
|
||||
on_metadata_inventory_put = set_item,
|
||||
-- on_metadata_inventory_take = set_item,
|
||||
|
||||
on_metadata_inventory_take = check_empty,
|
||||
|
||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||
can_dig = function(pos, player)
|
||||
local name = player:get_player_name()
|
||||
local meta = core.get_meta(pos)
|
||||
local meta2 = meta
|
||||
meta:from_table(oldmetadata)
|
||||
local owner = meta:get_string("owner")
|
||||
local inv = meta:get_inventory()
|
||||
for _, listname in ipairs({"stock"}) do
|
||||
local stack = inv:get_stack(listname, 1)
|
||||
if not stack:is_empty() then
|
||||
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
|
||||
core.add_item(p, stack)
|
||||
end
|
||||
if inv:is_empty("stock") and name == owner then
|
||||
return true
|
||||
end
|
||||
meta:from_table(meta2:to_table())
|
||||
end,
|
||||
end
|
||||
|
||||
})
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user