
Rarx Beggar
Rarx Beggar
Advanced begging system with progression, achievements and zones
- Qbox
- QBCore
- ESX
rarx_beggar

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#
Auto-detection for QBCore, QBox, and ESX frameworks
Guitar, Box, Sign, Sitting, Accordion, and Veteran styles
10 levels with unlockable perks and XP rewards
Rich, Tourist, and Poor zones with different rewards/risks
5 daily challenges with money and XP rewards
8 unlockable achievements with special rewards
Heat system, strikes, fines, and jail integration
Weather and time of day affect earnings
Requirements#
| Requirement | Type |
|---|---|
| oxmysql | Required |
| QBCore / QBox / ESX | Required (auto-detected) |
| ox_target / qb-target | Optional |
Supported Systems#
QBCore, QBox (qbx_core), ESX
ox_inventory, origen_inventory, qs-inventory, framework default
ox_target, qb-target, or none (keybind)
ps-dispatch, cd_dispatch, qs-dispatch, core_dispatch, rcore_dispatch, origen_police
Installation#
Download & Extract
Download the resource and extract to your resources folder.
Add Items
Add the begging items to your inventory system (see Items section below).
Add to server.cfg
ensure rarx_beggarSet Language
setr rarx-lang "en"Configure
Edit
shared/config.luato customize settings.
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'},Add to ox_inventory/data/items.lua:
['begging_box'] = {
label = 'Cardboard Box',
weight = 500,
stack = false,
close = true,
},
['begging_guitar'] = {
label = 'Guitar',
weight = 2000,
stack = false,
close = true,
},
['begging_sign'] = {
label = 'Cardboard Sign',
weight = 200,
stack = false,
close = true,
},
['begging_accordion'] = {
label = 'Accordion',
weight = 3000,
stack = false,
close = true,
},
['begging_veteran_hat'] = {
label = 'Veteran Hat',
weight = 100,
stack = false,
close = true,
},Run this SQL query:
INSERT INTO `items` (`name`, `label`, `weight`) VALUES
('begging_box', 'Cardboard Box', 500),
('begging_guitar', 'Guitar', 2000),
('begging_sign', 'Cardboard Sign', 200),
('begging_accordion', 'Accordion', 3000),
('begging_veteran_hat', 'Veteran Hat', 100);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:
| Style | Reward Multiplier | Police Risk | Unlock Level |
|---|---|---|---|
| Sitting | 0.5x | 0.5x | 1 |
| Box | 1.0x | 0.8x | 1 |
| Guitar | 1.5x | 1.0x | 1 |
| Sign | 1.2x | 0.9x | 2 |
| Accordion | 1.8x | 1.2x | 5 |
| Veteran | 2.0x | 0.3x | 7 |
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 functionps-dispatch- Project Sloth Dispatchcd_dispatch- Codesign Dispatchqs-dispatch- Quasar Dispatchcore_dispatch- Core Dispatchrcore_dispatch- RCore Dispatchorigen_police- Origen Policenone- 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')
endServer (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')
endExports#
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- Englishes- Spanish
To add a new language, create a file in translates/ folder (e.g., fr.lua) copying the structure from en.lua.
Troubleshooting#
Boss NPC not spawning
Verify the coordinates in Config.BossLocations and ensure no other scripts are deleting peds in that area.
Items not working
Make sure you added the items to your inventory system and the item names match exactly.
Money not being added
Verify your framework is detected correctly. Check server console for framework detection message.
Daily missions not resetting
Check database connection and verify the rarx_beggar_players table exists.
Police alerts not triggering
Ensure Config.Police.enabled is true and your dispatch system is configured correctly.
