FAQ
El recurso no arranca y dice que falta una dependencia
Comprueba que se inicien antes de cold_phone:
ensure oxmysql
ensure ox_lib
ensure qbx_core # o qb-core / es_extended
ensure cold_inventory
ensure cold_garages
ensure screencapture
ensure pma-voice
ensure cold_phone
Tambien necesitas OneSync habilitado.
¿Tengo que importar cold_phone.sql?
No. El recurso crea sus tablas automaticamente al arrancar.
Puedes importar sql/cold_phone.sql manualmente si prefieres preparar la base de datos antes del primer inicio.
El telefono no abre con M
Comprueba primero:
Config.OpenPhoneKey = 'M'
Prueba tambien:
/coldphone
Si Config.RequirePhoneItem = true, necesitas llevar el item configurado:
Config.PhoneItem = 'phone'
Revisa tambien los key bindings de FiveM por si M fue reasignada.
Tengo el item phone, pero sigue sin abrir
Comprueba que cold_inventory este iniciado y que el item exista realmente con ese nombre.
cold_phone consulta cold_inventory:GetItemCount cuando Config.RequirePhoneItem esta activo.
¿Como funciona la SIM?
El item por defecto es:
Config.Sim.item = 'sim'
Una SIM nueva solicita crear y confirmar un PIN. Cuando vuelves a insertar una SIM ya configurada, debes introducir su PIN.
La SIM conserva su numero y los datos relacionados con la identidad telefonica.
La SIM se ha bloqueado por PIN incorrecto
Por defecto:
maxAttempts = 3
lockoutSeconds = 30
Tras superar el limite, espera el tiempo de bloqueo antes de volver a intentarlo.
¿Puedo cambiar el prefijo de los numeros?
Si:
Config.Sim.numberPrefix = '555'
Config.Sim.numberDigits = 9
Hazlo antes de generar las SIM/numeros que quieras conservar para evitar inconsistencias entre numeros antiguos y nuevos.
Las fotos no funcionan
Comprueba que el recurso:
screencapture
este iniciado antes de cold_phone.
La configuracion por defecto es:
Config.Camera.screenshotResource = 'screencapture'
No necesitas un webhook externo.
La videollamada va lenta o consume demasiado ancho de banda
Revisa:
Config.VideoCall.frameInterval
Config.VideoCall.maxWidth
Config.VideoCall.maxHeight
Config.VideoCall.maxBase64Length
Config.VideoCall.latentBps
Aumentar frameInterval y reducir la resolucion disminuye el trafico generado.
Las llamadas no tienen audio
Comprueba que pma-voice este iniciado y que las llamadas de voz esten habilitadas.
El recurso comprueba:
voice_enableCalls
Tambien revisa que no exista otro sistema telefonico intentando gestionar los mismos canales de llamada.
El altavoz no incluye jugadores cercanos
Comprueba:
Config.CallSpeaker.enabled = true
Y revisa:
radius = 8.0
refreshInterval = 750
maxNearbyPlayers = 8
La aplicacion bancaria no transfiere dinero
Primero verifica que Config.Framework sea correcto, porque las operaciones bancarias utilizan la API del framework.
Tambien comprueba el limite:
Config.MaxBankTransfer = 1000000
El servidor valida fondos, destinatario, cantidad y limites antes de ejecutar la operacion.
Valet no muestra o no entrega mis vehiculos
Comprueba:
Config.Valet.enabled = true
cold_phone declara cold_garages como dependencia, por lo que debe estar iniciado.
Revisa tambien los estados de los vehiculos en cold_garages, las tarifas, distancias y timeouts configurados en Config.Valet.
No recibo llaves al terminar una entrega Valet
Si utilizas QBOX y quieres la entrega automatica de llaves, el recurso intenta usar qbx_vehiclekeys cuando esta iniciado.
Si utilizas otro sistema de llaves, puede ser necesaria una integracion propia.
La bateria no baja
Es normal con la configuracion por defecto:
Config.BatterySystem.enabled = false
Cambialo a true si quieres utilizar el sistema de bateria.
Quiero zonas sin cobertura
El sistema de señal esta activo por defecto:
Config.SignalSystem.enabled = true
Las zonas sin cobertura se configuran en:
Config.SignalSystem.deadZones = {}
La tabla viene vacia, por lo que debes definir tus propias zonas si quieres utilizar esa funcion.
Cambie el passcode/PIN y despues de mover el servidor dejo de ser valido
Define un secreto estable en server.cfg:
set cold_phone_passcode_pepper "una-cadena-larga-unica-y-privada"
No cambies ese valor despues de que los jugadores hayan configurado sus codigos, salvo que tambien vayas a resetear/recrear los hashes correspondientes.
Los datos del telefono desaparecen tras reiniciar
Revisa errores de oxmysql en consola y confirma que las tablas cold_phone_* existen y reciben datos.
El recurso depende de MySQL para la persistencia de SIM, mensajes, llamadas, aplicaciones sociales y otros datos.
¿Puedo abrir/cerrar el telefono desde otro script?
Si. Cliente:
exports.cold_phone:OpenPhone()
exports.cold_phone:ClosePhone()
Tambien puedes consultar:
local open = exports.cold_phone:IsPhoneOpen()
local data = exports.cold_phone:GetPhoneData()
¿Puedo enviar SMS desde otro recurso?
Si, desde servidor:
exports.cold_phone:SendMessage(senderNumber, receiverNumber, message)
Para consultar el numero activo del jugador:
local number = exports.cold_phone:GetPlayerPhoneNumber(source)
Quiero modificar la interfaz
El frontend fuente esta en:
web/
Instala y compila:
cd web
npm ci
npm run lint
npm run build
El servidor usa la version compilada de html/, no el servidor de desarrollo de Vite.