2108 lines
103 KiB
Lua
2108 lines
103 KiB
Lua
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Quasar Store · Configuration Guidelines
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- This configuration file defines all adjustable parameters for the script.
|
|||
|
|
-- Comments are standardized to help you identify which sections you can safely edit.
|
|||
|
|
--
|
|||
|
|
-- • [EDIT] – Safe for users to modify. Adjust these values as needed.
|
|||
|
|
-- • [INFO] – Informational note describing what the variable or block does.
|
|||
|
|
-- • [ADV] – Advanced settings. Change only if you understand the logic behind it.
|
|||
|
|
-- • [CORE] – Core functionality. Do not modify unless you are a developer.
|
|||
|
|
-- • [AUTO] – Automatically handled by the system. Never edit manually.
|
|||
|
|
--
|
|||
|
|
-- Always make a backup before editing configuration files.
|
|||
|
|
-- Incorrect changes in [CORE] or [AUTO] sections can break the resource.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
|
|||
|
|
PHONE_PATH = 'https://cfx-nui-qs-smartphone-pro/' -- [CORE] Absolute NUI path to phone assets (HTML/JS/CSS). Do not modify.
|
|||
|
|
|
|||
|
|
Config = Config or {} -- [CORE] Main configuration table (preserved across imports).
|
|||
|
|
Locales = Locales or {} -- [CORE] Multilanguage container; populated by the selected locale file.
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Language Selection [EDIT]
|
|||
|
|
-- [INFO] Pick the primary language loaded from locales/*. Add your own file if missing.
|
|||
|
|
-- [INFO] Available: 'ar','bg','ca','cs','da','de','el','en','es','fr','he','hu','it','ja','ko',
|
|||
|
|
-- 'nl','no','pl','pt','ro','ru','sl','sv','tr','zh-CN','zh-TW'
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.Language = 'ro' -- [EDIT] Two-letter (or zh-*) code of the language to load.
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Fetch Limits [EDIT]
|
|||
|
|
-- [INFO] Max items requested from server (posts, messages…). Higher = more SQL load.
|
|||
|
|
-- [INFO] UI uses virtualization for Instagram/Messages; others will be added later.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.FetchLimit = 200 -- [EDIT] Safe range: 100–500 depending on DB performance.
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Framework & Dependency Autodetection [AUTO]
|
|||
|
|
-- [INFO] Detects running framework/billing/inventory/housing by resource name.
|
|||
|
|
-- [ADV] If you’ve renamed resources, add your mapping below instead of editing core code.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
|
|||
|
|
---[CORE] Generic detector: returns mapped alias of the first dependency found.
|
|||
|
|
---@param data table<string,string> -- resourceName -> alias
|
|||
|
|
---@return string|false
|
|||
|
|
local function dependencyCheck(data)
|
|||
|
|
for k, v in pairs(data) do
|
|||
|
|
if GetResourceState(k) == 'started' then
|
|||
|
|
return v
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
return false
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- Frameworks -----------------------------------------------------------------
|
|||
|
|
local frameworks = { -- [CORE] resourceName -> internal alias
|
|||
|
|
['es_extended'] = 'esx',
|
|||
|
|
['qbx_core'] = 'qb',
|
|||
|
|
['qb-core'] = 'qb',
|
|||
|
|
['l2s-core'] = 'qb'
|
|||
|
|
}
|
|||
|
|
Config.Framework = dependencyCheck(frameworks) or 'standalone' -- [AUTO]
|
|||
|
|
|
|||
|
|
-- Billing Systems -------------------------------------------------------------
|
|||
|
|
local billing = { -- [CORE]
|
|||
|
|
['qs-billing'] = 'qs',
|
|||
|
|
['okokBilling'] = 'okok',
|
|||
|
|
['esx_billing'] = 'esx_billing',
|
|||
|
|
['codem-billingv2'] = 'codemv2',
|
|||
|
|
['RxBilling'] = 'RxBilling'
|
|||
|
|
}
|
|||
|
|
Config.Billing = dependencyCheck(billing) or 'standalone' -- [AUTO]
|
|||
|
|
|
|||
|
|
-- Inventories (metadata support) ---------------------------------------------
|
|||
|
|
-- [INFO] Non-metadata inventories force UniquePhone off (item won’t carry phone data).
|
|||
|
|
local inventories = { -- [CORE]
|
|||
|
|
['qs-inventory'] = 'qs-inventory',
|
|||
|
|
['qb-inventory'] = 'qb-inventory',
|
|||
|
|
['l2s-inventory'] = 'qb-inventory',
|
|||
|
|
['origen_inventory'] = 'origen_inventory',
|
|||
|
|
['ps-inventory'] = 'ps-inventory',
|
|||
|
|
['ox_inventory'] = 'ox_inventory',
|
|||
|
|
['core_inventory'] = 'core_inventory',
|
|||
|
|
['codem-inventory'] = 'codem-inventory',
|
|||
|
|
['tgiann-inventory'] = 'tgiann-inventory',
|
|||
|
|
['ak47_inventory'] = 'ak47_inventory',
|
|||
|
|
['ak47_qb_inventory'] = 'ak47_qb_inventory'
|
|||
|
|
}
|
|||
|
|
Config.Inventory = dependencyCheck(inventories) or 'default' -- [AUTO]
|
|||
|
|
Config.Inventory = Config.Framework == 'standalone' and 'default' or Config.Inventory -- [AUTO]
|
|||
|
|
Config.UniquePhone = (Config.Inventory ~= 'default') and (Config.Framework ~= 'standalone') -- [AUTO]
|
|||
|
|
Config.SoundAsset = 'demo' -- [EDIT] Interact-sound asset bank. Use string name or false to disable.
|
|||
|
|
|
|||
|
|
-- Housing (integration hints) -------------------------------------------------
|
|||
|
|
local houses = { -- [CORE]
|
|||
|
|
['qs-housing'] = 'qs-housing',
|
|||
|
|
['qb-houses'] = 'qb-houses'
|
|||
|
|
}
|
|||
|
|
Config.Houses = dependencyCheck(houses) or 'default' -- [AUTO]
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Phone Access & Ownership [EDIT]
|
|||
|
|
-- [INFO] Control how the phone is opened and whether only the owner can open via keybind.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.OpenPhoneByPress = true -- [EDIT] true: enable RegisterKeyMapping to open.
|
|||
|
|
Config.KeyOpenOnlyOwnedPhone = true -- [EDIT] true: F1 only opens if you own the item/metadata.
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Default Item Metadata [EDIT]
|
|||
|
|
-- [INFO] Per-phone default flags saved to item metadata (if metadata inventory is used).
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.DefaultMetaData = {
|
|||
|
|
blur_disabled = false, -- [EDIT] true: less visual blur (better for low-end PCs).
|
|||
|
|
lockscreen = true -- [EDIT] true: enable lockscreen by default for new phones.
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Numbering & Mail [EDIT]
|
|||
|
|
-- [INFO] Phone number composition and default mail domain.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.Prefix = '07' -- [EDIT] Number prefix (string).
|
|||
|
|
Config.NumberDigits = 8 -- [EDIT] Digits after prefix (int).
|
|||
|
|
Config.MailDomain = '@qcloud.com' -- [EDIT] Default email domain suffix.
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Auto Backup [EDIT]
|
|||
|
|
-- [INFO] If enabled, backs up phone data automatically when the device is turned off.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.AutoBackup = true -- [EDIT] true | false
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- UI Menus & Targeting [EDIT]
|
|||
|
|
-- [INFO] Choose context menu provider and targeting system usage.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.Menu = 'ox_lib' -- [EDIT] 'ox_lib' | 'nh-context'
|
|||
|
|
Config.UseTarget = false -- [EDIT] true to use ox_target/qb-target when available.
|
|||
|
|
|
|||
|
|
-- Keybind (RegisterKeyMapping) -----------------------------------------------
|
|||
|
|
-- [INFO] Key used to open the phone from keyboard/controller.
|
|||
|
|
Config.OpenPhone = '' -- [EDIT] Disabled - phone is used from inventory action button.
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Voice System Selection [EDIT]
|
|||
|
|
-- [INFO] Pick your in-server voice solution. Custom adapters live in client/server/custom/voice.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.Voice = 'pma' -- [EDIT] Options: 'pma' | 'mumble' | 'toko' | 'salty'
|
|||
|
|
Config.RepeatTimeout = 2000 -- [ADV] Min ms between repeated actions to avoid spam.
|
|||
|
|
Config.CallRepeats = 999999 -- [ADV] Max ring repeats before auto-stop.
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Ringtones [EDIT]
|
|||
|
|
-- [INFO] Default ringtone and list. Add as many as you want (ensure copyright safety).
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
local ringtone_path = PHONE_PATH .. '/html/sounds/ringtones/' -- [CORE]
|
|||
|
|
Config.Ringtones = { -- [EDIT]
|
|||
|
|
defaultRingtone = ringtone_path .. 'default.mp3',
|
|||
|
|
ringtones = {
|
|||
|
|
{ url = ringtone_path .. 'default.mp3', name = 'Pear' },
|
|||
|
|
{ url = ringtone_path .. 'classic.mp3', name = 'Classic' },
|
|||
|
|
{ url = ringtone_path .. 'XianNomi.mp3', name = 'XianNomi' },
|
|||
|
|
{ url = ringtone_path .. 'yourphone.mp3', name = 'Your Phone Linging' },
|
|||
|
|
{ url = ringtone_path .. 'osito.mp3', name = 'Osito Gominola' },
|
|||
|
|
{ url = ringtone_path .. 'faded.mp3', name = 'Faded' },
|
|||
|
|
{ url = ringtone_path .. 'missyou.mp3', name = 'Miss You' },
|
|||
|
|
{ url = ringtone_path .. 'brainrot.mp3', name = 'Brainrot' },
|
|||
|
|
{ url = ringtone_path .. 'lifegoes.mp3', name = 'Life Goes On' }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Audio Backend Integration [AUTO]
|
|||
|
|
-- [INFO] Works out of the box with xsound. If 'mx-surround' is running, 3D panner is used.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.MXSurround = GetResourceState('mx-surround') == 'started' -- [AUTO]
|
|||
|
|
Config.MXSurroundPanner = { -- [ADV] Custom 3D panner (mx-surround only).
|
|||
|
|
panningModel = 'HRTF', -- [INFO] Spatialization model.
|
|||
|
|
refDistance = 1.5, -- [INFO] Start distance for volume falloff.
|
|||
|
|
rolloffFactor = 3.0, -- [INFO] Falloff curve intensity (avoid 0.1).
|
|||
|
|
distanceModel = 'exponential', -- [INFO] 'linear' | 'inverse' | 'exponential'
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Phone Catalog (Styles, Wallpapers, Props) [EDIT]
|
|||
|
|
-- [INFO] Visual CSS presets, default wallpapers and world props for each model.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.Phones = { -- [EDIT] CSS shadow + button gradient per model.
|
|||
|
|
['phone'] = {
|
|||
|
|
phone = 'rgb(57, 51, 77) 0px 0px 0.1em 0.25em, rgb(211, 205, 228) 0px 0px 0px 0.4em',
|
|||
|
|
buttons = 'linear-gradient(90deg, #fff, #2a2a35)'
|
|||
|
|
},
|
|||
|
|
['white_phone'] = {
|
|||
|
|
phone = 'rgb(202, 201, 207) 0px 0px 0.1em 0.25em, rgb(128, 127, 131) 0px 0px 0px 0.4em',
|
|||
|
|
buttons = 'linear-gradient(90deg, #fff, #2a2a35)'
|
|||
|
|
},
|
|||
|
|
['yellow_phone'] = {
|
|||
|
|
phone = 'rgb(202, 199, 166) 0px 0px 0.1em 0.25em, rgb(114, 107, 97) 0px 0px 0px 0.4em',
|
|||
|
|
buttons = 'linear-gradient(90deg, #fff, #2a2a35)'
|
|||
|
|
},
|
|||
|
|
['red_phone'] = {
|
|||
|
|
phone = 'rgb(194, 84, 84) 0px 0px 0.1em 0.25em, rgb(87, 31, 31) 0px 0px 0px 0.4em',
|
|||
|
|
buttons = 'linear-gradient(90deg, #fff, #b14040)'
|
|||
|
|
},
|
|||
|
|
['green_phone'] = {
|
|||
|
|
phone = 'rgb(73, 129, 70) 0px 0px 0.1em 0.25em, rgb(40, 90, 39) 0px 0px 0px 0.4em',
|
|||
|
|
buttons = 'linear-gradient(90deg, #d5f1cc, #57a865)'
|
|||
|
|
},
|
|||
|
|
['black_phone'] = {
|
|||
|
|
phone = 'rgb(82, 82, 82) 0px 0px 0.1em 0.25em, rgb(51, 51, 51) 0px 0px 0px 0.4em',
|
|||
|
|
buttons = 'linear-gradient(90deg, #747474, #424242)'
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Config.PhonesCustomWallpaper = { -- [EDIT] Default wallpaper file per model (html/assets/img/wallpapers).
|
|||
|
|
['phone'] = 'b2.jpg',
|
|||
|
|
['white_phone'] = 'b1.jpg',
|
|||
|
|
['yellow_phone'] = 'b3.jpg',
|
|||
|
|
['red_phone'] = 'b4.jpg',
|
|||
|
|
['green_phone'] = 'b6.jpg',
|
|||
|
|
['black_phone'] = 'b5.jpg',
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Config.PhonesProps = { -- [EDIT] World prop model hashes for each phone.
|
|||
|
|
['phone'] = `ks_qsphone_01`,
|
|||
|
|
['white_phone'] = `ks_qsphone_02`,
|
|||
|
|
['yellow_phone'] = `ks_qsphone_03`,
|
|||
|
|
['red_phone'] = `ks_qsphone_04`,
|
|||
|
|
['green_phone'] = `ks_qsphone_05`,
|
|||
|
|
['black_phone'] = `ks_qsphone_06`,
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Signal Blackout Zones (Low/No Coverage) [EDIT]
|
|||
|
|
-- [INFO] Areas that simulate weak cell signal using ox_lib zones. Inside these
|
|||
|
|
-- zones, specific apps (configured in UI config.js → Config.WorkWithWifiApps)
|
|||
|
|
-- require Wi-Fi or are blocked. Tweak boxes to match your map/MLOs.
|
|||
|
|
-- [ADV] Each entry is a box zone: center coords, XYZ size, rotation (degrees),
|
|||
|
|
-- and a friendly name for debugging/logs. Names need not be unique but it helps.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.Mountains = {
|
|||
|
|
{ -- Chiliad Ridge
|
|||
|
|
coords = vec3(1849.0, 362.0, 113.0), -- [EDIT] Box center
|
|||
|
|
size = vec3(1081.0, 1994.0, 2023.0), -- [EDIT] Box size (X/Y/Z)
|
|||
|
|
rotation = 0.0, -- [EDIT] Heading rotation of the box
|
|||
|
|
name = 'Mount Chiliad 1', -- [EDIT] Debug label
|
|||
|
|
},
|
|||
|
|
{ -- East Chiliad Cliffs
|
|||
|
|
coords = vec3(1954.219727, -1600.285767, 380.278320),
|
|||
|
|
size = vec3(581.0, 1394.0, 2023.0),
|
|||
|
|
rotation = 0.0,
|
|||
|
|
name = 'Mount Chiliad 2',
|
|||
|
|
},
|
|||
|
|
{ -- Raton Canyon Peaks
|
|||
|
|
coords = vec3(747.758240, 1232.281372, 512.465088),
|
|||
|
|
size = vec3(900.0, 900.0, 2023.0),
|
|||
|
|
rotation = 0.0,
|
|||
|
|
name = 'Mount Chiliad 3',
|
|||
|
|
},
|
|||
|
|
{ -- Banham Highlands
|
|||
|
|
coords = vec3(-890.030762, 1260.052734, 490.257080),
|
|||
|
|
size = vec3(1900.0, 700.0, 2023.0),
|
|||
|
|
rotation = 0.0,
|
|||
|
|
name = 'Mount Chiliad 4',
|
|||
|
|
},
|
|||
|
|
{ -- Zancudo Ridge
|
|||
|
|
coords = vec3(-697.740662, 2372.030762, 340.428589),
|
|||
|
|
size = vec3(1500.0, 1520.0, 2023.0),
|
|||
|
|
rotation = 0.0,
|
|||
|
|
name = 'Mount Chiliad 5',
|
|||
|
|
},
|
|||
|
|
{ -- Tongva Wilderness West
|
|||
|
|
coords = vec3(-2601.098877, 1386.118652, 340.428589),
|
|||
|
|
size = vec3(800.0, 2520.0, 2023.0),
|
|||
|
|
rotation = 0.0,
|
|||
|
|
name = 'Mount Chiliad 6',
|
|||
|
|
},
|
|||
|
|
{ -- Procopio Foothills
|
|||
|
|
coords = vec3(-960.778015, 4467.547363, 560.807373),
|
|||
|
|
size = vec3(1800.0, 2300.0, 2023.0),
|
|||
|
|
rotation = 0.0,
|
|||
|
|
name = 'Mount Chiliad 7',
|
|||
|
|
},
|
|||
|
|
{ -- North San Chianski
|
|||
|
|
coords = vec3(758.518677, 5517.468262, 856.268799),
|
|||
|
|
size = vec3(1800.0, 1800.0, 2023.0),
|
|||
|
|
rotation = 0.0,
|
|||
|
|
name = 'Mount Chiliad 8',
|
|||
|
|
},
|
|||
|
|
{ -- Cape Catfish Ridge
|
|||
|
|
coords = vec3(3204.184570, 4860.448242, 504.562744),
|
|||
|
|
size = vec3(700.0, 4000.0, 2023.0),
|
|||
|
|
rotation = 15.0,
|
|||
|
|
name = 'Mount Chiliad 9',
|
|||
|
|
},
|
|||
|
|
{ -- Alamo Sea East
|
|||
|
|
coords = vec3(1560.158203, 3230.914307, 181.113525),
|
|||
|
|
size = vec3(2500.0, 500.0, 2023.0),
|
|||
|
|
rotation = 20.0,
|
|||
|
|
name = 'Mount Chiliad 10',
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Battery & Charging System [EDIT]
|
|||
|
|
-- [INFO] Global battery drain/charge behavior. Each app may consume extra
|
|||
|
|
-- battery while in foreground. Players can recharge via powerbanks
|
|||
|
|
-- (item: 'powerbank') or world charge points. qs-housing chargers supported.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
|
|||
|
|
-- Powerbank behavior ----------------------------------------------------------
|
|||
|
|
Config.PowerbankSpeed = 1.0 -- [EDIT] Charge units gained every 3 seconds while using a powerbank (e.g., 1.0 = +1/3s).
|
|||
|
|
Config.HousingChargers = false -- [EDIT] true: enable wall/room chargers integrated with qs-housing.
|
|||
|
|
Config.ReturnPowerbank = false -- [EDIT] true: return the 'powerbank' item to inventory after use; false: consume it.
|
|||
|
|
|
|||
|
|
-- Battery drain profile -------------------------------------------------------
|
|||
|
|
Config.Battery = {
|
|||
|
|
enabled = true, -- [EDIT] Master toggle for battery system.
|
|||
|
|
interval = 1000, -- [ADV] Tick interval in ms (how often drain/charge applies).
|
|||
|
|
default = 0.001, -- [EDIT] Base drain applied regardless of app focus.
|
|||
|
|
apps = { -- [EDIT] Foreground app extra drain. Increase for heavier apps.
|
|||
|
|
['phone'] = 0.002,
|
|||
|
|
['whatsapp'] = 0.002,
|
|||
|
|
['twitter'] = 0.002,
|
|||
|
|
['settings'] = 0.002,
|
|||
|
|
['mail'] = 0.002,
|
|||
|
|
['state'] = 0.002,
|
|||
|
|
['weather'] = 0.002,
|
|||
|
|
['spotify'] = 0.002,
|
|||
|
|
['gallery'] = 0.002,
|
|||
|
|
['camera'] = 0.002,
|
|||
|
|
['notes'] = 0.002,
|
|||
|
|
['calculator'] = 0.002,
|
|||
|
|
['youtube'] = 0.002,
|
|||
|
|
['store'] = 0.002,
|
|||
|
|
['crypto'] = 0.002,
|
|||
|
|
['bank'] = 0.002,
|
|||
|
|
['help'] = 0.002,
|
|||
|
|
['messages'] = 0.002,
|
|||
|
|
['tinder'] = 0.002,
|
|||
|
|
['clock'] = 0.002,
|
|||
|
|
['houses'] = 0.002,
|
|||
|
|
['yellowpages'] = 0.002,
|
|||
|
|
['rentel'] = 0.002,
|
|||
|
|
['tetris'] = 0.002,
|
|||
|
|
['uber'] = 0.002,
|
|||
|
|
['darkweb'] = 0.002,
|
|||
|
|
['racing'] = 0.002,
|
|||
|
|
['darkchat'] = 0.002,
|
|||
|
|
['uberRider'] = 0.002,
|
|||
|
|
['tiktok'] = 0.002,
|
|||
|
|
['market'] = 0.002
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
-- Safe defaulting (if battery disabled) --------------------------------------
|
|||
|
|
-- [AUTO] Ensures arrays are normalized if someone toggles battery off elsewhere.
|
|||
|
|
if not Config.Battery.enabled then
|
|||
|
|
Config.Battery.enabled = true -- [AUTO]
|
|||
|
|
Config.Battery.default = 0.0 -- [AUTO]
|
|||
|
|
for k in pairs(Config.Battery.apps) do
|
|||
|
|
Config.Battery.apps[k] = 0.0 -- [AUTO]
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Charging Stations (World) [EDIT]
|
|||
|
|
-- [INFO] Marker style and per-location charge points. Players near these coords
|
|||
|
|
-- gain battery periodically based on chargeSpeed (units per 3 seconds).
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.ChargeCoordsMarker = {
|
|||
|
|
marker = 2, -- [EDIT] Marker type (native id).
|
|||
|
|
color = { 255, 255, 255, 255 } -- [EDIT] RGBA color (0–255).
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Config.ChargeCoords = {
|
|||
|
|
{
|
|||
|
|
coords = vec3(25.882116, -1341.416138, 29.397023), -- [EDIT] Charger position.
|
|||
|
|
isAvailable = true, -- [EDIT] Toggle this station on/off.
|
|||
|
|
chargeSpeed = 3.0 -- [EDIT] +3 every 3s while charging.
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(-42.846802, -1755.070435, 29.34313),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(1129.596680, -981.305786, 46.315859),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(19.335779, -1103.538940, 29.697037),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(-666.523926, -934.613037, 21.729231),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(-704.892212, -908.886719, 19.115588),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(-1220.993774, -912.881836, 12.226359),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(1164.968506, -317.935669, 69.10504),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(255.742645, -47.225620, 69.841032),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(-1302.567993, -391.261780, 36.595755),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(-1481.958374, -376.235596, 40.063452),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(375.456482, 331.734283, 103.466353),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(2571.713379, 291.965973, 108.634848),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(2551.379639, 382.528137, 108.522986),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(2673.661621, 3283.618896, 55.141119),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(1701.339600, 4919.229980, 41.96369),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(1731.790039, 6419.871582, 34.937209),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(-334.757660, 6082.848633, 31.35476),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(-3175.626709, 1085.157104, 20.738764),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(-3248.010742, 1002.042542, 12.730703),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(-3044.983887, 584.189758, 7.808927),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
coords = vec3(-2962.195801, 388.839691, 14.943318),
|
|||
|
|
isAvailable = true,
|
|||
|
|
chargeSpeed = 3.0
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Public Phone Booths [EDIT]
|
|||
|
|
-- [INFO] Players can place paid calls from booths. Includes cinematic use and blips.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.PhoneBoothBlip = {
|
|||
|
|
active = true, -- [EDIT] Show blips for booths on the map.
|
|||
|
|
sprite = 459, -- [EDIT] Blip sprite id.
|
|||
|
|
color = 0, -- [EDIT] Blip color id.
|
|||
|
|
scale = 0.6, -- [EDIT] Blip scale.
|
|||
|
|
name = 'Phone Booth', -- [EDIT] Blip label.
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Config.ShowNearestBooths = true -- [EDIT] true: show helper for nearest booths.
|
|||
|
|
|
|||
|
|
Config.PhoneBooths = { -- [EDIT] World positions/headings of phone booths.
|
|||
|
|
{ coords = vec4(128.940659, -2009.749390, 17.013823, 75.118103) },
|
|||
|
|
{ coords = vec4(461.042816, -1852.384643, 26.57, 223.70495605) },
|
|||
|
|
{ coords = vec4(252.936264, -2076.553955, 16.012837, 138.645660) },
|
|||
|
|
{ coords = vec4(378.593414, -2147.301025, 14.601123, 29.094498) },
|
|||
|
|
{ coords = vec4(406.918671, -1613.696655, 27.99307, 141.732285) },
|
|||
|
|
{ coords = vec4(313.621979, -1691.129639, 28.044136, 141.732285) },
|
|||
|
|
{ coords = vec4(38.676926, -1698.527466, 27.999007, 192.755920) },
|
|||
|
|
{ coords = vec4(12.606594, -1532.162598, 27.989907, 48.188972) },
|
|||
|
|
{ coords = vec4(209.723083, -1408.984619, 27.989907, 150.236221) },
|
|||
|
|
{ coords = vec4(48.052750, -1379.274780, 27.979907, 2.834646) },
|
|||
|
|
{ coords = vec4(-342.356049, -1471.872559, 29.465728, 87.874016) },
|
|||
|
|
{ coords = vec4(-37.753845, -1115.314331, 25.132251, 246.614166) },
|
|||
|
|
{ coords = vec4(-227.169220, -943.239563, 27.981307, 68.031494) },
|
|||
|
|
{ coords = vec4(197.261536, -846.659363, 29.513232, 340.157471) },
|
|||
|
|
{ coords = vec4(-53.419781, -721.846130, 42.959399, 153.070862) },
|
|||
|
|
{ coords = vec4(-282.817566, -646.008789, 31.905811, 192.755920) },
|
|||
|
|
{ coords = vec4(168.131866, -427.846161, 39.757861, 73.700790) },
|
|||
|
|
{ coords = vec4(-359.419769, -267.929657, 32.343921, 51.023624) },
|
|||
|
|
{ coords = vec4(-0.079117, -152.334061, 55.057544, 342.992126) },
|
|||
|
|
{ coords = vec4(322.628571, -236.795593, 52.698535, 342.992126) },
|
|||
|
|
{ coords = vec4(549.613159, 85.674728, 94.721973, 155.905502) },
|
|||
|
|
{ coords = vec4(93.652756, 252.118683, 107.190845, 161.574799) },
|
|||
|
|
{ coords = vec4(-64.602196, 180.949448, 86.044360, 221.102371) },
|
|||
|
|
{ coords = vec4(240.342865, 83.947258, 91.149829, 158.740158) },
|
|||
|
|
{ coords = vec4(-35.723076, -243.652740, 44.711719, 158.740158) },
|
|||
|
|
{ coords = vec4(478.562653, 263.274719, 101.815723, 161.574799) },
|
|||
|
|
{ coords = vec4(466.720886, -665.670349, 25.823047, 0.000000) },
|
|||
|
|
{ coords = vec4(418.958252, -990.751648, 28.013599, 269.291351) },
|
|||
|
|
{ coords = vec4(378.593414, -1125.257202, 28.097827, 175.748032) },
|
|||
|
|
{ coords = vec4(759.599976, -889.107666, 23.852766, 90.708656) },
|
|||
|
|
{ coords = vec4(809.789001, -1417.134033, 25.907275, 90.708656) },
|
|||
|
|
{ coords = vec4(812.492310, -1968.909912, 27.912402, 257.952759) },
|
|||
|
|
{ coords = vec4(723.626404, -2377.186768, 20.700732, 266.456696) },
|
|||
|
|
{ coords = vec4(-1026.250488, -2743.833008, 18.864062, 240.944885) },
|
|||
|
|
{ coords = vec4(-1205.103271, -1394.334106, 2.772510, 294.803162) },
|
|||
|
|
{ coords = vec4(-1288.008789, -1092.514282, 5.805469, 204.094498) },
|
|||
|
|
{ coords = vec4(-940.193420, -1199.314331, 3.817188, 212.598419) },
|
|||
|
|
{ coords = vec4(-1099.846191, -806.043945, 16.9293823, 223.937012) },
|
|||
|
|
{ coords = vec4(-687.032959, -675.336243, 29.631152, 181.417328) },
|
|||
|
|
{ coords = vec4(-885.665955, -848.861511, 17.819385, 102.047249) },
|
|||
|
|
{ coords = vec4(-1047.665894, -2084.070312, 12.157886, 229.606293) },
|
|||
|
|
{ coords = vec4(1036.839600, -2249.960449, 30.574756, 87.874016) },
|
|||
|
|
{ coords = vec4(1705.028564, -1639.424194, 111.167407, 99.212593) },
|
|||
|
|
{ coords = vec4(948.3318481, -1740.544189, 29.8673049, 81.908905029) },
|
|||
|
|
{ coords = vec4(1210.639404, -1282.588989, 34.0762893, 355.61618041) },
|
|||
|
|
{ coords = vec4(-161.025924, -2632.566405, 4.73147220, 180.7557830) },
|
|||
|
|
{ coords = vec4(1174.21386, -420.926635, 65.8176223, 73.64119720459) },
|
|||
|
|
{ coords = vec4(1074.07434, -776.59481, 56.946246, 180.815017) },
|
|||
|
|
{ coords = vec4(-694.045105, -278.991913, 34.991885, 122.858719) },
|
|||
|
|
{ coords = vec4(-501.531799, -179.227325, 36.470996, 299.185577) },
|
|||
|
|
{ coords = vec4(-616.994324, -420.016479, 33.463351, 85.884285) },
|
|||
|
|
{ coords = vec4(-1002.513611, -391.252991, 36.660812, 115.867989) },
|
|||
|
|
{ coords = vec4(-1252.519287, -538.408691, 29.098666, 131.531464) },
|
|||
|
|
{ coords = vec4(-1470.224731, -708.601074, 24.366431, 139.815094) },
|
|||
|
|
{ coords = vec4(-1541.711182, -467.244110, 34.132556, 31.676353) },
|
|||
|
|
{ coords = vec4(553.173401, -2974.109619, 4.744457, 266.889771) },
|
|||
|
|
{ coords = vec4(565.620667, -2722.715332, 4.75601, 2.830631) },
|
|||
|
|
{ coords = vec4(754.894714, -3048.252197, 4.859356, 93.493866) },
|
|||
|
|
{ coords = vec4(-1432.962769, -262.947510, 44.964626, 308.605591) },
|
|||
|
|
{ coords = vec4(-1683.513306, -384.245758, 46.872443, 50.254704) },
|
|||
|
|
{ coords = vec4(-1103.391113, -143.627167, 36.973937, 152.198273) },
|
|||
|
|
{ coords = vec4(-464.103973, 144.347794, 63.170215, 2.164905) },
|
|||
|
|
{ coords = vec4(811.837402, -173.348846, 71.396304, 336.024445) },
|
|||
|
|
{ coords = vec4(-2289.707764, 419.038330, 173.301517, 153.477661) },
|
|||
|
|
{ coords = vec4(-2958.663086, 447.199615, 13.995901, 359.032166) },
|
|||
|
|
{ coords = vec4(-3037.492920, 587.248047, 6.511921, 111.270958) },
|
|||
|
|
{ coords = vec4(-3146.152344, 1119.066895, 19.544858, 61.374123) },
|
|||
|
|
{ coords = vec4(-1515.575806, 1499.105347, 113.837917, 78.183487) },
|
|||
|
|
{ coords = vec4(2588.658447, 431.040131, 107.313152, 270.350830) },
|
|||
|
|
{ coords = vec4(936.932983, 102.091782, 78.268443, 53.319496) },
|
|||
|
|
{ coords = vec4(2745.979980, 3458.693115, 54.52346, 68.488243) },
|
|||
|
|
{ coords = vec4(1692.605713, 3740.936035, 32.642169, 33.795506) },
|
|||
|
|
{ coords = vec4(1937.438965, 3897.668213, 31.172103, 116.251793) },
|
|||
|
|
{ coords = vec4(903.353943, 3656.837891, 31.289413, 275.263306) },
|
|||
|
|
{ coords = vec4(595.806091, 2745.105957, 40.721877, 6.903358) },
|
|||
|
|
{ coords = vec4(-1129.925537, 2677.800781, 17.0526, 311.245636) },
|
|||
|
|
{ coords = vec4(-112.213196, 6306.829590, 30.204498, 134.958008) },
|
|||
|
|
{ coords = vec4(1692.239746, 6432.220215, 31.462497, 334.389343) },
|
|||
|
|
{ coords = vec4(1654.029785, 4888.356445, 40.742793, 102.488831) },
|
|||
|
|
{ coords = vec4(2465.498047, 4949.440430, 43.957549, 183.070557) },
|
|||
|
|
{ coords = vec4(-1878.619507, 2091.767334, 139.693729, 345.417999) },
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Password Reset Service [EDIT]
|
|||
|
|
-- [INFO] NPC service that resets a phone’s lock password for a fee.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.ResetPassword = {
|
|||
|
|
active = true, -- [EDIT] Enable/disable service.
|
|||
|
|
coords = vec3(1000.32, -103.89, 73.95), -- [EDIT] Service location (blip/interaction).
|
|||
|
|
ped = { -- [EDIT] NPC definition.
|
|||
|
|
coords = vec4(1000.32, -103.89, 73.95, 121.65),
|
|||
|
|
model = `a_m_m_afriamer_01`
|
|||
|
|
},
|
|||
|
|
blip = { -- [EDIT] Map marker for the service.
|
|||
|
|
coords = vec3(1000.32, -103.89, 73.95),
|
|||
|
|
name = 'Technical',
|
|||
|
|
sprite = 89,
|
|||
|
|
color = 1,
|
|||
|
|
scale = 0.5,
|
|||
|
|
active = true
|
|||
|
|
},
|
|||
|
|
money = 500 -- [EDIT] Price to reset password.
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Phone Plans (“Recipe”) [EDIT]
|
|||
|
|
-- [INFO] Optional balance/plan requirement to place calls. Two plan types:
|
|||
|
|
-- daily (renews/charges per day) and moment (single-use/temporary).
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.EnableRecipe = false -- [EDIT] true: require an active plan to make calls.
|
|||
|
|
|
|||
|
|
Config.BuyRecipe = {
|
|||
|
|
coords = { vec3(324.93, -229.56, 54.22) }, -- [EDIT] Plan purchase locations.
|
|||
|
|
prices = {
|
|||
|
|
daily = 100000, -- [EDIT] Price of daily plan.
|
|||
|
|
moment = 1000, -- [EDIT] Price of one-time plan.
|
|||
|
|
},
|
|||
|
|
blip = {
|
|||
|
|
sprite = 52, -- [EDIT] Blip sprite id.
|
|||
|
|
color = 2, -- [EDIT] Blip color id.
|
|||
|
|
scale = 0.8, -- [EDIT] Blip scale.
|
|||
|
|
name = 'Recipe Shop', -- [EDIT] Blip label.
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Job Integrations [EDIT]
|
|||
|
|
-- [INFO] Define which jobs can post news, issue bills, receive SOS, appear in
|
|||
|
|
-- duty systems, and their public phone numbers/labels.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
|
|||
|
|
-- News app: jobs allowed to publish posts.
|
|||
|
|
Config.WeazelJob = { 'police', 'weazel' } -- [EDIT]
|
|||
|
|
|
|||
|
|
-- Billing: jobs allowed to use /sendbill.
|
|||
|
|
Config.BillJobs = { 'police', 'ambulance' } -- [EDIT]
|
|||
|
|
|
|||
|
|
-- SOS: automatic distress message under health threshold.
|
|||
|
|
Config.SOSMessage = true -- [EDIT] Toggle SOS.
|
|||
|
|
Config.SOSJob = 'ambulance' -- [EDIT] Job receiving SOS messages.
|
|||
|
|
Config.SOSHealth = 25 -- [EDIT] Health threshold (0–200 depending on framework).
|
|||
|
|
|
|||
|
|
-- Duty-capable jobs (Settings app → Duty).
|
|||
|
|
Config.Jobs = { 'police', 'ambulance', 'mechanic', 'taxi' } -- [EDIT]
|
|||
|
|
|
|||
|
|
-- Public service numbers shown in contacts/calls.
|
|||
|
|
Config.jobNumbers = { -- [EDIT] Job → phone number mapping.
|
|||
|
|
['police'] = '911',
|
|||
|
|
['ambulance'] = '912',
|
|||
|
|
['mechanic'] = '913',
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
-- Display labels used in UI lists.
|
|||
|
|
Config.JobLabels = { -- [EDIT] Job → label mapping.
|
|||
|
|
['police'] = 'Police',
|
|||
|
|
['ambulance'] = 'Ambulance',
|
|||
|
|
['mechanic'] = 'Mechanic',
|
|||
|
|
['taxi'] = 'Taxi'
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
-- Job Center listings (players can apply here).
|
|||
|
|
Config.JobCenter = { -- [EDIT] id-indexed list of available jobs and map coords.
|
|||
|
|
[1] = { job = 'builder', label = 'Constructor', Coords = { 926.47, -1560.25 } },
|
|||
|
|
[2] = { job = 'deliverer', label = 'Livrator', Coords = { 78.66, 111.75 } },
|
|||
|
|
[3] = { job = 'electrician', label = 'Electrician', Coords = { 751.06, 222.85 } },
|
|||
|
|
[4] = { job = 'garbage', label = 'Gunoier', Coords = { -321.56, -1545.74 } },
|
|||
|
|
[5] = { job = 'lumberjack', label = 'Taietor de lemne', Coords = { -552.9, 5348.58 } },
|
|||
|
|
[6] = { job = 'miner', label = 'Miner', Coords = { 2445.14, 1532.14 } },
|
|||
|
|
[7] = { job = 'oilrig', label = 'Lucrator pe platforma petroliera', Coords = { 1395.79, -3278.07 } },
|
|||
|
|
[8] = { job = 'postman', label = 'Postas', Coords = { -232.16, -915.15 } },
|
|||
|
|
[9] = { job = 'hunter', label = 'Vanator de comori', Coords = { 167.82, -2222.7 } },
|
|||
|
|
[10] = { job = 'windowcleaner', label = 'Spalator de geamuri', Coords = { -1243.98, -1240.71 } },
|
|||
|
|
[11] = { job = 'bus', label = 'Sofer de autobuz', Coords = { 462.22, -641.15 } },
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Vehicle / Keys / Valet / iCar / Colors [EDIT]
|
|||
|
|
-- [INFO] Settings used by Uber & Garages apps. Keys are auto-detected; if none
|
|||
|
|
-- is found, system falls back to 'none' (no key checks).
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
|
|||
|
|
-- Garage detection ------------------------------------------------------------ [AUTO]
|
|||
|
|
-- [INFO] Detects a supported garage script by resource name. If none is running,
|
|||
|
|
-- 'default' disables deep integration and uses basic fallbacks.
|
|||
|
|
local garages = { -- [CORE] resourceName -> alias
|
|||
|
|
['qs-advancedgarages'] = 'qs-advancedgarages',
|
|||
|
|
['jg-advancedgarages'] = 'jg-advancedgarages',
|
|||
|
|
['cd_garage'] = 'cd_garage',
|
|||
|
|
['loaf_garage'] = 'loaf_garage',
|
|||
|
|
['okokGarage'] = 'okokGarage',
|
|||
|
|
['codem-garage'] = 'codem-garage',
|
|||
|
|
['vms_garagesv2'] = 'vms_garagesv2',
|
|||
|
|
['lunar_garage'] = 'lunar_garage',
|
|||
|
|
['RxGarages'] = 'RxGarages'
|
|||
|
|
}
|
|||
|
|
Config.Garage = dependencyCheck(garages) or 'default' -- [AUTO]
|
|||
|
|
|
|||
|
|
-- Vehicle keys detection ------------------------------------------------------ [AUTO]
|
|||
|
|
-- [INFO] Integrates with common vehicle key/lock scripts. If none is running,
|
|||
|
|
-- value becomes 'none' and lock checks are skipped.
|
|||
|
|
local keys = { -- [CORE]
|
|||
|
|
['mono_carkeys'] = 'mono_carkeys',
|
|||
|
|
['qb-vehiclekeys'] = 'qb-vehiclekeys',
|
|||
|
|
['qs-vehiclekeys'] = 'qs-vehiclekeys',
|
|||
|
|
['vehicle_keys'] = 'vehicle_keys',
|
|||
|
|
['wasabi_carlock'] = 'wasabi_carlock',
|
|||
|
|
['mk_vehiclekeys'] = 'mk_vehiclekeys',
|
|||
|
|
['okokGarage'] = 'okokGarage'
|
|||
|
|
}
|
|||
|
|
Config.Vehiclekeys = dependencyCheck(keys) or 'none' -- [AUTO]
|
|||
|
|
|
|||
|
|
-- Valet service --------------------------------------------------------------- [EDIT]
|
|||
|
|
-- [INFO] Simple valet spawn/delivery service billed to the player.
|
|||
|
|
Config.Valet = false -- [EDIT] true: enable valet UI/button & service.
|
|||
|
|
Config.ValetPrice = 1000 -- [EDIT] Cost per valet request (framework currency).
|
|||
|
|
|
|||
|
|
-- iCar / Vehicleshop waypoint ------------------------------------------------- [EDIT]
|
|||
|
|
-- [INFO] Map location used by the iCar app button (SetWaypoint). Use vec2 (x,y) only.
|
|||
|
|
Config.VehicleShopLocation = vec2(-33.784615, -1102.021973) -- [EDIT]
|
|||
|
|
|
|||
|
|
-- Color names (UI palette) ---------------------------------------------------- [EDIT]
|
|||
|
|
-- [INFO] Index → display name used in color pickers/lists. Extend as needed.
|
|||
|
|
Config.Colors = {
|
|||
|
|
[0] = 'Metallic Black',
|
|||
|
|
[1] = 'Metallic Graphite Black',
|
|||
|
|
[2] = 'Metallic Black Steel',
|
|||
|
|
[3] = 'Metallic Dark Silver',
|
|||
|
|
[4] = 'Metallic Silver',
|
|||
|
|
[5] = 'Metallic Blue Silver',
|
|||
|
|
[6] = 'Metallic Steel Grey',
|
|||
|
|
[7] = 'Metallic Shadow Silver',
|
|||
|
|
[8] = 'Metallic Stone Silver',
|
|||
|
|
[9] = 'Metallic Midnight Silver',
|
|||
|
|
[10] = 'Metallic Weapon Metal',
|
|||
|
|
[11] = 'Metallic Anthracite Grey',
|
|||
|
|
[12] = 'Matte Black',
|
|||
|
|
[13] = 'Matte Grey',
|
|||
|
|
[14] = 'Matte Light Grey',
|
|||
|
|
[15] = 'Util Black',
|
|||
|
|
[16] = 'Util Black Poly',
|
|||
|
|
[17] = 'Util Dark silver',
|
|||
|
|
[18] = 'Util Silver',
|
|||
|
|
[19] = 'Util Gun Metal',
|
|||
|
|
[20] = 'Util Shadow Silver',
|
|||
|
|
[21] = 'Worn Black',
|
|||
|
|
[22] = 'Worn Graphite',
|
|||
|
|
[23] = 'Worn Silver Grey',
|
|||
|
|
[24] = 'Worn Silver',
|
|||
|
|
[25] = 'Worn Blue Silver',
|
|||
|
|
[26] = 'Worn Shadow Silver',
|
|||
|
|
[27] = 'Metallic Red',
|
|||
|
|
[28] = 'Turin Red Metallic',
|
|||
|
|
[29] = 'Metallic Formula Red',
|
|||
|
|
[30] = 'Metallic Blaze Red',
|
|||
|
|
[31] = 'Metallic Elegant Red',
|
|||
|
|
[32] = 'Metallic Garnet Red',
|
|||
|
|
[33] = 'Metallic Desert Red',
|
|||
|
|
[34] = 'Cabernet Red Metallic',
|
|||
|
|
[35] = 'Metallic Candy Red',
|
|||
|
|
[36] = 'Metallic Sunrise Orange',
|
|||
|
|
[37] = 'Metallic Classic Gold',
|
|||
|
|
[38] = 'Metallic Orange',
|
|||
|
|
[39] = 'Matte Red',
|
|||
|
|
[40] = 'Matte Dark Red',
|
|||
|
|
[41] = 'Matte Orange',
|
|||
|
|
[42] = 'Matte Yellow',
|
|||
|
|
[43] = 'Util Red',
|
|||
|
|
[44] = 'Util Brilliant Red',
|
|||
|
|
[45] = 'Util Garnet Red',
|
|||
|
|
[46] = 'Worn Red',
|
|||
|
|
[47] = 'Golden Red Worn',
|
|||
|
|
[48] = 'Dark Red Worn',
|
|||
|
|
[49] = 'Metallic Dark Green',
|
|||
|
|
[50] = 'Race Green Metallic',
|
|||
|
|
[51] = 'Metallic Sea Green',
|
|||
|
|
[52] = 'Metallic Olive Green',
|
|||
|
|
[53] = 'Metallic Green',
|
|||
|
|
[54] = 'Metallic Petrol Blue Green',
|
|||
|
|
[55] = 'Matte Lime Green',
|
|||
|
|
[56] = 'Util Dark Green',
|
|||
|
|
[57] = 'Util Green',
|
|||
|
|
[58] = 'Dark Worn Green',
|
|||
|
|
[59] = 'Weathered Green',
|
|||
|
|
[60] = 'Worn Sea Wash',
|
|||
|
|
[61] = 'Metallic Midnight Blue',
|
|||
|
|
[62] = 'Metallic Dark Blue',
|
|||
|
|
[63] = 'Saxon Blue Metallic',
|
|||
|
|
[64] = 'Metallic Blue',
|
|||
|
|
[65] = 'Metallic Marine Blue',
|
|||
|
|
[66] = 'Port Metallic Blue',
|
|||
|
|
[67] = 'Metallic Diamond Blue',
|
|||
|
|
[68] = 'Metallic Surf Blue',
|
|||
|
|
[69] = 'Metallic Teal',
|
|||
|
|
[70] = 'Metallic Brilliant Blue',
|
|||
|
|
[71] = 'Metallic Purple Blue',
|
|||
|
|
[72] = 'Metallic Spinnaker Blue',
|
|||
|
|
[73] = 'Metallic Ultra Blue',
|
|||
|
|
[74] = 'Metallic Brilliant Blue',
|
|||
|
|
[75] = 'Util Dark Blue',
|
|||
|
|
[76] = 'Util Midnight Blue',
|
|||
|
|
[77] = 'Util Blue',
|
|||
|
|
[78] = 'Util Sea Foam Blue',
|
|||
|
|
[79] = 'Util Light blue',
|
|||
|
|
[80] = 'Util Maui Blue Poly',
|
|||
|
|
[81] = 'Util Brilliant Blue',
|
|||
|
|
[82] = 'Matte Dark Blue',
|
|||
|
|
[83] = 'Matte Blue',
|
|||
|
|
[84] = 'Matte Midnight Blue',
|
|||
|
|
[85] = 'Worn Dark blue',
|
|||
|
|
[86] = 'Worn Blue',
|
|||
|
|
[87] = 'Worn Light blue',
|
|||
|
|
[88] = 'Metallic Taxi Yellow',
|
|||
|
|
[89] = 'Race Metallic Yellow',
|
|||
|
|
[90] = 'Metallic Bronze',
|
|||
|
|
[91] = 'Metallic Yellow Bird',
|
|||
|
|
[92] = 'Metallic Lime',
|
|||
|
|
[93] = 'Metallic Champagne',
|
|||
|
|
[94] = 'Metallic Pueblo Beige',
|
|||
|
|
[95] = 'Metallic Dark Ivory',
|
|||
|
|
[96] = 'Metallic Choco Brown',
|
|||
|
|
[97] = 'Metallic Gold Brown',
|
|||
|
|
[98] = 'Metallic Light Brown',
|
|||
|
|
[99] = 'Metallic Mesh Beige',
|
|||
|
|
[100] = 'Metallic Moss Brown',
|
|||
|
|
[101] = 'Metallic Biston Brown',
|
|||
|
|
[102] = 'Metallic Beech Wood',
|
|||
|
|
[103] = 'Metallic Dark Beech',
|
|||
|
|
[104] = 'Metallic Choco Orange',
|
|||
|
|
[105] = 'Metallic Beach Sand',
|
|||
|
|
[106] = 'Metallic Sun Bleeched Sand',
|
|||
|
|
[107] = 'Metallic Cream',
|
|||
|
|
[108] = 'Util Coffee',
|
|||
|
|
[109] = 'Util Medium Brown',
|
|||
|
|
[110] = 'Util Light Brown',
|
|||
|
|
[111] = 'Metallic White',
|
|||
|
|
[112] = 'Metallic Frost White',
|
|||
|
|
[113] = 'Weathered Honey Beige',
|
|||
|
|
[114] = 'Worn Brown',
|
|||
|
|
[115] = 'Worn Dark Brown',
|
|||
|
|
[116] = 'Worn straw beige',
|
|||
|
|
[117] = 'Brushed Steel',
|
|||
|
|
[118] = 'Brushed Black steel',
|
|||
|
|
[119] = 'Brushed Aluminum',
|
|||
|
|
[120] = 'Chrome',
|
|||
|
|
[121] = 'Worn White',
|
|||
|
|
[122] = 'Util Off-White',
|
|||
|
|
[123] = 'Worn Orange',
|
|||
|
|
[124] = 'Worn Light Orange',
|
|||
|
|
[125] = 'Metallic Securicor Green',
|
|||
|
|
[126] = 'Worn Taxi Yellow',
|
|||
|
|
[127] = 'police car blue',
|
|||
|
|
[128] = 'Matte Green',
|
|||
|
|
[129] = 'Matte Brown',
|
|||
|
|
[130] = 'Worn Orange',
|
|||
|
|
[131] = 'Matte White',
|
|||
|
|
[132] = 'Worn White',
|
|||
|
|
[133] = 'Worn Olive Army Green',
|
|||
|
|
[134] = 'Pure White',
|
|||
|
|
[135] = 'Hot Pink',
|
|||
|
|
[136] = 'Salmon pink',
|
|||
|
|
[137] = 'Metallic Vermillion Pink',
|
|||
|
|
[138] = 'Orange',
|
|||
|
|
[139] = 'Green',
|
|||
|
|
[140] = 'Blue',
|
|||
|
|
[141] = 'Metallic Black Blue',
|
|||
|
|
[142] = 'Metallic Black Purple',
|
|||
|
|
[143] = 'Metallic Black Red',
|
|||
|
|
[144] = 'hunter green',
|
|||
|
|
[145] = 'Metallic Purple',
|
|||
|
|
[146] = 'Metallic V Dark Blue',
|
|||
|
|
[147] = 'MODSHOP BLACK',
|
|||
|
|
[148] = 'Matte Purple',
|
|||
|
|
[149] = 'Matte Dark Purple',
|
|||
|
|
[150] = 'Metallic Lava Red',
|
|||
|
|
[151] = 'Matte Forest Green',
|
|||
|
|
[152] = 'Matte Olive Green',
|
|||
|
|
[153] = 'Matte Desert Brown',
|
|||
|
|
[154] = 'Matte Desert Tan',
|
|||
|
|
[155] = 'Matte Foilage Green',
|
|||
|
|
[156] = 'DEFAULT ALLOY COLOR',
|
|||
|
|
[157] = 'Epsilon Blue',
|
|||
|
|
[158] = 'Pure Gold',
|
|||
|
|
[159] = 'Brushed Gold',
|
|||
|
|
[160] = 'Red',
|
|||
|
|
[161] = 'Anod Red',
|
|||
|
|
[162] = 'Anod Wine',
|
|||
|
|
[163] = 'Anod Purple',
|
|||
|
|
[164] = 'Anod Blue',
|
|||
|
|
[165] = 'Anod Green',
|
|||
|
|
[166] = 'Anod Lime',
|
|||
|
|
[167] = 'Anod Copper',
|
|||
|
|
[168] = 'Anod Bronze',
|
|||
|
|
[169] = 'Anod Champagne',
|
|||
|
|
[170] = 'Anod Gold',
|
|||
|
|
[171] = 'Green Blue Flip',
|
|||
|
|
[172] = 'Green Red Flip',
|
|||
|
|
[173] = 'Green Brow Flip',
|
|||
|
|
[174] = 'Green Turq Flip',
|
|||
|
|
[175] = 'Green Purp Flip',
|
|||
|
|
[176] = 'Teal Red Flip',
|
|||
|
|
[177] = 'Turq Red Flip',
|
|||
|
|
[178] = 'Turq Purp Flip',
|
|||
|
|
[179] = 'Cyan Puro Flip',
|
|||
|
|
[180] = 'Blue Pink Flip',
|
|||
|
|
[181] = 'Blue Green Flip',
|
|||
|
|
[182] = 'Purp Red Flip',
|
|||
|
|
[183] = 'Purp Green Flip',
|
|||
|
|
[184] = 'Magen Gree Flip',
|
|||
|
|
[185] = 'Magen Yell Flip',
|
|||
|
|
[186] = 'Burg Green Flip',
|
|||
|
|
[187] = 'Magen Cyan Flip',
|
|||
|
|
[188] = 'Coppe Purp Flip',
|
|||
|
|
[189] = 'Magen Orange Flip',
|
|||
|
|
[190] = 'Red Orange Flip',
|
|||
|
|
[191] = 'Orange Purp Flip',
|
|||
|
|
[192] = 'Orange Blue Flip',
|
|||
|
|
[193] = 'White Purp Flip',
|
|||
|
|
[194] = 'Red Rainbow Flip',
|
|||
|
|
[195] = 'Blue Rainbow Flip',
|
|||
|
|
[196] = 'Dark Green Pearl',
|
|||
|
|
[197] = 'Dark Teal Pearl',
|
|||
|
|
[198] = 'Dark Blue Pearl',
|
|||
|
|
[199] = 'Dar Purple Pearl',
|
|||
|
|
[200] = 'Oil Slick Pearl',
|
|||
|
|
[201] = 'Lit Green Pearl',
|
|||
|
|
[202] = 'Lit Blue Pearl',
|
|||
|
|
[203] = 'Lit Purp Pearl',
|
|||
|
|
[204] = 'Lit Pink Pearl',
|
|||
|
|
[205] = 'Offwhite Prisma',
|
|||
|
|
[206] = 'Pink Pearl',
|
|||
|
|
[207] = 'Yellow Pearl',
|
|||
|
|
[208] = 'Green Pearl',
|
|||
|
|
[209] = 'Blue Pearl',
|
|||
|
|
[210] = 'Cream Pearl',
|
|||
|
|
[211] = 'White Prisma',
|
|||
|
|
[212] = 'Graphite Prisma',
|
|||
|
|
[213] = 'Dark Blue Prisma',
|
|||
|
|
[214] = 'Dark Purple Prisma',
|
|||
|
|
[215] = 'Hot Pink Prisma',
|
|||
|
|
[216] = 'Red Prisma',
|
|||
|
|
[217] = 'Green Prisma',
|
|||
|
|
[218] = 'Black Prisma',
|
|||
|
|
[219] = 'Oil Slic Prisma',
|
|||
|
|
[220] = 'Rainbow Prisma',
|
|||
|
|
[221] = 'Black Holo',
|
|||
|
|
[222] = 'White Holo',
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Vehicle Classes [EDIT]
|
|||
|
|
-- [INFO] UI/logic class labels indexed by GTA class id. Used in filters/lists.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.Classes = {
|
|||
|
|
[0] = 'COMPACT', -- [INFO] Compacts
|
|||
|
|
[1] = 'SEDAN', -- [INFO] Sedans
|
|||
|
|
[2] = 'SUV', -- [INFO] SUVs
|
|||
|
|
[3] = 'COUPE', -- [INFO] Coupes
|
|||
|
|
[4] = 'MUSCLE', -- [INFO] Muscle
|
|||
|
|
[5] = 'SPORT CLASSIC', -- [INFO] Sports Classics
|
|||
|
|
[6] = 'SPORT', -- [INFO] Sports
|
|||
|
|
[7] = 'SUPER', -- [INFO] Super
|
|||
|
|
[8] = 'MOTOR', -- [INFO] Motorcycles
|
|||
|
|
[9] = 'OFFROAD', -- [INFO] Off-road
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Uber / Uber Eats [EDIT]
|
|||
|
|
-- [INFO] Pricing & tips for ride/delivery services used by Uber apps.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.UberTipMin = 30 -- [EDIT] Minimum tip a client may give.
|
|||
|
|
Config.UberTipMax = 50 -- [EDIT] Maximum tip a client may give.
|
|||
|
|
Config.UberPriceMultiplier = 1.5 -- [EDIT] Fare multiplier applied to base distance/time.
|
|||
|
|
|
|||
|
|
-- [INFO] Security deposit required to request an Uber.
|
|||
|
|
-- If the customer cancels a pending trip, driver receives this amount.
|
|||
|
|
Config.RequestSecureUber = 5000 -- [EDIT] Currency units (framework money).
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Uber Delivery Drop Points [EDIT]
|
|||
|
|
-- [INFO] World positions for delivery endpoints. Keep z roughly at ground level.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.UberDelivery = {
|
|||
|
|
[1] = { x = 8.69, y = -243.09, z = 47.66 },
|
|||
|
|
[2] = { x = 113.74, y = -277.95, z = 54.51 },
|
|||
|
|
[3] = { x = 201.56, y = -148.76, z = 61.47 },
|
|||
|
|
[4] = { x = -206.84, y = 159.49, z = 74.08 },
|
|||
|
|
[5] = { x = 38.83, y = -71.64, z = 63.83 },
|
|||
|
|
[6] = { x = 47.84, y = -29.16, z = 73.71 },
|
|||
|
|
[7] = { x = -264.41, y = 98.82, z = 69.27 },
|
|||
|
|
[8] = { x = -419.34, y = 221.12, z = 83.60 },
|
|||
|
|
[9] = { x = -998.43, y = 158.42, z = 62.31 },
|
|||
|
|
[10] = { x = -1026.57, y = 360.64, z = 71.36 },
|
|||
|
|
[11] = { x = -967.06, y = 510.76, z = 82.07 },
|
|||
|
|
[12] = { x = -1009.64, y = 478.93, z = 79.41 },
|
|||
|
|
[13] = { x = -1308.05, y = 448.59, z = 100.86 },
|
|||
|
|
[14] = { x = 557.39, y = -1759.57, z = 29.31 },
|
|||
|
|
[15] = { x = 325.10, y = -229.59, z = 54.22 },
|
|||
|
|
[16] = { x = 414.82, y = -217.57, z = 59.91 },
|
|||
|
|
[17] = { x = 430.85, y = -941.91, z = 29.19 },
|
|||
|
|
[18] = { x = -587.79, y = -783.53, z = 25.40 },
|
|||
|
|
[19] = { x = -741.54, y = -982.28, z = 17.44 },
|
|||
|
|
[20] = { x = -668.23, y = -971.58, z = 22.34 },
|
|||
|
|
[21] = { x = -664.21, y = -1218.25, z = 11.81 },
|
|||
|
|
[22] = { x = 249.99, y = -1730.79, z = 29.67 },
|
|||
|
|
[23] = { x = 405.77, y = -1751.18, z = 29.71 },
|
|||
|
|
[24] = { x = 454.96, y = -1580.25, z = 32.82 },
|
|||
|
|
[25] = { x = 278.81, y = -1117.96, z = 29.42 },
|
|||
|
|
[26] = { x = 101.82, y = -819.49, z = 31.31 },
|
|||
|
|
[27] = { x = -416.72, y = -186.79, z = 37.45 },
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Uber Shop Items [EDIT]
|
|||
|
|
-- [INFO] Items purchasable via Uber Eats. Integrate with your inventory items.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.UberItems = {
|
|||
|
|
[1] = { item = 'phone', name = 'Phone', price = 300 },
|
|||
|
|
[2] = { item = 'sandwich', name = 'Sandwich', price = 200 },
|
|||
|
|
[3] = { item = 'water_bottle', name = 'Water Bottle', price = 120 },
|
|||
|
|
[4] = { item = 'repairkit', name = 'Repair kit', price = 200 },
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Marketplace [EDIT]
|
|||
|
|
-- [INFO] App that lets orgs/companies manage clients, staff, and finances.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.Market = { Management = {} } -- [CORE] Container
|
|||
|
|
|
|||
|
|
-- Management capabilities ----------------------------------------------------- [EDIT]
|
|||
|
|
Config.Market.Management.Deposit = true -- [INFO] Allow org funds deposit.
|
|||
|
|
Config.Market.Management.Withdraw = true -- [INFO] Allow org funds withdrawal.
|
|||
|
|
Config.Market.Management.Hire = true -- [INFO] Allow hiring via app.
|
|||
|
|
Config.Market.Management.Fire = true -- [INFO] Allow firing via app.
|
|||
|
|
Config.Market.Management.Promote = true -- [INFO] Allow promotions/demotions.
|
|||
|
|
|
|||
|
|
-- Organizations listing ------------------------------------------------------- [EDIT]
|
|||
|
|
-- [INFO] Each market defines: id, name, image, description, allowed jobs, boss ranks, and HQ coords.
|
|||
|
|
Config.Markets = {
|
|||
|
|
{
|
|||
|
|
id = 1,
|
|||
|
|
name = 'Los Santos Police Department',
|
|||
|
|
image = 'https://static.wikia.nocookie.net/gtawiki/images/d/dc/MissionRowPoliceStation-GTAV.png',
|
|||
|
|
description = 'The city police, always willing to help you, let us know if you have any problems in Los Santos.',
|
|||
|
|
job = { 'police', 'sheriff' },
|
|||
|
|
bossRanks = { 'boss', 'lieutenant' },
|
|||
|
|
coords = vec3(452.12, -980.55, 30.69)
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id = 2,
|
|||
|
|
name = 'Pillbox Medical Center',
|
|||
|
|
image = 'https://static.wikia.nocookie.net/esgta/images/e/e7/PillboxHillMedicalCenterGTAV.png',
|
|||
|
|
description = 'If you need a doctor, contact the Los Santos Emergency Center!',
|
|||
|
|
job = { 'ambulance' },
|
|||
|
|
bossRanks = { 'boss', 'lieutenant' },
|
|||
|
|
coords = vec3(335.12, -584.55, 43.69)
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id = 3,
|
|||
|
|
name = 'Bean Machine',
|
|||
|
|
image = 'https://cdnb.artstation.com/p/assets/images/images/062/724/785/large/synced3d-unbenannt.jpg',
|
|||
|
|
description = 'The best coffee shop in the city now with home delivery—order your coffee, cappuccino, with milk, or whatever you want!',
|
|||
|
|
job = { 'beanmachine', 'deliver' },
|
|||
|
|
bossRanks = { 'boss', 'lieutenant' },
|
|||
|
|
coords = vec3(280.799988, -963.982422, 29.414673)
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id = 4,
|
|||
|
|
name = 'Jamaican Roast',
|
|||
|
|
image = 'https://pbs.twimg.com/media/D3KNTUcW4AAQwRQ.jpg',
|
|||
|
|
description = 'Home delivery and in-store sales. Try the best cappuccino in Los Santos—toast, meals, grill!',
|
|||
|
|
job = { 'jamaican', 'deliver' },
|
|||
|
|
bossRanks = { 'boss', 'lieutenant' },
|
|||
|
|
coords = vec3(273.468140, -832.971436, 29.397827)
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id = 5,
|
|||
|
|
name = 'Pizza This',
|
|||
|
|
image = 'https://img.gta5-mods.com/q95/images/foodworks-food-delivery-pack/20d2bc-7.jpg',
|
|||
|
|
description = 'Since 1988 bringing the best Italian pizza to LS. Choose your flavor and contact us!',
|
|||
|
|
job = { 'pizzajob', 'deliver' },
|
|||
|
|
bossRanks = { 'boss', 'lieutenant' },
|
|||
|
|
coords = vec3(287.736267, -963.969238, 29.414673)
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id = 6,
|
|||
|
|
name = 'Bennys Original Motor Works',
|
|||
|
|
image = 'https://static.wikia.nocookie.net/esgta/images/6/64/GTAOnlineLowrider5.jpg',
|
|||
|
|
description = 'Top mechanic company with home orders or direct contact through Marketplace—repairs and tuning.',
|
|||
|
|
job = { 'mechanic' },
|
|||
|
|
bossRanks = { 'boss', 'lieutenant' },
|
|||
|
|
coords = vec3(-206.004395, -1310.281372, 31.285034)
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id = 7,
|
|||
|
|
name = 'Premium Deluxe Motorsport',
|
|||
|
|
image = 'https://i.ytimg.com/vi/M6ZNvc7dpR4/maxresdefault.jpg',
|
|||
|
|
description = 'Order your new car, ask for prices, and schedule delivery—your next sports car awaits!',
|
|||
|
|
job = { 'dealership' },
|
|||
|
|
bossRanks = { 'boss', 'lieutenant' },
|
|||
|
|
coords = vec3(-45.362637, -1107.309937, 26.432251)
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id = 8,
|
|||
|
|
name = 'Vanilla Unicorn',
|
|||
|
|
image = 'https://static.wikia.nocookie.net/esgta/images/a/ae/VanillaUnicornfrente.png',
|
|||
|
|
description = 'Drinks, shows, and reservations. Place your order or book your favorite performer.',
|
|||
|
|
job = { 'unicornjob' },
|
|||
|
|
bossRanks = { 'boss', 'lieutenant' },
|
|||
|
|
coords = vec3(128.795609, -1297.265869, 29.145020)
|
|||
|
|
},
|
|||
|
|
-- [EDIT] Add more markets here following the same structure.
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Darkweb [EDIT]
|
|||
|
|
-- [INFO] Seller NPC, access points, and catalog. deliveryTime in ms per item.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.ChatSeller = 'csb_sol' -- [EDIT] Ped model used as seller in chat/cinematics.
|
|||
|
|
Config.SellerLocation = vector4(328.14, -940.16, 29.41, 182.57) -- [EDIT] Seller position/heading (or set to false to disable static seller).
|
|||
|
|
|
|||
|
|
-- Entry points where the Darkweb app becomes available / stronger signal, etc.
|
|||
|
|
Config.DarkWebCoords = {
|
|||
|
|
vec3(93.45, -1928.67, 20.79),
|
|||
|
|
vec3(1134.81, -416.30, 67.05),
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
-- Catalog -------------------------------------------------------------------- [EDIT]
|
|||
|
|
-- [INFO] isWeapon toggles special handling (license, metadata). Note: one label has a typo (“Sticky Bomd”) preserved intentionally.
|
|||
|
|
Config.Darkweb = {
|
|||
|
|
List = {
|
|||
|
|
[1] = { item = 'weapon_snspistol', label = 'SNS Pistol', price = 2500, isWeapon = true, deliveryTime = 1 * 60 * 1000 },
|
|||
|
|
[2] = { item = 'weapon_minismg', label = 'Mini SMG', price = 2800, isWeapon = true, deliveryTime = 1 * 60 * 1000 },
|
|||
|
|
[3] = { item = 'weapon_microsmg', label = 'Micro SMG', price = 3000, isWeapon = true, deliveryTime = 1 * 60 * 1000 },
|
|||
|
|
[4] = { item = 'weapon_bullpuprifle', label = 'Bullpup Rifle', price = 4000, isWeapon = true, deliveryTime = 1 * 60 * 1000 },
|
|||
|
|
[5] = { item = 'weapon_carbinerifle', label = 'Carbine Rifle', price = 9000, isWeapon = true, deliveryTime = 1 * 60 * 1000 },
|
|||
|
|
[6] = { item = 'weapon_sawnoffshotgun', label = 'Shotgun', price = 12000, isWeapon = true, deliveryTime = 1 * 60 * 1000 },
|
|||
|
|
[7] = { item = 'weapon_sniperrifle', label = 'Sniper Rifle', price = 28000, isWeapon = true, deliveryTime = 1 * 60 * 1000 },
|
|||
|
|
[8] = { item = 'url_weapontint', label = 'Custom Weapon Tint', price = 2000, isWeapon = false, deliveryTime = 1 * 60 * 1000 },
|
|||
|
|
[9] = { item = 'weapon_molotov', label = 'Molotov', price = 500, isWeapon = false, deliveryTime = 1 * 60 * 1000 },
|
|||
|
|
[10] = { item = 'weapon_stickybomb', label = 'Sticky Bomd', price = 900, isWeapon = false, deliveryTime = 1 * 60 * 1000 }, -- [INFO] label typo kept
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Default Phone Map Blips [EDIT]
|
|||
|
|
-- [INFO] Predefined waypoints for the Map app. Add as many as you want.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.DefaultPhoneMapBlips = {
|
|||
|
|
{
|
|||
|
|
name = 'Hell Yeah', -- [EDIT] Display name.
|
|||
|
|
x = 0,
|
|||
|
|
y = 0, -- [EDIT] Map coordinates (Z not required).
|
|||
|
|
icon = 'https://cdn-icons-png.flaticon.com/512/0/619.png', -- [EDIT] URL to icon used in UI.
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Vehicle Rental [EDIT]
|
|||
|
|
-- [INFO] Rent points, vehicles and blip settings for the Rentel system.
|
|||
|
|
-- Key name “Rentel” is intentional for backward compatibility.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.FixedBlipName = true -- [EDIT] true: all rental spots use Config.RentelBlips.name; false: each spot uses its own key name.
|
|||
|
|
|
|||
|
|
Config.RentelBlips = { -- [EDIT] Global blip style for rental spots (used when FixedBlipName = true).
|
|||
|
|
name = 'Vehicle Rental',
|
|||
|
|
sprite = 379,
|
|||
|
|
display = 4,
|
|||
|
|
scale = 0.65,
|
|||
|
|
color = 3,
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Config.RentelVehicles = { -- [EDIT] Spawnable rental vehicles with price per session.
|
|||
|
|
['tribike3'] = { model = 'tribike3', label = 'Classic ARO 26', price = 100 },
|
|||
|
|
['bmx'] = { model = 'bmx', label = 'BMX Zprinter Myland', price = 120 },
|
|||
|
|
['panto'] = { model = 'panto', label = 'Smark Fortwo', price = 250 },
|
|||
|
|
['felon'] = { model = 'felon', label = 'Merced Benz E', price = 400 },
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
-- [INFO] Rental kiosks/terminals. Name keys are used when FixedBlipName = false.
|
|||
|
|
Config.RentelLocations = {
|
|||
|
|
-- ['Courthouse Paystation'] = { coords = vector4(129.93887, -898.53260, 30.148599, 166.04177) },
|
|||
|
|
-- ['Train Station'] = { coords = vector4(-213.40040, -1003.3420, 29.144016, 345.36584) },
|
|||
|
|
-- ['Bus Station'] = { coords = vector4(416.98699, -641.60240, 28.500173, 90.011344) },
|
|||
|
|
-- ['Morningwood Blvd'] = { coords = vector4(-1274.6310, -419.16560, 34.215377, 209.44560) },
|
|||
|
|
-- ['South Rockford Drive'] = { coords = vector4(-682.92620, -1112.9280, 14.525076, 37.729667) },
|
|||
|
|
-- ['Tinsel Towers Street'] = { coords = vector4(-716.93380, -58.314390, 37.472839, 297.83691) },
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Crypto App [EDIT]
|
|||
|
|
-- [INFO] Simulated crypto market with periodic price changes. Adjust bounds,
|
|||
|
|
-- volatility, and timers carefully to avoid destabilizing your economy.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Crypto = {
|
|||
|
|
Lower = 500, -- [EDIT] Absolute lower bound for coin value.
|
|||
|
|
Upper = 5000, -- [EDIT] Absolute upper bound for coin value.
|
|||
|
|
|
|||
|
|
History = { -- [CORE] Runtime price history buffer per coin.
|
|||
|
|
['btc'] = {}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
Worth = { -- [EDIT] Initial price per coin.
|
|||
|
|
['btc'] = 1000
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
Labels = { -- [EDIT] Display labels per coin.
|
|||
|
|
['btc'] = 'BTC'
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
Exchange = { -- [EDIT] In-world exchange terminal coordinates.
|
|||
|
|
coords = vector3(1276.21, -1709.88, 54.57),
|
|||
|
|
RebootInfo = { -- [ADV] Simulated maintenance/reboot state.
|
|||
|
|
state = false,
|
|||
|
|
percentage = 0
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
-- Auto update controls ---------------------------------------------------- [EDIT]
|
|||
|
|
Coin = 'btc', -- [EDIT] Ticker symbol to auto-refresh.
|
|||
|
|
RefreshTimer = 10, -- [EDIT] Minutes between updates.
|
|||
|
|
|
|||
|
|
-- Event chances (crash/luck spikes) -------------------------------------- [EDIT]
|
|||
|
|
ChanceOfCrashOrLuck = 2, -- [EDIT] % chance any tick triggers a spike.
|
|||
|
|
Crash = { 20, 80 }, -- [EDIT] If crash: % drop range.
|
|||
|
|
Luck = { 20, 45 }, -- [EDIT] If luck: % rise range.
|
|||
|
|
|
|||
|
|
-- Normal drift probabilities --------------------------------------------- [EDIT]
|
|||
|
|
-- [INFO] If no spike, decide down/up by these thresholds (out of 100).
|
|||
|
|
ChanceOfDown = 30, -- [EDIT] ≤ this → price goes down.
|
|||
|
|
ChanceOfUp = 60, -- [EDIT] ≥ this → price goes up.
|
|||
|
|
CasualDown = { 1, 10 }, -- [EDIT] % drop range when drifting down.
|
|||
|
|
CasualUp = { 1, 10 }, -- [EDIT] % rise range when drifting up.
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- SIM Card Vendor [EDIT]
|
|||
|
|
-- [INFO] Enable SIM card purchases to change phone numbers/metadata.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.EnableSimCard = false
|
|||
|
|
|
|||
|
|
Config.SimCardLocations = { -- [EDIT] Vendor(s) that sell SIMs.
|
|||
|
|
{
|
|||
|
|
coords = vec4(461.31878662109375, -1457.707763671875, 29.30237960815429, 23.81533050537109),
|
|||
|
|
model = 'a_m_m_beach_01', -- [EDIT] Ped model string.
|
|||
|
|
price = 5000, -- [EDIT] Price per SIM.
|
|||
|
|
blip = { -- [EDIT] Map marker config.
|
|||
|
|
sprite = 89,
|
|||
|
|
color = 1,
|
|||
|
|
scale = 0.5,
|
|||
|
|
name = 'Sim Card',
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Real-World Price Ticker (Optional) [EDIT]
|
|||
|
|
-- [INFO] Pulls live crypto price from CryptoCompare. Keep interval ≥ 2 minutes
|
|||
|
|
-- to avoid rate-limits. Add an API key to stabilize requests.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Ticker = {
|
|||
|
|
Enabled = true, -- [EDIT] true: show real-world price ticker.
|
|||
|
|
tick_time = 2, -- [EDIT] Minutes between fetches (min 2).
|
|||
|
|
|
|||
|
|
--- Error handle (do not touch) ------------------------------------------- [CORE]
|
|||
|
|
Error_handle = {
|
|||
|
|
['fsym is a required param.'] = 'Config error: Invalid / Missing coin name',
|
|||
|
|
['tsyms is a required param.'] = 'Config error: Invalid / Missing currency',
|
|||
|
|
['cccagg_or_exchange'] = 'Config error: Invalid currency / coin combination',
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Racing App Whitelist [EDIT]
|
|||
|
|
-- [INFO] Admins or whitelisted identifiers can create races.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.RaceSetupAllowed = false
|
|||
|
|
Config.WhitelistedCreators = {
|
|||
|
|
'PUTCID', -- [EDIT] Add license/identifier strings here.
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Instagram Privacy [EDIT]
|
|||
|
|
-- [INFO] Toggle global visibility of posts.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.InstagramShowAllPostsEveryone = true -- [EDIT] true: public feed; false: followers-only.
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- App Store · “Today” Panels [EDIT]
|
|||
|
|
-- [INFO] Featured banners on the App Store home.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.StoreAppToday = {
|
|||
|
|
{
|
|||
|
|
header = 'Arcade Games',
|
|||
|
|
head = 'Download and play the most bizarre games you will find!',
|
|||
|
|
image = 'https://media.istockphoto.com/id/1196066633/vector/retro-arcade-slot-machine-with-pixel-game.jpg?s=612x612&w=0&k=20&c=eOvAvSLE88KimO3y5qYH78OZhmKZRDTMnN-VPRBiJVU=',
|
|||
|
|
footer = 'Discover our new games in the App Store, play with your friends but dont forget to enjoy Roleplay!'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
header = 'Music everywhere',
|
|||
|
|
head = 'With Soundfy you can enjoy your favorite music everywhere!',
|
|||
|
|
image = 'https://images-om.imgix.net/9wut1wqkxjto/music-sheet-mockup-dark.jpg?auto=format&fit=max&q=90&w=1500&s=0d71895e030dbde00e0a333395074ee8',
|
|||
|
|
footer = 'Search for your favorite hits, create playlists and show your friends the real music, enjoy all this with Soundfy'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- App Store · Catalog [EDIT]
|
|||
|
|
-- [INFO] Register apps/games. `label` is the display name. `job` restricts by job,
|
|||
|
|
-- `blockedJobs` excludes jobs, `timeout` is mock download time (ms).
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.StoreApps = {
|
|||
|
|
{
|
|||
|
|
app = 'instagram', -- [CORE] Internal app id.
|
|||
|
|
image = 'img/apps/instagram.png', -- [EDIT] App icon path (NUI).
|
|||
|
|
label = 'Instagraph', -- [EDIT] Display name.
|
|||
|
|
job = false, -- [EDIT] false or { 'ambulance', ... }
|
|||
|
|
blockedJobs = {}, -- [EDIT] Jobs that cannot use.
|
|||
|
|
timeout = 10000, -- [EDIT] Download/install time (ms).
|
|||
|
|
creator = 'Instagraph, Inc', -- [EDIT] Publisher.
|
|||
|
|
category = 'Social', -- [EDIT] Category name.
|
|||
|
|
isGame = false, -- [EDIT] true for games.
|
|||
|
|
description = 'Photo and video application', -- [EDIT] Short description.
|
|||
|
|
age = '16+', -- [EDIT] Age rating string.
|
|||
|
|
extraDescription = { -- [EDIT] Extra panels inside detail page.
|
|||
|
|
{
|
|||
|
|
header = 'Instagraph',
|
|||
|
|
head = 'Share unique images and stories with Instagraph',
|
|||
|
|
image = 'https://i.ibb.co/0DWsBDf/instagram.webp',
|
|||
|
|
footer = 'Connect with friends, share what you do, or check out whats new from people around the world'
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'garage',
|
|||
|
|
image = 'img/apps/garage.png',
|
|||
|
|
label = 'iCar',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
timeout = 15000,
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
creator = 'Los Santos',
|
|||
|
|
category = 'Other',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Check and manage the garages of all Los Santos!',
|
|||
|
|
age = '16+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Los Santos Garages',
|
|||
|
|
head = 'Specialized application to control your vehicles or garages for all saints',
|
|||
|
|
image = 'https://i.ibb.co/4t8q7M1/garage.webp',
|
|||
|
|
footer = 'What are you waiting for to manage all your vehicles in the most comfortable way?'
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'twitter',
|
|||
|
|
image = 'img/apps/twitter.png',
|
|||
|
|
label = 'Tweedle',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 15000,
|
|||
|
|
creator = 'X Corp',
|
|||
|
|
category = 'social',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Post about your day and enjoy with your friends',
|
|||
|
|
age = '16+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Tweedle',
|
|||
|
|
head = 'The Tweedle app is the trusted global digital marketplace for everyone',
|
|||
|
|
image = 'https://i.ibb.co/bK1jp0q/twitter.webp',
|
|||
|
|
footer = 'Post content for everyone to see and participate in public conversations'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'bank',
|
|||
|
|
image = 'img/apps/bank.png',
|
|||
|
|
label = 'C. Banking',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 15000,
|
|||
|
|
creator = 'C. Banking',
|
|||
|
|
category = 'Productivity & Finance',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Post about your day and enjoy with your friends',
|
|||
|
|
age = '18+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Central Banking',
|
|||
|
|
head = 'Manage your money through Central Banking',
|
|||
|
|
image = 'https://i.ibb.co/sQRx7Yb/bank.webp',
|
|||
|
|
footer = 'Your money is always safe, we know you, we love you at Central Banking'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'whatsapp',
|
|||
|
|
image = 'img/apps/whatsapp.png',
|
|||
|
|
label = 'ChitChat',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 17000,
|
|||
|
|
creator = 'ChitChat Inc',
|
|||
|
|
category = 'social',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Chat with your friends now!',
|
|||
|
|
age = '16+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'ChitChat',
|
|||
|
|
head = 'Enjoy group chats and calls with your friends!',
|
|||
|
|
image = 'https://i.ibb.co/dcPPG7h/whatsapp.webp',
|
|||
|
|
footer = 'Contact your friends through your contacts and talk to them at any time'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'state',
|
|||
|
|
image = 'img/apps/state.png',
|
|||
|
|
label = 'State',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 14000,
|
|||
|
|
creator = 'Los Santos',
|
|||
|
|
category = 'Information & Reading',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Search for workers online',
|
|||
|
|
age = '9+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'State',
|
|||
|
|
head = 'Are you looking to communicate with a specific worker?',
|
|||
|
|
image = 'https://i.ibb.co/sKFvrmW/state.webp',
|
|||
|
|
footer = 'Call the most sought-after workers with the best reputation in Los Santos'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'spotify',
|
|||
|
|
image = 'img/apps/spotify.png',
|
|||
|
|
label = 'Soundfy',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 14000,
|
|||
|
|
creator = 'Soundfy Inc',
|
|||
|
|
category = 'Entertainment',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Listen and play albums',
|
|||
|
|
age = '3+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Soundfy',
|
|||
|
|
head = 'With Soundfy, listening to the radio or songs from your artists with their lyrics or downloading music and podcasts is very simple',
|
|||
|
|
image = 'https://i.ibb.co/bztwrsJ/spotify.webp',
|
|||
|
|
footer = 'Soundfy is the perfect platform to listen to your favorite music, radio and podcasts on your mobile, tablet, computer and more'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'youtube',
|
|||
|
|
image = 'img/apps/youtube.png',
|
|||
|
|
label = 'YouLink',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 19000,
|
|||
|
|
creator = 'Link Inc',
|
|||
|
|
category = 'Entertainment',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Watch videos online',
|
|||
|
|
age = '8+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'YouLink',
|
|||
|
|
head = 'Get the official YouLink application on your Phone',
|
|||
|
|
image = 'https://i.ibb.co/rm1cz8Y/youtube.webp',
|
|||
|
|
footer = 'Discover what topics are sweeping the world!'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'tinder',
|
|||
|
|
image = 'img/apps/tinder.png',
|
|||
|
|
label = 'Finder',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 19000,
|
|||
|
|
creator = '4Love',
|
|||
|
|
category = 'Social',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Find a partner and meet people',
|
|||
|
|
age = '18+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Finder',
|
|||
|
|
head = 'Are you looking for a partner? An open relationship?',
|
|||
|
|
image = 'https://i.ibb.co/yh8F0GS/tinder.webp',
|
|||
|
|
footer = 'With over 70 billion matches to date, Finder is the number one free dating app and the best place to meet people'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'yellowpages',
|
|||
|
|
image = 'img/apps/yellowpages.png',
|
|||
|
|
label = 'Yellow Posts',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 11000,
|
|||
|
|
creator = 'Los Santos',
|
|||
|
|
category = 'Information & Reading',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Buying and selling items online',
|
|||
|
|
age = '18+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Yellow Posts',
|
|||
|
|
head = 'Find and sell items online',
|
|||
|
|
image = 'https://i.ibb.co/RvLkNJK/yellowpages.webp',
|
|||
|
|
footer = 'Find your favorite product or sell your belongings at Yellow Posts Los Santos'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'rentel',
|
|||
|
|
image = 'img/apps/rentel.png',
|
|||
|
|
label = 'Aventon',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 12000,
|
|||
|
|
creator = 'Aventon Tech',
|
|||
|
|
category = 'Other',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Rent a car now!',
|
|||
|
|
age = '16+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Aventon',
|
|||
|
|
head = 'Find your ideal vehicle and rent it',
|
|||
|
|
image = 'https://i.ibb.co/bPgfgd4/rental.webp',
|
|||
|
|
footer = 'Rent vehicles and pick them up at the Aventon spot in Los Santos'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'uber',
|
|||
|
|
image = 'img/apps/uber.png',
|
|||
|
|
label = 'Door Run',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 18000,
|
|||
|
|
creator = 'doorRun SLU',
|
|||
|
|
category = 'Other',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Work with us by placing orders',
|
|||
|
|
age = '6+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Door Run',
|
|||
|
|
head = 'Work at Door Run with just one click!',
|
|||
|
|
image = 'https://i.ibb.co/sy9PGfR/ubereats.webp',
|
|||
|
|
footer = 'Visit the most hidden places in Los Santos delivering orders for Door Run'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'darkweb',
|
|||
|
|
image = 'img/apps/darkweb.png',
|
|||
|
|
label = 'Onion Browser',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = { 'police' }, -- or { 'ambulance' }
|
|||
|
|
timeout = 12000,
|
|||
|
|
creator = 'Thor',
|
|||
|
|
category = 'Other',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'The deepest of the internet',
|
|||
|
|
age = '18+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Onion Browser',
|
|||
|
|
head = 'Discover the darkest stores on the internet',
|
|||
|
|
image = 'https://i.ibb.co/J2v1nnZ/darkweb.webp',
|
|||
|
|
footer = 'Buying and selling anonymous weapons with unique serial numbers'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'racing',
|
|||
|
|
image = 'img/apps/racing.png',
|
|||
|
|
label = 'Racing',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = { 'police' }, -- or { 'ambulance' }
|
|||
|
|
timeout = 21000,
|
|||
|
|
creator = 'Insane Team',
|
|||
|
|
category = 'Other',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Urban racing in a single app',
|
|||
|
|
age = '18+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Racing',
|
|||
|
|
head = 'Join street racing in Los Santos',
|
|||
|
|
image = 'https://i.ibb.co/2cynM0k/racing.webp',
|
|||
|
|
footer = 'Compete for the prize, participate in races and appear at the top of Los Santos Racing'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'darkchat',
|
|||
|
|
image = 'img/apps/darkchat.png',
|
|||
|
|
label = 'D-Chat',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = { 'police' }, -- or { 'ambulance' }
|
|||
|
|
timeout = 12000,
|
|||
|
|
creator = 'Thor',
|
|||
|
|
category = 'Other',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Private chats without registrations',
|
|||
|
|
age = '18+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'D-Chat',
|
|||
|
|
head = 'Create your forum and chat with other people without any fear of data disclosure',
|
|||
|
|
image = 'https://i.ibb.co/K2qznvW/darkchat.png',
|
|||
|
|
footer = 'D-Chat works hosted by each user, so there is no way to recover or track messages'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'uberRider',
|
|||
|
|
image = 'img/apps/uberRider.png',
|
|||
|
|
label = 'Drive Now',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 22000,
|
|||
|
|
creator = 'Drive Tech',
|
|||
|
|
category = 'Other',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Tax-free travel',
|
|||
|
|
age = '18+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Drive Now',
|
|||
|
|
head = 'Request your trips or even sign up among our drivers',
|
|||
|
|
image = 'https://i.ibb.co/wd5BPJ4/uber.webp',
|
|||
|
|
footer = 'The safest website for your trips in all Los Santos'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'tiktok',
|
|||
|
|
image = 'img/apps/tiktok.png',
|
|||
|
|
label = 'TickTock',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 29000,
|
|||
|
|
creator = 'TickTock Inc',
|
|||
|
|
category = 'Social',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Upload videos with your friends',
|
|||
|
|
age = '12+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'TickTock',
|
|||
|
|
head = 'Be number one by posting the funniest videos',
|
|||
|
|
image = 'https://i.ibb.co/kKJqbyn/tiktok.webp',
|
|||
|
|
footer = 'Upload videos, listen to music, compete with your friends for the best post'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'market',
|
|||
|
|
image = 'img/apps/market.png',
|
|||
|
|
label = 'Marketplace',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 29000,
|
|||
|
|
creator = 'Los Santos',
|
|||
|
|
category = 'Other',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Your favorite shops',
|
|||
|
|
age = '9+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Marketplace',
|
|||
|
|
head = 'The best shops in Los Santos have arrived',
|
|||
|
|
image = 'https://i.ibb.co/cJ1yPjL/market.webp',
|
|||
|
|
footer = 'Place your orders or even manage your business with Marketplace'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'discord',
|
|||
|
|
image = 'img/apps/discord.png',
|
|||
|
|
label = 'Catcord',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 13000,
|
|||
|
|
creator = 'Catcord Inc',
|
|||
|
|
category = 'Social',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Channels to chat',
|
|||
|
|
age = '12+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Catcord',
|
|||
|
|
head = 'Channels to chat with your friends',
|
|||
|
|
image = 'https://i.ibb.co/vmtL0MK/discord.webp',
|
|||
|
|
footer = 'Create and manage your own channels with Catcord!'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'jobcenter',
|
|||
|
|
image = 'img/apps/jobcenter.png',
|
|||
|
|
label = 'Centru de Locuri de Munca',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 16000,
|
|||
|
|
creator = 'Jobs SLU',
|
|||
|
|
category = 'Other',
|
|||
|
|
isGame = false,
|
|||
|
|
description = 'Gaseste un loc de munca rapid',
|
|||
|
|
age = '18+',
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Centru de Locuri de Munca',
|
|||
|
|
head = 'Cauta locuri de munca online cu Likedin',
|
|||
|
|
image = 'https://i.ibb.co/dMmQJqS/jobcenter.webp',
|
|||
|
|
footer = 'Fii angajat de cele mai bune companii din Los Santos cu Likedin!'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
-- Games
|
|||
|
|
{
|
|||
|
|
app = 'fruitchop',
|
|||
|
|
image = 'https://cdn.jim-nielsen.com/ios/512/fruit-ninja-2020-08-31.png',
|
|||
|
|
label = 'Fruit Chop',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 28000,
|
|||
|
|
creator = 'Gamezop Inc',
|
|||
|
|
category = 'Games',
|
|||
|
|
description = 'Slide cutting fruits',
|
|||
|
|
age = '3+',
|
|||
|
|
isGame = true,
|
|||
|
|
game = {
|
|||
|
|
name = 'fruitchop',
|
|||
|
|
iframe = 'https://cdn-factory.marketjs.com/en/fruit-slice-frenzy/index.html',
|
|||
|
|
css = {
|
|||
|
|
-- If you make it with css, you can use it like this .fruitchop-app iframe { css values },
|
|||
|
|
width = '215%',
|
|||
|
|
height = '50%',
|
|||
|
|
transform = 'rotate(90deg)', -- Required for rotate
|
|||
|
|
border = 'none',
|
|||
|
|
position = 'absolute',
|
|||
|
|
left = '-60%',
|
|||
|
|
top = '25%',
|
|||
|
|
},
|
|||
|
|
rotate = true
|
|||
|
|
},
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Fruit Chop',
|
|||
|
|
head = 'Cut the fruits in time to win!',
|
|||
|
|
image = 'https://assets1.ignimgs.com/2016/05/20/fruit-ninjajpg-6da9b1_160w.jpg?width=1280',
|
|||
|
|
footer = 'Intuitive game that allows you to cut fruits and earn many rewards'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'chikenblast',
|
|||
|
|
image = 'https://i.ibb.co/tBbDWqL/3.webp',
|
|||
|
|
label = 'Chiken Blast',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 28000,
|
|||
|
|
creator = 'Gamezop Inc',
|
|||
|
|
category = 'Games',
|
|||
|
|
description = 'Collect colorful chickens and complete the game',
|
|||
|
|
age = '16+',
|
|||
|
|
isGame = true,
|
|||
|
|
game = {
|
|||
|
|
name = 'chikenblast',
|
|||
|
|
iframe = 'https://cdn-factory.marketjs.com/en/chicken-blast/index.html',
|
|||
|
|
css = {
|
|||
|
|
-- If you make it with css, you can use it like this .chikenblast-app iframe { css values },
|
|||
|
|
width = '215%',
|
|||
|
|
height = '50%',
|
|||
|
|
transform = 'rotate(90deg)', -- Required for rotate
|
|||
|
|
border = 'none',
|
|||
|
|
position = 'absolute',
|
|||
|
|
left = '-60%',
|
|||
|
|
top = '25%',
|
|||
|
|
},
|
|||
|
|
rotate = true
|
|||
|
|
},
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Chiken Blast',
|
|||
|
|
head = 'Collect colorful chickens and complete the game',
|
|||
|
|
image = 'https://www.marketjs.com/item/chicken-blast/chicken-blast.jpg',
|
|||
|
|
footer = 'The most played chicken game this 2024'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'kingkongracing',
|
|||
|
|
image = 'https://i.ibb.co/p0Xp9DS/2.webp',
|
|||
|
|
label = 'Kong Kong Racing',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 28000,
|
|||
|
|
creator = 'Gamezop Inc',
|
|||
|
|
category = 'Games',
|
|||
|
|
description = 'Epic monkey races',
|
|||
|
|
age = '3+',
|
|||
|
|
isGame = true,
|
|||
|
|
game = {
|
|||
|
|
name = 'kingkongracing',
|
|||
|
|
iframe = 'https://cdn-factory.marketjs.com/en/king-kong-kart-racing/index.html',
|
|||
|
|
css = {
|
|||
|
|
-- If you make it with css, you can use it like this .kingkongracing-app iframe { css values },
|
|||
|
|
width = '215%',
|
|||
|
|
height = '50%',
|
|||
|
|
transform = 'rotate(90deg)', -- Required for rotate
|
|||
|
|
border = 'none',
|
|||
|
|
position = 'absolute',
|
|||
|
|
left = '-60%',
|
|||
|
|
top = '25%',
|
|||
|
|
},
|
|||
|
|
rotate = true
|
|||
|
|
},
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'Kong Kong Racing',
|
|||
|
|
head = 'Epic monkey races',
|
|||
|
|
image = 'https://a.silvergames.com/screenshots/king-kong-kart-racing/2_kart-race.jpg',
|
|||
|
|
footer = 'Be the champion of the world of monkeys!'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'mmacitybrawl',
|
|||
|
|
image = 'https://i.ibb.co/pvQpJHp/1.webp',
|
|||
|
|
label = 'MMA City Brawl',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
timeout = 28000, --28000,
|
|||
|
|
creator = 'Gamezop Inc',
|
|||
|
|
category = 'Games',
|
|||
|
|
description = 'Online street fights!',
|
|||
|
|
age = '18+',
|
|||
|
|
isGame = true,
|
|||
|
|
game = {
|
|||
|
|
name = 'mmacitybrawl',
|
|||
|
|
iframe = 'https://cdn-factory.marketjs.com/en/mma-city-brawl/index.html',
|
|||
|
|
css = {
|
|||
|
|
-- If you make it with css, you can use it like this .mmacitybrawl-app iframe { css values },
|
|||
|
|
width = '215%',
|
|||
|
|
height = '50%',
|
|||
|
|
transform = 'rotate(90deg)', -- Required for rotate
|
|||
|
|
border = 'none',
|
|||
|
|
position = 'absolute',
|
|||
|
|
left = '-60%',
|
|||
|
|
top = '25%',
|
|||
|
|
},
|
|||
|
|
rotate = true
|
|||
|
|
},
|
|||
|
|
extraDescription = {
|
|||
|
|
{
|
|||
|
|
header = 'MMA City Brawl',
|
|||
|
|
head = 'Online street fights!',
|
|||
|
|
image = 'https://www.marketjs.com/item/mma-city-brawl/mma-city-brawl.jpg',
|
|||
|
|
footer = 'Fight with other players to be the champion!'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Config.CustomApplications = {}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Auto-append custom apps into the App Store [AUTO]
|
|||
|
|
-- [INFO] Everything you place in Config.CustomApplications will appear in the
|
|||
|
|
-- App Store (Config.StoreApps) without touching core code.
|
|||
|
|
for _, v in pairs(Config.CustomApplications) do
|
|||
|
|
table.insert(Config.StoreApps, v)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Installed Phone Applications [EDIT]
|
|||
|
|
-- [INFO] Defines which apps are installed/visible on the device by default.
|
|||
|
|
-- Fields:
|
|||
|
|
-- • app [CORE] Internal id (must match the app implementation name)
|
|||
|
|
-- • image [EDIT] NUI icon path
|
|||
|
|
-- • label [EDIT] Display name (translatable)
|
|||
|
|
-- • job [EDIT] false or { 'job1','job2',... } to restrict access
|
|||
|
|
-- • blockedJobs [EDIT] jobs that cannot use/open app
|
|||
|
|
-- • category [EDIT] Grouping for App Store / UI
|
|||
|
|
-- • hideInSettingsNotifications [EDIT] hide this app from Notification Settings UI
|
|||
|
|
-- • notificationSound [EDIT] override sound ('' or nil → default)
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.PhoneApplications = {
|
|||
|
|
{
|
|||
|
|
app = 'phone', -- [CORE]
|
|||
|
|
image = 'img/apps/phone.png', -- [EDIT]
|
|||
|
|
label = 'Phone', -- [EDIT]
|
|||
|
|
job = false, -- [EDIT] or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- [EDIT] or { 'ambulance' }
|
|||
|
|
category = 'Social', -- [EDIT]
|
|||
|
|
hideInSettingsNotifications = true, -- [EDIT] true: not listed in Settings → Notifications
|
|||
|
|
notificationSound = '', -- [EDIT] set to '' or remove line to use default sound
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'messages',
|
|||
|
|
image = 'img/apps/messages.png',
|
|||
|
|
label = 'Messages',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
category = 'Social',
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'settings',
|
|||
|
|
image = 'img/apps/settings.png',
|
|||
|
|
label = 'Settings',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
category = 'Utilities',
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
blockBadge = true
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'camera',
|
|||
|
|
image = 'img/apps/camera.png',
|
|||
|
|
label = 'Camera',
|
|||
|
|
category = 'Creativity',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'contacts',
|
|||
|
|
image = 'img/apps/contacts.png',
|
|||
|
|
label = 'Contacts',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
category = 'Social',
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'mail',
|
|||
|
|
image = 'img/apps/mail.png',
|
|||
|
|
label = 'Mail',
|
|||
|
|
category = 'Productivity & Finance',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'weather',
|
|||
|
|
image = 'img/apps/weather.png',
|
|||
|
|
label = 'Weather',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
category = 'Information & Reading',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'calendar',
|
|||
|
|
image = 'img/apps/calendar.png',
|
|||
|
|
label = 'Calendar',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
category = 'Productivity & Finance',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'reminder',
|
|||
|
|
image = 'img/apps/reminders.png',
|
|||
|
|
label = 'Reminders',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
category = 'Productivity & Finance',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'gallery',
|
|||
|
|
image = 'img/apps/gallery.png',
|
|||
|
|
label = 'Gallery',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
category = 'Creativity',
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'health',
|
|||
|
|
image = 'img/apps/health.png',
|
|||
|
|
label = 'Health',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
category = 'Creativity',
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'notes',
|
|||
|
|
image = 'img/apps/notes.png',
|
|||
|
|
label = 'Notes',
|
|||
|
|
category = 'Productivity & Finance',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
hideInSettingsNotifications = true
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'calculator',
|
|||
|
|
image = 'img/apps/calculator.png',
|
|||
|
|
label = 'Calculator',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
category = 'Utilities',
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
hideInSettingsNotifications = true
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'store',
|
|||
|
|
image = 'img/apps/store.png',
|
|||
|
|
label = 'App Store',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
category = 'Utilities',
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'crypto',
|
|||
|
|
image = 'img/apps/stock.png',
|
|||
|
|
label = 'Stock',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
category = 'Productivity & Finance',
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'clock',
|
|||
|
|
image = 'img/apps/clock.png',
|
|||
|
|
label = 'Clock',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
category = 'Utilities',
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'houses',
|
|||
|
|
image = 'img/apps/houses.png',
|
|||
|
|
label = 'Home',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
category = 'Utilities',
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'weazel',
|
|||
|
|
image = 'img/apps/news.png',
|
|||
|
|
label = 'News',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
category = 'Other',
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'map',
|
|||
|
|
image = 'img/apps/maps.png',
|
|||
|
|
label = 'Maps',
|
|||
|
|
category = 'Utilities',
|
|||
|
|
job = nil,
|
|||
|
|
blockedJobs = {}, -- or { 'ambulance' }
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'safari',
|
|||
|
|
category = 'Utilities',
|
|||
|
|
label = 'Safari',
|
|||
|
|
game = {
|
|||
|
|
iframe = 'https://yep.com',
|
|||
|
|
rotate = false,
|
|||
|
|
name = 'safari',
|
|||
|
|
css = {
|
|||
|
|
top = '0',
|
|||
|
|
border = 'none',
|
|||
|
|
height = '100%',
|
|||
|
|
position = 'absolute',
|
|||
|
|
width = '100%'
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
image = 'img/apps/safari.png',
|
|||
|
|
blockedJobs = {}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
app = 'facetime',
|
|||
|
|
image = 'img/apps/facetime.png',
|
|||
|
|
label = 'FaceTime',
|
|||
|
|
category = 'Social',
|
|||
|
|
job = false, -- or { 'ambulance' }
|
|||
|
|
blockedJobs = {}
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
-- Debug & Developer Tools [ADV]
|
|||
|
|
-- [INFO] Use only during testing or development. Enabling these options will
|
|||
|
|
-- generate frequent console logs, performance data, and internal info.
|
|||
|
|
-- Avoid enabling on production servers to prevent spam and overhead.
|
|||
|
|
--──────────────────────────────────────────────────────────────────────────────
|
|||
|
|
Config.Debug = false -- [EDIT] Enables global debug mode (prints/logs most events).
|
|||
|
|
Config.ZoneDebug = false -- [EDIT] Shows zone/region checks (e.g., signal zones).
|
|||
|
|
Config.DeleteStoriesAndNotifies = false -- [EDIT] Deletes all stories and notifications upon script reload/start.
|
|||
|
|
Config.DeleteNotificationsAutomatically = false -- [EDIT] Automatically deletes notifications after timeout (set false to disable).
|
|||
|
|
|
|||
|
|
-- [INFO] Safety override: if phones are not unique (shared metadata),
|
|||
|
|
-- ownership restriction on F1 open is disabled automatically.
|
|||
|
|
if not Config.UniquePhone then
|
|||
|
|
Config.KeyOpenOnlyOwnedPhone = false
|
|||
|
|
end
|