Skip to content

Hooks

This document describes the hooks available in the Donator module for managing donor perks and benefits.


DonatorAdditionalSlotsGiven

Purpose

Called when additional character slots are given to a donator.

Parameters

  • player (Player): The player who received the additional slots.
  • addValue (number): The number of additional slots given.

Realm

Server.

When Called

This hook is triggered when: - Additional character slots are given to a player - The GiveAdditionalCharSlots function is called - After DonatorAdditionalSlotsSet hook

Example Usage

-- Track additional slots given
hook.Add("DonatorAdditionalSlotsGiven", "TrackAdditionalSlotsGiven", function(player, addValue)
    local char = player:getChar()
    if char then
        local slotsGiven = char:getData("additional_slots_given", 0)
        char:setData("additional_slots_given", slotsGiven + addValue)
    end

    lia.log.add(player, "additionalSlotsGiven", addValue)
end)

-- Apply additional slots effects
hook.Add("DonatorAdditionalSlotsGiven", "AdditionalSlotsEffects", function(player, addValue)
    -- Play success sound
    player:EmitSound("buttons/button14.wav", 75, 100)

    -- Apply screen effect
    player:ScreenFade(SCREENFADE.IN, Color(0, 255, 0, 15), 0.5, 0)

    -- Notify player
    player:notify("You received " .. addValue .. " additional character slots!")

    -- Create particle effect
    local effect = EffectData()
    effect:SetOrigin(player:GetPos())
    effect:SetMagnitude(1)
    effect:SetScale(1)
    util.Effect("Explosion", effect)
end)

-- Track additional slots statistics
hook.Add("DonatorAdditionalSlotsGiven", "TrackAdditionalSlotsStats", function(player, addValue)
    local char = player:getChar()
    if char then
        -- Track total slots given
        local totalSlotsGiven = char:getData("total_slots_given", 0)
        char:setData("total_slots_given", totalSlotsGiven + addValue)

        -- Track slots given patterns
        local slotsPatterns = char:getData("slots_given_patterns", {})
        table.insert(slotsPatterns, {
            amount = addValue,
            time = os.time()
        })
        char:setData("slots_given_patterns", slotsPatterns)
    end
end)

DonatorAdditionalSlotsSet

Purpose

Called when additional character slots are set for a donator.

Parameters

  • player (Player): The player whose slots are being set.
  • value (number): The new number of additional slots.

Realm

Server.

When Called

This hook is triggered when: - Additional character slots are set for a player - The SetAdditionalCharSlots function is called - Before DonatorAdditionalSlotsGiven hook

Example Usage

-- Track additional slots set
hook.Add("DonatorAdditionalSlotsSet", "TrackAdditionalSlotsSet", function(player, value)
    local char = player:getChar()
    if char then
        local slotsSet = char:getData("additional_slots_set", 0)
        char:setData("additional_slots_set", slotsSet + 1)
    end

    lia.log.add(player, "additionalSlotsSet", value)
end)

-- Apply additional slots set effects
hook.Add("DonatorAdditionalSlotsSet", "AdditionalSlotsSetEffects", function(player, value)
    -- Play set sound
    player:EmitSound("ui/buttonclick.wav", 75, 100)

    -- Apply screen effect
    player:ScreenFade(SCREENFADE.IN, Color(0, 0, 255, 10), 0.3, 0)

    -- Notify player
    player:notify("Your additional character slots have been set to " .. value .. "!")
end)

-- Track additional slots set statistics
hook.Add("DonatorAdditionalSlotsSet", "TrackAdditionalSlotsSetStats", function(player, value)
    local char = player:getChar()
    if char then
        -- Track slots set frequency
        local slotsSetFrequency = char:getData("slots_set_frequency", 0)
        char:setData("slots_set_frequency", slotsSetFrequency + 1)

        -- Track slots set patterns
        local slotsSetPatterns = char:getData("slots_set_patterns", {})
        table.insert(slotsSetPatterns, {
            value = value,
            time = os.time()
        })
        char:setData("slots_set_patterns", slotsSetPatterns)
    end
end)

DonatorFlagsGiven

Purpose

Called when donator flags are given to a player.

