by Derass ESX · QBCore · Qbox · vRP · Standalone

Yoga minigame

The yoga minigame from story mode, pulled out of the mission and turned into a roleplay activity anyone can start. Line up both markers, hold the pose while the body moves into it, then breathe in and breathe out on the triggers. Three routines, fourteen poses, the real animations and the real breathing sounds. And a score your own scripts can react to.

Delivery Instant
Updates Free for life
Support Daily on Discord
01 · FEATURES

What it does

02 · SPECS

Technical
specifications

Framework Not required Never reads money, items or identity
Dependencies None No database, no SQL, no target resource
Content 3 routines · 14 poses 37 animation clips · 12 recovery animations
In-game locales 15 included ar · cs · de · en · es · fr · id · it · nl · pl · pt-br · ro · ru · th · tr
Performance 0.00ms idle No thread while nobody is near a spot
03 · INCLUDED

Everything you
get

  • Fifteen locale files, shipped filled

    Your players read the script in their own language from the first start, and the files sit outside escrow so you can edit any line in production. Honest note: they are translated and reviewed by us, not proofread by native speakers of all fifteen. Tell us what reads wrong in yours and it gets fixed.

  • The minigame rules are yours to set

    Missed breathing cycles before a pose fails, failed poses before the session stops, how long a breath can be held, mouse sensitivity, rumble, on-screen hints, the timecycle strength per pose and its cap. `config/config.lua` is escrow exempt, so a wellness spa server and a prison yoga yard can run the same resource at two different difficulties.

  • The world spots, entirely in config

    Coordinates, heading, which routine, the mat prop, the blip sprite and colour, the distance the marker appears at and the distance the prompt becomes usable. Leave the list empty and the whole feature switches off, thread included.

  • Four exports and one integration event

    Start a session and check whether a player is in one, from the server or from the client. Then a single event at the end carrying the result, documented in the file with the line to copy. It is the shortest path between this activity and your own economy.

04 · DOCUMENTATION

Integration guide

01

Installation

  1. Drop the resource

    Grab the script from your Tebex account, copy the avenida_yoga/ folder into your resources directory, and add ensure avenida_yoga to your server config.

  2. Set the language and the routines

    Config.Locale takes any of the fifteen codes shipped in locales/. Config.EnabledMoves decides which routines players may start, and Config.DefaultMove the one used when none is given.

  3. Place your spots

    The two coordinates in Config.Spots are examples, replace them with yours. Each one takes a heading, a routine, and a blip you can turn off. An empty list disables the whole feature and its thread.

  4. Point the notifications at your stack

    Config.Notif is on auto and detects ox_lib, okokNotify, QBCore or ESX in that order. Force a target if you run several, or use the custom branch of bridges/notif.lua for your own system.

  5. Hook the reward, or do not

    The activity works out of the box without any of your code. When you want it to pay something, listen to avenida_yoga:server:sessionCompleted and read the score. That is the only integration point.

02

Quickstart

Turn a session into a reward

One event, fired once at the end. The score is already computed: 1 for a finished routine, capped at 0.4 for an abandoned one, minus 8 percent per failed pose. What it pays is your call.

lua
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)
03

API Reference

Public exports grouped by domain. Each row shows the call signature and what it does, not how it does it.

Server

  • StartYoga
    exports['avenida_yoga']:StartYoga(src, moveKey?) --> boolean

    Starts a session for a player from your own server code, on the routine you name or on the default one. Returns false when the routine is unknown or the player is already in a session, so a job or a prop can react instead of firing blind.

  • IsDoingYoga
    exports['avenida_yoga']:IsDoingYoga(src) --> boolean

    True while the player holds a live session, expiry included. Useful to block a job action, a teleport or a shop while the minigame owns their controls.

Client

  • StartYoga
    exports['avenida_yoga']:StartYoga(moveKey?) --> boolean

    Asks the server for a session from client code. The request still goes through the server registry, so this is not a way around the session guard.

  • IsDoingYoga
    exports['avenida_yoga']:IsDoingYoga() --> boolean

    True while the local player is in a session. The client-side twin of the server export, for anything that has to react in the same frame.

04

Recipes

Real-world copy-paste examples. Drop them into your own resource, tweak the values, ship.

A spot needs coordinates and a heading. Everything else is optional: the routine it starts, the blip, and whether the mat prop is spawned at all. Set `move` to `random` for variety, or to `menu` to let the player choose.

lua
-- 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 },
    },
}
05

Troubleshooting

  • No. The activity never reads money, items, jobs or identity, so there is nothing a framework could provide. The same file runs on ESX, QBCore, Qbox, vRP, ox_core or a bare server without a single bridge to configure. The only framework-aware part is the notification line, which is an open file with six branches.
REVIEWS

What buyers say

5.0 1 verified review

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

    View on Discord ↗
Cart
Spirit RP
Discord