123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- local has_value=basic_functions.has_value
- function kiosk.demangle_for_formspec(str)
- -- copied from unified_inventory
- return string.gsub(str, "_([0-9]+)_", function (v) return string.char(v) end)
- end
- kiosk.add_inv=function(name,def)
- if name == nil then return end
- def.name = name
- if def.buy == nil then
- def.buy=1
- end
- if def.sell == nil then
- def.sell = 1
- end
- if def.sell > def.buy then
- def.sell = kiosk.sell_factor * def.buy
- end
- if def.stock==nil then def.stock=0 end
- if def.dug==nil then def.dug=0 end
- if def.crafted==nil then def.crafted=0 end
-
- if kiosk.inventar[name] ~= nil then kiosk.inventar[name] = nil end
-
- local dn = name:split(":")[1]
- if dn == "group" then
- print(name)
- def.is_group=1
- end
-
- kiosk.inventar[name] = def
-
- end
- kiosk.add_inventar=function(name,buy_value,sell_value,stock,fixed)
- if name == nil then
- return
- end
- if buy_value == nil then
- buy_value=1
- end
- if buy_value == 0 then
- buy_value=1
- end
- if sell_value == nil then
- sell_value=kiosk.sell_factor * buy_value
- end
- if sell_value > buy_value then
- sell_value=kiosk.sell_factor * buy_value
- end
- if stock == nil then
- stock = 0
- end
-
- if kiosk.inventar[name] == nil then
- local kinv = {name = name,
- sell = sell_value,
- buy = buy_value,
- stock=stock,
- dug=0,
- craft=0,
- }
- if fixed ~= nil then kinv.fixed=fixed end
- kiosk.inventar[name] = kinv
- else
- local kiosk_inv=kiosk.inventar[name]
- kiosk_inv.sell=sell_value
- kiosk_inv.buy=buy_value
- if fixed ~= nil then
- kiosk_inv.fixed = fixed
- end
- end
- end
- kiosk.is_drop_item=function(name)
- if kiosk.inventar[name] == nil then
- kiosk.add_inv(name,{})
- end
- kiosk.inventar[name].is_drop = 1
- end
- kiosk.register_craft_relation=function(input,output)
- if kiosk.inventar[input] == nil then
- kiosk.add_inv(input,{})
- end
- if kiosk.inventar[output] == nil then
- kiosk.add_inv(output,{})
- end
- local source=kiosk.inventar[input]
- local dest=kiosk.inventar[output]
- if source.dest == nil then
- source.dest = {output}
- else
- if not has_value(source.dest,output) then
- table.insert(source.dest,output)
- end
- end
- if dest.source == nil then
- dest.source = {input}
- else
- if not has_value(dest.source,input) then
- table.insert(dest.source,input)
- end
- end
- end
- kiosk.is_inventar=function(name)
- return kiosk.inventar[name] ~= nil
- end
- kiosk.get_value=function(name,value)
- if name == nil then return end
- if kiosk.inventar[name] == nil then
- kiosk.add_inventar(name,1,0.9,0)
- end
- local kinv=kiosk.inventar[name]
- local output = 0
- if kinv[value] ~= nil then
- output = kinv[value]
- end
- return output
- end
- kiosk.get_buy=function(name)
- return kiosk.get_value(name,"buy")
- end
- kiosk.get_sell=function(name)
- return kiosk.get_value(name,"sell")
- end
- kiosk.get_stock=function(name)
- return kiosk.get_value(name,"stock")
- end
- kiosk.player_sell=function(player)
- if player == nil then return end
- local playername=player:get_player_name()
- if playername == nil then return end
- if playername == "" then return end
- local player_inv=minetest.get_inventory({type="detached",name=playername.."_sell"})
- if player_inv == nil then return end
- local sell_stack=player_inv:get_stack("main",1)
- if sell_stack == nil then return end
- local sell_item=sell_stack:get_name()
- if sell_item == nil then return end
- if sell_item == "" then return end
- local sell_count = sell_stack:get_count()
- if sell_count < 1 then return end
-
- local price_single = kiosk.get_sell(sell_item)
- local price=price_single * sell_count
- xpfw.player_add_attribute(player,kiosk.account,price)
- local kinv=kiosk.inventar[sell_item]
- kinv.stock=kinv.stock+sell_count
- player_inv:set_stack("main",1,nil)
- xpfw.player_add_attribute(player,"kiosk_sold",sell_count)
- end
|