Skip to content
On this page

Pedmanager

Der PedManager ist ein Hilfsmodul zur effizienten Verwaltung von NPCs (Peds) und deren Interaktionspunkten in RedM/FiveM, basierend auf der ox_lib Points Funktionalität.

Es ermöglicht das automatische Spawnen und Despawnen von NPCs, wenn sich Spieler nähern oder entfernen.


⚙️ Registrierung (API)

Die Registrierung MUSS im Client-Teil der Resource erfolgen, die die NPCs definieren möchte.

1. Export / Event

Du kannst die Funktion über Exports oder Events aufrufen, empfohlen sind Events:

lua
-- Über Export
exports('resourceName', 'registerNpcs', resourceName, npcList, options)

-- Über Event (Standard)
TriggerEvent('sns_utils:pedmanager:registerNpcs', resourceName, npcList, options)

2. npcList Struktur

Die npcList ist eine Tabelle, die einzelne NPC-Definitionen enthält.

FeldTypStatusBeschreibung
modelstringPflichtDas Ped-Modell (z.B. 'a_m_m_val_drunk_01').
x, y, znumberPflichtDie Koordinaten (Position) des NPCs.
headingnumberempfohlenDie Blickrichtung des NPCs beim Spawnen (Standard: 0.0).
scenariostringempfohlenEin Szenario (animation mit Prop) (z.B. 'WORLD_HUMAN_SMOKE').
bliptableOptionalKonfiguration für die Blip-Erstellung.
interactiontableOptionalKonfiguration für die murphy_interact Interaktion.
spawnDistancenumberOptionalRadius für das Spawnen des NPCs (Standard: 100).
animDictstringOptionalDas Animations-Dictionary zum Abspielen.
animNamestringOptionalDer Name der Animation im Dictionary.
outfitnumber/stringOptionalID des Outfit-Presets zum Laden.
randomizeOutfitbooleanOptionalWenn true, wird das Ped-Outfit zufällig gewählt (Standard: true).
onSpawn(ped, npcData)functionOptionalCallback, wenn der NPC gespawnt wurde.
onDespawn(npcData)functionOptionalCallback, wenn der NPC despawnt wurde.
onNearby(npcData)functionOptionalCallback, solange ein Spieler in Reichweite des Spawnpunkts ist.

| id | string/number | optional, nicht empfohlen | Eindeutige ID für den NPC (Standard: 'resourceName_[aufsteigende Zahl]'). |


📝 Code-Beispiel

lua
local resourceName = GetCurrentResourceName()

local npcDefinitions = {
    -- Pflicht: Minimaler NPC
    {
        model = 'a_m_m_val_shopkeeper', 
        x = -291.56,
        y = 753.81,
        z = 117.84,
    },
    
    -- NPC mit allen optionalen Features
    {
        -- Pflicht
        model = 'a_f_m_val_citizen_01', 
        x = -287.97,
        y = 756.90,
        z = 117.84,
        
        -- OPTIONAL
        heading = 270.0,
        spawnDistance = 150,
        
        -- Animationen/Verhalten
        scenario = 'WORLD_HUMAN_DRINKING_BEER',
        
        -- Aussehen
        randomizeOutfit = false, -- Deaktiviert zufällige Kleidung
        outfit = 1, -- Lädt Preset 1
        
        -- Callbacks
        onSpawn = function(ped)
            SetPedKeepTask(ped, true) -- Beispiel-Logik
        end,
        
        -- Blip
        blip = {
            name = 'Ranch Mitarbeiter',
            sprite = 'BLIP_HEALTH', -- Muss ein gültiges Blip-Sprite sein, https://github.com/femga/rdr3_discoveries/tree/master/useful_info_from_rpfs/textures
            color = 'WHITE',
        },

        -- Interaktion (murphy_interact)
        interaction = {
            title = 'Sprechen',
            distance = 3.0,
            options = {
                {
                    title = 'Hallo sagen',
                    action = function()
                        lib.notify({ title = 'NPC', description = 'Der NPC grüßt zurück!' })
                    end
                }
            }
        }
    }
}

-- Registrierung der NPCs
TriggerEvent('sns_utils:pedmanager:registerNpcs', resourceName, npcDefinitions)

Released under the GNU General Public License v2.0.