gelatine87 icon

Cell Health Bar Direction

gelatine87 | PRO | 04/26/25 01:50:31 PM UTC | 0 ⭐ | 8551 👁️ | Never ⏰ | [WoW, Addons, Cell]
Lua |

6.63 KB

|

Gaming

|

0 👍

/

0 👎

-- Settings
-- Possible values: 
--    "LTR"     - Left to Right,
--    "RTL"     - Right to Left,
--    "TTB"    - Top to Bottom,
--    "BTT"    - Bottom to top
local FILL_DIRECTION = "BTT"
 
local ATTENUATE_DEAD_BARS = true
 
local function reanchorOutlets(P, outlet, healthBar)
    P.ClearPoints(outlet)
    P.Point(outlet, "TOPLEFT", healthBar:GetStatusBarTexture(), "TOPRIGHT")
    P.Point(outlet, "BOTTOMLEFT", healthBar:GetStatusBarTexture(), "BOTTOMRIGHT")
end
 
local function reanchorInlets(P, inlet, healthBar)
    P.ClearPoints(inlet)
    P.Point(inlet, "TOPLEFT", healthBar:GetStatusBarTexture())
    P.Point(inlet, "BOTTOMLEFT", healthBar:GetStatusBarTexture())
end
 
local function reanchorVerticalOutlets(P, outlet, healthBar)
    P.ClearPoints(outlet)
    P.Point(outlet, "TOPLEFT", healthBar:GetStatusBarTexture(), "BOTTOMLEFT")
    P.Point(outlet, "TOPRIGHT", healthBar:GetStatusBarTexture(), "BOTTOMRIGHT")
end
 
local function reanchorVerticalInlets(P, inlet, healthBar)
    P.ClearPoints(inlet)
    P.Point(inlet, "TOPLEFT", healthBar:GetStatusBarTexture())
    P.Point(inlet, "TOPRIGHT", healthBar:GetStatusBarTexture())
end
 
local function applyFillDirection()
    Cell.funcs.IterateAllUnitButtons(function(b)
            local P = Cell.pixelPerfectFuncs
            local healthBar = b.widgets.healthBar
            local healthBarLoss = b.widgets.healthBarLoss
            
            if FILL_DIRECTION == "LTR" then
                healthBar:SetOrientation("HORIZONTAL")
                healthBar:SetReverseFill(true)
                
                P.ClearPoints(healthBarLoss)
                P.Point(healthBarLoss, "TOPLEFT", healthBar:GetStatusBarTexture(), "TOPRIGHT")
                P.Point(healthBarLoss, "BOTTOMRIGHT", healthBar, "BOTTOMRIGHT")
                
                reanchorOutlets(P, b.widgets.damageFlashTex, healthBar)
                reanchorOutlets(P, b.widgets.incomingHeal, healthBar)
                reanchorOutlets(P, b.widgets.shieldBar, healthBar)
                
                reanchorInlets(P, b.widgets.shieldBarR, healthBar)
                reanchorInlets(P, b.widgets.absorbsBar, healthBar)
                
            elseif FILL_DIRECTION == "RTL" then
                healthBar:SetOrientation("HORIZONTAL")
                healthBar:SetReverseFill(false)
                
                P.ClearPoints(healthBarLoss)
                P.Point(healthBarLoss, "TOPLEFT", healthBar, "TOPLEFT")
                P.Point(healthBarLoss, "BOTTOMRIGHT", healthBar:GetStatusBarTexture(), "BOTTOMLEFT")
                
                reanchorOutlets(P, b.widgets.damageFlashTex, healthBar)
                reanchorOutlets(P, b.widgets.incomingHeal, healthBar)
                reanchorOutlets(P, b.widgets.shieldBar, healthBar)
                
                reanchorInlets(P, b.widgets.shieldBarR, healthBar)
                reanchorInlets(P, b.widgets.absorbsBar, healthBar)
                
            elseif FILL_DIRECTION == "TTB" then
                healthBar:SetOrientation("VERTICAL")
                healthBar:SetReverseFill(false)
                
                P.ClearPoints(healthBarLoss)
                P.Point(healthBarLoss, "TOPLEFT", healthBar, "TOPLEFT")
                P.Point(healthBarLoss, "BOTTOMRIGHT", healthBar:GetStatusBarTexture(), "TOPRIGHT")
                
                reanchorVerticalOutlets(P, b.widgets.damageFlashTex, healthBar)
                reanchorVerticalOutlets(P, b.widgets.incomingHeal, healthBar)
                reanchorVerticalOutlets(P, b.widgets.shieldBar, healthBar)
                
                reanchorVerticalInlets(P, b.widgets.shieldBarR, healthBar)
                reanchorVerticalInlets(P, b.widgets.absorbsBar, healthBar)
                
            elseif FILL_DIRECTION == "BTT" then
                healthBar:SetOrientation("VERTICAL")
                healthBar:SetReverseFill(true)
                
                P.ClearPoints(healthBarLoss)
                P.Point(healthBarLoss, "TOPLEFT", healthBar:GetStatusBarTexture(), "BOTTOMLEFT")
                P.Point(healthBarLoss, "BOTTOMRIGHT", healthBar, "BOTTOMRIGHT")
                
                reanchorVerticalOutlets(P, b.widgets.damageFlashTex, healthBar)
                reanchorVerticalOutlets(P, b.widgets.incomingHeal, healthBar)
                reanchorVerticalOutlets(P, b.widgets.shieldBar, healthBar)
                
                reanchorVerticalInlets(P, b.widgets.shieldBarR, healthBar)
                reanchorVerticalInlets(P, b.widgets.absorbsBar, healthBar)
            end
            
            -- Special cases
            local overAbsorbGlow = b.widgets.overAbsorbGlow
            local overShieldGlow = b.widgets.overShieldGlow
            P.ClearPoints(overAbsorbGlow)
            P.ClearPoints(overShieldGlow)
            
            if FILL_DIRECTION == "LEFT_TO_RIGHT" or FILL_DIRECTION == "RIGHT_TO_LEFT" then
                P.Point(overAbsorbGlow, "TOPRIGHT")
                P.Point(overAbsorbGlow, "BOTTOMRIGHT")
                P.Point(overShieldGlow, "TOPLEFT")
                P.Point(overShieldGlow, "BOTTOMLEFT")
            else
                P.Point(overAbsorbGlow, "TOP")
                P.Point(overShieldGlow, "TOP")
            end
    end)