Parameters

  • target (Player): The player who received the flags.
  • flags (string): The flags that were given.

Realm

Server.

When Called

This hook is triggered when: - Donator flags are given to a player - The lia_giveflags command is executed - After the flags are applied to the character

Example Usage

-- Track donator flags given
hook.Add("DonatorFlagsGiven", "TrackDonatorFlagsGiven", function(target, flags)
    local char = target:getChar()
    if char then
        local flagsGiven = char:getData("donator_flags_given", 0)
        char:setData("donator_flags_given", flagsGiven + 1)

        -- Track specific flags
        local specificFlags = char:getData("donator_specific_flags", {})
        specificFlags[flags] = (specificFlags[flags] or 0) + 1
        char:setData("donator_specific_flags", specificFlags)
    end

    lia.log.add(target, "donatorFlagsGiven", flags)
end)

-- Apply donator flags effects
hook.Add("DonatorFlagsGiven", "DonatorFlagsEffects", function(target, flags)
    -- Play success sound
    target:EmitSound("buttons/button15.wav", 75, 100)

    -- Apply screen effect
    target:ScreenFade(SCREENFADE.IN, Color(255, 255, 0, 15), 0.5, 0)

    -- Notify player
    target:notify("You received donator flags: " .. flags .. "!")

    -- Create particle effect
    local effect = EffectData()
    effect:SetOrigin(target:GetPos())
    effect:SetMagnitude(1)
    effect:SetScale(1)
    util.Effect("Explosion", effect)
end)

-- Track donator flags statistics
hook.Add("DonatorFlagsGiven", "TrackDonatorFlagsStats", function(target, flags)
    local char = target:getChar()
    if char then
        -- Track flags given frequency
        local flagsGivenFrequency = char:getData("donator_flags_given_frequency", 0)
        char:setData("donator_flags_given_frequency", flagsGivenFrequency + 1)

        -- Track flags given patterns
        local flagsPatterns = char:getData("donator_flags_patterns", {})
        table.insert(flagsPatterns, {
            flags = flags,
            time = os.time()
        })
        char:setData("donator_flags_patterns", flagsPatterns)
    end
end)

DonatorFlagsGranted

Purpose

Called when donator flags are granted to a player based on their usergroup.

Parameters

  • client (Player): The player who received the flags.
  • group (string): The donator group that granted the flags.

Realm

Server.

When Called

This hook is triggered when: - A player loads a character - The player's usergroup matches a donator group - After the flags are applied to the character

Example Usage

-- Track donator flags granted
hook.Add("DonatorFlagsGranted", "TrackDonatorFlagsGranted", function(client, group)
    local char = client:getChar()
    if char then
        local flagsGranted = char:getData("donator_flags_granted", 0)
        char:setData("donator_flags_granted", flagsGranted + 1)

        -- Track donator group
        char:setData("donator_group", group)
    end

    lia.log.add(client, "donatorFlagsGranted", group)
end)

-- Apply donator flags granted effects
hook.Add("DonatorFlagsGranted", "DonatorFlagsGrantedEffects", function(client, group)
    -- Play granted sound
    client:EmitSound("buttons/button14.wav", 75, 100)

    -- Apply screen effect
    client:ScreenFade(SCREENFADE.IN, Color(0, 255, 0, 15), 0.5, 0)

    -- Notify player
    client:notify("Donator flags granted for group: " .. group .. "!")

    -- Create particle effect
    local effect = EffectData()
    effect:SetOrigin(client:GetPos())
    effect:SetMagnitude(1)
    effect:SetScale(1)
    util.Effect("Explosion", effect)
end)

-- Track donator flags granted statistics
hook.Add("DonatorFlagsGranted", "TrackDonatorFlagsGrantedStats", function(client, group)
    local char = client:getChar()
    if char then
        -- Track flags granted frequency
        local flagsGrantedFrequency = char:getData("donator_flags_granted_frequency", 0)
        char:setData("donator_flags_granted_frequency", flagsGrantedFrequency + 1)

        -- Track donator group patterns
        local groupPatterns = char:getData("donator_group_patterns", {})
        groupPatterns[group] = (groupPatterns[group] or 0) + 1
        char:setData("donator_group_patterns", groupPatterns)
    end
end)

