Yoga minigame
Das Yoga-Minigame aus dem Story-Modus, aus der Mission gelöst und zu einer Roleplay-Aktivität gemacht, die jeder starten kann. Beide Marker ausrichten, die Pose halten, während der Körper sie einnimmt, dann mit den Triggern ein- und ausatmen. Drei Abläufe, vierzehn Posen, die echten Animationen und die echten Atemgeräusche. Und ein Score, auf den deine eigenen Scripts reagieren können.
Was es kann
In jeder Pose passieren vier Dinge, nicht nur eine Animation
Beide Marker auf ihre Ziele bringen, sie dort halten, während der Körper die Pose einnimmt, einatmen, indem du beide Trigger hältst, ausatmen, indem du sie loslässt. Das Zielfenster ist 15 Grad breit, das Haltefenster öffnet sich auf 55, weil sich der Körper bewegt. Genau dieser Unterschied sorgt dafür, dass du die Pose hältst, statt ihr nur zuzusehen.
Technische
Daten
Alles, was du
bekommst
-
Fünfzehn Sprachdateien, gefüllt ausgeliefert
Deine Spieler lesen das Script vom ersten Start an in ihrer Sprache, und die Dateien liegen außerhalb des Escrows, du kannst also jede Zeile im laufenden Betrieb ändern. Ehrlicher Hinweis: Sie sind von uns übersetzt und geprüft, nicht von Muttersprachlern aller fünfzehn gegengelesen. Sag uns, was in deiner falsch klingt, dann korrigieren wir es.
-
Die Regeln des Minigames gehören dir
Verpasste Atemzyklen, bis eine Pose scheitert, verpatzte Posen, bis die Einheit stoppt, wie lange du den Atem halten darfst, Maus-Empfindlichkeit, Rumble, Hinweise auf dem Bildschirm, die Timecycle-Stärke pro Pose und ihre Obergrenze. `config/config.lua` ist escrow-frei, ein Wellness-Server und ein Gefängnishof können also dieselbe Resource in zwei Schwierigkeitsgraden fahren.
-
Die Spots, komplett in der Config
Koordinaten, Ausrichtung, welcher Ablauf, die Matte, Blip-Sprite und -Farbe, ab welcher Entfernung der Marker erscheint und ab welcher der Prompt nutzbar wird. Lass die Liste leer, und die ganze Funktion schaltet sich ab, Thread inklusive.
-
Vier Exports und ein Integrations-Event
Eine Einheit starten und prüfen, ob ein Spieler gerade in einer ist, vom Server wie vom Client. Dazu ein einziges Event am Ende mit dem Ergebnis, in der Datei dokumentiert samt der Zeile zum Kopieren. Es ist der kürzeste Weg zwischen dieser Aktivität und deiner Wirtschaft.
Guide zur Integration
Installation
-
Resource ablegen
Hol dir das Script aus deinem Tebex-Konto, kopier den Ordner
avenida_yoga/in dein resources-Verzeichnis und tragensure avenida_yogain deine Serverconfig ein. -
Sprache und Abläufe setzen
Config.Localenimmt jeden der fünfzehn Codes auslocales/.Config.EnabledMovesentscheidet, welche Abläufe Spieler starten dürfen, undConfig.DefaultMovelegt den fest, der ohne Angabe genommen wird. -
Deine Spots setzen
Die beiden Koordinaten in
Config.Spotssind Beispiele, ersetz sie durch deine eigenen. Jeder Eintrag nimmt eine Ausrichtung, einen Ablauf und einen Blip, den du abschalten kannst. Eine leere Liste deaktiviert die Funktion samt Thread. -
Notifications auf deinen Stack umbiegen
Config.Notifsteht aufautound erkennt ox_lib, okokNotify, QBCore oder ESX in dieser Reihenfolge. Erzwing ein Ziel, wenn du mehrere fährst, oder nimm dencustom-Zweig inbridges/notif.luafür dein eigenes System. -
Belohnung anhängen, oder auch nicht
Die Aktivität läuft von Haus aus, ohne eine Zeile von dir. Wenn sie etwas auszahlen soll, hör auf
avenida_yoga:server:sessionCompletedund lies den Score. Das ist der einzige Integrationspunkt.
Schnellstart
Aus einer Einheit eine Belohnung machen
Ein Event, einmal am Ende gefeuert. Der Score ist schon berechnet: 1 für einen beendeten Ablauf, bei einem Abbruch auf 0,4 gedeckelt, minus 8 Prozent pro verpatzter Pose. Was er auszahlt, entscheidest du.
AddEventHandler('avenida_yoga:server:sessionCompleted', function(src, data)
-- data.move 'warrior' | 'triangle' | 'sunsalutation'
-- data.completed true when the routine went to the end
-- data.posesBest poses held
-- data.poses poses in the routine
-- data.fails poses dropped
-- data.score 0.0 to 1.0
if not data.completed then return end
-- your own reward: stress, stamina, a skill, a payout
local reward = math.floor(250 * data.score)
end)API-Referenz
Öffentliche Exports nach Bereich gruppiert. Jede Zeile zeigt die Signatur und was der Export macht, nicht wie er es macht.
Server
StartYoga
exports['avenida_yoga']:StartYoga(src, moveKey?) --> booleanStartet eine Einheit für einen Spieler aus deinem Servercode, mit dem genannten Ablauf oder mit dem Standard. Gibt
falsezurück, wenn der Ablauf unbekannt ist oder der Spieler schon in einer Einheit steckt, ein Job oder ein Prop kann also reagieren, statt blind zu feuern.IsDoingYoga
exports['avenida_yoga']:IsDoingYoga(src) --> booleanTrue, solange der Spieler eine laufende Einheit hat. Abgelaufene zählen nicht mit. Praktisch, um eine Job-Aktion, einen Teleport oder einen Shop zu blockieren, während das Minigame die Controls belegt.
Client
StartYoga
exports['avenida_yoga']:StartYoga(moveKey?) --> booleanFragt aus deinem Clientcode eine Einheit beim Server an. Die Anfrage läuft trotzdem über die Server-Registry, das ist also kein Weg am Schutz des Servers vorbei.
IsDoingYoga
exports['avenida_yoga']:IsDoingYoga() --> booleanTrue, solange der lokale Spieler in einer Einheit ist. Das Gegenstück zum Server-Export, für alles, was im selben Frame reagieren muss.
Rezepte
Praxisnahe Copy-Paste-Beispiele. In deine eigene Resource kopieren, Werte anpassen, fertig.
Ein Spot braucht Koordinaten und eine Ausrichtung. Alles andere ist optional: welchen Ablauf er startet, ob er einen Blip bekommt und ob die Matte überhaupt gespawnt wird. Für Abwechslung setzt du `move` auf `random`, für eine Auswahl auf `menu`.
-- config/config.lua
Config.Spots = {
{
coords = vector3(-1204.02, -1566.28, 3.63),
heading = 125.0,
move = 'menu',
blip = { sprite = 311, colour = 2, scale = 0.7 },
},
}Ein Wellness-Job, ein Gefängnishof, eine Entzugs-Aktivität: Gib deinem Spieler die Einheit ohne Command. Lies den Rückgabewert, er sagt dir, ob der Spieler überhaupt starten konnte.
local started = exports['avenida_yoga']:StartYoga(src, 'sunsalutation')
if not started then
-- unknown routine, or the player is already in a session
return
endDie ganze Schwierigkeit steckt in vier Zahlen. Erhöh die Versuche und die Fehler für einen Server voller Gelegenheitsspieler, senk sie, wenn es näher am Grundspiel liegen soll. Das Atem-Timeout verhindert, dass jemand einfach den Trigger gedrückt hält.
-- config/config.lua
Config.BreathingAttempts = 3 -- missed cycles before a pose fails
Config.MaxFails = 5 -- failed poses before the session stops
Config.HoldBreathFailMs = 15000 -- holding the breath longer fails the pose
Config.MouseGain = 3.0 -- marker sensitivity on mouse and keyboardNur die in der Config gelisteten Abläufe lassen sich starten, per Command, per Export oder per Spot. Ein Server kann mit dem Krieger starten und die längeren als Event freischalten, ohne sonst irgendetwas anzufassen.
-- config/config.lua
Config.EnabledMoves = { 'warrior' }
Config.DefaultMove = 'warrior'Fehlerbehebung
- Nein. Die Aktivität liest nie Geld, Items, Jobs oder Identität, es gibt also nichts, was ein Framework liefern könnte. Dieselbe Datei läuft auf ESX, QBCore, Qbox, vRP, ox_core oder einem nackten Server, ohne dass du eine einzige Bridge konfigurierst. Das Einzige, was hier überhaupt ein Framework berührt, ist die Notification-Zeile, eine offene Datei mit sechs Zweigen.
- Nein, und hier lässt es sich genau sagen: Genutzt wird ox_lib für genau eine Sache, die Ablauf-Auswahl auf einem Spot mit `menu`. Ohne ox_lib startet dieser Spot stattdessen den Standard-Ablauf. `Config.UseOxLib` schaltet außerdem das Laden der Assets zwischen ox_lib-Helfern und den nativen Aufrufen um, und im Auslieferungszustand ist es aus, die Resource läuft also standardmäßig auf Natives.
- Keine, und auch keine SQL-Datei. Der Server hält die laufenden Einheiten im Speicher, eine pro Spieler, mit einem Timeout, der eine abgebrochene aufräumt. Wir schreiben nirgendwo etwas. Willst du eine Historie pro Spieler, ist genau dafür das Abschluss-Event da: Du speicherst, was dich interessiert, in deinem eigenen Schema.
- Nein. Die Einheit öffnet der Server, und das Ergebnis wird begrenzt, bevor es dein Event erreicht: Gehaltene Posen können den Ablauf nicht überschreiten, Fehler nicht dreißig, das Fertig-Flag ist ein strikter Vergleich und der Score wird serverseitig aus diesen begrenzten Werten neu berechnet. Das Schlimmste, was ein modifizierter Client kann, ist, eine Einheit zu melden, die er wirklich geöffnet hat.
- Der Körper steht wieder auf. Die Resource liest die exakte Animation, die der Ped gerade abspielt, und wählt die passende Aufsteh-Animation aus den zwölf, die das Spiel mitbringt, wobei vier davon eine eigene Variante für eine früh abgebrochene Pose haben. Die Pose zählt als verpatzt, und nach fünf verpatzten Posen stoppt die Einheit von selbst.
- Beides. Der Command funktioniert überall, solange dein Spieler zu Fuß ist, und die Spots sind eine optionale Schicht obendrauf, für die Orte, die du mit Matte und Blip ausschildern willst. Lass `Config.Spots` leer, und es bleiben nur der Command und die Exports, der Spot-Thread startet dann gar nicht erst.
- Ja, und gebaut haben wir es zuerst für ihn, wie im Grundspiel. Zwei Sticks führen die Marker, die Schultertrigger tragen das Atmen, dazu ein Rumble, solange beide Marker auf dem Ziel sitzen. Mit Maus und Tastatur läuft dieselbe Einheit über WASD und die Maus, und die Anzeigen wechseln von selbst, je nachdem, was der Spieler zuletzt benutzt hat.
- 0.00ms. Die Schleife einer Einheit existiert nur, solange eine läuft, und der Spot-Thread schläft, solange kein Spieler in der Nähe ist. Ohne einen einzigen deklarierten Spot startet dieser Thread überhaupt nicht.
Was Käufer sagen
5.0 1 verifizierte Bewertung
Jpmediaaa. Hotstar Production I am very happy that I was given the opportunity to make a script trailer for the yoga minigame, I think the script is very seamless and very easy to use and interactive.
EMPFOHLEN DerassDance minigame
Das Tanz-Minigame aus den GTA Online Nightclubs, für FiveM nachgebaut und überall auf deiner Map spielbar. Tipp im Takt, um vier Intensitätsstufen hochzugehen, halt sie oben, zieh sie auf Kommando hoch oder lass sie fallen, wechsle zehn Styles und zieh 27 Special Moves durch, ohne die Tanzfläche zu verlassen. Alle um dich herum sehen die ganze Show, und dein Server führt keine einzige Zeile davon aus.
EMPFOHLEN Avenida TeamBarber shop
Ein Barbershop, inszeniert wie eine Szene, mit einer Kamera, die der Spieler wirklich steuert. Der Charakter kommt herein, setzt sich, und der Barber legt los, während eine Orbit-Kamera den Kopf ins Bild rückt. Haare, Bart, Overlays und der komplette Satz an Skin-Details, live am Charakter zu sehen, bevor ein einziger Dollar ausgegeben ist.
EMPFOHLEN Avenida TeamClothing store
Ein Kleidungsladen mit gespeicherten Outfits, Firmen-Garderoben und einem Editor, der den Katalog direkt im Spiel bepreist. Jede Komponente und jedes Prop, Stück für Stück gekauft oder als ganzer Look, mit einem serverseitigen Register, das verhindert, dass jemand etwas trägt, wofür er nie bezahlt hat.