Personalização
Quase tudo fica em um único arquivo, config.lua. Os dois arquivos de bridge e os idiomas também são abertos.
Qual arquivo define o quê
Seção intitulada “Qual arquivo define o quê”| Arquivo | O que ele define | Aberto? |
|---|---|---|
config.lua | Idioma, moeda, interação, limite de posicionamento e cada máquina fixa com seu preço | Sim |
locales/*.lua | Os avisos, notificações e textos do target | Sim |
bridge/client_bridge.lua | Detecção de framework, leitura de dinheiro, notificações, texto de ajuda e zonas de ox-target / qb-target / drawtext | Sim |
bridge/server_bridge.lua | Cobrança e pagamento de dinheiro ou fichas, nomes e IDs de personagens, notificações e itens de gabinete utilizáveis | Sim |
items/ | Definições de itens para ox, qb e ESX, e os ícones em items/images/ | Sim |
ui/ | O menu do gabinete e os sete jogos, uma pasta para cada em ui/games/ | Sem escrow |
client/data.lua | Posição de câmera e tela para cada modelo de gabinete | Com escrow |
mic_arcade_props/ | Os modelos de gabinete e o renderizador de tela | Apenas assets |
Geral — config.lua
Seção intitulada “Geral — config.lua”| Opção | O que faz | Padrão |
|---|---|---|
Config.Locale | Qual arquivo em locales/ é usado | 'en' |
Config.PaymentType | O que uma partida custa: cash, bank, both ou item | 'item' |
Config.PaymentItem | O item usado como moeda quando PaymentType é item | 'arcade_coin' |
Config.Interaction | ox-target (com hífen), qb-target ou drawtext | 'ox-target' |
Config.MaxArcadesPerPlayer | Quantas máquinas posicionadas um personagem pode ter ativas ao mesmo tempo | 3 |
Tipos de pagamento
Seção intitulada “Tipos de pagamento”| Valor | O que acontece |
|---|---|
cash | Pago com dinheiro em mãos (no ESX, a conta money) |
bank | Pago pela conta bancária |
both | Dinheiro em mãos primeiro; se não for suficiente, o restante sai do banco |
item | Pago com Config.PaymentItem, um item por unidade de preço |
A mesma moeda é usada para as apostas e prêmios do DuoFight.
Máquinas e preços — Config.Arcades
Seção intitulada “Máquinas e preços — Config.Arcades”Uma entrada por modelo de gabinete. Cada entrada tem um Price e, opcionalmente, qualquer número de posições fixas (vec4 com x, y, z e heading) — uma máquina é gerada em cada posição.
| Gabinete | Modelo | Jogo | Preço | Fixo por padrão |
|---|---|---|---|---|
| DuoFight | mic_arcade_duofight | Luta para dois jogadores ou contra o computador | 0 | Não (comentado) |
| Alien | mic_arcade_alien | Alien | 100 | Não (comentado) |
| Breakout | mic_arcade_brick | Breakout | 100 | Não (comentado) |
| Pixel | mic_arcade_pixel | Pixel | 100 | Sim |
| Race | mic_arcade_race | Race | 100 | Sim |
| Tower | mic_arcade_tower | Tower | 100 | Sim |
| Road | mic_arcade_road | Road | 100 | Sim |
- Para adicionar uma máquina fixa, adicione uma posição à lista daquele modelo. Fique onde deseja colocá-la, pegue suas coordenadas e heading, e adicione-os.
- Para remover uma, apague ou comente sua posição. O
Pricecontinua valendo para máquinas posicionadas daquele modelo. - Um preço de
0torna o gabinete gratuito. - A origem do gabinete Breakout fica mais baixa que a dos outros — a posição padrão do Breakout é cerca de 0.7 mais baixa no eixo z do que as vizinhas. Faça o mesmo quando adicionar uma.
O Price também é o valor cobrado por um gabinete posicionado daquele modelo.
Máquinas posicionadas
Seção intitulada “Máquinas posicionadas”Um item de gabinete (arcade_alien, arcade_race…) inicia o posicionamento:
| Tecla | O que faz |
|---|---|
| Olhar ao redor | Move a prévia para onde você está olhando |
| Roda do mouse | Gira o gabinete |
| E | Posiciona e consome o item |
| ESC / Backspace | Cancela; você mantém o item |
O dono — e somente o dono — vê a opção Pick Up Arcade nela (com drawtext, a segunda tecla mostrada no aviso). Recolher devolve o item. Uma máquina que alguém está usando não pode ser recolhida.
Config.MaxArcadesPerPlayer contabiliza as máquinas que um personagem tem posicionadas no momento.
Apostas no DuoFight
Seção intitulada “Apostas no DuoFight”Escolher dois jogadores no DuoFight pede uma aposta: 1, 5, 25, 50 ou 100, na sua moeda. O anfitrião paga e aguarda na máquina; o próximo jogador a usar a máquina recebe o convite da partida e paga o mesmo valor para entrar.
| Resultado | O que acontece |
|---|---|
| Vitória | O vencedor recebe ambas as apostas |
| Empate | Cada jogador recebe sua aposta de volta |
| Um jogador sai no meio da partida | Ele desiste: o outro jogador ganha ambas as apostas |
| O anfitrião sai antes de alguém entrar | A partida é cancelada; a aposta do anfitrião não é devolvida |
| Um jogador desconecta | A partida é cancelada, sem pagamento |
Placares de líderes
Seção intitulada “Placares de líderes”Todos os jogos, exceto o DuoFight, salvam a melhor pontuação de cada personagem em mic_arcade_leaderboard e mostram os dez melhores na máquina. Os nomes vêm do nome do personagem no seu framework. Para zerar um placar, esvazie essa tabela (ou as linhas de um jogo) enquanto o servidor estiver parado.
Idiomas
Seção intitulada “Idiomas”Dez idiomas já vêm em locales/: en, es, fr, de, it, pt, nl, ja, ru, zh. Defina Config.Locale com o código desejado.
Para adicionar um idioma, copie locales/en.lua para um novo arquivo com o nome do seu código, altere Locales['en'] para o seu código, traduza o lado direito de cada linha e defina Config.Locale. Uma chave ausente aparece como Translation [xx][key] does not exist — não há fallback para o inglês.
Os arquivos de idioma cobrem o que o mundo do jogo mostra: os textos do target, os avisos de ajuda e as notificações. O texto dentro dos jogos faz parte de ui/games/.
A bridge
Seção intitulada “A bridge”| Arquivo | O que ele cobre |
|---|---|
bridge/client_bridge.lua | Detecção de framework, a quantidade de dinheiro ou fichas mostrada ao jogador, Bridge.Notify, o texto de ajuda e a zona de interação em cada máquina para ox-target, qb-target ou drawtext |
bridge/server_bridge.lua | Detecção de framework, cobrança e pagamento de dinheiro ou itens (Bridge.RemoveMoney, Bridge.AddMoney), os itens de gabinete, nome e ID do personagem, notificações do servidor e lista de itens utilizáveis |
Outro resource de notificação: altere Bridge.Notify no arquivo client e Bridge.ServerNotify no arquivo server. As mensagens de dinheiro insuficiente são enviadas a partir de Bridge.RemoveMoney.
Outro resource de target: Bridge.RegisterArcadeInteraction e Bridge.RemoveArcadeInteraction no arquivo client são os únicos lugares onde o target é tocado.
Outro inventário: fichas e itens de gabinete são lidos e removidos pelas funções próprias de jogador do framework em server_bridge.lua. Aponte Bridge.RemoveMoney, Bridge.AddMoney, Bridge.RemoveSpecificItem, Bridge.AddSpecificItem e Bridge.GetMoney para o seu inventário caso ele não responda a essas funções.
Um novo item utilizável para um gabinete: a tabela UsableArcades no final de server_bridge.lua associa cada item ao seu modelo de gabinete.