1
0
Bifurcation 0

Fixed LostIsles coord issue. Restructured collectors to output tables only.

Cette révision appartient à :
Nathanial.C.Jones 2011-01-21 01:06:11 +00:00
Parent f6710e075b
révision e1f08c9146
10 fichiers modifiés avec 128 ajouts et 75 suppressions

Voir le fichier

@ -27,7 +27,9 @@ local function ScanAchievements(oldADB, newADB)
if v.complete ~= oldADB.achievements[k].complete then
QuestHelper: Assert(v.complete and not oldADB.achievements[k].complete)
if not QHCA[k] then QHCA[k] = {} end
QHCA[k].achieved = (QHCA[k].achieved or "") .. cloc
if not QHCA[k].achieved then QHCA[k].achieved = {} end
table.insert(QHCA[k].achieved, cloc)
--QHCA[k].achieved = (QHCA[k].achieved or "") .. cloc
--QuestHelper:TextOut(string.format("Achievement complete, %s", select(2, GetAchievementInfo(k))))
end
@ -38,7 +40,9 @@ local function ScanAchievements(oldADB, newADB)
--QuestHelper:TextOut(string.format("Criteria complete, %d", k))
--QuestHelper:TextOut(string.format("Criteria complete, %s", select(1, GetAchievementCriteriaInfo(k))))
if not QHCA[v.parent] then QHCA[v.parent] = {} end
QHCA[v.parent][k] = (QHCA[v.parent][k] or "") .. cloc
if not QHCA[v.parent][k] then QHCA[v.parent][k] = {} end
table.insert(QHCA[v.parent][k], cloc)
--QHCA[v.parent][k] = (QHCA[v.parent][k] or "") .. cloc
elseif v.progress > oldADB.criteria[k].progress then
--QuestHelper:TextOut(string.format("Criteria progress, %d", k))
--QuestHelper:TextOut(string.format("Criteria progress, %s", select(1, GetAchievementCriteriaInfo(k))))

Voir le fichier

@ -6,6 +6,19 @@ if QuestHelper_File["collect_loot.lua"] == "Development Version" then debug_outp
local QHC
local PseudoIDs = {
["gold"] = -1,
["Dwarf"] = -2,
["Troll"] = -3,
["Fossil"] = -4,
["Night Elf"] = -5,
["Nerubian"] = -6,
["Vrykul"] = -7,
["Draenei"] = -8,
["Orc"] = -9,
["Tol'vir"] = -10,
}
local GetMonsterUID
local GetMonsterType
@ -446,9 +459,13 @@ local function LootOpened()
if IsFishingLoot() then
-- yaaaaay
--if debug_output then QuestHelper:TextOut("Fishing loot") end
local loc = "(" .. GetLoc() .. ")"
if not QHC.fishing[loc] then QHC.fishing[loc] = {} end
spot = QHC.fishing[loc]
local loc = GetLoc()
if not QHC.fishing[loc.delayed] then QHC.fishing[loc.delayed] = {} end
if not QHC.fishing[loc.delayed][loc.c] then QHC.fishing[loc.delayed][loc.c] = {} end
if not QHC.fishing[loc.delayed][loc.c][loc.z] then QHC.fishing[loc.delayed][loc.c][loc.z] = {} end
if not QHC.fishing[loc.delayed][loc.c][loc.z][loc.x] then QHC.fishing[loc.delayed][loc.c][loc.z][loc.x] = {} end
if not QHC.fishing[loc.delayed][loc.c][loc.z][loc.x][loc.y] then QHC.fishing[loc.delayed][loc.c][loc.z][loc.x][loc.y] = {} end
spot = QHC.fishing[loc.delayed][loc.c][loc.z][loc.x][loc.y]
prefix = "fish"
elseif pickpocket_phase == PP_PHASE_COMPLETE and pickpocket_timestamp and pickpocket_timestamp + 1 > GetTime() and targetguid == pickpocket_otarget_guid then
@ -505,33 +522,36 @@ local function LootOpened()
monsterrefresh[targetguid] = GetTime() + 2
else
--if debug_output then QuestHelper:TextOut("Who knows") end -- ugh
local loc = "(" .. GetLoc() .. ")"
if not QHC.worldloot[loc] then QHC.worldloot[loc] = {} end
spot = QHC.worldloot[loc]
local loc = GetLoc()
if not QHC.worldloot[loc.delayed] then QHC.fishing[loc.delayed] = {} end
if not QHC.worldloot[loc.delayed][loc.c] then QHC.fishing[loc.delayed][loc.c] = {} end
if not QHC.worldloot[loc.delayed][loc.c][loc.z] then QHC.fishing[loc.delayed][loc.c][loc.z] = {} end
if not QHC.worldloot[loc.delayed][loc.c][loc.z][loc.x] then QHC.fishing[loc.delayed][loc.c][loc.z][loc.x] = {} end
if not QHC.worldloot[loc.delayed][loc.c][loc.z][loc.x][loc.y] then QHC.fishing[loc.delayed][loc.c][loc.z][loc.x][loc.y] = {} end
spot = QHC.worldloot[loc.delayed][loc.c][loc.z][loc.x][loc.y]
prefix = "loot"
end
local items = {}
items.gold = 0
items[pseudoIDs["gold"]] = 0
for i = 1, GetNumLootItems() do
_, name, quant, _ = GetLootSlotInfo(i)
link = GetLootSlotLink(i)
if quant == 0 then
-- moneys
local _, _, amount = string.find(name, Patterns.GOLD_AMOUNT)
if amount then items.gold = items.gold + tonumber(amount) * 10000 end
local _, _, amount = string.find(name, Patterns.SILVER_AMOUNT)
if amount then items.gold = items.gold + tonumber(amount) * 100 end
local _, _, amount = string.find(name, Patterns.COPPER_AMOUNT)
if amount then items.gold = items.gold + tonumber(amount) * 1 end
local tot = 0
local _, _, gold = string.find(name, Patterns.GOLD_AMOUNT)
local _, _, silver = string.find(name, Patterns.SILVER_AMOUNT)
local _, _, copper = string.find(name, Patterns.COPPER_AMOUNT)
tot = (tonumber(gold) or 0) * 10000 + (tonumber(silver) or 0) * 100 + (tonumber(copper) or 0) * 1
items[pseudoIDs["gold"]] = tot
else
if string.find(name, "Archaeology Fragment") then
items[name] = (items[name] or 0) + quant
local _, _, match = string.find(name, "(.*) Archaeology Fragment")
items[pseudoIDs[match]] = (items[pseudoIDs[match]] or 0) + quant
else
local itype = GetItemType(link)
items[itype] = (items[itype] or 0) + quant
@ -539,9 +559,10 @@ local function LootOpened()
end
end
spot[prefix .. "_count"] = (spot[prefix .. "_count"] or 0) + 1
if not spot[prefix .. "_loot"] then spot[prefix .. "_loot"] = {} end
local pt = spot[prefix .. "_loot"]
if not spot[prefix] then spot[prefix] = {}
spot[prefix]["count"] = (spot[prefix]["count"] or 0) + 1
if not spot[prefix]["loot"] then spot[prefix]["loot"] = {} end
local pt = spot[prefix]["loot"]
for k, v in pairs(items) do
if v > 0 then pt[k] = (pt[k] or 0) + v end
end

