Início › Documentação › Configuração · origen_phone

Configuração · origen_phone

Ficheiro O que contém
config/config.lua Definições de jogo: preços, limites, teclas, comportamento das apps. Partilhado com os clientes
config/bridge.lua Que sistema externo usar em cada categoria
config/server.lua Segredos apenas do servidor (chave de upload). Nunca é enviado aos clientes
config/apps.lua Catálogo de apps do ecrã inicial e propriedade dos domínios da API
config/widgets.lua Catálogo de widgets do ecrã inicial
config/pescabichos*.lua Dados do jogo Pescabichos: espécies, zonas de aparecimento, ataques, ginásios, progressão
locales/*.json Traduções

A maioria das definições do dia a dia (papéis de parede, cores de destaque, bateria, acesso às apps, preços, pontos de carregamento, lojas, valet) está no painel de administração (/telefonoadmin) e fica guardada na base de dados, por isso mudam sem reiniciar. Os valores de config/config.lua para essas definições são apenas os valores por omissão de uma instalação nova.

config/config.lua é enviado a todos os clientes. Nunca coloques segredos aí: usa config/server.lua ou um convar.


config/bridge.lua

lua
BridgeConfig = {
    Framework = 'auto',
    Inventory = 'auto',
    Notify = 'auto',
    Banking = 'auto',
    Garage = 'auto',
    Housing = 'auto',
    Dispatch = 'auto',
    Business = 'auto',
    Uploader = 'auto',
    Weather = 'auto',
    Voice = 'auto',
    VehicleKeys = 'auto',
    Fuel = 'auto',
}
Valor Comportamento
'auto' Escolhe o primeiro recurso iniciado da lista de compatíveis
'<resource>' Força um recurso específico pelo nome exato da sua pasta
'custom' Usa a tua implementação em custom/bridge/<category>/
'none' Desativa a integração de propósito

Consulta Dependências para ver os recursos compatíveis de cada categoria.


config/server.lua

lua
ServerConfig.Fivemanage = {
    ApiKey = GetConvar('ogphone_fivemanage_key', ''),
}
Opção Por omissão Descrição
ServerConfig.Fivemanage.ApiKey convar ogphone_fivemanage_key Chave de API do Fivemanage usada pelo bridge de Uploader por omissão. É preferível usar o convar a colar a chave no ficheiro

Geral

Opção Por omissão Descrição
Config.Debug convar ogphone_debug Regista na consola cada RPC. Mantém desativado em produção
Config.EsxIdentifier nil Apenas ESX. Campo do xPlayer que contém o identificador da personagem em servidores multipersonagem. Deixa em nil em ESX de uma só personagem
Config.Carrier 'OGN MOVIL' Nome do operador mostrado na barra de estado
Config.Currency '$' Símbolo da moeda usado por faturas, multas e notificações

Item

Opção Por omissão Descrição
Config.Item.Require true O item é obrigatório para abrir o telemóvel
Config.Item.Unique true Cada telemóvel é um item distinto com os seus próprios metadados
Config.Item.Name 'ognphone' Nome do item no inventário
Config.Item.MetaNumber 'ognPhoneNumber' Chave de metadados do número de telemóvel
Config.Item.MetaFormatted 'ognFormattedNumber' Chave de metadados do número formatado
Config.Item.MetaName 'ognPhoneName' Chave de metadados do nome do dispositivo
Config.Item.MetaId 'ognPhoneId' Chave de metadados do id do registo do telemóvel. Indica qual dos dispositivos que mostram um número é o verdadeiro. É escrita automaticamente nos itens antigos na primeira vez que são abertos
Config.Item.Owner 'person' A quem pertencem os dados: 'person' (a personagem) ou 'item' (o dispositivo). Controla-se em direto a partir do painel de administração; isto é apenas o valor por omissão

Números de telemóvel

Opção Por omissão Descrição
Config.PhoneNumber.Format '{2}-{4}' Formato de apresentação. Os números são guardados apenas como dígitos
Config.PhoneNumber.Length 4 Dígitos depois do prefixo
Config.PhoneNumber.Prefixes { '55', '60', '62', '68', '70' } Prefixos atribuídos aos números novos

Números personalizados

Um serviço VIP: o jogador pede um número nas Definições e um administrador aprova-o ou recusa-o a partir do painel. O dinheiro é cobrado na aprovação, não no pedido.

Opção Por omissão Descrição
Config.Numbers.Enabled true Ativa os pedidos de número personalizado
Config.Numbers.Price 25000 Preço. Com 0 é grátis
Config.Numbers.KeepPrefix true O número pedido tem de começar por um dos prefixos configurados
Config.Numbers.Reserved ver abaixo Números que não podem ser pedidos
lua
Config.Numbers.Reserved = {
    '550000', '551111', '552222', '555555',
    '600000', '601111', '606060', '666666',
    '700000', '707070', '777777',
}

Abertura

Opção Por omissão Descrição
Config.Command 'ogphone' Comando para abrir ou fechar o telemóvel. false desativa-o
Config.Keybind 'F1' Tecla por omissão. Os jogadores podem reatribuí-la nas teclas de atalho do FiveM
Config.CloseOnDeath true Fecha o telemóvel quando o jogador morre
Config.CloseWhenSwimming true Fecha o telemóvel enquanto se nada
Config.AllowInVehicle true Permite usar o telemóvel dentro de veículos

Animação e prop

Opção Por omissão Descrição
Config.Animation.Enabled true Reproduz a animação do telemóvel
Config.Animation.Prop prop_amb_phone Modelo do prop
Config.Animation.PropBone 28422 Osso ao qual o prop é preso
Config.Animation.PropOffset vector3(0.0, 0.0, 0.0) Deslocamento do prop
Config.Animation.PropRotation vector3(0.0, 0.0, 0.0) Rotação do prop

Notificações

O que os jogadores veem quando chega algo com o telemóvel fechado. O telemóvel espreita pela borda inferior com a sua moldura, o papel de parede e o relógio. O conteúdo fica oculto quando o jogador desativou as pré-visualizações ou está em modo streamer.

Opção Por omissão Descrição
Config.Notifications.Outside true Mostra o telemóvel a espreitar. Com false só toca um som
Config.Notifications.Side 'right' 'right', 'center' ou 'left'
Config.Notifications.Seconds 6 Tempo no ecrã
Config.Notifications.Max 3 Notificações empilhadas ao mesmo tempo
Config.Notifications.AutoWake true Liga o telemóvel de forma invisível quando o jogador aparece a transportar um, para que as chamadas e as mensagens lhe cheguem antes de o abrir
Config.Notifications.WakeEvery 20 Segundos entre verificações de se transporta um telemóvel

Notificações do servidor

As notificações do origen_notify também podem aparecer no telemóvel. Não ficam guardadas no centro de notificações.

Opção Por omissão Descrição
Config.ServerNotifications.Enabled false Mostra as notificações do servidor no telemóvel. As opções abaixo só se aplicam quando está ativado
Config.ServerNotifications.Replace true Com true a notificação passa para o telemóvel; com false é mostrada nos dois sítios
Config.ServerNotifications.Sound false Reproduz o toque de alerta do telemóvel
Config.ServerNotifications.Types nil Tipos a mostrar. nil ou vazio mostra todos. Exemplo: { error = true, primary = true }
Config.ServerNotifications.Cooldown 1500 Um texto idêntico dentro destes milissegundos não volta a ser mostrado

Logs

Envia a atividade do telemóvel para um webhook do Discord. Nunca se enviam o conteúdo das mensagens, as fotografias nem os dados privados.

Opção Por omissão Descrição
Config.Logs.Webhook '' URL do webhook do Discord. Vazio desativa os logs
Config.Logs.Name 'ORIGEN' Nome do remetente do webhook
lua
Config.Logs.What = {
    admin = true,        -- changes made from the admin panel
    numbers = true,      -- custom number requests and their outcome
    recovery = true,     -- recovered lines
    transfers = true,    -- money transfers
    blackmarket = true,  -- black market purchases
}

Armazenamento

Opção Por omissão Descrição
Config.Storage.Capacity 0 Capacidade em MB. 0 calcula-a a partir de Config.Uploader.MaxPhotos (recomendado)
Config.Storage.Slack 120 MB extra para conteúdo que não são fotografias quando a capacidade é calculada automaticamente
lua
Config.Storage.Weights = {
    photo   = 2400,
    video   = 18000,
    memo    = 900,
    note    = 4,
    message = 1,
}

Tamanho contado por elemento guardado, em kilobytes, quando se desconhece o tamanho real.


Bateria

Opção Por omissão Descrição
Config.Battery.Enabled false Ativa o consumo de bateria
Config.Battery.DrainSeconds 55 Segundos por cada 1 % com o telemóvel aberto
Config.Battery.DrainSecondsIdle 100 Segundos por cada 1 % com o telemóvel fechado
Config.Battery.ChargePerTick 5 Carga por tick
Config.Battery.ChargeMinutes 20 Minutos para carregar por completo num ponto de carregamento

Os pontos de carregamento são colocados a partir do painel de administração.


Recuperação de linha e loja de telemóveis

Opção Por omissão Descrição
Config.Recovery.Enabled true Ativa a recuperação de linha na loja do operador
Config.Recovery.Price 5000 Taxa de recuperação. Com 0 é grátis
Config.Recovery.Range 3.0 Distância ao balcão, em metros
Config.Shop.Enabled true Ativa a loja de telemóveis
Config.Shop.PhonePrice 1500 Preço de um telemóvel novo. Com 0 é grátis

As localizações das lojas definem-se a partir do painel de administração, em Mapa > Lojas. A recuperação usa os mesmos balcões.

lua
Config.Shop.Ped = {
    model = 's_m_m_highsec_01',
    heading = nil,
    scenario = 'WORLD_HUMAN_CLIPBOARD',
}
 
Config.Shop.Blip = {
    sprite = 606,
    color = 3,
    scale = 0.7,
}

Coloca Config.Shop.Ped ou Config.Shop.Blip em false para desativar o funcionário ou o blip.


Chamadas

Opção Por omissão Descrição
Config.Calls.KeyAnswer 'RETURN' Tecla por omissão para atender uma chamada a tocar
Config.Calls.KeyHangup 'BACK' Tecla por omissão para recusar ou desligar
Config.Calls.RingTimeout 30 Segundos que toca antes de contar como perdida
Config.Calls.MaxDuration 3600 Corte de segurança, em segundos
Config.Calls.AllowVideo true Ativa as videochamadas
Config.Calls.AllowRecording true Ativa a gravação de chamadas. A outra parte é gravada sem ser avisada
Config.Calls.AllowVoiceFilter true Ativa o modificador de voz. O filtro corre no cliente de quem ouve
Config.Calls.SpeakerRadius 3.0 Metros dentro dos quais os jogadores próximos se juntam a uma chamada em alta-voz
Config.Calls.MaxParticipants 5 Máximo de pessoas numa chamada, incluindo as duas que a iniciaram
lua
Config.Calls.Emergency = {
    ['911'] = 'police',
    ['112'] = 'police',
    ['police'] = 'police',
    ['061'] = 'ambulance',
    ['ambulance'] = 'ambulance',
    ['mechanic'] = 'mechanic',
}

Números curtos que encaminham uma chamada para um trabalho de serviço.

Vídeo (alternativa por fotogramas)

Usado apenas quando a ligação direta WebRTC não está disponível.

Opção Por omissão Descrição
Config.Calls.Video.Fps 12 Limite máximo de fotogramas por segundo
Config.Calls.Video.Width 240 Largura da imagem, em píxeis
Config.Calls.Video.Quality 0.5 Qualidade JPEG inicial (0 a 1)
Config.Calls.Video.KBPorSegundo 96 Upload máximo por lado através da ligação do jogo, em KB/s
Config.Calls.Video.MaxConcurrent 8 Videochamadas a enviar imagens ao mesmo tempo. Acima disto, as chamadas ficam só com áudio

Aumentar KBPorSegundo é a única definição arriscada deste bloco. Os fotogramas viajam pela mesma ligação que o jogo; demasiado upload faz com que os jogadores sejam expulsos por timeout.

Caixa de voz

Opção Por omissão Descrição
Config.Voicemail.Window 120 Segundos após uma chamada sem resposta durante os quais se pode deixar uma mensagem
Config.Voicemail.MaxSeconds 30 Duração máxima da gravação

WebRTC

Opção Por omissão Descrição
Config.WebRTC.Enabled true Envia o vídeo ponto a ponto. Quando está desativado ou a ligação falha, recorre a fotogramas retransmitidos pelo servidor
Config.WebRTC.Turn 'cloudflare' 'cloudflare' pede credenciais TURN ao Cloudflare Realtime (requer os convars ogphone_turn_token_id e ogphone_turn_api_token). false usa apenas STUN
Config.WebRTC.TurnTtl 86400 Tempo de vida das credenciais pedidas, em segundos
Config.WebRTC.Timeout 6 Segundos de espera pela ligação direta antes de recorrer à alternativa
Config.WebRTC.MaxKbit 1000 Bitrate máximo de upload para vídeo direto, em kbit/s
lua
Config.WebRTC.IceServers = {
    { urls = 'stun:stun.l.google.com:19302' },
    { urls = 'stun:stun1.l.google.com:19302' },
    -- { urls = 'turn:my.server:3478', username = 'user', credential = 'password' },
}

Mensagens

Opção Por omissão Descrição
Config.Messages.MaxLength 1000 Carateres por mensagem
Config.Messages.SystemNumber '900100' Número remetente das mensagens do servidor sem remetente
Config.Messages.EditWindow 900 Segundos durante os quais uma mensagem pode ser editada
Config.Messages.PageSize 30 Mensagens por página ao fazer scroll
Config.Messages.MaxGroupMembers 32 Membros por conversa de grupo
Config.Messages.AllowDelete true Permite apagar mensagens para todos
Config.Messages.DeleteWindow 3600 Segundos durante os quais uma mensagem pode ser apagada para todos

Stickers

Packs incluídos no servidor, carregados na base de dados no arranque segundo o slug. Os URLs podem ser externos ou do próprio recurso (nui://origen_phone/ui/...). Os packs dos jogadores criam-se a partir da galeria.

lua
Config.StickerPacks = {
    {
        slug = 'caras',
        title = 'Caras',
        cover = nil,
        stickers = {
            { emoji = '😀' }, { emoji = '😂' }, -- ...
        },
    },
    -- 'ciudad', 'reacciones'
}

Opção Por omissão Descrição
Config.Uploader.MaxPhotos 500 Fotografias por telemóvel
Config.Uploader.TrashDays 30 Dias na reciclagem antes da eliminação definitiva

Contactos, alarmes e correio

Opção Por omissão Descrição
Config.Contacts.ShareRange 5.0 Metros dentro dos quais se pode partilhar um número cara a cara
Config.Alarms.Max 10 Alarmes por telemóvel
Config.Alarms.RingSeconds 30 Segundos que um alarme toca antes de parar
Config.Mail.Domain 'ogn.net' Domínio dos endereços de e-mail do servidor
Config.Mail.MaxLength 4000 Carateres por e-mail
Config.Mail.MaxRecipients 10 Destinatários por e-mail
Config.Mail.MaxAttachments 6 Anexos por e-mail (ligações, não ficheiros)

OGN (rede social)

Opção Por omissão Descrição
Config.OGN.Enabled true Ativa a rede social
Config.OGN.UsernamePattern '^[%w%._]+$' Carateres permitidos no nome de utilizador
Config.OGN.UsernameMin 3 Comprimento mínimo do nome de utilizador
Config.OGN.UsernameMax 20 Comprimento máximo do nome de utilizador
Config.OGN.MaxCaption 2200 Carateres por legenda
Config.OGN.MaxComment 500 Carateres por comentário
Config.OGN.MaxMediaPerPost 10 Ficheiros multimédia por publicação
Config.OGN.StoryHours 24 Duração de uma história
Config.OGN.FeedPageSize 12 Publicações por página do feed
Config.OGN.CostToVerify false Preço da verificação. false desativa a verificação paga

Diretos

Opção Por omissão Descrição
Config.OGN.Live.Enabled true Ativa os diretos
Config.OGN.Live.Fps 2 Fotogramas por segundo
Config.OGN.Live.Width 320 Lado mais comprido da imagem, em píxeis
Config.OGN.Live.Quality 0.45 Qualidade JPEG (0 a 1)
Config.OGN.Live.MaxConcurrent 3 Diretos em simultâneo em todo o servidor
Config.OGN.Live.MaxViewers 20 Espectadores por direto. Reduz isto primeiro se a largura de banda for justa
Config.OGN.Live.ChatLines 60 Linhas de chat guardadas durante o direto

OGN Fans

Fotografias pagas para desbloquear. Quem não as compra vê-as pixelizadas.

Opção Por omissão Descrição
Config.Fans.Commission 0.20 Parte do servidor em cada venda e gorjeta (0 a 1)
Config.Fans.MinPrice 0 Preço mínimo de uma fotografia. 0 é grátis
Config.Fans.MaxPrice 50000 Preço máximo de uma fotografia
Config.Fans.MinTip 10 Gorjeta mínima
Config.Fans.MaxTip 100000 Gorjeta máxima
Config.Fans.PageSize 20 Publicações por página
Config.Fans.ImageHosts { 'fivemanage.com', 'fmfile.com' } Hosts a partir dos quais o servidor pode descarregar para pixelizar as fotografias
Config.Fans.MaxImageBytes 8388608 Tamanho máximo da fotografia descarregada, em bytes

DarkChat

A «encriptação» é só de roleplay: as mensagens ficam guardadas na base de dados e o staff pode lê-las.

Opção Por omissão Descrição
Config.DarkChat.Enabled true Ativa o DarkChat
Config.DarkChat.CodeLength 6 Comprimento do código da sala
Config.DarkChat.MaxMembers 24 Membros por sala
Config.DarkChat.MaxRooms 8 Salas que um jogador pode ter abertas
Config.DarkChat.InviteRadius 3.0 Metros dentro dos quais se pode adicionar alguém sem o código
Config.DarkChat.BurnOptions { 0, 5, 30, 60, 1440 } Opções de autodestruição, em minutos. 0 nunca apaga

Mercado negro

Anúncios sob um pseudónimo, entregues através de pontos de entrega escondidos.

Opção Por omissão Descrição
Config.BlackMarket.Enabled true Ativa o mercado negro
Config.BlackMarket.Days 3 Dias que dura um anúncio
Config.BlackMarket.MaxPerPhone 6 Anúncios ativos por jogador
Config.BlackMarket.MaxItems 6 Itens distintos por anúncio
Config.BlackMarket.MaxStock 50 Unidades por anúncio
Config.BlackMarket.Commission 0.1 Comissão por venda
Config.BlackMarket.DropRadius 5.0 Distância de recolha de um ponto de entrega, em metros
Config.BlackMarket.DropMinutes 60 Minutos que um pacote fica no ponto antes de o negócio ser cancelado e reembolsado
lua
Config.BlackMarket.Blocked = {
    'vehiclekey', 'vehicle_key', 'carkeys', 'keys',
    'vehicledocs', 'vehicle_papers', 'documentacion_vehiculo',
}

Anúncios e marketplace

Opção Por omissão Descrição
Config.Ads.Days 7 Dias que dura um anúncio
Config.Ads.MaxPerPhone 5 Anúncios ativos por telemóvel
Config.Ads.Cost 0 Custo de publicar. 0 é grátis
Config.Market.MaxItems 6 Itens distintos por anúncio
Config.Market.MaxStock 50 Unidades por anúncio
Config.Market.Commission 0.05 Comissão da plataforma por venda
lua
Config.Ads.Categories = {
    { id = 'venta',     label = 'Se vende' },
    { id = 'compra',    label = 'Se compra' },
    { id = 'servicios', label = 'Servicios' },
    { id = 'empleo',    label = 'Empleo' },
    { id = 'vivienda',  label = 'Vivienda' },
    { id = 'general',   label = 'General' },
}
 
Config.Market.Blocked = {
    'vehiclekey', 'vehicle_key', 'carkeys', 'keys',
    'vehicledocs', 'vehicle_papers', 'documentacion_vehiculo',
}

Os itens vendidos saem do inventário do vendedor e chegam ao do comprador, entregues por um estafeta da Mandao.


Viagens: Taxi e GO

Opção Por omissão Descrição
Config.Rides.MinDistance 100 Distância mínima da viagem, em metros
Config.Rides.DriverCut 0.85 Parte que fica com o condutor. O resto sai da economia
Config.Rides.Timeout 5 Minutos que um pedido não aceite fica à espera
Config.Rides.StuckMinutes 30 Minutos após a aceitação a partir dos quais o passageiro pode cancelar depois de entrar no veículo
lua
Config.Rides.Taxi = {
    label = 'Taxi',
    employer = {
        jobs = { 'taxi' },
        businesses = { 'taxi' },
    },
    base = 150,
    perKm = 45,
}
 
Config.Rides.Go = {
    label = 'GO',
    employer = false,
    base = 300,
    perKm = 90,
}
Campo Descrição
employer Quem pode conduzir. jobs são trabalhos do framework, businesses são nomes ou tipos de negócio do bridge Business. Basta cumprir um dos dois. false deixa conduzir qualquer pessoa. É verificado sempre, não só no registo
base Tarifa base
perKm Tarifa por quilómetro

Corridas de táxi com NPC

Quando há taxistas livres e poucos pedidos, são geradas corridas de passageiros NPC. O servidor valida a posição do condutor na recolha e no destino e rejeita tempos de chegada impossíveis.

Campo Por omissão Descrição
enabled true Ativa as corridas com NPC
every 45 Segundos entre verificações de geração
chance 0.6 Probabilidade de haver uma corrida em cada verificação (0 a 1)
perDriver 1 Máximo de corridas NPC pendentes por condutor livre
maxPending 4 Máximo de corridas NPC pendentes no total
nearDriver 2500 A recolha fica a esta distância de um condutor livre, em metros
minTrip / maxTrip 600 / 4500 Intervalo de comprimento do trajeto, em metros
radius 80.0 Raio em torno do ponto onde o táxi tem de estar
maxSpeed 30 Velocidade média máxima plausível, em m/s
fareFactor 1.0 Tarifa NPC relativamente à tarifa normal
models lista Modelos de ped usados como passageiros
names lista Nomes apresentados dos passageiros
notes lista Notas que o passageiro envia. Cadeias vazias significam sem nota
places lista Pontos de recolha e de destino { x, y, z, label }. O passageiro aparece no passeio mais próximo

Mandao (entregas)

Opção Por omissão Descrição
Config.Delivery.Base 200 Tarifa base de entrega
Config.Delivery.PerKm 60 Tarifa por quilómetro
Config.Delivery.CourierCut 0.85 Parte que fica com o estafeta
Config.Delivery.Timeout 20 Minutos que um pedido não aceite fica à espera
Config.Delivery.Deadline 10 Minutos para entregar um pedido aceite. Quando expira, a mercadoria é entregue na mesma e o estafeta recebe uma falta
Config.Delivery.StrikeBans { 10, 30, 60 } Minutos de bloqueio por falta. A última entrada repete-se
Config.Delivery.StrikeReset 120 Minutos sem falhas antes de as faltas serem esquecidas
Config.Delivery.MinDistance 150 Distância mínima de entrega, em metros
Config.Delivery.Reach 8.0 Distância necessária para recolher ou entregar, em metros
Config.Delivery.MaxItems 8 Itens distintos por entrega entre jogadores
Config.Delivery.Employer false Quem pode entregar. Mesmo formato que Config.Rides.Taxi.employer
Config.Delivery.HandleBusinessOrders true Os pedidos de negócios esperam por um estafeta em vez de chegarem automaticamente
Config.Delivery.BusinessFee 450 O que o negócio paga ao estafeta por entregar o seu pedido
lua
Config.Delivery.Depots = {
    { label = 'Almacen de mercancia · Muelle 1', x = 95.67,  y = -1746.8,  z = 28.7,  h = 140.88 },
    { label = 'Almacen de mercancia · Muelle 2', x = 99.68,  y = -1749.3,  z = 28.71, h = 139.86 },
    { label = 'Almacen de mercancia · Muelle 3', x = 103.73, y = -1751.94, z = 28.72, h = 139.62 },
}

Onde se recolhe a mercadoria dos pedidos de negócios. Vazio significa recolha no próprio negócio.


Beboteo (encontros)

Opção Por omissão Descrição
Config.Dating.DailyLikes 20 Likes diários para utilizadores não VIP
Config.Dating.MaxPhotos 6 Fotografias por perfil
Config.Dating.VipPrice 5000 Preço do VIP
Config.Dating.VipDays 30 Duração do VIP
Config.Dating.VipLabel 'BEBOTEO VIP' Texto do selo VIP
lua
Config.Dating.Genders = {
    hombre = 'dating_gender_male',
    mujer = 'dating_gender_female',
    otro = 'dating_gender_other',
}

A chave é guardada e comparada; o valor é a chave de locale que se mostra.


Banco, faturas e multas

Opção Por omissão Descrição
Config.Bank.MaxTransfer 500000 Limite por transferência a partir do telemóvel
Config.Bank.MaxDaily 2000000 Total que se pode movimentar por dia. 0 remove o limite
Config.Bank.MaxWeekly 8000000 Total que se pode movimentar por semana. 0 remove o limite
Config.FineAccount '' Conta que recebe os pagamentos de multas. Vazio cobra ao jogador sem depositar em lado nenhum

Cripto

Desativado por omissão porque obtém preços em direto da internet. Para o ativar, define Config.Crypto.Enabled = true, adiciona { id = 'crypto', label = 'Monedas', slot = 27, default = true } a Apps e crypto = 'crypto' a AppDomains em config/apps.lua.

Opção Por omissão Descrição
Config.Crypto.Enabled false Ativa a negociação de criptomoedas
Config.Crypto.Api endpoint público do CoinGecko Fonte de preços. Não precisa de chave de API
Config.Crypto.Currency 'usd' Moeda dos preços
Config.Crypto.Refresh 300 Segundos entre consultas de preços (partilhado por todo o servidor)
Config.Crypto.Fee 0.02 Comissão da casa por operação
Config.Crypto.MaxPerTrade 500000 Montante máximo por operação. 0 remove o limite
lua
Config.Crypto.Coins = {
    'bitcoin', 'ethereum', 'solana', 'dogecoin', 'cardano', 'litecoin',
}
 
Config.Crypto.Names = {
    bitcoin  = 'Bitoro',
    ethereum = 'Etherna',
    solana   = 'Solaris',
    dogecoin = 'Perrocoin',
    cardano  = 'Cardina',
    litecoin = 'Ligera',
}

Se a fonte de preços não responder, a negociação fica desativada.


Navegador

Só abre sites incluídos na lista branca. Os domínios são comparados, por isso origen.net permite todas as suas páginas e subdomínios.

Opção Por omissão Descrição
Config.Browser.Enabled true Ativa o navegador
Config.Browser.Home '' Página inicial. Vazio começa nos marcadores
Config.Browser.Sites {} Sites permitidos. Vazio não abre nada
Config.Browser.Bookmarks {} Marcadores definidos pelo servidor

Música

lua
Config.Music.Stations = {
    -- { id = 'ogn', name = 'Radio OGN', genre = 'Mixed', url = 'https://...' },
}
Config.Music.AllowCustomUrl = true

O URL tem de ser uma emissão que o navegador consiga reproduzir (mp3, aac ou m3u8 de áudio). Só toca para o jogador que a inicia.


Notícias

lua
Config.News.Publishers = {
    businesses = { 'weazel', 'weazelnews', 'cnt' },
    jobs = { 'reporter', 'weazel', 'weazelnews', 'cnt' },
    error = 'err_news_need_job',
}
Config.News.MaxPerDay = 6

Quem pode escrever artigos a partir do telemóvel. Basta cumprir um de businesses ou jobs. Define Publishers como false para publicar apenas através do export PublishNews. MaxPerDay é o limite por telemóvel; 0 remove-o.


Serviços de emergência

Os alertas são enviados ao bridge de Dispatch com a posição de quem liga.

lua
Config.Services.Cooldown = 60
Config.Services.List = {
    {
        id = 'police',
        label = 'Policia',
        description = 'Robos y peleas',
        icon = 'lucide:shield',
        job = 'police',
        alertTitle = 'Aviso ciudadano',
    },
    {
        id = 'ambulance',
        label = 'Emergencias medicas',
        description = 'Heridos y accidentes',
        icon = 'lucide:cross',
        job = 'ambulance',
        alertTitle = 'Aviso medico',
    },
}
Campo Descrição
Cooldown Segundos entre alertas do mesmo telemóvel
job Trabalho que recebe o alerta
alertTitle Título do alerta de dispatch

Os mecânicos e os reboques não vão aqui: com um recurso de negócios aparecem como negócios na app.


Moderação

Opção Por omissão Descrição
Config.Filter.Enabled true Ativa os filtros
Config.Filter.Words {} Palavras que são mascaradas em tudo o que um jogador escreve. Detetadas dentro de outras palavras, sem distinguir maiúsculas nem acentos. Vem vazio
Config.Filter.Mask '***' Texto de substituição
Config.Filter.ReservedNames ver abaixo Nomes proibidos em nomes de utilizador, pseudónimos e nomes de perfil
lua
Config.Filter.ReservedNames = {
    'admin', 'administrador', 'staff', 'moderador', 'soporte', 'support',
    'police', 'policia', 'lspd', 'bcso', 'sheriff', 'ems', 'sama', 'emergencias',
    'origen', 'ogn', 'sistema', 'system', 'oficial', 'official',
}

Painel de administração e acesso às apps

Opção Por omissão Descrição
Config.Admin.Command 'telefonoadmin' Comando que abre o painel
Config.Admin.Ace 'ogphone.admin' Permissão ACE
Config.Admin.Export { resource = 'origen_admin', method = 'IsAdmin' } Export que recebe o source e devolve true ou false. Corre dentro de pcall
Config.Admin.Licenses {} Identificadores individuais permitidos
Config.AppRules.Unemployed 'unemployed' Nome do trabalho para jogadores sem trabalho
Config.AppRules.NoGang 'none' Nome da gangue para jogadores que não estão em nenhuma

As regras de acesso às apps (quem recebe cada app) definem-se a partir do painel de administração ou com o export SetAppRule.


Aparência e sons

São valores por omissão; depois de alterados a partir do painel, passam a mandar os valores da base de dados.

lua
Config.Wallpapers = {
    { id = 'default',  label = 'ORIGEN',             url = 'images/wallpapers/origen.jpg' },
    { id = 'gradient', label = 'wallpaper_gradient', url = 'images/wallpapers/default.svg' },
    { id = 'midnight', label = 'wallpaper_midnight', url = 'images/wallpapers/midnight.svg' },
    { id = 'sunset',   label = 'wallpaper_sunset',   url = 'images/wallpapers/sunset.svg' },
    { id = 'forest',   label = 'wallpaper_forest',   url = 'images/wallpapers/forest.svg' },
    { id = 'carbon',   label = 'wallpaper_carbon',   url = 'images/wallpapers/carbon.svg' },
    { id = 'light',    label = 'wallpaper_light',    url = 'images/wallpapers/light.svg', light = true },
}
 
Config.Accents = {
    { id = 'origen', label = 'ORIGEN',        acc = '#fc0259', rgb = '252, 2, 89',   soft = '#fc0259', pale = '#fd9bbd', deep = '#82173c' },
    { id = 'blue',   label = 'accent_blue',   acc = '#2f7dff', rgb = '47, 125, 255', soft = '#2f7dff', pale = '#a8c8ff', deep = '#173f82' },
    -- green, yellow, red, orange
}

url pode ser um ficheiro de ui/images/wallpapers ou um endereço externo. label pode ser uma chave de locale ou texto simples.

lua
Config.Sounds.Ringtones = {
    { id = 'ring1', label = 'ringtone_1', file = 'Ringtone1.mp3' },
    -- ring2 ... ring6
}
 
Config.Sounds.Ringback = { sound = 'Remote_Ring', set = 'Phone_SoundSet_Michael', loops = true }
Config.Sounds.Hangup   = { sound = 'Hang_Up', set = 'Phone_SoundSet_Michael' }
 
Config.Sounds.Alerts = {
    { id = 'aviso1', label = 'alert_tone_1', file = 'Notificacion1.mp3' },
    -- aviso2 ... aviso5
    { id = 'silent', label = 'alert_tone_none', file = false },
}

Os toques e os alertas são ficheiros em ui/sounds/. O id fica guardado nas definições de cada jogador, por isso não deve mudar depois de publicado.


Idiomas

Opção Por omissão Descrição
Config.DefaultLanguage 'es' Idioma por omissão do telemóvel
Config.Languages { 'es', 'en', 'fr', 'de', 'pt' } Idiomas disponíveis. Com apenas um, o seletor de idioma fica oculto
Config.DateLocales es-ES, en-GB, fr-FR, de-DE, pt-PT Formato de datas e números por idioma
Config.DateLocale 'es-ES' Valor de reserva para um idioma que falte em DateLocales

Para adicionar um idioma, copia locales/en.json, traduz-o e adiciona o respetivo código a Config.Languages e Config.DateLocales.


config/apps.lua

A fonte de verdade do servidor sobre que apps existem. Editar a interface não chega para entrar numa app.

Campo Descrição
id Identificador da app
label Nome apresentado
slot Posição na grelha do ecrã inicial (1 a 24 por página)
dock Colocada no dock inferior em vez de na grelha
default Instalada por omissão
fija Não pode ser desinstalada a partir da loja de apps
lua
Apps = {
    { id = 'phone',    label = 'Telefono', dock = 1, default = true, fija = true },
    { id = 'messages', label = 'Mensajes', dock = 2, default = true, fija = true },
    { id = 'ogn',      label = 'OGN',      dock = 3, default = true },
    { id = 'camera',   label = 'Camara',   dock = 4, default = true },
 
    { id = 'store',    label = 'Apps',       slot = 1, default = true, fija = true },
    { id = 'widgets',  label = 'Widgets',    slot = 2, default = true, fija = true },
    { id = 'gallery',  label = 'Galeria',    slot = 3, default = true },
    { id = 'settings', label = 'Ajustes',    slot = 4, default = true, fija = true },
    -- notes, calendar, map, weather, music, news, bank, ads, services, vehicles,
    -- mail, taxi, go, invoices, fines, clock, delivery, dating, calculator,
    -- properties, browser, voicememo, darkchat, blackmarket, fans, pescabichos
}

Retira uma app desta lista para a desativar para todos. Para a restringir a alguns jogadores (civis, uma gangue, um trabalho), usa antes o painel de administração.

AppDomains associa cada domínio da API do servidor à app a que pertence. Quando um jogador perde o acesso a uma app, os métodos do servidor dessa app deixam de lhe responder, pelo que o acesso é aplicado do lado do servidor.


config/widgets.lua

lua
Widgets.Catalogo = {
    { id = 'servidor',    label = 'widget_name_server',     fuente = 'propio' },
    { id = 'weather',     label = 'widget_name_weather',    fuente = 'propio' },
    { id = 'bank',        label = 'widget_name_bank',       fuente = 'propio' },
    { id = 'trabajo',     label = 'widget_name_job',        fuente = 'fuera'  },
    { id = 'emergencias', label = 'widget_name_emergency',  fuente = 'propio' },
    { id = 'multas',      label = 'widget_name_bills',      fuente = 'propio' },
    { id = 'garaje',      label = 'widget_name_garage',     fuente = 'propio' },
    { id = 'negocio',     label = 'widget_name_business',   fuente = 'fuera'  },
    { id = 'facciones',   label = 'widget_name_factions',   fuente = 'propio' },
    { id = 'ruta',        label = 'widget_name_route',      fuente = 'propio' },
    { id = 'radio',       label = 'widget_name_radio',      fuente = 'fuera'  },
    { id = 'anuncios',    label = 'widget_name_ads',        fuente = 'propio' },
    { id = 'battery',     label = 'widget_name_battery',    fuente = 'propio' },
    { id = 'activity',    label = 'widget_name_activity',   fuente = 'propio' },
}
fuente Significado
'propio' Preenchido pelo próprio telemóvel
'fuera' Preenchido por outro recurso com o export SetWidgetData

As permissões dos widgets são geridas no painel de administração.


Pescabichos

Dados de jogo da app de captura de criaturas. Os nomes e textos são chaves de locale (pb_sp_12, pb_sp_12_desc, pb_atk_12_1); para mudar o nome de uma criatura, edita essa chave em cada locales/*.json. Um valor que não seja uma chave é mostrado tal como está.

Ficheiro O que contém
config/pescabichos.lua Tipos, raridades, zonas de aparecimento e espécies de 1 a 50
config/pescabichos_especies2.lua / pescabichos_especies3.lua Espécies a partir da 51
config/pescabichos_combate.lua Combates, tabela de tipos, movimentos por tipo, ginásios, raides, evolução
config/pescabichos_ataques.lua Ataques de cada criatura
config/pescabichos_progreso.lua Nível do jogador, desbloqueios e loja

Campos de espécie

Campo Descrição
id Número de coleção (1 a 200). É também o nome da imagem: ui/images/pescabichos/<id>.webp
nombre Chave de locale do nome
tipos Um ou dois de asfalto, neon, marea, polvo, pino, chatarra, brasa, niebla
rareza comun, poco, rara, epica ou legendaria
zonas Onde aparece. Vazio é em qualquer sítio em terra. 'mar' é água a sério
peso Peso de aparecimento opcional. Por omissão, o da sua raridade
stock Máximo opcional em todo o servidor
red Rede especial opcional necessária para a capturar
dificultad Dificuldade de captura opcional (1 a 5)
hora nil sempre, 'noche' (21-6) ou 'dia' (7-20)
familia / fase Linha evolutiva e etapa (1, 2 ou 3)
pc Poder mínimo e máximo com que aparece
texto Chave de locale da sua entrada na dex

Raridades

lua
Pescabichos.Rarezas = {
    comun      = { nombre = 'pb_rarity_comun',      peso = 100, captura = 0.55, huye = 0.08, xp = 100 },
    poco       = { nombre = 'pb_rarity_poco',       peso = 38,  captura = 0.35, huye = 0.12, xp = 200 },
    rara       = { nombre = 'pb_rarity_rara',       peso = 12,  captura = 0.20, huye = 0.18, xp = 500 },
    epica      = { nombre = 'pb_rarity_epica',      peso = 3,   captura = 0.09, huye = 0.25, xp = 1500 },
    legendaria = { nombre = 'pb_rarity_legendaria', peso = 1,   captura = 0.04, huye = 0.35, xp = 4000 },
}
Campo Descrição
peso Peso de aparecimento face às outras raridades
captura Probabilidade base de captura
huye Probabilidade de fugir após uma tentativa falhada
xp XP concedido ao capturá-la

Zonas

As zonas de terra são retângulos do mapa { min x, min y, max x, max y }, verificados por ordem (primeiro as zonas pequenas). Fora de todas elas, a zona é campo.

lua
Pescabichos.Zonas = {
    { id = 'alamo',      nombre = 'pb_area_1', caja = { 300, 3850, 2050, 4600 } },
    { id = 'industrial', nombre = 'pb_area_2', caja = { -350, -3450, 1500, -2350 } },
    -- ...
}

Progressão

lua
P.NivelPescadorMax = 50
 
P.Progreso = {
    rareza = { comun = 1, poco = 1, rara = 5, epica = 12, legendaria = 20 },
    salvajes = { abajo = 8, arriba = 3, max = 35 },
    porEncima = { resta = 0.05, limite = 10 },
    topeBicho = 10,
    abre = { entrenar = 3, duelos = 5, equipo = 8, intercambios = 10, incursiones = 10 },
}
Campo Descrição
rareza Nível do jogador a partir do qual aparece cada raridade
salvajes Níveis das criaturas selvagens relativos ao jogador (abajo, arriba, max)
porEncima Penalização da probabilidade de captura por cada nível acima do jogador, e a diferença de níveis a partir da qual não pode ser capturada
topeBicho As criaturas podem subir até ao nível do jogador mais este valor
abre Nível em que cada funcionalidade é desbloqueada