Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DigitalWarzone/5764d7aa933ba701c2c9a837b4c9d825 to your computer and use it in GitHub Desktop.
Save DigitalWarzone/5764d7aa933ba701c2c9a837b4c9d825 to your computer and use it in GitHub Desktop.
Updated zdirectory with unit pricing
function zgui.extractNumber(s)
local num = 1
if string.match(s, "(%d+)") then
num = string.match(s, "(%d+)")
end
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 {}
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 = 8
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"]) / zgui.extractNumber(t[a]["FullName"]) ) > ( tonumber(t[b]["Price"]) / zgui.extractNumber(t[b]["FullName"]) ) 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 > 1 then
unitPrice = math.ceil(zgui.dirDisplay[zgui.dirCheckItem][_]["Price"] / tonumber(quantity))
cecho("\n".."<white>u")
else
unitPrice = zgui.dirDisplay[zgui.dirCheckItem][_]["Price"]
cecho("\n".." ")
end
cecho("<gold>"..string.cut(unitPrice..spacer,cutLength1))
if not roomNum then
if count == 1 then
cecho(
"<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(
"<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(
"<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(
"<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---------------------------------------------------------------------------------------------------")
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment