init repo
This commit is contained in:
commit
692f547daf
26 changed files with 1098 additions and 0 deletions
121
node.lua
Normal file
121
node.lua
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
--- Server Shops Nodes
|
||||
--
|
||||
-- @topic nodes
|
||||
|
||||
local ss = server_shop
|
||||
local S = core.get_translator(ss.modname)
|
||||
|
||||
-- #################################################################
|
||||
-- ## GEMEINSAME FUNKTIONEN
|
||||
-- #################################################################
|
||||
|
||||
local function after_place_node(pos, placer, itemstack)
|
||||
local meta = core.get_meta(pos)
|
||||
if itemstack:get_name() == "server_shop:shop_large" then
|
||||
meta:get_inventory():set_size("main", 20)
|
||||
else
|
||||
meta:get_inventory():set_size("main", 10)
|
||||
end
|
||||
meta:set_string("owner", placer:get_player_name())
|
||||
meta:set_string("prices", core.serialize({}))
|
||||
meta:set_int("cash_reserve", 0)
|
||||
meta:set_string("name", S("@1's Shop", placer:get_player_name()))
|
||||
ss.update_infotext(pos)
|
||||
end
|
||||
|
||||
local function on_rightclick(pos, node, player, itemstack, pointed_thing)
|
||||
if core.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == ss.modname..":shop_large_bottom" then
|
||||
pos.y = pos.y - 1
|
||||
end
|
||||
|
||||
local pmeta = player:get_meta()
|
||||
pmeta:set_string(ss.modname .. ":pos", core.serialize(pos))
|
||||
|
||||
if not (ss.is_shop_owner(pos, player) or ss.is_shop_admin(player)) then
|
||||
pmeta:set_int(ss.modname..":session_credit", 0)
|
||||
end
|
||||
|
||||
ss.show_formspec(pos, player)
|
||||
end
|
||||
|
||||
local function can_dig(pos, player)
|
||||
local owner_pos = {x=pos.x, y=pos.y, z=pos.z}
|
||||
if core.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == ss.modname..":shop_large_bottom" then
|
||||
owner_pos.y = pos.y - 1
|
||||
end
|
||||
return ss.is_shop_owner(owner_pos, player) or ss.is_shop_admin(player)
|
||||
end
|
||||
|
||||
|
||||
-- #################################################################
|
||||
-- ## SHOP-DEFINITIONEN
|
||||
-- #################################################################
|
||||
|
||||
-- Kleiner Shop (1 Block)
|
||||
core.register_node(ss.modname..":shop_small", {
|
||||
description = S("Shop"),
|
||||
paramtype2 = "facedir",
|
||||
groups = {choppy=1, oddly_breakable_by_hand=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
tiles = {
|
||||
"server_shop_side.png", "server_shop_side.png", "server_shop_side.png",
|
||||
"server_shop_side.png", "server_shop_side.png", "server_shop_front.png",
|
||||
},
|
||||
after_place_node = after_place_node,
|
||||
on_rightclick = on_rightclick,
|
||||
can_dig = can_dig,
|
||||
})
|
||||
|
||||
-- Großer Shop, unterer Teil (enthält alle Daten)
|
||||
core.register_node(ss.modname..":shop_large_bottom", {
|
||||
description = S("Großer Shop"),
|
||||
paramtype2 = "facedir",
|
||||
drop = ss.modname..":shop_large_bottom",
|
||||
groups = {choppy=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
tiles = {
|
||||
"server_shop_side.png", "server_shop_side.png", "server_shop_side.png",
|
||||
"server_shop_side.png", "server_shop_side.png", "server_shop_front_large_bottom.png",
|
||||
},
|
||||
after_place_node = function(pos, placer)
|
||||
local meta = core.get_meta(pos)
|
||||
meta:get_inventory():set_size("main", 20)
|
||||
meta:set_string("owner", placer:get_player_name())
|
||||
meta:set_string("prices", core.serialize({}))
|
||||
meta:set_int("cash_reserve", 0)
|
||||
meta:set_string("name", S("@1's Großer Shop", placer:get_player_name()))
|
||||
ss.update_infotext(pos)
|
||||
|
||||
local above = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
core.set_node(above, {name=ss.modname..":shop_large_top", param2=core.get_node(pos).param2})
|
||||
end,
|
||||
on_destruct = function(pos)
|
||||
local above = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
if core.get_node(above).name == ss.modname..":shop_large_top" then
|
||||
core.set_node(above, {name="air"})
|
||||
end
|
||||
end,
|
||||
on_rightclick = on_rightclick,
|
||||
can_dig = can_dig,
|
||||
})
|
||||
|
||||
-- Großer Shop, oberer Teil
|
||||
core.register_node(ss.modname..":shop_large_top", {
|
||||
description = S("Großer Shop"),
|
||||
paramtype2 = "facedir",
|
||||
diggable = false,
|
||||
drop = "",
|
||||
groups = {not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
tiles = {
|
||||
"server_shop_side.png", "server_shop_side.png", "server_shop_side.png",
|
||||
"server_shop_side.png", "server_shop_side.png", "server_shop_front_large_top.png",
|
||||
},
|
||||
-- KORREKTUR: on_destruct-Funktion hier komplett entfernt, um die Schleife zu verhindern.
|
||||
on_rightclick = on_rightclick,
|
||||
})
|
||||
|
||||
|
||||
-- Alias für den give-Befehl
|
||||
core.register_alias(ss.modname..":shop", ss.modname..":shop_small")
|
||||
core.register_alias(ss.modname..":shop_large", ss.modname..":shop_large_bottom")
|
||||
Loading…
Add table
Add a link
Reference in a new issue