💳VendorsXL
Custom in-world vendor support via simple TweakDB/TweakXL records, created by Deceptious
Last updated
Was this helpful?
Custom in-world vendor support via simple TweakDB/TweakXL records, created by Deceptious
Last updated
Was this helpful?
Published: February 2025 by Florence
Thank You to manavortex & for helping me with this page.
VendorsXL is a mod by deceptious. It lets you create your own vendors in night city by altering or creating vendor entities .
Custom vendors features:
Customisable workspot - the animation/idle that the vendor has
Customisable character/appearance - who the NPC is and what they look like
Customisable vendor name - what they appear as when scanned and on their prompt
Customisable stock - can either be a list of items (Vanilla or Modded), or a predefined Vendor.
Customisable position/rotation - where in the world the NPC will be found
Customisable map/minimap icon - 8 icons to choose from
Simply include with your mod a new tweak, based on the template, with a unique name and customised values This can even be included in existing .yaml files.
The name of the tweak must be unique, but all the other values can be shared (try not to put your vendors on top of each other, though...) Make sure your yaml file/folder is named such that it doesn't load before '##########VendorsXL' or your tweak won't load correctly.
Display Name can be any existing, or new, LocKey - but you would have to create the new LocKey yourself as part of your mod. Workspot can be any workspot, but it is your responsibility to pick one that your character/entity supports. It doesn't have to be standing, either. Entity and appearance can be any existing, or modded, entity and appearance - these values can be found in the same variables in existing Character records in the tweak database. (Mod is only assumed to work with humanoid characters, non humanoids may not work - I couldn't get base game Brendan to work...)
Creating your own entity & appearance can take more work than using existing ones from the game, however it is a great way to add uniqueness and personality to your mods.
Check out this template created by Manavortex: Modders Resource - Custom NPC Template Other Resources: Appearance: .app files & Appearances: change NPC looks If using manavortex's template, you do not need to make the .ent specifically for AMM, but the concept is still the same & it will allow you to use your entity and appearances in the VendorsXL .YAML file.
Once you have completed editing in wolvenkit, make sure it is packed into an WolvenKit archive file.
The "custom_vendor.archive" then goes in to the Cyberpunk 2077/archive/pc/mods folder.
To begin, you should have a text editor like Notepad++ or VSCode available on your computer. If you don't know what this is you can find options here: Text Editor Software Now that you have your editor open, copy and paste the VendorXL template into it.
If you want to use an existing vendor, you will need to find out their entity path. To do this, I personally like to use RedHotTools: World Inspector.
If you want to learn more about RedHotTools, you can find out more here: RedHotTools Wiki Once you have RedHotTools Installed, In Cyberpunk 2077 visit the location of whichever vendor you want to edit. (For this example I will be editing the vendor at Avante Clothing Store). Look directly at your chosen vendor (NPC) and open the Cyber Engine Tweaks overlay. If its your first time using CET it should ask you to select a key-bind of your choice.
With CET open, you should now see a tab on your screen called 'World Inspector', In the settings tab of World Inspector, I recommend changing the 'Targeting Mode' to Game Physics, this will make it easier for the tool to identify the vendor entity. You should be seeing something like this:
Looking at the third block of text in the World Inspector, we can see the entity template. In your .yaml file replace the existing entity path "base\open_world\characters\vendors\example_vendor.ent" with your desired entity path. It should look like this:
Choose an appearance, you can either use the current NPC appearance or you can choose an existing appearance from the entity, to view alternative appearances I recommend using as it will allow you to preview the different appearances in your game. If you do not already have Appearance Menu Mod installed, you can download it on Nexus Mods. Links for all requirements can be found at the top of this page
Now that you have 'AMM' installed, launch your game & open it using the CET overlay.
Once again look directly at the NPC & you should see a list of appearances.
Cycle through the appearances and choose the one you want to use.
I will be using the first appearance on the list for this tutorial.
Once you have decided on an appearance, you can now copy the appearanceName into your .yaml e.g.
Deciding what affiliation we want our vendor to have, by default it is set to 'Civilian.' Affiliation is what is shown when scanning the NPC, e.g.
Arasaka
KangTao
Militech
NCPD
TraumaTeam
NetWatch
Biotechnica
News54
Aldecaldos
Animals
Maelstrom
MaelstromAndroid
Scavengers
ScavengersAndroid
SixthStreet
SixthStreetAndroid
TheMox
TygerClaws
Valentinos
VoodooBoys
Wraiths
WraithsAndroid
Barghest
AfterlifeMercs
CityCouncil
SSI
Unknown
RecordingAgency
Unaffiliated
SouthCalifornia
UnaffiliatedCorpo
Zetatech
NUSA
Classified
OA
Corpbud
Crimson_Harvest
Private_Press
Growl
Highriders
If you want to change your affiliation to something different, take a look at the list of available options. Now that you know your vendors new affiliation, make sure that it looks like this in the .yaml. For this example I will change the affiliation to Zetatech:
By default the name will be 'Vendor' although you can change this by finding or creating a new LocKey. If you want to find an existing LocKey you can use the LocKey Browser in WolvenKit or alternatively you can choose one from this selection of LocKeys that I've prepared:
If you want to use WolvenKit to find a LocKey open or create a new project then navigate to the 'View' tab and select LocKey Browser. Once open you can either scroll through the list of available LocKeys or you can use the search function to find something specific. For this example I will search for 'Florence',
If you are unable to find the name you want, there is always the option to create your own.
Now that I have found the name that I want to use "Florence" I will copy & paste the Primary Key "66861" into my .yaml file.
Deciding what pose you want your vendor to have, the pose is applied via .workspot, if you are unhappy with the default '.workspot' you can search in WolvenKit to find alternatives. Open a WolvenKit project and navigate to the Asset Browser, You can type different things to find '.workspots, some useful examples are, 'stand', 'lean', 'sit', 'kneel', 'dirt', 'ground' etc. For this example I found a workspot by searching 'stand ground':
Once you've found a '.workspot' that sounds suitable, update your .yaml with the '.workspot' path. For this tutorial we are going to use the default '.workspot' however you can change it for your vendor. You can get the '.workspot' path by right clicking the file in WolvenKit and clicking 'Copy Relative Path'
This is arguably one of the most imprtant steps as this data provides the location for which your vendor will appear, any mistakes here could make it difficult to find your vendor, so make sure to accuratley record the location data. To record the location data of where you want your vendor to be, you will need to stand in the location & face the direction that you would want the vendor to be doing. If you are unable to access the location that you want your vendor to be in, FreeFly (Noclip) can help!
Open the CET overlay, open the console & paste this command prompt into the console:
print(GetPlayer():GetWorldPosition()) print(GetPlayer():GetWorldOrientation())
You should see a result that looks similar to this in the console:
Now transfer this data from the console to your .yaml. Once completed it should look like this:
Note: x, y, and z are proper world coordinates for where our object will be placed. i = Entity rotation on relative y-axis (ranges from -0.999 to +1.000) j = Entity tilt on relative x-axis (ranges from -0.999 to +1.000)
Adding items to your vendors catalogue is simple, you just update the .yaml with an items Base ID. To find Base ID's for vanilla items you can refer to the Equipment Databases page. For this tutorial I will be using the Cyberpunk 2077 Item Hash List to find the items I want.
I have chosen to add 'Erebus', 'Errata' & 'Fang' to my vendors catalogue. Filter your search in the Cyberpunk 2077 Item Hash List to find the items you're looking for. Keep in mind that there are tabs for different categories, so you may need to switch tabs.
Once you have found the item/s that you want, copy the BaseID's from the spreadsheet.
Updating the .yaml with the BaseID's should now look like this:
Once your .yaml is updated, the items will be availible in the vendors catalogue:
Before starting the game to view the '.workspot' ( Appearance / Pose ), The VendorID needs to be updated as the .ent in this example is using an existing vendor & their inventory. If you are using a custom '.ent' you can skip this step. To find a specific VendorID you can use cheat sheet made by manavortex: Cheat Sheet: Vendor ID's Find out what location the vendor is from, you can either do this by looking at the map, or you can refer back to the World Inspector overview to see what district & area the vendor is from. In this example, we can see that the Avante Clothing Store vendor is located in Westbrook, Charter Hill
Now that we know the location, refer to the Vendor ID's Cheat Sheet to confirm the Community Entry Name matches the VendorID, Once confirmed you can update the .yaml with the known VendorID:
The final step, and a simple one. You can now choose from 10 options as to how you'd like your vendor to appear on the world map. Currently the Icons available are limited to those used by existing vendors.
Choose an Icon for your vendor and update the .yaml with the corresponding number. e.g.