Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Variables to be changed:
- local Trade_Post_Side = "right"
- local Monitor_Side = "left"
- --Don't change below here:
- local TradePost = peripheral.wrap(Trade_Post_Side)
- local Monitor = peripheral.wrap(Monitor_Side)
- local Main_Exit = false
- local Trades_Available = {}
- local Page_Number = 0
- Monitor.setTextScale(0.5)
- local Monitor_Width,Monitor_Height = Monitor.getSize()
- local Adjusted_Monitor = Monitor_Height - 3
- function Get_List()
- Trades_Available = {}
- local Villager_Info = TradePost.getVillagerIds()
- if Villager_Info ~= nil then
- for i,v in pairs(Villager_Info) do
- local Num_Of_Trades = TradePost.getNumTrades(v)
- for x=1, Num_Of_Trades do
- local Construct = {}
- Construct["VillagerID"] = v
- Construct["TradeNumber"] = x-1
- Construct["FirstBought"] = TradePost.getItemBought(v,x-1)["name"]
- Construct["FirstQTY"] = TradePost.getItemBought(v,x-1)["qty"]
- if TradePost.getSecondItemBought(v,x-1) ~= nil then
- Construct["SecondBought"] = TradePost.getSecondItemBought(v,x-1)["name"]
- Construct["SecondQTY"] = TradePost.getSecondItemBought(v,x-1)["qty"]
- end
- Construct["SoldItem"] = TradePost.getItemSold(v,x-1)["name"]
- Construct["SoldQTY"] = TradePost.getItemSold(v,x-1)["qty"]
- table.insert(Trades_Available,Construct)
- end
- end
- end
- end
- function List_Trades(page)
- Monitor_Width, Monitor_Height = Monitor.getSize()
- Adjusted_Monitor = Monitor_Height - 3
- Monitor.clear()
- Get_List()
- if Trades_Available ~= nil then
- if page < 0 then
- page = math.floor(#Trades_Available / Adjusted_Monitor)
- end
- if (page * Adjusted_Monitor) >= #Trades_Available then
- page = 0
- end
- local Display_Counter
- if #Trades_Available - (page * Adjusted_Monitor) > Adjusted_Monitor then
- Display_Counter = (page * Adjusted_Monitor) + Adjusted_Monitor
- else
- Display_Counter = #Trades_Available
- end
- for i= 1+(page * Adjusted_Monitor), Display_Counter do
- local Info = Trades_Available[i]
- Monitor.setCursorPos(1,i-(page*Adjusted_Monitor)+1)
- Monitor.write(Info["FirstQTY"].." "..Info["FirstBought"])
- if Info["SecondBought"] ~= nil then
- Monitor.write(" + "..Info["SecondQTY"].." "..Info["SecondBought"])
- end
- Monitor.setCursorPos(math.floor(Monitor_Width/2),i-(page*Adjusted_Monitor)+1)
- Monitor.write("| ->"..Info["SoldQTY"].." "..Info["SoldItem"])
- end
- end
- Monitor.setCursorPos(math.floor(Monitor_Width/4),1)
- Monitor.write("BUYING")
- Monitor.setCursorPos(Monitor_Width-math.floor(Monitor_Width/4),1)
- Monitor.write("SELLING")
- Monitor.setCursorPos(1,Monitor_Height)
- Monitor.write("Check PgUp PgDn Page:"..page)
- Monitor.setCursorPos(Monitor_Width-4,Monitor_Height)
- Monitor.write("Quit")
- return page
- end
- List_Trades(0)
- while Main_Exit == false do
- local event, side, x_pos, y_pos = os.pullEvent("monitor_touch")
- if y_pos == Monitor_Height then
- if x_pos <= 5 then
- Page_Number = List_Trades(Page_Number)
- elseif x_pos >= 7 and x_pos <= 10 then
- Page_Number = List_Trades(Page_Number+1)
- elseif x_pos >= 12 and x_pos <= 15 then
- Page_Number = List_Trades(Page_Number-1)
- elseif x_pos >= (Monitor_Width - 4) then
- Monitor.clear()
- Main_Exit = true
- end
- elseif y_pos >= 2 then
- local List_Pos = (y_pos - 1)+(Page_Number * Adjusted_Monitor)
- if Trades_Available[List_Pos] ~= nil then
- local Trade_Info = Trades_Available[List_Pos]
- TradePost.performTrade(Trade_Info["VillagerID"],Trade_Info["TradeNumber"])
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement