View Single Post
08-02-12, 10:09 AM   #1
wolftech
A Deviate Faerie Dragon
Join Date: May 2008
Posts: 14
Help! What is this n00b doing wrong?

I am working on some unit frames and I have run into an error on Beta I can not seem to nail down. When I target some NPCs and Mobs (but not players), I get a Division by Zero error in what is line 37 in this snippet. It works fine on Live, but I can't find what changed in Beta.

Can you help a n00b out?

Lua Code:
  1. local firstload = true
  2. function TUF:TargetUpdate()
  3.     if firstload and not TextUnitFramesLiteDB.general.combat then
  4.         firstload = false
  5.         target:SetPoint(TextUnitFramesLiteDB.target.loc.p, UIParent, TextUnitFramesLiteDB.target.loc.rP, TextUnitFramesLiteDB.target.loc.x, TextUnitFramesLiteDB.target.loc.y)
  6.     end
  7.     if UnitExists("target") then
  8.         TUF:LockTargetFrame()
  9.         local fg, fn = UnitFactionGroup("target")
  10.         if fg ~= nil then target.faction:SetTexture("Interface\\GROUPFRAME\\UI-Group-PVP-"..fg) else target.faction:SetTexture("Interface\\PVPFrame\\PVP-ArenaPoints-Icon") end
  11.         target.faction:Show()
  12.         target.level:SetPoint("TOPLEFT", target, "TOPLEFT", 5, -5)
  13.         target.name:SetPoint("LEFT", target.level, "RIGHT", 5, 0)
  14.         if TextUnitFramesLiteDB.target.orientation then
  15.             target.health:ClearAllPoints()
  16.             target.mana:ClearAllPoints()
  17.             target.health:SetPoint("TOPLEFT", target.level, "BOTTOMLEFT", 0, 0)
  18.             target.mana:SetPoint("TOPLEFT", target.health, "BOTTOMLEFT", 0, 0)
  19.         else
  20.             target.health:ClearAllPoints()
  21.             target.mana:ClearAllPoints()
  22.             target.health:SetPoint("LEFT", target.name, "RIGHT", 5, 0)
  23.             target.mana:SetPoint("LEFT", target.health, "RIGHT", 0, 0)
  24.         end
  25.        
  26.         target.level:SetFontObject(GameFontNormalLarge)
  27.         target.name:SetFontObject(GameFontNormalHuge)
  28.         target.health:SetFontObject(NumberFontNormalLarge)
  29.         target.mana:SetFontObject(NumberFontNormalLarge)
  30.        
  31.         target.level:SetText(UnitLevel("target"))
  32.         target.name:SetText(UnitName("target"))
  33.         local _, cls = UnitClass("target")
  34.         if cls ~= nil then target.name:SetTextColor(RAID_CLASS_COLORS[cls].r, RAID_CLASS_COLORS[cls].g, RAID_CLASS_COLORS[cls].b) end
  35.         local htxtclr = TUF:SetTextColor(UnitHealth("target")/UnitHealthMax("target")*100)
  36.         target.health:SetTextColor(htxtclr.r, htxtclr.g, htxtclr.b, 1)
  37.         local mtxtclr = TUF:SetTextColor(UnitPower("target")/UnitPowerMax("target")*100)
  38.         target.mana:SetTextColor(mtxtclr.r, mtxtclr.g, mtxtclr.b, 1)
  39.         if TextUnitFramesLiteDB.target.percent then
  40.             target.health:SetText("|Cff00ff00H|r-"..string.format("%4.0f", UnitHealth("target")/UnitHealthMax("target")*100).."%") 
  41.             if UnitPowerType("target") == 0 then -- mana
  42.                 target.mana:SetText("|cff3300cc M|r-"..string.format("%4.0f", UnitPower("target")/UnitPowerMax("target")*100).."%")    
  43.             elseif UnitPowerType("target") == 3 then -- energy
  44.                 target.mana:SetText("|cffffff00E |r-"..UnitPower("target").." |cff990099 Combo|r: "..GetComboPoints("target"))
  45.             elseif UnitPowerType("target") == 1 then -- rage
  46.                 target.mana:SetText("|cffff3333Rage|r- "..UnitPower("target").."|cff666666 /|r"..UnitPowerMax("target"))
  47.             elseif UnitPowerType("target") == 5 then
  48.                 target.mana:SetText("|cff99ccffRP|r- "..UnitPower("target").."|cff666666 /|r"..UnitPowerMax("target"))
  49.             elseif UnitPowerType("target") == 6 then-- Runic
  50.                 target.mana:SetText("|cff99ccffRP|r- "..UnitPower("target").."|cff666666 /|r"..UnitPowerMax("target"))
  51.             else -- focus, happieness
  52.                 target.mana:SetText("|cffffcc00F|r- "..UnitPower("target").."|cff666666 /|r"..UnitPowerMax("target"))
  53.             end
  54.         else
  55.             target.health:SetText("|Cff00ff00H|r- "..UnitHealth("target").."|Cff666666 /|r"..UnitHealthMax("target"))
  56.             if UnitPowerType("target") == 0 then -- mana
  57.                 target.mana:SetText("|cff3300cc M|r-"..UnitPower("target").."|Cff666666 /|r"..UnitPowerMax("target"))      
  58.             elseif UnitPowerType("target") == 3 then -- energy
  59.                 target.mana:SetText("|cffffff00E |r-"..UnitPower("target").." |Cff990099 Combo|r: "..GetComboPoints("target"))
  60.             elseif UnitPowerType("target") == 1 then -- rage
  61.                 target.mana:SetText("|cffff3333Rage|r- "..UnitPower("target").."|Cff666666 /|r"..UnitPowerMax("target"))
  62.             elseif UnitPowerType("target") == 5 then
  63.                 target.mana:SetText("|cff99ccffRP|r- "..UnitPower("target").."|Cff666666 /|r"..UnitPowerMax("target"))
  64.             elseif UnitPowerType("target") == 6 then-- Runic
  65.                 target.mana:SetText("|cff99ccffRP|r- "..UnitPower("target").."|Cff666666 /|r"..UnitPowerMax("target"))
  66.             else -- focus, happieness
  67.                 target.mana:SetText("|cffffcc00F|r- "..UnitPower("target").."|Cff666666 /|r"..UnitPowerMax("target"))
  68.             end
  69.         end
  70.        
  71.         local ll = target.level:GetStringWidth()
  72.         local nl = target.name:GetStringWidth()
  73.         local hl = target.health:GetStringWidth()
  74.         local ml = target.mana:GetStringWidth()
  75.         if not TextUnitFramesLiteDB.target.orientation and not TextUnitFramesLiteDB.general.combat then
  76.             local len = ll + nl + hl + ml + 20
  77.             target:SetWidth(len)
  78.             target:SetHeight(target.level:GetHeight() + 20)
  79.         elseif TextUnitFramesLiteDB.target.orientation and not TextUnitFramesLiteDB.general.combat then
  80.             local len = math.max(ll + nl, ml, hl)
  81.             target:SetWidth(len + 20 )
  82.             local lh = target.level:GetHeight()
  83.             local hh = target.health:GetHeight()
  84.             local mh = target.mana:GetHeight()
  85.             target:SetHeight(lh + hh + mh + 20)
  86.         end
  87.        
  88.         if UnitExists("playertargettarget") then
  89.             if TextUnitFramesLiteDB.target.targettop then
  90.                 target.target:ClearAllPoints()
  91.                 target.target:SetPoint("TOPLEFT", target, "BOTTOMLEFT", 10, 10)
  92.             else
  93.                 target.target:ClearAllPoints()
  94.                 target.target:SetPoint("LEFT", target, "RIGHT", -10, 0)
  95.             end
  96.             target.target.level:SetFontObject(GameFontNormal)
  97.             target.target.name:SetFontObject(GameFontNormal)
  98.             target.target.level:SetText(UnitLevel("playertargettarget"))
  99.             target.target.name:SetText(UnitName("playertargettarget"))
  100.             target.target.level:SetPoint("TOPLEFT", target.target, "TOPLEFT", 5, -5)
  101.             target.target.name:SetPoint("LEFT", target.target.level, "RIGHT", 5, 0)
  102.            
  103.             local ttlw = target.target.level:GetStringWidth()
  104.             local ttnw = target.target.name:GetStringWidth()
  105.             target.target:SetHeight(target.target.name:GetHeight()+12)
  106.             target.target:SetWidth(ttlw + ttnw + 10)
  107.         end
  108.        
  109.         if not TextUnitFramesLiteDB.general.combat then
  110.             if TextUnitFramesLiteDB.target.enabled then target:Show() else target:Hide() end
  111.             if UnitExists("target") then target:Show() else target:Hide() end
  112.             if TextUnitFramesLiteDB.target.target and UnitExists("playertargettarget") then target.target:Show() else target.target:Hide() end
  113.         end
  114.     else
  115.         target:Hide()
  116.     end
  117. end

