RedM Skill Check Script: How to Add a Timing Minigame

Guide · Updated 9 Nov 2026

How to add a skill check minigame to a RedM server

A RedM skill check is a short timing test that decides whether a player pulls off a task: a needle sweeps round a ring, and the player presses a key while it is inside the marked zone. It turns a wait into something the player does, and it gives you a difficulty dial for every task on the server. To add one you need a script that draws the ring and hands the result to whichever script asked. Poggy Skillcheck (Free) does this, and this guide covers what suits it, how to set the difficulty and how to call it from your own code.

Skill check, progress bar or dice roll?

A skill check is not always the right answer. Use the one that fits the moment:

ToolGood forCosts the player
Progress barRoutine jobs done dozens of times, such as washing or pickingOnly time
Dice roll or a /doRoleplay between players, where a story decides the outcomeNothing, and it needs both sides to play fair
Skill checkTasks with real risk: a lock, a fight with a fish, a dangerous recipeAttention, and the price of missing

The easiest mistake is putting one on everything. A ring on every apple picked gets old in an evening. Keep it for the moments where a miss would matter. For player-to-player scenes, see RedM /me and /do commands, which covers checks instead of dice.

What the player sees

  • A warning tone plays, and the ring appears one second later.
  • A white zone is a pass. A gold great zone inside it is a bonus hit.
  • Anywhere else is a miss, and so is letting the needle complete a full turn.
  • Some checks need several hits in a row. A counter such as 2 / 3 shows progress, and one miss fails the lot.
  • The ring can shake, appear away from the centre of the screen, and turn either way.
  • The game keeps running while the ring is up, so the player is not locked in a menu.

It is the same ring-and-needle idea as the Dead by Daylight skill check, which many players already know how to read.

How to set the difficulty

Two settings do most of the work: how fast the needle turns and how big the zone is.

SettingRangeDefaultWhat it does
speed1 to 531 is about 3.5 seconds a lap; 5 is under one second
difficulty1 to 53Zone size. 1 is about a quarter of the ring; 5 is about a fourteenth
repetition1 to 101Hits in a row needed to pass
great0 to 10030Percent of the zone that is gold. 0 turns it off
directioncw, ccw, randcwNeedle direction; rand picks each repetition
randomizer0 to 50How far from the centre of the screen the ring may appear
startOffset0 to 5020Random needle start. 0 is always the same place

Some starting points:

  • An easy task: speed 1, difficulty 1.
  • A normal task: the defaults.
  • A hard task: speed 4, difficulty 3, repetition 3. A miss ends it, so three hits is a real test.
  • Very hard: speed 5, difficulty 5. Keep this for things that should usually fail.

Change one setting at a time. To make a check harder without making it unfair, reach for repetitions or a random direction before the smallest zone: they stop players learning one rhythm, and they do not need perfect reactions.

The values in /poggy are defaults. A script that passes its own value always wins, so they only change checks that leave that value out.

Skill checks in crafting and fishing

Two Poggy scripts use the ring already, so you can see it working without writing any code.

  • Poggy Crafting (Free): a recipe can ask for timed rounds instead of a progress bar. Pass them all for the full reward, pass some for a share, and each hit in the gold band adds a bonus. Materials are taken before the check, because a failed craft has to cost something. A recipe can be dangerous too: miss a round on dynamite and it goes off in the player's hands.
  • Poggy Fishing ($69.99): landing a fish is a run of skill checks that fill a progress bar.

The guides to setting up crafting and setting up fishing cover the rest of those systems.

How to add a skill check to your own script

Call the export from client-side Lua. The call waits until the player finishes, so always run it inside a thread:

CreateThread(function()
    local result = exports.poggy_skillcheck:StartSkillCheck({
        speed      = 3,
        difficulty = 3,
        repetition = 2,
    })

    if result.success then
        -- tell your server script the player passed
    end
end)

Every option can be left out. The call returns three values:

  • success: every repetition was hit.
  • great: every repetition was a great hit.
  • greatCount: how many great hits there were.

Three things to build in:

  • One at a time. A call made while another is running returns success = false at once. Check first with IsSkillCheckBusy(), and stop one with CancelSkillCheck().
  • Pay rewards on the server. The check runs only on the player's machine and has no server events, so a cheat can claim a pass. Your server code should still check that the player is in the right place, has the materials and is not asking too often.
  • Off means pass. With Enabled set to false, no ring shows and every call passes at once. Do not leave it off on a live server unless you mean it.

Developers building on the rest of the framework layer can read using Poggy Core in your own RedM scripts.

Testing it before players do

  1. Set TestCommand to true, in /poggy or config.lua, and restart the script.
  2. Type /skillcheck for the defaults, or /skillcheck 4 4 2 for speed 4, zone 4 and 2 repetitions.
  3. Turn TestCommand off again. The command has no permission check, so any player can use it while it is on.

Sounds are quiet by default, with Volume at 0.1. To use your own, replace incoming.mp3, good.mp3 and great.mp3 in ui/sfx/skillcheck/ and keep the names.

Installing it

Poggy Skillcheck (Free) runs on VORP Core, RSG Core and QBCore RedM. It needs Poggy Core (Free) 0.27.0 or newer, and has no database and no server scripts. Start it after poggy_core and before anything that uses it:

ensure poggy_core
ensure poggy_skillcheck

More free scripts are listed in free RedM scripts worth installing. Step by step: how to install a RedM script.

Questions this guide answers

What is a skill check in RedM?

A skill check is a short timing test that decides whether a player succeeds at a task. In Poggy Skillcheck a needle sweeps round a ring and the player presses Space while it is inside the marked zone.

Is there a free skill check script for RedM?

Yes. Poggy Skillcheck is free and runs on VORP Core, RSG Core and QBCore RedM. It needs the free poggy_core and uses no database.

How do I add a skill check to my own RedM script?

Call exports.poggy_skillcheck:StartSkillCheck(options) from client-side Lua, inside a thread. It waits until the player finishes and returns success, great and greatCount.

Why does every skill check pass straight away?

The Enabled setting is false. With it off, no ring is shown and every call returns success at once, so set it back to true and restart the script.

How hard should a RedM skill check be?

Start with speed 3 and zone size 3, which are the defaults, and change one at a time. A fast needle and a small zone together is very hard, so raise repetitions for hard tasks instead.

Scripts mentioned in this guide

Whole store →
Poggy Skillcheck — Free RedM Skillcheck Script
Free RedM Skillcheck Script

Poggy Skillcheck

A free Dead by Daylight style skillcheck for RedM: a ring with a turning needle, success and great zones, multi-hit chains and shake. One client export waits until the player passes or fails.

PriceFree
Poggy Crafting — Free RedM Crafting Script
Free RedM Crafting Script

Poggy Crafting

A free, open-source RedM crafting system whose recipe browser shows the whole chain behind every item, crafted at benches, campfires, ovens and forges, with a shopping list, a gathering tracker and optional skillchecks. GPL v2.

PriceFree
Poggy Fishing — RedM Fishing Script
RedM Fishing Script

Poggy Fishing

Skill-based RedM fishing with 28 fish across 34 waters: a tug game to hook, skillchecks to land, a Pro Rod pull fight, six baits, seasons, bonus loot and a fishing journal of every player's records.

Price$69.99
Join the Discord Discord