mirror of
https://gitlab.com/lunovox/minertrade.git
synced 2025-03-21 16:01:22 +00:00
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:
parent
8fe7da0293
commit
2284201672
3 changed files with 28 additions and 19 deletions
28
api.lua
28
api.lua
|
@ -47,7 +47,8 @@ modMinerTrade.doLoad = function()
|
||||||
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)
|
||||||
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.safe[playername] = { }
|
||||||
|
@ -58,7 +59,8 @@ end
|
||||||
|
|
||||||
|
|
||||||
modMinerTrade.getSafeInventory = function(playername)
|
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)
|
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
|
||||||
|
@ -170,6 +172,24 @@ modMinerTrade.showInventory = function(player, ownername, title)
|
||||||
)
|
)
|
||||||
end
|
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)
|
modMinerTrade.floor_pos = function(pos)
|
||||||
return {
|
return {
|
||||||
|
@ -275,7 +295,7 @@ modMinerTrade.sendMailMachine = function(posMachine, ownername, message)
|
||||||
end --if minetest.get_modpath("correio") then
|
end --if minetest.get_modpath("correio") then
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.errorDispensing = function(erroMessage, player, pos, ownername)
|
modMinerTrade.errorDispensing = function(erroMessage, player, pos, ownername)
|
||||||
if type(erroMessage)=="string" and erroMessage:trim()~="" then
|
if type(erroMessage)=="string" and erroMessage:trim()~="" then
|
||||||
if player:is_player() then
|
if player:is_player() then
|
||||||
local playername = player:get_player_name()
|
local playername = player:get_player_name()
|
||||||
|
@ -287,7 +307,7 @@ minetest.errorDispensing = function(erroMessage, player, pos, ownername)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
minetest.log(
|
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")
|
..modMinerTrade.translate("The '%s' parameter must be of the non-empty string type!"):format("erroMessage")
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
|
@ -300,7 +300,7 @@ minetest.register_on_player_receive_fields(function(sender, formname, fields)
|
||||||
modMinerTrade.setMachineFlagsAlert(pos, 0)--0 = Can send new emails
|
modMinerTrade.setMachineFlagsAlert(pos, 0)--0 = Can send new emails
|
||||||
else
|
else
|
||||||
if error_name == "owners_fault" then
|
if error_name == "owners_fault" then
|
||||||
minetest.errorDispensing(
|
modMinerTrade.errorDispensing(
|
||||||
modMinerTrade.translate(
|
modMinerTrade.translate(
|
||||||
--"The stock of '%s' is gone."
|
--"The stock of '%s' is gone."
|
||||||
"The Dispensing Machine with offer '%s' cannot deliver more items to '%s' because stock of '%s' is empty!"
|
"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
|
,sender ,pos ,ownername
|
||||||
)
|
)
|
||||||
elseif error_name == "without_space_to_profit" then
|
elseif error_name == "without_space_to_profit" then
|
||||||
minetest.errorDispensing(
|
modMinerTrade.errorDispensing(
|
||||||
modMinerTrade.translate(
|
modMinerTrade.translate(
|
||||||
"The Dispensing Machine with offer '%s' is out of space to receive customer item '%s'."
|
"The Dispensing Machine with offer '%s' is out of space to receive customer item '%s'."
|
||||||
):format(offer, sendername)
|
):format(offer, sendername)
|
||||||
,sender ,pos ,ownername
|
,sender ,pos ,ownername
|
||||||
)
|
)
|
||||||
elseif error_name == "without_space_to_offer" then
|
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!)")
|
modMinerTrade.translate("Without enough space in Dispensing Machine to receive the seller's item. (Please, empty the receiving box!)")
|
||||||
,sender
|
,sender
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
minetest.errorDispensing(
|
modMinerTrade.errorDispensing(
|
||||||
modMinerTrade.translate("The dispending can not be done. Make sure you offer what the machine asks for!")
|
modMinerTrade.translate("The dispending can not be done. Make sure you offer what the machine asks for!")
|
||||||
,sender
|
,sender
|
||||||
)
|
)
|
||||||
|
|
|
@ -64,17 +64,6 @@ minetest.register_node("minertrade:strongbox", {
|
||||||
end,
|
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({
|
minetest.register_craft({
|
||||||
output = 'minertrade:strongbox',
|
output = 'minertrade:strongbox',
|
||||||
recipe = {
|
recipe = {
|
||||||
|
|
Loading…
Add table
Reference in a new issue