Volver al blog
Scripts8 min de lectura

Agency-Phone: el smartphone creado específicamente para FiveM

Descubre cómo Agency-Phone ofrece una experiencia de smartphone inmersiva en FiveM, con apps optimizadas y alto rendimiento.

Agency Scripts

Fundador y desarrollador principal en Agency Scripts

Demo en vivo

Prueba Agency Phone en tu navegador, no necesitas descargar nada.

Abrir demo

¿Por qué crear otro teléfono para FiveM?

Creamos Agency-Phone porque todos los teléfonos que probamos en nuestros propios servidores se veían muy bien, pero funcionaban mal, o funcionaban bien, pero tenían un aspecto anticuado. El mercado estaba lleno de soluciones de compromiso. Queríamos algo que se sintiera de verdad como un smartphone moderno desde el momento en que lo abrieras y que, aun así, mantuviera un uso de recursos en reposo de 0.00ms cuando estuviera en el bolsillo de alguien.

Una interfaz que no parece de FiveM

La mayoría de los teléfonos de FiveM revelan su origen a los dos segundos de abrirlos. Las fuentes se ven un poco raras, las animaciones son entrecortadas y la pantalla de inicio parece provisional. Agency-Phone fue diseñado por personas que usan smartphones reales a diario. Iteramos cada elemento, desde el reloj de la pantalla de bloqueo hasta la física de rebote del menú de aplicaciones, hasta que dejó de sentirse como un script y empezó a sentirse como un teléfono.

La arquitectura de las aplicaciones

Agency-Phone utiliza un sistema de aplicaciones con carga diferida. La interfaz de las aplicaciones solo se inicializa cuando las abres, lo que mantiene estable el uso de memoria aunque añadamos más aplicaciones. El bus de eventos entre Lua del cliente y la capa NUI aplica debounce para que las acciones rápidas de los usuarios no provoquen picos de resmon en el juego. Este es el tipo de trabajo de ingeniería que nadie ve, pero del que todos se benefician cuando su servidor tiene 128 jugadores.

Independiente del framework por diseño

Agency-Phone incluye adaptadores para QBCore y ESX, pero el núcleo es independiente del framework. Si usas un servidor standalone con tu propia capa de datos de jugador, puedes conectarlo en una tarde implementando cuatro funciones de consulta. Nos negamos a distribuir scripts que te aten a un solo framework porque los frameworks cambian. Durante nuestra trayectoria en la comunidad, hemos visto pasar al menos tres oleadas de «esto es el estándar ahora».

El propósito de un teléfono en el roleplay

En definitiva, un teléfono de FiveM es una herramienta social. Los jugadores lo usan para coordinar encuentros, hacer tratos de drogas, escribirle al personaje de su jefe y escuchar música en la aplicación de radio. Todo lo que añadimos o quitamos de Agency-Phone se evalúa con esta pregunta: ¿hace que la interacción social sea más fácil o divertida? Por eso lanzamos una aplicación de galería antes que los recordatorios del calendario y por eso la aplicación de mensajería incluida tiene indicadores de escritura avanzados antes que la opción de programar envíos. El roleplay va primero, las listas de funciones van después.

Instalación y configuración

Agency-Phone requiere oxmysql para guardar contactos, mensajes y registros de llamadas. Importa phone.sql en tu base de datos, descarga el recurso desde Tebex, colócalo en el directorio resources y añade ensure agency-phone a server.cfg. La detección del framework es automática para QBCore y ESX. Para configuraciones standalone, implementa las cuatro funciones del adaptador en config.lua. Normalmente lleva una o dos horas, según tu capa personalizada de datos de jugador.

Los jugadores abren el teléfono pulsando la tecla configurable (predeterminada: M) o usando un objeto de su inventario. Ambos métodos se pueden usar a la vez. Algunos servidores usan el atajo de teclado; otros prefieren la opción inmersiva del objeto, que permite soltar o robar el teléfono.

Opciones de configuración

El config.lua incluye la configuración técnica y la de juego:

  • Tecla del teléfono, tecla para abrir/cerrar el teléfono. Predeterminada: M.
  • Teléfono como objeto", activa o desactiva si se requiere un objeto de teléfono en el inventario. Desactivado de forma predeterminada, solo se necesita la tecla.
  • Formato del número, cómo se muestran los números de teléfono y cómo se generan automáticamente para personajes nuevos.
  • Alcance de llamadas, distancia física máxima para llamadas dentro del alcance frente a llamadas fuera del alcance (buzón de voz). Ilimitado de forma predeterminada para llamadas dentro del personaje.
  • Integración con Twitter/LifeInvader, conecta Agency-LifeInvader si está instalado para la aplicación social.
  • Integración con la aplicación de radio, configura las emisoras de radio disponibles para la aplicación de música.
  • Aplicación bancaria, conecta la banca de QBCore, las cuentas de ESX o un controlador bancario personalizado.
  • Aplicación GPS, categorías personalizadas de puntos de ruta para ubicaciones específicas del servidor (hospitales, comisarías, negocios).
  • Enrutamiento de notificaciones, qué scripts externos pueden enviar notificaciones al teléfono y cómo aparecen.

Compatibilidad con frameworks

