Mercurial > wow > wowdb-profiler
comparison Main.lua @ 468:0997fb63abeb
Fixed bugs caused by attempting mathematical operations on 'nil' results from HereBeDragons.
| author | Caleb Atherton <catherton@curse.com> |
|---|---|
| date | Sun, 19 Jun 2016 20:46:23 -0400 |
| parents | eb87dbc295b3 |
| children | fd48b8d72f13 |
comparison
equal
deleted
inserted
replaced
| 467:a463db95c1b6 | 468:0997fb63abeb |
|---|---|
| 373 end | 373 end |
| 374 | 374 |
| 375 | 375 |
| 376 local function CurrentLocationData() | 376 local function CurrentLocationData() |
| 377 local x, y, current_area_id, map_level = HereBeDragons:GetPlayerZonePosition(true) | 377 local x, y, current_area_id, map_level = HereBeDragons:GetPlayerZonePosition(true) |
| 378 local zone_name = _G.GetRealZoneText() | |
| 378 | 379 |
| 379 -- Put coordinates into expected format (as integers, they don't get a billion decimals output in the SavedVariables) | 380 -- Put coordinates into expected format (as integers, they don't get a billion decimals output in the SavedVariables) |
| 380 local x_int = _G.floor(x * 1000) | 381 local x_int = nil |
| 381 local y_int = _G.floor(y * 1000) | 382 if (x and type(x) == "number") then |
| 382 if x_int % 2 ~= 0 then | 383 x_int = _G.floor(x * 1000) |
| 383 x_int = x_int + 1 | 384 if x_int % 2 ~= 0 then |
| 384 end | 385 x_int = x_int + 1 |
| 385 if y_int % 2 ~= 0 then | 386 end |
| 386 y_int = y_int + 1 | 387 end |
| 387 end | 388 local y_int = nil |
| 388 | 389 if (y and type(y) == "number") then |
| 389 return _G.GetRealZoneText(), current_area_id, x_int, y_int, map_level, InstanceDifficultyToken() | 390 y_int = _G.floor(y * 1000) |
| 391 if y_int % 2 ~= 0 then | |
| 392 y_int = y_int + 1 | |
| 393 end | |
| 394 end | |
| 395 | |
| 396 return zone_name, current_area_id, x_int, y_int, map_level, InstanceDifficultyToken() | |
| 390 end | 397 end |
| 391 | 398 |
| 392 | 399 |
| 393 local function DBEntry(data_type, unit_id) | 400 local function DBEntry(data_type, unit_id) |
| 394 if not data_type or not unit_id then | 401 if not data_type or not unit_id then |
| 451 if not identifier then | 458 if not identifier then |
| 452 return | 459 return |
| 453 end | 460 end |
| 454 local zone_name, area_id, x, y, map_level, difficulty_token = CurrentLocationData() | 461 local zone_name, area_id, x, y, map_level, difficulty_token = CurrentLocationData() |
| 455 if not (zone_name and area_id and x and y and map_level) then | 462 if not (zone_name and area_id and x and y and map_level) then |
| 456 Debug("UpdateDBEntryLocation: Missing current location data - %s, %d, %d, %d, %d.", zone_name, area_id, x, y, map_level) | 463 Debug("UpdateDBEntryLocation: Missing current location data - %s, %s, %s, %s, %s.", tostring(zone_name), tostring(area_id), tostring(x), tostring(y), tostring(map_level)) |
| 457 return | 464 return |
| 458 end | 465 end |
| 459 local entry = DBEntry(entry_type, identifier) | 466 local entry = DBEntry(entry_type, identifier) |
| 460 entry[difficulty_token] = entry[difficulty_token] or {} | 467 entry[difficulty_token] = entry[difficulty_token] or {} |
| 461 entry[difficulty_token].locations = entry[difficulty_token].locations or {} | 468 entry[difficulty_token].locations = entry[difficulty_token].locations or {} |
| 1146 if not npc then | 1153 if not npc then |
| 1147 return | 1154 return |
| 1148 end | 1155 end |
| 1149 local zone_name, area_id, x, y, map_level, difficulty_token = CurrentLocationData() | 1156 local zone_name, area_id, x, y, map_level, difficulty_token = CurrentLocationData() |
| 1150 if not (zone_name and area_id and x and y and map_level) then | 1157 if not (zone_name and area_id and x and y and map_level) then |
| 1151 Debug("UpdateTargetLocation: Missing current location data - %s, %d, %d, %d, %d.", zone_name, area_id, x, y, map_level) | 1158 Debug("UpdateTargetLocation: Missing current location data - %s, %s, %s, %s, %s.", tostring(zone_name), tostring(area_id), tostring(x), tostring(y), tostring(map_level)) |
| 1152 return | 1159 return |
| 1153 end | 1160 end |
| 1154 local npc_data = npc:EncounterData(difficulty_token).stats[("level_%d"):format(_G.UnitLevel("target"))] | 1161 local npc_data = npc:EncounterData(difficulty_token).stats[("level_%d"):format(_G.UnitLevel("target"))] |
| 1155 local zone_token = ("%s:%d"):format(zone_name, area_id) | 1162 local zone_token = ("%s:%d"):format(zone_name, area_id) |
| 1156 npc_data.locations = npc_data.locations or {} -- TODO: Fix this. It is broken. Possibly something to do with the timed updates. | 1163 npc_data.locations = npc_data.locations or {} -- TODO: Fix this. It is broken. Possibly something to do with the timed updates. |
| 2026 | 2033 |
| 2027 if _G.IsFishingLoot() then | 2034 if _G.IsFishingLoot() then |
| 2028 -- Set up a proper 'fishing' current_action table | 2035 -- Set up a proper 'fishing' current_action table |
| 2029 local zone_name, area_id, x, y, map_level, instance_token = CurrentLocationData() | 2036 local zone_name, area_id, x, y, map_level, instance_token = CurrentLocationData() |
| 2030 if not (zone_name and area_id and x and y and map_level) then | 2037 if not (zone_name and area_id and x and y and map_level) then |
| 2031 Debug("%s: Missing current location data - %s, %d, %d, %d, %d.", log_source, zone_name, area_id, x, y, map_level) | 2038 Debug("%s: Missing current location data - %s, %s, %s, %s, %s.", log_source, tostring(zone_name), tostring(area_id), tostring(x), tostring(y), tostring(map_level)) |
| 2032 return | 2039 return |
| 2033 end | 2040 end |
| 2034 current_action.instance_token = instance_token | 2041 current_action.instance_token = instance_token |
| 2035 current_action.map_level = map_level | 2042 current_action.map_level = map_level |
| 2036 current_action.x = x | 2043 current_action.x = x |
| 2693 unit_id = "target" | 2700 unit_id = "target" |
| 2694 end | 2701 end |
| 2695 local spell_flags = private.SPELL_FLAGS_BY_LABEL[spell_label] | 2702 local spell_flags = private.SPELL_FLAGS_BY_LABEL[spell_label] |
| 2696 local zone_name, area_id, x, y, map_level, instance_token = CurrentLocationData() | 2703 local zone_name, area_id, x, y, map_level, instance_token = CurrentLocationData() |
| 2697 if not (zone_name and area_id and x and y and map_level) then | 2704 if not (zone_name and area_id and x and y and map_level) then |
| 2698 Debug("%s: Missing current location data - %s, %d, %d, %d, %d.", event_name, zone_name, area_id, x, y, map_level) | 2705 Debug("%s: Missing current location data - %s, %s, %s, %s, %s.", event_name, tostring(zone_name), tostring(area_id), tostring(x), tostring(y), tostring(map_level)) |
| 2699 return | 2706 return |
| 2700 end | 2707 end |
| 2701 | 2708 |
| 2702 table.wipe(current_action) | 2709 table.wipe(current_action) |
| 2703 current_action.instance_token = instance_token | 2710 current_action.instance_token = instance_token |
