Move LBM to easyvend.lua; fix maxcost
parent
3552b2f33b
commit
09f3511f50
76
easyvend.lua
76
easyvend.lua
|
@ -1026,3 +1026,79 @@ minetest.register_abm({
|
|||
easyvend.machine_check(pos, node)
|
||||
end
|
||||
})
|
||||
|
||||
-- Legacy support for vendor mod:
|
||||
-- Transform the world and items to use the easyvend nodes/items
|
||||
|
||||
-- For safety reasons, vendor mod must be disabled before legacy mode goes on
|
||||
if minetest.get_modpath("vendor") == nil then
|
||||
-- Replace vendor nodes
|
||||
minetest.register_lbm({
|
||||
name = "easyvend:replace_vendor",
|
||||
nodenames = { "vendor:vendor", "vendor:depositor" },
|
||||
run_at_every_load = true,
|
||||
action = function(pos, node)
|
||||
local newnodename
|
||||
if node.name == "vendor:vendor" then
|
||||
newnodename = "easyvend:vendor"
|
||||
elseif node.name == "vendor:depositor" then
|
||||
newnodename = "easyvend:depositor"
|
||||
end
|
||||
minetest.swap_node(pos, { name = newnodename, param2 = node.param2 })
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("status", "Initializing …")
|
||||
meta:set_string("message", "Upgrade successful.")
|
||||
meta:set_int("stock", -1)
|
||||
meta:set_int("joketimer", -1)
|
||||
meta:set_int("joke_id", 1)
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("item", 1)
|
||||
inv:set_size("gold", 1)
|
||||
inv:set_stack("gold", 1, easyvend.currency)
|
||||
|
||||
local itemname = meta:get_string("itemname")
|
||||
local configmode = 1
|
||||
if itemname == "" or itemname == nil then
|
||||
-- If no itemname set, try to scan first item in chest below
|
||||
local chest = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
|
||||
if chest.name == "default:chest_locked" then
|
||||
local chest_meta = minetest.get_meta({x=pos.x,y=pos.y-1,z=pos.z})
|
||||
local chest_inv = chest_meta:get_inventory()
|
||||
if ( chest_meta:get_string("owner") == machine_owner and chest_inv ~= nil ) then
|
||||
end
|
||||
for i=1,chest_inv:get_size("main") do
|
||||
checkstack = chest_inv:get_stack("main", i)
|
||||
if not checkstack:is_empty() then
|
||||
itemname = checkstack:get_name()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if itemname ~= "" and itemname ~= nil then
|
||||
inv:set_stack("item", 1, itemname)
|
||||
meta:set_string("itemname", itemname)
|
||||
end
|
||||
end
|
||||
if itemname ~= "" and itemname ~= nil then
|
||||
local itemstack = inv:get_stack("item", 1)
|
||||
local number_stack_max = itemstack:get_stack_max()
|
||||
local maxnumber = number_stack_max * slots_max
|
||||
local cost = meta:get_int("cost")
|
||||
local number = meta:get_int("number")
|
||||
if number >= 1 and number <= maxnumber and cost >= 1 and cost <= maxcost then
|
||||
configmode = 0
|
||||
end
|
||||
end
|
||||
|
||||
local owner = meta:get_string("owner")
|
||||
if easyvend.buysell(newnodename) == "sell" then
|
||||
meta:set_string("infotext", string.format("Vending machine (owned by %s)", owner))
|
||||
else
|
||||
meta:set_string("infotext", string.format("Depositing machine (owned by %s)", owner))
|
||||
end
|
||||
|
||||
meta:set_int("configmode", configmode)
|
||||
easyvend.machine_check(pos, node)
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
|
76
init.lua
76
init.lua
|
@ -97,82 +97,6 @@ minetest.register_node("easyvend:vendor_on", vendor_on)
|
|||
minetest.register_node("easyvend:depositor", depositor_off)
|
||||
minetest.register_node("easyvend:depositor_on", depositor_on)
|
||||
|
||||
-- Legacy support for vendor mod:
|
||||
-- Transform the world and items to use the easyvend nodes/items
|
||||
|
||||
-- For safety reasons, vendor mod must be disabled before legacy mode goes on
|
||||
if minetest.get_modpath("vendor") == nil then
|
||||
-- Replace vendor nodes
|
||||
minetest.register_lbm({
|
||||
name = "easyvend:replace_vendor",
|
||||
nodenames = { "vendor:vendor", "vendor:depositor" },
|
||||
run_at_every_load = true,
|
||||
action = function(pos, node)
|
||||
local newnodename
|
||||
if node.name == "vendor:vendor" then
|
||||
newnodename = "easyvend:vendor"
|
||||
elseif node.name == "vendor:depositor" then
|
||||
newnodename = "easyvend:depositor"
|
||||
end
|
||||
minetest.swap_node(pos, { name = newnodename, param2 = node.param2 })
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("status", "Initializing …")
|
||||
meta:set_string("message", "Upgrade successful.")
|
||||
meta:set_int("stock", -1)
|
||||
meta:set_int("joketimer", -1)
|
||||
meta:set_int("joke_id", 1)
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("item", 1)
|
||||
inv:set_size("gold", 1)
|
||||
inv:set_stack("gold", 1, easyvend.currency)
|
||||
|
||||
local itemname = meta:get_string("itemname")
|
||||
local configmode = 1
|
||||
if itemname == "" or itemname == nil then
|
||||
-- If no itemname set, try to scan first item in chest below
|
||||
local chest = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
|
||||
if chest.name == "default:chest_locked" then
|
||||
local chest_meta = minetest.get_meta({x=pos.x,y=pos.y-1,z=pos.z})
|
||||
local chest_inv = chest_meta:get_inventory()
|
||||
if ( chest_meta:get_string("owner") == machine_owner and chest_inv ~= nil ) then
|
||||
end
|
||||
for i=1,chest_inv:get_size("main") do
|
||||
checkstack = chest_inv:get_stack("main", i)
|
||||
if not checkstack:is_empty() then
|
||||
itemname = checkstack:get_name()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if itemname ~= "" and itemname ~= nil then
|
||||
inv:set_stack("item", 1, itemname)
|
||||
meta:set_string("itemname", itemname)
|
||||
end
|
||||
end
|
||||
if itemname ~= "" and itemname ~= nil then
|
||||
local itemstack = inv:get_stack("item", 1)
|
||||
local number_stack_max = itemstack:get_stack_max()
|
||||
local cost_stack_max = 99*31 -- FIXME: Get real cost_stack_max!!!
|
||||
local cost = meta:get_int("cost")
|
||||
local number = meta:get_int("number")
|
||||
if number >= 1 and number <= number_stack_max and cost >= 1 and cost <= cost_stack_max then
|
||||
configmode = 0
|
||||
end
|
||||
end
|
||||
|
||||
local owner = meta:get_string("owner")
|
||||
if easyvend.buysell(newnodename) == "sell" then
|
||||
meta:set_string("infotext", string.format("Vending machine (owned by %s)", owner))
|
||||
else
|
||||
meta:set_string("infotext", string.format("Depositing machine (owned by %s)", owner))
|
||||
end
|
||||
|
||||
meta:set_int("configmode", configmode)
|
||||
easyvend.machine_check(pos, node)
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
if minetest.get_modpath("default") ~= nil then
|
||||
minetest.register_craft({
|
||||
output = 'easyvend:vendor',
|
||||
|
|
Loading…
Reference in New Issue