Skip to content

bs_traders

SCUM-style NPC traders and mission givers.

Generated from the Lua sources in resources/[beyond]/bs_traders/. 42 entries. The description column is the comment above the line in the code, so if it’s empty nobody wrote one yet.

Call with exports.bs_traders:Name(...) from the same side.

NameSideWhereDescription
ClassifyOutfitserverserver/sv_wardrobe.lua:462WHAT MAY BE SAVED AS WORN.

Server callbacks are called from a client with BSB.Await(name, timeoutMs, ...). Client callbacks are called from the server with BSB.AwaitClient(src, name, timeoutMs, ...).

NameDirectionWhereDescription
traders:buyclient -> serverserver/sv_traders.lua:521
traders:debug:duplicateNpcclient -> serverserver/sv_traders.lua:982
traders:debug:hereclient -> serverserver/sv_traders.lua:1059“Teleport this NPC to me” - the coordinate the debug menu is going to offer alongside a manual x/y/z form, because typing three numbers to move a badly-placed ped is exactly…
traders:debug:listclient -> serverserver/sv_traders.lua:923
traders:debug:mayuseclient -> serverserver/sv_traders.lua:31
traders:debug:resetMissionclient -> serverserver/sv_traders.lua:1049
traders:debug:resetNpcclient -> serverserver/sv_traders.lua:1030
traders:debug:saveMissionclient -> serverserver/sv_traders.lua:1039
traders:debug:saveNpcclient -> serverserver/sv_traders.lua:938patch may set: label, role, model, scenario, heading, x, y, z, buys, sells, missions (array of mission ids), clothing, disabled.
traders:debug:teleportclient -> serverserver/sv_traders.lua:1075The reverse of npcs:debug:here - “take ME to this NPC”.
traders:listclient -> serverserver/sv_traders.lua:308Only non-disabled NPCs, and only the fields a client needs to spawn one - prices and stock stay server-side until a player actually walks up and opens the menu.
traders:missionAbandonclient -> serverserver/sv_traders.lua:773
traders:missionAcceptclient -> serverserver/sv_traders.lua:724ONE REASON PER CONDITION, NOT ONE WORD FOR SEVEN OF THEM.
traders:missionTurnInclient -> serverserver/sv_traders.lua:791
traders:openclient -> serverserver/sv_traders.lua:337DIAGNOSTIC, ADDED 2026-09-15 (round 3).
traders:sellclient -> serverserver/sv_traders.lua:590
wardrobe:buyclient -> serverserver/sv_wardrobe.lua:260Confirm a whole fitting at once.
wardrobe:openclient -> serverserver/sv_wardrobe.lua:216Everything the panel needs that the CLIENT cannot work out for itself.
wardrobe:outfitDeleteclient -> serverserver/sv_wardrobe.lua:438
wardrobe:outfitSaveclient -> serverserver/sv_wardrobe.lua:375Save what is currently on the ped, by name.

“net” means the handler is registered with RegisterNetEvent, so the other side can trigger it. “local” is AddEventHandler only (same side, or game events).

NameSideTypeWhereDescription
bs:hook:player:actionserverlocalserver/sv_traders.lua:880Fed by bs_core’s reward pipeline (bs_core/server/sv_rewards.lua), which already fires this on every zombie kill with the exact actionId a mission’s filter lists against - no…
bs:hook:player:loadedserverlocalserver/sv_traders.lua:1089
bs:hook:player:unloadedclientlocalclient/cl_debug.lua:252
bs:hook:player:unloadedserverlocalserver/sv_traders.lua:1152
bs:inventory:stateclientnetclient/cl_main.lua:219bs_inventory fires this on its own client whenever the bag changes.
bs:player:moneyclientnetclient/cl_wardrobe.lua:760THE CASH FIGURE WENT STALE THE MOMENT THE SHOP OPENED.
bs:traders:progressclientnetclient/cl_main.lua:134
bs:traders:reloadclientnetclient/cl_peds.lua:470The debug menu broadcasts this after every save/reset/create/delete so a live edit is visible to everyone standing nearby within the same second, without anyone needing to…
bs:traders:talkclientnetclient/cl_peds.lua:479bs_interactions wraps every triggered option in one payload table rather than passing args on its own - see Target.Run in cl_target.lua - so the npcId set as args above…
bs:traders:trackerclientnetclient/cl_main.lua:211
bs:traders:wardrobeclientnetclient/cl_wardrobe.lua:769Raised by the dot option cl_peds registers on a clothing-selling ped.
bs:ui:openedclientlocalclient/cl_debug.lua:247The player-facing shop menu closes itself when anything else opens (see cl_main.lua’s own handler on this same event) - this one does the same back, so the two can never end up…
bs:ui:panicclientlocalclient/cl_debug.lua:251
onClientResourceStartclientlocalclient/cl_peds.lua:505bs_interactions RESTARTED UNDERNEATH US.
onResourceStartserverlocalserver/sv_traders.lua:1124REHYDRATE EVERYONE ALREADY IN THE WORLD - “AND THE MISSIONS?” State[src] was populated in exactly one place: the bs:hook:player:loaded handler above.
onResourceStopclientlocalclient/cl_debug.lua:254
playerDroppedserverlocalserver/sv_traders.lua:1159
CommandSideWhereDescription
/missionsclientclient/cl_main.lua:268Toggle the tracker without losing the missions behind it - some players want a clean screen, and a tracker with no way to dismiss it is furniture.
/traderdebugclientclient/cl_debug.lua:140
/unstickclientclient/cl_wardrobe.lua:812THE WAY OUT THAT DOES NOT DEPEND ON THE UI.
/wardrobetestclientclient/cl_wardrobe.lua:843THE PANEL, ON ITS OWN, WITH THE GAME LEFT ALONE.