TENTATIVA DE OTIMIZAÇÃO DE MEMÓRIA

Agora é possível apagar inventário desatarraxado quando o jogador fecha o formulário. isso provavelmente otimizará o uso da memória RAM.

Mais tarde precisarei fazer o mesmo nos mods "tradelands" e "checkinventoryplayer".
This commit is contained in:
Lunovox 2020-04-16 15:00:01 -03:00
parent 8fe7da0293
commit 2284201672
3 changed files with 28 additions and 19 deletions

28
api.lua
View file

@ -47,7 +47,8 @@ modMinerTrade.doLoad = function()
end
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)
newInv:set_list("safe", tblListInventory)
local tamanho = newInv:get_size("safe")
modMinerTrade.safe[playername] = { }
@ -58,7 +59,8 @@ end
modMinerTrade.getSafeInventory = function(playername)
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)
newInv:set_size("safe", modMinerTrade.size.width*modMinerTrade.size.height)
--local listInventory = { }
for i=1,(modMinerTrade.size.width*modMinerTrade.size.height) do
@ -170,6 +172,24 @@ modMinerTrade.showInventory = function(player, ownername, title)
)
end
modMinerTrade.delSafeInventory = function(ownername)
--core.detached_inventories["safe_"..ownername] = nil
return core.remove_detached_inventory_raw("safe_"..ownername)
--return minetest.remove_detached_inventory_raw("safe_"..ownername)
end
minetest.register_on_player_receive_fields(function(sender, formname, fields)
local sendername = sender:get_player_name()
--minetest.chat_send_player(sendername, "formname="..formname.." fields="..dump(fields))
if formname == "safe_"..sendername then -- This is your form name
if fields.quit then
modMinerTrade.doSave()
modMinerTrade.delSafeInventory(sendername)
minetest.log('action',"[STRONGBOX] "..modMinerTrade.translate("Saving strongbox from all players in the file '%s'!"):format(modMinerTrade.urlTabela))
end
end
end)
--##############################################################################
modMinerTrade.floor_pos = function(pos)
return {
@ -275,7 +295,7 @@ modMinerTrade.sendMailMachine = function(posMachine, ownername, message)
end --if minetest.get_modpath("correio") then
end
minetest.errorDispensing = function(erroMessage, player, pos, ownername)
modMinerTrade.errorDispensing = function(erroMessage, player, pos, ownername)
if type(erroMessage)=="string" and erroMessage:trim()~="" then
if player:is_player() then
local playername = player:get_player_name()
@ -287,7 +307,7 @@ minetest.errorDispensing = function(erroMessage, player, pos, ownername)
end
else
minetest.log(
"error",("[minetest.errorDispensing(erroMessage='%s', player, pos, ownername)] "):format(dump(erroMessage))
"error",("[modMinerTrade.errorDispensing(erroMessage='%s', player, pos, ownername)] "):format(dump(erroMessage))
..modMinerTrade.translate("The '%s' parameter must be of the non-empty string type!"):format("erroMessage")
)
end

View file

@ -300,7 +300,7 @@ minetest.register_on_player_receive_fields(function(sender, formname, fields)
modMinerTrade.setMachineFlagsAlert(pos, 0)--0 = Can send new emails
else
if error_name == "owners_fault" then
minetest.errorDispensing(
modMinerTrade.errorDispensing(
modMinerTrade.translate(
--"The stock of '%s' is gone."
"The Dispensing Machine with offer '%s' cannot deliver more items to '%s' because stock of '%s' is empty!"
@ -308,19 +308,19 @@ minetest.register_on_player_receive_fields(function(sender, formname, fields)
,sender ,pos ,ownername
)
elseif error_name == "without_space_to_profit" then
minetest.errorDispensing(
modMinerTrade.errorDispensing(
modMinerTrade.translate(
"The Dispensing Machine with offer '%s' is out of space to receive customer item '%s'."
):format(offer, sendername)
,sender ,pos ,ownername
)
elseif error_name == "without_space_to_offer" then
minetest.errorDispensing(
modMinerTrade.errorDispensing(
modMinerTrade.translate("Without enough space in Dispensing Machine to receive the seller's item. (Please, empty the receiving box!)")
,sender
)
else
minetest.errorDispensing(
modMinerTrade.errorDispensing(
modMinerTrade.translate("The dispending can not be done. Make sure you offer what the machine asks for!")
,sender
)

View file

@ -64,17 +64,6 @@ minetest.register_node("minertrade:strongbox", {
end,
})
minetest.register_on_player_receive_fields(function(sender, formname, fields)
local sendername = sender:get_player_name()
--minetest.chat_send_player(sendername, "formname="..formname.." fields="..dump(fields))
if formname == "safe_"..sendername then -- This is your form name
if fields.quit then
modMinerTrade.doSave()
minetest.log('action',"[STRONGBOX] "..modMinerTrade.translate("Saving strongbox from all players in the file '%s'!"):format(modMinerTrade.urlTabela))
end
end
end)
minetest.register_craft({
output = 'minertrade:strongbox',
recipe = {