Everything you need to get OOS Scripts running on your server.
All OOS Scripts follow the same installation process.
After purchasing, head to portal.cfx.re → My Assets, find the script and download the latest version.
Unzip the file and place the folder in your server's resources/
directory.
Add only the scripts that you use to your server.cfg.
ensure oos-notify ensure oos-advancedstorecreator ensure oos-chat ensure oos-scoreboard
Each script has its own config.lua. Refer to the sections below for all
available options.
Many OOS scripts feature open-source files that you can modify. These allow you to fully customize the logic or UI to match your server's unique needs.
Open config.lua in the oos-notify folder
and adjust to your server.
--[[ OOS Notify - Configuration https://oos-scripts.com/ ]] Config = {} -- ============================================================ -- SOUNDS -- ============================================================ -- Volume for notifications (0.0 - 1.0) Config.SoundVolume = 0.5 -- Volume for announcements (0.0 - 1.0) Config.AnnouncementVolume = 0.9 -- ============================================================ -- NOTIFICATIONS -- ============================================================ -- Default display time in ms (5000 = 5 seconds) Config.DefaultDuration = 5000 -- Max notifications visible at once Config.MaxNotifications = 5 -- Slide animation speed in ms Config.AnimationDuration = 800 -- ============================================================ -- POSITION -- ============================================================ -- Options: 'top-right', 'top-left', 'bottom-right', 'bottom-left' Config.Position = 'top-right' -- Offset from the vertical edge in pixels Config.OffsetY = 40 -- Offset from the horizontal edge in pixels Config.OffsetX = 19 -- ============================================================ -- ANNOUNCEMENTS -- ============================================================ -- Display time for announcements in ms Config.AnnouncementDuration = 10000 -- Enable/disable individual txAdmin event integrations Config.EnableTxAdminAnnouncements = true Config.EnableTxAdminShutdown = true Config.EnableTxAdminRestart = true Config.EnableTxAdminRestartSkipped = true -- ============================================================ -- LABELS -- Title text shown in announcement banners -- ============================================================ Config.Labels = { ServerAnnouncement = 'SERVER ANNOUNCEMENT', ServerOffline = 'SERVER OFFLINE', Restart = 'RESTART', RestartCancelled = 'RESTART CANCELLED', SaveProgress = 'Save your progress!', By = 'By', } -- ============================================================ -- COLORS -- Accent colors per notification type (valid CSS color values) -- ============================================================ Config.Colors = { success = { from = '#10b981', to = '#059669', }, error = { from = '#ef4444', to = '#dc2626', }, info = { from = '#3b82f6', to = '#2563eb', }, warning = { from = '#fbbf24', to = '#f59e0b', }, money = { from = '#ffd700', mid = '#ffb700', to = '#ff8c00', glow = 'rgba(255, 215, 0, 0.5)', iconGlow = 'rgba(255, 215, 0, 0.6)', }, announcement = { from = '#fbbf24', to = '#fcd34d', }, } -- ============================================================ -- BACKGROUNDS -- Use rgba() to control transparency (4th value = opacity) -- ============================================================ -- Background of notification cards Config.NotificationBackground = 'rgba(35, 35, 40, 0.85)' -- Background of the announcement banner Config.AnnouncementBackground = 'rgba(35, 35, 40, 0.85)'
Trigger notifications from any resource on your server using exports or client events.
Client side
exports['oos-notify']:Alert('Title', 'Message', 5000, 'type')
Server side
TriggerClientEvent('oos-notify:alert', source, 'Title', 'Message', 5000, 'type')
-- Alert(title, message, duration, type) exports['oos-notify']:Alert('Success', 'Item purchased!', 5000, 'success') exports['oos-notify']:Alert('Error', 'Not enough money.', 5000, 'error') exports['oos-notify']:Alert('Info', 'Server restarts in 10 minutes.', 8000, 'info') exports['oos-notify']:Alert('Warning', 'You are in a restricted area.', 5000, 'warning') exports['oos-notify']:Alert('Salary', 'You received $500.', 5000, 'money') -- Announcement(title, message, duration) exports['oos-notify']:Announcement('EVENT', 'A new race has started!', 10000) -- Update the visible announcement exports['oos-notify']:UpdateAnnouncement('EVENT', 'Race ends in 2 minutes!', 8000) -- Hide the current announcement exports['oos-notify']:HideAnnouncement()
-- Send a notification to a single player (use -1 for all) TriggerClientEvent('oos-notify:alert', source, 'Info', 'Your shift has started.', 5000, 'info') -- Broadcast a notification to all players TriggerClientEvent('oos-notify:alert', -1, 'Event', 'A heist is now active!', 8000, 'warning') -- Show a server announcement to all players TriggerClientEvent('oos-notify:announcement', -1, 'ANNOUNCEMENT', 'Welcome to the server!', 10000) -- Hide the announcement for all players TriggerClientEvent('oos-notify:hideAnnouncement', -1)
| Name | Side | Parameters |
|---|---|---|
| exports['oos-notify']:Alert | Client | title, message, duration, type |
| exports['oos-notify']:Announcement | Client | title, message, duration |
| exports['oos-notify']:UpdateAnnouncement | Client | title, message, duration |
| exports['oos-notify']:HideAnnouncement | Client | — |
| oos-notify:alert | Client event | title, message, duration, type |
| oos-notify:announcement | Client event | title, message, duration |
| oos-notify:updateAnnouncement | Client event | title, message, duration |
| oos-notify:hideAnnouncement | Client event | — |
OOS Notify hooks into txAdmin events automatically. It handles restarts, shutdowns and announcements — so you get a consistent UI instead of overlapping native alerts.
To ensure OOS Notify handles these correctly, navigate to your txAdmin panel and go to:
Settings > Game > Notifications Settings
And Disable the following:
Most setup happens in-game. Shop locations, items, prices, blips and peds are all
configured through the in-game admin menu. The config.lua below only covers
global defaults and system settings.
/storecreator
Opens the store creator admin panel. Requires an ace permission or a qualifying framework group (see config below).
Open config.lua in the oos-advancedstorecreator folder
and adjust to your server.
Config = {} --[[ FRAMEWORK SETTINGS ]] -- Options: "auto", "ESX", "QBCore", "Qbox", "custom" Config.Framework = "auto" --[[ NOTIFICATION SYSTEM ]] -- Options: "auto", "oos-notify", "ox_lib", "wasabi_notify", "okoknotify", "qbcore", "custom" Config.Notifications = "auto" --[[ TEXT UI SYSTEM ]] -- Options: "auto", "oos-textui", "okoktextui", "ox_lib", "ps-ui", "qb-core", "custom" Config.DrawText = "auto" --[[ INVENTORY SYSTEM ]] -- Options: "auto", "ox_inventory", "ps-inventory", "qb-inventory", "codem_inventory", "custom" Config.Inventory = "auto" --[[ TARGET SYSTEM ]] -- Options: "auto", "ox_target", "qb-target", "custom" Config.Target = "auto" -- Command to open the admin store creator menu Config.AdminCommand = 'storecreator' -- Admin permission settings Config.AdminPermissions = { acePermission = 'oos.storecreator', -- add_ace identifier.xxx oos.storecreator allow frameworkGroups = { 'admin', 'superadmin', 'god' }, requireBoth = false -- true = need BOTH ace + group } -- Default tax rate as percentage (0 = no tax) Config.DefaultTaxRate = 0 -- Default blip settings for new shops -- Most blip settings can be changed per-shop in-game Config.BlipDefaults = { enabled = true, sprite = 52, color = 2, scale = 0.7, shortRange = true } -- Interaction distance (metres) Config.InteractionDistance = 2.0 Config.MarkerDrawDistance = 15.0 -- Ground marker appearance Config.Marker = { type = 2, zOffset = -0.15, width = 0.4, height = 0.2, color = { r = 255, g = 204, b = 0, a = 200 }, rotationSpeed = 0.8 } -- Maximum items per purchase Config.MaxPurchaseQuantity = 100 -- Rate limits (ms) — prevents spam Config.RateLimits = { purchase = 2000, sell = 2000, adminSave = 1000 } -- Session token expiry in seconds Config.TokenExpiry = 300 -- Set to true to diagnose issues, false in production Config.Debug = false -- Active locale -- Available: 'en', 'nl', 'de', 'es', 'fr', 'pt', 'tr', 'ar', 'pl' -- Add your own by creating a file in locales/ and setting this value Config.Locale = 'en' -- Currency symbol shown in the shop UI Config.CurrencySymbol = '$' -- Default ped settings for new shops -- Peds can be customised or disabled per-shop in-game Config.PedDefaults = { enabled = false, model = 'mp_m_shopkeep_01', heading = 0.0, scenario = 'WORLD_HUMAN_STAND_IMPATIENT', distance = 30.0, frozen = true, invincible = true } -- NPC handover animation after a successful purchase Config.NpcAnim = { enabled = true, dict = 'mp_common', anim = 'givetake1_b', duration = 3000, } -- Player animations when interacting with shops Config.Animations = { enabled = true, shopOpen = { dict = 'amb@prop_human_atm@male@idle_a', anim = 'idle_a', duration = 1500, }, payment = { dict = 'missheistdockssetup1clipboard@idle_a', anim = 'idle_a', duration = 1500, } }
After starting the script and getting into your server, use the admin command to open the store creator panel.
Type /storecreator in chat (requires ace permission oos.storecreator or an admin group).
Brands are the parent of your shops (e.g. "Burgershot", "24/7"). The brand name is used as the shop display name.
Walk to the location where you want the shop, open the panel and place it at your current position. Configure the blip, marker, ped and interaction type in the UI.
Add buy and/or sell items directly in the in-game panel. Set prices, quantities and the item name as it appears in your inventory.
Hit Save — the shop is live immediately. No server restart needed.
Ace Permissions & Groups: To grant a player access to the store creator, you can use Ace permissions or framework groups. The script can check for specific groups in ESX, QBCore, etc.
add_ace identifier.steam:110000112345678 oos.storecreator allow -- or for a group: add_ace group.admin oos.storecreator allow
/chatmanager
Opens the chat manager admin panel. Requires an ace permission or a qualifying framework group (see config below).
Open config.lua in the oos-chat folder and adjust to your
server.
Config = {} --[[ FRAMEWORK SETTINGS ]] -- Options: "auto", "ESX", "QBCore", "Qbox" Config.Framework = "auto" --[[ GENERAL SETTINGS ]] Config.ServerName = 'My Server' Config.Locale = 'en' Config.DateFormat = '%H:%M' --[[ STAFF PERMISSIONS ]] -- These require a server restart when changed Config.StaffPermissions = { acePermission = 'oos.chat.staff', frameworkGroups = { 'admin', 'superadmin', 'god' }, requireBoth = false }
Navigate to the in-game chat manager to fully configure and moderate the real-time chat experience.
Type /chatmanager in the chat (requires ace permission oos.chat.staff or an admin group).
Instantly clear the entire chat, clear an individual player's chat history, or monitor active messages effectively from the sleek UI.
Easily create, customize, or delete custom commands natively via the web panel. Define jobs, permissions, colors, and specific functionality—all with dynamic command suggestions automatically showing in chat.
Toggle features like Out Of Character (OOC) chat, automatic command suggestions, or visual themes dynamically, without needing to touch a single line of code.
Ace Permissions & Groups: To grant a player access to the chat manager, you can use Ace permissions or framework groups. The script can check for specific groups in ESX, QBCore, etc.
add_ace identifier.steam:110000112345678 oos.chat.staff allow -- or for a group: add_ace group.admin oos.chat.staff allow
Press F10 or type /scoreboard
/scoreboardadmin
Opens the scoreboard admin panel. Requires an ace permission or a qualifying framework group (see config below).
Open config.lua in the oos-scoreboard folder and adjust
to your
server.
Config = {} --[[ FRAMEWORK SETTINGS ]] -- Options: "auto", "ESX", "QBCore", "Qbox" Config.Framework = "auto" --[[ GENERAL SETTINGS ]] Config.ServerName = false -- Set to string, or false to use Locale default Config.Locale = 'en' --[[ STAFF PERMISSIONS ]] -- These require a server restart when changed Config.StaffPermissions = { acePermission = 'oos.scoreboard.staff', frameworkGroups = { 'admin', 'superadmin', 'god' }, requireBoth = false } --[[ KEYBIND ]] -- The key the player presses to open the scoreboard. -- Players can rebind this in the FiveM keybindings menu after first launch. Config.Keybind = 'F10' --[[ COMMANDS ]] -- /scoreboard opens the scoreboard (alternative to the keybind). -- /scoreboardadmin opens the admin panel for staff. Config.OpenCommand = 'scoreboard' Config.AdminCommand = 'scoreboardadmin'
Navigate to the in-game scoreboard admin panel to configure the scoreboard layout, player lists, robberies and more.
Type /scoreboardadmin in the chat (requires ace permission oos.scoreboard.staff or an admin group).
Dynamically enable or disable the player list, adjust the maximum number of visible players, and choose whether to hide or show specific elements.
Easily define online job requirements for various robberies or activities, and toggle their visibility directly in the admin panel.
Instantly change visual elements such as the server logo and the overall layout without touching any code or restarting the server.
Ace Permissions & Groups: To grant a player access to the scoreboard admin, you can use Ace permissions or framework groups. The script can check for specific groups in ESX, QBCore, etc.
add_ace identifier.steam:110000112345678 oos.scoreboard.staff allow -- or for a group: add_ace group.admin oos.scoreboard.staff allow
Connect your Discord account to automatically claim your Customer Role, get priority support, and access exclusive server giveaways!