Skip to main content

Configuration

La configuracion principal esta en:

config/config.lua

Framework y apertura

Config.Framework = 'QBX'
Config.OpenPhoneKey = 'M'
Config.RequirePhoneItem = true
Config.PhoneItem = 'phone'
OpcionDescripcion
Config.FrameworkFramework usado por el recurso: QBX, QB o ESX.
Config.OpenPhoneKeyTecla registrada para abrir/cerrar el telefono.
Config.RequirePhoneItemSi es true, el jugador necesita llevar el item del telefono.
Config.PhoneItemNombre del item que representa el telefono en cold_inventory.

Tambien existe el comando:

/coldphone

Tarjeta SIM

Config.Sim = {
item = 'sim',
pinLength = 4,
maxAttempts = 3,
lockoutSeconds = 30,
numberPrefix = '555',
numberDigits = 9
}
  • item: item de SIM usado por cold_inventory.
  • pinLength: longitud esperada del PIN.
  • maxAttempts: intentos permitidos antes del bloqueo temporal.
  • lockoutSeconds: duracion del bloqueo tras superar los intentos.
  • numberPrefix: prefijo usado al generar nuevos numeros.
  • numberDigits: longitud total configurada para el numero generado.

Una SIM nueva solicita crear y confirmar su PIN. Una SIM configurada solicita ese PIN antes de insertarse.

La SIM conserva la identidad telefonica: numero, contactos, mensajes y llamadas. Los datos propios del dispositivo, como ajustes o aplicaciones, permanecen asociados al personaje/dispositivo.

Prop del telefono

Config.PhoneProp = {
enabled = true,
model = 'prop_amb_phone',
bone = 28422,
offset = vector3(0.0, 0.0, 0.0),
rotation = vector3(0.0, 0.0, 0.0)
}

Permite activar/desactivar el prop, cambiar el modelo, hueso y ajustes de posicion/rotacion.

El recurso incluye los archivos de stream para prop_amb_phone.

Llamadas

Config.CallTimeout = 30000

Config.CallSpeaker = {
enabled = true,
radius = 8.0,
refreshInterval = 750,
maxNearbyPlayers = 8
}
  • CallTimeout: tiempo maximo de llamada entrante antes de considerarla no respondida.
  • enabled: habilita el modo altavoz.
  • radius: radio para participantes cercanos al altavoz.
  • refreshInterval: intervalo de actualizacion de jugadores cercanos.
  • maxNearbyPlayers: limite de jugadores considerados alrededor del telefono.

Las llamadas de voz se conectan a canales de llamada de pma-voice.

Mensajes y limites

Config.MessageCooldown = 1000
Config.MaxMessageLength = 500
Config.MaxContactNameLength = 100
Config.MaxPhoneNumberLength = 20
Config.MaxBankTransfer = 1000000

Estos valores controlan el cooldown de mensajes y los limites de longitud/transferencia validados por el servidor.

Valet y cold_garages

Config.Valet = {
enabled = true,
account = 'bank',
garageFee = 750,
depositFee = 1750,
maxDepotCharge = 100000,
driverModel = 's_m_m_valet_01',
drivingSpeed = 22.0,
drivingStyle = 786603,
spawnNode = 18,
deliveryTimeoutMs = 120000,
pendingTimeoutMs = 180000,
stuckTimeoutMs = 15000,
arrivalDistance = 18.0,
dropoffSearchDistance = 30.0,
maxSpawnDistance = 300.0,
vehicleImageBaseUrl = 'https://docs.fivem.net/vehicles/%s.webp'
}

La aplicacion Valet consulta los vehiculos y solicita su entrega mediante la integracion con cold_garages.

Opciones principales:

  • enabled: activa la aplicacion/servicio de valet.
  • account: cuenta usada para cobrar el servicio.
  • garageFee: coste base para vehiculos en garaje.
  • depositFee: coste base para vehiculos en deposito.
  • maxDepotCharge: limite maximo aplicado a cargos de deposito.
  • driverModel: ped del conductor.
  • drivingSpeed / drivingStyle: comportamiento de conduccion.
  • deliveryTimeoutMs: tiempo maximo de una entrega activa.
  • pendingTimeoutMs: caducidad de solicitudes pendientes.
  • stuckTimeoutMs: tiempo usado para detectar una entrega atascada.
  • arrivalDistance: distancia considerada como llegada.
  • dropoffSearchDistance: radio de busqueda para finalizar la entrega.
  • maxSpawnDistance: distancia maxima permitida para el spawn del vehiculo.
  • vehicleImageBaseUrl: plantilla para las imagenes mostradas por la app.

Si qbx_vehiclekeys esta iniciado, el recurso intenta entregar las llaves del vehiculo al jugador al completar el servicio.

Funciones principales

Config.Features = {
contacts = true,
messages = true,
calls = true,
camera = true,
banking = true
}

Permite habilitar o deshabilitar las funciones principales de contactos, mensajeria, llamadas, camara y banca.

Sistema de bateria

