Skip to content

twinded_lgw_npc

Un spawner de NPC non-networked pour RedM. Fait apparaitre les peds localement pour eviter de consommer des slots d'entites reseau, avec spawn/despawn base sur la distance, prompts natifs RedM, blips de carte, animations, scenarios, text3d et une API exports complete.

Dependances

RessourceRequiseNotes
twinded_libsOuiLibrairie partagee gratuite

Compatibilite

Independant du framework — ce script n'utilise aucun framework. Il necessite uniquement twinded_libs pour les modules utilitaires (prompts, blips, text3d, entities).

Installation

bash
ensure twinded_libs
ensure twinded_lgw_npc

Fichiers de configuration

FichierDescription
settings.luaDelai de spawn, intervalle de verification de distance, config text3d, toggle debug
lang.luaChaines de traduction (messages de debug)
text3d.luaHandler text3d personnalise (quand Config.Text3D.type = 'custom')
npcs/examples.luaExemples de definitions de NPC (marchand, garde, ambiance)

Consultez le guide de configuration pour savoir comment surcharger ces fichiers.

Reference de configuration

settings.lua

OptionTypeDefautDescription
Config.SpawnDelaynumber200Delai (ms) entre les spawns de NPC echelonnes
Config.DistanceCheckIntervalnumber2000Frequence (ms) de verification de la distance du joueur pour le spawn/despawn
Config.Text3D.typestring"default"'default' pour le text3d integre, 'custom' pour votre propre handler
Config.Text3D.scalenumber0.30Echelle du texte
Config.Text3D.background_alphanumber180Opacite du fond (0-255)
Config.DebugbooleanfalseActiver les commandes de debug

Champs de definition de NPC

Chaque NPC dans Config.NpcList ou dans les fichiers npcs/*.lua :

ChampTypeRequisDescription
idstringOuiIdentifiant unique
namestringOuiNom d'affichage
coordstableOui{x, y, z, heading}
look.modelstringOuiNom du modele de ped
look.outfittableNonComposants de tenue
look.scalenumberNonEchelle du ped
spawn_radius_in_metersnumberOuiDistance a laquelle le NPC apparait
face_playerstring ou nilNon"full" (corps) ou "head_only"
prevent_place_on_groundbooleanNonEmpecher le placement au sol (pour les NPC en interieur)
weaponstring ou nilNonNom du modele d'arme (ex: "WEAPON_REVOLVER_CATTLEMAN")
scenariostring ou nilNonNom du scenario RedM (ex: "WORLD_HUMAN_STAND_BAR")
animationstable ou nilNonTableau de {anim_dict, anim_name, loop, anim_only_upper_body, times, delay_in_ms}
text3dtable ou nilNon{text, radius, offset_z}
bliptable ou nilNon{icon, default_color, scale, title, modifiers, time_window_color}
promptstable ou nilNonTableau de pages de prompts (voir ci-dessous)
time_windowstable ou nilNonTableau de {start_hour, start_minute, end_hour, end_minute}
on_spawnfunction ou nilNonCallback quand le NPC apparait
on_despawnfunction ou nilNonCallback quand le NPC disparait

Champs des pages de prompts

ChampTypeDescription
page_labelstringTitre du groupe de prompts
page_radius_in_metersnumberDistance pour afficher cette page de prompts
page_promptstableTableau de {label, key, hold, callback}

text3d.lua

Handler text3d personnalise (quand Config.Text3D.type = 'custom') :

lua
function DrawNpcText3D(options)
    -- options.x, options.y, options.z  — coordonnees monde
    -- options.text                      — texte a afficher
    -- options.npc_id                    — identifiant du NPC
    -- options.npc_name                  — nom d'affichage du NPC
end

Fonctionnalites

  • Peds non-networked — Zero consommation d'entites reseau
  • Spawn/despawn par distance — Les NPC apparaissent quand le joueur est dans le rayon
  • Despawn anti-pop — Les NPC en ligne de vue ne sont pas despawn tant qu'ils ne sont pas caches
  • Spawn echelonne — Un a la fois avec delai configurable
  • Prompts natifs RedM — Systeme de prompts multi-pages avec support press/hold
  • Blips de carte — Blips configurables avec changement de couleur par fenetre horaire
  • Animations & scenarios — Animations en boucle, sequences multi-etapes, scenarios RedM
  • Text3D — Texte flottant au-dessus des NPC
  • Face au joueur — Rotation du corps entier ou de la tete uniquement
  • Props attaches — Attacher des objets aux bones du NPC
  • Fenetres horaires — NPC visibles uniquement pendant des heures de jeu specifiques
  • API Exports — 10 exports pour l'integration inter-scripts
  • NPC dynamiques — Enregistrer/desenregistrer dynamiquement depuis d'autres scripts
  • Callbacks — Hooks on_spawn et on_despawn par NPC

Commandes de debug

Definissez Config.Debug = true pour activer :

CommandeDescription
/npc_debugLister tous les NPC avec etat, distance et statut d'animation
/npc_debug <npc_id>Informations detaillees pour un NPC specifique
/npc_respawn <npc_id>Forcer le respawn d'un NPC specifique
/npc_respawn_allRespawn de tous les NPC actuellement spawnes

API Exports

Read

lua
-- Obtenir tous les NPC actuellement spawnes
local npcs = exports['twinded_lgw_npc']:GetSpawnedNpcs()

-- Obtenir le handle d'entite d'un NPC specifique
local entity = exports['twinded_lgw_npc']:GetNpcByID('my_npc')

-- Verifier si un NPC est actuellement spawne
local spawned = exports['twinded_lgw_npc']:IsNpcSpawned('my_npc')

Actions

lua
-- Forcer le spawn/despawn independamment de la distance
exports['twinded_lgw_npc']:ForceSpawnNpc('my_npc')
exports['twinded_lgw_npc']:ForceDespawnNpc('my_npc')

-- Surcharger l'animation
exports['twinded_lgw_npc']:SetNpcAnimation('my_npc', 'anim_dict', 'anim_name', true, false)

-- Surcharger le scenario
exports['twinded_lgw_npc']:SetNpcScenario('my_npc', 'WORLD_HUMAN_STAND_BAR')

-- Activer/desactiver les prompts
exports['twinded_lgw_npc']:SetPromptEnabled('my_npc', false)

NPC dynamiques

lua
-- Enregistrer un nouveau NPC au runtime
exports['twinded_lgw_npc']:RegisterNpc({
    id = 'my_custom_npc',
    name = 'Custom NPC',
    coords = { x = 0.0, y = 0.0, z = 0.0, heading = 0.0 },
    look = { model = "a_m_m_rancher_01" },
    spawn_radius_in_meters = 100,
})

-- Desenregistrer et despawn
exports['twinded_lgw_npc']:UnregisterNpc('my_custom_npc')

Depannage

ProblemeSolution
Le script ne demarre pasAssurez-vous que twinded_libs est demarre avant
Les NPC n'apparaissent pasVerifiez spawn_radius_in_meters et votre distance au NPC
Les NPC sont bloques dans le solDefinissez prevent_place_on_ground = true (courant dans les batiments personnalises)
Les prompts ne s'affichent pasVerifiez que le NPC a un champ prompts et page_radius_in_meters
Les commandes de debug ne fonctionnent pasVerifiez que Config.Debug est true
Le text3d n'est pas visibleVerifiez le champ text3d avec text et radius, et que vous etes a portee

Premium RedM Scripts — Multi-Framework