2014-10-03 41 views
0

我正在改變一個在Lua寫的魔獸世界插件。 有一個簡單的布爾變量,用於確定是否顯示一些「全部」幀或只顯示特定的一個。LUA - OnUpdate shift modifier

所以當= true,那麼它只會顯示特定幀 當=假,它會顯示所有幀

我想和Shift鍵修飾符來顯示所有的幀時按下Shift鍵,然後隱藏換班時再次放棄。

if IsShiftKeyDown() then 
    cfg.aura.onlyShowPlayer = false 
else 
    cfg.aura.onlyShowPlayer = true 
end 

這是我非常簡單的解決方案,它的工作原理。這裏的問題是它只在腳本開始時才起作用。每當接口被加載時,你都會在WoW中看到,如果沒有告訴其他的話,它會運行腳本。這不是非常有效,因爲我會將我的用戶發送到加載屏幕。

OnUpdate應該修復我的問題,這將會在每次幀渲染時運行這個特定的代碼,這是非常方便的,並且是我想要完成的。

所以這是我做了什麼

local function onUpdate(self,elapsed) 
    if IsShiftKeyDown() then 
    cfg.aura.onlyShowPlayer = false 
    else 
    cfg.aura.onlyShowPlayer = true 
    end 
end 

local shiftdebuffs = CreateFrame("frame") 
shiftdebuffs:SetScript("OnUpdate", onUpdate) 

我現在的問題是,這是行不通的。我新的onUpdate的東西,只有複製粘貼它從我做的另一個插件,工作得很好。 正確它直接去= false,這只是我認爲是因爲它是默認的。

感謝您的幫助

回答

0

右它直接轉到= false,這只是發生的事情我想是因爲它是默認的。

不,if語句中沒有「默認」分支。爲了控制到達then分支,條件必須被評估爲true。您需要檢查邏輯,但是如果腳本執行cfg.aura.onlyShowPlayer = false,這意味着IsShiftKeyDown()被評估爲true

+0

我沒有告訴你腳本的其餘部分,所以是真的默認。因爲它會檢查cfg.aura.onlyShowPlayer是否爲真/假,並執行另一個if/else操作。就像我說的,我只是編輯這個插件,所以我不想直接修改。 – gempir 2014-10-03 23:05:37