DonatorItemGiven

Purpose

Called when a donator item is given to a player.

Parameters

  • target (Player): The player who received the item.
  • uniqueID (string): The unique ID of the item that was given.

Realm

Server.

When Called

This hook is triggered when: - A donator item is given to a player - The lia_giveitem command is executed - After the item is added to the player's inventory

Example Usage

-- Track donator item given
hook.Add("DonatorItemGiven", "TrackDonatorItemGiven", function(target, uniqueID)
    local char = target:getChar()
    if char then
        local itemsGiven = char:getData("donator_items_given", 0)
        char:setData("donator_items_given", itemsGiven + 1)

        -- Track specific items
        local specificItems = char:getData("donator_specific_items", {})
        specificItems[uniqueID] = (specificItems[uniqueID] or 0) + 1
        char:setData("donator_specific_items", specificItems)
    end

    lia.log.add(target, "donatorItemGiven", uniqueID)
end)

-- Apply donator item effects
hook.Add("DonatorItemGiven", "DonatorItemEffects", function(target, uniqueID)
    -- Play success sound
    target:EmitSound("items/item_pickup.wav", 75, 100)

    -- Apply screen effect
    target:ScreenFade(SCREENFADE.IN, Color(255, 255, 0, 15), 0.5, 0)

    -- Notify player
    target:notify("You received a donator item: " .. uniqueID .. "!")

    -- Create particle effect
    local effect = EffectData()
    effect:SetOrigin(target:GetPos())
    effect:SetMagnitude(1)
    effect:SetScale(1)
    util.Effect("Explosion", effect)
end)

-- Track donator item statistics
hook.Add("DonatorItemGiven", "TrackDonatorItemStats", function(target, uniqueID)
    local char = target:getChar()
    if char then
        -- Track items given frequency
        local itemsGivenFrequency = char:getData("donator_items_given_frequency", 0)
        char:setData("donator_items_given_frequency", itemsGivenFrequency + 1)

        -- Track items given patterns
        local itemsPatterns = char:getData("donator_items_patterns", {})
        table.insert(itemsPatterns, {
            item = uniqueID,
            time = os.time()
        })
        char:setData("donator_items_patterns", itemsPatterns)
    end
end)

DonatorMoneyGiven

Purpose

Called when donator money is given to a player.

Parameters

  • target (Player): The player who received the money.
  • amount (number): The amount of money that was given.

Realm

Server.

When Called

This hook is triggered when: - Donator money is given to a player - The lia_givemoney command is executed - After the money is added to the player's character

Example Usage

-- Track donator money given
hook.Add("DonatorMoneyGiven", "TrackDonatorMoneyGiven", function(target, amount)
    local char = target:getChar()
    if char then
        local moneyGiven = char:getData("donator_money_given", 0)
        char:setData("donator_money_given", moneyGiven + amount)
    end

    lia.log.add(target, "donatorMoneyGiven", amount)
end)

-- Apply donator money effects
hook.Add("DonatorMoneyGiven", "DonatorMoneyEffects", function(target, amount)
    -- Play success sound
    target:EmitSound("buttons/button14.wav", 75, 100)

    -- Apply screen effect
    target:ScreenFade(SCREENFADE.IN, Color(0, 255, 0, 15), 0.5, 0)

    -- Notify player
    target:notify("You received donator money: " .. lia.currency.get(amount) .. "!")

    -- Create particle effect
    local effect = EffectData()
    effect:SetOrigin(target:GetPos())
    effect:SetMagnitude(1)
    effect:SetScale(1)
    util.Effect("Explosion", effect)
end)

-- Track donator money statistics
hook.Add("DonatorMoneyGiven", "TrackDonatorMoneyStats", function(target, amount)
    local char = target:getChar()
    if char then
        -- Track money given frequency
        local moneyGivenFrequency = char:getData("donator_money_given_frequency", 0)
        char:setData("donator_money_given_frequency", moneyGivenFrequency + 1)

        -- Track money given patterns
        local moneyPatterns = char:getData("donator_money_patterns", {})
        table.insert(moneyPatterns, {
            amount = amount,
            time = os.time()
        })
        char:setData("donator_money_patterns", moneyPatterns)
    end
end)

DonatorSlotsAdded

Purpose

Called when character slots are added to a donator.

Parameters

  • player (Player): The player who received the slots.
  • current (number): The current number of slots after addition.

Realm

Server.

When Called

This hook is triggered when: - Character slots are added to a player - The AddOverrideCharSlots function is called - After the slots are updated

Example Usage

-- Track donator slots added
hook.Add("DonatorSlotsAdded", "TrackDonatorSlotsAdded", function(player, current)
    local char = player:getChar()
    if char then
        local slotsAdded = char:getData("donator_slots_added", 0)
        char:setData("donator_slots_added", slotsAdded + 1)
    end

    lia.log.add(player, "donatorSlotsAdded", current)
end)

-- Apply donator slots added effects
hook.Add("DonatorSlotsAdded", "DonatorSlotsAddedEffects", function(player, current)
    -- Play success sound
    player:EmitSound("buttons/button14.wav", 75, 100)

    -- Apply screen effect
    player:ScreenFade(SCREENFADE.IN, Color(0, 255, 0, 15), 0.5, 0)

    -- Notify player
    player:notify("Character slots added! Total: " .. current .. "!")

    -- Create particle effect
    local effect = EffectData()
    effect:SetOrigin(player:GetPos())
    effect:SetMagnitude(1)
    effect:SetScale(1)
    util.Effect("Explosion", effect)
end)

-- Track donator slots added statistics
hook.Add("DonatorSlotsAdded", "TrackDonatorSlotsAddedStats", function(player, current)
    local char = player:getChar()
    if char then
        -- Track slots added frequency
        local slotsAddedFrequency = char:getData("donator_slots_added_frequency", 0)
        char:setData("donator_slots_added_frequency", slotsAddedFrequency + 1)

        -- Track slots added patterns
        local slotsPatterns = char:getData("donator_slots_added_patterns", {})
        table.insert(slotsPatterns, {
            current = current,
            time = os.time()
        })
        char:setData("donator_slots_added_patterns", slotsPatterns)
    end
end)

DonatorSlotsSet

Purpose

Called when character slots are set for a donator.

Parameters

  • player (Player): The player whose slots are being set.
  • value (number): The new number of character slots.

Realm

Server.

When Called

This hook is triggered when: - Character slots are set for a player - The OverrideCharSlots function is called - After the slots are updated

Example Usage

-- Track donator slots set
hook.Add("DonatorSlotsSet", "TrackDonatorSlotsSet", function(player, value)
    local char = player:getChar()
    if char then
        local slotsSet = char:getData("donator_slots_set", 0)
        char:setData("donator_slots_set", slotsSet + 1)
    end

    lia.log.add(player, "donatorSlotsSet", value)
end)

-- Apply donator slots set effects
hook.Add("DonatorSlotsSet", "DonatorSlotsSetEffects", function(player, value)
    -- Play set sound
    player:EmitSound("ui/buttonclick.wav", 75, 100)

    -- Apply screen effect
    player:ScreenFade(SCREENFADE.IN, Color(0, 0, 255, 15), 0.5, 0)

    -- Notify player
    player:notify("Character slots set to: " .. value .. "!")

    -- Create particle effect
    local effect = EffectData()
    effect:SetOrigin(player:GetPos())
    effect:SetMagnitude(1)
    effect:SetScale(1)
    util.Effect("Explosion", effect)
end)

-- Track donator slots set statistics
hook.Add("DonatorSlotsSet", "TrackDonatorSlotsSetStats", function(player, value)
    local char = player:getChar()
    if char then
        -- Track slots set frequency
        local slotsSetFrequency = char:getData("donator_slots_set_frequency", 0)
        char:setData("donator_slots_set_frequency", slotsSetFrequency + 1)

        -- Track slots set patterns
        local slotsPatterns = char:getData("donator_slots_set_patterns", {})
        table.insert(slotsPatterns, {
            value = value,
            time = os.time()
        })
        char:setData("donator_slots_set_patterns", slotsPatterns)
    end
end)

DonatorSlotsSubtracted

