Thread: Little Lua help

  1. #1

    Little Lua help

    I've been messing around in lua recently, making basic UI mods and such. Bear in mind i'm no lua or programming expert, and as such my knowledge is limited. Anyway, i was playing around with position of monk chi bar on default blizzard UI. Since in legion chi will only be available to WW monks I figured i should use Specialization condition for that. Here is my code:

    Code:
    local _, Class = UnitClass("player") -- getting the player class
    
    local spec_id = GetSpecialization() -- getting spec info
    
    if Class == "MONK" then
    	if spec_id == 1 then --this is for brm stagger bar
    		MonkStaggerBar:ClearAllPoints();
    		MonkStaggerBar:SetPoint("CENTER",ParrentUI, "CENTER", 0, -185); 
    		MonkStaggerBar.SetPoint = function() end
    		MonkStaggerBar.LeftText:SetAlpha(0);
    		MonkStaggerBar.RightText:SetAlpha(0);
    	elseif spec_id == 3 then --this is for ww chi bar
    		MonkHarmonyBarFrame:ClearAllPoints();
    		MonkHarmonyBarFrame:SetPoint("CENTER",ParrentUI, "CENTER", 0, -185); 
    		MonkHarmonyBarFrame.SetPoint = function() end
    	end
    end

    The problem is when I log in game frame doesn't move. When I do /reload it works perfectly. My guess is that GetSpecialization() function is called before game can even read what my spec is. I also tried printing value of "spec_id" after i grab it with GetSpecialization() function and got the same problem. "nil" when I log in, and value after reload.

    If anyone can help me fix this that would be great.

  2. #2
    Code:
    local function Setup(self, event)
      -- your code
    end
    
    local events = CreateFrame('Frame')
    events:RegisterEvent('PLAYER_LOGIN')
    events:RegisterEvent('PLAYER_SPECIALIZATION_CHANGED')
    events:SetScript('OnEvent', Setup)

  3. #3
    thank you so much and thanks for fast reply

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •