Pular para o conteúdo

Personalização

As configurações estão em config.lua. Os dois arquivos de bridge estão abertos para que você possa adaptar o lado do framework. O tablet em si é HTML puro em html/.


ArquivoO que ele decideAberto?
config.luaIdioma, framework, fotos, o comando do criador, a grade ao vivo, quem pode usar o tablet e props de câmeraSim
bridge/client_bridge.luaDetecção de framework, trabalho do jogador, notificações e o aviso de texto de ajudaSim
bridge/server_bridge.luaDetecção de framework, identificadores, trabalhos, itens utilizáveis, adição e remoção de itens, notificaçõesSim
items/Definições de itens para ox, qb e ESX, e os ícones em items/images/Sim
html/O tablet: index.html, app.js, app.css, o mapa (map.js, map.css) e seus blocos em html/tiles/Sem escrow
locales/*.luaTodas as strings, no jogo e no tabletCom escrow nesta versão
client/, server/O scriptCom escrow

OpçãoO que ela fazPadrão
Config.LocaleQual idioma é usado'en'
Config.Frameworkesx, qbcore, ou auto para detectar. No QBox, auto o encontra como qbcore via compatibilidade QBCore; para fixar, use qbcore'auto'
Config.EvidenceEnabledFotos ativadas ou desativadas. Desativado, Espaço em uma câmera e a captura da grade não fazem nadatrue
Config.CreatorCommandO comando que abre o criador de admin'camcreator'
Config.CreatorAceA permissão ACE que o criador precisa'mic_cctvcreator.open'
Config.LiveGridFPSQuantas vezes a grade atualiza por segundo. De 1 a 15; maior é mais fluido e mais pesado5
Config.BlackScreenBehindUIDesenha uma tela preta atrás do tablet para esconder os saltos entre câmeras enquanto a grade atualizatrue
Config.AllowedJobsTrabalhos permitidos para abrir o tablet. Vazio significa todos. Veja abaixo{}
Config.SpawnDistanceQuão perto você precisa estar para o prop de uma câmera ser gerado60.0
Config.BreakableCameraSe as câmeras podem ou não ser quebradastrue
Config.RepairDistanceAlcance do laser de reparo20.0
Config.RepairTimeQuanto tempo leva um reparo, em milissegundos5000

Esta é a parte que vale a pena decidir antes que alguém coloque uma câmera.

  • Qualquer pessoa com um cctv_tablet pode abri-lo.
  • Uma câmera colocada por um jogador é privada: apenas ele a vê.
  • O dono pode então compartilhá-la com seu trabalho — ela se torna uma câmera de trabalho para todos naquele emprego — ou dar a ela um nome de acesso e senha. Qualquer pessoa que digite esses dados em seu tablet adiciona a câmera a ele.

Config.AllowedJobs definido, por exemplo polícia e xerife

Seção intitulada “Config.AllowedJobs definido, por exemplo polícia e xerife”
  • Apenas esses trabalhos podem abrir o tablet; qualquer outra pessoa recebe aviso de que não está autorizada.
  • Uma câmera que um jogador coloca se torna uma câmera de trabalho para o emprego em que ele está naquele momento.

Sempre câmeras de trabalho, visíveis para todos os trabalhos marcados no criador. Uma câmera do criador sem nenhum trabalho marcado não fica visível para ninguém.

  • Uma foto tirada de uma câmera privada é privada para quem a tirou. Uma foto de uma câmera de trabalho pertence ao trabalho. Ambas podem ser compartilhadas com o seu trabalho a partir da galeria.
  • Os logs de violação aparecem para todas as câmeras às quais você tem acesso — os 30 mais recentes. Reparar uma câmera limpa o log dela.

O dono pode remover sua câmera pelo tablet e recebe o item de volta.


Com Config.BreakableCamera ativado, uma câmera fica offline quando um tiro atinge cerca de um metro dela, ou quando é atingida por golpe corpo a corpo, explosão ou veículo. O criador pode marcar câmeras individuais como inquebráveis.

O kit de reparo, cctv_repair, liga um laser. Mire-o em uma câmera quebrada dentro de Config.RepairDistance, pressione E e aguarde Config.RepairTime. O kit não é consumido. Backspace ou ESC o guarda.


Colocando uma câmera (a partir de um item)

TeclaO que faz
Olhar ao redorMove a pré-visualização para a superfície que você olha
Roda do mouse (scroll)Gira a câmera
EColoca; será solicitado um nome
Clique direito / ESCCancela

Olhando através de uma câmera

TeclaO que faz
W / SInclina para cima e para baixo
A / DVira. Câmeras de parede e poste param em 45° para cada lado; modelos 360° dão a volta completa
Roda do mouse (scroll)Zoom
EnterAlterna entre visão normal, visão noturna e térmica
EspaçoTira uma foto para a galeria de evidências
Backspace / ESCVolta para o tablet

O criador de admin (/camcreator)

Escolha um modelo (parede, parede 360, poste, poste 360), um nome base, os trabalhos que podem vê-la e se ela pode ser quebrada, e então entre no modo de posicionamento:

TeclaO que faz
← / →Troca o modelo
Roda do mouse (scroll)Gira
EColoca; será solicitado um nome
Clique direito / ESCVolta para o menu do criador

ComandoQuemO que faz
/camcreatorJogadores com a permissão Config.CreatorAceAbre o criador de admin. Altere o nome com Config.CreatorCommand

Conceda a permissão no server.cfg com uma linha add_ace para o grupo desejado, por exemplo concedendo mic_cctvcreator.open para group.admin. Se você alterar Config.CreatorAce, conceda o novo nome.


No lado do cliente (client-side), para outros resources que precisam saber sobre as câmeras:

ExportArgumentosRetorno
GetCameraStatusid da câmera'online', 'broken', ou 'offline' se o id for desconhecido
GetCameraIdFromEntityhandle da entidadeO id da câmera de um prop de câmera gerado, ou nada
IsPlacing—true enquanto o jogador está posicionando uma câmera
HideNearbyCameracoordsOculta o prop de câmera mais próximo dentro de 2 m e o retorna
UnhideCamerapropMostra novamente um prop ocultado com HideNearbyCamera

Onze vêm inclusos: en, es, fr, de, it, pt, ar, ja, pl, ru, tr. Defina Config.Locale com o código correspondente. O tablet e o texto dentro do jogo usam o mesmo arquivo.

Nesta versão, os arquivos em locales/ fazem parte do código protegido, portanto não podem ser editados. Se precisar de um idioma que não está lá, ou de uma redação diferente, peça no Discord.


ArquivoO que ele cobre
bridge/client_bridge.luaDetecção de framework, Bridge.GetPlayerJob, Bridge.Notify e Bridge.ShowTextUI / Bridge.HideTextUI para o aviso de reparo
bridge/server_bridge.luaDetecção de framework, Bridge.GetPlayerIdentifier, Bridge.GetPlayerJob, Bridge.RegisterUsableItem, Bridge.AddItem, Bridge.AddItemWithMetadata, Bridge.RemoveItem, Bridge.Notify

Um resource de notificação diferente: altere Bridge.Notify em ambos os arquivos.

Uma text UI diferente (ox_lib, okok…): Bridge.ShowTextUI e Bridge.HideTextUI no arquivo do cliente. No QBCore eles usam o DrawText do próprio QBCore; caso contrário, o texto de ajuda nativo do jogo.

Inventário: quando o ox_inventory está rodando, os itens são adicionados e removidos através dele em qualquer um dos frameworks. Caso contrário, são usadas as funções próprias do framework.

Um framework diferente: defina Config.Framework e preencha o bloco de detecção e as funções de identificador, trabalho e item em ambos os arquivos. Sem um framework, o script recorre ao identificador license: e trata todos como unemployed, mas os itens — incluindo o tablet — só são registrados no ESX e QBCore (incluindo QBox, através da sua compatibilidade com QBCore).