r_armwrestle Configuration
r_armwrestle config: tables, match rules, local opponents and difficulties, bets and keys.
All settings live in shared/config.lua. Restart the resource after changing it.
General
R.Locale = 'en' -- locales/<name>.json
R.Framework = 'auto' -- auto | esx | qb | qbox | none, bets only
R.InvertSweep = false
R.Tutorial = 5 -- intro hints for the first N matches
R.CrowdStream = true -- crowd murmur during the struggle| Option | Default | What it does |
|---|---|---|
R.Locale | 'en' | Language file in locales/. |
R.Framework | 'auto' | Only used for bets. 'none' turns bets off. |
R.InvertSweep | false | Leave false. Only change it if the arms move the wrong way (see Common Issues). |
R.Tutorial | 5 | How many matches show the how-to hints. 0 turns them off. |
R.CrowdStream | true | Crowd sound during a match. |
Tables
Arm wrestling tables already on your map work on their own. R.Tables is only for places that
don't have one.
R.TableModel = 'prop_arm_wrestle_01'
R.StreamDistance = 80.0
R.SeatDistance = 1.4
R.SpectateDistance = 25.0
R.TableModels = { 'prop_arm_wrestle_01', 'bkr_prop_clubhouse_arm_wrestle_01a', 'bkr_prop_clubhouse_arm_wrestle_02a' }
R.DetectRadius = 6.0
R.DetectExpire = 300
R.MaxDetected = 64
R.Tables = {}| Option | Default | What it does |
|---|---|---|
R.TableModel | 'prop_arm_wrestle_01' | Table prop used for your own spots. |
R.StreamDistance | 80.0 | Distance at which your own tables appear for players. |
R.SeatDistance | 1.4 | How close to a seat the E prompt shows. |
R.SpectateDistance | 25.0 | Players this close can watch a match. |
R.TableModels | 3 models | Table props found on the map. Add the model of a custom table prop here. |
R.DetectRadius | 6.0 | How close a player has to be for a map table to be found. |
R.DetectExpire | 300 | Seconds an unused map table is kept before it's found again. |
R.MaxDetected | 64 | Max map tables at once. 0 turns map tables off. |
Your own tables
R.Tables = {
{ coords = vec3(-1172.6, -1572.2, 4.66), heading = 35.0 },
{ coords = vec3(1990.4, 3047.1, 46.21), heading = 240.0, model = 'bkr_prop_clubhouse_arm_wrestle_02a' }
}coords is the base of the table on the ground. model is optional. The coordinates above are
examples, use your own.
Physics
R.Physics = {
Tick = 0.425,
Gain = 0.031,
Lead = 0.75,
LeadDamp = 0.85,
Decay = 0.1,
Window = 0.35,
MaxForce = 8.5,
Strength = 1.0,
IdleWindow = 150
}These are GTA Online's own values and you don't need to touch them. To make rounds shorter, raise
Gain a little. Strength multiplies everyone's push, players and locals.
Rules
R.Rules = {
IntroTimeout = 15,
GripHold = 2.0,
MaxRoundTime = 90,
RematchTime = 45,
LeaveDistance = 4.0,
Cooldown = 3,
WaitTimeout = 180
}| Option | Default | What it does |
|---|---|---|
IntroTimeout | 15 | Max seconds the intro waits for both players to load. |
GripHold | 2.0 | Seconds in the grip before 3-2-1-GO. |
MaxRoundTime | 90 | After this the leader wins, or it's a draw. |
RematchTime | 45 | Seconds to press Rematch. |
LeaveDistance | 4.0 | Walking this far from the table counts as quitting. |
Cooldown | 3 | Seconds before a player can sit again. |
WaitTimeout | 180 | Seconds a player can wait alone. 0 = forever. |
Dying, disconnecting or walking away counts as a loss.
Local opponents
R.Npc = {
Enabled = true,
Default = 'medium', -- easy | medium | hard
Models = { 'a_m_y_musclbeac_01', 'a_m_m_hillbilly_01', 'a_m_m_salton_02', 'a_m_y_hippy_01', 'g_m_y_lost_01', 'a_m_m_farmer_01', 's_m_y_dockwork_01', 'a_m_y_beach_01' },
RematchDelay = 2.5,
Difficulty = {
easy = { base = 2.8, var = 1.0, surge = { chance = 0.08, mult = 1.4, dur = 1.0 }, fatigue = 0.03, reaction = { 0.6, 1.2 } },
medium = { base = 4.0, var = 1.4, surge = { chance = 0.12, mult = 1.5, dur = 1.2 }, fatigue = 0.025, reaction = { 0.4, 0.9 } },
hard = { base = 5.4, var = 1.6, surge = { chance = 0.15, mult = 1.6, dur = 1.4 }, fatigue = 0.02, reaction = { 0.25, 0.6 } }
}
}| Option | Default | What it does |
|---|---|---|
Enabled | true | false = player vs player only. |
Default | 'medium' | Difficulty selected when the player sits down. |
Models | 8 peds | A random one walks over. |
RematchDelay | 2.5 | Seconds before the local accepts a rematch. |
To make a level harder, raise its base (a fast player is about 7). reaction is how many
seconds after GO the local starts pushing.
Bets
R.Bets = {
Enabled = false,
Account = 'cash', -- 'cash' | 'bank'
Min = 100,
Max = 10000,
Chips = { 100, 500, 1000, 5000 },
Step = 500,
Currency = '$',
HouseCut = 0 -- percent of the pot
}| Option | Default | What it does |
|---|---|---|
Enabled | false | Turns on bets between players. Needs ESX, QBCore or QBox. |
Account | 'cash' | Where stakes are taken from and paid to. |
Min / Max | 100 / 10000 | Stake limits. |
Chips / Step | Quick amounts in the stake picker. | |
Currency | '$' | Shown before amounts. |
HouseCut | 0 | Percent of the pot that is kept. |
The seated player presses H to set a stake, and whoever sits down has to match it. The winner takes the pot. Draws and failed starts are refunded. Bets are never used against a local.
Keys
R.Keys = {
Interact = 51, -- E
QuitPad = 235,
Npc = 47, -- G
Stake = 74, -- H
StakeCustom = 203, -- space
DiffPrev = 174, -- arrow left
DiffNext = 175 -- arrow right
}These are GTA control IDs, so they work on keyboard and controller. Pushing is always A and D, or a stick.
Custom hooks
Who can sit, who can bet, downed players and notifications are set in client/cl_custom.lua and
server/sv_custom.lua. See Exports & Hooks.