Skip to main content

Character Flow

1. Entrada al servidor

  • El cliente espera a que exista sesion de red.
  • Intenta desactivar spawnmanager para que no haga autospawn.
  • Espera hasta 15s a que un framework compatible este disponible.
  • Si el jugador no tiene personaje activo, llama a beginSelector().

2. Apertura del selector

  • Marca LocalPlayer.state.coldMulticharOpen = true.
  • Le pide al servidor que active el aislamiento de seleccion.
  • Intenta hidratar primero la lista real de personajes.
  • Si esa carga falla, construye slots vacios de fallback y refresca despues.
  • Abre la NUI con intro, ajustes guardados, traducciones y lista de slots.

3. Preview y navegacion

  • Cada slot recibe una escena y un encuadre de camara.
  • Si el slot tiene personaje, intenta cargar su apariencia guardada.
  • Si no hay apariencia o falla el provider, usa un freemode aleatorio.
  • El ped de preview puede ejecutar idle scenarios configurados en Config.PreviewActions.

4. Flujo de crear personaje

  1. El jugador selecciona un slot vacio.
  2. La NUI abre el modal de creacion y el preview de genero.
  3. El cliente valida nombre, apellido, nacionalidad y fecha.
  4. Llama al callback cold_multichar:server:createCharacter.
  5. Si el framework crea el personaje, espera a que exista PlayerData.
  6. Cierra selector, quita aislamiento y resuelve el spawn como personaje nuevo.
  7. El adaptador cliente del framework puede abrir el creator de ropa o apariencia configurado.

5. Flujo de cargar personaje

  1. El jugador selecciona un slot ocupado.
  2. La NUI llama a cold_multichar:server:loadCharacter.
  3. Si el framework detecta otra sesion de personaje activa, primero hace logout.
  4. Cuando el login termina, el selector cierra y se resuelve el spawn como personaje existente.

6. Resolucion del spawn

  • cinematic_selector: abre el selector de spawn interno.
  • last_location: intenta usar PlayerData.position, luego la posicion cacheada del personaje y despues el callback de posicion del framework si existe.
  • default: usa Config.DefaultSpawn.
  • Si el selector cinematico falla, cae a default o last_location segun el tipo de personaje.

7. Logout y reapertura

  • El comando configurado ejecuta Framework.logout(source) en servidor.
  • El selector se vuelve a abrir cuando llega el evento de logout del framework:
    • qbx_core:client:playerLoggedOut
    • QBCore:Client:OnPlayerUnload
    • esx:onPlayerLogout

8. Ajustes locales

  • La NUI guarda opciones como autoPreview, fxEnabled, sfxEnabled, sfxVolume, ultraCleanOverride y lowPerformanceOverride.
  • Esos ajustes se guardan tanto en localStorage como en KVP del recurso.
  • El modo de rendimiento se reaplica cada vez que se abre el selector.

Controles practicos

  • Intro: flechas para moverte, Enter para ejecutar, Escape para salir del servidor.
  • Selector principal: flechas para cambiar slot, Enter para jugar o crear, Space para preview.
  • Selector de spawn: flechas para cambiar ubicacion, Enter para confirmar, Escape para cancelar.

Limitaciones del flujo actual

  • No existe una accion real para borrar personaje.
  • El selector no soporta mas de 3 slots.