BUG DE NÃO CARREGAMENTO DE CAIXA ELETRONICO

\![](https://disroot.org/upload/EEE8zxgjmPMM7zN-/screenshot_20200406_181005.png)

O Animetrom me pediu para tentar corrigir este bug. Mas, não estou conseguindo porque parece que é um bug do proprio jogo minetest. Pois o comando 'newInv:set_size' da linha 62 do api.lua esta voltando o resultado antes de salvar o resultado dentro do inventario. E nas versões anteriores isso não ocorria.

Felizmente esse bug não é crítico. Pois, o jogador consegue abrir o caixa eletrônico se insistir em abré-lo. (e o lag ajudar). Mais tarde tentarei mais uma vez corrigir este bug.
This commit is contained in:
Lunovox Heavenfinder 2020-04-08 23:52:00 -03:00
parent 18d1b5271b
commit 1c8b6395e5
4 changed files with 49 additions and 48 deletions

10
api.lua
View file

@ -146,3 +146,13 @@ modMinerTrade.getDetachedInventory = function(playername)
return newInv return newInv
end end
modMinerTrade.showInventory = function(playername, ownername, title)
local inv = modMinerTrade.getDetachedInventory(ownername)
minetest.sound_play("sfx_alert", {player=playername, max_hear_distance=5.0,})
minetest.show_formspec(
playername,
"safe_"..ownername,
modMinerTrade.getFormspec(ownername, title)
)
end

View file

@ -86,16 +86,13 @@ minetest.register_node("minertrade:atm", {
local opentime = tonumber(meta:get_string("opentime")) or 0 local opentime = tonumber(meta:get_string("opentime")) or 0
local now = os.time() --Em milisegundos local now = os.time() --Em milisegundos
if now >= opentime or minetest.get_player_privs(playername).server then if now >= opentime or minetest.get_player_privs(playername).server then
local inv = modMinerTrade.getDetachedInventory(playername) modMinerTrade.showInventory(
minetest.show_formspec(
playername, playername,
"safe_"..playername,
modMinerTrade.getFormspec(
playername, playername,
modMinerTrade.translate("PUBLIC ATM - Account of '%s':"):format(playername) modMinerTrade.translate("PUBLIC ATM - Account of '%s':"):format(playername)
) )
)
else else
minetest.sound_play("sfx_failure", {player=playername, max_hear_distance=5.0,})
minetest.chat_send_player(playername, minetest.chat_send_player(playername,
core.colorize("#00ff00", "["..modMinerTrade.translate("ATM").."]: ") core.colorize("#00ff00", "["..modMinerTrade.translate("ATM").."]: ")
..modMinerTrade.translate("The ATM will only run %02d seconds after it is installed!"):format(opentime-now) ..modMinerTrade.translate("The ATM will only run %02d seconds after it is installed!"):format(opentime-now)

View file

@ -107,6 +107,7 @@ local meta = itemstack:get_meta()
meta:from_table({ fields = old_data }) meta:from_table({ fields = old_data })
end end
local tmpDatabase = meta:to_table().fields local tmpDatabase = meta:to_table().fields
if type(tmpDatabase.ownername)~="string" or tmpDatabase.ownername=="" then if type(tmpDatabase.ownername)~="string" or tmpDatabase.ownername=="" then
tmpDatabase.ownername = playername tmpDatabase.ownername = playername
tmpDatabase.description = modMinerTrade.translate("CREDIT CARD of '%s'"):format(tmpDatabase.ownername) tmpDatabase.description = modMinerTrade.translate("CREDIT CARD of '%s'"):format(tmpDatabase.ownername)
@ -128,17 +129,12 @@ local meta = itemstack:get_meta()
minetest.sound_play("sfx_alert", {object=player, max_hear_distance=5.0,}) minetest.sound_play("sfx_alert", {object=player, max_hear_distance=5.0,})
return itemstack return itemstack
end end
modMinerTrade.showInventory(
local inv = modMinerTrade.getDetachedInventory(tmpDatabase.ownername)
minetest.show_formspec(
playername, playername,
"safe_"..tmpDatabase.ownername,
modMinerTrade.getFormspec(
tmpDatabase.ownername, tmpDatabase.ownername,
modMinerTrade.translate("ACCOUNT BANK of '%s':"):format(tmpDatabase.ownername) modMinerTrade.translate("ACCOUNT BANK of '%s':"):format(tmpDatabase.ownername)
) )
) return itemstack
--return itemstack
end, end,
}) })

View file

@ -42,22 +42,20 @@ minetest.register_node("minertrade:strongbox", {
local opentime = tonumber(meta:get_string("opentime")) or 0 local opentime = tonumber(meta:get_string("opentime")) or 0
local now = os.time() --Em milisegundos local now = os.time() --Em milisegundos
if now >= opentime or minetest.get_player_privs(playername).server then if now >= opentime or minetest.get_player_privs(playername).server then
local inv = modMinerTrade.getDetachedInventory(ownername) modMinerTrade.showInventory(
minetest.show_formspec(
playername, playername,
"safe_"..ownername,
modMinerTrade.getFormspec(
ownername, ownername,
modMinerTrade.translate("STRONGBOX owned by '%s':"):format(ownername) modMinerTrade.translate("STRONGBOX owned by '%s':"):format(ownername)
) )
)
else else
minetest.sound_play("sfx_failure", {player=playername, max_hear_distance=5.0,})
minetest.chat_send_player(playername, minetest.chat_send_player(playername,
core.colorize("#00ff00", "["..modMinerTrade.translate("STRONGBOX").."]: ") core.colorize("#00ff00", "["..modMinerTrade.translate("STRONGBOX").."]: ")
..modMinerTrade.translate("The safe is going to work %02d seconds after it is installed!"):format(opentime-now) ..modMinerTrade.translate("The safe is going to work %02d seconds after it is installed!"):format(opentime-now)
) )
end end
else else
minetest.sound_play("sfx_failure", {player=playername, max_hear_distance=5.0,})
minetest.chat_send_player(playername, minetest.chat_send_player(playername,
core.colorize("#00ff00", "["..modMinerTrade.translate("STRONGBOX").."]: ") core.colorize("#00ff00", "["..modMinerTrade.translate("STRONGBOX").."]: ")
..modMinerTrade.translate("You do not have access to the safe belonging to '%s'!"):format(ownername) ..modMinerTrade.translate("You do not have access to the safe belonging to '%s'!"):format(ownername)