Config
Lua
Config = {}
Config.AutoCreateTables = true -- Set to false after first run to prevent accidental data loss. Will create missing tables on resource start if enabled.
Config.Webhooks = {
LockerCreate = "YOUR_WEBHOOK_URL_HERE",
LockerOpen = "YOUR_WEBHOOK_URL_HERE",
ShareAccess = "YOUR_WEBHOOK_URL_HERE",
LockerExpand = "YOUR_WEBHOOK_URL_HERE",
LockerDelete = "YOUR_WEBHOOK_URL_HERE",
LockerRenew = "YOUR_WEBHOOK_URL_HERE",
LockerExpired = "YOUR_WEBHOOK_URL_HERE",
-- Admin webhooks
AdminDelete = "YOUR_WEBHOOK_URL_HERE",
AdminOpen = "YOUR_WEBHOOK_URL_HERE",
AdminAccess = "YOUR_WEBHOOK_URL_HERE",
}
Config.SendLockerOpenWebhook = true -- Set to false to disable webhook on locker open. Make false if you have a lot of locker opens and want to reduce webhook spam.
-- ─────────────────────────────────────────────────
-- Main settings
-- ─────────────────────────────────────────────────
Config.StaffCommand = 'sblockersadmin' -- Command to open locker staff menu.
Config.StaffPermissions = { 'god', 'admin' } -- permissions required to use staff command, if enabled
Config.NotifyType = 'sbnotify' -- 'qb' | 'okok' | 'sbnotify'
Config.TargetSystem = 'qb-target' -- 'qb-target' | 'ox_target' |
Config.Inventory = 'qb-inventory' -- 'qb-inventory' | 'ps-inventory' | 'codem-inventory'
Config.PaymentType = 'cash' -- 'cash' | 'bank'
Config.ContractDays = 30 -- Number of days for locker rental contract
Config.ReminderDaysBefore = 5 -- Number of days before locker expiration to send reminder notification
Config.PhoneSystem = 'qb-phone' -- 'qb-phone' | 'lb-phone' | 'none'
Config.PhoneEmailSender = 'sblockers@lockers.com' -- Email address shown as sender in phone notifications. Adjust to your liking.
Config.TargetDistance = 2.0
Config.ShareDistance = 5.0
-- ─────────────────────────────────────────────────
-- Locker settings
-- ─────────────────────────────────────────────────
Config.Locker = {
BaseSlots = 50,
BaseWeight = 10000000, -- grams
SlotStep = 50, -- Ammount of slots per expand
WeightStep = 1000000, -- grams per expand step
MaxSlots = 500,
MaxWeight = 50000000, -- grams (500 kg)
PurchasePrice = 5000, -- flat purchase cost
ExpandPrice = 3500, -- flat cost per expand step
RenewalPrice = 1500, -- flat renewal cost per contract period
}
Config.VendorPed = {
model = 'mp_m_waremech_01',
scenario = 'WORLD_HUMAN_CLIPBOARD',
}
Config.Vendors = {
{ coords = vector4(-33.864502, -1252.436523, 29.288755, 3.900572), blip = true },
{ coords = vector4(69.144783, 127.495018, 79.210983, 160.491959), blip = true },
{ coords = vector4(964.620483, -1031.194214, 40.838928, 274.389008), blip = true },
{ coords = vector4(42.037392, 6457.065430, 31.425289, 228.563156), blip = true },
}
Config.Locations = {
{
id = 'underpass_garage',
name = 'Underpass Storage',
locker = vector3(-44.244, -1242.096, 29.669),
blip = { sprite = 357, color = 5, scale = 0.75, label = 'Storage Lockers' },
},
{
id = 'gopostal_storage',
name = 'Go Postal Storage',
locker = vector3(72.878, 127.619, 81.038),
blip = { sprite = 357, color = 5, scale = 0.75, label = 'Storage Lockers' },
},
{
id = 'vespucciblvd_storage',
name = 'Vespucci Blvd Storage',
locker = vector3(962.682, -1025.411, 41.392),
blip = { sprite = 357, color = 5, scale = 0.75, label = 'Storage Lockers' },
},
{
id = 'paleto_storage',
name = 'Paleto Bay Storage',
locker = vector3(37.680, 6454.661, 31.945),
blip = { sprite = 357, color = 5, scale = 0.75, label = 'Storage Lockers' },
},
}
-- ─────────────────────────────────────────────────
-- DO NOT TOUCH BELOW UNLESS YOU KNOW WHAT YOU'RE DOING - YOU KNOW WHAT, JUST DON'T TOUCH IT
-- ─────────────────────────────────────────────────
function Config.GenerateStorageId()
local chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
local id = ''
for i = 1, 16 do
local idx = math.random(1, #chars)
id = id .. chars:sub(idx, idx)
end
return 'sbcs_' .. id
end
function Config.CalcExpandCost(currentSlots, currentWeight)
local cfg = Config.Locker
local newSlots = math.min(currentSlots + cfg.SlotStep, cfg.MaxSlots)
local newWeight = math.min(currentWeight + cfg.WeightStep, cfg.MaxWeight)
return cfg.ExpandPrice, newSlots, newWeight
end
Last updated 2026-11-08
