Pular para o conteúdo

Personalização

Quase tudo fica em um único arquivo, config.lua. Os dois arquivos de bridge e os idiomas também são abertos.


ArquivoO que ele defineAberto?
config.luaIdioma, moeda, interação, limite de posicionamento e cada máquina fixa com seu preçoSim
locales/*.luaOs avisos, notificações e textos do targetSim
bridge/client_bridge.luaDetecção de framework, leitura de dinheiro, notificações, texto de ajuda e zonas de ox-target / qb-target / drawtextSim
bridge/server_bridge.luaCobrança e pagamento de dinheiro ou fichas, nomes e IDs de personagens, notificações e itens de gabinete utilizáveisSim
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.luaPosição de câmera e tela para cada modelo de gabineteCom escrow
mic_arcade_props/Os modelos de gabinete e o renderizador de telaApenas assets

OpçãoO que fazPadrão
Config.LocaleQual arquivo em locales/ é usado'en'
Config.PaymentTypeO que uma partida custa: cash, bank, both ou item'item'
Config.PaymentItemO item usado como moeda quando PaymentType é item'arcade_coin'
Config.Interactionox-target (com hífen), qb-target ou drawtext'ox-target'
Config.MaxArcadesPerPlayerQuantas máquinas posicionadas um personagem pode ter ativas ao mesmo tempo3
ValorO que acontece
cashPago com dinheiro em mãos (no ESX, a conta money)
bankPago pela conta bancária
bothDinheiro em mãos primeiro; se não for suficiente, o restante sai do banco
itemPago com Config.PaymentItem, um item por unidade de preço

A mesma moeda é usada para as apostas e prêmios do DuoFight.


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.

GabineteModeloJogoPreçoFixo por padrão
DuoFightmic_arcade_duofightLuta para dois jogadores ou contra o computador0Não (comentado)
Alienmic_arcade_alienAlien100Não (comentado)
Breakoutmic_arcade_brickBreakout100Não (comentado)
Pixelmic_arcade_pixelPixel100Sim
Racemic_arcade_raceRace100Sim
Towermic_arcade_towerTower100Sim
Roadmic_arcade_roadRoad100Sim
  • 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 Price continua valendo para máquinas posicionadas daquele modelo.
  • Um preço de 0 torna 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.


Um item de gabinete (arcade_alien, arcade_race…) inicia o posicionamento:

TeclaO que faz
Olhar ao redorMove a prévia para onde você está olhando
Roda do mouseGira o gabinete
EPosiciona e consome o item
ESC / BackspaceCancela; 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.


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.

ResultadoO que acontece
VitóriaO vencedor recebe ambas as apostas
EmpateCada jogador recebe sua aposta de volta
Um jogador sai no meio da partidaEle desiste: o outro jogador ganha ambas as apostas
O anfitrião sai antes de alguém entrarA partida é cancelada; a aposta do anfitrião não é devolvida
Um jogador desconectaA partida é cancelada, sem pagamento

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.


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/.


ArquivoO que ele cobre
bridge/client_bridge.luaDetecçã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.luaDetecçã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.