Skip to main content
Rarx Beggar Preview

Overview

RARX Beggar is a comprehensive begging system for FiveM servers. Features a complete progression system with 10 levels, daily missions, achievements, multiple begging styles, dynamic zone rewards, and police heat system. Built with Svelte NUI and multi-framework support.

Features

Multi-Framework

Auto-detection for QBCore, QBox, and ESX frameworks

6 Begging Styles

Guitar, Box, Sign, Sitting, Accordion, and Veteran styles

Progression System

10 levels with unlockable perks and XP rewards

Zone System

Rich, Tourist, and Poor zones with different rewards/risks

Daily Missions

5 daily challenges with money and XP rewards

Achievements

8 unlockable achievements with special rewards

Police System

Heat system, strikes, fines, and jail integration

Dynamic Multipliers

Weather and time of day affect earnings

Requirements

RequirementType
oxmysqlRequired
QBCore / QBox / ESXRequired (auto-detected)
ox_target / qb-targetOptional

Supported Systems

Frameworks

QBCore, QBox (qbx_core), ESX

Inventories

ox_inventory, origen_inventory, qs-inventory, framework default

Targets

ox_target, qb-target, or none (keybind)

Dispatch

ps-dispatch, cd_dispatch, qs-dispatch, core_dispatch, rcore_dispatch, origen_police

Installation

1

Download & Extract

Download the resource and extract to your resources folder.
2

Add Items

Add the begging items to your inventory system (see Items section below).
3

Add to server.cfg

ensure rarx_beggar
4

Set Language

setr rarx-lang "en"
5

Configure

Edit shared/config.lua to customize settings.
The database table is created automatically on first start.

Items

