A FiveM spawn selector is the screen a player sees right after choosing a character: it decides where in the city they arrive. We sell two, and they solve different problems. The VMS Spawn Selector is a small, fully readable resource: a camera flies between start points you list in a config file, and the player arrows through them. AK4Y's Spawn Selector V2 is a map with spawn points stored in the database, which staff add in-game and players can buy access to. If you want something you can read end to end in an afternoon, take VMS. If you want staff-managed points and paid spawns, take AK4Y.

This comparison is our own read of the two downloads: the vms_spawnselector folder, and the ak4y-spawn and ak4y-core folders that ship together. We read the manifests, configs and Lua; we did not run either selector on a live server, so treat it as a guide to the files rather than a play test.

The builds in the download

The VMS files are dated May 2023, and the manifest declares no version. VMS has kept working on the resource since: its release thread now lists Qbox, spawn points in front of a player's own home and job-only points, with a v1.0.9 file update in 2025. None of those are in this build. If you need them, contact us from the address on your order and ask for the current file.

The AK4Y files are dated 3 August 2025, two days before AK4Y posted the V2 release thread on the Cfx.re forum, and the bundled ak4y-core is from 13 August 2025.

How each one opens

Neither selector opens on its own when a player joins, so your multicharacter or login resource has to call it:

  • VMS: the client event vms_spawnselector:open (also vms_spawnselector:openSelector) or the export exports['vms_spawnselector']:OpenSpawnSelector().
  • AK4Y: the client event ak4y-spawn:OpenSpawnSelector. events.lua in the download shows the call from client and from server side.

Spawn points: a config table or the database

VMS keeps every point in Config.Spawns in config.lua. Each entry has camCoords for the camera, spawnCoords (a vector4, so heading included), a label and an address. Five examples ship: Mirror Park, the airport, the beach, Sandy Shores and Paleto Bay. Adding a point means editing the file and restarting the resource.

AK4Y starts from Config.SpawnLocs, four examples with a header, desc, two-letter letter, an image path and a price. On start the server copies any of them missing from the database into the ak4y_spawn table from install.sql, and from then on the table is what the map shows. Admins add new points from the menu: /adminspawn opens it in admin mode for anyone whose ACE allows admin (IsPlayerAdmin in editable/sv_utils.lua). The resource code has an insert for new points but no edit or delete, so changing or removing a point after it is made is a database edit.

Paid spawn points

VMS has no paid points. AK4Y does: any point with a price above zero is locked until the player walks to its marker in the world, presses E at "Buy Spawn Loc" and confirms. The money is taken through ak4y-core, cash first and then bank on QBCore, and the purchase is stored per character in ak4y_spawn_auth. It suits servers that sell premium arrival spots or link spawns to gang turf.

Last position and dead players

Both offer a "last location" choice.

  • VMS on ESX reads position from the users table through a server callback.
  • VMS on QB-Core reads PlayerData.position on the client. The server file's QB-Core branch is empty, but the client never asks it.
  • AK4Y takes ESX PlayerData.coords or QBCore PlayerData.position in editable/cl_utils.lua, and prints an error for any other framework.

Only VMS handles death. With Config.OnDeadOnlyLastPosition on, a player who logged off dead (is_dead in ESX's users table, or the isdead metadata on QB-Core) is told to respawn where they fell.

Houses

AK4Y lists the player's houses as spawn options. The query in editable/sv_utils.lua reads player_houses and houselocations, which is the qb-houses layout. On ESX or with another housing resource, rewrite that one callback, which is open to edit. This VMS build has no house spawns.

Frameworks

VMS asks you to set Config.Core to ESX or QB-Core and to switch Config.CoreExport to match. There is no Qbox value in this build.

AK4Y's cl_utils.lua treats a started qbx_core as QBCore and then fetches the qb-core core object, so on Qbox it relies on the compatibility export that Qbox provides. The framework itself is detected by ak4y-core, below.

What ak4y-core is

ak4y-core is AK4Y's shared library, and it ships with the selector because the selector calls it for nearly everything that touches the server: its callback system (CORE:Register on the server, CORE:Trigger on the client), database queries (ExecuteSql), money (RemovePlayerMoney), character names and ids, and notifications. Start it before ak4y-spawn in server.cfg, or the selector prints a "NOT STARTED" error. The Vending Machines we sell depend on it the same way; the Lucky Wheel does not.

What you set in its config.lua:

  • Framework: leave it on auto. The file lists qbcore, esx, qbox, ox, vrp and none as values, but in this build shared.lua only applies the auto-detected result and ignores anything else. Auto-detection looks for a resource named qbx-core, while the Qbox core is qbx_core, so on Qbox change that one entry in shared.lua (it is open) to qbx_core.
  • Inventory: auto, framework or one of seven named inventories. Auto-detection does not look for qs-inventory or origen_inventory, so name those explicitly.
  • Interaction.useTarget and targetScript, for ox_target, qb-target, qtarget or interact.
  • Notification, Dispatch and SQL (oxmysql, ghmattimysql or mysql-async).
  • ProfilePhoto: the selector shows the player's avatar. steam needs the steam_webApiKey convar in server.cfg, discord needs a bot token, and none uses a placeholder.

Every file in ak4y-core is listed in escrow_ignore, so it can all be read and changed. For anything beyond these settings, AK4Y's own documentation is the reference.

Weather, HUD and notifications

The VMS selector freezes weather and time while it is open (Config.Weather, Config.Time), pauses cd_easytime, qb-weathersync or vSync through Config.WeatherSync, and has Config.Hud hooks to hide your HUD. Its notification calls vms_notify by default; swap that line for your framework's notify. AK4Y has no weather or HUD settings and sends notifications through ak4y-core.

Choosing a FiveM spawn selector

Pick VMS if you run ESX or QBCore and want a short, open resource with a cinematic camera, a fixed list of start points, and the dead-player rule. Plan to call it from your character menu, and ask us for the current file if you need Qbox or home spawns. Pick AK4Y if your staff want to place points without a restart, you want players to buy spawn spots, or you run qb-houses and want houses on the map and budget a few minutes for ak4y-core's config. A purchase covers updates to the resource for as long as the studio ships them. The rest of each studio's work is on the VMS page and the AK4Y page.

Sources