windower.register_event('incoming chunk',function(id, original, modified, is_injected, is_blocked)
if not is_blocked and id == 0x20 and not is_injected then
local iid = original:unpack('H',0x0D) -- gearswapから転記
if iid == 26458 then -- items.luaから拾った該当アイテムのID、おおむね26423-26459あたり?
local count = original:unpack('I',5) -- gearswapから転記
local bazaar = original:unpack('I',9) -- gearswapから転記
local status = original:byte(0x11) -- gearswapから転記
-- local extdata = original:sub(0x12,0x29) -- gearswapから転記
-- このあたりがわからん
windower.add_to_chat(123, windower.to_shift_jis('saycoon: '..extdata))
end
end
return false
end)
local extdata = original:sub(0x12,0x29)
local extstr = ''
for i = 1, extdata:len() do
local extchr = '%02X':format(extdata:byte(i,i))
extstr = extstr..' '..extchr
end
windower.add_to_chat(123, windower.to_shift_jis('saycone: '..extstr))
書き忘れた、DistancePlusは双方のmodel_sizeを引いた値で判定してるけど、表示は生のsqut(mob.distance)になってる
info rawdist off にすると双方のmodel_sizeを引いた値を表示する
一応デフォルト値はDistancePlusに合わせてdefaults.ShowDistanceRaw = true
----------------------
①ファンクションを新規追加
----------------------
function force_drop()
local items = windower.ffxi.get_items()
windower.add_to_chat(55,'******* Drop *******')
-- Check inventory for unwanted items
for index, item in pairs(items.inventory) do
if type(item) == 'table' and code.drop:contains(item.id) then
drop(item.id, index, item.count)
end
end
end
下の点
Treasuryで出来る
//tr lot add xxx ロットする
//tr lot remove xxx ロットしない
//tr drop add xxx 捨てる準備をする
//tr drop remove xxx 捨てる準備を止める
//tr autodrop on 捨てる準備が出来たアイテムを捨てる
//tr autodrop off まだ捨てない
関数set_spells_from_spellset内の「Remove phase」のコメントの次の
> for k,v in pairs(currentSet) do
から、このforと対になるendまでを以下の内容に丸ごと入替
> for i = 1, 20 do
> local slotName = 'slot%02u':format(i)
> if currentSet[ slotName ] and currentSet[ slotName ] ~= setToSet[ slotName ] then
> windower.ffxi.remove_blue_magic_spell(i)
> --log('Removed spell: '..v..' at #'..i)
> set_spells_from_spellset:schedule(settings.setspeed, spellset, 'remove')
> return
> end
> end
同関数内の「〜 empty slot 〜」のコメントの次の
> for k,v in pairs(setToSet) do
から、このforと対になるendまでを以下の内容に丸ごと入替
> local slotName = 'slot%02u':format(slotToSetTo)
> if setToSet[ slotName ] then
> local spellID = find_spell_id_by_name( setToSet[ slotName ] )
> if spellID ~= nil then
> windower.ffxi.set_blue_magic_spell(spellID, tonumber(slotToSetTo))
> --log('Set spell: '..v..' ('..spellID..') at: '..slotToSetTo)
> set_spells_from_spellset:schedule(settings.setspeed, spellset, 'add')
> return
> end
> end
自己解決しました
サンプルコードに倣ってprecastでwsのみws名で装備を拾って着替える様に書いていたのですが最後の
if set_equip then がtrueにならず着替えが行われていませんでした
set_equipへの代入は行われていたけど条件が真にならない理由が突き止められなかったのでローカル変数への代入はやめて着替えを呼ぶようにしました。
お騒がせしました
↑/autotarget on でも機能するようにする為の相談
/autotarget off ならいちいち収刀しちゃうけど問題なく機能する
/autotarget on でも機能するなら、たまたまサーバが選んだ次の対象が
アドオンが選んだ対象と同じなら収刀しなくなって効率が良くなるから
/autotarget on でも機能するようにさせたい
info に invview を統合すれば text の更新の分散を同期できるから更に軽くなる
(ダイバーとかなら大抵どっちも入れるっしょ(主観))
その代わり info までもが res/items.lua を丸々抱え込む事になるから常時メモリを食い続ける事になる
反対意見がなければもしかしたらその内勝手に統合しちゃうかも(しないかも)
くどい様だけど、1キャラでアドオン単体の負荷を考えればどうって事のない話
ただしアドオン入れまくって3垢とかでダイバーで大リンクを処理したりーみたいな状況になると
アドオンの負荷の軽さ(重さ?)がかなり重要になってくる
特に軽いアドオン複数が text の表示を同時に更新すると結構な負荷になるもんだからこんな神経質な(ry
教えてほしいのですが、XIPivotを使って、
NexusのAshenbubsHD Basic (x2) and Prime (x4) - FFXI HD Texture Packを
オーメン等Basic、他Primeの自動切り替えを、これで出来るしょうか?
local res = require('resources')
windower.register_event('gain buff', function(buff)
local buff_name = res.buffs[buff].name
local zone = windower.ffxi.get_info().zone
if buff_name == 'Elvorseal' or zone_name == "Reisenjima Henge" then
windower.send_command('pivot a AshenbubsHD-Basic')
else
windower.send_command('pivot a AshenbubsHD-Prime')
end
end)