Created
April 24, 2023 02:39
-
-
Save MediaResAchaea/64c93c3d2e829bd03f41baf2d8f1c3e5 to your computer and use it in GitHub Desktop.
Updated zdirectory with unit pricing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function zgui.extractNumber(s) | |
local num = string.match(s, "(%d+)") | |
return tonumber(num) -- Convert the matched string to a number | |
end | |
function zgui.directoryCheck(itemCheck, cityCheck, localCheck) | |
zgui.cityList = {"Ashtan", "Cyrene", "Eleusis", "Hashan", "Mhaldor", "Targossas", "Delos"} | |
if zgui.dirCheck then | |
cecho("\n<red>Already Checking Items Please Wait") | |
else | |
zgui.dirCheck = true | |
if zgui.dirCheckTimer then killTimer(zgui.dirCheckTimer) end | |
zgui.dirCheckItem = string.lower(itemCheck) | |
zgui.dirDisplay = zgui.dirDisplay or {} | |
send("config pagelength 250", false) | |
if cityCheck then | |
zgui.dirCheckCity = string.title(cityCheck) | |
zgui.dirSingle = true | |
zgui.dirCheckTimer = tempTimer(3, [[zgui.dirCheck = false;cecho("\n <red>zgui.dirCheck timed out! Might be an error.")]]) | |
local tempTable = {} | |
if zgui.dirDisplay[zgui.dirCheckItem] ~= nil then | |
for i=1, #zgui.dirDisplay[zgui.dirCheckItem], 1 do | |
if zgui.dirDisplay[zgui.dirCheckItem][i]["City"] ~= zgui.dirCheckCity then | |
tempTable[i] = zgui.dirDisplay[zgui.dirCheckItem][i] | |
end | |
end | |
zgui.dirDisplay[zgui.dirCheckItem] = {} | |
local counter = 0 | |
for i=1, #tempTable, 1 do | |
if tempTable[i] == nil then | |
counter = counter + 1 | |
else | |
zgui.dirDisplay[zgui.dirCheckItem][i-counter] = tempTable[i] | |
end | |
end | |
else | |
zgui.dirDisplay[zgui.dirCheckItem] = {} | |
end | |
if localCheck then | |
send("directory "..zgui.dirCheckItem) | |
else | |
send("directory "..zgui.dirCheckCity.." "..zgui.dirCheckItem) | |
end | |
else | |
zgui.dirSingle = false | |
zgui.dirCheckTimer = tempTimer(18, [[zgui.dirCheck = false;cecho("\n <red>zgui.dirCheck timed out! Might be an error.")]]) | |
zgui.dirDisplay[zgui.dirCheckItem] = {} | |
zgui.dirCheckCity = zgui.cityList[1] | |
send("directory "..zgui.cityList[1].." "..zgui.dirCheckItem) | |
end | |
end | |
end | |
function zgui.showDirectoryCheck(item) | |
if zgui.dirDisplay[item] then | |
zgui.dirCheckItem = item | |
end | |
cecho("\n <coral> Results For: <ansi_yellow>"..string.title(zgui.dirCheckItem)) | |
cecho("\n---------------------------------------------------------------------------------------------------") | |
local spacer = " " | |
local cutLength1 = 15 | |
local cutLength2 = 5 | |
local cutLength3 = 33 | |
local cutLength4 = 10 | |
local cutLength5 = 25 | |
for _, row in spairs(zgui.dirDisplay[zgui.dirCheckItem], function(t,a,b) return tonumber(t[a]["Price"]) > tonumber(t[b]["Price"]) end) do | |
local roomNum = mmp.getnums(zgui.dirDisplay[zgui.dirCheckItem][_]["Location"]) | |
local count = zgui.dirDisplay[zgui.dirCheckItem][_]["Amount"] | |
local quantity = zgui.extractNumber(zgui.dirDisplay[zgui.dirCheckItem][_]["FullName"]) | |
local unitPrice | |
if quantity then | |
unitPrice = zgui.dirDisplay[zgui.dirCheckItem][_]["Price"] / tonumber(quantity) | |
else | |
unitPrice = zgui.dirDisplay[zgui.dirCheckItem][_]["Price"] | |
end | |
if not roomNum then | |
if count == 1 then | |
cecho("\n" | |
.."<gold> "..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["Price"].." per: "..unitPrice..spacer,cutLength1) | |
.."<white>"..string.cut(" "..spacer,cutLength2) | |
.."<gray>"..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["FullName"]..spacer,cutLength3) | |
.."<gray> <ansi_yellow>"..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["City"]..spacer,cutLength4) | |
.."<ansi_cyan>\("..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["Location"].."\)"..spacer,cutLength5) | |
.."<ansi_cyan> \(\?\)" | |
) | |
else | |
cecho("\n" | |
.."<gold> "..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["Price"].." per: "..unitPrice..spacer,cutLength1) | |
.."<white>"..string.cut("x"..zgui.dirDisplay[zgui.dirCheckItem][_]["Amount"]..spacer,cutLength2) | |
.."<gray>"..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["FullName"]..spacer,cutLength3) | |
.."<gray> <ansi_yellow>"..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["City"]..spacer,cutLength4) | |
.."<ansi_cyan>\("..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["Location"].."\)"..spacer,cutLength5) | |
.."<ansi_cyan> \(\?\)" | |
) | |
end | |
else | |
if count == 1 then | |
cecho("\n" | |
.."<gold> "..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["Price"].." per: "..unitPrice..spacer,cutLength1) | |
.."<white>"..string.cut(" "..spacer,cutLength2) | |
.."<gray>"..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["FullName"]..spacer,cutLength3) | |
.."<gray> <ansi_yellow>"..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["City"]..spacer,cutLength4) | |
) | |
for k,v in spairs(mmp.searchRoomExact(zgui.dirDisplay[zgui.dirCheckItem][_]["Location"])) do | |
roomid = k | |
end | |
cechoLink("<cyan>\("..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["Location"].."\)"..spacer,cutLength5), 'mmp.gotoRoom(' .. roomid .. ')', "Goto "..zgui.dirDisplay[zgui.dirCheckItem][_]["Location"], true) | |
mmp.roomEcho(zgui.dirDisplay[zgui.dirCheckItem][_]["Location"]) | |
else | |
cecho("\n" | |
.."<gold> "..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["Price"].." per: "..unitPrice..spacer,cutLength1) | |
.."<white>"..string.cut("x"..zgui.dirDisplay[zgui.dirCheckItem][_]["Amount"]..spacer,cutLength2) | |
.."<gray>"..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["FullName"]..spacer,cutLength3) | |
.."<gray> <ansi_yellow>"..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["City"]..spacer,cutLength4) | |
) | |
for k,v in spairs(mmp.searchRoomExact(zgui.dirDisplay[zgui.dirCheckItem][_]["Location"])) do | |
roomid = k | |
end | |
cechoLink("<cyan>\("..string.cut(zgui.dirDisplay[zgui.dirCheckItem][_]["Location"].."\)"..spacer,cutLength5), 'mmp.gotoRoom(' .. roomid .. ')', "Goto "..zgui.dirDisplay[zgui.dirCheckItem][_]["Location"], true) | |
mmp.roomEcho(zgui.dirDisplay[zgui.dirCheckItem][_]["Location"]) | |
end | |
end | |
end | |
cecho("\n---------------------------------------------------------------------------------------------------") | |
send("config pagelength 20", false) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment