Skip to content

Hooks

This document describes the hooks available in the Utilities module for managing utility functions and entity spawning.


CodeUtilsLoaded

Purpose

Called when the utilities module has finished loading.

Parameters

None.

Realm

Server.

When Called

This hook is triggered when: - The utilities module has finished initializing - All utility functions are available - The module is ready for use

Example Usage

-- Track utilities loading
hook.Add("CodeUtilsLoaded", "TrackUtilsLoading", function()
    lia.log.add(nil, "utilitiesLoaded")

    -- Notify all players
    for _, ply in player.Iterator() do
        ply:notify("Utilities module loaded!")
    end
end)

-- Apply loading effects
hook.Add("CodeUtilsLoaded", "UtilsLoadingEffects", function()
    -- Create particle effect
    local effect = EffectData()
    effect:SetOrigin(Vector(0, 0, 0))
    effect:SetMagnitude(1)
    effect:SetScale(1)
    util.Effect("Explosion", effect)

    -- Print loading message
    print("Utilities module loaded successfully!")
end)

-- Initialize utilities data
hook.Add("CodeUtilsLoaded", "InitializeUtilsData", function()
    -- Set up utilities data
    lia.data.set("utilities_loaded", true)
    lia.data.set("utilities_load_time", os.time())

    -- Initialize utility counters
    lia.data.set("utility_props_spawned", 0)
    lia.data.set("utility_entities_spawned", 0)
end)

UtilityEntitySpawned

Purpose

Called when a utility entity has been spawned.

Parameters

  • entity (Entity): The entity that was spawned.
  • class (string): The class name of the entity.
  • position (Vector): The position where the entity was spawned.

Realm

Server.

When Called

This hook is triggered when: - A utility entity is spawned using lia.utilities.spawnEntities - The entity is successfully created and positioned - After the entity is spawned

Example Usage

-- Track utility entity spawning
hook.Add("UtilityEntitySpawned", "TrackUtilityEntitySpawning", function(entity, class, position)
    local entitySpawns = lia.data.get("utility_entities_spawned", 0)
    lia.data.set("utility_entities_spawned", entitySpawns + 1)

    -- Track entity types
    local entityTypes = lia.data.get("utility_entity_types", {})
    entityTypes[class] = (entityTypes[class] or 0) + 1
    lia.data.set("utility_entity_types", entityTypes)

    lia.log.add(nil, "utilityEntitySpawned", class, position)
end)

-- Apply entity spawn effects
hook.Add("UtilityEntitySpawned", "UtilityEntitySpawnEffects", function(entity, class, position)
    -- Play spawn sound
    entity:EmitSound("buttons/button14.wav", 75, 100)

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

    -- Notify nearby players
    for _, ply in player.Iterator() do
        if ply:GetPos():Distance(position) < 500 then
            ply:notify("Utility entity spawned: " .. class)
        end
    end
end)

-- Track entity spawn statistics
hook.Add("UtilityEntitySpawned", "TrackEntitySpawnStats", function(entity, class, position)
    -- Track spawn frequency
    local spawnFrequency = lia.data.get("utility_entity_spawn_frequency", 0)
    lia.data.set("utility_entity_spawn_frequency", spawnFrequency + 1)

    -- Track spawn patterns
    local spawnPatterns = lia.data.get("utility_entity_spawn_patterns", {})
    table.insert(spawnPatterns, {
        class = class,
        position = position,
        time = os.time()
    })
    lia.data.set("utility_entity_spawn_patterns", spawnPatterns)
end)

UtilityPropSpawned

Purpose

Called when a utility prop has been spawned.

Parameters

  • entity (Entity): The prop entity that was spawned.
  • model (string): The model path of the prop.
  • position (Vector): The position where the prop was spawned.

Realm

Server.

When Called

This hook is triggered when: - A utility prop is spawned using lia.utilities.spawnProp - The prop is successfully created and positioned - After the prop is spawned

Example Usage

-- Track utility prop spawning
hook.Add("UtilityPropSpawned", "TrackUtilityPropSpawning", function(entity, model, position)
    local propSpawns = lia.data.get("utility_props_spawned", 0)
    lia.data.set("utility_props_spawned", propSpawns + 1)

    -- Track prop models
    local propModels = lia.data.get("utility_prop_models", {})
    propModels[model] = (propModels[model] or 0) + 1
    lia.data.set("utility_prop_models", propModels)

    lia.log.add(nil, "utilityPropSpawned", model, position)
end)

-- Apply prop spawn effects
hook.Add("UtilityPropSpawned", "UtilityPropSpawnEffects", function(entity, model, position)
    -- Play spawn sound
    entity:EmitSound("buttons/button15.wav", 75, 100)

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

    -- Notify nearby players
    for _, ply in player.Iterator() do
        if ply:GetPos():Distance(position) < 500 then
            ply:notify("Utility prop spawned: " .. model)
        end
    end
end)

-- Track prop spawn statistics
hook.Add("UtilityPropSpawned", "TrackPropSpawnStats", function(entity, model, position)
    -- Track spawn frequency
    local spawnFrequency = lia.data.get("utility_prop_spawn_frequency", 0)
    lia.data.set("utility_prop_spawn_frequency", spawnFrequency + 1)

    -- Track spawn patterns
    local spawnPatterns = lia.data.get("utility_prop_spawn_patterns", {})
    table.insert(spawnPatterns, {
        model = model,
        position = position,
        time = os.time()
    })
    lia.data.set("utility_prop_spawn_patterns", spawnPatterns)
end)