シュネデックリングなどの移動速度アップ装備は基本的にidleに定義しているので、今まで移動判定は特に必要なかったのですが、試験的に次のコードを試しています。
このコードは、座標の移動を1秒間に2回判定し、移動中だと判定されれば特定の装備に着替えます。移動中でないと判定されれば通常の待機装備に戻る仕組みになっています。
この処理がうまく機能するようなら、共通ファイルに移動させて待機装備をより強固にすることができると思いますが、どれだけ処理がプレイ中に負荷がかかるのかを試してみたいと思います。
-- ファイル先頭(get_sets の外側)
local moving = false
local move_pos = nil
local frame_count = 0
windower.register_event('prerender', function()
-- 30フレームに1回だけチェック(60fpsなら約2回/秒)
frame_count = frame_count + 1
if frame_count < 30 then return end
frame_count = 0
local pinfo = windower.ffxi.get_player()
if not pinfo then return end
local me = windower.ffxi.get_mob_by_id(pinfo.id)
if not me then return end
if move_pos then
local dx = me.x - move_pos.x
local dy = me.y - move_pos.y
local is_moving = (dx*dx + dy*dy) > 0.01
if is_moving ~= moving then
moving = is_moving
if moving then
equip({sub=gear['ダデュコシールド']})
else
IdleMelee()
end
end
end
move_pos = {x=me.x, y=me.y}
end)
コメント