RX Challenges Configuration
RX Challenges keeps its shared behaviour in config.lua. The limits in this file affect invitations, match setup, arena placement, economy handling, and leaderboard progression.
Restart
rx_challengesafter editing the configuration so the server and connected clients use the same values.
General settings
Choose the active language, fallback translation, and command used to open the challenge interface.
| Setting | Default | Behaviour |
|---|---|---|
Locale | "en" | Primary locale loaded by the resource. |
FallbackLocale | "en" | Used when a translation is missing from the primary locale. |
Command | "challenge" | Player command that opens RX Challenges. |
Config = Config or {}
Config.Locale = 'en'
Config.FallbackLocale = 'en'
Config.Command = 'challenge' Keep the fallback locale complete even when the server uses another language. This prevents missing translation keys from leaving interface text empty.
Distance and abuse limits
These values keep invitations, active lobbies, matches, and custom placement within controlled distances.
Player interaction limits
| Setting | Default | Behaviour |
|---|---|---|
InviteRadius | 15.0 | Radius used when finding players who can be invited. |
InviteAcceptanceDistance | 20.0 | Maximum permitted distance when an invitation is accepted. |
LobbyDistance | 25.0 | Distance boundary used while participants are in the lobby. |
MatchDistance | 35.0 | Distance boundary used during an active match. |
Config.InviteRadius = 15.0
Config.InviteAcceptanceDistance = 20.0
Config.LobbyDistance = 25.0
Config.MatchDistance = 35.0 InviteAcceptanceDistance is intentionally slightly larger than InviteRadius, giving an invited player some room to move before accepting.
Placement and saved-layout limits
| Setting | Default | Behaviour |
|---|---|---|
PlacementMaxDistance | 7.0 | Maximum reach offered during layout placement. |
PlacementValidationDistance | 10.0 | Maximum distance accepted when placement is validated. |
CustomLayoutMaxRadius | 5.0 | Maximum radius of a custom target layout. |
MaxSavedLayouts | 12 | Maximum number of layouts that can be saved. |
MaxLayoutNameLength | 24 | Maximum number of characters in a layout name. |
MaxEntryFee | 10000 | Highest entry fee that match setup may accept. |
Config.PlacementMaxDistance = 7.0
Config.PlacementValidationDistance = 10.0
Config.MaxEntryFee = 10000
Config.CustomLayoutMaxRadius = 5.0
Config.MaxSavedLayouts = 12
Config.MaxLayoutNameLength = 24 The validation distance is a ceiling, not extra placement reach. Keep it close to PlacementMaxDistance so normal network movement is tolerated without allowing distant layouts.
Match setup options
Only values listed in these arrays are offered during match setup.
Config.AllowedTargetCounts = { 5, 8, 12 }
Config.AllowedRounds = { 1, 3, 5 }
Config.AllowedTeamSizes = { 1, 2, 3, 4 } | Array | Default choices |
|---|---|
AllowedTargetCounts | 5, 8, or 12 targets |
AllowedRounds | 1, 3, or 5 rounds |
AllowedTeamSizes | Teams of 1 to 4 players |
Add or remove values to shape the choices available to hosts. Keep the lists ordered from the shortest or smallest option to the longest.
Economy
The economy adapter connects entry fees and payouts to the server framework.
Config.Economy = {
adapter = 'auto', -- auto, rsg, vorp, external or disabled
account = 'cash',
rsgResource = 'rsg-core',
vorpResource = 'vorp_core',
vorpInventoryResource = 'vorp_inventory'
} Adapter modes
| Mode | Use |
|---|---|
"auto" | Detects a supported economy adapter from the configured framework resources. |
"rsg" | Forces the built-in RSG economy adapter. |
"vorp" | Forces the built-in VORP economy adapter. |
"external" | Leaves economy handling to a custom external integration. |
"disabled" | Disables the built-in economy integration. |
account selects the money account used by the active adapter. If your framework resources use different names, update rsgResource, vorpResource, and vorpInventoryResource to match them exactly.
Controls
RX Challenges uses RedM input hashes. Change these only when the defaults conflict with another resource.
Config.Controls = {
confirm = 0xCEFD9220, -- E / INPUT_CONTEXT_X
cancel = 0x156F7119, -- Backspace / INPUT_FRONTEND_CANCEL
attack = 0x07CE1E61, -- INPUT_ATTACK
uiLeft = 0xA65EBAB4, -- INPUT_FRONTEND_LEFT
uiRight = 0xDEB34313, -- INPUT_FRONTEND_RIGHT
uiUp = 0x6319DB71, -- INPUT_FRONTEND_UP
uiDown = 0x05CA7C52, -- INPUT_FRONTEND_DOWN
reinvite = 0xE30CD707 -- R / INPUT_RELOAD
} | Action | Default input |
|---|---|
| Confirm | E |
| Cancel | Backspace |
| Shoot or attack | Primary attack |
| Navigate interface | Directional frontend inputs |
| Send invitation again | R |
Use valid RedM input hashes and test changes alongside targeting, inventory, and interaction resources that may listen for the same controls.
Custom punishment
The optional punishment action can play after the relevant challenge outcome. Configure only one action method.
Config.CustomEmote = {
displayName = {
en = 'Point & Laugh',
tr = 'İşaret Et ve Gül'
},
durationMs = 5000,
nativeEmote = 'KIT_EMOTE_REACTION_POINTLAUGH_1',
clientEvent = nil,
clientCommand = nil
} The resource checks action methods in this order:
nativeEmoteclientEventclientCommand
Because the first configured method takes priority, leave the unused methods as nil.
| Setting | Behaviour |
|---|---|
displayName | Localized name shown for the punishment. |
durationMs | Duration of the action in milliseconds. |
nativeEmote | Native RedM emote kit name. |
clientEvent | Custom client event, such as my_emotes:client:playPenalty. |
clientCommand | Client command, such as e laugh. |
Persistent leaderboard
The leaderboard stores Challenge Points and displays ranked players on fixed boards in the world.
Config.Leaderboard = {
enabled = true,
command = 'challengeleaderboard',
blip = {
enabled = true,
sprite = 1243830185, -- Poker
scale = 0.2
},
seasonDays = 30,
winPoints = 10,
lossPoints = 5,
dailyScoredMatches = 10,
visibleEntries = 50,
boards = {
{
x = -817.94,
y = -1345.70,
z = 43.61,
heading = -90.00
}
}
} Progression
| Setting | Default | Behaviour |
|---|---|---|
enabled | true | Enables the persistent leaderboard system. |
command | "challengeleaderboard" | Opens the leaderboard through a command. |
seasonDays | 30 | Length of a leaderboard season in days. |
winPoints | 10 | Challenge Points granted for a win. |
lossPoints | 5 | Challenge Points granted for a loss. |
dailyScoredMatches | 10 | Number of matches per player that can contribute points each day. |
visibleEntries | 50 | Maximum number of ranked entries shown. |
Blip
blip.enabled controls leaderboard blips globally. sprite is the RedM blip sprite hash and scale controls its displayed size.
blip = {
enabled = true,
sprite = 1243830185,
scale = 0.2
} Board locations
Add more board tables to boards using the same coordinate shape.
boards = {
{
x = -817.94,
y = -1345.70,
z = 43.61,
heading = -90.00
},
{
x = 0.0,
y = 0.0,
z = 0.0,
heading = 0.0,
cameraSide = 1,
showBlip = false
}
} headingrotates the board.- Optional
cameraSide = 1flips the side used when viewing it. - Optional
showBlip = falsehides the blip for that board without disabling blips everywhere else.
Place each board on stable ground and verify both the viewing direction and camera side in game before publishing the coordinates.