This is the error I get:
Code:
339x TextUnitFramesLite-5.0\target-Target.lua:131: Division by zero
TextUnitFramesLite-5.0\target-Target.lua:131: in function "TargetUpdate"
TextUnitFramesLite-5.0\main.lua:126: in function <TextUnitFramesLite\main.lua:119>

Locals:
self = TUF {
 0 = <userdata>
 lockPetF = <func> @TextUnitFramesLite\options.lua:404
 enablePetTF = <func> @TextUnitFramesLite\options.lua:430
 lockfocusF = <func> @TextUnitFramesLite\options.lua:452
 orientPetF = <func> @TextUnitFramesLite\options.lua:396
 HideBlizzFocus = <func> @TextUnitFramesLite\focus.lua:201
 ShowBlizzFocus = <func> @TextUnitFramesLite\focus.lua:205
 hideBlizzfocusF = <func> @TextUnitFramesLite\options.lua:439
 target = TUF_Target {}
 OnUpdate = <func> @TextUnitFramesLite\main.lua:119
 pet = TUF_Pet {}
 enablePF = <func> @TextUnitFramesLite\options.lua:353
 player = TUF_Player {}
 HideBlizzPlayer = <func> @TextUnitFramesLite\player.lua:172
 percfocusF = <func> @TextUnitFramesLite\options.lua:448
 generalO_Load = <func> @TextUnitFramesLite\options.lua:315
 enablePetF = <func> @TextUnitFramesLite\options.lua:425
 focus = TUF_Focus {}
 SetTextColor = <func> @TextUnitFramesLite\util.lua:8
 orientfocusTF = <func> @TextUnitFramesLite\options.lua:483
 percPF = <func> @TextUnitFramesLite\options.lua:381
 LockTargetFrame = <func> @TextUnitFramesLite\options.lua:487
 FocusUpdate = <func> @TextUnitFramesLite\focus.lua:67
 orientfocusF = <func> @TextUnitFramesLite\options.lua:444
 enablefocusTF = <func> @TextUnitFramesLite\options.lua:479
 enablefocusF = <func> @TextUnitFramesLite\options.lua:474
 PlayerUpdate = <func> @TextUnitFramesLite\player.lua:82
 ShowBlizzPlayer = <func> @TextUnitFramesLite\player.lua:176
 hideBlizzPF = <func> @TextUnitFramesLite\options.lua:391
 OnEvent = <func> @TextUnitFramesLite\main.lua:84
 percPetF = <func> @TextUnitFramesLite\options.lua:400
 playerO_Load = <func> @TextUnitFramesLite\options.lua:321
 orientPetTF = <func> @TextUnitFramesLite\options.lua:434
 orientPF = <func> @TextUnitFramesLite\options.lua:386
 PetUpdate = <func> @TextUnitFramesLite\pet.lua:68
 TargetUpdate = <func> @TextUnitFramesLite\target.lua:96
 targetO_Load = <func> @TextUnitFramesLite\options.lua:342
 lockPF = <func> @TextUnitFramesLite\options.lua:359
}
elapsed = 0.019000001251698
And here is the section in main.lua (beginning with 119)

