init repo
This commit is contained in:
commit
692f547daf
26 changed files with 1098 additions and 0 deletions
80
deposit.lua
Normal file
80
deposit.lua
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
--- Server Shops Deposit Logics
|
||||
--
|
||||
-- @topic deposit.lua
|
||||
|
||||
local ss = server_shop
|
||||
local transaction = dofile(ss.modpath .. "/transaction.lua")
|
||||
|
||||
-- Einzahl-Slot für die Kassenreserve des Besitzers (unverändert)
|
||||
core.create_detached_inventory(ss.modname .. ":cash_deposit", {
|
||||
on_put = function(inv, listname, index, stack, player)
|
||||
local pmeta = player:get_meta()
|
||||
local pos = core.deserialize(pmeta:get_string(ss.modname .. ":pos"))
|
||||
if not pos then return stack:get_count() end
|
||||
|
||||
if ss.is_shop_owner(pos, player) or ss.is_shop_admin(player) then
|
||||
local value = transaction.calculate_currency_value(stack)
|
||||
if value > 0 then
|
||||
local shop_meta = core.get_meta(pos)
|
||||
shop_meta:set_int("cash_reserve", shop_meta:get_int("cash_reserve") + value)
|
||||
inv:set_stack(listname, index, nil)
|
||||
ss.show_formspec(pos, player)
|
||||
return 0
|
||||
end
|
||||
end
|
||||
return stack:get_count()
|
||||
end,
|
||||
}):set_size("main", 1)
|
||||
|
||||
|
||||
-- Einzahl-Slot für das Guthaben des Kunden (angepasst)
|
||||
core.create_detached_inventory(ss.modname .. ":customer_deposit", {
|
||||
on_put = function(inv, listname, index, stack, player)
|
||||
local pmeta = player:get_meta()
|
||||
local pos = core.deserialize(pmeta:get_string(ss.modname .. ":pos"))
|
||||
local stack_name = stack:get_name()
|
||||
|
||||
if stack_name == "bank_accounts:debit_card" or stack_name == "bank_accounts:credit_card" then
|
||||
local current_credit = pmeta:get_int(ss.modname .. ":session_credit") or 0
|
||||
if current_credit > 0 then
|
||||
local refund_stacks, remainder = transaction.calculate_refund(current_credit)
|
||||
for _, r_stack in ipairs(refund_stacks) do
|
||||
transaction.give_product(player, r_stack)
|
||||
end
|
||||
end
|
||||
|
||||
pmeta:set_string(ss.modname..":payment_method", stack_name)
|
||||
pmeta:set_int(ss.modname..":session_credit", 0)
|
||||
if pos then
|
||||
ss.show_formspec(pos, player)
|
||||
end
|
||||
return stack:get_count()
|
||||
end
|
||||
|
||||
local value = transaction.calculate_currency_value(stack)
|
||||
if value > 0 then
|
||||
pmeta:set_string(ss.modname..":payment_method", "cash")
|
||||
pmeta:set_int(ss.modname .. ":session_credit", (pmeta:get_int(ss.modname .. ":session_credit") or 0) + value)
|
||||
inv:set_stack(listname, index, nil)
|
||||
|
||||
if pos then
|
||||
ss.show_formspec(pos, player)
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
return stack:get_count()
|
||||
end,
|
||||
on_take = function(inv, listname, index, stack, player)
|
||||
local pmeta = player:get_meta()
|
||||
local pos = core.deserialize(pmeta:get_string(ss.modname .. ":pos"))
|
||||
|
||||
if stack:get_name() == "bank_accounts:debit_card" or stack:get_name() == "bank_accounts:credit_card" then
|
||||
pmeta:set_string(ss.modname..":payment_method", nil)
|
||||
if pos then
|
||||
ss.show_formspec(pos, player)
|
||||
end
|
||||
end
|
||||
return stack
|
||||
end,
|
||||
}):set_size("main", 1)
|
||||
Loading…
Add table
Add a link
Reference in a new issue