Last Resort · resource 02 of 4

Reward loyalty. Gate access. Per account.

Account Levels is a standalone FiveM resource that awards every player an account-wide level (0 to 8 by default) based on cumulative active hours played on the server. The system is per-account, not per-character — one player with three characters shares one tier.

FiveM / Cfx.re Standalone QBox · QB-Core · ESX (auto-detected) oxmysql ox_lib
Per-account playtime 9 tiers, fully editable ACE admin panel + audit log
FiveM server console — txAdmin
> ensure account_levels
[account_levels] schema installed (als_accounts, als_level_history, als_admin_log)
[account_levels] framework=qbox primary_identifier=license
[account_levels] event boost for 60h — "Weekend XP"
>
The problem

New player or four-year veteran — same access.

Server time means nothing on most FiveM stacks. There's no real way to recognise the players who've been there since launch.

// The loyalty

No reward for time invested

Four years on the server and you still get the same opening hand a fresh license gets. Job whitelists, vehicle dealers, properties, factions — no clean way to gate any of them behind real playtime instead of staff approval.

// The bot farm

Multi-character grinding

Make a second character to bypass cooldowns. Make a third. Existing systems track playtime per character, so a player with five characters has five times the wallet of progress. Account Levels stores the timer per account — one player, one timer, every character.

A clean tier system and a clean API to gate anything in any other resource behind it.

The four pillars

Per-account playtime. Operator-grade tooling.

The point of the resource isn't the timer; it's everything around the timer — AFK detection, daily caps, boosts, admin panel, public API.

01

The playtime tracker

60-second server-side tick, in-memory cache, batched DB flush every 5 minutes, immediate flush on disconnect. AFK detection cross-checks position delta + input activity + vehicle grace.

  • Per-account, shared across every character
  • Daily cap (default 16h) so bots don't outpace players
  • Daily & weekly counters, session counter, last-seen stamp
02

9 tiers + rewards

Doubling threshold pattern from Newcomer to Eternal. Per-tier rewards: money, items (via ox_inventory if present), and a custom event you fire from your own resource.

  • Tier table fully editable in config.lua
  • Money & item rewards through the framework bridge
  • Custom on-tier-reached events for unique perks
03

ACE-gated admin panel

Unified NUI panel with three tabs (Status / Leaderboard / Admin). The Admin tab is hidden unless the player matches Config.admin_ace. Every write action is audit-logged.

  • Add minutes · Set tier · Grant prestige · Reset
  • Distribution chart + per-account drill-down
  • Audit log persisted to MariaDB — staff identifier & reason on every action
04

Progression modifiers

Server-wide event boost (/alboost 2 60 Weekend), per-ACE-group multipliers (donator → 1.2×, vip → 1.5×), catchup bonus for fresh accounts, optional inactivity decay.

  • Multipliers stack — daily cap is always enforced last
  • Boost cap + duration cap to prevent staff foot-guns
  • Decay floors at tier 1 — can't fully zero a vet
See it in action

A classified-dossier status panel + admin tools.

The unified NUI panel opens with one keybind (default PageUp) and tab-switches between Status, Leaderboard and the ACE-gated Admin view.

// Status overlay

Big number. Live progress. 3D character preview.

Big tier number on the left, progress block with caret marker, telemetry strip (today vs cap, this week, sessions). The status view also renders the player's actual GTA V character through a scripted camera with optional shallow-DOF.

  • Live 3D ped preview, tuned via /alpreviewdebug
  • Boost banner shows when a multiplier is active
  • Cinematic level-up animation on promotion, SPACE to dismiss
In-game NUI — representation
5
Veteran · Tier 5
ALEX MORENO · ACCOUNT 8F2C…
⚡ 2× EVENT BOOST
PROGRESS
128 / 256 H
Total logged · 128h 06m
Today · 4h 12m of 16h cap
Next tier: Respected — 128h remaining
⚡ EVENT BOOST · "Weekend XP" · 22h left
1 Switch to Leaderboard
2 View progression history
ESC Close panel
// Admin panel

Search any account. Audit everything.

Search box + filter chips (All / Online / L5+). Per-account detail: tier, total hours, sessions, prestige, action buttons (Add minutes, Set tier, Grant prestige, Reset), audit log, level history. All write actions open an in-NUI modal — no window.prompt.

  • Distribution chart & dashboard stats refresh on every action
  • Audit row written with staff identifier + reason
  • Optional Discord webhook for level-ups and admin actions
Admin tab — representation
8
Tier 8 · Eternal
Wendy Park · account A91D…
✅ ONLINE
Total · 1,128h · Sessions 412 · Prestige 1
Today 9h 32m · This week 41h 18m
Last action: ADD_MINUTES (+120) — "compensate crash"
1 Add minutes
2 Set tier
3 Grant prestige
4 Reset account
The tier table

