Trade: (WIP) Add working dedicated trading. Need to add offer re-generation.
This commit is contained in:
parent
4b839ebc06
commit
a763516977
@ -148,6 +148,13 @@ function npc.trade.show_dedicated_trade_formspec(self, player, offers_type)
|
|||||||
|
|
||||||
formspec = formspec .. "button_exit[2.5,7.9;3.9,0.5;exit;Nevermind]"
|
formspec = formspec .. "button_exit[2.5,7.9;3.9,0.5;exit;Nevermind]"
|
||||||
|
|
||||||
|
-- Create entry into results table
|
||||||
|
npc.trade.results.trade_offers[player:get_player_name()] = {
|
||||||
|
offers_type = offers_type,
|
||||||
|
offers = offers,
|
||||||
|
npc = self
|
||||||
|
}
|
||||||
|
|
||||||
minetest.show_formspec(player:get_player_name(), "advanced_npc:dedicated_trading_offers", formspec)
|
minetest.show_formspec(player:get_player_name(), "advanced_npc:dedicated_trading_offers", formspec)
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -433,7 +440,7 @@ end
|
|||||||
-- Handler for chat formspec
|
-- Handler for chat formspec
|
||||||
minetest.register_on_player_receive_fields(function (player, formname, fields)
|
minetest.register_on_player_receive_fields(function (player, formname, fields)
|
||||||
-- Additional checks for other forms should be handled here
|
-- Additional checks for other forms should be handled here
|
||||||
-- Handle yes/no dialogue
|
-- Handle casual trade dialogue
|
||||||
if formname == "advanced_npc:trade_offer" then
|
if formname == "advanced_npc:trade_offer" then
|
||||||
local player_name = player:get_player_name()
|
local player_name = player:get_player_name()
|
||||||
|
|
||||||
@ -449,6 +456,23 @@ minetest.register_on_player_receive_fields(function (player, formname, fields)
|
|||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
elseif formname == "advanced_npc:dedicated_trading_offers" then
|
||||||
|
local player_name = player:get_player_name()
|
||||||
|
|
||||||
|
if fields then
|
||||||
|
local player_response = npc.trade.results.trade_offers[player_name]
|
||||||
|
-- Unlock the action timer
|
||||||
|
npc.unlock_actions(player_response.npc)
|
||||||
|
|
||||||
|
local trade_offers = npc.trade.results.trade_offers[player_name].offers
|
||||||
|
-- Check which price was clicked
|
||||||
|
for i = 1, #trade_offers do
|
||||||
|
local price_button = "price"..tostring(i)
|
||||||
|
if fields[price_button] then
|
||||||
|
npc.trade.perform_trade(player_response.npc, player_name, trade_offers[i])
|
||||||
|
--minetest.log("Player selected: "..dump(trade_offers[i]))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end)
|
end)
|
Loading…
Reference in New Issue
Block a user