Mercurial > wow > wowdb-profiler
comparison Main.lua @ 133:a6e36b3f51d6 1.0.11
Ensure that the NPC data we're looking at when visiting a merchant remains unchanged until MERCHANT_CLOSE fires. Bumped DB version to 8.
author | James D. Callahan III <jcallahan@curse.com> |
---|---|
date | Mon, 24 Sep 2012 11:59:30 -0500 |
parents | 05b77c08b211 |
children | 3b9d44976319 |
comparison
equal
deleted
inserted
replaced
132:05b77c08b211 | 133:a6e36b3f51d6 |
---|---|
29 | 29 |
30 | 30 |
31 ----------------------------------------------------------------------- | 31 ----------------------------------------------------------------------- |
32 -- Local constants. | 32 -- Local constants. |
33 ----------------------------------------------------------------------- | 33 ----------------------------------------------------------------------- |
34 local DB_VERSION = 7 | 34 local DB_VERSION = 8 |
35 | 35 |
36 | 36 |
37 local DATABASE_DEFAULTS = { | 37 local DATABASE_DEFAULTS = { |
38 char = {}, | 38 char = {}, |
39 global = { | 39 global = { |
63 GUILDBANKFRAME_OPENED = true, | 63 GUILDBANKFRAME_OPENED = true, |
64 ITEM_TEXT_BEGIN = true, | 64 ITEM_TEXT_BEGIN = true, |
65 LOOT_CLOSED = true, | 65 LOOT_CLOSED = true, |
66 LOOT_OPENED = true, | 66 LOOT_OPENED = true, |
67 MAIL_SHOW = true, | 67 MAIL_SHOW = true, |
68 MERCHANT_CLOSED = true, | |
68 MERCHANT_SHOW = "UpdateMerchantItems", | 69 MERCHANT_SHOW = "UpdateMerchantItems", |
69 MERCHANT_UPDATE = "UpdateMerchantItems", | 70 MERCHANT_UPDATE = "UpdateMerchantItems", |
70 PET_BAR_UPDATE = true, | 71 PET_BAR_UPDATE = true, |
71 PET_JOURNAL_LIST_UPDATE = true, | 72 PET_JOURNAL_LIST_UPDATE = true, |
72 PLAYER_TARGET_CHANGED = true, | 73 PLAYER_TARGET_CHANGED = true, |
1230 | 1231 |
1231 if not loot_guid_registry[source_guid] then | 1232 if not loot_guid_registry[source_guid] then |
1232 local loot_quantity = loot_info[loot_index + 1] | 1233 local loot_quantity = loot_info[loot_index + 1] |
1233 local source_type, source_id = ParseGUID(source_guid) | 1234 local source_type, source_id = ParseGUID(source_guid) |
1234 -- TODO: Remove debugging | 1235 -- TODO: Remove debugging |
1235 -- local source_key = ("%s:%d"):format(private.UNIT_TYPE_NAMES[source_type + 1], source_id) | 1236 -- local source_key = ("%s:%d"):format(private.UNIT_TYPE_NAMES[source_type + 1], source_id) |
1236 -- print(("GUID: %s - Type:ID: %s - Amount: %d"):format(loot_info[loot_index], source_key, loot_quantity)) | 1237 -- print(("GUID: %s - Type:ID: %s - Amount: %d"):format(loot_info[loot_index], source_key, loot_quantity)) |
1237 | 1238 |
1238 local item_id = ItemLinkToID(_G.GetLootSlotLink(loot_slot)) | 1239 local item_id = ItemLinkToID(_G.GetLootSlotLink(loot_slot)) |
1239 current_loot.sources[source_guid] = current_loot.sources[source_guid] or {} | 1240 current_loot.sources[source_guid] = current_loot.sources[source_guid] or {} |
1240 current_loot.sources[source_guid][item_id] = current_loot.sources[source_guid][item_id] or 0 + loot_quantity | 1241 current_loot.sources[source_guid][item_id] = current_loot.sources[source_guid][item_id] or 0 + loot_quantity |
1241 guids_used[source_guid] = true | 1242 guids_used[source_guid] = true |
1277 | 1278 |
1278 local ITEM_REQ_REPUTATION_MATCH = "Requires (.-) %- (.*)" | 1279 local ITEM_REQ_REPUTATION_MATCH = "Requires (.-) %- (.*)" |
1279 local ITEM_REQ_QUEST_MATCH1 = "Requires: .*" | 1280 local ITEM_REQ_QUEST_MATCH1 = "Requires: .*" |
1280 local ITEM_REQ_QUEST_MATCH2 = "Must have completed: .*" | 1281 local ITEM_REQ_QUEST_MATCH2 = "Must have completed: .*" |
1281 | 1282 |
1283 local current_merchant | |
1284 local merchant_standing | |
1285 | |
1286 function WDP:MERCHANT_CLOSED(event_name) | |
1287 current_merchant = nil | |
1288 merchant_standing = nil | |
1289 end | |
1290 | |
1291 | |
1282 function WDP:UpdateMerchantItems(event_name) | 1292 function WDP:UpdateMerchantItems(event_name) |
1283 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("target")) | 1293 if not current_merchant then |
1284 | 1294 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("target")) |
1285 if unit_type ~= private.UNIT_TYPES.NPC or not unit_idnum then | 1295 |
1286 return | 1296 if unit_type ~= private.UNIT_TYPES.NPC or not unit_idnum then |
1287 end | 1297 return |
1298 end | |
1299 merchant_standing = select(2, UnitFactionStanding("target")) | |
1300 current_merchant = NPCEntry(unit_idnum) | |
1301 current_merchant.sells = current_merchant.sells or {} | |
1302 end | |
1303 local num_items = _G.GetMerchantNumItems() | |
1288 local current_filters = _G.GetMerchantFilter() | 1304 local current_filters = _G.GetMerchantFilter() |
1289 local _, merchant_standing = UnitFactionStanding("target") | |
1290 local merchant = NPCEntry(unit_idnum) | |
1291 merchant.sells = merchant.sells or {} | |
1292 | |
1293 _G.SetMerchantFilter(_G.LE_LOOT_FILTER_ALL) | 1305 _G.SetMerchantFilter(_G.LE_LOOT_FILTER_ALL) |
1294 _G.MerchantFrame_Update() | 1306 _G.MerchantFrame_Update() |
1295 | |
1296 local num_items = _G.GetMerchantNumItems() | |
1297 | 1307 |
1298 for item_index = 1, num_items do | 1308 for item_index = 1, num_items do |
1299 local _, _, copper_price, stack_size, num_available, _, extended_cost = _G.GetMerchantItemInfo(item_index) | 1309 local _, _, copper_price, stack_size, num_available, _, extended_cost = _G.GetMerchantItemInfo(item_index) |
1300 local item_id = ItemLinkToID(_G.GetMerchantItemLink(item_index)) | 1310 local item_id = ItemLinkToID(_G.GetMerchantItemLink(item_index)) |
1301 | 1311 |
1381 | 1391 |
1382 for currency_index = 1, #currency_list do | 1392 for currency_index = 1, #currency_list do |
1383 price_string = ("%s:%s"):format(price_string, currency_list[currency_index]) | 1393 price_string = ("%s:%s"):format(price_string, currency_list[currency_index]) |
1384 end | 1394 end |
1385 end | 1395 end |
1386 merchant.sells[item_id] = ("%s:%s:[%s]"):format(num_available, stack_size, price_string) | 1396 current_merchant.sells[item_id] = ("%s:%s:[%s]"):format(num_available, stack_size, price_string) |
1387 end | 1397 end |
1388 end | 1398 end |
1389 | 1399 |
1390 if _G.CanMerchantRepair() then | 1400 if _G.CanMerchantRepair() then |
1391 merchant.can_repair = true | 1401 current_merchant.can_repair = true |
1392 end | 1402 end |
1393 _G.SetMerchantFilter(current_filters) | 1403 _G.SetMerchantFilter(current_filters) |
1394 _G.MerchantFrame_Update() | 1404 _G.MerchantFrame_Update() |
1395 end | 1405 end |
1396 end -- do-block | 1406 end -- do-block |