Dance minigame
O minigame de dança de boate do GTA Online, refeito para FiveM e jogável em qualquer canto do seu mapa. Aperte no ritmo para subir os quatro níveis de intensidade, segure para não perder, dê um boost ou derrube o nível na hora que quiser, troque entre dez estilos e solte 27 movimentos especiais sem sair da pista. Todo mundo em volta vê tudo, e o seu servidor não roda uma linha disso.
O que ele faz
Um jogo de ritmo em quatro níveis, com os números da Rockstar
Aperte no ritmo e a intensidade sobe. Oito batidas certas passam de nível, dezesseis erradas te puxam de volta, oito inputs errados te custam um nível na hora. A barra não pula de um valor para o outro, ela vai atrás do sinal real nas suas próprias velocidades de subida e de queda, e é isso que faz o nível parecer conquistado em vez de parecer que alguém só apertou um botão.
Especificações
técnicas
Tudo o que
você recebe
-
Quinze arquivos de idioma, entregues preenchidos
Seus jogadores leem o script no idioma deles desde o primeiro start, e os arquivos ficam fora do escrow, então você corrige qualquer linha em produção. Nota honesta: eles são traduzidos e revisados por nós, não revisados por nativos dos quinze idiomas. Diga o que soa errado no seu e a gente corrige.
-
Todos os números do gameplay estão abertos
Batidas para subir de nível, batidas para perder um, velocidades de subida e de queda, amplitude do tremor de câmera, velocidade de giro, tempo de segurar para um movimento só de tronco, janelas de imunidade depois de um boost. `config/config.lua` está fora do escrow, então o dono de uma boate pode deixar o minigame mais fácil ou impiedoso sem pedir para a gente.
-
Doze comandos mapeáveis, e um controle que já funciona de cara
Cada entrada é um input do FiveM e não uma tecla, então os padrões já funcionam no controle: o toque no gatilho direito, o segurar no esquerdo, igual ao GTA Online. No mouse e teclado a mesma sessão roda nos botões do mouse, espaço e F. Cada um é um ID de controle na config, então um servidor com layout próprio troca o bloco inteiro de uma vez.
-
Quatro exports de client, incluindo um ritmo que você mesmo dita
Iniciar e parar uma dança pelo seu próprio script, saber se o seu jogador está dançando, e entregar ao script o BPM da faixa que o seu sistema de música está tocando. Esse último é o que faz o minigame funcionar com a sua própria música, e não só com os emitters que a Rockstar espalhou pelo mapa.
Guia de integração
Instalação
-
Coloque o resource
Baixe o script pela sua conta Tebex, copie a pasta
avenida_dance/para o seu diretório de resources e adicioneensure avenida_dancena config do servidor. Nada precisa subir antes. -
Escolha como ele abre
Abra
config/config.lua.Config.Commandé o comando de chat,Config.Keybindregistra uma tecla remapeável comConfig.DefaultKeycomo padrão. Fique com os dois, ou coloque o comando emfalsee deixe a tecla para os jogadores. -
Defina o idioma
Config.Localeaceita qualquer um dos quinze códigos que vêm emlocales/. Os arquivos estão fora do escrow, então dá para reescrever cada linha no tom do seu servidor. -
Aponte as notificações para a sua stack
Config.Notifestá emautoe detecta ox_lib, okokNotify, QBCore ou ESX nessa ordem. Force o alvo se você roda vários, ou use o caminhocustomdebridges/notif.luapara o seu próprio sistema. -
Não existe passo cinco
Nenhum SQL para rodar, nenhum framework para declarar, nenhuma permissão para liberar. Reinicie e digite o comando.
Início rápido
Como os seus jogadores começam a dançar
Um comando, uma tecla, ou os dois. A tecla aparece nas configurações do FiveM, em Key Bindings, então cada jogador pode remapear ela sem encostar na sua config.
-- config/config.lua
Config.Command = 'dance' -- chat command, false to disable
Config.Keybind = true -- rebindable key in FiveM settings
Config.DefaultKey = 'F7'
-- The GTA:O help panel with styles, actions and controls.
-- Off, style and move changes are announced by notification instead.
Config.ShowHints = trueReferência da API
Exports públicos agrupados por domínio. Cada linha mostra a assinatura da chamada e o que ela faz, não como faz.
Session
StartDance
exports.avenida_dance:StartDance(styleIndex?) --> booleanInicia uma sessão para o jogador local, forçando um índice de estilo de 1 a 10 se você quiser. Retorna
falsequando ele não pode dançar naquele momento, dentro de um veículo, na água, no ar ou já dançando, então o seu próprio script decide o que fazer com isso.StopDance
exports.avenida_dance:StopDance()Encerra a sessão em andamento e toca a animação final de verdade em vez de cortar a animação no meio. Não faz nada se ninguém estiver dançando, então pode chamar sem medo.
IsDancing
exports.avenida_dance:IsDancing() --> booleanVerdadeiro enquanto o jogador local está numa sessão. Útil para bloquear as suas próprias interações, o seu inventário ou uma ação de job enquanto o minigame está com os controles na mão.
Music
SetDanceBeat
exports.avenida_dance:SetDanceBeat(bpm, msToNextBeat?)Alimenta o ritmo simulado com o BPM da faixa que o seu próprio script de música está tocando. O segundo argumento acerta a fase, então o ícone pulsa no tempo forte de verdade e não um pouco fora dele. Ignorado se o valor não for um número positivo.
Receitas
Exemplos de copiar e colar para os casos mais comuns. Você cola na sua resource, ajusta os valores e já está em produção.
O ritmo nativo só existe onde a Rockstar colocou um emitter de áudio. Se a sua boate toca faixas próprias, desligue o ritmo nativo e mande o seu BPM. Chame o export uma vez quando a faixa começa, e de novo a cada troca de faixa.
-- config/config.lua
Config.UseNativeBeat = false
Config.FallbackBpm = 122.0
-- in your music resource, when a track starts
exports.avenida_dance:SetDanceBeat(128.0, 180)Um palco, um pódio, uma barra de pole dance, um job de dançarino: libere a dança para o seu jogador sem precisar de comando. Force um índice de estilo para o pódio ficar sempre com o mesmo visual, e leia o retorno para saber se começou mesmo.
local started = exports.avenida_dance:StartDance(7) -- shuffle
if not started then
-- the player is in a vehicle, in water, or already dancing
return
endUm controle não precisa de nada aqui, os padrões são inputs do FiveM e o jogo já joga eles no controle. Isso aqui é para o servidor que quer as próprias teclas. Deixe o toque e o segurar em dois inputs diferentes, o minigame lê os dois separadamente.
-- config/config.lua
Config.Controls = {
beat = 201, -- INPUT_FRONTEND_ACCEPT
hold = 202, -- INPUT_FRONTEND_CANCEL
boost = 22, -- INPUT_JUMP
drop = 23, -- INPUT_ENTER
flourish = 45, -- INPUT_RELOAD
stop = 73,
-- the rest keeps its default
}A dificuldade são quatro números. Baixe `BeatsHit` e um público casual chega ao nível quatro; suba `BeatsFail` e sair martelando o botão deixa de ser punido. São os primeiros valores que o dono de uma boate vai querer mexer.
-- config/config.lua
Config.BeatsHit = 8 -- clean beats to cross a level
Config.BeatsMiss = 16 -- missed beats to drop one
Config.BeatsFail = 8 -- bad inputs to drop one
Config.Level3Min = 0.25
Config.Level4Min = 0.75Perguntas frequentes
- Não, nem como plano B: não existe nada neste script que um framework pudesse entregar. Ele nunca lê dinheiro, itens, jobs nem identidade. Por isso o mesmo arquivo roda em ESX, QBCore, Qbox, vRP, ox_core ou num servidor standalone sem configurar um único bridge. A única coisa que um framework pode fazer aqui é mostrar uma notificação, e isso é um arquivo aberto.
- Não. `Config.UseOxLib` vem desligado, e assim o script usa as APIs nativas do FiveM para tudo: o ped, a checagem de veículo, o ID do jogador. Ligue a flag e ele passa a usar os caches do ox_lib, o que compensa num servidor que já roda a stack ox. O único outro lugar onde ele aparece é um dos seis caminhos do bridge de notificações.
- Nem um nem outro. Não existe arquivo de servidor no script, nem SQL, nem tabela, nem event vindo do client. Tudo o que os jogadores próximos veem vem de quatro statebags empurradas por quem dança. É uma escolha de arquitetura com uma consequência que vale dizer: nada fica guardado do lado do servidor, então a preferência de estilo do seu jogador fica nas configurações de jogo dele, não no seu banco.
- A rede de animação que o GTA usa para esse minigame não clona no OneSync, então os dançarinos remotos são ressimulados localmente a partir das statebags. Na maior parte do tempo o resultado é igual ao original. Quando um clone fica preso na intro, o script tenta duas vezes e depois passa a rodar em loop o clipe dominante da grade de 27 clipes. O estilo, a intensidade e a direção continuam certos, só a transição entre poses fica menos rica. Os movimentos de corpo inteiro replicam sempre de forma nativa.
- Sim, com `SetDanceBeat`. O ritmo nativo é lido dos emitters de áudio da Rockstar, que só existem onde a Rockstar colocou eles. Para uma faixa própria, desligue `Config.UseNativeBeat` e entregue ao script o seu BPM mais o intervalo até a próxima batida. O ícone passa a pulsar no tempo da sua faixa, e não num chute.
- Acima de `Config.MaxBpm`, 140 por padrão, as animações de dança começam a sair do tempo da música. Para isso não ficar visível, a velocidade da animação cai um quarto acima desse limite e a reprodução fica entre 0,8 e 1,2 vez a velocidade normal. Os dois valores estão na config aberta se você quiser forçar eles.
- Em qualquer lugar, a pé e com os pés no chão. Não tem zona para declarar nem lista de locais para manter. A sessão para sozinha se o seu jogador entrar na água, ficar no ar, pegar fogo ou entrar em ragdoll, então ninguém acaba dançando no ar depois de sair da beirada de um telhado.
- 0.00ms. O script não tem nenhum loop rodando de fundo: registra um comando, uma tecla e um handler de statebag, e depois não faz mais nada até alguém começar uma sessão. Cada thread criada por uma sessão morre com ela.
DESTAQUE DerassYoga minigame
O minigame de yoga do modo história, tirado da missão e transformado numa atividade de roleplay que qualquer um pode começar. Alinhe os dois marcadores, sustente a postura enquanto o corpo vai entrando nela, e depois inspire e expire nos gatilhos do controle. Três rotinas, quatorze posturas, as animações e os sons de respiração do próprio jogo. E uma pontuação para os seus próprios scripts reagirem.
DESTAQUE Avenida TeamBarber shop
Uma barbearia encenada de ponta a ponta, com uma câmera que o jogador controla de verdade. O personagem entra, senta na cadeira, e o barbeiro começa a trabalhar enquanto uma câmera orbital enquadra a cabeça. Cabelo, barba, overlays e todo o conjunto de detalhes de pele, com preview em tempo real antes de você gastar um dólar.
DESTAQUE Avenida TeamClothing store
Uma loja de roupas com outfits salvos, guarda-roupas de empresa e um editor que define os preços do catálogo de dentro do jogo. Todos os componentes e todos os props, comprados peça por peça ou como look inteiro, com um registro no servidor que impede qualquer um de vestir o que não pagou.