Nine tiers. Doubling thresholds.

The default ladder doubles every step from Newcomer to Eternal. Every row, every threshold and every locale title is editable in config.lua.

T0 Newcomer
T1 Local
T2 Citizen
T3 Regular
T4 Established
T5 Veteran
0h8h16h32h64h128h
Tier 0 · Newcomer0h
Tier 1 · Local8h
Tier 2 · Citizen16h
Tier 3 · Regular32h
Tier 4 · Established64h
Tier 5 · Veteran128h
Tier 6 · Respected256h
Tier 7 · Iconic512h
Tier 8 · Eternal1,024h
Public API

Gate anything in any other resource.

The whole point: RequireLevel and RegisterGate — two one-line exports that let you put a tier wall in front of jobs, vehicles, properties, weapons, factions, items, anything.

01

Job whitelist

Block taking the police job until Tier 3. One RequireLevel call sends a localized notification automatically when they don't meet it.

if jobName == 'police' and not exports.account_levels:RequireLevel(src, 3) then
    return
end
02

Vehicle dealer

Use the declarative RegisterGate helper — register once with a level + message, then CheckGate(id, source) anywhere.

exports.account_levels:RegisterGate('dealer_supercar', {
    level = 5,
    message = 'Supercars require Veteran status.'
})
03

Property purchase

Per-property minimum tier in a one-line lookup table — any property below 0 is open to everyone.

04

Weapon & item gate

Hook ox_inventory's createItem with CheckGate — heavy weapons require Respected status, period.

Five worked examples in the docs — jobs, vehicles, properties, factions, weapons. Plus a scheduled-boost recipe.

Operator-first

Configurable down to the bolt.

Every interval, every cap, every multiplier, every reward, every tier title — one config file.

Exports (server)

Every export is on the server context. RequireLevel handles the rejection notification for you.

GetLevelGetTotalMinutesGetProgressToNextRequireLevelGetAccountIdGetTierTitleGrantBonusMinutesGetLeaderboardRegisterGateCheckGateGetStatusPayloadGetEventBoost

Lifecycle events

Hook playtime ticks, daily resets and level-ups from your own resource with plain AddEventHandler.

onPlayerLoadedonMinuteTickedonLevelUponDailyReset
Pair it with

The other Last Resort resources.

Intel NPC

Gate Intel NPC personas by tier — only Tier 4+ can buy from the black-market fence, only Tier 6+ can pay the corruptible cop's "look the other way" bribe. Both layers fire server events you bolt on either side.

Open product page →

NPC Chat

Lightweight static NPCs with the same chat NUI. Wire a quest-giver behind a Tier 3 check; the dealer's premium catalog behind a Tier 5. One RequireLevel call inside the server hook is all it takes.

Open product page →
Get Account Levels

Buy once. Own it. Update forever.

Account Levels · v1.0.0

One purchase. Lifetime updates.

A production-ready release. Standalone, but auto-detects QBox, QB-Core and ESX through a clean bridge layer. Add another framework by dropping a single file into bridge/<name>.lua.

  • Full source — standalone resource, no escrow, no licence-check
  • Self-installing schema — three tables prefixed als_
  • 12 server exports + 4 lifecycle events for integration
  • English + Hungarian locales; add your own under locales/
Buy on Tebex → Read the docs first

Pricing & refund policy per Tebex terms.

Honest FAQ

The questions worth answering.

Yes. Standalone is one of the four supported modes — everything works fully without QBox / QB / ESX. The only thing that becomes a no-op is the per-tier money reward (no economy to push into); item rewards still work via ox_inventory if installed.

A two-layer AFK check. Client tracks input activity; the server cross-checks position delta + vehicle grace + NUI grace. If reported active but position hasn't moved (and not in a vehicle), the server overrides to AFK. On top of that, a daily playtime cap (default 16h) puts a ceiling on how fast even a legitimate player can climb.

Yes. The Config.levels table is plain Lua — add or remove rows freely. Thresholds are in minutes; titles map to locale entries you can rename or translate. No code change required.

Per account. The primary identifier (default license, configurable) becomes the row key. Every secondary identifier the player presents is stored in a JSON column so you can look an account up by any of them.

oxmysql against MariaDB 10.11 LTS+ (or MySQL 8.x). Three tables prefixed als_: accounts, level_history, admin_log. The schema installs itself from sql/install.sql on first boot — you don't need to run anything manually.

Yes. The /alboost <multiplier> <hours> [label] admin command starts a server-wide boost visible in everyone's status panel. Multiplier is capped by Config.event_boost.max_multiplier, duration by max_duration_hours. A scheduled-boost recipe in the docs shows how to wire it to a weekly cron-like thread.

Reward the time. Gate the perks.

Get Account Levels on Tebex →