Purpose

Called when character slots are subtracted from a donator.

Parameters

  • player (Player): The player who lost the slots.
  • current (number): The current number of slots after subtraction.

Realm

Server.

When Called

This hook is triggered when: - Character slots are subtracted from a player - The SubtractOverrideCharSlots function is called - After the slots are updated

Example Usage

-- Track donator slots subtracted
hook.Add("DonatorSlotsSubtracted", "TrackDonatorSlotsSubtracted", function(player, current)
    local char = player:getChar()
    if char then
        local slotsSubtracted = char:getData("donator_slots_subtracted", 0)
        char:setData("donator_slots_subtracted", slotsSubtracted + 1)
    end

    lia.log.add(player, "donatorSlotsSubtracted", current)
end)

-- Apply donator slots subtracted effects
hook.Add("DonatorSlotsSubtracted", "DonatorSlotsSubtractedEffects", function(player, current)
    -- Play subtraction sound
    player:EmitSound("buttons/button16.wav", 75, 100)

    -- Apply screen effect
    player:ScreenFade(SCREENFADE.IN, Color(255, 0, 0, 15), 0.5, 0)

    -- Notify player
    player:notify("Character slots subtracted! Total: " .. current .. "!")

    -- Create particle effect
    local effect = EffectData()
    effect:SetOrigin(player:GetPos())
    effect:SetMagnitude(1)
    effect:SetScale(1)
    util.Effect("Explosion", effect)
end)

-- Track donator slots subtracted statistics
hook.Add("DonatorSlotsSubtracted", "TrackDonatorSlotsSubtractedStats", function(player, current)
    local char = player:getChar()
    if char then
        -- Track slots subtracted frequency
        local slotsSubtractedFrequency = char:getData("donator_slots_subtracted_frequency", 0)
        char:setData("donator_slots_subtracted_frequency", slotsSubtractedFrequency + 1)

        -- Track slots subtracted patterns
        local slotsPatterns = char:getData("donator_slots_subtracted_patterns", {})
        table.insert(slotsPatterns, {
            current = current,
            time = os.time()
        })
        char:setData("donator_slots_subtracted_patterns", slotsPatterns)
    end
end)

DonatorSpawn

Purpose

Called when a donator spawns with override slots.

Parameters

  • client (Player): The player who spawned.
  • currentSlots (number): The current number of override slots.

Realm

Server.

When Called

This hook is triggered when: - A donator player spawns - The player has override slots set - After the player spawn process

Example Usage

-- Track donator spawn
hook.Add("DonatorSpawn", "TrackDonatorSpawn", function(client, currentSlots)
    local char = client:getChar()
    if char then
        local donatorSpawns = char:getData("donator_spawns", 0)
        char:setData("donator_spawns", donatorSpawns + 1)
    end

    lia.log.add(client, "donatorSpawn", currentSlots)
end)

-- Apply donator spawn effects
hook.Add("DonatorSpawn", "DonatorSpawnEffects", function(client, currentSlots)
    -- Play spawn sound
    client:EmitSound("buttons/button14.wav", 75, 100)

    -- Apply screen effect
    client:ScreenFade(SCREENFADE.IN, Color(0, 255, 0, 15), 0.5, 0)

    -- Notify player
    client:notify("Welcome back, donator! Override slots: " .. currentSlots .. "!")

    -- Create particle effect
    local effect = EffectData()
    effect:SetOrigin(client:GetPos())
    effect:SetMagnitude(1)
    effect:SetScale(1)
    util.Effect("Explosion", effect)
end)

-- Track donator spawn statistics
hook.Add("DonatorSpawn", "TrackDonatorSpawnStats", function(client, currentSlots)
    local char = client:getChar()
    if char then
        -- Track spawn frequency
        local spawnFrequency = char:getData("donator_spawn_frequency", 0)
        char:setData("donator_spawn_frequency", spawnFrequency + 1)

        -- Track spawn patterns
        local spawnPatterns = char:getData("donator_spawn_patterns", {})
        table.insert(spawnPatterns, {
            slots = currentSlots,
            time = os.time()
        })
        char:setData("donator_spawn_patterns", spawnPatterns)
    end
end)