Base for what i am working on, Simply tracks mobs staggered between characters with this loaded, and displays it when switching target (intended for use while engaged with many mobs, early stages). Need help converting action message for kill shot to parse packets. I need to check for the equivalent of message_id 6 (killshot) then compare target_id from this message to table Staggered for removal from table Staggered. I'm rather lost or may just be doing something silly, spent a little too much time on this and have trashed my tests, in any case, help would be appreciative! Thanks!
require('tables')
require('luau')
---------------------------------------------------------------------------------------------------------
--- "Staggered table defined when addon is loaded, Changing zones clears stagger tracker."
---------------------------------------------------------------------------------------------------------
windower.register_event('load',function ()
Staggered = {}
end)
---------------------------------------------------------------------------------------------------------
--- "Display message if current sub target is staggered, if sub target not active display for main target."
--- "Known issue with this and <stnpc> macro, I am awaiting possible adjustments before I consider a re-write as <st> does function."
---------------------------------------------------------------------------------------------------------
function target_change(new)
local player = windower.ffxi.get_player()
local mob = windower.ffxi.get_mob_by_target('t')
local smob = windower.ffxi.get_mob_by_target('st')
if (smob ~= nil) then
starget = smob.id
elseif (mob ~= nil) and (smob == nil) then
starget = mob.id
end
if starget ~= nil then
for t, u in ipairs(Staggered) do
if u == starget then
log('Mob Staggered')
starget = nil
end
end
end
end
windower.register_event('target change', target_change)
---------------------------------------------------------------------------------------------------------
--- "Remove dead mob id from staggered table. Convert to parse packets."
---------------------------------------------------------------------------------------------------------
windower.register_event('action message',function (actor_id, target_id, actor_index, target_index, message_id, param_1, param_2, param_3)
if (message_id == 6) then
for k, v in ipairs(Staggered) do
if v == target_id then
table.remove(Staggered, k)
end
end
end
end)
---------------------------------------------------------------------------------------------------------
--- "Track staggers between instances."
---------------------------------------------------------------------------------------------------------
windower.register_event('ipc message',function (msg)
if msg then
msg = tonumber(msg)
table.insert(Staggered, msg)
target_change()
end
end)
---------------------------------------------------------------------------------------------------------
--- "Track your stagger messages and add current target id to staggered table,"
--- "if current target is staggered or nil add lastst to staggered table."
---------------------------------------------------------------------------------------------------------
windower.register_event('incoming text', function(old,new,color,newcolor)
local player = windower.ffxi.get_player()
name = player.name
if string.find(old,(player.name).. '\'s attack staggers the fiend%p') then
local mob = windower.ffxi.get_mob_by_target()
local lmob = windower.ffxi.get_mob_by_target('lastst')
if mob.id ~= nil then
Stagger = mob.id
end
for k, v in ipairs(Staggered) do
if v == Stagger and lmob ~= nil then
Stagger = lmob.id
end
end
table.insert(Staggered, Stagger)
windower.send_ipc_message('' ..(Stagger).. '')
return
end
end)