mirror of
https://gitea.your-land.de/Sokomine/yl_speak_up.git
synced 2025-08-08 21:35:48 +02:00
split api_trade_inv.lua into edit_mode and normal mode
This commit is contained in:
parent
d10b394204
commit
e7369f3075
@ -116,12 +116,7 @@ yl_speak_up.trade_inv_allow_put = function(inv, listname, index, stack, player)
|
|||||||
end
|
end
|
||||||
-- allow putting something in in edit mode - but not otherwise
|
-- allow putting something in in edit mode - but not otherwise
|
||||||
if(listname == "npc_gives") then
|
if(listname == "npc_gives") then
|
||||||
local pname = player:get_player_name()
|
return 0
|
||||||
local n_id = yl_speak_up.speak_to[pname].n_id
|
|
||||||
-- only in edit mode! else the NPC manages this slot
|
|
||||||
if(not(n_id) or yl_speak_up.edit_mode[pname] ~= n_id) then
|
|
||||||
return 0
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
return stack:get_count()
|
return stack:get_count()
|
||||||
end
|
end
|
||||||
@ -170,7 +165,7 @@ yl_speak_up.trade_inv_on_take = function(inv, listname, index, stack, player)
|
|||||||
-- but only if not in edit mode
|
-- but only if not in edit mode
|
||||||
if(trade and trade.trade_done > 0
|
if(trade and trade.trade_done > 0
|
||||||
and not(trade.trade_is_trade_list)
|
and not(trade.trade_is_trade_list)
|
||||||
and yl_speak_up.edit_mode[pname] ~= trade.n_id) then
|
and not(trade.dry_run_no_exec)) then
|
||||||
local trade_inv = minetest.get_inventory({type="detached", name="yl_speak_up_player_"..pname})
|
local trade_inv = minetest.get_inventory({type="detached", name="yl_speak_up_player_"..pname})
|
||||||
-- return surplus items from the pay slot
|
-- return surplus items from the pay slot
|
||||||
local pay = trade_inv:get_stack("pay", 1)
|
local pay = trade_inv:get_stack("pay", 1)
|
||||||
|
@ -147,6 +147,7 @@ yl_speak_up.add_to_command_help_text = yl_speak_up.add_to_command_help_text..
|
|||||||
-- dofile(modpath .. "fs/fs_edit_trade_limit.lua")
|
-- dofile(modpath .. "fs/fs_edit_trade_limit.lua")
|
||||||
-- -- trade one item(stack) against one other item(stack)
|
-- -- trade one item(stack) against one other item(stack)
|
||||||
-- dofile(modpath .. "api/api_trade_inv.lua")
|
-- dofile(modpath .. "api/api_trade_inv.lua")
|
||||||
|
dofile(modpath .. "trade_in_edit_mode.lua")
|
||||||
-- dofile(modpath .. "fs/fs_do_trade_simple.lua")
|
-- dofile(modpath .. "fs/fs_do_trade_simple.lua")
|
||||||
-- handle back button diffrently when editing a trade as an action:
|
-- handle back button diffrently when editing a trade as an action:
|
||||||
dofile(modpath .. "fs/fs_do_trade_simple_in_edit_mode.lua")
|
dofile(modpath .. "fs/fs_do_trade_simple_in_edit_mode.lua")
|
||||||
|
39
editor/trade_in_edit_mode.lua
Normal file
39
editor/trade_in_edit_mode.lua
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
-- overrides for api/api_trade_inv.lua:
|
||||||
|
|
||||||
|
-- the player *can* place something into the npc_gives inventory list in edit_mode:
|
||||||
|
local old_trade_inv_allow_put = yl_speak_up.trade_inv_allow_put
|
||||||
|
yl_speak_up.trade_inv_allow_put = function(inv, listname, index, stack, player)
|
||||||
|
if(not(player)) then
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
-- allow putting something in in edit mode - but not otherwise
|
||||||
|
if(listname and listname == "npc_gives") then
|
||||||
|
local pname = player:get_player_name()
|
||||||
|
local n_id = yl_speak_up.speak_to[pname].n_id
|
||||||
|
-- only in edit mode! else the NPC manages this slot
|
||||||
|
if(n_id and yl_speak_up.in_edit_mode(pname)) then
|
||||||
|
return stack:get_count()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return old_trade_inv_allow_put(inv, listname, index, stack, player)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- prevent do_trade_simple from executing trade and reporting successful action:
|
||||||
|
local old_do_trade_simple = yl_speak_up.do_trade_simple
|
||||||
|
yl_speak_up.do_trade_simple = function(player, count)
|
||||||
|
if(not(player)) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local pname = player:get_player_name()
|
||||||
|
-- which trade are we talking about?
|
||||||
|
local trade = yl_speak_up.trade[pname]
|
||||||
|
|
||||||
|
if(trade.n_id and yl_speak_up.edit_mode[pname] == trade.n_id) then
|
||||||
|
-- instruct old_do_trade_simple to neither execute the trade nor see this
|
||||||
|
-- as an action that was executed
|
||||||
|
trade.dry_run_no_exec = true
|
||||||
|
end
|
||||||
|
return old_do_trade_simple(player, count)
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user