Lua Code:
  1. function TUF:OnUpdate(elapsed)
  2.     if not TextUnitFramesLiteDB.general then TextUnitFramesLiteDB.general = {} end
  3.     if not TextUnitFramesLiteDB.general.elapsed then TextUnitFramesLiteDB.general.elapsed = 0 end
  4.     if not TextUnitFramesLiteDB.general.updaterate then TextUnitFramesLiteDB.general.updaterate = 0.066 end
  5.     TextUnitFramesLiteDB.general.elapsed = TextUnitFramesLiteDB.general.elapsed + elapsed
  6.     if TextUnitFramesLiteDB.general.elapsed > TextUnitFramesLiteDB.general.updaterate then
  7.         if UnitExists("target") then if TextUnitFramesLiteDB.target.enabled then TUF.target:Show() end if TextUnitFramesLiteDB.target.hideblizztargetframe then TargetFrame:Hide() end end
  8.         TUF:TargetUpdate()
  9.         TUF:PlayerUpdate()
  10.         TUF:PetUpdate()
  11.         TUF:FocusUpdate()
  12.         if TextUnitFramesLiteDB.general.combat then TUF.player.combat:Show() else TUF.player.combat:Hide() end
  13.         if UnitIsPVP("player") then TUF.player.pvp:Show() else TUF.player.pvp:Hide() end
  14.         if UnitIsPVP("target") then TUF.target.pvp:Show() else TUF.target.pvp:Hide() end
  15.         local lootmethod, mlpID, mlRID = GetLootMethod()
  16.         if lootmethod == "master" then
  17.             if mlpID == nil then
  18.                 TUF.player.masterloot:Hide()
  19.             elseif mlpID == 0 then
  20.                 TUF.player.masterloot:Show()
  21.             end
  22.         end
  23.         if IsResting() then TUF.player.rest:Show() else TUF.player.rest:Hide() end
  24.         TextUnitFramesLiteDB.general.elapsed = 0
  25.     end