From 2284201672b9e9d6220048f13ef61c90596ce8f9 Mon Sep 17 00:00:00 2001 From: Lunovox Date: Thu, 16 Apr 2020 15:00:01 -0300 Subject: [PATCH] =?UTF-8?q?TENTATIVA=20DE=20OTIMIZA=C3=87=C3=83O=20DE=20ME?= =?UTF-8?q?M=C3=93RIA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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". --- api.lua | 28 ++++++++++++++++++++++++---- item_dispensing_machine.lua | 8 ++++---- item_strongbox.lua | 11 ----------- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/api.lua b/api.lua index c34ad95..846736a 100644 --- a/api.lua +++ b/api.lua @@ -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 diff --git a/item_dispensing_machine.lua b/item_dispensing_machine.lua index d250511..c920d47 100644 --- a/item_dispensing_machine.lua +++ b/item_dispensing_machine.lua @@ -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 ) diff --git a/item_strongbox.lua b/item_strongbox.lua index 4812f29..6b6e3e8 100644 --- a/item_strongbox.lua +++ b/item_strongbox.lua @@ -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 = {