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_challenges after 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.

SettingDefaultBehaviour
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

SettingDefaultBehaviour
InviteRadius15.0Radius used when finding players who can be invited.
InviteAcceptanceDistance20.0Maximum permitted distance when an invitation is accepted.
LobbyDistance25.0Distance boundary used while participants are in the lobby.
MatchDistance35.0Distance 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

SettingDefaultBehaviour
PlacementMaxDistance7.0Maximum reach offered during layout placement.
PlacementValidationDistance10.0Maximum distance accepted when placement is validated.
CustomLayoutMaxRadius5.0Maximum radius of a custom target layout.
MaxSavedLayouts12Maximum number of layouts that can be saved.
MaxLayoutNameLength24Maximum number of characters in a layout name.
MaxEntryFee10000Highest 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 }
ArrayDefault choices
AllowedTargetCounts5, 8, or 12 targets
AllowedRounds1, 3, or 5 rounds
AllowedTeamSizesTeams 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

ModeUse
"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
}
ActionDefault input
ConfirmE
CancelBackspace
Shoot or attackPrimary attack
Navigate interfaceDirectional frontend inputs
Send invitation againR

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:

  1. nativeEmote
  2. clientEvent
  3. clientCommand

Because the first configured method takes priority, leave the unused methods as nil.

SettingBehaviour
displayNameLocalized name shown for the punishment.
durationMsDuration of the action in milliseconds.
nativeEmoteNative RedM emote kit name.
clientEventCustom client event, such as my_emotes:client:playPenalty.
clientCommandClient 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

SettingDefaultBehaviour
enabledtrueEnables the persistent leaderboard system.
command"challengeleaderboard"Opens the leaderboard through a command.
seasonDays30Length of a leaderboard season in days.
winPoints10Challenge Points granted for a win.
lossPoints5Challenge Points granted for a loss.
dailyScoredMatches10Number of matches per player that can contribute points each day.
visibleEntries50Maximum 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
    }
}
  • heading rotates the board.
  • Optional cameraSide = 1 flips the side used when viewing it.
  • Optional showBlip = false hides 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.