Safes War
Families queue up from the laptop and are matched against another family. The attacking family has to reach the enemy safe and hack it before time runs out.
How a match works
- A family member with
manage_matchmaking_queuejoins the queue. This costs 10 coins, which are refunded if no match is found. - Matchmaking looks for an opponent for up to 5 minutes.
- When a match is found, a zone blip appears around the defending safe (175 m).
- The safe is locked for 5 minutes, then the hack window opens.
- An attacker with a Hacking Device hacks the safe (arrow minigame, 2 rounds of 6 arrows).
- After a successful hack, the raid phase lasts 5 minutes.
- The whole fight lasts up to 15 minutes. Both families then get a 10 minute cooldown.
Settings
Config.safe_match = {
joinCoinsCost = 10,
matchmakingWaitMs = 5 * 60 * 1000,
fightDurationMs = 15 * 60 * 1000,
hackDistance = 2.0,
cooldownMs = {
winner = 10 * 60 * 1000,
loser = 10 * 60 * 1000,
},
safeHack = {
lockMs = 5 * 60 * 1000,
postHackPhaseMs = 5 * 60 * 1000,
requiredItem = 'hacking_device',
consumeRequiredItem = false,
minigame = {
arrows = 6,
rounds = 2,
timeLimit = 15,
},
},
blip = { radius = 175.0, color = 1, alpha = 90 },
}Rewards & results
The winner receives 2–3 random items from this list:
| Item | Amount | Chance |
|---|---|---|
pistol_ammo | 30–60 | 35% |
weapon_heavypistol | 1–2 | 10% |
weapon_pistol_mk2 | 1–2 | 10% |
black_money | 400–1000 | 60% |
token_global | 1 | 25% |
armor | 3–5 | 50% |
reward = {
items = {
{ item_name = "pistol_ammo", min = 30, max = 60, luckChance = 35 },
-- ...
},
amount = { min = 2, max = 3 }, -- how many different items
},
result = {
safeHealth = { winner = 5, loser = -15 },
xp = { winner = 30, loser = -10 },
coins = { winner = 25, loser = 0 },
},WARNING
Every reward item must exist in your inventory, or the reward will fail.
Robbery during a match
Players can rob a downed enemy inside the match zone. The target's cash is transferred and their inventory opens for the robber.
Config.safe_match.robbery = {
enabled = true,
maxDistance = 2.5,
allowFriendly = false,
transferCash = true,
cashAccount = 'cash',
}The server checks every robbery: both players in the match and the zone, opposite families, the target downed, and the robber alive.
Elimination
A player who reaches final death inside the zone is out for the rest of the match. Last stand doesn't count, so teammates can still revive them.
An eliminated player can't hack the safe, rob players, open the family safe or earn MVP kills, and sees an ELIMINATED HUD until the match ends.
Config.safe_match.elimination = {
enabled = true,
onlyInsideZone = true,
removeFightBlip = true,
blockFamilySafe = true,
enforceZoneLockout = false, -- true = push revived eliminated players out of the zone
}Match HUD
Config.MatchHUD = {
enabled = true,
offsetX = 24,
offsetY = 24,
labels = {
searching = 'MATCH SEARCH',
locked = 'SAFE LOCK',
hacking = 'HACK WINDOW',
raiding = 'SAFE RAID',
cooldown = 'COOLDOWN',
},
}