Zerix Development

Wat is dit?

Architectuur van Z-npc: natives, threads, framework-detectie.

Z-npc is één FiveM-resource. Hij zet GTA-population natives elke frame, plus periodiek verkeer, budgets en (optioneel) cleanup.

Hij is geen NPC-spawner, geen job-ped script en geen traffic-AI. Hij schaalt wat de game zelf al spawnt.

Verantwoordelijkheden

  • Dichtheid van peds, scenario-peds, rijdend verkeer, random autos en geparkeerde autos
  • Population budget (0–3) uit die density, of handmatig
  • Verkeer/diensten: vuilniswagens, boten, NPC-cops, 911-dispatch, sirenes, wanted-level
  • Zones met eigen density (wint van globaal)
  • Nacht-multipliers
  • Model-blacklist (suppress, geen ambient spawn)
  • Optionele cleanup van rest-NPCs/autos bij density 0.0
  • Statuscommand /npcdensity
  • Exports GetDensity / Refresh en event Z-npc:client:densityUpdated

Wat hij niet doet

  • Geen eigen peds plaatsen voor winkels, jobs of interactie
  • Geen database, Discord of permissies
  • Geen inventory / target / ox_lib
  • Framework alleen voor detectie in de logs — de natives draaien altijd

Startvolgorde

Zet hem ná je framework, maar hij start ook zonder:

ensure es_extended   # of qbx_core / qb-core
ensure Z-npc

Hoe dichtheid tot stand komt

Elke frame:

  1. Spelerpositie → actieve zone (of globaal).
  2. Density-keys uit die bron, ontbrekende keys vallen terug op globaal.
  3. Tijd-multiplier (nacht) × peds / vehicles.
  4. Clamp 0.0–1.0.
  5. Natives ThisFrame zetten die waarden.

Elke 5 seconden daarnaast: traffic, budgets, blacklist-suppress.

Threads

IntervalWat
Elke frame (Wait(0))compute() + density natives
5000 mstraffic, budgets, suppress
Config.Cleanup.interval (default 2000 ms)optionele delete van rest-entities

Bestandsstructuur

Z-npc/
  fxmanifest.lua
  config.lua              ← open (escrow ignore)
  README.md               ← open
  shared/framework.lua    ← escrow
  client/main.lua         ← escrow
  server/main.lua         ← escrow
  editable/client.lua     ← open
  editable/server.lua     ← open

Framework-detectie

Config.Framework = 'auto' (default) kijkt welke core al draait:

  1. qbx_core → qbox
  2. qb-core → qb
  3. es_extended → esx
  4. anders → standalone

Aliassen die ook werken: esxlegacy, qbcore, qbx, qbx_core. Forceer met 'esx', 'qb' of 'qbox' als auto mis zit.

De server print bij start: framework + globale peds/autos. Dichtheid zelf is client-only.