Voir le fichier

@ -80,7 +80,12 @@ local function MouseoverUnit()
end
end
QuestHelper: Assert(minrange >= 0 and minrange < 256 and maxrange >= 0 and maxrange < 256)
Merger.Add(critter, string.format("(%s %s %s),", GetLoc(), tostring(minrange), tostring(maxrange))) --strchar(minrange, maxrange))
local data = {}
data.loc = GetLoc()
data.minrange = minrange
data.maxrange = maxrange
table.insert(critter, data)
--Merger.Add(critter, string.format("(%s %s %s),", GetLoc(), tostring(minrange), tostring(maxrange))) --strchar(minrange, maxrange))
if #recentlySeenCritters_Recent >= 100 then
for k, v in recentlySeenCritters_NextTrash do

Voir le fichier

@ -88,7 +88,20 @@ local function Tooltipy(self)
-- We have no unique identifier, so I'm just going to record every position we see. That said, I wonder if it's a good idea to add a cooldown.
-- Obviously, we also have no possible range data, so, welp.
Merger.Add(qhci, "(" .. GetLoc() .. ")", true)
local loc = GetLoc()
local contained = false
for _, v in pairs(qhci) do
if v.delayed then
if v.delayed == loc.delayed and
v.c == loc.c and v.z == loc.z and
v.x == loc.x and v.y == loc.y then
contained = true
break
end
end
end
if not contained then table.insert(qhci, loc)
--Merger.Add(qhci, "(" .. GetLoc() .. ")", true)
end
end

Voir le fichier

