mirror of
https://gitlab.com/lunovox/minertrade.git
synced 2025-03-15 05:31:20 +00:00
fazendo o formspec
This commit is contained in:
parent
accedeb3aa
commit
2ddff423e2
9 changed files with 627 additions and 161 deletions
61
api.lua
61
api.lua
|
@ -1,11 +1,11 @@
|
||||||
--FONTE: https://forum.minetest.net/viewtopic.php?pid=48124
|
--FONTE: https://forum.minetest.net/viewtopic.php?pid=48124
|
||||||
|
|
||||||
|
--[[
|
||||||
minetest.register_privilege("checkchest", {
|
minetest.register_privilege("checkchest", {
|
||||||
description=modMinerTrade.translate("Permission to open locked chests of other players"),
|
description=modMinerTrade.translate("Permission to open locked chests of other players"),
|
||||||
give_to_singleplayer=false,
|
give_to_singleplayer=false,
|
||||||
})
|
})
|
||||||
|
--]]
|
||||||
modMinerTrade.safe = {}
|
|
||||||
|
|
||||||
modMinerTrade.getNodesInRange = function(pos, search_distance, node_name)
|
modMinerTrade.getNodesInRange = function(pos, search_distance, node_name)
|
||||||
if pos==nil then return 0 end
|
if pos==nil then return 0 end
|
||||||
|
@ -21,39 +21,33 @@ modMinerTrade.getNodesInRange = function(pos, search_distance, node_name)
|
||||||
return #nodes
|
return #nodes
|
||||||
end
|
end
|
||||||
|
|
||||||
modMinerTrade.doSave = function()
|
|
||||||
local file = io.open(modMinerTrade.urlTabela, "w")
|
|
||||||
if file then
|
|
||||||
file:write(minetest.serialize(modMinerTrade.safe))
|
|
||||||
file:close()
|
|
||||||
--minetest.log('action',"[MINERTRADE] Banco de dados salvo !")
|
|
||||||
else
|
|
||||||
minetest.log('error',"[MINERTRADE:ERRO] "..modMinerTrade.translate("The file '%s' is not in table format!"):format(modMinerTrade.urlTabela))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
modMinerTrade.doLoad = function()
|
|
||||||
local file = io.open(modMinerTrade.urlTabela, "r")
|
modMinerTrade.doSoundPlayer = function(playername, sfxFile, intDistace)
|
||||||
if file then
|
if intDistace == nil or (type(intDistace) == "number" and intDistace>= 0) then
|
||||||
modMinerTrade.safe = minetest.deserialize(file:read("*all"))
|
if type(playername) == "string" and type(sfxFile) == "string" and playername ~= "" and sfxFile ~= "" then
|
||||||
file:close()
|
local player = minetest.get_player_by_name(playername)
|
||||||
if not modMinerTrade.safe or type(modMinerTrade.safe) ~= "table" then
|
if player ~=nil and player:is_player() then
|
||||||
minetest.log('error',"[MINERTRADE:ERRO] "..modMinerTrade.translate("The file '%s' is not in table format!"):format(modMinerTrade.urlTabela))
|
return minetest.sound_play(sfxFile, {
|
||||||
return { }
|
object = player, --Se retirar esta linha tocará para todos. (Provavelmente ¬¬)
|
||||||
else
|
gain = 1.0, -- 1.0 = Volume total
|
||||||
minetest.log('action',"[MINERTRADE] "..modMinerTrade.translate("Opening '%s'!"):format(modMinerTrade.urlTabela))
|
max_hear_distance = intDistace,
|
||||||
|
loop = false,
|
||||||
|
})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--[[
|
||||||
modMinerTrade.setSafeInventory = function(playername, tblListInventory)
|
modMinerTrade.setSafeInventory = function(playername, tblListInventory)
|
||||||
--local newInv = minetest.create_detached_inventory_raw("safe_"..playername)
|
--local newInv = minetest.create_detached_inventory_raw("safe_"..playername)
|
||||||
local newInv = core.create_detached_inventory_raw("safe_"..playername, playername)
|
local newInv = core.create_detached_inventory_raw("safe_"..playername, playername)
|
||||||
newInv:set_list("safe", tblListInventory)
|
newInv:set_list("safe", tblListInventory)
|
||||||
local tamanho = newInv:get_size("safe")
|
local tamanho = newInv:get_size("safe")
|
||||||
modMinerTrade.safe[playername] = { }
|
modMinerTrade.bank[playername] = { }
|
||||||
for i=1,tamanho do
|
for i=1,tamanho do
|
||||||
modMinerTrade.safe[playername][i] = newInv:get_stack("safe", i):to_table()
|
modMinerTrade.bank[playername][i] = newInv:get_stack("safe", i):to_table()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -64,8 +58,8 @@ modMinerTrade.getSafeInventory = function(playername)
|
||||||
newInv:set_size("safe", modMinerTrade.size.width*modMinerTrade.size.height)
|
newInv:set_size("safe", modMinerTrade.size.width*modMinerTrade.size.height)
|
||||||
--local listInventory = { }
|
--local listInventory = { }
|
||||||
for i=1,(modMinerTrade.size.width*modMinerTrade.size.height) do
|
for i=1,(modMinerTrade.size.width*modMinerTrade.size.height) do
|
||||||
if modMinerTrade.safe and modMinerTrade.safe[playername] and modMinerTrade.safe[playername][i] then
|
if modMinerTrade.bank and modMinerTrade.bank[playername] and modMinerTrade.bank[playername][i] then
|
||||||
newInv:set_stack("safe", i, ItemStack(modMinerTrade.safe[playername][i]))
|
newInv:set_stack("safe", i, ItemStack(modMinerTrade.bank[playername][i]))
|
||||||
else
|
else
|
||||||
newInv:set_stack("safe", i, nil)
|
newInv:set_stack("safe", i, nil)
|
||||||
end
|
end
|
||||||
|
@ -106,8 +100,9 @@ modMinerTrade.getFormspec = function(playername, ownername, title)
|
||||||
.."listring[current_player;main]"
|
.."listring[current_player;main]"
|
||||||
return formspec
|
return formspec
|
||||||
end
|
end
|
||||||
|
--]]
|
||||||
|
|
||||||
modMinerTrade.isOpen = function(meta, player)
|
modMinerTrade.canInteract = function(meta, player)
|
||||||
if player:get_player_name() == meta:get_string("owner")
|
if player:get_player_name() == meta:get_string("owner")
|
||||||
or minetest.get_player_privs(player:get_player_name()).server
|
or minetest.get_player_privs(player:get_player_name()).server
|
||||||
or minetest.get_player_privs(player:get_player_name()).checkchest
|
or minetest.get_player_privs(player:get_player_name()).checkchest
|
||||||
|
@ -118,6 +113,7 @@ modMinerTrade.isOpen = function(meta, player)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--[[
|
||||||
modMinerTrade.getDetachedInventory = function(playername)
|
modMinerTrade.getDetachedInventory = function(playername)
|
||||||
-- playername = player:get_player_name()
|
-- playername = player:get_player_name()
|
||||||
local newInv = minetest.create_detached_inventory("safe_"..playername, { --trunk
|
local newInv = minetest.create_detached_inventory("safe_"..playername, { --trunk
|
||||||
|
@ -211,7 +207,6 @@ modMinerTrade.doRemoveAll = function(player, ownername)
|
||||||
minetest.sound_play("sfx_failure", {object=player, max_hear_distance=5.0,})
|
minetest.sound_play("sfx_failure", {object=player, max_hear_distance=5.0,})
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
--]]
|
|
||||||
end --for i, item in pairs(safe) do
|
end --for i, item in pairs(safe) do
|
||||||
modMinerTrade.setSafeInventory(ownername, invOwner:get_list("safe"))
|
modMinerTrade.setSafeInventory(ownername, invOwner:get_list("safe"))
|
||||||
else
|
else
|
||||||
|
@ -268,7 +263,6 @@ modMinerTrade.doDepositAll = function(player, ownername)
|
||||||
minetest.sound_play("sfx_failure", {object=player, max_hear_distance=5.0,})
|
minetest.sound_play("sfx_failure", {object=player, max_hear_distance=5.0,})
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
--]]
|
|
||||||
end --for i, item in pairs(safe) do
|
end --for i, item in pairs(safe) do
|
||||||
modMinerTrade.setSafeInventory(ownername, invOwner:get_list("safe"))
|
modMinerTrade.setSafeInventory(ownername, invOwner:get_list("safe"))
|
||||||
else
|
else
|
||||||
|
@ -293,8 +287,7 @@ modMinerTrade.doDepositAll = function(player, ownername)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
modMinerTrade.onReceiveFields = function(sender, formname, fields)
|
||||||
minetest.register_on_player_receive_fields(function(sender, formname, fields)
|
|
||||||
local sendername = sender:get_player_name()
|
local sendername = sender:get_player_name()
|
||||||
--minetest.chat_send_player(sendername, "formname="..formname.." fields="..dump(fields))
|
--minetest.chat_send_player(sendername, "formname="..formname.." fields="..dump(fields))
|
||||||
if formname == "safe_"..sendername then -- This is your form name
|
if formname == "safe_"..sendername then -- This is your form name
|
||||||
|
@ -308,9 +301,11 @@ minetest.register_on_player_receive_fields(function(sender, formname, fields)
|
||||||
minetest.log('action',"[STRONGBOX] "..modMinerTrade.translate("Saving strongbox from all players in the file '%s'!"):format(modMinerTrade.urlTabela))
|
minetest.log('action',"[STRONGBOX] "..modMinerTrade.translate("Saving strongbox from all players in the file '%s'!"):format(modMinerTrade.urlTabela))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end
|
||||||
|
--]]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--##############################################################################
|
|
||||||
modMinerTrade.floor_pos = function(pos)
|
modMinerTrade.floor_pos = function(pos)
|
||||||
return {
|
return {
|
||||||
x=math.floor(pos.x),
|
x=math.floor(pos.x),
|
||||||
|
|
12
config.lua
12
config.lua
|
@ -1,8 +1,6 @@
|
||||||
modMinerTrade = {
|
modMinerTrade.bank = {
|
||||||
urlTabela = minetest.get_worldpath().."/minertrade.db", --Extensao '.tbl' ou '.db'
|
filesave = minetest.get_worldpath().."/minertrade.db", --Extensao '.tbl' ou '.db'
|
||||||
delayConstruct = 1800, -- Após colocar o atm ou o strongbox no chão existe um intervalo 1800 segundos para começar a utilizá-los.
|
acounts = 0,
|
||||||
size = {
|
player = { },
|
||||||
width = 8, --Slots number of atm and strongbox (Default:6 Max:8)
|
|
||||||
height = 4, --Slots number of atm and strongbox (Default:2 Max:4)
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
34
init.lua
34
init.lua
|
@ -1,21 +1,25 @@
|
||||||
local modname = minetest.get_current_modname()
|
modMinerTrade = {
|
||||||
local modpath = minetest.get_modpath(modname)
|
modName = minetest.get_current_modname(),
|
||||||
|
modPath = minetest.get_modpath(minetest.get_current_modname()),
|
||||||
|
}
|
||||||
|
|
||||||
dofile(modpath.."/config.lua") -- <== Antes de carregar tudo!
|
dofile(modMinerTrade.modPath.."/config.lua") -- <== Antes de carregar tudo!
|
||||||
dofile(modpath.."/translate.lua") -- <== Antes de 'api.lua'!
|
dofile(modMinerTrade.modPath.."/translate.lua") -- <== Antes de 'api.lua'!
|
||||||
dofile(modpath.."/api.lua")
|
dofile(modMinerTrade.modPath.."/api.lua")
|
||||||
dofile(modpath.."/item_atm.lua")
|
dofile(modMinerTrade.modPath.."/item_exchange_table.lua")
|
||||||
dofile(modpath.."/item_strongbox.lua")
|
dofile(modMinerTrade.modPath.."/item_dispensing_machine.lua")
|
||||||
--dofile(modpath.."/item_strongbox_old.lua")
|
|
||||||
|
|
||||||
|
--dofile(modMinerTrade.modPath.."/item_atm.lua")
|
||||||
dofile(modpath.."/item_miner_cash.lua")
|
--dofile(modMinerTrade.modPath.."/item_strongbox.lua")
|
||||||
dofile(modpath.."/item_exchange_table.lua")
|
--dofile(modMinerTrade.modPath.."/item_strongbox_old.lua")
|
||||||
dofile(modpath.."/item_dispensing_machine.lua")
|
--dofile(modMinerTrade.modPath.."/item_miner_cash.lua")
|
||||||
-- --dofile(path.."/item_rent_door.lua")
|
-- --dofile(path.."/item_rent_door.lua")
|
||||||
|
--dofile(modMinerTrade.modPath.."/payday.lua")
|
||||||
|
--dofile(modMinerTrade.modPath.."/commands.lua")
|
||||||
|
|
||||||
|
if modMinerTrade.doAtmLoad ~= nil then
|
||||||
|
modMinerTrade.doAtmLoad()
|
||||||
|
end
|
||||||
|
|
||||||
dofile(modpath.."/payday.lua") -- <== Pay diary per playing in server.
|
|
||||||
dofile(modpath.."/commands.lua")
|
|
||||||
dofile(modpath.."/on_final.lua") -- <== Only after load all code!
|
|
||||||
|
|
||||||
minetest.log('action',"["..modname:upper().."] Loaded!")
|
minetest.log('action',"["..modname:upper().."] Loaded!")
|
||||||
|
|
243
item_atm.lua
243
item_atm.lua
|
@ -1,116 +1,147 @@
|
||||||
minetest.register_node("minertrade:atm", {
|
modMinerTrade.doBankSave = function()
|
||||||
description = modMinerTrade.translate("PUBLIC ATM\n* Save your money in the ATM, and withdraw your money in your Personal Safe or other ATM in the shops scattered around the map."),
|
local file = io.open(modMinerTrade.urlTabela, "w")
|
||||||
--inventory_image = minetest.inventorycube("text_atm_front_1.png"),
|
if file then
|
||||||
--inventory_image = "text_atm_front_1.png",
|
file:write(minetest.serialize(modMinerTrade.bank))
|
||||||
paramtype = "light",
|
file:close()
|
||||||
sunlight_propagates = true,
|
--minetest.log('action',"[MINERTRADE] Banco de dados salvo !")
|
||||||
light_source = default.LIGHT_MAX,
|
else
|
||||||
paramtype2 = "facedir",
|
minetest.log('error',"[MINERTRADE:ERRO] "..modMinerTrade.translate("The file '%s' is not in table format!"):format(modMinerTrade.urlTabela))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
modMinerTrade.doBankLoad = function()
|
||||||
|
local file = io.open(modMinerTrade.urlTabela, "r")
|
||||||
|
if file then
|
||||||
|
modMinerTrade.bank = minetest.deserialize(file:read("*all"))
|
||||||
|
file:close()
|
||||||
|
if not modMinerTrade.bank or type(modMinerTrade.bank) ~= "table" then
|
||||||
|
minetest.log('error',"[MINERTRADE:ERRO] "..modMinerTrade.translate("The file '%s' is not in table format!"):format(modMinerTrade.urlTabela))
|
||||||
|
return { }
|
||||||
|
else
|
||||||
|
minetest.log('action',"[MINERTRADE] "..modMinerTrade.translate("Opening '%s'!"):format(modMinerTrade.urlTabela))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
modMinerTrade.isExistAcount = function(playername)
|
||||||
|
if modMinerTrade.bank.player[playername] ~= nil then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
modMinerTrade.createAcount = function(playername)
|
||||||
|
if modMinerTrade.bank.player[playername] == nil then
|
||||||
|
modMinerTrade.bank.player[playername] = {
|
||||||
|
acount_created = os.date("%Y/%b/%d %Hh:%Mm:%Ss"),
|
||||||
|
balance = 0,
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
--legacy_facedir_simple = true, --<=Nao sei para que serve!
|
return modMinerTrade.bank.player[playername].balance
|
||||||
is_ground_content = false,
|
end
|
||||||
groups = {cracky=1},
|
|
||||||
--groups = {cracky=3,oddly_breakable_by_hand=3},
|
|
||||||
--sounds = default.node_sound_glass_defaults(),
|
|
||||||
tiles = {
|
|
||||||
--[[
|
|
||||||
"default_wood.png",
|
|
||||||
"default_wood.png",
|
|
||||||
"default_wood.png",
|
|
||||||
"default_wood.png",
|
|
||||||
"default_wood.png",
|
|
||||||
"text_atm_front_1.png",
|
|
||||||
--]]
|
|
||||||
"safe_side.png",
|
|
||||||
"safe_side.png",
|
|
||||||
"safe_side.png",
|
|
||||||
"safe_side.png",
|
|
||||||
"safe_side.png",
|
|
||||||
"safe_side.png^text_atm_front.png",
|
|
||||||
},
|
|
||||||
|
|
||||||
on_place = function(itemstack, placer, pointed_thing)
|
modMinerTrade.getBalance = function(playername)
|
||||||
local playername = placer:get_player_name()
|
if modMinerTrade.isExistAcount(playername) then
|
||||||
|
return modMinerTrade.bank.player[playername].balance
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if not pointed_thing.type == "node" then
|
modMinerTrade.showAtm = {
|
||||||
return itemstack
|
frmMain = function(playername) --FORMULÁRIO: PRINCIPAL / RAIZ
|
||||||
end
|
local formspec = "size[9.5,10.5]"
|
||||||
|
--.."bgcolor[#636D76FF;false]"
|
||||||
local posAbove = pointed_thing.above --acima
|
--..default.gui_bg
|
||||||
local posUnder = pointed_thing.under --abaixo
|
--..default.gui_bg_img
|
||||||
if not placer or not placer:is_player() or
|
--..default.gui_slots
|
||||||
not minetest.registered_nodes[minetest.get_node(posAbove).name].buildable_to
|
|
||||||
then --Verifica se pode construir sobre os objetos construiveis
|
--.."bgcolor[#636D76FF;false]"
|
||||||
return itemstack
|
.."background[-0.25,-0.25;10,11;safe_inside.png]"
|
||||||
end
|
.."button[0,0.0;4,0.5;btnBalance;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BALANCE"))).."]"
|
||||||
|
--.."button[0,0.5;4,0.5;btnStatement;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("STATEMENT"))).."]"
|
||||||
|
--.."button[0,1.0;4,0.5;btnDeposits;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("DEPOSITS"))).."]"
|
||||||
|
.."button[0,1.5;4,0.5;btnWithdrawals;"..minetest.formspec_escape(core.colorize("#FFFFF", modMinerTrade.translate("WITHDRAWALS [DINHEIRO E CHECK]"))).."]"
|
||||||
|
--.."button[0,2.0;4,0.5;btnTransfers;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("TRANSFERS"))).."]"
|
||||||
|
--.."button[0,2.0;4,0.5;btnLoans;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("LOANS"))).."]" --Emprestimos
|
||||||
|
--.."button[0,2.5;4,0.5;btnCreditCard;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("CARTÃO DE CRÉDITO [EXPEDIR E MUDAR SENHA]"))).."]"
|
||||||
|
--.."button[0,3.0;4,0.5;btnSetings;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("SETTINGS"))).."]" --Se quer ou não uma senha, se quer receber uma carta quando houver uma nova movimentacao.
|
||||||
|
.."button_exit[0,3.5;4,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]"
|
||||||
|
|
||||||
local nodeUnder = minetest.get_node(posUnder)
|
modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5)
|
||||||
if minetest.registered_nodes[nodeUnder.name].on_rightclick then --Verifica se o itema na mao do jogador tem funcao rightclick
|
minetest.show_formspec(playername, "frmAtmMain", formspec)
|
||||||
return minetest.registered_nodes[nodeUnder.name].on_rightclick(posUnder, nodeUnder, placer, itemstack)
|
end,
|
||||||
|
frmBalance = function(playername) --FORMULÁRIO: SALDO
|
||||||
|
local msgBalance = ""
|
||||||
|
if modMinerTrade.isExistAcount(playername) then
|
||||||
|
msgBalance = modMinerTrade.translate("You own %03d minercash"):format(modMinerTrade.getBalance(playername))
|
||||||
|
else
|
||||||
|
msgBalance = modMinerTrade.translate("Player '%s' is not an account holder of this bank."):format(playername)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local formspec = "size[9.5,10.5]"
|
||||||
|
--.."bgcolor[#636D76FF;false]"
|
||||||
|
--..default.gui_bg
|
||||||
|
--..default.gui_bg_img
|
||||||
|
--..default.gui_slots
|
||||||
|
|
||||||
if
|
--.."bgcolor[#636D76FF;false]"
|
||||||
minetest.get_player_privs(playername).server
|
.."background[-0.25,-0.25;10,11;safe_inside.png]"
|
||||||
or modMinerTrade.getNodesInRange(posAbove, 2, "minertrade:dispensingmachine")>=1
|
.."button[0,0.0;4,0.5;btnAtmMain;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]"
|
||||||
then
|
.."button_exit[0,3.0;4,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]"
|
||||||
local facedir = minetest.dir_to_facedir(placer:get_look_dir())
|
.."label[5.0,0.0;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("BALANCES")..":")).."]"
|
||||||
--minetest.chat_send_player(playername, "[ATM] aaaaaa")
|
.."label[5.0,2.0;"..minetest.formspec_escape(core.colorize("#00FFFF", msgBalance)).."]"
|
||||||
minetest.set_node(posAbove, {
|
|
||||||
name = "minertrade:atm",
|
modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5)
|
||||||
param2 = facedir,
|
minetest.show_formspec(playername, "frmAtmBalance", formspec)
|
||||||
})
|
end,
|
||||||
local meta = minetest.get_meta(posAbove)
|
frmWithdrawals = function(playername) --FORMULÁRIO: EXTRATO
|
||||||
meta:set_string("infotext", modMinerTrade.translate("PUBLIC ATM\n* Save your money in the ATM, and withdraw your money in your Personal Safe or other ATM in the shops scattered around the map."))
|
local formspec = "size[9.5,10.5]"
|
||||||
local now = os.time() --Em milisegundos
|
--.."bgcolor[#636D76FF;false]"
|
||||||
if not minetest.get_player_privs(playername).server then
|
--..default.gui_bg
|
||||||
meta:set_string("opentime", now+modMinerTrade.delayConstruct)
|
--..default.gui_bg_img
|
||||||
else
|
--..default.gui_slots
|
||||||
meta:set_string("opentime", now)
|
|
||||||
|
--.."bgcolor[#636D76FF;false]"
|
||||||
|
.."background[-0.25,-0.25;10,11;safe_inside.png]"
|
||||||
|
.."button[0,0.0;4,0.5;btnAtmMain;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]"
|
||||||
|
.."button_exit[0,3.0;4,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]"
|
||||||
|
|
||||||
|
modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5)
|
||||||
|
minetest.show_formspec(playername, "frmAtmWithdrawals", formspec)
|
||||||
|
end,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
modMinerTrade.onReceiveFields = function(sender, formname, fields)
|
||||||
|
local sendername = sender:get_player_name()
|
||||||
|
if fields.btnAtmMain ~= nil then
|
||||||
|
modMinerTrade.showAtm.frmMain(playername)
|
||||||
|
else
|
||||||
|
if formname == "frmAtmMain" then
|
||||||
|
if fields.btnSaldo ~= nil then
|
||||||
|
modMinerTrade.showAtm.frmBalance(playername)
|
||||||
|
elseif fields.btnWithdrawals ~= nil then
|
||||||
|
modMinerTrade.showAtm.frmWithdrawals(playername)
|
||||||
end
|
end
|
||||||
itemstack:take_item() -- itemstack:take_item() = Ok
|
|
||||||
else
|
|
||||||
minetest.chat_send_player(playername,
|
|
||||||
core.colorize("#00ff00", "["..modMinerTrade.translate("ATM").."]: ")
|
|
||||||
..modMinerTrade.translate("You can not install this 'ATM' too far from a 'Dispensing Machine'!")
|
|
||||||
)
|
|
||||||
--return itemstack -- = Cancel
|
|
||||||
end
|
end
|
||||||
|
end
|
||||||
return itemstack
|
end
|
||||||
end,
|
|
||||||
|
|
||||||
on_rightclick = function(pos, node, clicker)
|
|
||||||
local playername = clicker:get_player_name()
|
|
||||||
local meta = minetest.get_meta(pos)
|
|
||||||
meta:set_string("infotext", modMinerTrade.translate("PUBLIC ATM\n* Save your money in the ATM, and withdraw your money in your Personal Safe or other ATM in the shops scattered around the map."))
|
|
||||||
local opentime = tonumber(meta:get_string("opentime")) or 0
|
|
||||||
local now = os.time() --Em milisegundos
|
|
||||||
if now >= opentime or minetest.get_player_privs(playername).server then
|
|
||||||
modMinerTrade.showInventory(
|
|
||||||
clicker,
|
|
||||||
playername,
|
|
||||||
modMinerTrade.translate("PUBLIC ATM - Account of '%s':"):format(playername)
|
|
||||||
)
|
|
||||||
else
|
|
||||||
minetest.sound_play("sfx_failure", {object=clicker, max_hear_distance=5.0,})
|
|
||||||
minetest.chat_send_player(playername,
|
|
||||||
core.colorize("#00ff00", "["..modMinerTrade.translate("ATM").."]: ")
|
|
||||||
..modMinerTrade.translate("The ATM will only run %02d seconds after it is installed!"):format(opentime-now)
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
--###############################################################################################################
|
||||||
output = 'minertrade:atm',
|
|
||||||
recipe = {
|
|
||||||
{"default:steel_ingot" ,"default:steel_ingot" ,"default:steel_ingot"},
|
|
||||||
{"default:steel_ingot" ,"default:obsidian_glass" ,"default:steel_ingot"},
|
|
||||||
{"default:steel_ingot" ,"default:mese" ,"default:steel_ingot"},
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_alias(
|
minetest.register_on_player_receive_fields(function(sender, formname, fields)
|
||||||
modMinerTrade.translate("atm"),
|
return modMinerTrade.onReceiveFields(sender, formname, fields)
|
||||||
"minertrade:atm"
|
end)
|
||||||
)
|
|
||||||
|
minetest.register_on_leaveplayer(function(player)
|
||||||
|
modMinerTrade.doBankSave()
|
||||||
|
end)
|
||||||
|
|
||||||
|
minetest.register_on_shutdown(function()
|
||||||
|
modMinerTrade.doBankSave()
|
||||||
|
minetest.log('action',"[STRONGBOX] "..modMinerTrade.translate("Saving bank from all players in the file '%s'!"):format(modMinerTrade.urlTabela))
|
||||||
|
end)
|
116
old_item_atm.lua
Normal file
116
old_item_atm.lua
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
minetest.register_node("minertrade:atm", {
|
||||||
|
description = modMinerTrade.translate("PUBLIC ATM\n* Save your money in the ATM, and withdraw your money in your Personal Safe or other ATM in the shops scattered around the map."),
|
||||||
|
--inventory_image = minetest.inventorycube("text_atm_front_1.png"),
|
||||||
|
--inventory_image = "text_atm_front_1.png",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
light_source = default.LIGHT_MAX,
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
|
||||||
|
--legacy_facedir_simple = true, --<=Nao sei para que serve!
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = {cracky=1},
|
||||||
|
--groups = {cracky=3,oddly_breakable_by_hand=3},
|
||||||
|
--sounds = default.node_sound_glass_defaults(),
|
||||||
|
tiles = {
|
||||||
|
--[[
|
||||||
|
"default_wood.png",
|
||||||
|
"default_wood.png",
|
||||||
|
"default_wood.png",
|
||||||
|
"default_wood.png",
|
||||||
|
"default_wood.png",
|
||||||
|
"text_atm_front_1.png",
|
||||||
|
--]]
|
||||||
|
"safe_side.png",
|
||||||
|
"safe_side.png",
|
||||||
|
"safe_side.png",
|
||||||
|
"safe_side.png",
|
||||||
|
"safe_side.png",
|
||||||
|
"safe_side.png^text_atm_front.png",
|
||||||
|
},
|
||||||
|
|
||||||
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
|
local playername = placer:get_player_name()
|
||||||
|
|
||||||
|
if not pointed_thing.type == "node" then
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
|
||||||
|
local posAbove = pointed_thing.above --acima
|
||||||
|
local posUnder = pointed_thing.under --abaixo
|
||||||
|
if not placer or not placer:is_player() or
|
||||||
|
not minetest.registered_nodes[minetest.get_node(posAbove).name].buildable_to
|
||||||
|
then --Verifica se pode construir sobre os objetos construiveis
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
|
||||||
|
local nodeUnder = minetest.get_node(posUnder)
|
||||||
|
if minetest.registered_nodes[nodeUnder.name].on_rightclick then --Verifica se o itema na mao do jogador tem funcao rightclick
|
||||||
|
return minetest.registered_nodes[nodeUnder.name].on_rightclick(posUnder, nodeUnder, placer, itemstack)
|
||||||
|
end
|
||||||
|
|
||||||
|
if
|
||||||
|
minetest.get_player_privs(playername).server
|
||||||
|
or modMinerTrade.getNodesInRange(posAbove, 2, "minertrade:dispensingmachine")>=1
|
||||||
|
then
|
||||||
|
local facedir = minetest.dir_to_facedir(placer:get_look_dir())
|
||||||
|
--minetest.chat_send_player(playername, "[ATM] aaaaaa")
|
||||||
|
minetest.set_node(posAbove, {
|
||||||
|
name = "minertrade:atm",
|
||||||
|
param2 = facedir,
|
||||||
|
})
|
||||||
|
local meta = minetest.get_meta(posAbove)
|
||||||
|
meta:set_string("infotext", modMinerTrade.translate("PUBLIC ATM\n* Save your money in the ATM, and withdraw your money in your Personal Safe or other ATM in the shops scattered around the map."))
|
||||||
|
local now = os.time() --Em milisegundos
|
||||||
|
if not minetest.get_player_privs(playername).server then
|
||||||
|
meta:set_string("opentime", now+modMinerTrade.delayConstruct)
|
||||||
|
else
|
||||||
|
meta:set_string("opentime", now)
|
||||||
|
end
|
||||||
|
itemstack:take_item() -- itemstack:take_item() = Ok
|
||||||
|
else
|
||||||
|
minetest.chat_send_player(playername,
|
||||||
|
core.colorize("#00ff00", "["..modMinerTrade.translate("ATM").."]: ")
|
||||||
|
..modMinerTrade.translate("You can not install this 'ATM' too far from a 'Dispensing Machine'!")
|
||||||
|
)
|
||||||
|
--return itemstack -- = Cancel
|
||||||
|
end
|
||||||
|
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_rightclick = function(pos, node, clicker)
|
||||||
|
local playername = clicker:get_player_name()
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:set_string("infotext", modMinerTrade.translate("PUBLIC ATM\n* Save your money in the ATM, and withdraw your money in your Personal Safe or other ATM in the shops scattered around the map."))
|
||||||
|
local opentime = tonumber(meta:get_string("opentime")) or 0
|
||||||
|
local now = os.time() --Em milisegundos
|
||||||
|
if now >= opentime or minetest.get_player_privs(playername).server then
|
||||||
|
modMinerTrade.showInventory(
|
||||||
|
clicker,
|
||||||
|
playername,
|
||||||
|
modMinerTrade.translate("PUBLIC ATM - Account of '%s':"):format(playername)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
minetest.sound_play("sfx_failure", {object=clicker, max_hear_distance=5.0,})
|
||||||
|
minetest.chat_send_player(playername,
|
||||||
|
core.colorize("#00ff00", "["..modMinerTrade.translate("ATM").."]: ")
|
||||||
|
..modMinerTrade.translate("The ATM will only run %02d seconds after it is installed!"):format(opentime-now)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = 'minertrade:atm',
|
||||||
|
recipe = {
|
||||||
|
{"default:steel_ingot" ,"default:steel_ingot" ,"default:steel_ingot"},
|
||||||
|
{"default:steel_ingot" ,"default:obsidian_glass" ,"default:steel_ingot"},
|
||||||
|
{"default:steel_ingot" ,"default:mese" ,"default:steel_ingot"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_alias(
|
||||||
|
modMinerTrade.translate("atm"),
|
||||||
|
"minertrade:atm"
|
||||||
|
)
|
165
old_item_miner_cash.lua
Normal file
165
old_item_miner_cash.lua
Normal file
|
@ -0,0 +1,165 @@
|
||||||
|
|
||||||
|
|
||||||
|
--#########################################################################################
|
||||||
|
|
||||||
|
minetest.register_craftitem("minertrade:minercoin", {
|
||||||
|
description = modMinerTrade.translate("MINERCOIN\n* Basic craftable money with gold and steel."),
|
||||||
|
inventory_image = "obj_minecoin.png",
|
||||||
|
stack_max=9, --Acumula 9 por slot
|
||||||
|
groups = {cash=1, trade=1},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "minertrade:minercoin",
|
||||||
|
recipe = {
|
||||||
|
{"default:gold_ingot","default:steel_ingot","default:gold_ingot"},
|
||||||
|
},
|
||||||
|
--https://github.com/minetest/minetest_game/blob/master/mods/default/craftitems.lua
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "cooking",
|
||||||
|
output = "default:gold_ingot",
|
||||||
|
recipe = "minertrade:minercoin",
|
||||||
|
cooktime = 5,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_alias(
|
||||||
|
modMinerTrade.translate("minercoin"),
|
||||||
|
"minertrade:minercoin"
|
||||||
|
)
|
||||||
|
|
||||||
|
--##########################################################################################################
|
||||||
|
|
||||||
|
minetest.register_craftitem("minertrade:minermoney", {
|
||||||
|
description = modMinerTrade.translate("MINERMONEY\n* equals 09 Minercoins."),
|
||||||
|
inventory_image = "obj_minemoney.png",
|
||||||
|
stack_max=9, --Acumula 9 por slot
|
||||||
|
groups = {cash=1, trade=1},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "minertrade:minermoney",
|
||||||
|
recipe = {
|
||||||
|
{"minertrade:minercoin", "minertrade:minercoin", "minertrade:minercoin"},
|
||||||
|
{"minertrade:minercoin", "minertrade:minercoin", "minertrade:minercoin"},
|
||||||
|
{"minertrade:minercoin", "minertrade:minercoin", "minertrade:minercoin"}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "minertrade:minercoin 9",
|
||||||
|
recipe = {
|
||||||
|
{"minertrade:minermoney"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_alias(
|
||||||
|
modMinerTrade.translate("minermoney"),
|
||||||
|
"minertrade:minermoney"
|
||||||
|
)
|
||||||
|
|
||||||
|
--##########################################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem("minertrade:checkbank", {
|
||||||
|
description = modMinerTrade.translate("CHECK BANK\n* equals 09 Minermoneys."),
|
||||||
|
inventory_image = "obj_bank_check.png",
|
||||||
|
stack_max=9, --Acumula 9 por slot
|
||||||
|
groups = {cash=1, trade=1},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "minertrade:checkbank",
|
||||||
|
recipe = {
|
||||||
|
{"minertrade:minermoney", "minertrade:minermoney", "minertrade:minermoney"},
|
||||||
|
{"minertrade:minermoney", "minertrade:minermoney", "minertrade:minermoney"},
|
||||||
|
{"minertrade:minermoney", "minertrade:minermoney", "minertrade:minermoney"}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "minertrade:minermoney 9",
|
||||||
|
recipe = {
|
||||||
|
{"minertrade:checkbank"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_alias(
|
||||||
|
modMinerTrade.translate("checkbank"),
|
||||||
|
"minertrade:checkbank"
|
||||||
|
)
|
||||||
|
|
||||||
|
--##########################################################################################################
|
||||||
|
|
||||||
|
minetest.register_craftitem("minertrade:creditcard", {
|
||||||
|
description = modMinerTrade.translate("CREDIT CARD (Unowned)\n* equals 09 Check Banks.\n* Allows you to access the bank account of the credit card owner anywhere in the world."),
|
||||||
|
inventory_image = "obj_credit_card.png",
|
||||||
|
--stack_max=9, --Acumula 9 por slot
|
||||||
|
groups = {cash=1, trade=1},
|
||||||
|
on_use = function(itemstack, player)
|
||||||
|
local playername = player:get_player_name()
|
||||||
|
local meta = itemstack:get_meta()
|
||||||
|
local old_data = minetest.deserialize(itemstack:get_metadata())
|
||||||
|
if old_data then
|
||||||
|
meta:from_table({ fields = old_data })
|
||||||
|
end
|
||||||
|
local tmpDatabase = meta:to_table().fields
|
||||||
|
|
||||||
|
if type(tmpDatabase.ownername)~="string" or tmpDatabase.ownername=="" then
|
||||||
|
tmpDatabase.ownername = playername
|
||||||
|
tmpDatabase.description = modMinerTrade.translate("CREDIT CARD of '%s'"):format(tmpDatabase.ownername)
|
||||||
|
local invPlayer = player:get_inventory()
|
||||||
|
local new_stack
|
||||||
|
local count = itemstack:get_count()
|
||||||
|
itemstack:set_count(count - 1)
|
||||||
|
new_stack = ItemStack("minertrade:creditcard")
|
||||||
|
new_stack:get_meta():from_table({ fields = tmpDatabase })
|
||||||
|
if invPlayer:room_for_item("main", new_stack) then
|
||||||
|
invPlayer:add_item("main", new_stack)
|
||||||
|
else
|
||||||
|
minetest.add_item(player:get_pos(), new_stack)
|
||||||
|
end
|
||||||
|
minetest.chat_send_player(playername,
|
||||||
|
core.colorize("#00ff00", "["..modMinerTrade.translate("CREDIT CARD").."]: ")
|
||||||
|
..modMinerTrade.translate("Your name has been saved to this credit card. Anyone using this credit card will be able to access the '%s' bank account."):format(tmpDatabase.ownername)
|
||||||
|
)
|
||||||
|
minetest.sound_play("sfx_alert", {object=player, max_hear_distance=5.0,})
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
modMinerTrade.showInventory(
|
||||||
|
player,
|
||||||
|
tmpDatabase.ownername,
|
||||||
|
modMinerTrade.translate("ACCOUNT BANK of '%s':"):format(tmpDatabase.ownername)
|
||||||
|
)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "minertrade:creditcard",
|
||||||
|
recipe = {
|
||||||
|
{"minertrade:checkbank", "minertrade:checkbank", "minertrade:checkbank"},
|
||||||
|
{"minertrade:checkbank", "minertrade:checkbank", "minertrade:checkbank"},
|
||||||
|
{"minertrade:checkbank", "minertrade:checkbank", "minertrade:checkbank"}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "minertrade:checkbank 9",
|
||||||
|
recipe = {
|
||||||
|
{"minertrade:creditcard"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_alias(
|
||||||
|
modMinerTrade.translate("creditcard"),
|
||||||
|
"minertrade:creditcard"
|
||||||
|
)
|
||||||
|
|
||||||
|
--##########################################################################################################
|
||||||
|
|
||||||
|
|
79
old_item_strongbox.lua
Normal file
79
old_item_strongbox.lua
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
minetest.register_node("minertrade:strongbox", {
|
||||||
|
description = modMinerTrade.translate("STRONGBOX\n* Save your money in this safe and withdraw your money at any shop that has an ATM."),
|
||||||
|
--inventory_image = "safe_front.png",
|
||||||
|
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
light_source = default.LIGHT_MAX,
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = {cracky=1},
|
||||||
|
tiles = {
|
||||||
|
"safe_side.png",
|
||||||
|
"safe_side.png",
|
||||||
|
"safe_side.png",
|
||||||
|
"safe_side.png",
|
||||||
|
"safe_side.png",
|
||||||
|
"safe_front.png",
|
||||||
|
},
|
||||||
|
after_place_node = function(pos, placer)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local ownername = placer:get_player_name() or ""
|
||||||
|
meta:set_string("owner", ownername)
|
||||||
|
meta:set_string("infotext", modMinerTrade.translate("STRONGBOX (Property of '%s')\n* Save your money in this safe and withdraw your money at any shop that has an ATM."):format(ownername))
|
||||||
|
local now = os.time() --Em milisegundos
|
||||||
|
meta:set_string("opentime", now+modMinerTrade.delayConstruct)
|
||||||
|
end,
|
||||||
|
can_dig = function(pos,player)
|
||||||
|
local meta = minetest.get_meta(pos);
|
||||||
|
if modMinerTrade.isOpen(meta, player) then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
on_rightclick = function(pos, node, clicker)
|
||||||
|
local playername = clicker:get_player_name()
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local ownername = meta:get_string("owner")
|
||||||
|
meta:set_string("infotext", modMinerTrade.translate("STRONGBOX (Property of '%s')\n* Save your money in this safe and withdraw your money at any shop that has an ATM."):format(ownername))
|
||||||
|
if modMinerTrade.isOpen(meta, clicker) then
|
||||||
|
local opentime = tonumber(meta:get_string("opentime")) or 0
|
||||||
|
local now = os.time() --Em milisegundos
|
||||||
|
if now >= opentime or minetest.get_player_privs(playername).server then
|
||||||
|
modMinerTrade.showInventory(
|
||||||
|
clicker,
|
||||||
|
ownername,
|
||||||
|
modMinerTrade.translate("STRONGBOX owned by '%s':"):format(ownername)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
minetest.sound_play("sfx_failure", {object=clicker, max_hear_distance=5.0,})
|
||||||
|
minetest.chat_send_player(playername,
|
||||||
|
core.colorize("#00ff00", "["..modMinerTrade.translate("STRONGBOX").."]: ")
|
||||||
|
..modMinerTrade.translate("The safe is going to work %02d seconds after it is installed!"):format(opentime-now)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
minetest.sound_play("sfx_failure", {object=clicker, max_hear_distance=5.0,})
|
||||||
|
minetest.chat_send_player(playername,
|
||||||
|
core.colorize("#00ff00", "["..modMinerTrade.translate("STRONGBOX").."]: ")
|
||||||
|
..modMinerTrade.translate("You do not have access to the safe belonging to '%s'!"):format(ownername)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = 'minertrade:strongbox',
|
||||||
|
recipe = {
|
||||||
|
{"default:steel_ingot" ,"default:steel_ingot" ,"default:steel_ingot"},
|
||||||
|
{"default:steel_ingot" ,"" ,"default:mese_crystal"},
|
||||||
|
{"default:steel_ingot" ,"default:steel_ingot" ,"default:steel_ingot"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_alias(
|
||||||
|
modMinerTrade.translate("strongbox"),
|
||||||
|
"minertrade:strongbox"
|
||||||
|
)
|
78
old_payday.lua
Normal file
78
old_payday.lua
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
minetest.register_privilege("salary", {
|
||||||
|
description=modMinerTrade.translate("Only players with this privilege will receive a daily payment."),
|
||||||
|
give_to_singleplayer=false,
|
||||||
|
})
|
||||||
|
|
||||||
|
modMinerTrade.payday = {
|
||||||
|
salary = (minetest.setting_get("minertrade.payday.salary") or "minertrade:minercoin 1"),
|
||||||
|
interval = (tonumber(minetest.setting_get("minertrade.payday.interval")) or 60)
|
||||||
|
}
|
||||||
|
|
||||||
|
minetest.after(3.5, function()
|
||||||
|
modMinerTrade.payday.time = 0
|
||||||
|
minetest.register_globalstep(function(dtime)
|
||||||
|
modMinerTrade.payday.time = modMinerTrade.payday.time + dtime
|
||||||
|
if modMinerTrade.payday.time >= modMinerTrade.payday.interval then
|
||||||
|
modMinerTrade.payday.time = 0
|
||||||
|
local dc = minetest.get_day_count()
|
||||||
|
local players = minetest.get_connected_players()
|
||||||
|
if #players >= 1 then
|
||||||
|
for _, player in ipairs(players) do
|
||||||
|
local lp = tonumber(player:get_meta():get_int("last_pay")) or 0
|
||||||
|
if lp ~= dc then
|
||||||
|
local playername = player:get_player_name()
|
||||||
|
if minetest.get_player_privs(playername).salary then
|
||||||
|
local nameInvList = "safe"
|
||||||
|
local inv = modMinerTrade.getDetachedInventory(playername)
|
||||||
|
--minetest.chat_send_player(playername, "vazio = "..dump(inv:is_empty(nameInvList)))
|
||||||
|
local stack = ItemStack(modMinerTrade.payday.salary)
|
||||||
|
local leftover = inv:add_item(nameInvList, stack)
|
||||||
|
modMinerTrade.setSafeInventory(playername, inv:get_list(nameInvList))
|
||||||
|
modMinerTrade.delSafeInventory(playername)
|
||||||
|
if leftover:get_count() > 0 then
|
||||||
|
minetest.chat_send_player(
|
||||||
|
playername,
|
||||||
|
core.colorize("#00ff00", "["..modMinerTrade.translate("CITY HALL").."]: ")
|
||||||
|
..modMinerTrade.translate("Your Strongbox is full! %2d items weren't added in your bank account."):format(leftover:get_count())
|
||||||
|
)
|
||||||
|
minetest.sound_play("sfx_alert", {object=player, max_hear_distance=5.0,})
|
||||||
|
else
|
||||||
|
minetest.chat_send_player(
|
||||||
|
playername,
|
||||||
|
core.colorize("#00ff00", "["..modMinerTrade.translate("CITY HALL").."]: ")
|
||||||
|
..modMinerTrade.translate("The city hall deposited the %2d° salary in your bank account!"):format(dc)
|
||||||
|
)
|
||||||
|
minetest.sound_play("sfx_cash_register", {object=player, max_hear_distance=5.0,})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
player:get_meta():set_int("last_pay",dc)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--[[
|
||||||
|
minetest.after(3.5, function()
|
||||||
|
modMinerTrade.payday = {
|
||||||
|
interval = (60 *24) / (tonumber(minetest.setting_get("time_speed")) or 72),
|
||||||
|
time = 0
|
||||||
|
}
|
||||||
|
modMinerTrade.payday.interval = 1
|
||||||
|
minetest.register_globalstep(function(dtime)
|
||||||
|
modMinerTrade.payday.time = modMinerTrade.payday.time + dtime
|
||||||
|
if modMinerTrade.payday.time >= modMinerTrade.payday.interval then
|
||||||
|
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
--]]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue