Skip to content

fadersCreated⚓︎

This event fires once the game starts creating faders. This event is used to create a new fader using tes3fader.new().

--- @param e fadersCreatedEventData
local function fadersCreatedCallback(e)
end
event.register(tes3.event.fadersCreated, fadersCreatedCallback)

Tip

An event can be claimed by setting e.claim to true, or by returning false from the callback. Claiming the event prevents any lower priority callbacks from being called.

Examples⚓︎

Example: Creating a fader

-- This is a working example. You are encouraged to create a new file
-- main.lua, paste this code and see the results in-game!
-- Use `u` key to activate the fader.
-- Use `l` and `k` keys to increase or decrease the fader's opacity.

-- This variable is used to store our fader.
local fader = nil

local function createFader()
    fader = tes3fader.new()
    fader:setColor({
        -- This changes the color of our fader to green.
        -- The RGB values are in range [0.0, 1.0].
        color = { 0.0, 1.0, 0.0 },
    })

    -- The fader needs to be updated every frame to be rendered correctly.
    -- You may notice that for this event we have registered a function with
    -- no name. That is an anonymous function. It works exactly the same as
    -- any other function. We have a need to register this function inside
    -- our createFader() function, since our `fader` variable is `nil` at start
    -- (look up). We can't call fader:update() if fader is `nil`.
    event.register(tes3.event.enterFrame,
        function()
            fader:update()
        end
    )
end

-- The fader needs to be created during `fadersCreated` event,
-- so our createFader() function is registered for that event.
event.register(tes3.event.fadersCreated, createFader)


local opacity = 0.1

local function activateFader()
    -- The fader needs to be activated first to be visible.
    fader:activate()
    -- Now we change its visibility.
    fader:fadeTo({
        value = opacity,
        duration = 3,
    })
    tes3.messageBox("Welcome to the Fallout mode!")
end

-- We registered our activateFader() function on keyDown event, filtered for `u` key.
-- That makes our activateFader() function called only when `u` is pressed.
event.register(tes3.event.keyDown, activateFader, { filter = tes3.scanCode.u })

local function increaseOpacity()
    -- The fader's opacity is in [0.0, 1.0] range.
    -- Make sure we don't exceed it.
    if opacity <= 0.9 then
        opacity = opacity + 0.1
    else
        return
    end
    -- This method sets the current opacity of our fader
    -- to the value of `opacity` variable
    fader:updateMaterialProperty(opacity)

    -- The "\n" sign means insert a new line here.
    -- The "%.1f" code means insert the opacity's value in this text.
    -- The ".1" part means show 1 decimal after the decimal point.
    tes3.messageBox("Fader opacity increased.\nCurrent opacity: %.1f", opacity)
end
event.register(tes3.event.keyDown, increaseOpacity, { filter = tes3.scanCode.l })

local function decreaseOpacity()
    if opacity >= 0.1 then
        opacity = opacity - 0.1
    else
        return
    end
    fader:updateMaterialProperty(opacity)
    tes3.messageBox("Fader opacity decreased.\nCurrent opacity: %.1f", opacity)
end
event.register(tes3.event.keyDown, decreaseOpacity, { filter = tes3.scanCode.k })