Overview
About NPC Pro
Walk up to a ped at an ATM, press G, and you're in a conversation. He reacts to the weather, your weapon, your wanted level.
NPC Pro works on the pedestrians GTA already spawns. Every one of them gets a personality and a memory of you, and your players can walk up and talk to most of them (not animals, and not peds that are fleeing or in a vehicle). The script also places some people of its own: the ten named characters, up to 12 extras at a time at ATMs, benches and on the beach, up to two officers at traffic-light junctions and a security guard on patrol. Each group has its own switch in the config, and you can lower the number of extras.
Talking
G talks to the NPC you're looking at. E works through ox_target or qb-target, or through a built-in prompt if you have neither. Walls, props and vehicles block the conversation. Glass and see-through fences don't.
The dialog branches, and the lines change with the time of day and what's around you. Ask too many questions and the NPC gets tired of you and ends the chat. Some won't talk at all. Gang members and cops refuse most often, and a ped that is panicked or hostile always does.
The panel shows how much the NPC trusts you and how close they are to losing patience. Players pick one of three layouts with /npcpro_layout, and the colors and fonts live in one theme file.
Memory, trust and work
Ten named characters have schedules, shops and their own voices. They remember you per character, across restarts. Street NPCs forget you 10 minutes after you last spoke to them.
Come back to the same person within those ten minutes and the greeting starts with something like "Right, you. Hey." A named NPC you haven't seen for over an hour might open with "Look who finally surfaced.", and after five conversations you're a regular.
The server keeps trust on a scale from -10 to +10. Being decent to people raises it, and robbing or threatening them brings it down. Prices follow it. If you rob someone, NPCs close by can hear about it and pass it on, so the next ped may greet you differently. A mask or a helmet helps, and with a good enough disguise they treat you like a stranger.
Ask an NPC for work and the server rolls you an errand. Four ship with the script. There is also a bounty board where players put a stake on someone. The broker takes 10 percent, and an unclaimed bounty expires after 72 hours with a refund. Kills are checked by the server, which needs OneSync. A player at a quarter of their health or less counts as down, so it also pays out on frameworks that keep downed players alive.
Crime and police
Point a gun at someone and their personality decides what happens, from 16 on-foot reactions. You can rob, mug or pickpocket people too, though robbing street peds needs OneSync. Witnesses report to the server, and a cop's word counts for more than a homeless guy's.
I made police non-lethal by default at one star or less, so a small mistake doesn't end in a shootout. Cops can be bribed when you're wanted, and street cops only with the police module on. There is also an alpha police module, off by default, that raises your wanted level for running a red light near an officer, speeding past one, hit-and-run and assaulting an officer. It sends no units of its own. GTA's dispatch answers the wanted level.
Many server packs switch GTA's own cops and dispatch off, so NPC Pro turns them back on every few seconds. If you run a police job or dispatch script like ps-dispatch, cd_dispatch or qb-policejob, it leaves those settings to that script and says so in the console.
City life
Beach extras at Vespucci, tourists downtown, and people at ATMs, benches and bus stops. At night a red-light district opens, and there are 7 street scenes you can walk into and join. Guard patrols use GTA's own patrol system. Downtown is set busier and Blaine County thinner, through GTA's own density setting.
The panel, hails, errands and shops come in English and Hungarian. The dialog itself is English only. Admins get about 60 commands for testing.
Requirements
- ox_lib
- OneSync for street robberies, street requests, bounty kill checks and server-spawned named NPCs
Frameworks, detected at start or set in the config:
- Qbox
- QBCore
- ESX Legacy
- standalone
Saving uses FiveM's built-in storage, or MySQL through oxmysql if you switch it on in the config. ox_target or qb-target are used when they're there. It also hooks into ncore_inventory, ncore_hud, ncore_chat and ncore_touchgrass if you run them. For developers there are exports to read trust, errands and the bounty board, and server events for witness reports, bribes, bounties and errands, all listed in the README.
Editions
In the Escrow edition the Lua code is protected by Cfx.re asset escrow, and the config, locale and data files stay open for you to edit. Full source gives you every file readable and editable. Both get the same features and the same updates. The full feature list is on intelnpc.com.
The download is the ncore_npc_pro folder with a README, an install guide, a changelog and the SQL file for MySQL saving. Updates don't install themselves. You download the new version (Escrow from your Cfx.re account, Full source from Tebex), keep your config and data files and copy the rest over. New versions are announced on intelnpc.com.
Support is on intelnpc.com and I reply within 72 hours. Refunds are handled by Tebex under their terms.
Not approved, sponsored or endorsed by Rockstar Games.
What you get
Config open, core escrowed
Docs
Read it before you buy
The same docs that ship with the script, updated with every release.
Talking, remembering, gossiping street NPCs for FiveM, built on GTA's own ped systems.
nCore Development · intelnpc.com · Resource: ncore_npc_pro · Version: see fxmanifest.lua
What it is#
NPC Pro works on the pedestrians GTA already spawns. Every one of them gets a category, one of seven personalities, a mood and a memory, and you can walk up and talk to them. The script places a few people of its own too: the ten named characters, the life-point extras (up to 12 at a time), up to two officers at traffic-light junctions and a patrol guard. Each group has its own switch in shared/config.lua.
Ten named characters add shops, errands and a player bounty board. The rest is reactions: people see what you do, tell each other, and treat you differently the next time. Only ox_lib is required. It runs on Qbox, QBCore, ESX Legacy or on its own.
Features#
Every ambient NPC is a person#
- Every pedestrian is a civilian, gang member, cop, homeless person or prostitute, taken from the ped model, GTA's ped type and its relationship group.
- Seven personalities: coward, compliant, brave, aggressive, cop, cunning and stoic. Each one reacts differently to being aimed at, hit, robbed, threatened or provoked.
- Animals are never offered a conversation. A ped that is fleeing, in a vehicle, swimming or ragdolling can't be talked to either.
- Gang members within 70 m never flee and always fight.
- Faces change with mood, panic and hostility. Ambient peds within 40 m get facial expressions.
Talking to them#
- E with ox_target or qb-target, or the built-in
[E] Talkprompt without them. G or/npcpro_talktalks to the NPC you look at. - Walls, props and vehicles block the conversation. Glass and see-through fences don't.
- Branching dialog with follow-ups, counter-questions and a random subset of four topics per visit.
- Lines depend on time of day, weather, nearby props (ATM, fuel pump, vending machine, bench), your health, a mask, a weapon and your wanted level.
- Each NPC has a patience level. Ask too much and they say so, then end the chat. Idle too long and they walk away.
- Weapon drawn, wanted level, a mask, an attack or an injury can end a conversation, each with its own lines.
- Some NPCs refuse to talk at all. Gang members and cops do it most. Panicked, hostile or traumatized peds always do.
- Tip, bribe, rob, mug, pickpocket, threaten, provoke, flirt, help up and beg are actions in the dialog.
- Street scenes: 7 staged conversations between ambient peds. Walk up and press E, or G on one of them, to join.
- Group conversations show who is speaking.
Dialog panel#
- Letterbox bars, a name plate with role and zone, a mood badge, a trust meter, composure and patience meters, a witness counter and a body-language line.
- Typewriter chat log, held until the spoken line ends. Reply tags show tone, cost, trust lock, "asked", "more to ask" and "ends the conversation".
- Three layouts: Panel, Cinematic and Split. Owners set the default, players pick their own with
/npcpro_layoutor/npcpro, and the choice is saved on their PC. - Keyboard and mouse. Scales with screen height and respects reduced motion.
nui/theme.csshas 63 documented tokens for colors, radii, widths and fonts.- The game audio is ducked while the panel is open and restored on close.
- A scripted over-the-shoulder camera, speaking gestures, lip sync and arm IK while the NPC talks.
Voices#
- Named NPCs get a GTA voice cast to their sex, and lines are spoken in the panel.
- Bad voice names are caught at start and reported in the console.
- Pool-based barks outside the panel for hello, bye, angry and scared.
Ten named NPCs#
- Maggie, Erika, Pete, Joe, Tony, Doc, Denny, Anna, Sgt Mahoney and Candy.
- They appear when you come near and leave when you go. Each one has a schedule with a different spot per time of day, and some are off shift at night.
- They are invincible, never flee and ignore explosions.
- Add your own in
data/personas.lua, no code needed, see Adding a static persona. TheAddPersonaandRemovePersonaexports only change the client that calls them. - Maggie and Erika have a background topic. Maggie, Erika and Candy call out to you in their own lines.
Memory, trust and gossip#
- Named NPCs remember you per character: visits, topics you asked, what they saw you do, your name, your gifts. It's kept across restarts.
- Street NPCs remember you for 10 minutes after the last contact.
- Re-meet greetings from visit count and gaps. Topics you already asked are grayed out.
- Trust from -10 to +10 in six tiers, owned by the server. Talking, polite goodbyes, purchases and jobs raise it. Robbing, threatening and provoking lower it.
- Trust changes prices: x0.85 when trusted up to x1.25 when hostile.
- When trust falls to a personality's limit, the NPC reacts and the chat ends.
- Gossip: every 45 seconds NPCs within 8 m pass on one worthy event, up to 4 hops, getting less certain each time. Heard events change greetings.
- A disguise score from helmet, mask, hood, glasses and outfit change. At 65 or more you are a stranger.
NPCs call out to you#
- A street NPC shows a speech bubble and plays a greeting bark. 23 topics: injury, weapon, mask, known wanted level, rain, storm, snow, fog, heat, late night, fuel station, shop counter and more.
- Past deeds change what they say, good or bad, seen or heard.
- Quick replies under the bubble: greet back, ask what's new, start a conversation, or "not now".
- Now and then the NPC walks up to you first. A weapon drawn or a ped hurt ends it at once.
- Street requests: an NPC asks for a cigarette or $5 to $20. The server checks the ped, the distance and the cooldown.
- Calm limits: 2 hail sessions, 3 bubbles on screen, 3 new hails a minute. Every topic has its own chance, range and cooldown in
Config.hail_features.
Crime, witnesses and reactions#
- 16 on-foot reactions, plus seated reactions for drivers, passengers and riders.
- A weapon counts as aimed only inside range, in view and in sight of the ped.
- Getting hit makes the ped react and starts the witness fan-out.
- The street looks over: up to 5 nearby peds turn their heads when someone snaps.
- The fan-out reaches up to 8 witnesses within 40 m who can see it (
Config.cast_witness). - Crimes, shots and fights are reported to the server with up to 12 witnesses who saw or heard them, each with a reliability: cops high, civilians medium, gang and homeless low. A witness further than 25 m away drops one level, further than 60 m counts as low.
- Gunshots (100 m, 25 m suppressed), melee fights, explosions, public drug use and alarms are all heard or seen.
- Gang members back up a gang victim. Rival gangs only watch.
- Informants (
informant = trueon a persona) leak what they saw unless your disguise is high. - Vehicle collisions are graded: nudge, bump, hit.
- Rob, mug and pickpocket with server cooldowns, distance checks and single-use loot. Robbing ambient peds needs OneSync.
Police#
- Non-lethal police is on by default. At one star or less, cops within 120 m lose their firearms and their accuracy drops to zero.
- An alpha police module (off by default) raises a wanted level for running a red light near an officer, speeding past one, hit-and-run and assaulting an officer.
- Manhunt: the crime scene is pinned as the search center and the getaway vehicle is flagged.
- A corruptible cop persona can be bribed when you are wanted. Ambient cops can be bribed too, but only with the police module on. The server prices it from your real wanted level.
- Pay damages to clear a hit-and-run, when the police module is on.
- GTA's own police is kept switched on. Every 5 seconds it turns random cops and dispatch back on, makes cops notice you and sets the max wanted level to 5, because many server packs turn these off at start. While a police job or dispatch resource from
Config.engine_police.step_aside_foris running (ps-dispatch, cd_dispatch, qs-dispatch, rcore_dispatch, core_dispatch, lb-tablet, qb-policejob, qbx_police, esx_policejob, wasabi_police, origen_police) it leaves all of that alone and prints a console line naming the resource. SetConfig.engine_police.force_on = trueto keep it running anyway.
Trade, errands and bounties#
- Persona shops with a server catalog, stock caps, trust prices and haggling (5 to 20 percent off for 5 minutes). An ox_inventory shop screen is optional.
- Errands: ask "Got any work for me?" for a server-rolled offer. Steps are goto, scout, fetch item, deliver item and talk to. Four ship with the script.
- An errand tracker with title, step, time left, a map blip and a GPS route.
/npcpro_jobslists and abandons them. Progress is saved per character. - A player bounty board: place a bounty with a stake, 10 percent broker fee, kills checked by the server, expiry after 72 hours with a refund. A player at a quarter of their max health or less counts as down (
Config.bounty_board.down_health_fraction, default 0.25), so it also pays on frameworks that keep downed players alive./npcpro_bountiesshows the board anywhere. - Three NPC contracts, paid when you rob or mug the target persona.
City life#
- 22 hand-placed life-point extras: Vespucci beach, downtown tourists, gang blocks, labor and nightlife. Furniture life points put someone at the ATM, on a bench, at a parking meter or at a bus stop.
Config.life_points.max_activesets how many can be alive at once (12 by default), andenabled = falsetakes the whole layer out. - A night-only red-light district with prostitute-category peds on curb points, and up to two officer posts at traffic-light junctions (
Config.redlight_post). - Daily routines move named NPCs through morning, day, evening and night.
- 7 street scenes: gossip on the corner, an argument, a lost tourist, a corner deal, a shift change, panhandling and cop chatter.
- Synchronized greet animations when you talk to a ped you trust, and a gang dap with gang members.
- Zone-aware crowd density through GTA's own density multiplier (
Config.density_manager). Downtown is denser, Blaine County is thinner. - Car radios on nearby traffic, boats, garbage trucks, dormant scenario groups (blimp and plane groups on by default) and the street musician scenario switched off.
- Traffic personality: nearby drivers get a driving style from their category and react when your car touches theirs.
- Guard patrol routes through GTA's own patrol system.
- Crowd director: up to 6 peds watch, film, gawk or cheer, then disperse. Crime scenes call a real ambulance and police incident with onlookers.
- Overheard gossip, 7 news headlines of the day, an audio toolkit for alarms and sounds.
Languages#
- English and Hungarian, 1000 keys each.
Config.locale = 'auto'reads the server's locale convars. Add a language by dropping a file inlocales/. - Panel labels, hails, refusals, errands, bounties, shops and toasts are translated. The named and street dialog trees are English.
Framework and integrations#
- Detects Qbox, QBCore, ESX Legacy or standalone, and the inventory, notification and target systems. You can force any of them in
Config.bridge. - Peds that another resource owns are left alone: networked peds another resource spawned, ncore_inventory's preview and shopkeeper peds, and any ped a script announces with
AnnouncePed. They get no hails, reactions or conversations. - Saving in FiveM's built-in storage by default, or in MySQL with
oxmysql. The tables are created for you. - ncore_hud: trust toasts, achievements, mood toasts, purchase and reward toasts and the news caption.
- ncore_chat: 3D speech bubbles. ncore_touchgrass: bonus minutes for errands. Webhook logging for staff is optional and off by default.
- An old config keeps working: new settings are filled in with defaults.
Admin tools#
- F12 or
/npcpro_menuopens the admin panel for players with thencore_npc_pro.devace. /npcpro_testis a guided walkthrough with saved progress.- About 60 diagnostic commands for hails, witnesses, police, scenes, patrols, audio and trust.
- Ops counters through
GetMetricsand the console commandnpcpro_metrics.
Requirements#
Required:
- ox_lib
Optional, detected automatically:
- Qbox, QBCore or ESX Legacy (it runs standalone without one)
- ncore_inventory, ox_inventory, qb-inventory or the ESX inventory. On Qbox the items go through ox_inventory, which Qbox itself needs (ncore_inventory ships a compatibility layer under that name).
- ox_target or qb-target (a built-in target is used otherwise)
- oxmysql (only for MySQL saving)
- ncore_hud, ncore_chat, ncore_touchgrass
- OneSync, needed for street robberies, street requests, bounty kill checks and server-spawned named NPCs
- FiveM's default baseevents resource (extra kill proof for the bounty board)
Commands and keys#
| Command or key | Who | What it does |
|---|---|---|
G or /npcpro_talk |
Players | Talk to the NPC you look at |
E |
Players | Talk through the target system, join a street scene, answer a hail |
/npcpro |
Players | Player menu with the layout picker |
/npcpro_layout [name or reset] |
Players | Switch the dialog layout |
/npcpro_jobs |
Players | List and abandon errands |
/npcpro_bounties |
Players | Show the bounty board |
| Hail reply keys | Players | Up and Down choose, E answers, Backspace dismisses |
| Panel keys | Players | 1 to 9 pick a reply, Up and Down plus Enter, Space skips, Tab or T for actions, Esc walks away |
F12 or /npcpro_menu |
Admins | Admin panel |
/npcpro_test |
Admins | Guided test walkthrough |
/npcpro_dev, /npcpro_status, /npcpro_debug |
Admins | Dev menu, diagnostics, decision feed |
The admin ace is ncore_npc_pro.dev. Grant it with add_ace group.admin ncore_npc_pro.dev allow. The full command list is in the admin panel.
Config files#
shared/config.lua- every setting: bridges, dialog, trust, perception, police, city life, integrations, webhook logging, saving, debug.locales/en.lua,locales/hu.lua- player-facing text.data/personas.lua- the 10 named NPCs.data/dialogue_lines.lua,data/dialogue_ambient.lua- named and street dialog.data/character_archetypes.lua- the seven personalities.data/jobs.lua,data/bounties.lua- errands and contracts.data/life_points.lua,data/street_scenes.lua,data/patrols.lua- extras, scenes, guard routes.data/news.lua,data/feature_lines.lua- headlines and bystander lines.data/model_flags.lua,data/ped_flags.lua,data/speech_categories.lua- world objects, ped flags, speech categories.nui/theme.css- panel colors, fonts, sizes.sql/ncore_npc_pro.sql- tables for MySQL saving.
Convars#
setr ncore_npc_pro:debug 1turns debug mode on (debug visuals, and the admin tools for every player). Staging servers only, see INSTALLATION.md.setr ncore_npc_pro:verbose_server_log 1prints more from the server and the police module in the console. Same asConfig.verbose_server_log = true.- The language convars are read when
Config.locale = 'auto', see Language packs below. - Webhook logging has its own convars, listed in the logging block of
shared/config.lua.
Language packs#
Config.locale = 'auto' (the default) picks the language itself. The server reads lr:locale, then locale, ox:locale, esx:locale and txAdmin-locale, and uses the first one that matches a pack in locales/. It passes its pick on to the players. If nothing matches, it stays on English. You can also set Config.locale = 'en' or 'hu' directly.
To add a language, copy locales/en.lua to locales/xx.lua, change Locales['en'] to Locales['xx'] and translate the values, never the keys. Keep the %s and %d placeholders in the same order. Keys you leave out fall back to English, so a partial pack is safe. The named and street dialog trees in data/ are English and are edited there.
Adding a static persona#
Named NPCs live in data/personas.lua, one table per NPC in Config.personas. The file stays open in the Escrow edition. Pete is the shortest entry that ships. Here he is without his relationship_group line, which only repeats the default:
{
id = 'pete', name = 'Pete', model = 's_m_y_dockwork_01',
coords = vec4(1180.45, -3270.21, 6.02, 90.0),
scenario = 'WORLD_HUMAN_CLIPBOARD', dialogue_id = 'pete',
personality = 'gossipy', mood_bias = { gossipy = 20, neutral = 10 },
archetype = 'compliant',
role = 'a dock worker',
schedule = {
day = { coords = vec4(1180.45, -3270.21, 6.02, 90.0), scenario = 'WORLD_HUMAN_CLIPBOARD' },
night = { coords = vec4(1180.45, -3270.21, 6.02, 90.0), scenario = 'WORLD_HUMAN_SMOKING',
voice_line = 'routines.pete_night' },
},
voice = { greeting_pool = 'hello', response_pool = 'conversation', farewell_pool = 'bye', idle_pool = 'conversation' },
interactions = { { type = 'dialogue', label = 'Talk to Pete', icon = 'fa-solid fa-comments' } },
},Copy it below the last entry and change what you need. Restart the resource afterwards.
idmust be unique.nameandroleshow on the panel's name plate.modelis a GTA ped model.coordsis where the NPC stands (x, y, z, heading). Withoutcoordsnothing spawns.scenariois what the NPC does while standing there.dialogue_idis the dialog tree indata/dialogue_lines.lua. Without it theidis used. To give the NPC the street dialog of its ped type instead, removedialogue_idand setdynamic = true, the way Candy is set up.archetypeis one of the seven personalities indata/character_archetypes.lua.mood_biasweights the mood the NPC starts in, andpersonalityis a tag the dialog lines can match.scheduleis optional: a spot and scenario per time of day,morning5 to 11,day11 to 17,evening17 to 22 andnight22 to 5 (Config.time_of_day_bounds). Outside the blocks you list, the NPC usescoords. A block withhidden = truetakes the NPC off shift.voice_lineis a locale key the NPC says in that block, so remove it on your copy or add your own key.interactionsare the entries in the target menu. Anopen_shoportake_jobentry adds a shop or errands, see Maggie's entry. Errands themselves are indata/jobs.lua.hail_linesis optional. With it, the NPC calls out to you in those lines, like Maggie, Erika and Candy do.informant = truemakes the NPC pass on what it saw, unless your disguise is high.relationship_groupis optional. Left out, the NPC uses the friendly civilian group fromConfig.relationship_groups.
For developers#
Client exports, from a client script as exports.ncore_npc_pro:Name(...):
| Export | What it does |
|---|---|
OpenStaticDialogue(persona_id) |
Opens the dialog with a named NPC |
OpenAmbientDialogue(ped) |
Opens a conversation with a street ped |
IsDialogueOpen() |
true while the panel is open |
GetReputation(persona_id) |
The trust (-10 to +10) the server last sent this player for that NPC |
GetReputationTier(persona_id) |
The tier name for that trust |
GetPersona(persona_id), ListPersonas() |
Read the named NPC entries |
AddPersona(data), RemovePersona(persona_id) |
Add or remove a named NPC on this client only |
GetActiveJobs() |
This player's running errands |
GetBountyBoard() |
The bounty board as this client last received it |
TriggerReaction(ped, name) |
Plays one reaction on a ped, even with reactions switched off |
AnnouncePed(ped) |
NPC Pro leaves this ped alone. AnnouncePed(ped, false) undoes it |
AllowPed(ped) |
NPC Pro treats one of your script's peds as a street ped. AllowPed(ped, false) undoes it |
SetPoliceSystemEnabled(bool), IsPoliceSystemEnabled() |
The police module's detectors on this client only. The server keeps its own setting |
Reaction names for TriggerReaction: scream_flee, panic_flee, hands_up, stand_ground, fight_back, draw_and_fight, call_cops, comply, comply_then_call_cops, beg_for_mercy, arrest_warning, walk_away_cursing, curse_at_player, flip_off, get_out_and_fight, call_cops_at_scene, and for peds in a vehicle vehicle_freeze, vehicle_horn, vehicle_flee, vehicle_stop, vehicle_cower, vehicle_glare.
A persona added with AddPersona exists only on the client that called it. Other players don't see it and the server refuses its shop, tips and errands, so put real NPCs in data/personas.lua. Trust is kept by the server and no export raises it. SetReputation and AddReputation are still there so older scripts don't error: the first only changes the number on that player's panel until the next server update, the second always returns false.
Server exports, from a server script:
| Export | What it does |
|---|---|
GetBountyBoard() |
Open bounties, highest first |
GetPlayerJobs(src) |
A player's running errands with their current step |
GetMetrics() |
The ops counters, the same as the npcpro_metrics console command |
GetPersonaPed(persona_id) |
The server-spawned ped of a named NPC. Only with Config.use_server_spawn = true |
Server events. They fire with TriggerEvent on the server, so listen with AddEventHandler in a server script:
| Event | Arguments | When |
|---|---|---|
ncore-npc-pro:server:witnessReported |
src, payload |
NPCs saw or heard a crime. payload has event, coords, witnesses_n, masked, armed, and from the perception scan witnesses_by_tier and description_clarity |
ncore-npc-pro:server:informantReported |
src, payload |
An informant persona passed something on. payload has event_type, persona_id, disguise_score |
ncore-npc-pro:server:dispatchRequested |
src, kind, payload |
A bystander called the police (kind is 'ped_hit', payload has coords, damage, persona). Only while the police module is on |
ncore-npc-pro:server:copBribed |
src, persona_id, amount, stars |
A bribe was paid, priced by the server |
ncore-npc-pro:server:bountyPlaced |
src, target, payout, broker_id |
A bounty went on the board |
ncore-npc-pro:server:bountyClaimed |
killer_src, bounty_id, amount |
A bounty paid out |
ncore-npc-pro:server:jobAccepted |
src, persona_id, job_id |
An errand was taken |
ncore-npc-pro:server:jobFailed |
src, persona_id, job_id, reason |
An errand failed |
ncore-npc-pro:server:jobCompleted |
src, persona_id, job_id, paid |
An errand was finished and paid |
The witness, informant and dispatch payloads come from the reporting player's game. The server rate-limits them, but treat them as a report and check anything you act on. Bribes, bounties and errands are settled by the server before their event fires.
Troubleshooting#
If no named NPC shows up and you set Config.use_server_spawn = true, check that OneSync is on. With the default false, each player's game spawns them.
If GTA's police keeps coming back although your server pack switched it off, that is the engine police block in shared/config.lua doing its job. Set Config.engine_police.enabled = false, or Config.disable_ai_police = true for no GTA police at all. With a dispatch script from the step-aside list running, it stays out of the way anyway and says so in the console.
Pick KVP or MySQL before you go live. Nothing is copied between them, so switching later starts trust, memory, errands and the bounty board from empty. The old data stays where it was.
If F12 does nothing, the player has no ncore_npc_pro.dev ace. Players can rebind G and F12 in Settings > Key Bindings > FiveM. Changing Config.quick_talk_key or Config.dev_menu_key later only reaches players who never had the key bound.
On Qbox, if shops, gifts or begging fail, check that a resource named ox_inventory is started. The console prints a warning at start when it is missing.
Installation#
See INSTALLATION.md.
Updates#
Updates don't install themselves. Download the new version (Escrow from your Cfx.re account, Full source from Tebex), keep your own config and data files and copy every other file over the old ones. Settings added in a new version are listed in CHANGELOG.md. New versions are announced on intelnpc.com.
Support#
Support is on intelnpc.com, and I reply within 72 hours. Refunds follow the Tebex terms.
nCore Development is not affiliated with, approved, sponsored or endorsed by Rockstar Games.
-
Install and start
ox_lib3.x. -
Copy the
ncore_npc_profolder intoresources/[ncore](create the[ncore]folder if you do not have one yet). -
Add these lines to
server.cfg, after your framework, inventory, target and any other nCore resources:server.cfgset onesync on ensure ox_lib ensure ncore_npc_pro -
Admin tools: grant the ace in
server.cfg, and every player ingroup.admingets the F12 admin panel and the dev commands, with debug mode off:server.cfgadd_ace group.admin ncore_npc_pro.dev allowDebug mode (debug visuals, and the admin tools for every player) ships off. Turn it on only on a staging server and remove the line again before going live:
server.cfgsetr ncore_npc_pro:debug 1 -
Optional: to keep NPC memory and reputation in MySQL instead of FiveM's KVP store, ensure
oxmysqlbeforencore_npc_proand setConfig.persistence.backend = 'sql'inshared/config.lua. The tables insql/ncore_npc_pro.sqlare created automatically on start. Decide this before you go live: nothing is copied between KVP and MySQL, so switching later starts trust, memory, errands and the bounty board from empty. -
Restart the server and check the console for the
[ncore_npc_pro bridge]line showing the detected framework, inventory, notify and target.
Important#
- Required:
ox_lib3.0+. On Qbox, a resource namedox_inventoryis also required.ncore_inventoryships one, a Qbox compatibility layer for ncore_inventory. - Optional, detected automatically:
qbx_core/qb-core/es_extended(standalone works without a framework),ncore_inventoryor your framework's inventory resource,ox_target/qb-target(without one, the built-in look-at + E interaction is used),ncore_hud, ox_lib or the framework's notifications,ncore_chat,ncore_touchgrassandoxmysql. - Do not rename the
ncore_npc_profolder. - Keep OneSync on; server-side robbery validation depends on it.
- If you run a police job or dispatch resource, check the console on start. NPC Pro stops forcing GTA's police and dispatch settings while one from
Config.engine_police.step_aside_foris running and prints a line naming it. Add your resource to that list if it is not there, or setConfig.engine_police.force_on = trueto keep NPC Pro in charge. - The ace
ncore_npc_pro.devis the only permission for the F12 admin panel and its actions; the server checks it again on every admin action that reaches it. Players without it get nothing on F12. Every player opens the player menu (dialog layout) with/npcpro. - More console output while you set it up:
setr ncore_npc_pro:verbose_server_log 1. Remove it again on a live server.
Updates don't install themselves. When a new version is out, download it again (escrow from your Cfx.re account, full source from Tebex), keep your own config and data files, and copy every other file over the old ones. Settings added in a new version are listed under that version, so you can copy them into your config. New versions are announced on intelnpc.com.
1.0.42#
First public release. Everything the script does is listed in README.md.
€29.99
Ready when you are
Instant delivery, checkout right here on the site, and a Discord full of people who will answer before you pay.

