All documentation

Paid scripts

Poggy Badges

A real 3D badge or armband for lawmen, doctors and officials. Players place it with a live editor, save the spot as presets, and flash the badge at nearby players with Show Badge.

  • poggy_badgev1.5.0
  • FrameworksVORP Core, RSG Core, QBCore RedM
  • Updated5 Oct 2026

Overview#

Players with a listed job and grade can pin a badge prop to their chest, or an armband to their arm. They place it with a live editor and save the spot as a named preset, one per outfit. Show Badge plays a pocket-watch style animation with the badge in hand and flashes the badge picture, the character's name and your server name on the screens of players close by.

  • Job and grade locked. Each job and grade gets its own badge picture and prop. Nobody else can open the editor.
  • Live 3D editor with sliders for position and rotation. The badge moves as you drag.
  • Bone picker: collar, chest, stomach, waist or hip, or either upper arm for armbands.
  • Size slider for props that come in several sizes, so an armband fits a bare arm or a thick coat.
  • Presets saved per character in the database.
  • Any prop model: the five stock game badges work out of the box, and streamed packs work too. Packs that face the wrong way get a rotation override.
  • Ready for Poggy Badge Props: the flash pictures for all 37 badges and five armbands in the pack are included, and its armbands start on the arm by themselves.
  • A grade can hold up a different prop than it wears, so a medic with an armband shows a medic's badge.

Requirements#

WhatWhy
RedM with VORP Core, RSG Core or QBCore RedMIt runs on any of the three.
poggy_core 0.13.0 or newerCharacter data (job, grade, name) and notifications. It must start first. With 0.23.0 or newer the editor follows the Poggy theme.
oxmysqlStores badge presets.
Poggy Badge Props (optional)37 extra badges and five armbands. Not needed for the stock game badges.

Installation#

  1. Download poggy_badge from your Cfx portal and put the folder in your server's resources folder.
  2. In server.cfg, start it after oxmysql and poggy_core. If you own Poggy Badge Props, start the pack before Poggy Badges:
    ensure oxmysql
    ensure poggy_core
    ensure poggy_badge_props   # only if you have the pack
    ensure poggy_badge
  3. Restart the server.
  4. Check the badge sets match your job names (see Configuration).

The preset table (poggy_badge_presets) is created for you when the script starts. There is nothing to import. If you manage the database yourself, set PoggyCoreConfig.Sql.AutoInstall = false in poggy_core's config and import sql/install.sql.

Configuration#

Every setting can be changed in game in the /poggy settings hub under Poggy Badge, or by hand in config.lua. Restart the script after a change. The hub has two help pages: Adding a badge for a job and Fixing badge placement and rotation.

General

SettingDefaultWhat it does
Badge command (Config.command)"badge"The command that opens and closes the editor, without the slash.
Show distance (Config.showDistance)2How close, in metres, other players must be to see the badge flash. The player showing it always sees it.
Server name (Config.serverName)"Your Server"Shown under the character's name on the badge flash. Leave it empty to show nothing there.
Show animation hold time (Config.showAnimDuration)5000How long the badge is held up, in milliseconds. About a second of put-away animation follows.
Badge flash duration (Config.badgeDisplayDuration)8Not used by this version: the flash always shows for 5 seconds.
Debug output (Config.debug)falsePrints the job and grade the server read each time a badge is looked up. Useful when a job gets no badge.

Starting position

These only decide where a new badge starts. Players move it from there with the editor.

SettingDefaultWhat it does
Starting bone (Config.defaultBone)"SKEL_Spine5" (collar)The bone a badge is pinned to until the player picks another.
Starting offset (Config.defaultOffset)vector3(0.081, 0.169, 0.142)Position from the bone, in metres.
Starting rotation (Config.defaultRotation)vector3(-152.25, 83.1, -55.5)Pitch, roll and yaw, in degrees. The stock badges face the right way with these values.
Rotation overrides by prop name (Config.prefixRotations)kh_ (an example)A different starting rotation for every prop whose name starts with a prefix. Use it for streamed packs that face the wrong way.

Bones you can use: SKEL_Spine5 collar, SKEL_Spine4 upper chest, SKEL_Spine3 mid chest, SKEL_Spine2 lower chest, SKEL_Spine1 stomach, SKEL_Spine0 waist, SKEL_SpineRoot hip, SKEL_L_UpperArm and SKEL_R_UpperArm for armbands.

Badge sets (Config.badges)

Each set gives one or more jobs a badge per grade. In the hub: Badges → Badge sets.

