Suty
Money Throwing

Configuration

Configuration

config.lua at the resource root. Unencrypted and freely editable.

Globals

Config.Framework = 'qbx'                -- 'qbx' | 'qb' | 'esx'
Config.Command   = 'tirardinero'        -- /tirardinero <amount>

Config.RestrictedGroup = false          -- false = anyone; or 'group.admin' to gate the command
Config.CancelKey       = 'x'            -- key to cancel mid-throw (refunds money)

Money

Config.DefaultAmount = 500              -- default $ if no amount specified
Config.MaxAmount     = 5000             -- max $ per single throw
Config.BillThreshold = 1000             -- up to this: 1 bill per $1
Config.MaxBills      = 200              -- above threshold: cap visual bills at this

So a throw of $800 = 800 visual bills. A throw of $5000 = capped at 200 visual bills (still deducts the full $5000).

Timing

Config.ThrowDelay         = 200         -- ms between each bill thrown
Config.CleanupTime        = 120         -- seconds before bills despawn from ground
Config.MaxBillsOnGround   = 200         -- max bill props per client (oldest removed first)
Config.PickupDistance     = 2.5         -- ox_target distance
Config.DropExpireTime     = 300         -- seconds before uncollected money despawns
Config.PickupSettleTime   = 1500        -- ms wait after throw before bills can be picked up

Physics

Config.ThrowForce   = { min = 2.0, max = 4.0 }   -- forward force
Config.ThrowUpForce = { min = 1.5, max = 3.5 }   -- upward force
Config.ThrowSpread  = 2.5                          -- random horizontal spread

Animation + props

Config.MoneyProp = 'prop_anim_cash_note_b'        -- single bill prop
Config.HandProp  = 'prop_anim_cash_pile_01'       -- pile in hand during anim

Config.AnimDict = 'anim@mp_player_intupperraining_cash'
Config.AnimName = 'idle_a'
Config.AnimFlag = 49                              -- upper body + loop (walk while throwing)

Config.HandPropBone      = 60309                  -- left hand
Config.HandPropPlacement = {0.0, 0.0, 0.0, 180.0, 0.0, 70.0}

Config.FallbackAnimDict = 'anim@heists@ornate_bank@grab_cash_b'
Config.FallbackAnimName = 'grab'

Particle effect

Config.PtfxAsset     = 'scr_xs_celebration'
Config.PtfxName      = 'scr_xs_money_rain'
Config.PtfxBone      = 60309
Config.PtfxPlacement = {0.0, 0.0, -0.09, -80.0, 0.0, 0.0, 1.0}

Pole dances

Config.EnableCustomDances = true                  -- false = only vanilla GTA pole dances (1-3)

Config.Poles = {
    [1] = {
        position = vec3(112.58, -1287.04, 27.46),  -- box-zone center (pole location)
        dances = {
            { label = 'MagicCity 1', dict = 'pandora@magiccityv1.1', anim = 'pandora',
              coords = vec4(112.56, -1287.06, 27.55, 194.37) },
            -- ... 10 dances total
        },
    },
    [2] = { ... },
    [3] = { ... },
}

Each pole entry has:

  • position — where ox_target detects "I'm at this pole"
  • dances — list of custom dance emotes the player can pick

Vanilla GTA pole dances (1-3) are always available on every pole regardless of this config.

Positioning custom dance coords

Use the in-game /pole command (admin-only). It captures your current ped position + heading so you can paste it into Config.Poles[X].dances[Y].coords.