G.A.SG.A.S Docs
G.A.S Docs / Other

Ten-Pin Bowling

Ten-pin bowling with a real physics ball — GTA's own physics knocks the pins, with full ten-frame scoring, server-booked lanes, and live spectators. Zero streamed assets: drop it into any bowling-alley MLO.

Version v1.0.0Framework Qbox / QBCoreUpdated August 2026 $14.99 Get it on the store →

Ten-pin bowling with a real physics ball for any bowling-alley MLO. No streamed assets — the ball and pins are base-game props (prop_bowling_ball, prop_bowling_pin) and GTA's own physics knocks the pins, so it drops into any server with zero extra streaming weight.

  • Frameworks: Qbox (qbx_core) and QBCore, auto-detected. ox_lib required.
  • Open files: config.lua, html/ and this README ship unencrypted so you can re-coordinate, re-price, restyle and translate freely.
  • Works with any alley: every position is config — lanes (head pin + throw spot pairs), ball racks, front desk. Defaults target a Vinewood mansion alley; point them at Gabz/Denis3D or any other bowling MLO.

How to play

  1. Front desk (green marker, -2236.0, 474.04): press E, pick a free lane. Free by default (Config.GameFee).
  2. Ball rack (yellow marker): press E to grab your ball — once per game; it comes back to you automatically after every throw.
  3. Your lane (teal marker): press E to step up.
    • A / D — aim (blue dot on the deck shows where you're pointed)
    • SPACE — hold to charge the power meter, release to throw
    • BACKSPACE — step away without throwing
  4. Full ten-frame scoring with strikes, spares and the three-ball tenth frame. /leavebowling quits early; walking out of the alley also ends the game.

Multiplayer

The server books lanes (no double-booking, auto-freed on disconnect) and relays every throw, so nearby players watch your ball and pins live on their own clients. The bowler's client is authoritative for the pin count.

First-run calibration

The head pin sits exactly on each lane's measured pins coordinate; the rack triangle extends away from the thrower along the throw-spot -> head-pin line. Only the pin gap and height should ever need touching:

/bowlcal                 -- toggles green dots at every computed pin spot
/bowlcal spacing 0.28    -- pin-to-pin gap
/bowlcal z 0.05          -- raise/lower the rack

Values apply live; the console prints a line to paste back into config.lua. Set Config.AllowCalibration = false once dialled in.

Difficulty tuning

Strikes are earned twice over: release the power meter inside the green sweet spot AND time the swaying aim dot over the pocket — both run on different cycles. Config.Throw.sweetSpot / maxError / swayWidth / swayPeriod set the challenge; Config.Pins.mass / maxFlySpeed control how violently pins scatter (/bowlcal mass|fly to tune live).

Notes

  • Only the active lane's pins are ever unfrozen, so a gutter ball wandering sideways can't disturb the neighbouring lane's rack.
  • Nearby players watch throws live (relayed origin/velocity, local physics); the bowler's client is authoritative for the count.
Last updated August 10, 2026