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

Bartender Script

Step behind the bar and mix drinks like a pro. An interactive bartender job with a drink-making minigame, recipes, tips, and a slick NUI that turns any bar into a living workplace.

Version v2.1.0Framework QBCoreUpdated July 2026 $19.99 Get it on the store →

Walk up to a bartender ped, target them, and order a drink. The drink is served over the bar — you pay, your character drinks it on the spot (animation + glass prop), your thirst is restored, and alcohol builds a buzz that turns into a drunk effect and wears off over time. Nothing is kept in your inventory.

Fully in-game setup — admins place, move, rename and delete bartenders with the /bartender command. No config editing, no SQL file to import: the database table creates itself on first start and every change syncs to all players instantly.

In-game setup (/bartender)

Admin-only (see Permissions below). Opens a menu with two options:

  • Place a new bartender — enter a bar name, pick a ped from the preset list (or type any custom ped model), optionally enable a map blip and pick its color. A translucent ghost ped then appears in front of you:
    • 🚶 walk around to position it
    • ← / → rotate it
    • ↑ / ↓ push it away / pull it closer
    • E confirm · Backspace cancel

On confirm it's saved to the database and appears for every player on the server immediately.

  • Manage bartenders — lists every placed bartender sorted by distance. Pick one to teleport to it, move it (ghost preview again), rename it, or delete it (with confirmation).

Permissions

Server admins can use /bartender out of the box — the check accepts the command or admin aces (which the standard Qbox/QBCore templates grant to the admin group) and the framework's own admin/god permission. To grant access to other groups or players, add the dedicated ace in server.cfg:

add_ace group.mod rrbartender.admin allow

The command name and ace are configurable via Config.AdminCommand and Config.AdminAce. All permission checks run server-side.

How it works

  • A bartender ped spawns at each bar (in-game placements + optional config entries) when you get close and despawns when you leave (via ox_lib points).
  • ox_target on the ped → Order a drink → a menu of drinks with prices.
  • The server takes payment (cash first, then bank) and only allows it if you are actually standing at the bar. Prices live server-side so they can't be spoofed.
  • Drinking plays an animation with the matching glass, tops up thirst (Qbox thirst statebag), and adds a buzz. Water and coffee lower the buzz, so players can sober up at the bar.

Buzz / drunk effect

Buzz is a 0–100 value. As it rises you get camera sway + motion blur (tipsy), a drunk walk (drunk), and occasional stumbles (wasted). It decays on its own — roughly 8 minutes from fully wasted back to sober at default settings. Tune the thresholds and decay rate in config.luaConfig.Buzz.

Adding / moving bars

Use /bartender in-game (see above) — that's the intended way. Placements persist in the rr_bartender_locations table across restarts.

If you'd rather keep locations in the config file, that still works too:

  1. Stand exactly where you want the bartender to stand.
  2. Run /barcoords — the coordinates print to console **and copy to your clipboard**.
  3. Paste the vec4(...) into a coords = entry under Config.Bars in config.lua and set a name, model, and optional blip.

Config-file bars show up alongside in-game placements, but they can't be edited from the /bartender manage menu.

Editing the drink menu

Config.Drinks controls everything shown in the order menu:

  • price — dollars charged
  • thirst — hydration restored (0–100)
  • buzz — alcohol hit; negative sobers you up
  • prop — glass/bottle held during the anim (auto-skipped if the model is invalid)
  • time — drinking duration in ms (optional, default 4000)

Optional: qb-pedplacer integration (sold separately)

rr-bartender is fully standalone — everything above works on its own via the /bartender command. If you also own qb-pedplacer, it can turn any placed ped into a drink-serving bartender:

  1. /pedplacerPlace New Ped → pick any model → settings → weapon → 🍸 Bartender (Serves Drinks).
  2. Aim, RMB to place. That ped now has the Order a drink target and is persisted in the pedplacer database like any other placed ped.

Move/delete it from the pedplacer Manage menu. The location is registered with this resource automatically so the server-side proximity check accepts orders there.

The integration is auto-detected in both directions — neither resource needs the other installed, and no config change is required to run them together.

Exports (used by qb-pedplacer, available to any resource)

  • Client: exports['rr-bartender']:AddBartenderTarget(ped) — attach the "Order a drink" interaction to any ped entity.
  • Client: exports['rr-bartender']:RemoveBartenderTarget(ped).
  • Server: exports['rr-bartender']:RegisterBarLocation(key, {x=,y=,z=}) / RemoveBarLocation(key) — add/remove a coordinate the proximity check trusts.

Dependencies

Required: ox_lib, ox_target, oxmysql, and either Qbox (qbx_core) or QBCore (qb-core) — the framework is auto-detected at runtime, no config needed.

Optional (auto-detected, sold separately — everything degrades gracefully without them):

  • qb-pedplacer — place drink-serving bartenders with the ped placer.
  • rr-speech — voiced bartender lines.
  • rr-ai — AI-written bartender dialogue (see Config.AI).

Install

  1. Drop the folder in resources/[custom]/rr-bartender.
  2. Add ensure rr-bartender to your server config (or rely on the [custom] group ensure).
  3. That's it — no SQL to import. The rr_bartender_locations table is created automatically on first start. Join as an admin and run /bartender to place your first bartender.
Last updated August 10, 2026