Dance minigame
Le minijeu de danse des boîtes de nuit de GTA Online, refait pour FiveM et jouable n'importe où sur votre map. Tapez sur le rythme pour grimper les quatre niveaux d'intensité, maintenez pour les garder, montez ou redescendez à la demande, enchaînez dix styles et lancez 27 mouvements spéciaux sans quitter la piste. Tout le monde autour voit la scène, et votre serveur n'en exécute pas une ligne.
Ce qu'il fait
Un jeu de rythme sur quatre niveaux, aux valeurs de Rockstar
Tapez sur le temps et l'intensité monte. Huit temps propres font franchir un niveau, seize temps manqués vous ramènent en arrière, huit mauvaises entrées coûtent un niveau immédiatement. La jauge ne saute pas d'une valeur à l'autre, elle converge vers le signal réel à ses propres vitesses de montée et de descente, et c'est ce qui donne l'impression d'un niveau gagné plutôt que déclenché.
Spécifications
techniques
Tout ce que vous
recevez
-
Quinze fichiers de langue, livrés remplis
Vos joueurs lisent le script dans leur langue dès le premier démarrage, et les fichiers sont hors escrow, donc vous pouvez corriger n'importe quelle ligne en production. Note honnête : ils sont traduits et relus par nous, pas par des natifs des quinze langues. Dites-nous ce qui sonne faux dans la vôtre et c'est corrigé.
-
Toutes les valeurs de gameplay sont ouvertes
Temps pour monter d'un niveau, temps pour en perdre un, vitesses de montée et de descente, amplitude du tremblement de caméra, vitesse de rotation, durée de maintien pour un mouvement du haut du corps, fenêtres d'immunité après un boost. `config/config.lua` est hors escrow, un patron de boîte peut rendre le minijeu indulgent ou impitoyable sans nous demander.
-
Douze contrôles, et une manette qui marche telle quelle
Chaque entrée est une input FiveM et non une touche, donc les valeurs par défaut marchent déjà à la manette : l'appui sur la gâchette droite, le maintien sur la gauche, exactement comme dans GTA Online. Au clavier souris, la même séance tourne sur les boutons de la souris, espace et F. Chacun est un identifiant de contrôle dans le config, donc un serveur qui veut sa propre disposition remplace le bloc entier d'un coup.
-
Quatre exports client, dont un tempo que vous pilotez
Lancer et arrêter une danse depuis votre propre script, savoir si le joueur danse, et donner à la ressource le BPM du morceau que votre système musical est en train de jouer. C'est ce dernier qui fait fonctionner le minijeu avec vos musiques et pas seulement avec les émetteurs de Rockstar.
Guide d'intégration
Installation
-
Déposer la ressource
Récupérez le script depuis votre compte Tebex, copiez le dossier
avenida_dance/dans votre dossier resources, et ajoutezensure avenida_danceà votre configuration serveur. Rien n'a besoin de démarrer avant. -
Choisir le déclencheur
Ouvrez
config/config.lua.Config.Commandest la commande de chat,Config.Keybindenregistre une touche remappable avecConfig.DefaultKeycomme valeur par défaut. Gardez les deux, ou passez la commande àfalseet laissez la touche aux joueurs. -
Régler la langue
Config.Localeaccepte n'importe lequel des quinze codes livrés danslocales/. Les fichiers sont hors escrow, vous pouvez donc réécrire chaque ligne pour coller au ton de votre serveur. -
Diriger les notifications vers votre stack
Config.Notifest surautoet détecte ox_lib, okokNotify, QBCore ou ESX dans cet ordre. Forcez une cible si vous en faites tourner plusieurs, ou utilisez la branchecustomdebridges/notif.luapour votre propre système. -
Il n'y a pas d'étape cinq
Aucun SQL à passer, aucun framework à déclarer, aucune permission à accorder. Redémarrez et tapez la commande.
Démarrage rapide
Comment les joueurs lancent la danse
Une commande, une touche, ou les deux. La touche s'enregistre dans les paramètres FiveM sous Key Bindings, chaque joueur peut donc la remapper sans toucher à votre 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 = trueRéférence API
Exports publics groupés par domaine. Chaque ligne montre la signature d'appel
Session
StartDance
exports.avenida_dance:StartDance(styleIndex?) --> booleanDémarre une session pour le joueur local, en forçant éventuellement un index de style de 1 à 10. Renvoie
falsequand le joueur ne peut pas danser sur le moment, en véhicule, dans l'eau, en l'air ou déjà en train de danser, votre script peut donc décider quoi en faire.StopDance
exports.avenida_dance:StopDance()Termine la session en cours et joue la vraie animation de fin plutôt que de couper net. Sans effet si personne ne danse.
IsDancing
exports.avenida_dance:IsDancing() --> booleanVrai tant que le joueur local est en session. Utile pour bloquer vos propres interactions, votre inventaire ou une action de job pendant que le minijeu tient les contrôles.
Music
SetDanceBeat
exports.avenida_dance:SetDanceBeat(bpm, msToNextBeat?)Alimente le tempo simulé avec celui du morceau que votre ressource musicale joue. Le second argument cale la phase, l'icône pulse donc sur le vrai temps fort et pas à peu près à côté. Ignoré si la valeur n'est pas un nombre positif.
Recettes
Exemples copier-coller pour les cas courants. À déposer dans ta ressource, ajuster les valeurs, et c'est en prod.
Le tempo natif n'existe que là où Rockstar a posé un émetteur audio. Si votre boîte diffuse ses propres morceaux, coupez le tempo natif et poussez-lui le vôtre. Appelez-le une fois au lancement d'un morceau, puis à chaque changement.
-- 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)Une scène, un podium, une barre, un job de danseur : donnez la danse au joueur sans commande. Forcez un index de style pour que le podium ait toujours la même allure, et lisez la valeur de retour pour savoir si ça a réellement démarré.
local started = exports.avenida_dance:StartDance(7) -- shuffle
if not started then
-- the player is in a vehicle, in water, or already dancing
return
endUne manette n'a besoin de rien ici, les valeurs par défaut sont des inputs FiveM et le jeu les associe déjà au pad. Ceci sert à un serveur qui veut ses propres touches. Gardez l'appui et le maintien sur deux entrées différentes, le minijeu les lit séparément.
-- 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 difficulté tient en quatre nombres. Baissez `BeatsHit` et un public occasionnel atteint le niveau quatre ; montez `BeatsFail` et marteler les touches cesse d'être puni. Ce sont les valeurs qu'un patron de boîte voudra toucher en premier.
-- 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.75Questions fréquentes
- Non, et pas non plus en repli : il n'y a rien dans cette ressource qu'un framework pourrait fournir. Elle ne lit jamais l'argent, les items, les jobs ni l'identité. C'est pour ça que le même fichier tourne sur ESX, QBCore, Qbox, vRP, ox_core ou un serveur nu sans un seul bridge à configurer. La seule chose qu'un framework peut faire ici, c'est afficher une notification, et c'est un fichier ouvert.
- Non. `Config.UseOxLib` est livré désactivé, et dans cet état la ressource passe par les APIs natives de FiveM pour tout : le ped, la vérification du véhicule, l'identifiant du joueur. Activez-le et elle utilise les caches d'ox_lib à la place, ce qui vaut le coup sur un serveur qui fait déjà tourner la stack ox. Le seul autre endroit où il apparaît est une branche du bridge de notifications, sur six.
- Ni l'un ni l'autre. Il n'y a aucun fichier serveur dans la ressource, aucun SQL, aucune table, aucun event qui remonte d'un client. Tout ce que voient les joueurs proches vient de quatre statebags poussés par le danseur. C'est un choix d'architecture avec une conséquence qu'il vaut mieux dire : rien n'est stocké côté serveur, la préférence de style d'un joueur vit donc dans ses propres réglages de jeu, pas dans votre base.
- Le réseau d'animation que GTA utilise pour ce minijeu ne se clone pas en OneSync, les danseurs distants sont donc resimulés en local à partir des statebags. La plupart du temps ça reproduit le rendu d'origine. Quand un clone reste coincé sur son intro, la ressource retente deux fois, puis boucle le clip dominant de la grille de 27 à la place. Le style, l'intensité et la direction restent justes, le fondu entre les poses est simplement moins riche. Les mouvements complets se répliquent toujours nativement.
- Oui, via `SetDanceBeat`. Le tempo natif se lit sur les émetteurs audio de Rockstar, qui n'existent que là où Rockstar les a posés. Pour un morceau maison, coupez `Config.UseNativeBeat` et donnez à la ressource votre BPM plus le délai jusqu'au temps suivant. L'icône pulse alors sur votre morceau, pas sur une estimation.
- Au-delà de `Config.MaxBpm`, 140 par défaut, les animations de danse commencent à décrocher de la musique. Plutôt que de laisser ça se voir, la vitesse d'animation est réduite d'un quart au-dessus de ce seuil et la lecture reste bornée entre 0,8 et 1,2 fois la vitesse normale. Les deux valeurs sont dans le config ouvert si vous voulez les pousser.
- Partout, à pied et sur un sol ferme. Il n'y a aucune zone à déclarer et aucune liste de lieux à maintenir. La session s'arrête d'elle-même si le joueur entre dans l'eau, se retrouve en l'air, prend feu ou part en ragdoll, personne ne finit donc en train de danser dans le vide au bord d'un toit.
- 0.00ms. La ressource n'a aucune boucle d'ambiance : elle enregistre une commande, une touche et un handler de statebag, puis ne fait plus rien tant que personne ne lance de session. Chaque thread créé par une session meurt avec elle.
EN AVANT DerassYoga minigame
Le minijeu de yoga du mode histoire, sorti de sa mission et transformé en activité roleplay que n'importe qui peut lancer. Alignez les deux marqueurs, tenez la posture pendant que le corps s'y installe, puis inspirez et expirez sur les gâchettes. Trois enchaînements, quatorze postures, les vraies animations et les vrais sons de respiration. Et un score auquel vos propres scripts peuvent réagir.
EN AVANT Avenida TeamBarber shop
Un barbier mis en scène, avec une caméra que le joueur pilote vraiment. Le personnage entre, s'assoit, et le barbier travaille pendant qu'une caméra orbitale cadre la tête. Cheveux, barbe, overlays et tous les détails de peau, prévisualisés avant d'avoir dépensé un dollar.
EN AVANT Avenida TeamClothing store
Un magasin de vêtements avec tenues sauvegardées, garde-robes d'entreprise et un éditeur qui tarife le catalogue depuis le jeu. Tous les composants et tous les props, achetés pièce par pièce ou en tenue complète, avec un registre côté serveur qui empêche de porter ce qu'on n'a jamais payé.