Dance minigame
El minijuego de baile de la discoteca de GTA Online, rehecho para FiveM y jugable en cualquier parte de tu mapa. Pulsa al ritmo para subir los cuatro niveles de intensidad, mantén pulsado para conservarlos, súbelos o bájalos cuando quieras, encadena diez estilos y lanza 27 movimientos especiales sin salir de la pista. Todos los que están alrededor lo ven entero, y tu servidor no ejecuta ni una línea.
Lo que hace
Un juego de ritmo en cuatro niveles, con los valores de Rockstar
Pulsa al ritmo y la intensidad sube. Ocho tiempos limpios te suben un nivel, dieciséis fallados te bajan uno, y ocho pulsaciones equivocadas te cuestan un nivel al momento. La barra no salta de un valor a otro, converge hacia la señal real con sus propias velocidades de subida y de caída, y eso es lo que hace que un nivel se note ganado y no como si alguien hubiera accionado un interruptor.
Especificaciones
técnicas
Todo lo que
recibes
-
Quince archivos de idioma, ya rellenados
Tus jugadores leen el script en su idioma desde el primer arranque, y los archivos están fuera del escrow, así que puedes corregir cualquier línea en producción. Nota honesta: están traducidos y revisados por nosotros, pero no los ha corregido un hablante nativo de cada uno de los quince. Dinos qué suena mal en el tuyo y lo arreglamos.
-
Todos los números del gameplay están abiertos
Tiempos para subir un nivel, tiempos para perderlo, velocidades de subida y de caída, amplitud del temblor de cámara, velocidad de giro, cuánto hay que mantener pulsado para un movimiento de tren superior, ventanas de inmunidad tras un boost. `config/config.lua` está fuera del escrow, así que el dueño de una discoteca puede hacer el minijuego indulgente o brutal sin pedírnoslo.
-
Doce controles, y un mando que funciona de serie
Cada entrada es un input de FiveM y no una tecla, así que los valores por defecto ya funcionan con mando: pulsar va en el gatillo derecho y mantener en el izquierdo, igual que en GTA Online. Con ratón y teclado la misma sesión se juega con los botones del ratón, espacio y F. Cada uno es un identificador de control en la config, así que un servidor con su propia distribución cambia el bloque entero de una vez.
-
Cuatro exports de cliente, incluido un ritmo que controlas tú
Lanzar y parar un baile desde tu propio script, saber si tu jugador está bailando y darle al recurso los BPM del tema que tu sistema de música está poniendo. Este último es el que hace que el minijuego funcione con tu música y no solo con los emisores de Rockstar.
Guía de integración
Instalación
-
Coloca el recurso
Descarga el script desde tu cuenta Tebex, copia la carpeta
avenida_dance/en tu directorio de recursos y añadeensure avenida_dancea la config del servidor. No hace falta que arranque nada antes. -
Elige cómo se lanza
Abre
config/config.lua.Config.Commandes el comando de chat,Config.Keybindregistra una tecla remapeable conConfig.DefaultKeycomo valor por defecto. Deja las dos cosas, o pon el comando enfalsey déjales la tecla a tus jugadores. -
Elige el idioma
Config.Localeacepta cualquiera de los quince códigos que vienen enlocales/. Los archivos están fuera del escrow, así que puedes reescribir cada línea para que suene como tu servidor. -
Apunta las notificaciones a tu stack
Config.Notifestá enautoy detecta ox_lib, okokNotify, QBCore o ESX en ese orden. Fuerza un target si tienes varios, o usa la ramacustomdebridges/notif.luapara tu propio sistema. -
No hay paso cinco
Ningún SQL que ejecutar, ningún framework que declarar, ningún permiso que dar. Reinicia y escribe el comando.
Inicio rápido
Cómo empiezan a bailar tus jugadores
Un comando, una tecla, o las dos cosas. La tecla se registra en los ajustes de FiveM bajo Key Bindings, así que cada jugador puede remapearla sin tocar tu 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 = trueReferencia de la API
Exports públicos agrupados por dominio. Cada fila muestra la firma de la llamada y qué hace, no cómo lo hace.
Session
StartDance
exports.avenida_dance:StartDance(styleIndex?) --> booleanArranca una sesión para el jugador local, forzando si quieres un índice de estilo del 1 al 10. Devuelve
falsecuando el jugador no puede bailar en ese momento, porque está en un vehículo, en el agua, en el aire o ya bailando, así que tu script puede decidir qué hacer.StopDance
exports.avenida_dance:StopDance()Termina la sesión en curso y reproduce la animación final de verdad en lugar de cortarla. Puedes llamarlo sin riesgo aunque no esté bailando nadie.
IsDancing
exports.avenida_dance:IsDancing() --> booleanVerdadero mientras el jugador local está en sesión. Útil para bloquear tus propias interacciones, tu inventario o una acción de trabajo mientras el minijuego se queda con el control.
Music
SetDanceBeat
exports.avenida_dance:SetDanceBeat(bpm, msToNextBeat?)Alimenta el ritmo simulado con el tempo del tema que está poniendo tu propio recurso de música. El segundo argumento ajusta la fase, así que el icono late en el tiempo fuerte de verdad y no un poco antes o un poco después. Se ignora si el valor no es un número positivo.
Recetas
Ejemplos para copiar y pegar en los casos más habituales. Los metes en tu recurso, ajustas los valores y a producción.
El ritmo nativo solo existe donde Rockstar puso un emisor de audio. Si tu discoteca pone sus propios temas, apaga el ritmo nativo y mándale el tuyo. Llámalo una vez cuando arranca un tema y otra vez en cada cambio.
-- 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)Un escenario, un podio, una barra americana, un trabajo de bailarín: dale el baile a tu jugador sin comando. Fuerza un índice de estilo para que el podio tenga siempre el mismo aspecto y lee el valor devuelto para saber si arrancó de verdad.
local started = exports.avenida_dance:StartDance(7) -- shuffle
if not started then
-- the player is in a vehicle, in water, or already dancing
return
endUn mando no necesita nada aquí, los valores por defecto son inputs de FiveM y el juego ya los asigna al mando solo. Esto es para un servidor que quiere sus propias teclas. Deja pulsar y mantener en dos inputs distintos, el minijuego los lee por separado.
-- 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
}La dificultad son cuatro números. Baja `BeatsHit` y un público casual llega al nivel cuatro; sube `BeatsFail` y machacar teclas deja de tener castigo. Son los valores que el dueño de una discoteca va a querer tocar primero.
-- 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.75Preguntas frecuentes
- No, y tampoco como fallback: no hay nada en este recurso que un framework pudiera aportar. Nunca lee dinero, items, trabajos ni identidad. Por eso el mismo archivo funciona en ESX, QBCore, Qbox, vRP, ox_core o un servidor standalone sin configurar un solo bridge. Lo único que puede hacer aquí un framework es mostrar una notificación, y eso es un archivo abierto.
- No. `Config.UseOxLib` viene apagado, y con él apagado el recurso tira de las APIs nativas de FiveM para todo: el ped, la comprobación de vehículo, el identificador del jugador. Enciéndelo y pasa a usar las cachés de ox_lib, algo que compensa en un servidor que ya lleva el stack ox. El único otro sitio donde aparece es una de las seis ramas del bridge de notificaciones.
- Ni lo uno ni lo otro. No hay ningún archivo de servidor, ni SQL, ni tabla, ni event que vuelva desde un cliente. Todo lo que ven los jugadores cercanos sale de cuatro statebags que empuja quien baila. Es una decisión de arquitectura con una consecuencia que conviene decir en voz alta: no se guarda nada del lado del servidor, así que la preferencia de estilo de tu jugador vive en sus propios ajustes de juego, no en tu base de datos.
- La red de animación que GTA usa para este minijuego no se clona por OneSync, así que los bailarines remotos se resimulan en local a partir de las statebags. Casi siempre el resultado es idéntico al original. Cuando un clon se queda pegado en su intro, el recurso reintenta dos veces y luego repite en bucle el clip dominante de la rejilla de 27. El estilo, la intensidad y la dirección siguen bien, solo que el fundido entre poses es menos rico. Los movimientos de cuerpo entero se replican siempre de forma nativa.
- Sí, con `SetDanceBeat`. El ritmo nativo se lee de los emisores de audio de Rockstar, que solo existen donde Rockstar los puso. Para un tema propio, apaga `Config.UseNativeBeat` y dale al recurso tus BPM más el retardo hasta el siguiente tiempo. El icono late entonces al ritmo de tu tema y no al de una estimación.
- Pasado `Config.MaxBpm`, 140 por defecto, las animaciones de baile empiezan a irse de la música. Para que no se note, la velocidad de animación se reduce un cuarto por encima de ese umbral y la reproducción se queda entre 0,8 y 1,2 veces la velocidad normal. Los dos valores están en la config abierta si quieres forzarlos.
- En cualquier sitio, a pie y sobre suelo firme. No hay zona que declarar ni lista de lugares que mantener. La sesión se para sola si tu jugador entra en el agua, se queda en el aire, se prende fuego o entra en ragdoll, así que nadie acaba bailando en el aire tras caerse de un tejado.
- 0.00ms. El recurso no tiene ningún bucle de ambiente: registra un comando, una tecla y un handler de statebag, y después no hace nada hasta que alguien arranca una sesión. Los hilos que abre una sesión mueren con ella.
DESTACADO DerassYoga minigame
El minijuego de yoga del modo historia, sacado de su misión y convertido en una actividad de rol que puede empezar cualquiera. Alinea los dos marcadores, mantén la postura mientras el cuerpo entra en ella, y luego inspira y espira con los gatillos. Tres rutinas, catorce posturas, las animaciones originales y los sonidos de respiración del propio juego. Y una puntuación a la que tus propios scripts pueden reaccionar.
DESTACADO Avenida TeamBarber shop
Una barbería puesta en escena, con una cámara que el jugador controla de verdad. El personaje entra, se sienta y el barbero se pone a trabajar mientras una cámara orbital encuadra la cabeza. Pelo, barba, overlays y todos los detalles de piel, con vista previa en directo antes de gastar un solo dólar.
DESTACADO Avenida TeamClothing store
Una tienda de ropa con conjuntos guardados, vestuarios de empresa y un editor que pone precio al catálogo desde el propio juego. Todos los componentes y todos los props, comprados prenda a prenda o como conjunto entero, con un registro en el servidor que impide que nadie lleve puesto lo que no ha pagado.