Config.BatterySystem = {
enabled = false,
maxBattery = 100,
drainPerMinute = 0.45,
standbyDrainPerHour = 0.08,
vehicleCharging = true,
chargePerMinute = 3.0,
saveInterval = 60,
activityMultipliers = {
camera = 2.4,
gallery = 1.15,
youtube = 1.55,
google = 1.3,
instagram = 1.35,
whatsapp = 1.2,
tetris = 1.65,
snake = 1.65,
puzzle2048 = 1.55,
chess = 1.45
},
lowWarning = 20,
critical = 5
}

Por defecto el sistema de bateria esta desactivado.

Puedes configurar:

  • Capacidad maxima.
  • Consumo mientras se usa el telefono.
  • Consumo en espera.
  • Carga dentro de vehiculos.
  • Velocidad de carga.
  • Intervalo de persistencia.
  • Multiplicadores de consumo por aplicacion.
  • Niveles de bateria baja y critica.

Sistema de señal

Config.SignalSystem = {
enabled = true,
defaultSignal = 5,
deadZones = {}
}

defaultSignal define la cobertura base.

deadZones permite reservar zonas donde quieras reducir o anular la señal. La tabla viene vacia por defecto.

Camara

Config.Camera = {
screenshotResource = 'screencapture',
encoding = 'webp',
maxWidth = 1280,
maxHeight = 720,
maxBase64Length = 5000000,
captureCooldown = 1500
}

La camara usa capturas locales y valida dimensiones, tamaño y cooldown.

No necesita Discord webhook ni un hosting externo para guardar las fotos.

Videollamadas

Config.VideoCall = {
enabled = true,
frameInterval = 900,
maxWidth = 360,
maxHeight = 640,
maxBase64Length = 350000,
latentBps = 750000
}

Los fotogramas de videollamada se reducen y envian mediante eventos latentes.

Si necesitas reducir trafico, aumenta frameInterval o reduce las dimensiones y latentBps segun tu infraestructura.

Ajustes por defecto

Config.DefaultSettings define el estado inicial del dispositivo:

Config.DefaultSettings = {
wallpaper = 'default',
ringtone = 'default',
notifications = true,
vibration = true,
brightness = 80,
volume = 70,
airplaneMode = false,
wifi = true,
bluetooth = true,
mobileData = true,
darkMode = false,
autoBrightness = false,
autoLock = '2min',
textSize = 50,
notificationPreviews = 'always',
lowPowerMode = false,
batteryPercentage = true,
locationServices = true,
analytics = false,
setupCompleted = false,
passcodeEnabled = false,
passcodeHash = '',
faceIdEnabled = false,
installedApps = {},
appOrder = {},
backupEnabled = true,
dockOrder = {},
whatsappStatuses = {},
instagramPosts = {},
gameScores = {},
chessData = {}
}

Estos valores se usan como estado inicial; posteriormente los cambios del jugador se guardan de forma persistente.

Aplicaciones incluidas

El frontend contiene, entre otras, estas aplicaciones/funciones:

  • Telefono y contactos.
  • Mensajes y WhatsApp.
  • Camara y galeria.
  • Calendario, reloj/alarmas y notas.
  • Wallet y banca.
  • AirDrop.
  • Maps y Weather.
  • Google y YouTube.
  • Instagram y Tinder.
  • Valet.
  • Calculadora y musica.
  • Cold Store / App Store.
  • Juegos: Tetris, Snake, 2048 y Chess.

La disponibilidad visual de una aplicacion puede depender de los ajustes/aplicaciones instaladas del dispositivo.

Base de datos

El SQL incluido define estas tablas:

cold_phone_sims
cold_phone_sim_slots
cold_phone_contacts
cold_phone_messages
cold_phone_calls
cold_phone_photos
cold_phone_calendar_events
cold_phone_settings
cold_phone_notes
cold_phone_alarms
cold_phone_airdrop_items
cold_phone_bank_transactions
cold_phone_instagram_accounts
cold_phone_instagram_posts
cold_phone_instagram_likes
cold_phone_instagram_comments
cold_phone_instagram_stories
cold_phone_instagram_sessions
cold_phone_tinder_profiles
cold_phone_tinder_swipes
cold_phone_tinder_matches
cold_phone_tinder_messages

Las tablas se crean automaticamente al arrancar.

Seguridad del passcode

En server.cfg se recomienda:

set cold_phone_passcode_pepper "una-cadena-larga-unica-y-privada"

El servidor usa este secreto al generar los hashes de PIN/passcode. Mantenlo estable y privado.

API para otros recursos

Eventos cliente

cold_phone:client:openPhone
cold_phone:client:closePhone
cold_phone:client:toggle

Exports cliente

exports.cold_phone:OpenPhone()
exports.cold_phone:ClosePhone()
exports.cold_phone:IsPhoneOpen()
exports.cold_phone:GetPhoneData()

Exports servidor

Obtener el numero activo de un jugador:

local number = exports.cold_phone:GetPlayerPhoneNumber(source)

Enviar un mensaje desde otro recurso:

exports.cold_phone:SendMessage(senderNumber, receiverNumber, message)

Debug

Config.Debug = false

Activalo solo cuando necesites informacion adicional durante pruebas.