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.