{
    jobs = { "sheriff" },
    grades = {
        [0] = { badge = "sheriff", prop = "s_badgesherif01x", useName = true, useServerName = false },
        [1] = { badge = "sheriff", prop = "s_badgesherif01x", useName = true, useServerName = false },
    },
},
FieldWhat it is
jobsJob names that use this set. Matched exactly and case-sensitive, so list every spelling your server uses (for example police and Police). Only the first set that lists a job is used.
gradesOne entry per grade number. A grade with no entry gets no badge, so cover every grade the job has.
badgeThe picture for the flash: a file in ui/images/, without .png.
propThe 3D prop model that is worn.
sizesOptional. For a prop that comes in several sizes: every size's model name, smallest first. The editor then shows a Size slider, and prop is the size players start with.
showPropOptional. The prop held in the hand by Show Badge, when it should differ from the one worn. Left out, prop is held up.
bone, offset, rotationOptional. Where this grade's prop starts, when it does not belong on the chest. Left out, the starting position above is used. An armband from Poggy Badge Props starts on the left upper arm by itself.
useName, useServerNameNot used by this version: the flash always shows the character's name, and the server name unless it is empty.

The shipped sets cover sheriff, deputy, police / Police, marshal / usmarshal and pinkerton, grades 0 to 5, with the stock game badges.

Stock badge props

PropBadge
s_badgesherif01xSheriff
s_badgedeputy01xDeputy
s_badgepolice01xPolice
s_badgeusmarshal01xUS Marshal
s_badgepinkerton01xPinkerton

Badge pictures

The flash pictures live in ui/images/. To add your own, drop a .png in that folder and use its name without .png as badge. Shipped pictures:

  • Sheriff and deputy stars: sheriff, bronzebadge, silverbadge, goldbadge
  • Marshal: marshal, bronzemarshal, silvermarshal, goldmarshal, federal
  • Police: police, bronzepolice, silverpolice, goldpolice
  • Detective: bronzedetective, silverdetective, golddetective
  • Agency and senior: pinkerton, specialagent, presidentbadge
  • Medical and cavalry: doctorbadge, cavalrybadge
  • One for every prop in Poggy Badge Props, named poggy_ plus the badge's name, for example poggy_sheriff or poggy_armband_medic.

Commands#

CommandWhoWhat it does
/badgeJobs and grades listed in the badge setsOpens the badge editor. Type it again to close it. Anyone else is told they have no badge for their job.
/bprop <model>ACE commandSwaps the badge for any prop model, keeps the position and opens the editor. Handy for trying a prop before adding it to a job.

The /badge name can be changed with Config.command. /bprop is fixed.

Permissions#

/badge needs no ACE. It is gated by job and grade only: the server checks the character's job and grade against the badge sets each time the editor opens and before every Show Badge.

/bprop needs the ACE command, which group.admin has on most servers. To grant it:

add_ace group.admin command allow

Using it in game#

  1. Type /badge. The editor opens with your badge on its starting spot.
  2. Move the sliders until it sits right. Pick another bone from the list if you want it lower, or on an arm.
  3. For an armband, move the Size slider until it fits your outfit.
  4. Type a name and click Save. Next time, click the preset to load it. Save one per outfit.
  5. Click Show Badge to close the editor and show your badge to nearby players.
ControlAction
X / Y / Z slidersMove left-right, forward-back, up-down
Pitch / Roll / Yaw slidersRotate
Mouse wheel on a sliderFine-tune
Number boxType an exact value
Bone listPick the bone the badge is pinned to
SizePick the size, for props that come in several
Show BadgeClose the editor and show the badge to nearby players
Attach / DetachPut the badge on or take it off
SaveSave the current position as a named preset
Click a preset / ✕ on a presetLoad it / delete it
Click and hold outside the panelOrbit the camera; let go to lock it again
EscClose the editor

Rotation values that are whole numbers are nudged by 0.1, because the game resets an axis set to a whole number. You will not see a difference.

Troubleshooting#

"You don't have a badge for your current job/rank."

The character's job is not in any set, or their grade has no entry. Job names are case-sensitive. Turn on Debug output and type /badge: the server console shows the job and grade it read.

The badge faces the wrong way

Custom props often need a different rotation. Add their name prefix to Rotation overrides by prop name (Config.prefixRotations) with a rotation that faces forward.

The badge prop does not appear

Check the prop name. A streamed prop needs its pack running and started before Poggy Badges. The F8 console prints Failed to load model when a model is wrong.

Presets do not save

Presets are saved per character. Make sure a character is loaded and oxmysql is running.

Changing the flash duration does nothing

This version always shows the flash for 5 seconds. Show animation hold time does work: it sets how long the badge is held up.

An armband wearer holds up the armband

Set Prop held up by Show Badge (showProp) on that grade to a badge model, for example p_poggy_badge_doctor. The armband stays on the arm; only the prop in the hand changes.

Updating#

poggy_core's updater keeps it up to date, and your config.lua settings are kept: see Updates. New database columns are added when the script starts; existing presets keep working (presets from before the bone picker use the collar).

If you added your own pictures to ui/images/, keep a copy of them before updating.

Join the Discord Discord