Рамусик, попробуй в Execute

PHP код:
local function Execute(targetprefix, ...)
    if 
not IsPlayerGUID(targetthen
        
return
    
end

    local value 
= ...
    if (
ATPlayers[target] == nilthen
        ATPlayers
[target] = CreatePlayer(target)
        
CreateFrameForPlayer(ATPlayers[target])
        
ForceUpdate()
    
end
... 
в этой части клиента аддона закрыть доступ к условию if каким нибудь флагом после того как прорисовались фреймы на арене

как это я раньше реализовывал:

PHP код:
    if (players[target] == nil and flagtwo == 0then
        players
[target] = CreatePlayer(target)
        --
players[target].unit target 
        CreateFrameForPlayer
(players[target])
        
ForceUpdate()    
    
end 
где flagtwo у меня переопределялся на следующем OnUpdate для всех фреймов тоесть на следующей секунде фактически
и ForceUpdate я далее вызывал по OnUpdate

PHP код:
local total 0
local 
function onUpdate(self,elapsed)
    
total total elapsed
    
if total >= 2 then    
        
if (flag == 1then
            ForceUpdate
()
        
end
    flagtwo 
1
    total 
0
    end
end

local fram 
CreateFrame("frame")
fram:SetScript("OnUpdate"onUpdate
и там ещё в "глубине кода" было пару переопределений этих флагов для корректной работы.
в итоге всё работало замечательно. ведь можно легко его приписать и к этому аддону.