minetest_kiosk/config.lua

116 lines
3.0 KiB
Lua

kiosk.sell_factor=tonumber(minetest.settings:get("kiosk.sell_factor")) or 0.95
kiosk.prefix=minetest.settings:get("kiosk.prefix") or "kiosk"
kiosk.account=minetest.settings:get("kiosk.account") or "kiosk_balance"
kiosk.map_partition=128
kiosk.map_chunks=math.floor(30926/kiosk.map_partition)
kiosk.player={}
kiosk.inventar={}
for i,mg in ipairs({"currency:minegeld","currency:minegeld_5","currency:minegeld_10","currency:minegeld_50"}) do
local value=tonumber(mg:split("_")[2])
if value == nil then value = 1 end
if minetest.registered_items[mg] ~= nil then
kiosk.add_inventar(mg,value,value,0,1)
end
end
local has_value = basic_functions.has_value
local price_cols={
col_num={"buy_value","sell_value"},}
local price_def = basic_functions.import_csv(kiosk.path.."/initial_prices.txt",price_cols)
local int_pri={}
for i,v in pairs(price_def) do
v.groups=nil
kiosk.add_inv(i,v)
end
-- build tree of nodes
for i,v in pairs(minetest.registered_nodes) do
local node_price=0
-- first guess of value by dig mode
if v.groups then
for j,w in pairs({[10]="cracky",[8]="choppy",[6]="snappy",[4]="crumbly",[2]="fleshy"}) do
if v.groups[w] then
node_price=math.max(node_price,j,v.groups[w])
end
end
end
if v.drop and node_price > 0 then
if type(v.drop)=="string" and v.drop ~= "" then
local dn=v.drop:split(" ")[1]
local dcount=v.drop:split(" ")[2]
if dcount==nil then dcount=1 end
if not kiosk.is_inventar(dn) then
kiosk.add_inv(dn,{buy_value=node_price/(dcount*10)})
end
kiosk.is_drop_item(dn)
elseif type(v.drop)=="table" then
if v.drop.items then
for j,w in pairs(v.drop.items) do
local dn=w.items[1]:split(" ")[1]
local dcount=w.items[1]:split(" ")[2]
if dcount==nil then dcount=1 end
if w.rarity then
dcount=dcount/w.rarity
end
if not kiosk.is_inventar(dn) then
kiosk.add_inv(dn,{buy_value=node_price/(dcount*10)})
end
if w.rarity then
if w.rarity == 1 then
kiosk.is_drop_item(dn)
end
else
kiosk.is_drop_item(dn)
end
end
end
end
end
end
for i,v in pairs(minetest.registered_items) do
if not kiosk.is_inventar(i) then
kiosk.add_inv(i,{})
end
local recipes=minetest.get_all_craft_recipes(i)
if recipes ~= nil then
for j,w in pairs(recipes) do
for k,x in pairs(w.items) do
kiosk.register_craft_relation(x,i)
end
end
end
end
for i,v in pairs(kiosk.inventar) do
if v.source ~= nil and v.dest ~= nil and v.is_drop ~= nil then
local ts=table.copy(v.source)
local ns={}
for j,w in ipairs(ts) do
if not has_value(v.dest,w) then
table.insert(ns,w)
end
end
v.source=ns
if #ns == 0 then
print(dump2(v))
end
end
end
local end_dest={}
for i,v in pairs(kiosk.inventar) do
if v.dest==nil and v.source ~= nil then
table.insert(end_dest,i)
end
end
--print(dump2(end_dest))
-- initialise map_extend with values, which are corrected in first run
kiosk.map_extend={emin={x=31000,y=31000,z=31000},emax={x=(-31000),y=(-31000),z=(-31000)},volume=0}