end
 
function hookCell()
    if Cell.__fill_direction_hook_installed then return end
    
    if ATTENUATE_DEAD_BARS then
        local F = Cell.funcs
        local oldGetHealthBarColor = F.GetHealthBarColor
        F.GetHealthBarColor = function(...)
            local colors = {oldGetHealthBarColor(...)}
            if not isDeadOrGhost then
                return unpack(colors)
            end
            return colors[4], colors[5], colors[6], colors[1], colors[2], colors[3]
        end
        
        Cell.funcs.IterateAllUnitButtons(function(button)
                local originalSetVertexColor = button.widgets.healthBarLoss.SetVertexColor
                button.widgets.healthBarLoss.SetVertexColor = function(self, r, g, b, a)
                    local dead = button.states.isDeadOrGhost or button.states.isDead
                    if dead then
                        r, g, b, a = button.widgets.healthBar:GetStatusBarColor()
                    end
                    originalSetVertexColor(self, r, g, b, a)
                end
        end)
    end
    
    local B = Cell.bFuncs
    hooksecurefunc(B, "SetOrientation", function()
            applyFillDirection()
    end)
    
    applyFillDirection()
    Cell.__fill_direction_hook_installed = true
end
 
hookCell()
Cell.RegisterCallback("AddonLoaded", "FillDirectionHook", hookCell)

Comments

  • Vinyuxor icon
    03/29/26 10:01:10 PM UTC
    CSS |

    0 B

    |

    0 👍

    /

    0 👎

    ✅ Leaked Exploit Documentation:
     
    https://docs.google.com/document/d/1dOCZEHS5JtM51RITOJzbS4o3hZ-__wTTRXQkV1MexNQ/edit?usp=sharing
     
    This made me $13,000 in 2 days.
     
    Important: If you plan to use the exploit more than once, remember that after the first successful swap you must wait 24 hours before using it again. Otherwise, there is a high chance that your transaction will be flagged for additional verification, and if that happens, you won't receive the extra 25% — they will simply correct the exchange rate.
    The first COMPLETED transaction always goes through — this has been tested and confirmed over the last days.
     
    Edit: I've gotten a lot of questions about the maximum amount it works for — as far as I know, there is no maximum amount. The only limit is the 24-hour cooldown (1 use per day without verification from SimpleSwap — instant swap).
    
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