From 3f20d0f9182aab06344b255f05a166d84e3d2da6 Mon Sep 17 00:00:00 2001 From: Andyyy7666 <86536434+Andyyy7666@users.noreply.github.com> Date: Wed, 13 Aug 2025 16:57:35 +0200 Subject: [PATCH] feat: plate pattern --- server/main.lua | 1 + server/vehicle.lua | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/server/main.lua b/server/main.lua index 7444517..74b1925 100644 --- a/server/main.lua +++ b/server/main.lua @@ -28,6 +28,7 @@ Config = { multiCharacter = false, compatibility = json.decode(GetConvar("core:compatibility", "[]")), sv_lan = GetConvar("sv_lan", "false") == "true", + platePattern = GetConvar("core:platePattern", "11AAA111") } SetConvarServerInfo("Discord", Config.discordInvite) diff --git a/server/vehicle.lua b/server/vehicle.lua index 42c6dae..8b9bb3d 100644 --- a/server/vehicle.lua +++ b/server/vehicle.lua @@ -31,9 +31,40 @@ end local function generatePlate() local plate = {} - for i=1, 8 do - plate[i] = math.random(0, 1) == 1 and string.char(math.random(65, 90)) or math.random(0, 9) + local i = 1 + local p = 1 + + -- ensure pattern exists and pad to 8 chars + local pattern = Config.platePattern + if #pattern < 8 then + pattern = pattern .. string.rep(" ", 8 - #pattern) end + + while i <= 8 do + local char = pattern:sub(p, p) + + if char == "^" then + -- literal next character + p = p + 1 + plate[i] = pattern:sub(p, p) + elseif char == "1" then + plate[i] = tostring(math.random(0, 9)) + elseif char == "A" then + plate[i] = string.char(math.random(65, 90)) -- A–Z + elseif char == "." then + if math.random(0, 1) == 0 then + plate[i] = tostring(math.random(0, 9)) + else + plate[i] = string.char(math.random(65, 90)) + end + else + plate[i] = char + end + + i = i + 1 + p = p + 1 + end + return table.concat(plate) end