PartyBuffsというPTメンバーのバフ, デバフを常時表示するWindowerアドオンがあります。
- PartyBuffs
2019/05/30 追記
最新のPartyBuffs(version 3.0)ではバフ/デバフのフィルター機能が追加されているようです。
(使用していないため、詳しくはわかりませんがホワイトリスト/ブラックリストでフィルターできるようです。)
2020/01/24 追記
Ver.3.0でのフィルター設定についての記事を書きました。
yyoshisaur.hatenablog.com
このアドオンを有効にするとPTリストの横にアイコンがずらりと並びます。
(バフを取得できるのはプレイヤーのみでフェイスには表示されません)
アイコンのサイズは10x10, 20x20の2種類が選択できます。
アイコンはFF11オリジナルのものではなく、
FFXIViewのアイコン?が使われているため、慣れないかもしれません。
このアイコンのサイズが絶妙で10x10では小さすぎで、20x20では大きすぎだと感じます。
10x10では何のアイコンなのか分かりづらいため、20x20にして使用していますが、
バフの数が多くなってくると画面の半分以上をアイコンが占めてしまします。
そこでバフ, デバフをすべて表示するのではなく、
自分が監視したいバフやデバフのみを表示できるように変更してみます。
Windowerアドオンを1から書いたこともない初心者なので、
PartyBuffsがアドオン内で行っていることは詳しくは分りません。
PartyBuffs.lua内のregister_eventのコールバック処理("incoming chunk"のイベント)とUpdateの処理に注目します。
ざっくり処理の内容を書くと以下のようになっていると思います。
- register_event
パケットが入ってきたとき("incoming chunk")に呼び出す処理を登録している。
パケットにバフ, デバフの情報が含まれていて、変数buffsに保存している。
Events · Windower/Lua Wiki · GitHub
Packets Library · Windower/Lua Wiki · GitHub
- Update
アイコンを表示する処理(表示アイコンの位置調整、描画)
そこでregister_event内で必要な情報のみを保存するようにフィルターすれば、うまくいくような気がします。
-- PartyBuffs.lua -- グローバル変数 -- 表示したいバフ, デバフのID enable_buffs=S{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,28,29,30,31,33,40,41,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,144,145,146,147,148,149,156,167,168,174,175,177,186,192,193,194,223,404,540,557,558,559,560,561,562,563,564,565,566,567,572} -- 87行目辺り(register_eventのコールバック関数) local buff = data:byte(k*48+5+16+i-1) + 256*( math.floor( data:byte(k*48+5+8+ math.floor((i-1)/4)) / 4^((i-1)%4) )%4) -- Credit: Byrth, GearSwap if enable_buffs:contains(buff) then --追加 if buffs[id][i] ~= buff then buffs[id][i] = buff end end -- 追加
必要な情報のみ取得するようにすれば、
期待通りenable_buffsで定義したアイコンのみ表示されるようになります。
しかし、表示に問題があり、
表示していないアイコンが空白になってしまい、不自然な空白ができてしまいます。
表示しているアイコンのみ右詰めで表示させたいので、
アイコンの位置調整をしているUpdate関数も変更します。
for k = 1, 5 do local member = party[key_indices[k]] j = 1 -- 追加 (jは表示したアイコン数) for image, i in party_buffs[k]:it() do if member then if buffs[member_table[member.name]] and buffs[member_table[member.name]][i] then if zoning_bool then buffs[member_table[member.name]][i] = 0 image:clear() image:hide() elseif member.zone ~= zone then buffs[member_table[member.name]][i] = 0 image:clear() image:hide() elseif buffs[member_table[member.name]][i] == 255 or buffs[member_table[member.name]][i] == 0 then image:clear() image:hide() else image:path(windower.windower_path .. 'addons/PartyBuffs/icons/' .. buffs[member_table[member.name]][i] .. '.png') image:transparency(0) image:size(icon_size, icon_size) -- Adjust position for party member count if party_info.party1_count > 1 then local pt_y_pos = party_buffs_y_pos[party_info.party1_count] local x = (icon_size == 20 and x_pos - (j*20)) or (j <= 16 and x_pos - (j*10)) or x_pos - ((j-16)*10) -- iからjに変更 local y = (icon_size == 20 and pt_y_pos + ((k-1)*20)) or (j <= 16 and pt_y_pos + ((k-1)*20)) or pt_y_pos + (((k-1)*20)+10) -- iからjに変更 image:pos_x(x) image:pos_y(y) end image:show() j = j + 1 -- 追加 end else -- アイコンが減少した際、左端のアイコンがクリアされないため、追加 image:clear() image:hide() end else image:clear() image:hide() end image:update() end end
デバフを沢山くれるエスカ-ジタのブリタリスに動作確認に行ってみました。
アイコンが表示されているPTメンバーは魔導剣士なので多くのバフが付与されていましたが、
定義したバフ, デバフのみ表示されており、うまく動作しているように見えます。
以下は今回enable_buffsで定義しているID
- バフ
ID | 名称 |
---|---|
33 | ヘイスト |
40 | プロテス |
41 | シェル |
- デバフ
ID | 名称 |
---|---|
1 | 衰弱 |
2 | 睡眠 |
3 | 毒 |
4 | 麻痺 |
5 | 暗闇 |
6 | 静寂 |
7 | 石化 |
8 | 病気 |
9 | 呪い |
10 | スタン |
11 | バインド |
12 | ヘヴィ |
13 | スロウ |
14 | 魅了 |
15 | 死の宣告 |
16 | アムネジア |
17 | 魅了 |
18 | 徐々に石化 |
19 | 睡眠 |
20 | 呪い |
21 | アドル |
22 | ひるみ |
23 | メルトン |
28 | テラー |
29 | 沈黙 |
30 | 呪詛 |
31 | 悪疫 |
128 | バーン |
129 | フロスト |
130 | チョーク |
131 | ラスプ |
132 | ショック |
133 | ドラウン |
134 | ディア |
135 | バイオ |
136 | STRダウン |
137 | DEXダウン |
138 | VITダウン |
139 | AGIダウン |
140 | INTダウン |
141 | MNDダウン |
142 | CHRダウン |
144 | HPmaxダウン |
145 | MPmaxダウン |
146 | 命中率ダウン |
147 | 攻撃力ダウン |
148 | 回避率ダウン |
156 | フラッシュ |
167 | 魔法防御ダウン |
168 | インヒビットTP |
174 | 魔法命中率ダウン |
175 | 魔法攻撃力ダウン |
177 | 装備変更不可 |
186 | 計略 |
192 | レクエム |
193 | ララバイ |
194 | エレジー |
223 | ノクターン |
404 | 魔法回避率ダウン |
540 | ポイズン |
557 | 攻撃力ダウン |
558 | 防御力ダウン |
559 | 魔法攻撃力ダウン |
560 | 魔法防御力ダウン |
561 | 命中率ダウン |
562 | 回避率ダウン |
563 | 魔法命中率ダウン |
564 | 魔法回避率ダウン |
565 | スロウ |
566 | 麻痺 |
567 | ヘヴィ |
572 | 回避能力ダウン |