Renew trading formspec for formspec version 7

This commit is contained in:
Wuzzy 2024-04-09 10:24:45 +02:00
parent 268fa056cf
commit 0b1cbe15a8

View File

@ -1,5 +1,5 @@
--
-- Gold and NPC Trading
-- Gold and trading
--
local S = minetest.get_translator("rp_gold")
@ -44,7 +44,8 @@ gold.trades = {}
gold.trade_names = {}
local TRADE_FORMSPEC_OFFSET = 2.5
local TRADE_FORMSPEC_OFFSET_X = 4
local TRADE_FORMSPEC_OFFSET_Y = 1.0
if minetest.get_modpath("rp_mobs") ~= nil then
gold.trades["farmer"] = {
@ -219,22 +220,22 @@ form_trading = form_trading .. rp_formspec.get_page("rp_formspec:2part")
form_trading = form_trading .. rp_formspec.default.player_inventory
form_trading = form_trading .. "container["..TRADE_FORMSPEC_OFFSET..",0]"
form_trading = form_trading .. rp_formspec.get_hotbar_itemslot_bg(4.75, 2.25, 1, 1)
form_trading = form_trading .. "list[current_player;gold_trade_out;4.75,2.25;1,1;]"
form_trading = form_trading .. "container["..TRADE_FORMSPEC_OFFSET_X..","..TRADE_FORMSPEC_OFFSET_Y.."]"
form_trading = form_trading .. rp_formspec.get_hotbar_itemslot_bg(5, 1.25, 1, 1)
form_trading = form_trading .. "list[current_player;gold_trade_out;5,1.25;1,1;]"
form_trading = form_trading .. rp_formspec.get_itemslot_bg(1.25, 2.25, 2, 1)
form_trading = form_trading .. "list[current_player;gold_trade_in;1.25,2.25;2,1;]"
form_trading = form_trading .. rp_formspec.get_itemslot_bg(1.25, 1.25, 2, 1)
form_trading = form_trading .. "list[current_player;gold_trade_in;1.25,1.25;2,1;]"
form_trading = form_trading .. "listring[current_player;main]"
form_trading = form_trading .. "listring[current_player;gold_trade_in]"
form_trading = form_trading .. "listring[current_player;main]"
form_trading = form_trading .. "listring[current_player;gold_trade_out]"
form_trading = form_trading .. "image[3.5,1.25;1,1;ui_arrow_bg.png^[transformR270]"
form_trading = form_trading .. "image[3.5,2.25;1,1;ui_arrow.png^[transformR270]"
form_trading = form_trading .. "image[3.75,0;1,1;ui_arrow_bg.png^[transformR270]"
form_trading = form_trading .. "image[3.75,1.25;1,1;ui_arrow.png^[transformR270]"
form_trading = form_trading .. rp_formspec.button(1.25, 3.25, 2, 1, "trade", S("Trade"))
form_trading = form_trading .. rp_formspec.button(1.25, 2.5, 2, 1, "trade", S("Trade"))
form_trading = form_trading .. "container_end[]"
rp_formspec.register_page("rp_gold:trading_book", form_trading)
@ -247,7 +248,7 @@ end
-- Remember with which traders the players trade
local active_tradings = {}
-- Open the trading formspec that allows players to trade with NPCs.
-- Open the trading formspec that allows players to trade with traders.
-- * trade: Single trade table from gold.trades table
-- * trade_type: Trader type name
-- * player: Player object of player who trades
@ -284,7 +285,7 @@ function gold.trade(trade, trade_type, player, trader, trade_index, all_trades)
local trade_wanted2 = inv:get_stack("gold_trade_wanted", 2)
local form = rp_formspec.get_page("rp_gold:trading_book")
form = form .. "label[0.25,0.25;"..minetest.formspec_escape(label).."]"
form = form .. "label[0.3,0.6;"..minetest.formspec_escape(label).."]"
local trades_listed = {}
local print_item = function(itemstring)
@ -322,17 +323,17 @@ function gold.trade(trade, trade_type, player, trader, trade_index, all_trades)
end
local trades_listed_str = table.concat(trades_listed, ",")
form = form .. "tablecolumns[text]"
form = form .. "table[0.15,1.25;3.5,2.5;tradelist;"..trades_listed_str..";"..trade_index.."]"
form = form .. "table[0.3,"..TRADE_FORMSPEC_OFFSET_Y..";4.75,3.5;tradelist;"..trades_listed_str..";"..trade_index.."]"
form = form .. "container["..TRADE_FORMSPEC_OFFSET..",0]"
form = form .. "container["..TRADE_FORMSPEC_OFFSET_X..","..TRADE_FORMSPEC_OFFSET_Y.."]"
if is_repair_trade(trade) then
-- Display repairable tool as damaged so the purpose of
-- repair trades is more obvious
trade_wanted2:set_wear(58982) -- ca. 90% wear
end
form = form .. rp_formspec.fake_itemstack(1.25, 1.25, trade_wanted1)
form = form .. rp_formspec.fake_itemstack(2.25, 1.25, trade_wanted2)
form = form .. rp_formspec.fake_itemstack(4.75, 1.25, ItemStack(trade[3]))
form = form .. rp_formspec.fake_itemstack(1.25, 0, trade_wanted1)
form = form .. rp_formspec.fake_itemstack(2.5, 0, trade_wanted2)
form = form .. rp_formspec.fake_itemstack(5, 0, ItemStack(trade[3]))
form = form .. "container_end[]"
minetest.show_formspec(name, "rp_gold:trading_book", form)