Add to qb-core/shared/items.lua:
['begging_box'] = {['name'] = 'begging_box', ['label'] = 'Cardboard Box', ['weight'] = 500, ['type'] = 'item', ['image'] = 'begging_box.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A box for begging'},
['begging_guitar'] = {['name'] = 'begging_guitar', ['label'] = 'Guitar', ['weight'] = 2000, ['type'] = 'item', ['image'] = 'begging_guitar.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A guitar for street performances'},
['begging_sign'] = {['name'] = 'begging_sign', ['label'] = 'Cardboard Sign', ['weight'] = 200, ['type'] = 'item', ['image'] = 'begging_sign.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A sign for begging'},
['begging_accordion'] = {['name'] = 'begging_accordion', ['label'] = 'Accordion', ['weight'] = 3000, ['type'] = 'item', ['image'] = 'begging_accordion.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'An accordion for street performances'},
['begging_veteran_hat'] = {['name'] = 'begging_veteran_hat', ['label'] = 'Veteran Hat', ['weight'] = 100, ['type'] = 'item', ['image'] = 'begging_veteran_hat.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A veteran hat that earns respect'},

Configuration

Framework Settings

Config.Framework = 'auto' -- 'auto', 'qb', 'esx'
Config.Target = 'auto'    -- 'auto', 'ox_target', 'qb-target', 'none'
Config.Inventory = 'auto' -- 'auto', 'ox_inventory', 'origen_inventory', 'qs-inventory'

Boss NPC Locations

Config.BossLocations = {
    {
        id = 'main_boss',
        coords = vector4(130.14, -1178.68, 28.69, 182.0),
        model = 'a_m_o_acult_02',
        blip = {
            enabled = true,
            sprite = 480,
            color = 2,
            scale = 0.7,
            label = 'Beggar Boss'
        }
    },
}

Begging Styles

Each style has different rewards and police risk:
StyleReward MultiplierPolice RiskUnlock Level
Sitting0.5x0.5x1
Box1.0x0.8x1
Guitar1.5x1.0x1
Sign1.2x0.9x2
Accordion1.8x1.2x5
Veteran2.0x0.3x7

Zone Configuration

Config.Zones = {
    rich = {
        multiplier = 2.0,
        policeMultiplier = 2.0,
        areas = {
            { center = vector3(-1600.0, -400.0, 40.0), radius = 300.0, name = 'Rockford Hills' },
        }
    },
    tourist = {
        multiplier = 1.5,
        policeMultiplier = 1.5,
        areas = {
            { center = vector3(-1650.0, -1000.0, 10.0), radius = 200.0, name = 'Del Perro Beach' },
        }
    },
    poor = {
        multiplier = 0.7,
        policeMultiplier = 0.5,
        areas = {
            { center = vector3(100.0, -1900.0, 20.0), radius = 300.0, name = 'Davis' },
        }
    },
}

Police System

Config.Police = {
    enabled = true,
    baseAlertChance = 15,        -- Base % chance of police alert
    heatEnabled = true,          -- Heat increases risk over time
    heatIncreasePerMinute = 5,
    heatDecayPerMinute = 2,
    maxHeat = 100,
    zoneCooldown = 300,          -- Seconds before returning to zone
    strikePenalties = {
        [1] = { type = 'fine', amount = 100 },
        [2] = { type = 'fine', amount = 250 },
        [3] = { type = 'jail', time = 5 },
    },
}

Progression System

Config.Progression = {
    enabled = true,
    xpPerDonation = 10,
    xpBonusMultiplier = 2,  -- Big tips give double XP
    levels = {
        { level = 1, xpRequired = 0, title = 'Newcomer' },
        { level = 2, xpRequired = 100, title = 'Street Rookie' },
        { level = 3, xpRequired = 300, title = 'Beggar' },
        -- ... up to level 10
        { level = 10, xpRequired = 5500, title = 'Homeless God' },
    },
}

Dispatch System

Config.Dispatch = {
    system = 'ps-dispatch', -- See options below
    code = '10-15',
    priority = 3,
}
Available dispatch systems:
  • custom - Define your own function
  • ps-dispatch - Project Sloth Dispatch
  • cd_dispatch - Codesign Dispatch
  • qs-dispatch - Quasar Dispatch
  • core_dispatch - Core Dispatch
  • rcore_dispatch - RCore Dispatch
  • origen_police - Origen Police
  • none - Disable police alerts

Custom Functions

For custom integrations, edit the files in the custom/ folder:

Client (custom/client.lua)

-- Custom notification system
Custom.Notify = function(message, type, duration)
    exports['okokNotify']:Alert('Beggar', message, duration, type)
end

-- Custom progress bar
Custom.ProgressBar = function(duration, label, dict, anim, flags, canCancel)
    return exports['progressBars']:startUI(duration, label)
end

-- Custom help text
Custom.ShowHelpText = function(text)
    exports['okokTextUI']:Open(text, 'darkblue', 'left')
end

Server (custom/server.lua)

-- Custom money system
Custom.AddMoney = function(source, amount, moneyType)
    return exports['my_banking']:AddMoney(source, moneyType, amount)
end

-- Custom inventory
Custom.AddItem = function(source, item, count)
    return exports['my_inventory']:AddItem(source, item, count)
end

-- Custom jail integration
Custom.JailPlayer = function(source, time)
    exports['my_jail']:JailPlayer(source, time, 'Illegal begging')
end

Exports

Client Exports

-- Check if player is currently begging
exports['rarx_beggar']:IsBegging()

-- Start begging with specific style
exports['rarx_beggar']:StartBegging('guitar')

-- Stop begging
exports['rarx_beggar']:StopBegging()

-- Open style selection menu
exports['rarx_beggar']:OpenBeggingStyleMenu()

Server Exports

-- Add XP to player
exports['rarx_beggar']:AddPlayerXp(source, 100)

-- Get player data
exports['rarx_beggar']:GetCachedPlayerData(identifier)

-- Update mission progress
exports['rarx_beggar']:UpdateMissionProgress(source, 'donations', 1)

-- Check achievement
exports['rarx_beggar']:CheckAchievement(source, 'donations', 50)

Localization

Set language in server.cfg:
setr rarx-lang "es"
Available languages:
  • en - English
  • es - Spanish
To add a new language, create a file in translates/ folder (e.g., fr.lua) copying the structure from en.lua.

Troubleshooting

Verify the coordinates in Config.BossLocations and ensure no other scripts are deleting peds in that area.
Make sure you added the items to your inventory system and the item names match exactly.
Verify your framework is detected correctly. Check server console for framework detection message.
Check database connection and verify the rarx_beggar_players table exists.
Ensure Config.Police.enabled is true and your dispatch system is configured correctly.