🦑Kivo Spawn Selector

Cinematic spawn location selector for FiveM. Presents a god-view hub camera that pans to each location on hover, with last location memory for returning characters. Framework-agnostic — no ox_lib or oxmysql required.


Installation Steps

1

Remove conflicting scripts

Remove or comment out any of the following from server.cfg before installing:

  • qb-spawn — replaced by kivo-spawn (QBCore)

  • spawnmanagerremove for QBCore and QBX only; keep it for ESX

  • Any other spawn selector resource currently running on your server

2

Place the resource

resources/
  [kivo]/
    kivo-spawn/
3

Configure

Open config.lua and set your hub camera and spawn locations:

-- Hub camera shown on open
Config.spawnbehavior.hub = {
    coords = vector3(-269.0, -955.0, 750.0),
    rot    = vector3(-90.0, 0.0, 0.0),
}

-- New character behaviour
Config.newCharSkipSelector = false   -- true = skip UI and spawn at defaultSpawn
Config.defaultSpawn        = vector4(-269.4, -955.3, 31.2, 205.0)

-- Spawn locations
Config.spawnlocations = {
    {
        id            = '1',
        coords        = vector4(-1411.59, -1241.65, 4.40, 12.28),
        img           = '',   -- path relative to html/images/, leave '' for default image
        name          = 'Vespucci Beach',
        description   = 'Relax by the shore.',
        temperature   = '32C',
        wind          = 'Light',
        weather       = 'sunny',
        spawnfunction = 'default',
    },
    -- add more locations here
}

Use /freecam in-game and press ENTER to print current camera coords and rotation to console.

4

Add to server.cfg

ensure qbx_core
ensure kivo-multi-char    # if using Kivo Suite
ensure kivo-spawn

Features

  • Cinematic hub camera + per-location flyover cameras

  • Last location memory for returning characters

  • New character skip option (bypass UI, teleport to default spawn)

  • Custom spawn functions via SpawnFunctions in shared/spawnfunctions/

  • Exports: openSpawnUI, isMenuOpen

  • No ox_lib or oxmysql dependency


Config Reference

Key
Default
Description

Config.ui.title

'Spawn Selector'

NUI heading

Config.ui.subtitle

'Choose where to begin...'

NUI subheading

Config.ui.defaultImg

'images/default.png'

Fallback image for locations with no img set

Config.ui.openDelay

1000

ms delay before NUI opens after trigger

Config.spawnbehavior.allowLastSpawnLocation

true

Show Last Location card for returning characters

Config.spawnbehavior.cameraHoverDelay

150

ms before camera focuses on hovered location

Config.spawnbehavior.hub.coords

Hub camera world position

Config.spawnbehavior.hub.rot

Hub camera rotation

Config.newCharSkipSelector

false

Skip selector for new characters

Config.defaultSpawn

Legion Square

Spawn used when selector is skipped


Exports


Kivo Suite Integration

When kivo-multi-char has Config.spawnSelector = 'kivo-spawn', it fires the following event after a character is selected:

kivo-spawn listens for this and opens its UI. No manual wiring needed — install both, set the config option, and they connect automatically.


Troubleshooting

  1. Player stuck on loading screen

    • ShutdownLoadingScreen() must be called before kivo:client:readyForSpawn fires

    • Add setr loadscreen:externalShutdown "false" to server.cfg as a quick workaround

  2. Player spawns at wrong location or default coords

    • Check that coords.w (heading) is set in every spawnlocations entry

  3. Camera stuck after a location is selected

    • A custom spawnfunction returned nil — use SpawnFunctions.default as a reference

  4. Selector never opens after readyForSpawn

    • kivo-spawn is not started, or it loads before kivo-multi-char in server.cfg


Checklist