英翻中有點久沒寫weakaura的文章了
這次想講的工具會相對進階一點 若是對lua完全生疏的人就..end吧 (啥
但如果稍微看得懂 又想做一些比較麻煩的功能 那這篇應當可以幫上一點忙
別的根基上鉦昱翻譯公司一向都是自己邊做邊找ref 所以假如有失言就不負責啦 XDD
本篇會講的工具有 1. aura_env 情況
2. WeakAurasSaved 貯存變數
3. Trigger State Updater (TSU)
1. aura_env 情況
https://github.com/WeakAuras/WeakAuras2/wiki/The-Aura-Environment
首先從weakaura的架構講起
在建好一個aura今後 Weakaura起首會生一個對應的table出來
這個table叫做 aura_env
而關於這個weakaura的資訊 城市存在這個table傍邊
如果在weakaura的自訂觸發傍邊 抓到了一個字串
(比方說可能對話記載傳進來 拿到一個ID之類的)
那鉦昱翻譯公司想把它顯示在提示結果的文字部分 該怎麼做呢?
變數這類東西是有範圍的
固然不克不及用local變數 會直接抓不到
用global規模又太大 搞欠好哪天被其他aura或addon蓋掉就尷尬了
於是我們就把他附在aura_env這個table中
舉個例子 假定今天從 觸發/自訂/事宜/CHAT_MSG_WHISPER
(https://wow.gamepedia.com/index.php?title=CHAT_MSG_WHISPER )
傳進來一個密語 (這是有人密翻譯公司的時候會觸發的event ↑)
那觸發哪裏可以用 -> https://imgur.com/03b5DeX.jpg
https://imgur.com/e7lFFKe.jpg
function(event翻譯社 ...)
local message翻譯社 author = ... --只取前兩個 橫豎後面不想用XD
aura_env.text = author .. ":" .. message
-- 在這邊建個變數 等下可以用; 我但願顯示 "密的人:他說的話"
return true
end
接著在 提示效果/提醒結果文字 這邊 我們用%c去接
自訂函數用 -> https://imgur.com/ZJUaRqW.jpg
function()
return aura_env.text or "" -- nil check
end
這樣就簡單建好一個 有人密翻譯公司的時刻 把密語內容接起來
顯示在文字部門的aura了
功效: https://pastebin.com/pJBCJJHA
那aura_env不只是自己接變數可以用 他自己也有很多東西存在裡面
就算不是用自訂變數也一樣
舉例來講 aura_env.id 這個就是aura自己的名稱
aura_env.state 這個是當觸發出來今後 貯存一些資訊的table
aura_env.state.stacks 就是觸發的堆疊 在提醒效果的%s
aura_env.state.icon 觸發的圖示 %i
aura_env.state.duration 觸發的延續時候 %p ......等等
其他可用的變數可以看這段最上面的保持 或是本身用loop去call看看
(for k翻譯社v in pairs(aura_env) do print(k,v) end)
善用這些變數 就可以在提醒結果中自由組合 加判定式去寫一堆工具
但記得要做nil check 因為aura_env.state這器械不會那麼快建出來
另外我自己習慣是 只如果變數或函數(function)
能的話我都邑在aura的初始化時界說出來
於是aura的初始化平日會長成這樣 https://imgur.com/MJ5lEel.jpg
有點像header檔 XD
2. 儲存變數
光是有aura_env還不敷啊
鉦昱翻譯公司進展拿到一個變數 鉦昱翻譯公司可以把它存起來 搞欠好我換腳色也想看
甚至我想把某些跨腳色的數值加起來算一下 到底我現在總共有幾許錢!
Weakaura會把變數存在
WeakAurasSaved["displays"][aura_env.id]裡面
(display是貯存所有aura內容的table 而aura_env.id固然就是我們用的aura名稱)
而實際的貯存位置會在
World of Warcraft\WTF\Account\帳號\SavedVariables\WeakAuras.lua 這裡
如果你真的去開這個lua檔 就會看到一堆table 大概像 https://imgur.com/fpbKssQ.jpg
於是我們也能夠照樣操作
舉例來講 我想算到底我的總財產有幾多
先建個aura 類型文字 觸發就自訂/狀況/所有框架 -> https://imgur.com/83Sv08v.jpg
https://imgur.com/KcY228m.jpg
function()
WeakAurasSaved["displays"][aura_env.id]["Money"] =
WeakAurasSaved["displays"][aura_env.id]["Money"] or {}
-- 先建一個table來放資料 可是要看有無預設存檔 沒有才建
WeakAurasSaved["displays"][aura_env.id]["Money"][UnitName("player")]
= GetMoney()/10000 -- GetMoney傳回目前有幾何錢 但單元是銅 所以要除10000
aura_env.sum = 0 -- 入手下手計較總數
for k,v in pairs(WeakAurasSaved["displays"][aura_env.id]["Money"]) do
aura_env.sum = aura_env.sum + v
end
return true
end
顯示部分一樣用%c -> https://imgur.com/xyHFzF0.jpg
function()
return aura_env.sum or 0 -- nil check
end
之後只要登入腳色 這個aura就會去抓目前錢的總數
本身貯存加總 然後告知你有多少 XD
(這時候候的SavedVariables\weakauras.lua就會像 https://imgur.com/OHOyz8R )
成果: https://pastebin.com/33whNtWY
要提醒的是 建議建一個
WeakAurasSaved["displays"][aura_env.id]["Data"] 之類的table 來貯存所有的變數
如許若是你要清空資料 只要把這全部table wipe掉就好
否則你去開SavedVariables\weakauras.lua看
還有這個aura自己貯存的各類資料變數 包管亂成一團 XD
3. Trigger State Updater (TSU) 觸發狀況更新
https://github.com/WeakAuras/WeakAuras2/wiki/Trigger-State-Updater-(TSU)
如果到這邊還跟著上 由衷欽佩翻譯公司 這些東西我搞了好久QQ
平日 一個aura就是對應到一個顯示
但是有時刻會希望 a. 同一個aura 可以給很多類似的東西用 顯示N次
而鉦昱翻譯公司不希望雷同的aura重複copy個好幾遍 每個只改個光環名稱
b. 做的時刻根本還不知道要顯示幾遍 抓出來才知道
這時候候就可以用TSU來做
開weakaura介面 看一下觸發/自訂/事宜類型
以往比較常用的是事務跟狀況
此刻要用的則是觸發狀況更新 https://imgur.com/Buju2xD.jpg
此次拿小隊來當例子 若是鉦昱翻譯公司想要顯示每個人的血量好了
(話說這功能不是小隊框架就有了嗎? 可是我一時之間想不到好做的範例嘛 QQ)
先建一個進度條 載入部分只在隊伍中 https://imgur.com/2AFfpC7.jpg
搜檢的部分用所有框架 略微省事一點 雖然有點吃效能
觸發狀況更新會把allstates這個表傳進來 當作第一個變數 所以function要去接他
(如果搜檢部分用事務 那event, args就從第二個參數入手下手)
function(allstates) -- 記得接這個table!
for i = 0, 4 do
local unit = (i == 0 and "player" or "party"..i)
-- party1~4是小隊其他人 本身不在編號內 只好如許搞
if UnitExists(unit) then -- 確認這小我存在
allstates[i] = {
-- TSU的部門起頭
changed = true,
show = true,
name = UnitName(unit),
progressType = "static",
value = UnitHealth(unit),
total = UnitHealthMax(unit),
}
end
end
return true
end
-> https://imgur.com/N8R9Ie3.jpg
來細講TSU那段在幹嗎
起首我們改了allstate[i] 方才i是0~4 別離代表小隊中的每一個人編號
changed 這個狀況i被悔改了
show 這個狀況i我但願它顯示出來 以上兩個剛建樹時必然都是true
name 我希望出來的名稱是誰 可以用%n接
progressType 進度條的類型 有分timed跟static
timed就是算時候 別離傳兩個number給duration跟expirationTime
跟平常用進度條的方式比力像 可以設定時間到會消逝
static是自訂進度 這邊用value是UnitHealth(unit) 第i個人的血量
total是UnitHealthMax(unit) 第i小我的總血量
而duration/value可以用%p接 expirationTime/total可以用%t接
(其餘還有icon翻譯社 texture, stacks等等 或是也可以自界說)
於是寫好了觸發以後 進度條左側擺 %n 右邊擺%p/%t
略微改一下樣式 顯示出來就是一個會主動copy的進度條
讓翻譯公司看小隊裡面所有人的血量 https://imgur.com/BX391qk.jpg
..然後翻譯公司會發現 有兩小我以上他就糊在一路惹 https://imgur.com/pxaUPfS.jpg
空話 你做了兩個進度條 把他們擺在同樣的位置 不糊才有鬼
所以再建一個動態模組 把這個進度條丟進裡面 https://imgur.com/p7vteld.jpg
他就會幫你放置群組增加 對齊 置中等等樣式了
這時候候你會發現 有人退隊了 阿他的血條還在?
緣由是鉦昱翻譯公司們註冊了allstates 在該不見時卻沒有把他移除掉
那最簡單的體例是 每次查抄我都把所有的人移除掉 重新放就行了嘛
在剛剛那段code的第二行 加上
for k翻譯社v in pairs(allstates) do
allstates[k].changed = true
allstates[k].show = false
end
-> https://imgur.com/Ai69Y2Z.jpg
在每次更新時 他都先把每個狀況標示為有改變 然後不顯示
如許假如後面沒被建起來 這個狀況就會被消去 達到鉦昱翻譯公司們的目標
大要就是這些 歸正本身下手做看看 應該會多少做出一點成果
然後不要怕bugsack一直逼逼叫 這是正常的 修到他不會叫就合格了 XD
成果: https://pastebin.com/B6V4EBfj
底下擺一些作品
https://wago.io/r1eVBDiaG 算全部帳號的聲譽值總量 轉換成品級
不知道bfa會怎麼換算曩昔 所以以後可能會再改XD
https://wago.io/B1EWsFWkm 幫到達斬殺線的目標 血條上個標
https://wago.io/HyUtnL-e7 看黑市的時刻 儲存資料
並且傳給跟本身同公會/同頻道(要本身設定) 的人
如許你伴侶看暗盤 你也會知道有那些東西
https://wago.io/H1AoOSYAG 當你afk 有人密你/在頻道提到設定的關鍵字的時候
把訊息存起來 等翻譯公司不再afk或下次登入時秀出來看
還有其他器械 我現在都丟wago.io了 https://wago.io/p/aegius1r
以上~
直接end的舉個手 ._./
--
葡萄酒商勒修斯說:進到桶子,踏踩那些生果!
葡萄酒商勒修斯說:進到桶子,踏踩那些生果!
葡萄酒商勒修斯說:進到桶子,踏踩那些生果!
葡萄酒商勒修斯說:進到桶子,踏踩那些生果!
葡萄酒商勒修斯說:進到桶子,踏踩那些生果!
凡席爾說:你一定能成為厲害的酒商!又有一批秘能酒準備好出貨了翻譯乾 真的是你耶
本篇文章引用自此: https://www.ptt.cc/bbs/WOW/M.1528960349.A.BC1.html有關各國語文翻譯公證的問題歡迎諮詢鉦昱翻譯公司02-23690937