Agency-Phone incluye adaptadores para QBCore y ESX. El adaptador cubre la visualización del dinero, el objeto del inventario (si se activa el teléfono como objeto), los datos del trabajo para la visibilidad de aplicaciones específicas de cada trabajo y la visualización del nombre del personaje. En standalone, se aplica el mismo patrón de cuatro funciones. Una vez escrito el adaptador para un script de Agency, los siguientes scripts comparten las mismas funciones.

Por qué esto importa para el roleplay

El teléfono es el objeto más personal que lleva un personaje. Los jugadores interactúan con él en cada sesión: hacen llamadas, envían mensajes, consultan su saldo bancario y miran el mapa. Cuando esa interacción se siente como un teléfono real, las sesiones de RP en las que se usa también se sienten más reales. Un negocio de drogas coordinado mediante la aplicación de SMS de Agency-Phone, con confirmaciones de lectura e indicadores de escritura, da lugar a una escena sustancialmente distinta (y mejor) que el mismo negocio coordinado mediante un comando de chat.

La función de coordinación social es el papel más importante del teléfono para el RP. La mayoría de los eventos de RP importantes empiezan con una comunicación: alguien se pone en contacto, organiza una reunión, comparte coordenadas o confirma la hora. Toda esa comunicación es más inmersiva cuando ocurre por canales dentro del personaje, en lugar de por Discord o el chat OOC. Las aplicaciones de llamadas y SMS de Agency-Phone cubren de forma nativa el 95% de esas necesidades de coordinación social.

El uso de recursos en reposo de 0.00ms no es solo un detalle técnico, es lo que permite tener el teléfono como un recurso siempre abierto. Los scripts que consumen 0.02ms en reposo en un servidor de 128 jugadores suman 2.56ms de carga agregada en reposo entre todos los jugadores. El coste de Agency-Phone en reposo es cero. Esto importa para el rendimiento del servidor igual que cualquier recurso compartido: es proporcional a la cantidad de jugadores.

La aplicación de galería de la v2 y la capacidad de hacer capturas de pantalla dentro del juego han creado un caso de uso de RP inesperado: tomar fotografías como evidencia dentro del personaje. Los personajes de policía hacen capturas de escenas del crimen con la cámara del teléfono y las comparten en el chat interno de su departamento. Los periodistas fotografían eventos y los publican en LifeInvader. La cámara transforma el teléfono de una herramienta de comunicación en una herramienta de documentación con una aplicación real para el RP.

Preguntas frecuentes

¿Se pueden conservar los números de teléfono después de los wipes del servidor?

Los números de teléfono se guardan en oxmysql vinculados al identificador del personaje. Mientras se conserve el identificador del personaje después de un wipe, el número persistirá. La mayoría de los wipes del servidor borran la progresión del personaje, pero conservan los identificadores, por lo que los números suelen mantenerse. Para los wipes completos que también restablecen los identificadores, hay disponible una exportación para conservar los números y guardarlos o restaurarlos por separado del wipe principal.

¿Puede la policía rastrear llamadas y mensajes en tiempo real?

Sí. Activa el sistema de rastreo en config.lua. La policía con el indicador de permisos requerido puede abrir el panel de rastreo y buscar por número. El origen de las llamadas activas aparece en el mapa. Los metadatos de los mensajes (hora y par de números) se guardan en la tabla de registros y se puede acceder a ellos mediante Agency-Admin. El rastreo del contenido completo de los mensajes está desactivado de forma predeterminada como medida de privacidad desde el diseño. Actívalo explícitamente si las reglas de RP de tu servidor lo permiten.

¿Cómo gestiona el teléfono las llamadas cuando un jugador está muerto o bajo custodia?

Configura el estado de muerte y el estado de esposado en config.lua. Puedes configurar que los jugadores muertos pasen directamente al buzón de voz, que se desactive su teléfono o que solo puedan hacer llamadas de emergencia. Puedes bloquear por completo el uso del teléfono a los jugadores esposados o limitarlo a la vista GPS (para que la policía vea que no están pidiendo refuerzos). Estos estados se detectan mediante funciones exportadas por tus scripts de pantalla de muerte y esposas.

¿Qué emisoras de radio hay disponibles en la aplicación de música?

La lista de emisoras predeterminada incluye ocho URL de emisiones de radio comunitarias que abarcan géneros habituales. Añade las tuyas agregando URL de emisiones a Config.RadioStations. Los servidores suelen añadir su propia emisora de radio, donde el personal transmite noticias dentro del personaje. No hay DRM ni integración con servicios de streaming, funciona cualquier URL de emisión de audio accesible públicamente.

Requisitos

  • Servidor FiveM (QBCore, ESX o standalone)
  • oxmysql
  • cuenta de cfx.re con una licencia válida de Agency-Phone
  • Opcional: Agency-LifeInvader (para la integración de aplicaciones sociales)
  • Opcional: Agency-Pad (para sincronizar datos entre dispositivos)

El script adecuado

Listo para tu servidor, con actualizaciones incluidas.

¿Listo para empezar?

Consigue los scripts en nuestra tienda, o únete al Discord para soporte, novedades y un adelanto de lo que viene.