@ -152,7 +152,7 @@ local function Looted(message)
if type(ltype) ~= "number" then
error(string.format("Expected a number but got a %s.", type(ltype)) .. "The value is:" .. ltype)
end
table.insert(eventy, {time = GetTime(), event = string.format("I%di", ltype)})
table.insert(eventy, {time = GetTime(), event = {type = "item", value = ltype}})
--if debug_output then QuestHelper:TextOut(string.format("Added event %s", string.format("I%di", ltype))) end
end
@ -160,7 +160,7 @@ local function Combat(_, event, _, _, _, guid)
if event ~= "UNIT_DIED" then return end
if not IsMonsterGUID(guid) then return end
local mtype = GetMonsterType(guid, true)
table.insert(eventy, {time = GetTime(), event = string.format("M%dm", mtype)})
table.insert(eventy, {time = GetTime(), event = { type = "monster", value = mtype}})
--if debug_output then QuestHelper:TextOut(string.format("Added event %s", string.format("M%dm", mtype))) end
end
@ -180,19 +180,25 @@ local function WatchUpdate() -- we're currently ignoring the ID of the quest th
end
local function AppendMember(tab, key, dat)
tab[key] = (tab[key] or "") .. dat
if not tab[key] then tab[key] = {} end
table.insert(tab[key], dat)
--tab[key] = (tab[key] or "") .. dat
end
local function StartOrEnd(se, id)
local targuid = UnitGUID("target")
local chunk = ""
local chunk = {}
if targuid and IsMonsterGUID(targuid) then
chunk = string.format("M%dm", GetMonsterType(targuid))
chunk.m = GetMonsterType(targuid)
end
chunk = chunk .. "(" .. GetLoc() ..")"
chunk.loc = GetLoc()
chunk.spec = GetSpecBolus()
AppendMember(QHCQ[id], se, chunk)
AppendMember(QHCQ[id], se .. "_spec", GetSpecBolus())
if not QHCQ[id][se] then QHCQ[id][se] = {} end
table.insert(QHCQ[id][se], chunk)
--AppendMember(QHCQ[id], se, chunk)
--AppendMember(QHCQ[id], se .. "_spec", GetSpecBolus())
end
local abandoncomplete = ""
@ -274,34 +280,27 @@ local function UpdateQuests()
QuestHelper: Assert(#deebey[k] == #noobey[k], string.format("%d vs %d, %d", #deebey[k], #noobey[k], k))
for i = 1, #deebey[k] do
--[[
if not (noobey[k][i] >= deebey[k][i]) then
QuestHelper:TextOut(string.format("%s, %s", type(noobey[k][i]), type(deebey[k][i])))
QuestHelper:TextOut(string.format("%d, %d", noobey[k][i], deebey[k][i]))
for index = 1, 100 do
local qlink = GetQuestLink(index)
if qlink then qlink = GetQuestType(qlink) end
if qlink == k then
QuestHelper:TextOut(GetQuestLogLeaderBoard(i, index))
end
end
end
QuestHelper: Assert(noobey[k][i] >= deebey[k][i]) -- man I hope this is true]] -- This entire section can fail if people throw away quest items, or if quest items have a duration that expires. Sigh.
if noobey[k][i] > deebey[k][i] then
if not token then
token = ""
for k, v in pairs(eventy) do token = token .. v.event end
token = {}
token["events"] = {}
for k, v in pairs(eventy) do table.insert(token.events, = v.event) end
debugtok = token
token = token .. "(" .. GetLoc() .. ")"
token["loc"] = GetLoc()
--token = token .. "(" .. GetLoc() .. ")"
end
local ttok = token
if noobey[k][i] - 1 ~= deebey[k][i] then
ttok = string.format("C%dc", noobey[k][i] - deebey[k][i]) .. ttok
--ttok = string.format("C%dc", noobey[k][i] - deebey[k][i]) .. ttok
if not ttok["Cdc"] then ttok["Cdc"] = {} end
table.insert(ttok["Cdc"], noobey[k][i] - deebey[k][i])
end
AppendMember(QHCQ[k], string.format("criteria_%d_satisfied", i), ttok)
if not QHCQ[k]["criteria_satisfied"] then QHCQ[k]["criteria_satisfied"] = {} end
if not QHCQ[k]["criteria_satisfied"][i] then QHCQ[k]["criteria_satisfied"][i] = {} end
table.insert(QHCQ[k]["criteria_satisfied"][i], ttok)
--AppendMember(QHCQ[k], string.format("criteria_%d_satisfied", i), ttok)
if debug_output then QuestHelper:TextOut(string.format("Updated! Questid %d item %d count %d tok %s", k, i, noobey[k][i] - deebey[k][i], debugtok)) end
diffs = diffs + 1

Voir le fichier

@ -42,30 +42,27 @@ local function GetSpecBolus()
--[[ assert(racelookup[race]) ]]
--local bso = Bitstream.Output(8)
local talents = {}
for t = 1, GetNumTalentTabs() do -- come on. Is this ever not going to be 3? Seriously?
if t == 1 then
talstr = talstr .. "("
else
talstr = talstr .. ",("
end
talents[t] = {}
for ta = 1, GetNumTalents(t) do
local _, _, _, _, rank, _ = GetTalentInfo(t, ta)
if ta == 1 then
talstr = talstr .. rank
else
talstr = talstr .. "," .. rank
end
talents[t][ta] = rank
--bso:append(rank, 3)
end
talstr = talstr .. ")"
--bso:append(6, 3) -- no 6-point talents, so we use this as an end-of-tree market
end
talstr = talstr .. ")"
--bso:append(7, 3) -- end-of-spec! because of *all of those 4-tree classes*
--return string.format("2%s%s%02d", classlookup[id], racelookup[race] or "", level) .. bso:finish()
return string.format("(2%s,%s,%02d)", classlookup[id], racelookup[race] or "", level) .. talstr
local spec = {}
spec.talents = talents
spec.class = classlookup[id]
spec.race = racelookup[id] or ""
spec.level = level
--return string.format("(2%s,%s,%02d)", classlookup[id], racelookup[race] or "", level) .. talstr
return spec
end
function QH_Collect_Spec_Init(_, API)

Voir le fichier

@ -49,15 +49,17 @@ local dy = {0, 1, 0, -1}
local function InitWorking()
QHCT.working = {}
QHCT.working.prefix = ""
QHCT.working.prefix = {}
end
local function AddDataPrefix(data)
QHCT.working.prefix = QHCT.working.prefix .. data
table.insert(QHCT.working.prefix, data)
--QHCT.working.prefix = QHCT.working.prefix .. data
end
local function AddData(data)
Merger.Add(QHCT.working, data)
table.insert(QHCT.working, data)
--Merger.Add(QHCT.working, data)
end
local function FinishData()
@ -137,6 +139,8 @@ local function QH_Collect_Traveled_Point(c, x, y, rc, rz)
cc, cx, cy, cd = c, nx, ny, 1
swim, mount, flying, taxi = false, false, false, false
local b = Bolus(c, x, y, rc, rz)
b.faction = QuestHelper:PlayerFaction()
AddDataPrefix(Bolus(c, x, y, rc, rz) .. strchar(tostring(QuestHelper:PlayerFaction()))) -- The playerfaction can be removed, as it's now encoded in the collection shard. Not removing it for compatibility reasons.
end

Voir le fichier

@ -43,7 +43,9 @@ local function OnUpdate()
if last_warp + 10 < GetTime() and leapy then
if debug_output then QuestHelper:TextOut("REAL Warpy!") end
Merger.Add(QHCW, "(" .. lastloc_bolus .. ")(" .. bolus .. ")")
local warpy = { last = lastloc_bolus, current = bolus }
table.insert(QHCW, warpy)
--Merger.Add(QHCW, "(" .. lastloc_bolus .. ")(" .. bolus .. ")")
last_warp = GetTime()
end
end

Voir le fichier

@ -23,9 +23,12 @@ local function DoZoneUpdate(label, debugverbose)
QHCZ[zname].mapname = GetMapInfo()
local loc = GetLoc()
if loc == "\000\000\000\000\000\000€€€" then return end -- this is kind of the "null value"
if loc.delayed == 128 and loc.c == 0 and loc.z == 0 and loc.x == -128 and loc.y == -128 then return end
--if loc == "€\000\000\000€\000\000\000€€€" then return end -- this is kind of the "null value"
local found = false
Merger.Add(znl, loc, true)
-- Commented out, 'cause this module isn't really loaded anymore. I'll remove it after the next commit.
--Merger.Add(znl, loc, true)
end
local function OnEvent()

Voir le fichier

@ -286,15 +286,20 @@ function load_graph_links()
coord[1] = 198
end
-- I hate Blizzard... They can't make up their mind weather we are on LostIsles or Hyjal_terrain1, but we only seem to be on one or the other.
if (coord[1] == 208 or coord[1] == 209) and not QuestHelper_ZoneLookup[coord[1]] then
coord[1] = 181
elseif (coord[1] == 181 or coord[1] == 209) and not QuestHelper_ZoneLookup[coord[1]] then
-- I hate Blizzard... They can't make up their mind weather we are on LostIsles, LostIsles_terrain1 or LostIsles_terrain2, but we only seem to be on one.
-- Trust me when I say that unless there's more terrains for LostIsles, this does NOT loop back to coord[1] == 181.
if not QuestHelper_ZoneLookup[coord[1]] and coord[1] == 181 then
coord[1] = 208
elseif (coord[1] == 181 or coord[1] == 208) and not QuestHelper_ZoneLookup[coord[1]] then
end
if not QuestHelper_ZoneLookup[coord[1]] and coord[1] == 208 then
coord[1] = 209
end
if not QuestHelper_ZoneLookup[coord[1]] and coord[1] == 209 then
coord[1] = 181
end
QuestHelper: Assert(QuestHelper_ZoneLookup[coord[1]], string.format("Coord[1] = %d", coord[1]))
local c, x, y = QuestHelper.Astrolabe:GetAbsoluteContinentPosition(QuestHelper_ZoneLookup[coord[1]][1], QuestHelper_ZoneLookup[coord[1]][2], coord[2], coord[3])
QuestHelper: Assert(c)