Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 276 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

Sonoran CAD

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Tutorials

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Integration Capabilities

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Steam Browser - Clear Cache

Learn how to clear your Steam browser's cache.

1. Open the Settings Page

In the Steam application, navigate to Steam > Settings

Steam - Open Settings

2. Clear Web Browser Cache

In the settings page, select Web Browser > Delete Web Browser Cache

Getting Started

Looking to use Sonoran CAD with your community? Check out our getting started guides below!

Registering Your Account

Create your Sonoran CAD account to create a new community, or join an existing one. It's fast, easy, and free!

Registering Your Account

Registering Your Community

Registering your community and creating your CAD is free and only takes seconds! See our guide below:

Desktop App - Clear Cache

This guide covers how to clear your Windows Desktop app cache.

You may need to manually clear your Sonoran CAD desktop application's cache for troubleshooting steps. The guide below will walk you through the process.

1. Open Your AppData Folder

In the window search bar type run and open the run application. Enter appdata then hit Ok

Registering Your Community

Registering your community and creating a CAD is fast, easy, and free!

NOTE: If you have not already, you will need to with Sonoran CAD.

1. Enter In Your Community Information

Once logged in, press "Create Community" on the community selection menu. You will be prompted for three information fields:

Web Browser - Clear Cache

This guide covers how to clear your desktop browser's cache.

You may need to manually clear your Sonoran CAD desktop browser's cache for troubleshooting steps. The guide below will walk you through the process.

Chrome - Hard Refresh

Most modern browsers allow you to hold Shift and click Refresh at the same time. Doing so will reload the page with your local cache cleared.

Registering Your Account

Register your account with Sonoran CAD to easily create a new community, or join an existing one.

1. Navigate to the Login Page

On the website or app, select one of the login options:

Users can register a Sonoran Software account at .

Registering Your Community
Windows - Run AppData

2. Delete the Cache Folder

Navigate to Roaming > Sonoran CAD and delete the Cache, Local Storage, and Session Storage folders.

Desktop App - Cache Folders
Community Name
  • Website (Optional)

  • The community CAD registration modal is shown as above

    2. Register Your Community

    Once you've filled out the information, press "Register Community" to create your CAD. Your community icon will now be displayed under the "My Communities" section. You can click on this to log into your new CAD.

    create a user account
    Chrome - Settings

    In the Chrome address bar, paste the following: chrome://settings/clearBrowserData?search=cache

    Select the following options and press Clear Data.

    Chrome - Clear Cache
    2. Verify Your Email Address

    Account verification emails may not be shown in your primary inbox.

    If you're having trouble finding the email, check your spam, junk, promotions, or all mail folder.

    If you've registered a new account, check your inbox for an email from Sonoran CAD. Select the "Verify Email" button, and your account will be automatically verified.

    Account verification emails are sent as shown above
    account.sonoransoftware.com
    Steam - Clear Browser Cache

    Steam Browser - Workaround

    Lean how to more easily view Sonoran CAD while in-game.

    Sonoran CAD - In-Game Use

    Introduction

    Many users utilize Steam's browser/overlay system. The Steam browser utilizes an out-of-date version of CEF to run. Because of this, the Steam browser is known for it's infamous freezing, lagging, and general lack of support for developers.

    While the Steam browser works well for basic websites, some users may experience issues with larger web apps like Sonoran CAD.

    Accessing the CAD In-Game

    1. Download the Desktop App

    . This allows support for our , , and more!

    2. Configure your Hotkey

    Once you've opened the desktop app, open the settings modal to configure your show hotkey. When pressed, this will open the desktop app on-top of your game client.

    3. Configure your Game Client

    Depending on what game you're running, ensure it's in "Borderless Windowed" mode. This means the game is running as a window, with no top border.

    In GTAV, this mode is actually just called Full Screen.

    4. Auto-Hide Windows Taskbar (Optional)

    Specifically with streamers, some users may want to hide the Windows taskbar that appears when the CAD is placed on top of the game.

    To do so, simply right-click the taskbar > Taskbar Settings > Automatically Hide the Taskbar

    5. Utilize the Hotkey

    In-game, simply press your hotkey to toggle the CAD display both on and off. When the CAD is toggled off, your game will automatically regain focus!

    GTA RP Tablet - Clear Cache

    This guide covers how to clear your FiveM game cache.

    You may need to manually clear your FiveM cache for troubleshooting steps. The guide below will walk you through the process. Sometimes updates will not automatically apply to your tablet and this process will resolve the issue.

    Make sure to close GTA RP before performing these steps

    To do this, right-click on your GTA RP application shortcut and click on the Open file location.

    Now you will need to go to the GTA RP Application Data.

    You will find a data folder there; click on it.

    Here you must delete the cache, nui-storage, server-cache and server-cache-priv folders.

    📱Download The App

    Sonoran CAD is available on the web, Windows desktop, iOS App Store, and Google Play store! Select your platform below and download the official app today!

    Customization

    Sonoran CAD offers dozens of customization options for your community. Check out the configuration options below!

    Paid Integration Resources

    Learn more about our paid FiveM integration resources, powered by Tebex!

    Dispatching

    Looking to get started dispatching with Sonoran CAD? See our guides below!

    Other Features

    Check out some of Sonoran CAD's other features below!

    Records Management

    Sonoran CAD offers an in-depth record management system. For more information, see our guides below!

    For users wanting in-game use via the Steam browser, you may experience issues.

    Please click here for our official method.

    Sonoran CAD - CAD/MDT Software

    Windows Desktop

    Our Windows desktop application allows you to access global hotkeys regardless of whether or not the app is in-focus. You can even configure these on your stream deck or custom key binds to set your status, toggle your panic status, open lookup windows, and more!

    iOS and Android

    Only Sonoran CAD has dedicated iOS and Android applications to access your community's CAD with a mobile native experience. Download it today for your tablet or mobile device!

    Website

    iOS App Store

    Google Play Store

    Windows Desktop

    View

    Download

    Download

    Download

    Download our official Windows desktop application
    global hotkeys
    bodycam
    Sonoran CAD - Desktop Hotkey: Show
    GTA - Windowed Borderless Mode
    Taskbar - Auto Hide

    Inviting Users to Your CAD

    Invite your community members to join your community, and grant them access.

    Invitation Options

    Sonoran CAD allows your community members to easily join your CAD. Users can manually enter in your community ID, or join automatically from a custom login page on your own domain.

    can automatically add and remove accounts on your Sonoran CAD.

    Custom Login Page

    For more information on hosting your own custom login page, see our guide below:

    Manually Join with a Community ID

    Users can , and enter in your community ID in the "Join Community" popup. Users can search using your community ID and can press the "Join" button to add your community. From there, users can select your community card in the "My Communities" section to log into your CAD.

    Forgot your community ID?

    You can find this in your admin panel under Advanced > Limits > Community ID

    Geographical Settings

    For communities outside of the US, Sonoran CAD allows you to change your CAD's geographical settings!

    Community customization is not included with the free version. For more information, see our pricing or view how to check your community limits.

    Geographical Settings

    The admin customization menu allows you to change your geographical settings.

    For penal codes, my country does not use felony charges, bonds, etc.

    Sonoran CAD allows you to customize the charge type names, bond type names, and more.

    View our guide on penal code customization:

    View Your Limits

    In addition to our free version, Sonoran CAD offers optional paid subscriptions. Find out how to view your community's limits below!

    Admin > Advanced > Limits

    In the admin page, select "Advanced" > "Limits" to view your community limitations.

    Sonoran CAD's limits section

    Interested in a Paid Subscription?

    View our page for more information!

    Unit Status Codes

    Sonoran CAD allows you to customize your unit status code options!

    Community customization is not included with the free version. For more information, see our pricing or view how to check your community limits.

    Unit Status Codes

    The admin customization info section allows you to customize your community's unit status codes:

    Once saved, your status options will be shown for emergency units:

    Why Sonoran CAD?

    Experience Sonoran CAD, the free, most popular dispatching software for FiveM, ER:LC & gaming communities alike!

    What is Sonoran CAD?

    Sonoran CAD is the largest, most popular dispatch and records management system for gaming communities.

    With seamless integrations for FiveM, ER:LC on Roblox, and more, it delivers unmatched power, speed, and customization—taking your roleplay experience to the next level.

    Custom Audio Notifications

    Learn more about customizing the audio notifications for new dispatches, dispatch signals, and more!

    Custom audio notifications are limited based upon your community's version. For more information, see our or view how to check your community .

    Customizing your Audio Notifications

    Custom Emails

    Sonoran CAD allows you to send customized, branded emails when your community members register from your custom login page.

    NOTE: If you have not already, you will need to configure your .

    Community customizations is not enabled with the free version of Sonoran CAD. For more information, see our or view how to check your community .

    System Logs

    Learn more about Sonoran CAD's advanced logging feature!

    Sonoran CAD logs all user actions in-depth, allowing community administrators to take action against user abuse and help debug common issues.

    Searching for Logs

    User Account Restrictions

    Sonoran CAD allows you to restrict how many characters a user can create!

    Community customization is not included with the free version. For more information, see our or view how to check your community .

    User Account Restrictions

    Troubleshooting

    Troubleshooting steps for common issues in CAD

    Cannot Load Sonoran CAD

    Tablet Not Loading

    If you are using the in-game Tablet, please ensure that you are using the Login with Sonoran

    Sharing Custom Records

    Sonoran CAD allows you to share custom record formats between different communities.

    Download the JSON File

    In the custom record editor (Admin > Customization > Custom Records) select the blue download button next to the custom record. This will download a .json file with the custom record formatting.

    Do not edit this JSON formatting unless you are highly familiar with the . It is highly recommended to edit everything in the UI editor only.

    Deleting or Transferring your CAD

    Sonoran CAD offers you the ability to delete/transfer your current CAD.

    Only the community owner can delete or transfer the community.

    1. Access the Menu

    Navigate to Admin > Advanced > Transfer or Delete CAD

    Custom Page Colors

    Customize your community's page colors with Sonoran CAD!

    Community customization is not included with the free version. For more information, see our or view how to check your community .

    Custom Page Colors

    Unit Management

    Learn more about managing unit information, statuses, and more!

    Unit Management

    Modifying Status

    You can click on a unit's status for a dropdown menu to quickly modify it.

    Volume and Language

    This guide covers changing your volume and TTS language settings in Sonoran CAD.

    Open the Settings Modal

    In the sidebar menu, select the settings button:

    Self Dispatch

    Sonoran CAD allows units to create new calls, self-attach, and preview calls without the need for a dedicated dispatcher!

    Self Dispatch requires an additional user account permission!

    Users will need the "Self Dispatch" permission to enable this feature. View our guide on for more information.

    Evidence Camera

    Sonoran's evidence camera allows you to send in-game photos directly to your CAD for reports!

    The Sonoran Evidence Camera allows you to capture, hold, and share in-game photos with other players. Or, upload the in-game photo directly to Sonoran CAD for easy reports!

    Mobile Command Center

    Sonoran's mobile command center enables you to take command like never before. Learn more about the integration with Sonoran CAD!

    Speed Cameras

    Learn more about our Speed Camera script on the Sonoran Store!

    The Sonoran Speed Camera offers the most in-depth, integrated, and customizable traffic camera network available.

    Shot Spotter

    Learn more about our Shot Spotter script on the Sonoran Store!

    The Sonoran Shot Spotter offers the most in-depth, integrated, and customizable shot spotter network available.

    Power Grid

    Learn more about our Power Grid script on the Sonoran Store!

    Sonoran's Power Grid network allows players to manipulate and disable nearly any in-game feature imaginable!

    Hack the grid to disable a Sonoran Radio tower, disable a speed or security camera, shut off a shot spotter, and more! Our in-depth permission customization and integration options allow communities to expand with vastly new and unique RP scenarios. Easily "wire" a power source to any compatible object with our link tool. Our power grid offers real-time alerts via Discord, in-game, on the Sonoran CAD live map and more!

    .

    option, as both Apple and Discord have disabled OAuth over iFrames.

    If you've created your account through Discord or Apple and would like to link it to a Sonoran login, please follow the steps shown here.

    Alternatively, if the tablet shows completely blank, then please delete your nui-storage folder as shown here.

    CAD Not Loading After Recent Update

    If you cannot load Sonoran CAD due to a recent update, then please do Ctrl + Shift + Refresh to hard refresh the page and load it from scratch.

    CAD Not Loading (ESET Antivirus)

    In certain cases, antivirus programs such as ESET are also known to block connections to the CAD. To add CAD to ESET's allow list, please follow the following instructions:

    1. Open ESET program on your computer

    2. Press the F5 key to open Advanced setup.

    3. Click Web access protection. Expand URL list management and click Edit next to Address list

    4. Select List of allowed addresses and click Edit

    5. Click Add in the Edit list window. Paste *.sonorancad.com* in the respective field, click OK → OK to save your changes, and exit the Advanced setup window.

      • If using CMS, also add *sonorancms.com*

    For more information, see here.

    Sonoran CMS Auto-Join
    Sonoran CMS
    Custom Domain & Login Page
    create an account
    Sonoran CAD x Sonoran CMS - Account Auto-Join
    Sonoran CAD - Joining a Community
    Learn more about the Sonoran mobile command center, integrated with Sonoran CAD!
    Sonoran Mobile Command Center
    Sonoran Mobile Command Center - CAD ALPR
    Learn more about this paid resource!
    Sonoran Store - Speed Camera
    Learn more about this paid resource!
    Sonoran Store - Shot Spotter
    pricing

    Administration

    Everything you need to know about administrating your new CAD system.

    📱 Downloadable Apps

    In addition to our web version, you can download Sonoran CAD on the iOS App Store, the Google Play Store, or for Windows Desktop. It's never been more easy to access your community's CAD system, regardless of what platform you're on!

    Sonoran CAD - Downloadable Apps

    💾 Database Sync

    Tired of having to manually register civilians? With Sonoran CAD's Database Sync, all of your in-game characters, licenses, and vehicle registrations are automatically in your CAD!

    Sonoran CAD - Database Sync

    🎮 FiveM In-Game Integration Plugins

    Sonoran CAD's integration framework includes over a dozen drag-and-drop plugins for your game server!

    Sonoran CAD - In Game Integration

    💬 Discord Permission Integration

    Our official Discord bot automatically syncs Discord roles with CAD account permissions. This allows you to easily grant and remove permissions from a user's CAD account all through Discord!‌

    ​Discord webhooks instantly notify your community when changes are made, calls are placed, units toggle their panic status, and more!

    Sonoran CAD - Discord Webhooks

    🌎 Full Translation and Locality Support

    Only Sonoran CAD supports full i18n localization. Regardless of your community's native language, Sonoran CAD supports it! Sonoran CAD is currently fully translated in Chinese, Russian, Spanish, Polish, Italian, German, Arabic, and more! Anyone is allowed to contribute to our GitHub translation files.

    Sonoran CAD also offers vast geographical location support for non-American communities.

    Sonoran CAD - Translations

    🎥FiveM Live Bodycam Footage In-CAD

    Sonoran CAD's bodycam system offers live image feeds from in-game, right in the CAD!

    📍 FiveM Live Map

    Sonoran CAD's custom live map plugin allows you to edit and view live unit information, emergency call blips, smart road signs, and more!

    Sonoran CAD - Live Map

    🛑 FiveM Smart Signs Integration

    We've partnered up with London Studios to integrate their Smart Signs script directly with Sonoran CAD! You can customize in-game roadway signs right from Sonoran CAD!

    Learn more about this free script included with Sonoran CAD Pro!

    View our showcase video on Smart Signs!

    Sonoran CAD x London Studios

    🚔 FiveM ERS Integration

    Does your community play Emergency Response Simulator?

    Sonoran CAD's ERS integration allows dispatchers to create callouts from the live map, lookup character records, and more!

    Sonoran CAD x ERS

    🚒 FiveM Station Alert Integration

    We've partnered up with Inferno Collection to integrate their Station Alert script directly with Sonoran CAD! Dispatchers can toggle station doors, lights, and text-to-speech messages right from Sonoran CAD!

    Learn more about this free script included with Sonoran CAD Pro!

    Sonoran CAD x Inferno Collection

    💻 FiveM Mini CAD

    Easily view and attach to calls, talk to other officers, and more all from the in-game mini CAD!

    Sonoran CAD Mini-CAD

    📞 FiveM Local Callers

    Nearby civilian witnesses will place an emergency call during car jackings, weapon brandishing, death, and more. Stop or cut their information short by killing them in time!

    Sonoran CAD - Local Callers

    📺 Twitch Bodycam, Bot, and Smart Lighting

    Sonoran CAD - Stream Overlay
    Sonoran CAD - Smart Lighting

    Sonoran CAD also offers a customizable stream overlay and Twitch bot to display your unit and attached call information in real time!

    ER:LC Roblox Integration

    Sonoran CAD x ER:LC

    Do you play Roblox? Sonoran CAD is integrated with Emergency Response Liberty County!

    Update your unit locations in real time, run name and plate searches, create automated traffic stops, and more!

    💻 Multitasking Window and Tab System

    Only Sonoran CAD lets you easily multitask and open multiple search windows, records, penal codes references, ten code lists, and more! Our workflow allows you to handle even the most complicated and demanding patrols.

    Every panel and window can be locked into position and customized.

    Drag-and-drop allows you to easily view calls, attach units, and more!

    Sonoran CAD - Custom Layouts

    🎤 TeamSpeak 3 Integration

    Enforce security in your TeamSpeak 3 channels by requiring them to be signed into the CAD. Additionally, kick users from secured TS channels when they log off.

    🔢 Stream Deck Integration

    Check out our official Stream Deck profiles to change your unit status, panic, open a lookup, and more from a physical button. Along with the Sonoran CAD desktop application, these actions can be done even while the app is minimized.

    Sonoran CAD - Stream Deck Profile

    📖 API Integration

    In addition to over a dozen drag-and-drop integration plugins, you can write your own integration plugins using our API documentation.

    We've complied extensive documentation for over two-dozen API endpoints and server push events!

    Easily integrate external scripts with our LUA and JS export examples!

    Sonoran CAD - API Integration

    📝 Custom Records and Reports

    Create your very own custom report and record formats for your community to use!

    Whether it's your own firearms registration system, an in-depth vehicle accident report format, or a custom incident record, Sonoran CAD allows you to customize it all.

    You can even index specific record fields for custom search types. Allowing you to run a lookup on your record's custom ID numbers, phone numbers, and more!

    Sonoran CAD - Custom Reports

    🧑‍🎨️ Scene Diagram Builder

    Create detailed scene diagrams in custom reports!

    Sonoran CAD - Diagram Builder

    📧 Custom Branding

    Sonoran CAD enables you to place your community's name and branding in the CAD, customize user account emails, host a custom login page on your own domain, and more!

    🧍 Self-Dispatch

    Don't have a dedicated dispatcher for your community? Sonoran CAD allows your units to easily self-dispatch, attach to calls, preview other open calls, and more!

    🖨️ PDF Records

    Looking to store official criminal records or prior call logs in a PDF format? Sonoran CAD allows you to easily view and print records to PDF.

    Sonoran CAD - PDF Records

    🏠 Auto Suggested Street Names and Addresses

    Sonoran CAD allows you to upload a custom spreadsheet with your game's street names and addresses. Dispatchers in the call editor can quickly and easily search and filter these names automatically.

    Sonoran CAD - Street Addresses

    ⌨️ Global Hotkeys

    Only Sonoran CAD allows you to configure customizable hotkeys for quick actions in the CAD. With our Desktop application, hotkeys are even registered globally and do not require the application to be visible or in-focus to trigger commands.

    Sonoran CAD's global hotkey configuration!

    📦 Easy Migration

    Sonoran CAD allows you to easily migrate your 10-codes and penal codes by importing directly from a spreadsheet (CSV) or JSON file. Fully customizable record formats/templates can also be exported and shared between communities.

    🎤 Voice Commands

    Common tasks are made even easier with our voice commands. Sonoran CAD allows you to easily lookup a civilian's name, a vehicle license plate, or trigger a panic tone completely hands free!

    📋 Frequent Updates

    As shown in our changelog, new features, fixes, and suggestions are added all the time!

    Getting Started
    1. Access the Customization Menu

    In the admin page, navigate to Customization > Customization > Notification Tones

    Sonoran CAD - Custom Audio Notifications

    2. Customize the Audio Tones

    Here, you can specify the audio file that will play for new dispatches, panic sounds, dispatch signals, and more.

    3. Save

    Don't forget to press save!

    4. Toggle On/Off Text-To-Speech (Optional)

    Text-to-speech notifications are currently only available on the Chrome web version. You can toggle these on/off in the settings menu.

    Sonoran CAD - Toggle TTS

    Troubleshooting

    Text-To-Speech Cuts Out Game Audio

    For some users, text-to-speech sounds may cut out in-game or other audio sources. This is because the selected voice may be a Windows or system based source.

    Simply change the selected TTS voice to a non-windows or system based source to resolve.

    Text-To-Speech Wrong Language

    Text-to-speech voice and language options varry based on the user device or browser. If your text-to-speech notifications are in the wrong language (Ex: not English) use the following:

    OSX Web

    • Users report limited or incorrect languages when using Safari. Switch to Chrome for the best compatability.

    Windows Desktop

    • PC Settings > Time & Language > Speech

      • Install additional voice options

    pricing
    limits
    1. Configure Your Emails

    In the admin customization menu, expand the "Custom Community Emails" section. Here, you can set the email header, sub-header, and body text. NOTE: Your community logo will automatically be inserted into all emails.

    The email customization panel allows you to enter your own text

    2. Save and Enjoy!

    Once saved, all user account registration and password recovery emails sent from your custom login page will be customized as configured.

    Custom emails are sent to users as configured

    custom login page
    pricing
    limits
    1. Access the Log Panel

    In the admin page, navigate to Advanced > Logs

    2. Filtering and Searching for Logs

    The log panel allows you to filter search results by date, log type, username, and log contents.

    Log Type

    The log Type dropdown allows you to search and select specific log types. This allows you to search only for logs pertaining to a specific action in the CAD.

    If left blank, no log filtering will be applied.

    Log Date

    The log Date selection allows you to choose the specific date the logs are from. Note: Dates and the accompanying timestamps are based in UTC.

    Username

    The log Username selection allows you to search and filter logs down to a specific username. You can also search for a partial username.

    Log Text

    You can also filter logs based on partial text put into the Log field.

    Sonoran CAD - Admin Logs

    Field

    Description

    Max Civilian Characters

    This allows you to restrict the number of civilian characters a single user can register.

    pricing
    limits
    Import a Shared JSON File

    In the custom record editor (Admin > Customization > Custom Records) select the blue download button next to the custom record. This will download a .json file with the custom record formatting.

    Sonoran CAD - Import Custom Record JSON File

    Paste in the JSON content from the download to populate the record editor with the new record format.

    Sonoran CAD - JSON Import Prompt

    From here, you can edit the custom record and save it as you normally would.

    proper formatting
    Sonoran CAD - Download Custom Record Format
    Advanced Dropdown Menu

    2. Transfer or Delete the CAD

    Select TRANSFER CAD or REMOVE CAD:

    Transfer or Remove CAD options

    Once you have chosen an option, you will be required to verify your email. (This will be the email you originally signed up for the CAD with.) Upon clicking the verification link, the process will be completed.

    Once a CAD is deleted, there is NO WAY for us to recover it. Please consider this before making your choice.

    The admin customization menu allows you to customize the page colors in Sonoran CAD:
    Sonoran CAD's custom page color options

    Field

    Description

    Login Page Background

    This is the background color of the page on your .

    Login Box Background

    This is the background color of the login box on your .

    Menu Page Background

    This is the background color of the community menu page.

    Menu Box Background

    This is the background color of the menu box in your community menu page.

    pricing
    limits
    Modifying Unit Information

    Click on any active unit and select "Edit Unit" to change their identifier information.

    Sonoran CAD - Edit Unit
    Unit Groups

    Unit groups are a way to combine two units together, typically when they're in the save vehicle or apparatus.

    To add a unit to a group, simply select the unit and select "Add to Group" > New Group or an existing group

    Sonoran CAD - Unit Group

    Or, you can drag-and-drop a unit to the Unit Groups section. Drag it to the header to create a new group, or drag it to an existing group to add it.

    Sonoran CAD - Unit Group
    Automatic Unit Status

    Dispatchers can also customize what to automatically set unit statuses to after specific actions. Select the Auto-Status button in the call editor to enable status changes on call attachment, detachment, and closure.

    Sonoran CAD: Auto Status
    Sonoran CAD - Unit Status
    Change your Volume and Language

    You can easily adjust your volume, and set your text-to-speech voice in the settings modal:

    Sonoran CAD's settings modal

    Translation Support

    Sonoran CAD also supports full language translation support for any country or locality. Click below for more information.

    The settings button is displayed in the side navigation menu
    Enable Self-Dispatch

    In the top right of the call viewer, select "Self Dispatch"

    Sonoran CAD's "Self Dispatch" option

    Add, Edit, or Attach

    With self dispatch enabled, regular units can now open additional windows to view dispatch calls, 911 calls, and active units.

    Sonoran CAD's "Self Dispatch" windows
    granting account permissions

    Customization

    Description

    Emergency Code

    Replaces all instances of "911"

    Penal Code Name

    Replaces all instances of "Penal Codes"

    Ten Code Name

    Replaces all instances of "10-Codes"

    Currency Delimiter

    Replaces all instances of "$"

    Penal Codes
    Learn more about this paid resource!
    Learn more about this paid resource
    Customize your unit status codes
    Configured unit status options are displayed in the top unit action bar

    Troubleshooting

    Troubleshooting for common issues encountered with Database Sync

    Slow lookups

    Sometimes with certain server hosts, their networks tend to respond slower for a variety of reasons. In MySQL there is a process as part of each login in which a DNS lookup is run before the CAD or other database users can be allowed in.

    With slow DNS server settings, this can sometimes cause lookups to take 5-20 seconds in the CAD. We are going to show you one way to resolve this in MySQL Server/MariaDB Server.

    1. Open your my.ini configuration file for your MySQL server. If you are using XAMPP simply open the XAMPP Control Panel and click Config then my.ini from the line for your MySQL Module.

    2. With the my.ini configuration file open, scroll down till you find the "[mysqld]" section and add the following line right under [mysqld]

    skip-name-resolve

    3. Save the my.ini file and then restart your MySQL server. For XAMPP simply click Stop in the XAMPP Control Panel then click Start.

    Your lookups in Sonoran CAD with DBSync enabled should now be faster. If your lookup speed is still slow (ie. takes over 5 seconds) this is usually due to much greater issues either with the performance of your server or network.

    Integrated Vendors

    Check out the other third-party scripts and projects that are directly integrated with SonoranCAD!

    London Studios

    • Smart Signs

      • Integration: Update smart sign displays in-game from SonoranCAD!

      • Integration: Automatic 911 Calls sent directly to SonoranCAD!

    Rainmad

    Integration includes automatic 911 calls sent directly to SonoranCAD!

    Configuring Multiple Servers

    Sonoran CAD allows you to configure servers to separate units and dispatchers, but still share all records globally.

    The free version of Sonoran CAD is limited to one (1) server. For more information, see our pricing or view how to check your community limits.

    Configuring An Additional Server

    In the Admin Customization menu, expand the "Servers" section to add, edit, or remove additional servers in your CAD.

    Changing Servers in the CAD

    Civilian Page

    In the civilian page, the top right header allows users to swap back and forth between servers.

    Emergency Pages

    In the police, fire, EMS, and dispatch pages; users can select their server by clicking on the start menu.

    Adding a Record

    This guide covers creating a new record in Sonoran CAD.

    Open the Record Editor

    In the police, fire, EMS, or dispatch page open the record panel.

    This can be found as a pinned tab, via taskbar search, or in the taskbar sub menu.

    Select The Record Type

    Click the "New Record" button and a dropdown menu will appear, where users can select the new record type.

    Records (by default) are comprised of several sections:

    1. Record Flags

    2. Agency/Department Information

    3. Civilian Information

    4. Vehicle Information

    All records and reports are fully customizable, you may change the fields as much as you want. Each of the default record types are customizable as well and may look different if your community has customized the record shown below.

    Civilian and vehicle information sections also include a search feature. Here, you can search and import information from a registered civilian or vehicle. This feature can also .

    Discord Bot Integration

    Our official Discord bot provides deep integration for your community, including automatically syncing roles on your server with permissions in the CAD!

    For the Discord x CAD Permissions Synchronization feature you will need either: - The Free version (CAD and CMS) with Sonoran CMS! or - The Plus version of Sonoran CAD For more information, see our pricing or view how to check your community limits.

    Getting Started

    Get started with SonoranBot today by inviting it to your Discord:

    CAD Integration

    Learn more about SonoranBot's CAD integration features:

    Settings

    Configure SonoranBot's settings in your server:

    Commands

    Reference a list of bot commands:

    PDF Records

    Sonoran CAD allows you to print criminal records, civilian records, and call history logs to a PDF document!

    PDF records are not included with the free version. For more information, see our pricing or view how to check your community limits.

    Having trouble opening the PDF in the web version?

    Your Ad-Blocker may be preventing the PDF from opening in a new window. Disable your Ad-Blocker on our website to prevent this issue.

    Records

    To download a PDF copy of a criminal or civilian record, select the PDF button in the bottom action bar.

    Call Logs

    Prior call logs can also be printed to a PDF record.

    1. Navigate to the "Active Calls" window

    2. Select the "Call History" tab

    3. Click the call and select "Print Call"

    FiveM

    Sonoran CAD's robust API system comes complete with dozens of already developed integration submodules. Learn more about our framework and submodule system below!

    Looking for VPS, web, or dedicated hosting? Check out our official server hosting!

    FiveM Installation

    From one-click installation options to pre-configured resource downloads, we've made integration setup a breeze!

    Learn more about installing the resource below.

    FiveM Submodules

    The Sonoran CAD FiveM resource is packed with dozens of submodules. Each submodule offers unique feature customization.

    Learn more about submodule configurations and available features for your community below.

    Developer Documentation

    Looking to write your own submodules for Sonoran CAD? Learn more about writing your own integration submodules and accessing our API documentation.

    ATM Robbery

    Learn more about this script!

    Sonoran's ATM Robbery allows players to rob ATMs like never before!

    • Drill the ATM

    • Attach a rope and rip the ATM out with your vehicle

    • Drive the ATM to a safe location

      • ATM can be visibly loaded into the back of a vehicle (configurable) or dragged via rope

      • ATMs are trackable LIVE on the Sonoran CAD live map and in-game map (configurable)

    • Finish drilling into the ATM for the final payout

      • ESX, QB-Core, and third-party payout compatible (not-required)

    This script integrates with Sonoran CAD's 911 system and live map!

    Check API ID

    Easily view your API ID with a command, and check if a given API ID is linked to an account.

    This submodule has been merged into the SonoranCAD Core and no longer requires external configuration or setup

    Usage

    Command

    This submodule supplies the command /apiid which will print the player's primary identifier (the one they should use in Settings) to their console.

    Function

    Callback output parameter: true/false if API ID exists.

    Example

    Event

    This is a server only event.

    Event Name: SonoranCAD::apicheck:CheckPlayerLinked

    Response Event: SonoranCAD::apicheck:CheckPlayerLinkedResponse

    Example

    Sonoran Radio (sonrad)

    Connects Sonoran Radio with CAD

    This submodule utilizes API endpoints that require the plus version of Sonoran CAD or higher. For more information, view our pricing page.

    Looking for VPS, web, or dedicated hosting? Check out our official !

    This submodule allows Sonoran Radio customers to connect the radio with the Sonoran CAD. View your unit status, dispatch call information, toggle a panic, and more!

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the first.

    2. Activate the Submodule and all Dependencies

    Follow the for the required submodules.

    4. Set Your API ID

    Don't forget to set your account to properly link your in-game user to the CAD.

    Usage

    FivePD

    Connects FivePD with the Sonoran CAD

    This submodule utilizes API endpoints that require the plus version of Sonoran CAD or higher. For more information, view our pricing page.

    Looking for VPS, web, or dedicated hosting? Check out our official server hosting!

    This submodule allows players to see FivePD callout information in the CAD.

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the first.

    2. Activate the Submodule and all Dependencies

    Follow the for the required submodules.

    If you don't have a dispatcher and would like a way to attach to a call in-game, use our Dispatch Notify submodule.

    3. Set Your API ID

    Don't forget to set your account to properly link your in-game user to the CAD.

    This submodule was sponsored by .

    Kick

    This submodule kicks police, fire, EMS, and Dispatch users from the CAD when they disconnect from your server.

    This submodule utilizes API endpoints that require the Standard version of SonoranCAD or higher. For more information, view our pricing page.

    Looking for VPS, web, or dedicated hosting? Check out our official server hosting!

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the first.

    2. Activate the Submodule and all Dependencies

    Follow the for the required submodules.

    3. Set Your API ID

    This submodule kicks user accounts from the CAD based upon their . Be sure your members have this set properly to properly link your in-game user to the CAD.

    Granting Account Permissions

    Granting permissions to user accounts is easy! We'll help you get started.

    Permission Granting Options

    User accounts can be granted automatically with our , manually granted by an administrator in your community, or by generating a "" for users to access independently.

    Remove User Account

    Looking to remove your Sonoran Software account?

    1. Access your Sonoran Software Account

    You can access your Sonoran Software account by going to , or by selecting "Modify" in the side menu's account modal.

    Voice Commands

    Sonoran CAD’s voice commands allow for quick and easy to use actions via voice.

    Currently, Sonoran CAD only supports voice commands in the Chrome desktop browser.

    Voice recognition is provided by Google, and performance may vary based upon pronunciation, speed, and other factors.

    Submodule Configuration

    This guide covers the activation process for a general submodule.

    All Sonoran CAD integration submodules require the standard version of Sonoran CAD or higher. For more information, see our page.

    Looking for VPS, web, or dedicated hosting? Check out our official !

    Configurable Hotkeys

    Learn more about Sonoran CAD's customizable global hotkey system!

    Configurable hotkeys are not included with the free version. For more information, see our or view how to check your community .

    Hotkeys are enabled globally on the application. This means users do not have to have the app or page in focus or visible for the hotkeys to be registered.

    Quick Links

    Sonoran CAD allows you to add and customize quick links for all emergency services to view.

    Community customization is not included with the free version. For more information, see our or view how to check your community .

    Adding Quick Links

    LB Phone App

    View the Sonoran CAD app in-game on LB Phone!

    LB Phone is a paid, third-party script. For support or questions on LB Phone, please contact their support team.

    LB Phone App

    is a popular, in-game phone script for FiveM. LB Phone allows you to configure custom applications (like Sonoran CAD) to add and view on the in-game phone.

    Locations

    Sends locations of all online players to the CAD.

    This submodule utilizes API endpoints that require the standard version of Sonoran CAD or higher. For more information, view our page.

    Looking for VPS, web, or dedicated hosting? Check out our official !

    Submodule Configuration Updates

    Learn how to manually update your submodule configuration file when there has been a configuration update.

    Submodule Updater: X has a new configuration version: This means one of your submodules has been updated, but there is a newer configuration file available with additional properties. To resolve, we need to manually migrate the configuration file for the submodule.

    1. Open the Configuration Files

    In the \sonorancad\configurationdirectory, there will be two configuration files for the updated submodule:

    Addresses and Street Names

    Sonoran CAD allows you to upload custom street names to auto-populate in the dispatch call editor.

    Street address customization requires the plus version of Sonoran CAD or higher. For more information, see our or view how to check your community .

    SonoranCAD Core
    submodule activation guide
    API ID
    LakeSide RP
    SonoranCAD Core
    submodule activation guide
    API ID
    server hosting
    SonoranCAD Core
    submodule activation guide
    API ID
    Learn more about the Sonoran Radio integration here!
    Sonoran CAD x Sonoran Radio
    Betta Heist
  • Oil Rig Heist

  • Flecca Heist

  • Deluxe Car Heist

  • Yacht Heist

  • Paleto Heist

  • Union Heist

  • Drug Boat Heist

  • Underground Heist

  • Pacific Heist

  • Train Heist

  • Van Heist

  • Casino Heist

  • Flecca Heist

  • Art Heist

  • Smart Fires
    Gun store Heist
    Weed shop Heist
    Vangelico Heist
    Artifact Heist
    FiveM Installation
    Submodule Configuration
    FiveM Submodules
    FiveM Development Documentation
    📖API Integration
    Activation Video

    Click to view our locations and postal install video.

    Be sure you have already installed our core framework!

    Installation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the SonoranCAD Core first.

    2. Activate the Submodule and all Dependencies

    Follow the submodule activation guide for the required submodules.

    3. Set Your API ID

    Don't forget to set your account API ID to properly link your in-game user to the CAD.

    Further Configuration

    Option

    Description

    Default Value

    checkTime

    How frequently to send location updates to the server.

    5000 ms (5 seconds)

    prefixPostal

    Prefixes postal to locations (like [111] Some Road). Requires Postals plugin.

    True

    Usage

    Automated Functionality

    This plugin requires no configuration by default and will send locations of all active players. This can be seen by dispatch or other panels.

    Function

    This function can only be used by other plugins and is not exported.

    pricing
    server hosting
    cadApiIdExists("identifier_here", callback)
    cadApiIdExists("steam:1234567890", function(exists)
        if exists then
            print("API ID exists!")
        else
            print("API ID does not exist!")
        end
    end)
    -- Request
    TriggerEvent("SonoranCAD::apicheck:CheckPlayerLinked", source, identifier)
    
    -- Response
    AddEventHandler("SonoranCAD::apicheck:CheckPlayerLinkedResponse", function(player, identifier, exists)
        print(("Player %s has API ID? %s"):format(player, exists))
    end)
    function findPlayerLocation(source) -- returns location as a string

    Charges

  • Narrative

  • Status

  • search for civilians and vehicles directly from your in-game database
    Selecting the New Record you would like to make
    Sonoran CAD's record information search feature
    Sonoran CMS - Permission Sync

    Sonoran CMS is your single point of management for your community's documents, whitelisting, in-game permissions, community website, and more!

    In addition to whitelisting and in-game permissions, Sonoran CMS can automatically manage your Sonoran CAD permissions!

    Sonoran CAD x Sonoran CMS - Permission Sync

    Discord Bot Roles

    Our Discord bot allows you to automatically sync Discord roles with CAD permissions.

    Manually Granting Permissions

    1. Open the Accounts Menu

    In the admin menu, select the "Accounts" option to view all user accounts in your community.

    New and Pending User Accounts

    New accounts are automatically set to "PENDING" To view pending accounts, you will need to change the accounts drop down in the top left of the window from "Active" to "Pending"

    The account grid displays all user accounts in your community

    2. Select an Account

    Simply click on an account to manually edit the permissions, ban, or kick a user. After changing a user's permissions, don't forget to press save!

    The account management panel allows you to toggle individual user permissions

    Permission Keys

    Permission keys are a great way to allow users to automatically grant themselves their necessary permissions.

    1. Create a Permission Key

    In the admin menu, select Accounts > Permission Keys Here, you can create a new permission key. Simply enter the new key name, toggle the associated permissions, and press save.

    Sonoran CAD - Permission Key Editor

    2. Apply a Permission Key

    At the community menu, your users can enter the new permission key. After pressing enter, the associated permissions will automatically be applied to their account.

    Sonoran CAD - Apply Permission Key

    Invalid Key Error?

    Permission keys are case sensitive, so ensure your users are entering the key exactly, with the proper capitalization.

    Discord bot
    Permission Key
    2. Send an Account Removal Email

    On the Sonoran Account website, select Account > Advanced > Delete Account

    This will send an email confirmation to the address on file.

    Sonoran Account - Delete Account

    3. Verify your Email

    Check your email for an account removal request and click the "Remove Account" button. Having trouble seeing it? Be sure to check your spam/junk folder.

    Sonoran Account - Removal Email
    account.sonoransoftware.com
    Sonoran CAD - Modify Account
    1. Enable Microphone Access

    When navigating to a page with voice commands enabled, the browser will prompt you for microphone access.

    Enable microphone access

    2. Ensure Your Microphone is being Received

    Now that microphone access has been granted, a red circle will appear at the top right of the browser tab.

    A red, blinking light appears in the browser tab

    3. Test out the Voice Commands

    Your keyword can be changed from "Sonoran" to something customizable. For more information, check out our guide on custom voice command keywords.

    PANIC

    Lookup Name

    Lookup Plate

    Install the Resource

    If you have not already, install the base FiveM resource.

    Activating a Submodule

    The FiveM resource contains multiple "submodules" for each integration. These can be individually enabled/disabled and configured.

    This example uses the postals submodule.

    1. Configure and Enable the Submodule

    • Navigate to the \sonorancad\configuration folder and locate the configuration file for your desired submodule.

      • For this example we will be using the postals_config.dist file (name depends on the submodule ). More details are on the specific submodule page.

    • Enable the submodule by changing the enabled variable from false to true in the plugin config.

    2. Rename and Save

    • Rename and remove the .dist from the file to postals_config.lua (depending on name of plugin).

      • If you've downloaded the pre-configured FiveM resource from the admin panel, this has already been done for you.

    • Save the configuration file.

    3. Restart Sonoran CAD

    Restart the sonorancad resource by entering ensure sonorancad in the server console and enjoy your submodule!

    Learn more about the available submodules:

    Updates

    Sonoran CAD's integration core and submodules will automatically update with the latest features, fixes, and changes!

    Or, run sonoran pluginupdate to instantly check and update all submodules.

    Having Trouble?

    If you're having trouble installing a plugin, check out our common troubleshooting guide:

    pricing
    server hosting
    FiveM Submodules
    FiveM Submodules

    For desktop users, we highly recommend viewing our guide on in-game use!

    Configure your Hotkeys

    In the side menu, open the "Settings" modal to display your hotkey configuration menu. Here, you can configure your prefix and hotkey buttons using the drop-downs below.

    Once changed, your settings are automatically applied and saved.

    Sonoran CAD's hotkey configuration menu

    Note: This image also displays custom unit status options, and may differ slightly from your view.

    pricing
    limits
    Desktop
    In the admin customization menu, expand the Quick Links section:

    1. Add, edit and remove quick links by specifying the label, link, and color code.

    Sonoran CAD's quick link customization panel

    2. Be sure to press SAVE

    Save Quick Links

    Viewing Quick Links

    Quick links can be found in the taskbar under Documentation > Quick Links

    Or via the taskbar search and pinning system.

    Sonoran CAD - Quick Links Page
    pricing
    limits
    .

    Activation Guide

    1. Add the Custom App to LB

    In the lb-phone/config/config.lua file, add a new entry to the array of Config.CustomApps.

    The example below shows the Config.CustomApps with a single, custom Sonoran CAD application.

    Custom Sonoran CAD App
    Config.CustomApps = {
      -- START COPY HERE --
           ["sonorancad"] = { -- A unique identifier for the app, not shown to the user
            name = "Sonoran CAD", -- The name of the app, shown to the user
            description = "Sonoran CAD is a state of the art, cross-platform, computer automated dispatching and records management system for gaming communities", -- The description of the app, shown to the user
            developer = "Sonoran Software Systems", -- OPTIONAL the developer of the app
            defaultApp = false, -- OPTIONAL if set to true, app should be added without having to download it,
            game = false, -- OPTIONAL if set to true, app will be added to the game section
            size = 59812, -- OPTIONAL in kB
            images = { "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/7e/be/65/7ebe6512-9c4a-161f-8108-5a844e16914e/b916289b-fc06-49fe-9ae3-347c6f49a23d_activeunits.png/230x0w.webp", "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/40/cf/ba/40cfba85-925a-5b6b-ce46-e1164a13adb5/45ffeb07-5b14-47af-bf99-ebf3473f1188_customrec.png/230x0w.webp", "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/d9/b4/09/d9b40925-3b97-7bce-fa92-6c80644c21bb/b0ff740c-e590-499e-aada-fcdb7f818252_dispatch.png/230x0w.webp", "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/39/ab/e3/39abe3e6-2ae4-adde-6070-322601145326/ba8def97-a711-44cb-8303-bde8e066fe9d_integrations.png/230x0w.webp", "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/39/28/cc/3928cc44-4419-2177-b166-11a0a19b3498/a147df6d-ee3d-4f76-aa44-481da34d02de_livemap.png/230x0w.webp" }, -- OPTIONAL array of images for the app on the app store
    

    2. Restart LB Phone

    Restart LB phone and you can now "install" Sonoran CAD on the LB Phone from the App Store.

    LB Phone
    LB Phone must be purchased from LB Scripts

    NEW: {submoduleName}_config.dist.lua

  • OLD: {submoduleName}_config.lua

  • New WraithV2 Configuration File
    Old WraithV2 Configuration File

    2. Compare the Config Files

    Note the differences in the file. In this example:

    • The configVersion is 1.5on our current file but is 1.6on the newly downloaded one.

    • Additionally we are missing the entire notificationTimers section in our current config file.

    SonoranCAD - WraithV2 Configuration Differences

    3. Migrate the Configuration Values

    Method 1 (Recommended) - Overwrite Old Configuration File

    • Simply copy and paste the entire contents of your new config file into your existing config file and make any needed configuration changes.

    • Save the file and restart the resource

    Method 2 (Not Recommended) - Manually Add Changes

    • Note down the changes in the new configuration file and add any missing properties to your existing configuration file.

    • Ensure you change the version number to the correct version from the new file.

    • Save your existing file and restart the resource

    Import Street Names from a Spreadsheet (CSV)

    1. Copy the Google Sheet

    • GTAV Street Names

    • ER:LC Roblox Street Names

    Navigate to one of our official street name Google sheet and make a copy. Using a copy of our official sheet ensures your street names are formatted correctly.

    Sonoran CAD - Copy Street Name Spreadsheet

    2. Add Your Street Names

    Now that you have copied this sheet into your Google Drive, you can add new rows and format your street names and addresses.

    Do NOT add additional columns. Every street name must be on a separate row to be properly imported into Sonoran CAD.

    Sonoran CAD - Street Names CSV

    3. Download the CSV

    In Google Sheets, navigate to File > Download > Comma Separated Values (.csv) to download the file.

    Google Sheets - Download CSV

    4. Import the CSV File

    In Sonoran CAD, navigate to Admin > Customization > Customization > Addresses

    In the addresses section, select the "Import" button. Then, select "CSV" as the import type and select your downloaded CSV file.

    Sonoran CAD - Import Data
    File Selector - Select CSV

    After selecting the CSV file, your street names and addresses will be imported into the CAD and saved automatically.

    5. View the Call Editor

    In the dispatch call editor, the address section is now a dropdown. This dropdown will auto-filter and suggest your street names and addresses as you type.

    6. Utilize in Custom Records

    Custom records can also have a field with the type set to address. This field will auto-filter the same list of street addresses from your gamemode.

    Custom Records - Address Field
    pricing
    limits
    custom login page
    custom login page
    XAMPP - Opening my.ini configuration file
    MySQL my.ini configuration file
    Additional servers are configured in the customization menu
    Users can select their server in the top header
    Emergency Pages - Server Selector
    PDF print options are shown at the bottom of the record viewer
    PDF records are generated and can be saved
    The "Call History" tab's PDF print option is displayed for all users
    Call logs are formatted and printed to a PDF as shown

    Scene Diagram Builder

    Build detailed scene diagrams in custom records!

    Sonoran CAD: Scene Diagram Builder

    Adding the Diagram Builder

    The scene diagram builder allows you to create detailed visuals of vehicle accidents, crime scenes, and more.

    The diagram builder can be added to any custom record template. Select Diagram from the Premade Sections dropdown.

    Using the Diagram Builder

    Custom records with a diagram section will show an interactive canvas inside the record. Select the edit icon to open up the builder.

    Adding, Editing, and Removing Elements

    Adding

    • Drag-and-drop items from the toolbox to the canvas.

    Editing

    • When selected, items can be moved, resized, and edited.

    • When an item is selected, the gear icon will open up an options menu for more customization.

    • Select multiple items at once with SHIFT + CLICK.

    Removing

    • Select the item(s) and click the trash icon () to remove

    Shortcuts

    The diagram builder is packed with powerful shortcuts to help quickly build the scene.

    Hover over any of the top action items for a tooltip listing the shortcut.

    List of Shortcuts
    Shortcut
    Description

    Default Images and More

    Communities can also customize the diagram builder to have default images (like a ) for each record type. Simply hit the edit (pencil icon) in the custom record builder on the diagram to customize and save the template.

    Community ID and API Keys

    This guide covers finding your community ID, API keys and IDs, as well as finding your ownership authentication code.

    Explanation: API Keys and IDs

    Within Sonoran CAD, there are two different types of API Keys that you will need to use, each serving a different purpose.

    API integration is not enabled with the free version of Sonoran CAD. For more information, see our pricing or view how to check your community .

    Community API Key

    First, there is your community API Key which allows CAD's in-game integrations to send data to the correct community.

    To find your community API Key, see below.

    This key will be placed in your config.json (for ) or the Server Settings panel (for ).

    User API ID

    In addition to the community API Key, each user will also have their own API ID, which allows CAD to associate the user's in-game player with their Sonoran account. Generally, this will either be the user's Steam Hex, Discord ID, or Game License Key.

    This API ID can be found in game by doing /apiid in game, if you have the plugin installed.

    Every user will need to find their own API ID and add it to CAD as shown .

    Retrieving Your Credentials

    Your community ID allows users to .

    Your community ID and API Key can be found in the Admin panel, under Advanced > In-Game Integration. Under the Web API section, your Community ID and API key will be listed as shown:

    Click either box to copy its corresponding value to your clipboard.

    Other Ways of Finding your Community ID

    Your community ID is also listed in the following places:

    1. In the side navigation bar while logged in

    2. In the Admin panel under Advanced > Limits

    Authenticating your Ownership

    While requesting support from an official Sonoran team member, you may be asked to authenticate your community's ownership.

    Your community's ownership authentication code can only be retrieved from your CAD owner. This code is used in support tickets to confirm that you are the registered owner of the community. NEVER give this code out to anyone that is not a member of the Sonoran support team!

    1. In the admin page, navigate to Advanced > Authenticate

    2. Press the "Request Code" button

    3. Your ownership authentication code will be displayed on the screen

    Custom Search Types

    Sonoran CAD allows you to add custom searchable/indexed fields to your custom records.

    Custom search types are limited based upon your subscription version. For more information, please view our pricing page.

    Video Tutorial

    View our on Sonoran CAD's custom search type feature.

    Written Tutorial

    1. Configure Search Types

    In the admin customization menu, expand the lookup types section.

    There are three sections for each lookup type:

    1. Name

      • Label/Name of the lookup type

    2. Field Mapping ID

    Once configured, press save.

    2. Configure Your Custom Records

    In the custom records editor, specify the Field Mapping ID from step one on the searchable field. If this searchable field is in your in-game database, you can also set up mapping to pull that data from in-game when records are opened.

    Press save, then move onto the next step.

    3. Configure Database Sync Column (Optional)

    If the search field is provided by your in-game database with , this custom record column will be display in your database sync configuration for any character, license, or vehicle registration.

    This will then allow you to search characters, licenses, or vehicle registrations from your in-game database based on this custom column value.

    4. Make a NEW Record

    With the exception of database sync records, any existing records with this field will not be searchable.

    You will need to create a new record with the custom searchable field in order to find it via custom lookup.

    5. Run a Lookup

    The lookup window will now display your new custom search types. You can now search your records (including database sync/merge) using these custom search boxes.

    Timers

    Create custom timers to check in on pursuits, dispatch calls, units, and more!

    What are Dispatch Timers?

    Sonoran CAD allows users to create custom dispatch timers. Some example use cases of these timers are as follows:

    • Creating a 10 minute pursuit timer before authorizing a pit maneuver

    • Reminders to periodically check in on a unit

    • Reminders to check in on a specific dispatch call

    When a timer has completed, it will flash an icon next to any and play a .

    Creating a New Timer

    Dispatch timers can be created through multiple different shortcuts.

    Via the Timer Panel

    From the start menu: Unit Management > Timers

    Press New to create a new timer.

    Drag-And-Drop to Tab

    If you have the timer , you can drag a unit, group, or dispatch call right to the tab.

    From the Context Menu

    Left click on a unit ID, group name, or dispatch call ID: Timers > New Timer

    Editing a Timer

    Via Timer Panel

    The timer panel has options to start, pause, restart, and remove a timer.

    Additionally, you can expand the timer to change the name and duration.

    Via the Context Menu

    When a unit, group, or call is you can click on the timer icon. A timer menu will be displayed, allowing you to start, pause, restart, or clear the timer's attachment.

    Timer Attachments

    You can attach a unit, group, or call to a timer. This will display a timer icon next to the attached unit or call. You can hover over this icon to view the remaining time, or click on it for the timer context menu.

    Via Drag-And-Drop

    In addition to dragging a unit, group, or dispatch call to a minimized tab you can also drag it to a timer in the panel.

    Via Context Menu

    Click on a unit, group, or dispatch call: Timers > Select a Timer

    Advanced Query Strings

    Sonoran CAD provides additional query string options for embedded use!

    Force Mobile

    String

    Usage

    Description

    forcemobile

    app.sonorancad.com/#/?forcemobile=TRUE

    Default Audio Level

    Hide "Switch Community"

    Command Line Interface (CLI)

    Sonoran CAD's CLI allows you to quickly create and close dispatch calls, attach, detach, add notes, change statuses, and more right from your keyboard!

    UI Overview

    The CLI allows you to more quickly run common dispatch actions without the need to move your mouse, click, or drag-and-drop. The CLI is optimized to make these actions as fast as possible.

    Community Branding and Settings

    Customize your community's settings, branding, information, and more!

    Community Information

    The admin customization info section allows you to customize your community's image, name, timezone, and more!

    Call Commands

    Handles sending emergency calls to the CAD.

    This submodule utilizes API endpoints that require the standard version of Sonoran CAD or higher. For more information, view our page.

    Looking for VPS, web, or dedicated hosting? Check out our official !

    Local Callers

    Nearby witnesses will send an emergency call during car jackings, weapons being brandished, and more! Stop or cut their descriptions short by killing them in time!

    This submodule utilizes API endpoints that require the standard version of Sonoran CAD or higher. For more information, view our page.

    Looking for VPS, web, or dedicated hosting? Check out our official

    Discord Rich Presence

    Our desktop app allows you to advertise your community right in Discord!

    Rich presence is included with all versions of Sonoran CAD, but customization requires the Standard plan or higher, and the Pro plan for complete customization with the icon. For more information, see our or view how to check your community .

    Sonoran, Panic
    Sonoran, lookup name John Doe
    Sonoran, lookup plate ABCD1234
    ui = "https://sonorancad.com/", -- OPTIONAL
    icon = "http://s3.sonorancad.com/icon_white_bkg.png", -- OPTIONAL app icon
    price = 0, -- OPTIONAL, Make players pay with in-game money to download the app
    landscape = false, -- OPTIONAL, if set to true, the app will be displayed in landscape mode
    keepOpen = true, -- OPTIONAL, if set to true, the app will not close when the player opens the app (only works if ui is not defined)
    onUse = function() -- OPTIONAL function to be called when the app is opened
    -- do something
    end,
    onServerUse = function(source) -- OPTIONAL server side function to be called when the app is opened
    -- do something
    end
    }
    -- END COPY HERE --
    } -- https://docs.lbscripts.com/phone/custom-apps/

    Locks the selected item(s) from moving.

    G

    Groups or ungroups the selected items together. Use SHIFT + CLICK to select multiple items.

    CTRL + Z

    Undo last action(s)

    CTRL + SHIFT + Z

    Redo last action(s)

    DELETE

    Delete selected item(s)

    CTRL + C

    Copy selected item(s)

    CTRL + V

    Paste copied item(s)

    O

    Opens the item options/settings when an element is selected.

    UP ARROW or SHIFT + UP ARROW

    Moves the selected item up a layer. Shift option brings it to the very top.

    DOWN ARROW or SHIFT + DOWN ARROW

    Moves the selected item down a layer. Shift option brings it to the very bottom.

    or the shortcut
    medical diagram
    Record: Diagram Viewer
    Diagram Builder
    Diagram: Road Element Resize
    Diagram: Road Element Options
    Diagram Builder: Action Buttons

    L

    Sonoran Store - ATM Robbery
    Unique ID used to specify searchable columns in the custom record editor
  • Mask

    • Mask for the search bar - This uses the same mask system as the custom records.

  • video tutorial and showcase
    database sync
    database sync
    Sonoran CAD - Custom Lookup Types
    Sonoran CAD - Custom Records Field Mapping ID
    Sonoran CAD - Database Sync and Custom Searches
    Sonoran CAD - Custom Search Fields
    Accessing the CLI

    Via Hotkey

    The CLI can be brought up using a global hotkey. This will automatically open and focus your cursor in the first box, or maximize and focus a minimized CLI window tab.

    Via Window Tab

    You can also access the CLI from the start menu > Dispatch > Command Line

    Utilizing the CLI

    The CLI is broken into four boxes. Each box has auto-complete as you type.

    Press Tab or Enter on your keyboard when the filter is down to one option. This will auto-complete to the remaining option and focus your cursor into the next box.

    If you've already completed the last box for the action type, Tab or Enter will automatically submit the command.

    Sonoran CAD - Command Line Interface

    Command List

    Box 1
    Box 2
    Box 3
    Box 4

    CREATE

    Unit Identifier

    Postal Code

    CLOSE

    Call ID Number

    ATTACH

    Command Descriptions

    • CREATE: Create a new dispatch call from a saved type, specifying a unit and postal code.

    • CLOSE: Close a dispatch call from the ID.

    • ATTACH: Attach a unit to a dispatch call ID.

    • DETACH: Detach a unit from a dispatch call ID.

    • VIEW: View a dispatch call ID in the call editor.

    • CLEAR: Clear the call editor.

    • STATUS: Set a unit or group status.

    • NOTE: Add a note to a dispatch call ID.

    A link to your community's logo.

    This will be displayed on your custom login page, loading icon, community card, and more!

    Name

    This is your community's name.

    This will be displayed on your custom login page, community card, and top header.

    Subtitle

    This is the text displayed below your community name on your custom login page and community card.

    Website

    This is a link to your community website, to be displayed in the community menu.

    Discord

    This is a link to your community Discord, to be displayed in the community menu.

    Voice Command Keyword

    This allows you to change the default keyword to something custom.

    Timezone

    All users in the CAD will have the clock at the top of the screen synced to this timezone. This helps avoid confusion, and improves report consistency.

    Community ID

    Custom community IDs require the starter version of Sonoran CAD or higher. For more information, see our pricing or view how to check your community limits.

    Looking to change your community ID? Navigate to Admin > Advanced > Change Community ID

    Sonoran CAD's Community ID Change

    Here, you can enter in and request a new community ID. Once submitted, you will be logged out. All active community members will also need to log out and back in to avoid any issues.

    If your community has an active subscription, you will automatically be downgraded to the free version.

    To transfer the subscription to the new community ID, update your community ID by pressing "Modify" on the active subscription in the payment center.

    Field

    Description

    Sonoran CAD's community customization menu

    Image

    Activation Video

    Click to view our call commands install video.

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the SonoranCAD Core first.

    2. Activate the Submodule and all Dependencies

    1. Follow the submodule activation guide for the callcommands, locations, and postals submodules.

    Usage

    Commands

    Command

    Description

    Panic

    Toggles your unit panic status in the CAD

    911

    Sends specific 911 call to the CAD

    511

    Sends specific 511 call to the CAD (Civil)

    311

    Sends non-emergency call to the CAD (Civil)

    Key Binds

    Users can toggle a panic event via a customizable keybind in their GTA Settings -> Key Bindings -> FiveM -> (sonorancad)

    By default, this keybind is blank.

    Sonoran CAD: Panic Keybind

    Custom Events

    Call Location

    By default, calls responded to via the /rcall command located in Dispatch Notify will attempt to be routed to the callers current location, rather than the location of the call. If you would like calls to route to the location of the original call, please set useCallLocation to true

    pricing
    server hosting
    !

    Promo Video

    Installation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the SonoranCAD Core first.

    2. Activate the Submodule and all Dependencies

    Follow the submodule activation guide for the required submodules.

    3. Configuration

    Variable
    Type
    Description

    callCoolDown

    int

    How long in between calls for the same player

    clearRecordsAfter

    int

    Time in minutes to clear records after a call is made | 0 will disable this feature

    callTypes

    table

    Events that will trigger a 911 call. gun Will trigger based on brandishing or shooting a firearm. carJacking will trigger if you are trying to steal a car. death will trigger if a player dies

    localRunTime

    int

    Time in seconds for how long "locals" will run towards the player to show interest in the call, 0 will disable this feature

    4. Usage

    Emergency Calls

    When near an AI "local/ped" in-game, they will automatically pull out their phone and begin to place an emergency call if you are spotted committing one of the configured crimes.

    Emergency Call Information

    While the local caller is placing the emergency call, killing them before the configured timer expires will only send a partial report—making it harder for police to get a full description of you.

    Descriptions from the caller are based on clothing items. These can be configured and improved in the clothingConfig for custom items.

    pricing
    server hosting
    What is Discord Rich Presence?

    When running our desktop application, Discord can automatically detect and display information about your community.

    Sonoran CAD - Discord Rich Presence

    Customizing your Rich Presence

    Sonoran CAD - Discord Presence Customization

    Customizing Buttons

    Discord presence currently allows for two customizable buttons.

    Navigate to Admin > Customization > Customization > Discord Rich Presence

    For communities on the Standard plan or higher:

    - Button #2 may be customized to any Sonoran CAD or Sonoran CMS invitation link. - Ex: https://sonorancad.com/#/?comid=mycommunityid or https://sonorancms.com/#/?comid=mycommunityid

    For communities on the Pro plan:

    - Both buttons may be customized to any URL desired. - The Icon and title can also be customized with a Discord developer application.

    Customizing the Icon

    Communities on the Pro version may customize the rich presence icon:

    1. Create a new Discord Application

    On https://discord.com/developers/applications create a new application

    Discord Developer - New Application

    2. Copy your Client ID

    Under OAuth2, copy your Client ID

    Discord Developer - Application Client ID

    3. Add an Icon

    Next, upload an icon for your new application. Be sure to copy down the name of the icon for later.

    Discord Developer - Application Icon

    4. Configure in Sonoran CAD

    Back in the admin customization menu, we can paste the Discord application's Client ID and Icon name.

    Sonoran CAD - Custom Discord Presence Config

    Once saved, your Discord presence for all community members will reflect your custom icon, title, and buttons.

    Sonoran CAD - Custom Discord Presence View

    Toggle On/Off Rich Presence

    Community Toggle

    To hide the invite button for your community's Discord rich presence, simply leave the button text and URL blank.

    User Toggle

    In the settings menu, users can toggle this display on or off for their individual desktop client.

    Sonoran CAD Settings - Disable Discord's Rich Presence

    Known Issues

    My presence visible, but not to others?

    If your Discord presence is visible to you personally but not to others, ensure the button labels don't include any sort of :emoji: in them.

    pricing
    limits

    Your CAD will forcefully format the emergency services action bars to mobile format. This is beneficial for communities that are embedding the CAD in-game on a smaller format that does not quite meet the standard mobile dimensions.

    String

    Usage

    Description

    audiolevel

    app.sonorancad.com/#/?audiolevel=25

    Your CAD audio settings will be set by default to the value provided. This is beneficial to communities that are embedding the CAD inside of a resource, and may wish to mute the audio by default.

    String

    Usage

    Description

    lockCommunity

    app.sonorancad.com/#/?lockCommunity=true

    For communities using the tablet resource or custom login page, this query string locks the user to your community and hides the "Switch Community" buttons.

    Sonoran CAD's 'forcemobile' action bar
    Sonoran CAD's 'audiolevel' query string result
    limits
    Retrieving Your Credentials
    FiveM integration
    ER:LC integration
    apicheck
    here
    manually join your community
    Sonoran CAD - Web API Information
    Community IDs are displayed in the side navigation bar
    Community IDs are also displayed in the admin limits section
    Sonoran CAD's ownership authentication page
    attachments
    customizable tone
    panel tab minimized or pinned
    attached to a timer
    Sonoran CAD - Timer Panel
    Sonoran CAD - Drag Unit to Timer Tab
    Sonoran CAD - New Timer from Context Menu
    Sonoran CAD - Timer Panel
    Sonoran CAD - Timer Context Menu
    Sonoran CAD - Drag Unit to Timer Panel
    Sonoran CAD - Attach to Timer from Context Menu

    10-Codes

    Learn more about importing your 10-codes into Sonoran CAD.

    What are 10-Codes?

    10-Codes are used to differentiate and abbreviate dispatch situations. Ex: 10-10: Fight in Progress

    Modify 10-Codes

    Under Admin > Customization > 10-Codes you can add, edit, or remove 10-codes for your community.

    My locality doesn't call them "10-Codes"

    Sonoran CAD allows you to change the naming of "10-Codes" to anything else you'd like. Learn more about our .

    Import from Premade Spreadsheet (CSV)

    We've compiled 10-code spreadsheets for all 50 US states. Download a CSV from our and .

    Import 10-Codes from a Spreadsheet (CSV)

    Sonoran CAD allows you to import 10-codes directly from a spreadsheet.

    Spreadsheet (CSV) importing is only supported directly from Google sheets.

    Support will not be provided to users modifying their spreadsheets with Excel, or any other program. The official Google sheet includes specific safety checks preventing invalid formats, blank spaces, etc.

    1. Copy the Google Sheet

    Navigate to our official and make a copy. Using a copy of our official sheet ensures your 10-codes are formatted correctly.

    You may ONLY use the Google sheet directly. Editing this via Excel or any other program is NOT supported.

    2. Add Your 10-Codes

    Now that you have copied this sheet into your Google Drive, you can add new rows and format your 10-codes.

    Do NOT add additional columns. Every 10-code must be on a separate row to be properly imported into Sonoran CAD.

    3. Download the CSV

    In Google Sheets, navigate to File > Download > Comma Separated Values (.csv) to download the file.

    4. Import the CSV File

    In Sonoran CAD, navigate to Admin > Customization > 10-Codes

    In the 10-codes section, select the "Import" button. Then, select "CSV" as the import type and select your downloaded CSV file.

    After selecting the CSV file, your 10-codes will be imported into the CAD and saved automatically.

    Troubleshooting

    Having issues importing your CSV? .

    Our Google sheet includes specific error checking and validation to handle common mistakes. Support is not provided if you are using Excel, or any other program.

    Import from JSON

    You can also build and format your 10-Codes directly into JSON. These JSON formatted 10-Codes can then be pasted directly into the UI.

    1. Format the JSON Structure

    The JSON structure is an string array. Be sure to strictly follow the format.

    2. Import the JSON Structure

    In Sonoran CAD, navigate to Admin > Customization > 10-Codes

    In the penal codes section, select the "Import" button. Then, select "JSON" and paste the JSON string array of 10-codes.

    After pasting the JSON content, your 10-codes will be imported into the CAD and saved automatically.

    Discord Webhooks

    Receive instant notifications in your Discord channel when new records are added, dispatches are modified, admin actions occur, and more!

    The free version of Sonoran CAD is limited to one (1) Discord webhook. For more information, see our pricing or view how to check your community limits.

    Currently, Discord webhooks can only be created using the Desktop version of Discord.

    1. Open your Server Settings

    Open the "Server Settings" panel in the top right of your Discord server.

    2. Open your Discord Integrations

    In the server settings panel, select the “Integrations” tab.

    3. View your Webhooks

    On the right, click to view all of your current Discord webhooks.

    4. Create a New Webhook URL

    Select the "New Webhook" button.

    5. Customize the New Webhook

    Here, you can set the Webhook name, channel and icon.

    Press the "Copy Webhook URL" button to copy the webhook's URL. Press the "Save Changes" button to save your new webhook in Discord.

    6. Configure the Sonoran CAD Webhook

    New webhooks are created as "discord.com". If you are having problems please change the URLs of the old webhooks from "discordapp.com" to "discord.com" so they will function.

    In the Sonoran CAD Admin panel, select “Advanced > Discord Integration” Paste your Webhook URL in the desired webhook configuration box. Toggle the desired notification events for the specific webhook. Press the “Save Configuration” button.

    Note: Some webhooks allow you to customize the notification settings even further. For example, you can specify to only receive a webhook when a police record is added, edited or removed.

    7. Footer Metadata

    As of Sonoran Bot v2, the ability to react to webhooks to create actions has been depreciated.

    Footer metadata is still available to all communities.

    to see this reimplemented!

    Footer Metadata

    Webhook footers contain metadata that can be pulled from a bot for further integration. These follow the format: USERNAME or UUID | TYPE | ID

    Type
    ID Value

    Customizing Your Layout

    Sonoran CAD allows for fully customizable layouts to improve efficiency in your workflows.

    Getting Started

    By default, "Classic Layout" is enabled in the customization menu.

    To customize your dispatch/unit panel layout, you will need to .

    1. Menu Options

    You can right click on any panel and to reveal multiple menu options.

    1. : This locks and saves the window's position into place.

    2. : This opens the quick resize tools for the window.

    3. Bring to Top: This brings the window in front of any other open windows.

    4. Minimize: This minimizes the window to a tab at the top of your screen.

    2. Quick Resize

    Windows can be resized and positioned in multiple ways:

    You can select one of the quick positions to move the window to one of the 9 quadrants on your screen. Or, toggle "Show Advanced" to specify the window's dimensions and positions down to the pixel.

    Additionally, you can hover over the top edges of the window to click and drag the size.

    3. Dragging to Position

    Popout windows like a lookup, 10-code sheet, etc. can all be easily dragged and resized using the top header in addition to the quick resize tools.

    Popout windows with in quick resize enabled or unlocked required windows (dispatch call editor, etc.) can be dragged simply by clicking and dragging anywhere on the window.

    4. Locking/Unlocking

    When a window is locked into place it can no longer be moved. Additionally, the size and positioning is saved locally to your device and will persist after a refresh or relog. You can lock or unlock the window by right clicking on the window.

    5. Reset Layouts

    If something goes wrong or you just want to start fresh, you can reset your saved layouts in the layout customization menu.

    Simply right click on the empty area in the taskbar, or navigate to Start > System > Customization

    6. Taskbar

    Search Box

    The task bar can be opened with a configurable or with our integration. When opened, a search bar will be automatically focused on all non-mobile devices.‌

    Here, you can search to quickly filter options. When the results have been filtered down to a single window, the search label will turn green indicating the window shortcut is available. Simply press ENTER to open the window.

    Positioning

    The taskbar is a desktop style action bar that will contain the "Start Menu" (Sonoran CAD logo) and your active/pinned tabs.

    The taskbar can be positioned on the top, bottom, left, or right of your screen.

    To change the taskbar's position, access the customization menu by right-clicking on empty space in the taskbar. Or, from the start menu navigate to System > Customization

    7. Tab System

    Sonoran CAD's advanced tab system allows for efficient window management and quickly accessing new programs.

    Drag-and-Drop: Tabs can be dragged and dropped into new positions for organization. Pinned tabs will save their ordering past a refresh.

    Duplicate Windows: When more than one window of the same type is minimized, the tab will show the number of minimized tabs in the top right. Clicking on a tab with more than one window minimized will display a menu allowing you to select a specific tab or open an entirely new one.

    Pinned Tabs: Tabs can be pinned to the taskbar by right-clicking and selecting "Pin to taskbar" on the context menu. Pinned tabs will save their ordering past a page refresh. Pinned tabs with no actively minimized windows will be displayed as a lighter grey. Clicking on a pinned tab with no actively minimized windows will open a new window of that type.

    Icon and Label: Tabs can be set to display as an icon, text, or both. This is toggleable in the customization menu. Note: Text will only be displayed if the taskbar is in the top or bottom screen position.

    8. Classic Layout

    For some users, modifying the positions of dispatching panels may be too complicated. You can easily toggle on the "Classic Layout" to have the call windows automatically placed and responsive. Don't worry, popout windows can still be moved around and locked into place as normal.

    Enable Classic Mode:

    Right Click on the Task Bar > Customization > Classic Layout

    Change Taskbar and Button Position(s)

    Don't forget, you can easily , , and !

    Record Lookups

    Sonoran CAD's in-depth record management system makes searching for records easy!

    Getting Started

    From the start menu select Record Management > Lookup to open a new lookup window. You can also minimize and pin this window type to your taskbar for faster access.

    Sonoran CAD - New Lookup

    Running a Search

    The lookup window has tabs at the top to search via name, license plate, unit identifier, record ID, or one of your .

    Partial vs Exact Lookups

    The lookup window allows you to toggle the search to return only exact matches, or partial matches.

    Example: Partial Search

    Running partial lookup on John Anderson will return results for John Anderson and John Handerson.

    Running an exact lookup on John Anderson will only return results for John Anderson as Handerson is not an exact last name match.

    Record Type Filters

    Click on the filter button just above the results tab to expand the filters section.

    Here, you can toggle on/off exactly what record types to search for.

    Send Lookup to Units

    Anyone on the Dispatcher page, or in self-dispatch mode has the option to send the lookup results to other units. Performing this action will have all record results sent to their CAD.

    Shortcut and Drag-and-Drop

    You can click on any active unit and select Lookup to open a new lookup window with this unit added, or have it added to any existing lookup windows.

    Additionally, units and unit groups can be dragged-and-dropped directly to the lookup window.

    Manual Search and Selection

    Next to the search button, you can click on the Send to Unit(s) button to toggle this mode on.

    Using the dropdown, you can type to filter active units or select them from the list directly.

    Copy Record Links

    Records can be via the Linked Records custom section, or .

    Press the link icon in the top left to copy the record to your clipboard.

    Lookup from Plate Lock

    Our allows you to lock your plate reader in-game and have the lookup automatically ran in your CAD.

    Voice Commands

    Lookups can also be ran via a search .

    PDF Printing

    Any record results returned can be opened and printed to .

    Stream Deck Integration

    Utilize our desktop application's global hotkey system with your Elgato Stream Deck!

    Introduction

    Our desktop application allows for global hotkey access to change your status, panic, open a new lookup, record center, and more even when the app is minimized.

    For users with a Stream Deck, you can utilize these functions for quick access while in-game.

    Installation

    1. Download the Profile

    Download the profile for your or .

    2. Import the File

    Typically, you can double click the .streamDeckProfile file and automatically import it. Otherwise, you can manually import it through the menu.

    Manual Import

    1. Select "Edit Profiles"

    2. Select "Import"

    3. Select the downloaded Stream Deck Profile

    3. Configure your Hotkeys

    In Sonoran CAD, you can in the settings menu.

    If you change them from the default values, you will need to update them in your Stream Deck. Simply click on the icon, click the Hotkey field, and change the key.

    Configuration

    Launch Application Hotkey

    You can edit the Sonoran CAD launch key to automatically launch the .

    1. Edit the Icon Path

    Select the Sonoran CAD launch logo and click the ... file browser under the file path bar.

    2. Navigate to %appdata%

    Paste `%appdata% into the file browser bar and press enter.

    3. Select the Application

    Select the Sonoran CAD desktop application under AppData > Local > Programs > Sonoran CAD.exe

    4. Launch Sonoran CAD

    You can now press the Sonoran CAD icon on your Stream Deck to launch the desktop application.

    Auto-Launch Profile

    Your Stream Deck can automatically launch the Sonoran CAD profile when you open the .

    1. Open the profile settings:

    Hit the gear icon, or the dropdown under your profile name:

    Select the Application

    Select the Sonoran CAD profile and "Other" from the application dropdown. Then, follow the .

    Tone Board

    Learn more about Sonoran CAD's customizable tone board!

    The tone board is limited based upon your community's version. For more information, see our pricing or view how to check your community limits.

    Customizing Tones

    1. Access the Customization Menu

    In the admin page, navigate to Customization > Customization > Tone Board

    2. Uploading Tones

    Direct Upload

    You can upload .mp3, .wav, and .mp4 files directly to the CAD with the plus version.

    External Upload

    If your community is not on the plus version or higher, you will need to link your tone from an external URL. You can upload to a website or file store of your choosing, but it must be a direct link ending in the file extension (.mp3, .mp4, .wav).

    You can even use something as easy as Discord.

    1. Upload your tone file to Discord in any chat

    2. Right click on the file name or download button

    3. Select Copy Link

    4. Paste the direct URL into Sonoran CAD

    Your direct link will look something like this: https://cdn.discordapp.com/attachments/12345/abc123/signal_100.mp3

    3. Customize the Available Tones

    Here, you can add new tones and specify the following:

    • Tone Label

    • Tone Link/URL (Direct uploading available based on your )

    • Tone Button Color (Hex)

    • Tone Button Icon

    Tone Icons

    Tone buttons support icons from several different web libraries. Clicking the search icon will open the search. Here, you can search for an icon - click on it - and paste the icon name into the CAD. You can also use .

    Save your Tones

    Don't forget to press save!

    Selecting the Tone "Play To" Groups

    The tone board can be set to play tones for specific identifiers, groups, agencies, departments, subdivisions, and dispatch calls.

    You can click on any one of these items and select "Tone Board" to add this group to the play target on the tone board.

    Playing Tones as Dispatch

    Opening the Tone Board Window

    The tone board can be opened by users in dispatch or self-dispatch mode.

    From the start menu, this panel is located under Dispatch > Tone Board

    This window can also be opened via a , also supported with our .

    The window can also be minimized, and on your screen for quick access.

    Tone Board Shortcuts

    The tone board is designed to be as efficient as possible.

    Search Filtering

    The top of the tone board includes a search box, allowing you to quickly filter tone options as you type. If you filter down the options to a single tone, the search label will turn green - allowing you to press ENTER to play the tone.

    The tone board is also designed to auto-focus this search box whenever it is opened, or the header is clicked.

    Hotkey Auto-Window

    allow you to open the tone board in a more advanced way. Opening the tone board with your or shortcut will first check for any existing tone board window opened or minimized. If one is found, that existing window will be opened and focused to the search bar. Otherwise, a new tone board window will be opened with the search box focused.

    Manual Tone Select

    Instead of using the search box filtering, users can also manually click the tone board button to play the audio.

    Tone Board Repeat

    Tones can be repeated at a specific interval.

    When sending a new tone, toggle repeat on and customize the seconds and count values. When the tone is sent, the repeat timer and counter will visualize any actively repeating tones.

    Lookups

    Implements name and plate lookups via the CAD.

    This submodule utilizes API endpoints that require the plus version of Sonoran CAD or higher. For more information, view our pricing page.

    This submodule is currently only used as a dependency for other submodules , and does not have any in-game commands for general player usage.

    Looking for VPS, web, or dedicated hosting? Check out our official !

    This submodule Implements name and plate lookups via the CAD.

    Activation Video

    Click to view our .

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the first.

    2. Activate the Submodule and all Dependencies

    Follow the for the required submodules.

    3. Set Your API ID

    Don't forget to set your account to properly link your in-game user to the CAD.

    Configuration

    Do not set the cache timer too low or you may run into rate limiting.

    Usage

    Exported Functions

    NOTE: For return object definitions, see the .

    Function Details

    For Developers

    This plugin also adds the commands namefind and platefind which takes the above arguments and prints the returned JSON object to the console.

    Station Alert

    Our Station Alert integration resource allows you to toggle fire station doors, lights, and send text-to-speech messages directly from the CAD!

    Sonoran CAD x Inferno Collection

    This resource utilizes API endpoints that require the Plus version of Sonoran CAD or higher. For more information, view our pricing page.

    Looking for VPS, web, or dedicated hosting? Check out our official !

    Installation Guide

    1. Download the Resource

    Users can get the Station Alert resource from Inferno Collection.

    • For Sonoran CAD Pro users, .

    • For Sonoran CAD Plus users, .

    This resource is managed through Tebex and will require you to login with FiveM. Be sure to login using the account that has the keymaster license for your server.

    Once purchased you can .

    2. Install the Resource

    We suggest installing the inferno-station-alert folder within the [sonorancad] folder your integration framework is installed in. The final result would look like the image below:

    3. Start the Resource

    In your server.cfg add the following new lines:

    4. Configuration Options

    Information on adding stations, lights, speakers, and more can be found in the .

    The provides further customization options.

    Usage

    🌎 Live Map

    On the live map, ensure you toggle station blips on. Clicking on a station will open the alert panel.

    The following example:

    • Opens the Engine 19 door at station Davis

    • Closes the Ambo 61 door at station Davis

    • Sets the station indicator light to Blue

    🚨 Station Alert Panel

    Dispatchers can also access the dedicated Station Alert panel under Unit Management.

    Here, you can type-to-filter and select multiple stations at once.

    📞 Dispatch Call Editor

    The dispatch call editor has a shortcut to quickly access nearby stations from an emergency call.

    When an emergency call from in-game is imported into the dispatch editor, the Nearby Stations icon will be available. Selecting one of these nearby stations opens the station alert builder with the Message box prefilled with call information.

    QB Core Mapping Tutorial

    Find out how to map a QB Core database with Sonoran CAD!

    Character Mapping

    QB Core stores player information in the players table.

    The player's first and last name is stored as JSON in the charinfo column. We'll toggle these as a JSON Column and set the JSON keys to firstname and lastname.

    The citizenid column stores a unique player ID. This will be our Character Mapping Column.

    Multiple Residency

    QB Core also allows players to own multiple residences at once.

    Sonoran CAD's DB Sync will pull all of these from their external player_houses table.

    Because multiple residences can be listed at once, it's recommended you update your custom record's residence field to the textarea type.

    The custom record now shows the residency textarea with all owned addresses.

    Vehicle Mapping

    QB Core stores the vehicle information in the player_vehicles table.

    The Unique ID for vehicles is stored in the citizenid column and matches the values stored in the citizenid column from our player mapping.

    The plate column stores the vehicle's license plates.

    You can configure other custom fields may include color, make, model, etc. Vehicle colors are often stored as a number. You can use to convert a number to a color name.

    License Mapping

    Because of how licenses are stored in QB Core, this process adds a couple of extra steps.

    1. Open Admin panel to License Record

    You will first need to edit the License record to adapt it for how QBCore stores its licenses. Open the Admin Panel by going to the following...

    Admin Panel -> Customization -> Custom Records -> Click #4 - License

    2. Edit License Information Section

    Replace the last three fields in the License Information: section with the following. Make sure to change the type to text and remove the mask. You can use the screenshot below as a guide. Then click Save before moving on.

    Don't forget to click Save before continuing!

    3. Open DBSync Settings

    Click Advanced -> In-Game Integration to open the DBSync settings menu.

    4. Fill in DBSync Settings

    As of writing on 2/28/2022, the following pictured settings will work for QBCore's latest version. Fill in the Table Name, Character Mapping Column, Column Names, JSON Columns and Friendly Mappings as shown below. Make sure to click Save Mapping Config once finished.

    We are aware of the misspelling "licence", this is intentional in QBCore to differentiate between another piece of data referred to as "license"

    Congratulations! You should now be all set up to display your licenses from QBCore in Sonoran CAD. Feel free to test a record lookup to verify everything is in order.

    Civilian Integration

    Allows players to fetch ID information from the CAD on demand.

    This submodule utilizes API endpoints that require the plus version of Sonoran CAD or higher. For more information, view our pricing page.

    Looking for VPS, web, or dedicated hosting? Check out our official server hosting!

    This submodule allows players to fetch their character information from the CAD. Basic functionality is provided with the /showid command, but developers are encouraged to use the export for their own creations.

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the first.

    2. Activate the Submodule and all Dependencies

    1. Follow the for the civintegration, and locations submodules.

    3. Set Your API ID

    Don't forget to set your account to properly link your in-game user to the CAD.

    Further Configuration

    Usage

    Commands

    The submodule comes with a few basic commands to show off the functionality.

    Export

    You can use this export to fetch all characters for a specific player ID. This is a server-side export only.

    This function can also be used in other submodules (without the export bit).

    Record Printer

    Print CAD PDF records to viewable, sharable, in-game inventory items!

    This submodule utilizes API endpoints that require the Pro version of Sonoran CAD or higher. For more information, view our pricing page.

    Looking for VPS, web, or dedicated hosting? Check out our official server hosting!

    What is the Record Printer?

    Sonoran CAD’s Record Printer seamlessly connects CAD records with the in-game world, enabling officers to generate and view official documents directly through an interactive in-game printer.

    Records can be printed at configurable printer objects or within vehicles, shared as inventory items, and viewed entirely in-game.

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the first.

    2. Adjust the Core Configuration

    The record printer settings are stored inside of the core configuration file.

    Variable
    Description

    In-Game Usage

    Sending Files From Sonoran CAD

    When in-game, units must also be actively signed into the dispatch, police, fire, or EMS panel.

    Using the records section in CAD, navigate to the record you would like to print, click the down arrow next to the blue PDF button and press Print In-Game.

    Printing In-Game

    After selecting Print In-Game, a message will appear in-game stating "You have a new record to print. Use /printqueue to view queue".

    You can print this file by using the command /print <PRINT QUEUE #> near a configured printer (printerObjects) or inside a configured vehicle (vehicleConfig).

    Once printed, the PDF will be placed in your hand with a viewer shown on your in-game screen. Buttons on-screen will allow you to maximize, minimize, and exit the window.

    If configured, closing the record will . Otherwise, the record will be dropped on the ground and can be picked up to be viewed by other players.

    Inventory Support

    Records can be stored and shared as an inventory item. The frameworks configuration item allows for inventories like ESX, QB Core, OX Inventory, and more.

    ForceReg

    Requires players to register on the CAD via a nag screen or freezing them. This can be restricted to specific jobs or ACE permissions.

    This submodule utilizes API endpoints that require the standard version of Sonoran CAD or higher. For more information, view our pricing page.

    Looking for VPS, web, or dedicated hosting? Check out our official server hosting!

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the first.

    2. Activate the Submodule and all Dependencies

    Follow the for the required submodules.

    3. Set Your API ID

    Don't forget to set your account to properly link your in-game user to the CAD.

    4. (OPTIONAL) Utilize the Tablet's Auto API ID

    The can be configured to automatically set user's API IDs when they login, removing the need for users to manually type this in.

    Further Configuration

    Usage

    Automated Functionality

    This submodule requires no configuration by default and will show a message at the top of the screen telling players to register for the CAD. Depending on the selected option, this behavior can change.

    Event

    This event is sent to the client after the check is completed.

    Penal Codes

    Sonoran CAD allows you to customize your community's penal codes, charge type names, bond type names, and more!

    Community customization is not included with the free version. For more information, see our or view how to check your community .

    What are penal codes?

    Submodule Troubleshooting

    View some basic troubleshooting steps when activating Sonoran CAD submodules.

    Core Commands

    Sonoran CAD's core includes powerful built-in commands. These commands are entered into your server console.

    Ex: A may ask you to send detailed logging information to them. They will give you the specific ID number to enter. (ex: 123) Entering sonoran support 123 in your server console will send your plugin configuration directly to our support application.

    Creating a Call

    This guide covers creating a new dispatch call in Sonoran CAD.

    Creating a Call

    Add Available Units

    Postals

    Allows sending nearest postal to the CAD via the location field. Also enables postal auto-fill for new dispatches and calls.

    This plugin utilizes API endpoints that require the standard version of Sonoran CAD or higher. For more information, view our page.

    Looking for VPS, web, or dedicated hosting? Check out our official !

     EVENT: SonoranCAD::callcommands:cadIncomingCall
     PARAMS:
          emergency = true/false (911 or 311 call)
          caller = name of caller
          location = street / cross street string
          description = description of call
          source = playerId

    Option

    Description

    Default

    maxCacheTime

    How long to cache a looked-up plate.

    120 seconds

    stalePurgeTimer

    How long between "stale" plate cleanups (keep unscanned plates)

    600 seconds (10 minutes)

    Function

    Arguments

    Description

    Returns

    cadNameLookup

    FirstName, MiddleInitial, LastName, callback

    Looks up a character based on the arguments specified.

    Objects containing character data and all associated objects.

    cadPlateLookup

    plate, basicFlag, callback, autoLookup

    Looks up a vehicle based on specified plate number.

    Objects containing vehicle data and all associated objects.

    server hosting
    WraithV2 plate reader and lookup installation video
    SonoranCAD Core
    submodule activation guide
    API ID
    Developer Documentation

    Plays Example Message as text-to-speech at station Davis

  • Plays Tone1 from the station alert resource tones at station Davis

  • server hosting
    download the FREE Station Alert (Sonoran Edition) package
    purchase the paid Station Alert package
    download the resource from the CFX.re portal
    quick start guide
    configuration documentation
    Station Alert: CAD Installation
    Station Alert: Live Map
    Station Alert: Panel
    Station Alert: Call Editor

    false

    whitelist.mode

    What the whitelist will use to check if a player is whitelisted

    qb-core Options: qb-core, esx, ace

    whitelist.aces

    Ace permissions that will pass the whitelist and will get the ForceReg notifications if whitelist.mode is set to ace.

    forcereg.whitelist

    whitelist.jobs

    QBCore of ESX jobs that will pass the whitelist and get the ForceReg notifications if whitelist.mode is set to qb-core or esx.

    police

    Option

    Description

    Default Value

    captiveOption

    The mode to use for telling players to sign up.

    Nag

    captiveMessage

    Message to show to the player.

    See Config

    verifyMessage

    Message to show how to confirm the player registered.

    See Config

    whitelist.enabled

    SonoranCAD Core
    submodule activation guide
    API ID
    tablet resource

    Restrict forcing registration to only the configured people

    --[[
        cadNameLookup
            first: First Name
            last: Last Name
            mi: Middle Initial
            callback: function called with return data
    ]]
    function cadNameLookup(first, last, mi, callback)
    
    --[[
        cadPlateLookup
            plate: plate number
            basicFlag: true returns cached record if possible which only contains vehicleRegistrations object, false calls the API
            callback: the function called with the return data
            autoLookup: when populated with an API ID, pops open a search window on the officer's CAD (optional)
    ]]
    function cadPlateLookup(plate, basicFlag, callback, autoLookup)
    exec @inferno-station-alert/config.cfg
    ensure inferno-station-alert
    Event: "SonoranCAD::forcereg:PlayerReg"
    
    Parameters:
        identifier: The identifier checked
        exists: true/false, if the identifier is linked to a CAD account

    Call ID | Server ID

    6: EDIT_DISPATCH

    Call ID | Server ID

    7: CLOSE_DISPATCH

    Call ID

    8: EMERGENCY

    Call ID | Server ID

    9: RECORD_ADD

    Record ID

    10: RECORD_EDIT

    Record ID

    11: RECORD_REMOVE

    Record ID

    12: TONE_PLAYED

    Tone Label

    999: SYSTEM

    Systemwide Broadcast (From Sonoran)

    0: UNIT_PANIC

    Identifier ID

    1: TEN_CODES

    2: PENAL_CODES

    3: SIGNAL

    Signal Value

    4: ACCOUNT

    Submit a suggestion
    Sonoran CAD - Webhook Footer Data

    5: NEW_DISPATCH

  • Close: This closes the window.

  • disable this
    Lock/Unlock Window
    Quick Resize
    hotkey
    Streamdeck
    move the taskbar to the top or sides of the screen
    change what buttons appear
    change the order of the buttons
    Sonoran CAD - Window Menu Options
    Sonoran CAD - Quick Resize
    Sonoran CAD - Taskbar Filter
    Sonoran CAD - Taskbar Positioning
    Sonoran CAD - Tab System
    Sonoran CAD - Tabs with Icon and Text
    Sonoran CAD - Classic Layout

    false

    Option

    Description

    Default Value

    cacheTime

    Time to cache characters in seconds

    3600

    allowCustomIds

    Allow players to use /setid to set a custom name.

    true

    allowPurge

    Allow players to use /refreshid to "purge" their character list from cache.

    true

    enableIDCardUI

    Command

    Description

    /showid [id]

    Shows the current ID of the specified player ID. If not specified, will show the current player's ID. Currently, it is displayed only to the calling client.

    /setid

    Sets a custom ID (first/last name, and date of birth). Overrides the currently selected CAD ID. Can be disabled in configuration.

    /resetid

    Resets the custom ID specified above.

    /refreshid

    Removes the "cached" characters for the client. This allows players to swap characters in the CAD without relogging or waiting for the cache timer.

    SonoranCAD Core
    submodule activation guide
    API ID
    Sonoran CAD - Civilian Integration Lookup

    Recommended: Allows for a more realistic identification ui with /showid IF USING: Please ensure you start the resource sonoran_idcard BEFORE sonorancad in your server resource start order

    printerObjects

    Array of in-game printer objects that can be walked up to and print records

    printerCoords

    Array of specific in-game coordinates where a print station is

    frameworks

    Framework activation configuration

    translations

    List of translations

    recordPurgeDays

    The number of days that the downloaded PDF's will be stored on the local server

    printQueueCommand

    Command the view the print queue

    printCommand

    Command used to print PDF's in-game

    clearPrintQueueCommand

    Command to clear the print queue

    maxPrintsPerQueue

    Max number of print requests a user can have in their queue at a time

    vehicleConfig

    Configuration of LEO vehicles that have a printer

    Sonoran CAD Core
    place it in your player inventory
    Sonoran CAD - Print Record Option
    Penal codes can easily be referenced and cited in records/reports as charges.
    Sonoran CAD - Penal Code Reference Window
    Sonoran CAD - Charges Section

    1. Charge Types

    You can create your own "Charge Type" options for penal codes. If your country does not have "felonies" you can edit or remove this option.

    You can also use the "Auto Sort" feature to quickly format the order of these charge types.

    Be sure to hit "Save" before exiting the page.

    Sonoran CAD - Custom Charge Types

    2. Bond Types

    You can create your own "Bond'/Bail Type" options for penal codes. Again, if your country does not use these, you can edit or remove them as needed.

    You can also use the "Auto Sort" feature to quickly format the order of these charge types.

    Sonoran CAD - Custom Bond & Bail Types

    3. Penal Codes

    Adding, editing, or removing a penal code is easy. Simply click on the existing code to edit it, or press "New Penal Code" to create a new one.

    Sonoran CAD - Penal Code Management
    Sonoran CAD - Penal Code Editor

    4. My locality doesn't call them "Penal Codes"

    Sonoran CAD allows you to change the naming of "Penal Codes" to anything else you'd like. Learn more about our geographical customization.

    Import from Premade Spreadsheet (CSV)

    We've compiled penal code spreadsheets for all 50 US states. Download a CSV from our penal code repository and import it into the CAD.

    Import from Customized Spreadsheet (CSV)

    Sonoran CAD allows you to easily import your penal codes from a spreadsheet (.CSV) file.

    Spreadsheet (CSV) importing is only supported directly from Google sheets.

    Support will not be provided to users modifying their spreadsheets with Excel, or any other program. The official Google sheet includes specific safety checks preventing invalid formats, blank spaces, etc.

    1. Copy the Google Sheet

    Navigate to our official penal code Google sheet and make a copy. Using a copy of our official sheet ensures your penal codes are formatted correctly.

    You may ONLY use the Google sheet directly. Editing this via Excel or any other program is NOT supported.

    Penal Codes - Copy Sheet

    2. Add Your Penal Codes

    Now that you have copied this sheet into your Google Drive, you can add new rows and format your penal codes.

    Do NOT modify the very first row. These names must remain the same to properly format the penal code structure.

    Additionally, the bondAmount column must be kept as a number. All other columns must be formatted as text.

    3. Download the CSV

    In Google Sheets, navigate to File > Download > Comma Separated Values (.csv) to download the file.

    Google Sheets - Download CSV

    4. Import the CSV File

    In Sonoran CAD, navigate to Admin > Customization > Penal Codes

    In the penal codes section, select the "Import" button. Then, select "CSV" as the import type and select your downloaded CSV file.

    Sonoran CAD - Import Data
    File Selector - Select File

    After selecting the CSV file, your penal codes will be imported into the CAD and saved automatically.

    Troubleshooting

    Having issues importing your CSV? Be sure you are using and editing our Google Sheet with the Google Sheets program only.

    Our Google sheet includes specific error checking and validation to handle common mistakes. Support is not provided if you are using Excel, or any other program.

    Import from JSON

    You can also build and format your penal codes directly into JSON. These JSON formatted penal codes can be sent via our API endpoint, or pasted directly into the UI for a more user-friendly experience.

    1. Format the JSON Structure

    The JSON structure is an object array. Be sure to strictly follow the format. All keys are strings, with the exception of bondAmount being a number.

    2. Import the JSON Structure

    In Sonoran CAD, navigate to Admin > Customization > Penal Codes

    In the penal codes section, select the "Import" button. Then, select "JSON" and paste the JSON object array of penal codes.

    Sonoran CAD - Import Data
    Sonoran CAD - Paste JSON Content

    After pasting the JSON content, your penal codes will be imported into the CAD and saved automatically.

    pricing
    limits

    Command

    Description

    sonoran debugmode

    Enables detailed debug logging

    sonoran info

    Displays version and config information

    sonoran support <NUMBER>

    Sends important information for purposes.

    The NUMBER parameter will be provided to you by a support team member.

    Ex: sonoran support 123 sends us your plugin information for help.

    sonoran plugin <NAME>

    Displays plugin information

    Ex: sonoran plugin callcommands

    Quick Checks

    1. Ensure your community is on a paid version.

    Your community's subscription may have expired and failed to renew. Do a quick check on your community limits to make sure your community version includes the submodule you are trying to install.

    Each submodule guide lists the required subscription version at the top.

    2. Ensure your submodule is enabled

    Be sure to follow the core installation and submodule activation guides thoroughly, depending on the specific submodule you are trying to activate.

    Make sure you have not forgotten to enable the submodule in the plugin config file!

    Enter sonoran info into your server console.

    Sonoran Info - Disabled Plugins

    If the submodule you are having trouble with is listed as DISABLED, you may have forgotten to enable it in the submodule configuration.

    The "enabled" field should be set to "true"

    3. Ensure your API ID is set correctly.

    Ensure you have set your API ID in the CAD using the value from the API ID submodule.

    Debug Mode

    The SonoranCAD core includes a powerful debug mode. Enable this by entering sonoran debugmode into your server console.

    Debug mode will print out additional error information and JSON data for all API calls or push events.

    1. Check your API ID:

    For plugins that require your individual CAD user account to have the API ID set (live map, unit locations, panic, etc.) you can view this data in the console output.

    The image below shows an API Call being made from the server to Sonoran CAD. This API call is type UNIT_LOCATION and includes all the data necessary.

    Ensure the APIID listed in the API call matches the API ID set in your CAD's user account.

    Debug Mode - Unit Location API Call

    2. Check the Community ID and API Key

    Your community ID and API key is also listed in the debug API call information. Be sure that the community ID and API key are correct.

    Still Having Trouble?

    If you're still having trouble, our dedicated support team is here to help.

    Reach out to us and generate a support ticket at any time.

    Common Errors

    Error: Ensure config.json is present

    Your framework or plugin config is not correctly named config.json. Ensure that is has been spelt correctly, is not config.json.json, etc.

    You may need to open the file in a text editor to more easily see the file extension, and ensure that it is correctly named as config.json.

    Community Has Been API Blacklisted

    The CAD backend will temporarily "blacklist" (deny) all API calls if multiple requests are made with an invalid format.

    Causes

    • Third-party or custom integration scripts may not be utilizing our API correctly. Try disabling them to rule out the issue.

    • A bug with one of our FiveM submodules.

    Diagnosis

    1. Enable debug mode on your FiveM server by entering the server command sonoran debugmode. All API calls made will have the full JSON payload printed in your server console.

    2. Wait for your next API blacklist notice. In your server console, you should see multiple failed/errored API calls at the same time as your blacklist. The JSON will show the full, bad data being sent to Sonoran CAD. Based on the type of these API calls, you can narrow down the source to a third-party/custom script or one of our FiveM submodules.

      1. If the bad API calls leading to the blacklist appear to be from an official Sonoran CAD submodule, reach out to our support team.

    support member
    Manually Add Unit

    To add a unit to your call editor, click on an available unit or unit group, and select "Add to Call"

    Sonoran CAD - Add Unit to Call

    Attach Nearest Units

    When emergency calls are sent from in-game, they contain a coordinate location. Importing the emergency call from the table or live map will display an option to select and attach the closest units.

    Entering a postal code will work as a secondary option to find the nearest units. You must have the postals submodule enabled.

    Dispatch Editor: Nearest Units
    Dispatch Editor: Nearest Postal Units

    Drag-and-Drop

    Drag-and-drop is another fast way to add a unit to an existing call:

    Sonoran CAD - Attach Unit to Existing Call

    You can also easily detach units from an existing call, or drag a unit from one call to another:

    Sonoran CAD - Existing Call Detach and Switch
    Insert Call Information

    In the call editor, you can view attached units and fill out the call information. Once completed, select "Create Call" to initiate the new dispatch call.

    Sonoran CAD - Unit Editor

    Manage a Call

    Import Emergency Call

    Emergency calls can be imported directly to the call editor for faster transfer of information. Click on the call to select Open In Call Editor to import the call description, address, and more.

    Sonoran CAD: Import Emergency Call
    Merge Additional Emergency Call

    Often times civilians will continue to make additional emergency calls with updated information. At any time, you can merge these additional emergency calls into ongoing dispatch calls. Click on the emergency call to Merge Emergency Call to your dispatch call editor.

    This will append the latest emergency call information to the description and update any address, postal, etc. information.

    Sonoran CAD: Merge Emergency Call
    Track, Update, and Manage the Call

    The new dispatch will be displayed in your "Active Calls" window. You can select this call at anytime to preview, edit, or close. You can also drag-and-drop the call ID to the call editor to open the call.

    Sonoran CAD - Active Calls
    Call Notes

    Notes can be sent by units attached to the call.

    Text Notes

    Text based notes can be added in the note box and sent by pressing enter or add note.

    Note Links

    Record links for characters, arrest reports, etc. can also be sent in the dispatch call notes section. , then press the Paste button in the call notes section.

    Close the Call

    To close the active dispatch, click on the active call and press "Close Call".

    Or, you can select "Edit Call", change the status to "Closed", and press "Update Call".

    Sonoran CAD - Close Call

    Saved Call Types

    Create a Saved Call Type

    Saved call types allow dispatchers to quickly create commonly used calls.

    To add a new saved call type, simply fill the information out in your editor, and press the save button. The saved types are organized based off of the call's title.

    Saving a call with an identical title as another one will override it.

    Saved Dispatch Calls - Create

    Open a Saved Call Type

    To open a saved call type, simply select it from the dropdown at the top of the editor. The dropdown will also automatically filter as you type.

    Saved Dispatch Calls - Select
    Remove a Saved Call Type

    To remove a saved call type, simply select it from the dropdown and press the trash icon.

    Saved Dispatch Calls - Remove
    Activation Video

    Click to view our locations and postal install video.

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the SonoranCAD Core first.

    2. Activate the Submodule and all Dependencies

    Follow the submodule activation guide for the required submodules.

    3. Configure Postal Script and Exports

    1. If you're using the publicly available nearest-postal script, you will need to follow the steps in the usage section below.

    2. If you're using a custom postal codes file, you will need to add the file to the plugin and Sonoran CAD's fxmanifest as shown in the usage section below.

    3. If you're using an event triggered by a custom postals script, you must configure it as explained in the usage section below.

    nearestPostalResourceName should ONLY be filled out if you're using our specific nearest postal script. In other words, do not put the name of your HUD script here, as that will not work.

    Configuration

    Option
    Description
    Default

    sendTimer

    Time between sending postal updates to the server.

    950 ms

    shouldSendPostalData

    Toggles the plugin on/off

    True

    nearestPostalResourceName

    If using our script, specify the name of its folder here

    nearest-postal

    mode

    Usage

    Using Nearest-Postal

    The plugin only supports 1.5.0 or higher of the nearest-postal plugin. Be sure to download the latest version before using.

    If you're using the publicly available nearest-postal script, some minor configuration is required.

    1. Set the Resource Name

    In the Sonoran CAD postals plugin config, change the nearestPostalsResourceName value to the exact name of your nearest postals resource. Ex: nearest-postals-1.5

    2. Ensure Proper Startup Order

    Be sure that you are starting the nearest-postals addon/resource before/above where you ensure sonorancad in your server.cfg.

    Be sure to restart both the Sonoran CAD resource and the nearest-postal script, or restart your server entirely to apply the changes made.

    Custom Postal Codes File

    If you want to use your own custom postal codes file with this plugin, open the config and change mode to file.

    Next, copy your custom postal codes file to the submodules/postals folder, and set the value of customPostalCodesFile to the name of this file. Include the .json file extension in the name.

    Custom Postal Events

    If you're not using the nearest-postal script or a custom postal codes file, you will need to create a export in your postals script, and have it return the player's current postal as a string.

    Additionally, you will need to edit the config to set mode to event, then specify the name of this event in nearestPostalEvent.

    Need help? You can always hire a developer.

    Troubleshooting

    The configured postals file (postals_file.json) was not found

    This error may be seen by users attempting to set up the plugin to use a custom postal codes file. Specifically, the error will look something like this, substituting postals_file.json for whatever you've named your custom postal codes file to:

    This means that either the postal codes file has not been correctly added to the fxmanifest, or that it has not been added at all. Please reference the above instructions on how to do so.

    We recommend replacing the files { } section of your fxmanifest with the given code snippet, then changing postals_file.json to match the name of whatever postals file you're using.

    If you've manually entered the line, verify that all the lines in the section except for the last are followed with a comma to ensure that the system can properly read it.

    pricing
    server hosting

    Call ID Number

    Unit Identifier

    DETACH

    Call ID Number

    Unit Identifier

    VIEW

    Call ID Number

    CLEAR

    STATUS

    Status Code

    Unit Identifier

    NOTE

    Call ID Number

    Note Text

    Saved Call Type

    callTimers

    table

    How long each call type will take to put through

    whitelistZones

    table

    Zones where only specific call types will trigger. (I.e. A shooting range won't trigger a brandishing call)

    language

    table

    Translations

    clothingConfig

    table

    Configure clothing colors and names if you have custom EUP as well as whitelist certain EUP items or peds to not trigger calls

    weaponConfig

    table

    Configure custom caller descriptions for weapons.

    geographical customization
    10-code repository
    import it into the CAD
    10-code Google sheet
    Be sure you are using and editing our Google Sheet with the Google Sheets program only
    Sonoran CAD - 10-Codes
    Sonoran CAD - Copy 10-Codes Spreadsheet
    Sonoran CAD - 10-Codes CSV
    Google Sheets - Download CSV
    Sonoran CAD - Import Data
    File Selector - Select CSV
    Sonoran CAD - Paste JSON Content
    custom lookup types
    linked to other records
    added to dispatch call notes
    Wraith radar plugin
    voice command
    PDF
    Sonoran CAD - Send Lookup to Unit(s)
    Sonoran CAD - Send Lookup to Unit(s)
    Sonoran CAD - Copy Record Link
    Stream Deck
    Stream Deck Mini
    view and manage your hotkeys
    Sonoran CAD desktop app
    Sonoran CAD Desktop application
    same steps to locate the Sonoran CAD.exe as before
    Stream Deck - Edit Profile
    Stream Deck - Import Profile
    Stream Deck - Select Profile
    Stream Deck - Change Hotkey
    Stream Deck - Select Launch Path
    Navigate to AppData
    Select the Sonoran CAD.exe
    Launch Sonoran CAD via Stream Deck
    Stream Deck - Edit Profile
    Stream Deck - Auto Launech Profile
    version
    Font Awesome icon library
    material theme icons
    custom hotkey
    Streamdeck Integration
    pinned to the taskbar
    Global hotkeys
    keyboard
    Streamdeck
    Sonoran CAD - Tone Board Customization
    Sonoran CAD - Tone Uploader
    Discord - Copy Direct File Link
    Font Awesome - Example Icon Name
    Sonoran CAD - Tone Board Targets
    Sonoran CAD - Tone Board
    friendly mapping
    QB Core - DB Sync - Residency Mapping
    QB Core - Multi Residence in Custom Record with DB Sync
    Sonoran CAD Custom Record Editor
    Sonoran CAD custom record editor
    Sonoran CAD DBSync Settings
    Sonoran CAD DBSync Friendly Mapping Settings
    Example QBCore DBSynced license data
    voice command

    Framework Support (ESX/QBCore) and Auto Fines

    Adds support for ESX and QBCore automatic in-game fines.

    This submodule only functions with other submodules that require the standard version of Sonoran CAD or higher. The auto-fine functionality requires the pro version.

    For more information, view our pricing page.

    ESX v2 is not supported by this submodule and will not function. Only ESX v1 is supported.

    Looking for VPS, web, or dedicated hosting? Check out our official server hosting!

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the first.

    2. Activate the Submodule and all Dependencies

    Follow the for the callcommands, locations, and postals submodules.

    3. [Optional] Add your Game Server IP and Port

    This step is only required if you wish to use the automatic fine capability.

    Be sure to have your game server IP and port set in the admin panel under Advanced > In-Game Integration > Server Events and Integrated Live Map

    4. Set Your API ID

    Don't forget to set your account API ID to properly link your in-game user to the CAD.

    5. Configuration

    Review the frameworksupport_config.lua file to configure the submodule to behave how you like. The file is well documented. Please review all the settings!

    Auto-Fines

    Civilians in-game can be automatically fined for the crimes they commit based on fineable forms submitted.

    To do so, simply enable issueFines in the config and add a list of custom record types to the fineableForms array. Also, be sure that you have configured your server IP and port in the admin menu.

    Ex: fineableForms = {"Arrest Report", "Speeding Citation"}

    The fines are pulled from your custom records:

    • Charges section -> Fine field

    • Speed section -> Fine field

    Usage

    This submodule can be used to issue fines to players when reports/records are entered into the CAD that include fines. You can configure the reports/records that are finable in the configuration. This submodule also adds support for ESX that other submodules can take advantage of. Currently, the following submodules are supported:

      • Adds the ability to show character names in dispatch responses (officer names)

      • Adds the ability to restrict functionality to certain jobs (like police). See the for how to do this.

    Legacy ESX Support

    Legacy ESX Support utilizes MySQL-Async in order to get character information from your database directly. ESX requires this in older versions so this shouldn't be an issue.

    This is mainly for ESX v1 releases that were made before the character system implementation using only the users database table. These versions of ESX used the users table only for player information of active characters and a characters table that held all character information (active and secondary characters of your players).

    Due to different handling of character information such as first name and last names, this option allows you to use esxsupport submodule with older "Legacy" ESX v1 releases.

    Simply set legacyESX to true in your config_esxsupport.lua

    Configuration

    Config Value
    Description

    Custom Domain & Login Page

    Looking to use your own domain name with Sonoran CAD? We've made it easy for you!

    Custom login pages require the standard version or higher. For more information, see our pricing or view how to check your community limits.

    Looking for VPS, web, or dedicated hosting? Check out our official server hosting!

    The custom login page allows your community members to register, sign-in, and access your CAD all on your own domain! In addition, user signups and password recovery emails have your . Logging in also takes you directly to the community, instead of having to select the community at the menu.

    DNS Record Method (Recommended)

    If you are unsure how to add a DNS record, you will need to contact your domain registrar.

    1. Enter your Desired Domain

    Your Sonoran CAD login page can be configured to display on your root custom domain or on a subdomain, such as example.com or cad.example.com.

    2. Add DNS Records

    When updating or changing an existing DNS record the changes may not be visible until public cache expires. Depending on your DNS provider, this can be anywhere from a few minutes to 24-48 hours. You can try running ipconfig /flushdns in a Windows CMD window and restarting your browser. Otherwise, you can test with other browsers/devices/users while you wait.

    In your domain registrar’s DNS management panel, add two CNAME records using the name and content provided in Sonoran CAD, and add one TXT record to verify domain ownership.

    DNS Example

    Cloudflare Users: Be sure to have the DNS record proxy DISABLED - and set to DNS Only.

    The example below shows the TXT record verifying the community ID, and two CNAME records verifying domain ownership.

    3. View your Custom Login Page

    Users can now visit this custom domain to view the CAD with a custom login page, including receiving your for signups and password recovery messages.

    iFrame Method

    If you are unable to use the , you can also host an HTML page that renders the CAD in an iFrame.

    1. Download the HTML File

    2. Edit the HTML File

    Replace YOUR_COMMUNITY_ID_HERE in the index.html file with your .

    3. Host the HTML File

    Now that you've saved the custom URL inside of the HTML file, you can host this with your own domain on your own web server. Users can now register and access your CAD from your custom domain, and will even receive your for account actions.

    In-Game Tablet

    If you wish to use a custom login page when using the , you can set a convar in your server.cfg. The easiest way to show your is to use a query string.

    "https://sonorancad.com/#/?comid=YOUR_COMMUNITY_ID_HERE"

    Simply replace YOUR_COMMUNITY_ID_HERE in the URL with your . EX: https://sonorancad.com/#/?comid=midwestrp

    Add the following to your server.cfg before starting the tablet resource:

    Fill in with your actual URL above with the comid you want.

    Body Camera

    The Sonoran CAD bodycam enables dispatchers to see live images from units in-game.

    This submodule utilizes API endpoints that require the Pro version of Sonoran CAD or higher. For more information, view our page.

    Looking for VPS, web, or dedicated hosting? Check out our official !

    Function: "GetCharacters"
    Parameters:
        player: the player ID
        callback: function to call after fetching the data. Returns an array of character objects.
    
    Example:
        exports["sonorancad"]:GetCharacters(playerId, function(result)
            -- do stuff with result, an array of character objects
        end)
    [
            {
                "code": "(2)06",
                "type": "Felony",
                "title": "Armed Robbery",
                "bondType": "Federal Bail Bond",
                "jailTime": "5-10 Years",
                "bondAmount": 20000
            },
            {
                "code": "(2)07",
                "type": "Felony",
                "title": "Murder",
                "bondType": "Federal Bail Bond",
                "jailTime": "5-50 Years",
                "bondAmount": 100000
            }
        ]
    The configured postals file (postals_file.json) was not found. Please check it.
    [
      "10-10: Fight In Progress",
      "10-11: Dog Case",
      "10-15: Civil Disturbance",
      "10-16: Domestic Problem",
      "10-17: Meet Complainant",
      "10-25: Report in Person (Meet)",
      "10-31: Crime in Progress",
      "10-32: Man with Gun",
      "10-33: Emergency",
      "10-34: Riot",
      "10-35: Major Crime Alert",
      "10-37: Suspicious Vehicle",
      "10-45: Animal Carcass",
      "10-46: Assist Motorist",
      "10-52: Ambulance Needed",
      "10-55: Intoxicated Driver",
      "10-56: Intoxicated Pedestrian",
      "10-57: Hit and Run",
      "10-59: Escort",
      "10-70: Fire Alarm",
      "10-73: Smoke Report",
      "10-80: Chase in Progress",
      "10-89: Bomb Threat",
      "10-90: Bank Alarm",
      "10-91: Pick Up Prisoner / Subject",
      "10-92: Improperly Parked Vehicle",
      "10-94: Street Racing",
      "10-96: Mental Subject",
      "10-98: Prison / Jail Break"
    ]
  • Adds the ability to show character names for the caller when they use /911. This is automatic when the submodule is installed.

  • livemap

    • Adds the ability to show character names on the map.

  • qbNotifyFinedPlayer

    Set to true to notify only the fined individual of the fine

    qbFineMessage

    The message sent to notify the user of the fine. The placeholders are $AMOUNT and $OFFICER_NAME where $AMOUNT is the fine total and $OFFICER_NAME is the Unit Name of the officer issuing the fine

    issueFines

    Whether to issue fines to players for finable reports/forms

    fineNotify

    Whether to send a message in chat when a player is issued a fine

    fineableForms

    A list of the names of forms that should issue fines to players.

    legacyESX

    Set to true if default settings do not get character name properly (older esx_identity/ESX legacy versions) created for and tested with: ESX v1.1.0 esx_identity v1.0.2

    identityType

    Newer ESX version use license instead of steam for identity.

    usePrefix

    Some ESX versions don't use the prefix (such as license:abc) with the identity, set to false to disable the prefix.

    usingQBCore

    If you are using QBCore set this to true.

    usingQBManagement

    Set to true if you want to use qb-management accounts to receive fine payments.

    qbManagementAccountNames

    A table of department abbreviations to qb-management account names, see examples present in config

    SonoranCAD Core
    submodule activation guide
    dispatchnotify
    dispatchnotify documentation
    callcommands

    Specify what "mode" this plugin should use to determine postals. If using nearest-postal, set this to resource. If using an event fired by another resource, set this to event. If using a custom postals file, set this to file.

    resource

    nearestPostalEvent

    If you've set mode to event, specify the name of the event fired by your postals resource here

    customPostalCodesFile

    If you've set mode to file, copy your custom postal codes file to the postals plugin folder, and add the name of that file here.

    nearest-postal

    What is the live Body Camera?

    Sonoran CAD is the only external CAD system offering live image feeds from in-game users accessible through the live map, active units preview, or a dedicated window.

    This feature updates the image feed at intervals that can be configured by the user (1-10 seconds).

    Learn more about the technology and limitations of this system.

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the SonoranCAD Core first.

    2. Activate Locations

    The locations submodule includes all logic required to send bodycam images to the CAD.

    3. Adjust the Core Configuration

    The bodycam settings are stored inside of the core configuration file.

    Variable
    Description

    command

    The command name to toggle your body camera on or off.

    requireUnitDuty

    If enabled, the player must be logged into the CAD to use the body camera.

    enableAnimation

    Play an in-game animation when activating or deactivating the body camera.

    enableOverlay

    Enables or disables the blinking body camera image on screen when enabled. Default true

    overlayLocation

    The position (corner) of the screen where the body camera image is displayed. Options: top-left, top-right, bottom-left, bottom-right Default: top-right

    enableBeeps

    Enables or disables the body camera beeping when turned on. Default: true

    In-Game Usage

    When in-game, units must also be actively signed into the dispatch, police, fire, or EMS panel.

    Use the /bodycam command to toggle your body camera on or off.

    Body Camera Overlay

    If enabled in your framework configuration, a periodic beep and blinking body camera logo will appear on your screen reflecting that your body camera is active.

    Beeps

    The body camera plays server-sided beeps periodically while activated.

    • beepFrequency determines how often these beeps are played

    • beepRange determines how far away these beeps are heard

    Automatic Activation

    The body camera will automatically activate when an officer activates their lights or draws a firearm.

    • autoEnableWithWeapons enables automatic activation when one of the weapons items are used.

    • autoEnableWithLights to enabled automatic activation when emergency lights are enabled.

    Unit Duty Requirement

    You can enable or disable the requirement for a unit to have to be logged into the Police, EMS or Fire portions of CAD in order to activate their bodycam by setting requireUnitDuty to true.

    Keybind

    Users can customize a keybind to toggle their bodycams on and off.

    Navigate to Settings > Keybinds > FiveM and look for the keybind "Toggle BodyCam" under the resource sonorancad

    Animation

    When toggling your body camera on or off, an animation will play if enableAnimation is true.

    CAD Usage

    Active Units

    In the active units panel, units with their body camera enabled will show a pulsing camera icon.

    Preview:

    Hover over this icon to see a preview image of their body camera.

    Window:

    Click the icon to open an adjustable window of their body camera.

    Live Map

    In the live map, units with their body camera enabled will show a pulsing camera icon.

    Preview:

    Click on the unit blip to view a live preview of their body camera in the unit action menu.

    Troubleshooting

    No such export requestClientScreenshot in resource screenshots-basic

    Some servers may see the following error print in their console:

    SCRIPT ERROR: @sonorancad/core/screenshot.lua:15: No such export requestClientScreenshot in resource screenshots-basic

    This means that you do not have the screenshot-basic resource installed on your server.

    We recommend that you update your server artifacts, as newer versions come with this resource installed by default. Alternatively, you can manually install it from GitHub.

    No Images/Loading on ZAP Hosting

    We are aware of an issue with the CFX proxy being unreachable on ZAP Hosting, a required piece for the body camera functionality.

    Your CFX proxy URL is formatted as https://someCFXUsernameHere.users.cfx.re/ with someCFXUsernameHere being your CFX username. This proxy is native functionality to all FiveM servers.

    We suggest contacting ZAP hosting directly (your game server provider) to try and resolve this issue.

    Technology and Limitations

    The Goal:

    • Real-time video streams from in-game, right in the CAD panel.

    The Limitations:

    • Individual users require significantly upgraded PC hardware and networking to transcode and upload live video feeds.

    • The infrastructure to host and share these streams would require massive amounts of new hardware, making the service unaffordable for gaming communities.

    The Resolution:

    Client Image Handling

    • Units in-game have local screenshots created and sent to the local game server for processing. These screenshots result in next to zero noticeable performance drop in comparison to transcoding live video streaming.

    • The local game server stores and serves these images to Sonoran CAD when requested by a CAD user. An on-going "feed" of images is sent, stored, and replaced as newer images replace the old ones. When the body camera is toggled off, or the server restarts, these folders are completely wiped to ensure your game server isn't bloating with old images.

    CAD Image Requests

    • When a CAD dispatcher requests to look at a unit's body camera, they ask the game server for the screenshot and continually request new screenshots at the rate they're being generated. The current default is 2000ms (2 seconds) but can be lowered to as little as 1000ms (1 second).

    End Result:

    • This "screenshot feed" system allows dispatchers to stay up-to-date without requiring massive amounts of bandwidth, expensive processing for the user's PCs, and ensures quick responsiveness within the CAD.

    Disclaimer

    Please note that this feature is in early development and may exhibit instability, influenced by server and network performance. Body camera images are generated by the client and temporarily stored on the community's server. Viewing these images, whether by dispatchers or units, involves active requests to your CFX nucleus proxy, leading to increased network traffic and processing demands.

    pricing
    server hosting
    custom branding
    branded emails
    DNS method
    You can download a ZIP of the HTML page here.
    community ID
    custom branded emails
    in-game Tablet resource
    custom login page
    community ID
    Sonoran CAD Custom Login Page Example
    Copy a record link
    Sonoran CAD - Dispatch Call Notes
    customer support

    Database Sync Credentials

    Getting your database Credentials to use with Database Sync.

    Database Sync is not enabled with the free version of Sonoran CAD. For more information, see our or view how to check your community .

    Looking for VPS, web, or dedicated hosting? Check out our official !

    FiveM Submodules

    View Sonoran CAD's vast library of integration plugins for your community!

    Below is a table of which plugins require which version of Sonoran CAD to function due to the required API endpoints.

    The FiveM resource does not work with the Free or Starter version of Sonoran CAD.

    Each submodule can be in the sonorancad/configuration folder.


    Plugin Name
    Standard
    Plus
    Pro
    setr sonorantablet_cadUrl "YOUR_URL_HERE"

    beepType

    Type of audio that the beeps use.

    native = GTAV Native Sounds

    nui = Custom Sound File

    beepFrequency

    Adjusts the frequency at which unit body camera beeps when turned on(in milliseconds). Default: 30000 (30 seconds)

    beepRange

    The range at which a person can hear the bodycam beeps

    screenshotFrequency

    Adjusts the frequency at which unit body cameras update (in milliseconds). Default: 2000 (2 seconds)

    defaultKeybind

    The default keybind for toggling the bodycam.

    autoEnableWithLights

    Automatically enable bodycam when emergency lights are enabled/disabled.

    autoEnableWithWeapons

    Automatically enable bodycam when a weapon is drawn.

    clothing

    Clothing items that must be worn in order to have a body camera.

    weapons

    Weapons that when drawn enable bodycam.

    bodycamCommandChangeFrequency

    The command to adjust your individual body camera screenshot frequency to be different than the server's screenshotFrequency value. Default: bodycamFreq

    Database Sync is a read-only system. All characters, licenses, and vehicle registrations pulled from your database can not be modified in the CAD. Database Merge allows you to save off additional, manually specified data in the CAD.

    1. Getting your Credentials

    phpMyAdmin - Database Credentials

    1. Navigate to your phpMyAdmin Web Panel

    2. Navigate to User Accounts

    At the top of your screen click on User Accounts.

    3. Create a new user account

    4. Fill out the account information

    The Host Name field should be set as Any Host and the value as %. This will allow external IPs (Sonoran CAD) to connect to your database.

    5. Once created, edit the user account privileges

    6. Select your specific database

    7. Select only the required permissions

    SELECT and SHOW VIEW will ensure this account can only read from your database.

    8. Save the user and set credentials in Sonoran CAD

    You will now want to go to and get your Public IP Address to use as your Host.

    Database Translation Information:

    See to figure out how to add Credentials to your CAD Instance using the information above.

    HeidiSQL - Database Credentials

    1. Login to your database using HeidiSQL.

    Zap Hosting - Database Credentials

    1. Login

    Login to your Zap Hosting Account and Navigate to your FiveM Server.

    2. Port Forwarding

    If your database port has not already been opened, you will need to forward/open this port. Typically, the default MySQL port is 3306.

    To check if your MySQL port has been properly opened, visit a port checking utility and enter your MySQL server's IP address and port.

    If you are unsure how to open a port, you will need to contact your hosting provider.

    IP Whitelisting

    My community wants to whitelist only the Sonoran CAD IP address to connect on this SQL user account. How can I do this?

    You may whitelist the following IPs:

    Last Updated : 8/26/2025

    pricing
    limits
    server hosting

    No

    No

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    No

    Yes

    Yes

    No

    Yes

    Yes

    Partial

    Partial

    Yes

    Fire Siren

    No

    Yes

    Yes

    No

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    Yes

    No

    Yes

    Yes

    No

    Yes

    Yes

    Yes

    Yes

    Yes

    No

    No

    Yes

    No

    No

    Yes

    No

    Partial

    Yes

    Partial

    Yes

    Yes

    Yes

    Yes

    Yes

    No

    Yes

    Yes

    Yes

    Yes

    Yes

    No

    Yes

    Yes

    No

    Yes

    Yes

    easily enabled and configured

    In-Vehicle Radar

    View your radar from first person!

    Learn more about this script!

    Sonoran's Radar Display brings new levels of immersion to Police Radars in FiveM!

    Dispatch Notify

    Notify officers of incoming calls, allow them to attach to them, notify the caller, and route units via GPS in real-time to calls and the lead pursuit officer...all in one!

    This submodule utilizes API endpoints that require the plus version of Sonoran CAD or higher. For more information, view our page.

    Looking for VPS, web, or dedicated hosting? Check out our official

    Live Map

    Sonoran CAD's live map allows you to update and view live unit locations, emergency calls, in-game road signs, and more!

    This submodule has been merged into the SonoranCAD Core and no longer requires external configuration or setup

    24.199.66.94
    198.199.90.248
    34.173.36.190
    Body Camera
    Call Commands
    Check API ID
    Civilian Integration
    Dispatch Notify
    Framework Support
    FivePD
    ForceReg
    Kick
    Local Callers
    Locations
    Live Map
    Lookups
    Postals
    Record Printer
    Smart Signs
    Sonoran Radio (sonrad)
    Tablet and Mini CAD
    Teamspeak Integration
    Traffic Stop
    Unit Status
    VehReg
    Wraith Radar
    2. Open the User Manager

    At the top of your screen click Tools and then User Manager. Then, click Add at the top left.

    HeidiSQL - Open User Manager

    3. Enter the Account Information

    Enter a user name, password, and enter % in the From host field. This will allow external IPs (Sonoran CAD) to connect to your database.

    Under Allow Access To select Add Object

    HeidiSQL - User Account Credentials

    4. Select the Database

    Select the name of your database, then hit Ok.

    HeidiSQL - Select Database

    5. Select the Permissions

    Check off the EXECUTE, SELECT, and SHOW VIEW read permissions. Then press Save.

    HeidiSQL - Select User Permissions

    6. Save the user and set credentials in Sonoran CAD

    You will now want to go to http://whatsmyip.org and get your Public IP Address to use as your Host.

    Database Translation Information

    HeidiSQL

    SonoranCAD

    Host

    Host/Address

    User name

    Username

    Password

    Password

    Database

    Database

    See Database Sync and Merge Connection Credentials to figure out how to add Credentials to your CAD Instance using the information above.

    2. View the Tools Section

    Scroll down until you see TOOLS on the left hand side of your screen and select Databases.

    ZAP Hosting Tools - Database

    3. View Database Credentials

    In the Center of your screen you will see you're database Credentials.

    Zap Hosting - Database Credentials

    4. Set DB Credentials in Sonoran CAD

    Database Translation Information

    Zap Hosting

    SonoranCAD

    Server/IP

    Host/Address

    Database

    Database

    User

    Username

    Password

    Password

    See Database Sync and Merge Connection Credentials to figure out how to add Credentials to your CAD Instance using the information above.

    phpMyAdmin

    SonoranCAD

    Host

    Host/Address

    Database

    Database

    User name

    Username

    Password

    Password

    http://whatsmyip.org
    Database Sync and Merge Connection Credentials
    phpMyAdmin - New User Account
    phpMyAdmin - New User Information
    phpMyAdmin - Edit Account Privileges
    phpMyAdmin - Set Database
    phpMyAdmin - Read Only Permissions
    !

    This submodule:

    • Notifies officers of incoming calls

    • Allows officers to attach to calls via command

    • Automatically routes attached units to the postal code

    • Unit GPS routing is updated whenever the dispatch postal is updated

    • Notifies the civilian making the emergency call when an officer is en-route.

    Video Showcase

    Check out our video showcase of this submodule here.

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the SonoranCAD Core first.

    2. Activate the Submodule and all Dependencies

    Dispatch Notify requires you to enable the following submodules:

    • callcommands

    • locations

    • postals

    3. Add your Game Server IP and Port

    Be sure to have your game server IP and port set in the admin panel under Advanced > In-Game Integration > Server Events and Integrated Live Map

    Sonoran CAD - Server IP and Port

    4. Set Your API ID

    Don't forget to set your account API ID to properly link your in-game user to the CAD.

    5. Configuration

    Review the dispatchnotify_config.lua file to configure the submodule to behave how you like. The file is well documented. Please review all the settings!

    Commands

    Command
    Description

    /rcall

    Respond/Attach to the new dispatch call

    /togglegps

    Toggle the GPS auto-lock when dispatch updates the postal code

    Configuration

    Config Value
    Description

    enableUnitNotify

    Enable incoming 911 call notifications

    emergencyCallType

    Specifies what emergency calls are displayed as. Some countries use different numbers (like 999)

    civilCallType

    Specifies non-emergency call types. If unused, set to blank ("")

    dotCallType

    Some communities use 511 for tow calls. Specify below, or set blank ("") to disable

    respondCommandName

    Command to respond to calls with

    Dispatch Call Responding

    1. Civilian Places a 911 Call

    This call can be placed from the Civilian menu of the CAD, or via the /911 command in-game, supplied by the callcommands submodule.

    2. Officer Attaches to the Call

    All on-duty officers get a notification (if configured) and can use the attach command to respond to the call.

    A. Call Attach Command

    By default, this command is /rcall <callid>, where callid is the ID shown in the call notification.

    B. GPS Toggle Command

    Units can optionally choose to disable the postal updating when dispatch updates the call (or primary unit tracking) by using the /togglegps command. This is a toggle and will be shown in chat what it gets changed to. This is ON by default.

    Primary Unit Tracking (Pursuit)

    Dispatch notify can also be used to track the primary unit on a call. This will auto route attached units via GPS to the primary unit in real-time. Additionally, the postal code on the call will be continually updated for dispatchers to easily view. This is highly useful for pursuits, where additional units need to catch up and join the chase.

    1. Toggle Unit Tracking for the Primary Unit

    A. Via the CAD UI:

    Dispatchers can set the primary unit to any unit currently attached to the call. The slider next to the Primary Unit box will toggle tracking mode. When enabled, the postal will automatically update based on the primary unit's location and be sent to all attached units.

    Sonoran CAD - Primary Unit

    A unit can also designate themselves as primary, but only if Self Dispatch is enabled.

    Sonoran CAD - Primary Unit

    Troubleshooting

    • No notifications for 911 calls

      • Units must be logged into the CAD (by default) or meeting the requirements depending on how the submodule is configured.

      • If using pNotify notifications, ensure that resource is running.

    • Units do not automatically attach to calls

      • Ensure their is set so the server knows who they are.

    • Caller is not notified when units attach to the call

      • If the caller ever leaves the server and rejoins, this feature does not work.

      • If dispatch created the call within the CAD, there is no way to notify a caller.

      • Ensure you are not overriding the 911 command (default

    pricing
    server hosting
    1. Choose Your Map

    In the admin panel, navigate to Advanced > In-Game Integration > Server Events and Integrated Live Map

    Here, you can enable and select a default map option for GTA, Roblox, or others. Additionally, pro communities can upload a custom map.

    Sonoran CAD - Live Map Type Selection

    2. Set Your API ID

    Don't forget to have each community member set their account API ID to properly link their in-game user to the CAD.

    3. User Access Permission

    Users will need to be granted access to view the live map. This can be done via Discord role sync, permission key, or by manually granting permissions in the admin menu.

    4. Enjoy!

    In the Police, Fire, EMS, or Dispatch window you can now click the "Live Map" button to view your new live map! Selecting a blip will show it's updated position and unit information.

    This is found in the task bar's start menu under Unit Management > Live Map You can also pin the live map button to your taskbar for easy access.

    The live map will only show units that are in your server and also actively logged into the police, fire, or EMS panel in the CAD. Be sure to have your API ID set.

    Sonoran CAD: Live Map Button

    Using the Live Map

    Map Controls

    Postal Search

    The postal search functionality requires the Pro version of Sonoran CAD.

    For more information, view our pricing page.

    With the postals submodule configured, you can manually enter and search for a postal code on the live map.

    Or, quickly auto-open and search for the location by clicking the search icon:

    • In the active call's postal field

    • In the active unit's location field

    Live Map - Postal Search
    Live Map - Location Search

    Blip Customization

    You can toggle specific blips visibility and outline colors for police, fire, EMS, and dispatch.

    Live Map - Blip Customization

    Unit Blips

    Unit blips display the live location of all police, fire, EMS, and dispatch units in-game. You can hover over a unit for brief details, or click on one for more options.

    You can also easily filter the map to specific units by selecting them in the active units panel.

    Live Map - Unit Filter

    Menu Options

    Clicking on a unit blip allows you to add the unit to a call, add the unit to a group, send the unit lookup results, edit the unit's information, toggle their panic state, and more.

    Live Map - Unit Blip Options

    Drag-and-Drop

    Drag-and-drop support for the live map is currently only available for the Roblox (ER:LC) edition.

    Drag-and-drop is also supported for unit blips. The following drag-and-drop options are supported:

    • Drag to the call editor

    • Drag to an active call

    • Drag to a unit group

    • Drag to the unit group header to create a new group

    • Drag to the lookup window or minimized tab

    • Drag to the timer window or minimized tab

    • Drag to the tone board window or minimized tab

    Emergency Call Blips

    Emergency calls placed in-game will also appear on the live map. You can hover over the blip for the call details.

    Menu Options

    Clicking on the emergency blip allows you to import the call to your editor or remove the emergency call.

    Live Map - Emergency Call Blip

    Drag-and-Drop

    Drag-and-drop is also supported for emergency call blips.

    You can drag the emergency call to your call editor to import and view the information.

    Smart Sign Blips

    Smart signs will also appear as blips on the map. You can click on these to edit the signs in-game.

    Live Map - Smart Signs

    Using a Custom Map (FiveM)

    This feature requires the pro version of Sonoran CAD. For more information, view our pricing page.

    Sonoran CAD allows communities to upload custom map images to the integrated, hosted live map. If your community does not use one of the map types provided, you can upload the images manually.

    1. Extract Images

    Extract the images from the YTD files with a program like OpenIV. You will need six files named exactly as follows: minimap_sea_0_0.png minimap_sea_0_1.png minimap_sea_1_0.png minimap_sea_1_1.png minimap_sea_2_0.png minimap_sea_2_1.png

    OpenIV - Extract Images
    OpenIV - Save Images

    2. Upload Images

    Navigate to Admin > Advanced > In-Game Integration > Live Map and Push Events Select "Upload Custom" and upload all six correctly named files.

    Live Map - Custom Map Uploader

    3. File Size

    Custom map images are limited to 30MB each. However, if you are uploading more than 100MB of images total, you will need to upload in separate batches.

    Roxwood Expansion

    If your community is utilizing the Roxwood map expansion, there will be additional tiles to upload.

    • minimap_sea_-1_-1.png

    • minimap_sea_-1_0.png

    • minimap_sea_-1_1.png (Optional, blank tile to the right)

    Additionally, two existing map tiles will need to be updated, as they contain parts of both the main island and the Roxwood expansion.

    • minimap_sea_0_-1.png

    • minimap_sea_0_0.png

    • minimap_sea_0_1.png

    Cayo Perico Expansion

    If your community is utilizing the Cayo Perico map expansion, there will be extra tiles to upload. Ensure these are named as:

    • minimap_sea_2_1.png

      • Bottom right of the main island + top right of Cayo Perico

    • minimap_sea_2_2.png

    • minimap_sea_3_1.png

    • minimap_sea_3_2.png

    Using a Custom Map (Roblox)

    Sonoran CAD allows any Roblox game to also send and update live map positions.

    • ER:LC

      • ER:LC map option available in the admin panel, or - upload a modified map with the same dimensions 3120x3120

    • Maple County | Fall Update

      • Requires a custom map upload from the game

    For Roblox Developers

    Maple County has recently added Sonoran CAD live map access to their Roblox game mode. To do the same for your game:

    1. Send Unit Location API updates with the coordinate x and y values

    2. Convert (if needed) your coordinate x and y values so that the top left of your map image is {0,0}

    3. Export your square map to a single image and upload to the Sonoran CAD community in the admin panel under In-Game Integration > Live Map > Game as Roblox > Type as Custom > Upload > Save

    For more help, reach out to our .

    Sonoran CAD - Live Map
    /911
    ) with another resource.

    enableUnitResponse

    Enable call responding (self-dispatching)

    If disabled, running commandName will return an error to the unit

    dispatchDisablesSelfResponse

    If a dispatcher is detected to be online, automatically disable the response command.

    enableCallerNotify

    Enable "units are on the way" notifications

    unitNotifyMethod

    chat: Sends a message in chat

    pnotify: Uses pNotify to show a notification

    custom: Use the custom event SonoranCAD::dispatchnotify:IncomingCallNotifyinstead (Provides single parameter) - The message.

    notifyMessage

    NotifyMessage: Message template to use when sending to the player

    You can use the following replacements:

    {officer} - officer name

    incomingCallMessage

    How should officers be notified of a new 911 call? Parameters: {location} - location of call (street + postal) {description} - description as given by civilian {caller} - caller's name {callId} - ID of the call so LEO can respond with /r911 {command} - The command to use

    unitDutyMethod

    How to detect if units are online? incad: units must be logged into the CAD permissions: units must have the "sonorancad.dispatchnotify" ACE permission (see docs) esxjob: requires esxsupport submodule, use jobs instead for on duty detection custom: Use custom function (defined below as unitDutyCustom)

    esxJobsAllowed

    What jobs should count as being on duty?

    waypointType

    Customise the title of a call made in the CAD postal: set gps to caller's postal (less accurate, more realistic) - REQUIRES CONFIGURED POSTAL SUBMODULE exact: set gps to caller's position (less realistic) none: disable waypointing

    waypointFallbackEnabled

    Fall back to postal if exact coordinates cannot be found (for self-generated calls)

    callTitle

    Type of waypoint to use when officer is attached Default: OFFICER RESPONSE

    sendNotesToUnits

    Enable "the sending of notes to units" notifications

    noteNotifyMethod

    chat: Sends a message in chat

    pnotify: Uses pNotify to show a notification

    custom: Use the custom event SonoranCAD::dispatchnotify:NewCallNoteinstead (Provides single parameter) - The message.

    notifyMessage

    NotifyMessage: Message template to use when sending to the player

    You can use the following replacements:

    {callid} - The CAD Call ID

    {note} - The Note Added

    enableAddNote

    Enable "the adding of the notes" notifications

    addNoteCommand

    Command to add notes to a call with

    enableAddPlate

    Enable "the adding of plates that are locked" notifications - REQUIRES CONFIGURED WRAITHV2 SUBMODULE

    addPlateCommand

    Command to add plates to a call with

    Allows the call postal and GPS routing to be automatically updated to the primary unit's location
    API ID
    support team

    Emergency Response Simulator (ERS)

    The Sonoran CAD ERS integration allows dispatchers to generate callouts from the live map, lookup character information, and more!

    This submodule utilizes API endpoints that require the Pro version of Sonoran CAD or higher. For more information, view our pricing page.

    Looking for VPS, web, or dedicated hosting? Check out our official server hosting!

    What is Emergency Response Simulator?

    Emergency Response Simulator is a paid, third-party script for FiveM.

    This advanced (co-op) PVE roleplay game mode simulates emergency service calls, where you as emergency service worker have to respond to. Whether you are a medic, firefighter, tow service operator or police officer, there is always something to do. With finetuned callouts you’ll never get bored of driving around in your service vehicle. Rush to high-priority, dangerous calls, or handle routine tasks like warning a speeder. Each callout is unique, with random outcomes that keep you curious and engaged every time you respond to an emergency.

    Activation Guide

    1. Download and Install the Core

    If you haven't already, be sure to install and configure the first.

    2. Activate the ERS Submodule

    Follow the to enable the ERS integration.

    3. Update CAD Record Templates

    The ERS submodule comes with three record templates (character, license and vehicle registration).

    Importing and using these record templates will ensure ERS callout character, license, and vehicle registration records are automatically generated.

    These records can be located in the /sonorancad/submodules/ersintegration/SonoranCAD Records directory.

    The Civilian and Vehicle Registration are default records. If you've modified them, it's recommended to replace them with the provided versions to ensure proper data import.

    To import in Sonoran CAD, navigate to Admin -> Customization -> Custom Records -> Import. Open each JSON file and copy/paste the contents into the CAD.

    Configuration

    ERS Integration is highly configurable to allow for custom records and calls. All default configuration will work with the provided CAD records seamlessly. It is only recommended to edit if you are experienced with .

    Default Configuration

    ersintegration_config.lua

    Configuration Values

    Default Configuration Values
    Value
    Type
    Description

    Features

    Live Map Callout Generation

    Dispatchers can use the live map to create a new ERS callout at a specific location.

    Drag-and-drop the ERS icon from the toolbar to a location on the map. Clicking the new ERS map icon will allow you customize the callout and settings.

    Record Lookups

    When a callout is first interacted with, character, license, and vehicle records will be generated in the CAD with the information.

    This allows lookups in the CAD to be ran.

    Automatic Call Generation

    • When a callout is generated in-game, a 911 call will be automatically created in the CAD.

      • 911 calls generated from a callout will display with location on the live map.

    • When a callout is accepted by a unit:

      • A dispatch call is automatically generated.

    Limitations

    Database Sync

    Database Sync uses the database on your FiveM server, whereas ERS uses the CAD database to create records in the CAD. Thus, when you run a lookup with with DB sync enabled, CAD will query your server's database instead of the CAD database.

    For this reason, the ERS integration and DB sync are incompatible. Please only enable one system at a time.

    FiveM Installation

    Sonoran CAD's Integration Core imports common API method wrappers and functionality. Installing our integration framework is easy! Learn more below.

    Sonoran CAD integration submodules require the standard version of Sonoran CAD or higher. For more information, see our page.

    A. One-Click Installation (RocketNode)

    create911Call

    bool

    Create a 911 call when an ERS callout is created

    createEmergencyCall

    bool

    Create an emergency call when an ERS callout is accepted

    callPriority

    integer

    Priority of the call created in CAD (1-3)

    callCodes

    array

    Call codes for each ERS callout type. | Left side is the callout ID and right side is the corresponding 10 code

    autoAddCall

    bool

    Automatically add members to the call when an ERS callout is accepted

    customRecords

    array

    Array of record customization for CAD records. Please see comments in file for more information on record customization

    The unit is automatically attached to the CAD dispatch call.

    DOBFormat

    string

    Language code for the DOB format. Available options can be found in the configuration file

    clearRecordsAfter

    integer

    Number of minutes to clear records after | 0 to never delete

    ERS can be purchased from Nights Software.
    SonoranCAD Core
    submodule activation guide
    custom records
    Sonoran CAD x ERS
    ERS Integration - SonoranCAD Custom Records
    SonoranCAD - Import Record
    Sonoran CAD: ERS Callout Creation
    --[[
        Sonoran Plugins
    
        Plugin Configuration
    
        Put all needed configuration in this file.
    ]]
    local config = {
        enabled = false,
        pluginName = "ersintegration", -- name your plugin here
        pluginAuthor = "SonoranCAD", -- author
        configVersion = "1.2",
        -- put your configuration options below
        DOBFormat = "en", -- Make sure this matches | en: dd/mm/yyyy | us: mm/dd/yyyy | iso: yyyy/mm/dd
        clearRecordsAfter = 30, -- Clear records after this many minutes (0 = never)
        create911Call = true, -- Create a 911 call when an ERS callout is created
        createEmergencyCall = true, -- Create an emergency call when an ERS callout is accepted
        callPriority = 2, -- Priority of the call created in CAD (1-3) | Only used if createEmergencyCall is true
        callCodes = {
            ['Stolen_motorbike'] = '10-22'
        }, -- Call codes for each ERS callout type | Only used if createEmergencyCall is true
        autoAddCall = true, -- Automatically add members to the call when an ERS callout is accepted
        customRecords = {
            civilianRecordID = 7, -- Record ID for civilian records
            civilianValues = {
                -- Configurable mapping for SonoranCAD replaceValues.
                -- The key is what SonoranCAD expects and the value is either:
                --    • A string that matches a key in pedData, or
                --    • A function that returns a value based on pedData.
                --    • Left side of mapping is the SonoranCAD field mapping ID from Custom Records, right side is the ERS field.
                ["first"] = "FirstName",
                ["last"] = "LastName",
                ["dob"] = "DOB",
                ["age"] = function(pedData)
                    return returnAgeFromDobString(pedData.DOB)
                end,
                ["sex"] = "Gender",
                ["residence"] = "Address",
                ["zip"] = "PostalCode",
                ["phone"] = "Phone",
                ["skin"] = "Nationality",
                ["img"] = "ProfilePicture"
                -- Add more keys as needed:
                -- email = "Email"  -- Example: if pedData.Email exists.
            },
            vehicleRegistrationRecordID = 5, -- Record ID for vehicle registration records
            vehicleRegistrationValues = {
                -- Configurable mapping for SonoranCAD replaceValues.
                -- The key is what SonoranCAD expects and the value is either:
                --    • A string that matches a key in pedData, or
                --    • A function that returns a value based on pedData.
                --    • Left side of mapping is the SonoranCAD field mapping ID from Custom Records, right side is the ERS field.
                -- Registration Information
                ["status"] = function(vehicleData)
                    if vehicleData.stolen then
                        return "STOLEN"
                    elseif not vehicleData.mot then
                        return "EXPIRED"
                    else
                        return "VALID"
                    end
                end,
                ["_wsakvwigt"] = function(vehicleData)
                    if vehicleData.stolen then
                        return "STOLEN"
                    elseif not vehicleData.mot then
                        return "EXPIRED"
                    else
                        return "VALID"
                    end
                end,
                ["_imtoih149"] = function(vehicleData)
                    return os.date("%m/%d/%Y", os.time() + (60 * 60 * 24 * 365)) -- +1 year from now
                end,
                -- Civilian Information
                ["first"] = function(vehicleData)
                    return vehicleData.owner_name:match("^(%S+)")
                end,
                ["last"] = function(vehicleData)
                    return vehicleData.owner_name:match("%s(.+)$")
                end,
                -- Vehicle Information
                ["plate"] = "license_plate",
                ["model"] = "model",
                ["color"] = function(vehicleData)
                    if vehicleData.color_secondary and vehicleData.color_secondary ~= "" then
                        return vehicleData.color .. ", " .. vehicleData.color_secondary
                    else
                        return vehicleData.color
                    end
                end,
                ["year"] = "build_year",
                ["type"] = function(vehicleData)
                    local classMap = {
                        [0] = "SEDAN", [1] = "SEDAN", [2] = "SUV", [3] = "SUV",
                        [4] = "COUPE", [5] = "COUPE", [6] = "OFFROAD", [7] = "TRUCK",
                        [8] = "MOTORCYCLE", [9] = "MARINE", [16] = "AIRCRAFT"
                    }
                    return classMap[vehicleData.vehicle_class] or "SEDAN"
                end,
            -- Add more keys as needed:
            -- owner = "Owner"  -- Example: if pedData.Owner exists.
            },
            licenseRecordId = 4, -- Record ID for license records
            licenseTypeField = "7eddab31daf4a0182", -- Field ID for license type
            licenseTypeConfigs = {
                DRIVER = {
                    type = "DRIVER",
                    is_valid = "License_Car_Is_Valid",
                    license = "License_Car",
                },
                MOTORCYCLE = {
                    type = "MOTORCYCLE",
                    is_valid = "License_Bike_Is_Valid",
                    license = "License_Bike",
                },
                BOAT = {
                    type = "BOAT",
                    is_valid = "License_Boat_Is_Valid",
                    license = "License_Boat",
                },
                PILOT = {
                    type = "PILOT",
                    is_valid = "License_Pilot_Is_Valid",
                    license = "License_Pilot",
                },
                CDL = {
                    type = "CDL",
                    is_valid = "License_Truck_Is_Valid",
                    license = "License_Truck",
                },
            },
            licenseRecordValues = {
                -- License Information
                ["252c4250da9421cbd"] = function(pedData, ctx)
                    return pedData[ctx.is_valid] and "VALID" or "SUSPENDED"
                end,
                ["878766af4964853a7"] = function(pedData, ctx)
                    return pedData[ctx.is_valid] and "VALID" or "EXPIRED"
                end,
                ["_54iz1scv7"] = function(pedData, ctx)
                    if pedData[ctx.license] == "Expired" then
                        return os.date("%m/%d/%Y", os.time() - (60 * 60 * 24 * math.random(1, 365))) -- Within the last year
                    end
    
                    return os.date("%m/%d/%Y", os.time() + (60 * 60 * 24 * math.random(1, 365))) -- Within a year
                end,
                -- Civilian Information
                ["first"] = "FirstName",
                ["last"] = "LastName",
                ["mi"] = "", -- No M.I. mapped
                ["dob"] = "DOB",
                ["age"] = function(pedData)
                    return returnAgeFromDobString(pedData.DOB)
                end,
                ["sex"] = "Gender",
                ["residence"] = "Address",
                ["zip"] = "PostalCode",
            },
            boloRecordID = 3, -- Record ID for BOLO records
            boloRecordValues = {
                ['_olgxdruc3'] = 'bolo_description'
            },
            warrantRecordID = 2, -- Record ID for warrant records
            warrantDescription = '_avb6wvgyi', -- Field ID for warrant description
            warrantFlags = '_hlshajq0f' -- Field ID for warrant flags
        }
    
    }
    
    if config.enabled then Config.RegisterPluginConfig(config.pluginName, config) end
    
    function returnAgeFromDobString(dobString)
        local day, month, year
    
        if config.DOBFormat == "en" then -- dd/mm/yyyy
            day = tonumber(dobString:sub(1,2))
            month = tonumber(dobString:sub(4,5))
            year = tonumber(dobString:sub(7,10))
    
        elseif config.DOBFormat == "us" then -- mm/dd/yyyy
            month = tonumber(dobString:sub(1,2))
            day = tonumber(dobString:sub(4,5))
            year = tonumber(dobString:sub(7,10))
    
        elseif config.DOBFormat == "iso" then -- yyyy/mm/dd
            year = tonumber(dobString:sub(1,4))
            month = tonumber(dobString:sub(6,7))
            day = tonumber(dobString:sub(9,10))
        else
            errorLog("Unsupported DOB format: " .. tostring(config.DOBFormat))
        end
    
        local today = os.date("*t")
        local age = today.year - year
    
        if today.month < month or (today.month == month and today.day < day) then
            age = age - 1
        end
    
        return tostring(age)
    end
    
    We've partnered with Rocket Node to bring you one-click Sonoran CAD installation for FiveM — making it easier than ever to host your community and connect with Sonoran CAD.
    • Purchase your FiveM Game Server!

    • Use code SONORANto save big!

    The Sonoran CAD FiveM resources has multiple "submodules" for every integration feature. These are easily enabled and configured in the /configuration folder.


    B. Pre-Configured Resource Installation

    1. Download the ZIP

    Download a pre-configured version of the in-game integration resource from the panel. This download will already have your community ID and API Key in the config.lua file in addition to file renaming done for you.

    Navigate to Admin -> Advanced -> In-Game Integration -> FiveM

    Sonoran CAD: FiveM Resource Download

    2. Extract the ZIP File

    Extract the .zip file into your resources directory. Place the [sonorancad] folder directly in the resources root directory.

    Sonoran CAD - Folder Structure

    3. Update Your Server Config

    In your server.cfg file, simply add the following line:

    It is very important that the sonoran_updatehelper resource is not started manually. Doing so may cause a server crash if updates are available due to a race condition.

    DO NOT start the whole [sonorancad] folder as that will also start the sonoran_updatehelper which might cause crashing if it is started manually. Example of not what to do ensure [sonorancad]

    Advanced - Remove Tablet, pNotify, etc.

    Adding the exec @sonorancad/sonorancad.cfg starts multiple resources bundled with the download. If you wish to not use one or more of the resources (or with a different name) you will need to:

    • Copy/paste the contents of sonorancad.cfg to your server.cfg

    • Remove the exec @sonorancad/sonorancad.cfg line from your server.cfg

    Do not update the contents of sonorancad.cfg as it will be overwritten on resource updates.

    4. Configure the Resource

    Modify the /configuration/config.jsonfile for any additional configuration values.

    5. Configure the Submodules

    The Sonoran CAD FiveM resources has multiple "submodules" for every integration feature. These are easily enabled and configured in the /configuration folder.

    6. Configure the Auto-Updater

    The Sonoran CAD FiveM resource contains an auto-updater that will override all non-configuration files when a new version of Sonoran CAD is released.

    Whitelist Specific Files

    Some communities have custom files inside the [sonorancad] folder they don't wish to have overwritten, like custom plate reader images.

    Simply add the direct path to the directory or individual files to the sonorancad/configuration/updaterIgnore.json file.

    Disable Automatic Updates

    To disable this auto-update entirely set allowAutoUpdate to false in the config.json.


    Resource Installation (Manual)

    1. Download the ZIP

    Download the latest zip file from our Github.

    2. Extract the ZIP File

    Extract the .zip file into your resources directory. Place the [sonorancad] folder directly in the resources root directory.

    Extract the zip file into your resources directory. Keep the [sonorancad] folder intact.

    If you already have the wk_wars2x resource, please remove it from your resources folder and use the Sonoran version included with the framework download.

    3. Configure and Rename

    Open sonorancad\configuration\config.CHANGEME.json, update the values, then save it as config.json. Default configuration is below:

    Configuration Details

    Configuration Options
    Option
    Description

    communityID

    Your SonoranCAD .

    apiKey

    from your In-Game Integration settings.

    postTime

    Update locations every x ms. Default 5000. It is recommend to not set this lower than 5000 ms due to rate limiting.

    For information regarding the bodycam script config values, please see our Bodycam Submodule Guide.

    4. Server Config

    Add the following to your server.cfg (if you don't want pNotify or wraith, leave those out):

    It is very important that the sonoran_updatehelper resource is not started manually. Doing so may cause a server crash if updates are available due to a race condition.

    DO NOT start the whole [sonorancad] folder as that will also start the sonoran_updatehelper which might cause crashing if it is started manually. Example of not what to do ensure [sonorancad]

    Advanced - Remove Tablet, pNotify, etc.

    Adding the exec @sonorancad/sonorancad.cfg starts multiple resources bundled with the download. If you wish to not use one or more of the resources (or with a different name) you will need to:

    • Copy/paste the contents of sonorancad.cfg to your server.cfg

    • Remove the exec @sonorancad/sonorancad.cfg line from your server.cfg

    Do not update the contents of sonorancad.cfg as it will be overwritten on resource updates.

    Once completed please move to the Additional Configuration section to complete your setup

    Additional Configuration

    1. Convar Overrides

    Starting with framework version 2.6.2, you can override any configuration option in your config.json file by specifying a convar before the sonorancad resource starts.

    This feature does not work with arrays (like statusLabels). Any other configuration option can be set using the sonoran_<configSettingHere> format.

    2. Configure Push Events

    In the CAD admin panel, navigate to: Advanced > In-Game Integration Expand the "Server Events and Integrated Live Map" section.

    Enter your server's public IP address and your game server's port. By default, this is port 30120.

    2A. Admin Panel Configuration

    Set your game server port and IP address in the admin panel of Sonoran CAD. The map port can be left blank, unless you are also installing the integrated live map.

    Sonoran CAD - Game Port

    Learn more about configuring multiple servers.

    2B. Forward Push Events to an External Server

    You may wish to also send push events to another external web server, like a Discord bot.

    In the framework configuration file, simply set enablePushEventForwarding to true and pushEventForwardUrl to your web server address.

    3. Activating Submodules

    Check out our pre-bundled Submodule Configurationto make the integration useful. For basic functionality, we recommend at least the locations, callcommands, and postals submodules. You can also view our standard submodule activation guide.

    4. Using the wk_wars2x Radar

    As of new installations, the configuration file has been renamed to prevent it being overwritten by updates. To use the radar for the first time, you must rename the file config.dist.lua within the wk_wars2x folder to config.lua.

    5. Steam API Key

    If your framework has the primaryIdentifier set to steam in the configuration (used for your API ID type), you'll need to ensure a Steam API key is set in your server.cfg file.

    You can register a new Steam API Key at http://steamcommunity.com/dev/apikey

    Then, paste it into your server.cfg

    Updates

    Sonoran CAD's integration framework and submodules will automatically update with the latest features, fixes, and changes!

    Or, run sonoran update to instantly check and apply any updates for the framework core.

    Commands

    The Sonoran CAD integration framework comes with several commands. These commands can be run in your server console to provide information, update submodules , and more.

    Command
    Description

    sonoran help

    Display list of commands

    sonoran update

    Run core/framework updater

    sonoran debugmode

    Toggle debug mode on/off

    sonoran info

    Dump version info and configuration data

    sonoran support

    Dump information for support staff

    Troubleshooting

    Server Crashes

    1. Check to make sure sonoran_updatehelper or [sonorancad] is not being started in your server.cfg.

    It is very important that the sonoran_updatehelper resource is not started manually. Doing so may cause a server crash if updates are available due to a race condition.

    DO NOT start the whole [sonorancad] folder as that will also start the sonoran_updatehelper which might cause crashing if it is started manually. Example of not what to do ensure [sonorancad]

    2. Try updating your smartsigns submodule manually to the latest version. This is done by copying over the lua files from the latest release found here and overrideing the old files.

    We have gotten isolated reports of servers crashing with the following error, this is assumed to be related to having lower end VPS hardware specs and txadmin rebooting the server because the update process is taking too long.

    Warning: Could not find file X

    1.) Check that the file in question is actually present in the specified file path. To find the correct path please read the example below:

    In this example, you would navigate to the sonorancad resource, open the html folder and ensure the file config.js is present.

    This is simply a WARNING, if the resource works AS EXPECTED, you can simply ignore the warning and continue

    pricing
    Submodule Configuration
    FiveM Submodules

    Database Sync and Merge

    Database Sync is a highly advanced feature allowing you to automatically pull all character, license, and vehicle registration data from your own in-game database directly to Sonoran CAD.

    Database Sync requires the plus version of Sonoran CAD or higher. Database Merge requires the pro version of Sonoran CAD.

    For more information, see our pricing or view how to check your community limits.

    Looking for VPS, web, or dedicated hosting? Check out our official !

    Database Sync is a highly advanced feature allowing you to automatically pull all character, license, and vehicle registration data from your own in-game database directly to Sonoran CAD.

    This feature is specifically designed for frameworks like ESX and QBus/QBCore, but is compatible with any MySQL database.

    Video Configuration Tutorial

    View our on enabling Database Sync.

    Written Configuration Guide

    Configuring Sonoran CAD's Database Sync may seem complicated, but you are simply specifying your table names and column values where your in-game data is stored.

    REQUIRED fields in the CAD are shown in red. All other fields are optional and are not required to work properly.

    Connection Credentials

    In order for Sonoran CAD to connect to your SQL database, connection credentials must be configured properly.

    1. Retrieve your SQL Connection Credentials

    Sonoran CAD requires an external connection to your database.

    View our guide on creating a new read-only SQL user for external use.

    2. Enable Database Sync and Merge

    Expand the SQL Connection Credentials section of the configuration, and toggle on Database Sync and the optional Database Merge feature.

    What is Database Merge?

    Database Merge is an additional feature that allows you to save off additional, manually specified data in the CAD.

    Example:

    DB Merge pulls a character record into the CAD, but the address field in your custom record is blank (your DB doesn't have this info). DB merge allows you to manually edit the record pulled from your database and edit any blank field.

    Next time you look up this character, it will pull the same character info from your database and then merge this with the manually specified data saved in Sonoran CAD.

    3. Enter the required fields below.

    3. Test the Connection

    Once the required SQL connection fields have been specified, select the “Test Connection” button. This will query your database for the version. If you see an alert similar to the following, your connection is successful:

    If you see an error message, it's likely you have not or opened the database port for external use.

    Character Mapping

    Sonoran CAD requires character mapping to be properly configured for the additional license and vehicle registration mapping.

    1. What is DB Sync Mapping?

    The DB sync configuration is designed to show Sonoran CAD the specific tables and columns that data can be pulled from in your database.

    2. Table Columns and Name

    The table name field will contain the name of your database table containing character records.

    The column name field will contain the name of the specific column in the character records table containing data for this row.

    The Character Mapping Column contains a unique ID for the specific character. This unique identifier will also map records in your license and vehicle registration tables back to the character that owns them. Typically, this is a Steam ID or license ID.

    Character records can also pull data from multiple different tables, such as a properties table to add address information. Just be sure that those additional tables have a proper identifier column to map back to the other characters table.

    Example:

    In our database, the characters table contains our character records. The identifier column contains the character's unique ID, the firstname column contains the characters first name, the lastname character contains the characters last name, etc.

    3. Enable, Save and Test

    Be sure that you have enabled character mapping via the toggle. Once your character mapping has been completed, hit the save button and then the test button. The test button will attempt to select a single random character with the mapping configuration specified.

    If you see "Success!" move onto the next section.

    License and Vehicle Mapping

    Licenses and Vehicle registrations can also be automatically pulled via CAD search with Database Sync.

    1. Table Columns and Names

    Similar to the character mapping, specify the table name containing your vehicle registrations or licenses. Unlike character mapping, data for these records can only be pulled from a single table.

    The vehicle and license mapping will also need to have the Character Mapping Column specified. Again, this is the name of the column in your license/vehicle table containing a unique ID that maps back to the character that owns it.

    Example:

    In our database, the owned_vehicles table contains our stored vehicles. The owner column contains the character's unique ID that owns the vehicle, and the plate column contains the vehicle's license plate.

    2. Enable, Save and Test

    Be sure that you have enabled the license/vehicle mapping via the toggle. Once your mapping has been completed, hit the save button and then the test button. The test button will attempt to select a single random license or vehicle with the mapping configuration specified.

    If you see "Success!" move onto the next section.

    JSON Columns

    Many databases store data in a JSON formatted column. Sonoran CAD can also parse these columns for data.

    JSON Columns (Objects)

    The following is for JSON columns that contain one or more object(s). Objects are formatted using {} and are NOT enclosed by [].

    1. View the JSON Data

    JSON Columns (Array)

    The following is for JSON columns that contain an array of objects. Arrays are enclosed by [] and contain one or more objects formatted by {}.

    1. View the JSON Data

    In our database, the licenses

    External Keys

    Introduction

    In some cases, your license or vehicle registration tables may not directly contain a Character Mapping ID column (a column with an ID that directly maps back to the character/civilian record), but may contain a unique ID that maps back to a specific character in another table.

    Example: DB Layout

    In this example, the vehicle table contains all of the vehicle information, but does not contain a CharacterID column. Instead, the vehicle table contains a VehicleRegistrationID column.

    The VehicleRegistrationId column then maps to the vehicleregistration table. The vehicleregistration table then contains a corresponding CharacterId column, which maps back to the character table.

    Example: CAD Config

    In the CAD, the configuration is simple.

    Toggle on the External Key checkbox, as the vehicle table's VehicleId needs to be mapped to an external table to be turned into the proper characterId.

    Specify the external key's table (vehicleregistration) and the external key's column CharacterId.

    2. Set the JSON Column and Key

    Back in the mapping panel, we toggle the field as a JSON Column and set the column name to accounts as this is the column in our character table that contains the JSON data.

    We can then set the JSON Key for this data as bank.

    Friendly Mapping

    Friendly Mapping requires the pro version of Sonoran CAD.

    For more information, see our or view how to check your community .

    Friendly mapping allows you to convert any raw database value to a more user friendly value. Ex: drive_license in your database is converted to Driver's License.

    1. Find Values to "Friendly Map"

    MySQL tinyint column types may be displayed as numerical values 0 and 1 but be read as True and False by Sonoran CAD. Instead of mapping the "Database Vaue" as 0 or 1 you will need to map False and True.

    In our SQL table, we can see the character's job columns has text values that can be improved. The taxi job value can be automatically converted to Taxi Driver in DB Sync records, and the cardealer jon can be automatically converted to Car Dealer.

    2. Configure the Friendly Mapping

    In our character table mapping, we can select Modify on the job field's friendly mapping.

    In the editor, we can now map the raw database value of taxi to a friendly value of Taxi Driver and the raw db value of cardealer to Car Dealer.

    Be sure to hit save in the friendly mapping editor, and then save the configuration for your mapping section.

    These new friendly mapped values will even work with !

    Import via CSV

    1. Copy the Google Sheet

    Navigate to our and make a copy. Using a copy of our official sheet ensures your friendly mapping is formatted correctly.

    You may ONLY use the Google sheet directly. Editing this via Excel or any other program is NOT supported.

    2. Add your Friendly Mappings

    Be sure to leave the top header line as it is. Below the header, add in your friendly mapping keys and values.

    3. Download the CSV

    In Google Sheets, navigate to File > Download > Comma Separated Values (.csv) to download the file.

    4. Import the CSV File

    In the friendly mapping editor select Import > CSV > Select your downloaded Google spreadsheet

    Then, save the mapping and save the database sync config.

    Import from JSON

    You can also build and format your friendly mapping from raw JSON and paste them directly into the UI.

    1. Format the JSON Structure

    The JSON structure is an object array. Be sure to strictly follow the format.

    2. Import the JSON Structure

    In the friendly mapping editor select Import > JSON > Paste your JSON formatted structure

    Custom Record Fields

    Sonoran CAD's records are entirely customizable, this includes database sync records! You can easily enable database sync mapping for any custom field you add to a character, license, or vehicle registration record.

    1. Edit your Custom Record

    Navigate to Admin > Customization > Custom Records

    Select your custom character, license, or vehicle registration record to open the editor.

    Simply add a field if the desired field doesn't already exist and note the Label name for the next step. For this example, we'll enable database sync for a new job field in our character's table.

    Be sure to save your custom record format after enabling this!

    2. Configure the Newly Mapped Field

    Back in our database sync editor, we can now see the new Job field has been added. We can map this new field to our database as any other field.

    exec @sonorancad/sonorancad.cfg
    {
        "communityID": "",
        "apiKey": "",
        "mode": "production",
        "postTime": 5000,
        "serverId": "1",
        "primaryIdentifier": "steam",
        "apiSendEnabled": true,
        "debugMode": false,
        "updateBranch": "master",
        "statusLabels": ["UNAVAILABLE", "BUSY", "AVAILABLE", "ENROUTE", "ON_SCENE"],
        "allowAutoUpdate": true,
        "autoUpdateUrl": "https://raw.githubusercontent.com/Sonoran-Software/SonoranCADLuaIntegration/{branch}/sonorancad/version.json",
        "allowUpdateWithPlayers": false,
        "noUnitTimer": false,
        "forceSetApiId": false,
        "enablePushEventForwarding": false,
        "pushEventForwardUrl": "https://host",
        "disableOverride": false,
        "bodycamEnabled": true,
        "bodycamBeepFrequency": 300000,
        "bodycamScreenshotFrequency": 2000,
        "bodycamPlayBeeps": true,
        "bodycamOverlayEnabled": true,
        "bodycamOverlayLocation": "top-right",
        "bodycamCommandToggle": "bodycam",
        "bodycamCommandChangeFrequncy": "bodycamfreq"
    }
    exec @sonorancad/sonorancad.cfg
    # Steam Web API key
    # If you want to use Steam authentication (https://steamcommunity.com/dev/apikey) # -> replace "" with the key
    set steam_webApiKey "YOUR_KEY_HERE"
    Started resource sonorancad (3 warnings)
    ^3Warning: Could not find file `html/config.js` (defined in fxmanifest.lua:16^7
    Getting Started
    Sonoran CAD Integration
    Settings
    Commands

    This is the password for the SQL account.

    In our database, the
    accounts
    column stores JSON formatted data. For this example, we want to display the
    bank
    money in the custom character record.
    SQL - JSON Column Example

    To more easily view the JSON data, we can copy it from the cell and paste it into a JSON formatter.

    We can see that the JSON "key" for the bank account amount is bank.

    2. Nested JSON Values

    Nested JSON values are also supported. Here, the eye_color is a JSON object, with the item property of 0.

    Database - Nested JSON Value

    In the DB Sync config, we list the JSON key as eye_color.item

    Then, we can use friendly mapping to convert the eye color 0 value to an actual color, like "brown".

    column stores JSON formatted data. This data is an array (list)
    []
    of license objects
    {}
    .

    To more easily view the JSON data, we can copy it from the cell and paste it into a JSON formatter.

    For this example, we want to display the status (valid/invalid) of the license type drivers.

    2. Configure the JSON Key

    We want our Driver's License Status field in our custom record to reflect whether or not their license is valid. The expireDate JSON property displays true (expired) or false (valid).

    For our JSON key, set it to the following:

    [?(@.license='drivers')].expireDate

    This tells DB sync to look in the array (list) [] for a license type of drivers and give us the expireDate value.

    Then, we can use friendly mapping to convert the true to Expired and false to Valid.

    Field

    Description

    Type

    This is the type of SQL database your server is using (MySQL, PostgreSQL, etc.)

    Host/Address

    This is the external IP address or domain address to your SQL database.

    Note: This IP will never be localhost or 127.0.0.1. This must be the external IP or domain to reach your database. Learn more about creating an external SQL connection.

    Port

    This is the port your database is accessible from. Typically, the default port for MySQL is 3306.

    Database

    This is the database or schema name that contains your community’s character, license and vehicle registration tables.

    Username

    This is the SQL account username.

    server hosting
    video tutorial
    Database Sync Credentials
    properly setup your new SQL user's credentials
    pricing
    limits
    custom search types
    official friendly mapping Google Sheet
    Sonoran CAD - DB Sync SQL Credentials
    DB Sync - Connection Successful
    SQL Table Example
    DB Sync Character Mapping Example
    SQL Vehicle Table Example
    DB Sync - Vehicle Mapping Example
    Sonoran CAD - External Key DB Layout
    Sonoran CAD - External Key
    DB Sync - JSON Column
    SQL Table - Unfriendly Values
    DB Sync - Modify Friendly Mapping
    Friendly Mapping Editor
    Sonoran CAD - Copy Friendly Mapping CSV
    Sonoran CAD - Edit Friendly Mapping CSV
    Sonoran CAD - Download Friendly Mapping CSV
    Friendly Mapping - Import via JSON
    Custom Records - DB Sync Mapping Toggle
    Database Sync - Custom Field Mapping

    Password

    serverId

    If using multiple servers in Sonoran CAD, specify the ID here.

    primaryIdentifier

    The identifier type your community uses in the CAD to enter their API IDs. Valid values are: license, steam, or discord.

    apiSendEnabled

    When disabled, the integration will not send any API requests to SonoranCAD.

    debugMode

    When set to true, useful debugging information it outputted to the console. Keep disabled in production due to console spam. This can be toggled by entering sonoran debugmode in console.

    updateBranch

    Use this branch when checking for updates. Keep master unless you know what you're doing.

    statusLabels

    Should match what you have set in your CAD's unit status code settings.

    allowAutoUpdate

    When enabled, the resource will update itself. When disabled, it will simply show an update notification every 2 hours.

    autoUpdateUrl

    Where to check for updated versions. Don't touch this unless you have a reason.

    allowUpdateWithPlayers

    When enabled, it will run the updates even with players on the server. The updater will stop/start all associated resources which could cause client crashes. When disabled, the resource "waits" until there are no players.

    noUnitTimer

    When set to true, the CAD will not check every minute for a current unit list. Should only be enabled for troubleshooting issues with the unit cache.

    enableCanary

    When enabled, allows the CAD to update to beta (aka canary) releases.

    enablePushEventForwarding

    Enables push event forwarding to the specific URL defined in the next option. NOTE: DO NOT ENABLE IF YOU DO NOT KNOW WHAT YOU ARE DOING (Used for custom development only!)

    pushEventForwardUrl

    Web server URL to forward push events to. NOTE: DO NOT ENABLE IF YOU DO NOT KNOW WHAT YOU ARE DOING (Used for custom development only!)

    forceSetApiId

    When enabled, the tablet resource will show an alert message stating they must set their API ID.

    disableOverride

    By default, the framework will try and automatically correct your server's IP, port, and outgoing IP address if it detects something different. Set this to true to disable this functionality.

    Community ID
    API Key

    Creating Custom Record and Report Types

    Learn how to create custom record and report types for your community!

    Custom record and reports are limited based upon your subscription version. For more information, please view our pricing page.

    Sonoran CAD allows your community to create custom records and incident reports for police, fire, and EMS services. This tutorial will cover the basics of creating a new custom report or record and general usage of the system.

    Video Tutorial

    View our on creating custom reports and records.

    Creating a new Report or Record:

    1. Navigate to the Record Editor

    Navigate to Admin > Customization > Custom Records

    2. Select the new Record Type

    From the "New Record Type" dropdown, select the desired record type. Records follow the standard record editing and lookup system, and require a civilian or vehicle field to be searched. Reports can be searched in the unit's report center via number or identifier.

    3. Add Custom and Pre-made Sections

    Add your desired custom and premade sections, edit fields, and more!

    If your section is a custom character or vehicle field, you can toggle on the search button. This allows the section to be filled via when creating a new one. .

    The enable duplicate button allows users to click and create a new copy of the section while filing the record.

    Field Types

    Text

    These fields are generic text boxes.

    Select

    The select field allows you to customize a dropdown box.

    Field Options

    Preview

    This will show the field label and value in the lookup table preview.

    Field Mask

    The field mask allows you to specify a required format for the field.

    • #: Number

    • S

    Field Size

    The field size slider allows you to select a field size value between 1 and 12.Every row of a record has a space divisible by 12.

    Dependencies

    Dependencies allow you to make an individual field or entire section visible based on conditions.

    Copy Parent Field ID

    Expand a field and copy the unique Field Mapping ID.

    Set Child Dependency

    On a section or field, click the dependency button to open the editor.

    4. Save the Record

    Be sure to set the record name, and press SAVE

    Using your new Record Type

    In the police, dispatch, fire, or EMS page you can now or for the new record type.

    Using your New Report

    1. Accessing the Reports Center

    In the police, dispatch, fire, or EMS page, select "REPORTS" in the top action menu bar From here, you can create a new report, search existing reports, and view reports requiring supervisor actions.

    2. Creating a New Report

    Select "New Report" and the desired custom report type from the dropdown button From there, you can fill out the fields and add the record.

    If the "NEW REPORT" button, or actions on the report viewer are disabled, you are missing the to do so.

    3. Supervisor Panel

    The supervisor panel shows all reports that have a blank field that requires supervisor permissions. If you do not have the supervisor panel enabled, you will need to have the .

    Updating Old Records with New Preview Fields

    Many communities decide to enable a custom field for preview after many records of that type have already been created.

    Ex: Adding a previewed field to show the license "Type"

    Communities can process a manual updating of historical records in the custom records menu.

    How does the re-sync work?

    Sonoran CAD will search for all records of this type and attempt to automatically update any historical records with the latest preview field preferences.

    Because Sonoran CAD records are entirely customizable, changing the field UID (unique ID) from one revision to the next will result in a failure to match and update the preview field.

    Database sync records do not have the option to re-sync, as they will always be up-to-date.

    A re-sync is only available once per 10 minutes.

    Linking Vehicle and Character Searches

    Custom records allow the addition of a character and vehicle search button in sections. Clicking these allows the user to search and import a vehicle or character into the record section.

    Character and vehicle searches will not fill out fields in your record if the record field UIDs are incorrect.

    In order for these searches to properly place the vehicle and civilian record in your custom record fields, specific field uid values must match.

    Civilian Field UIDs

    The default Civilian record has the following field UIDs:

    first last mi dob age sex aka zip occupation height weight skin hair eyes

    When creating your custom record section with civilian search imports, those field UIDs will also need to match. The image below shows a custom record with the civilian search section toggled with the matching field UIDs.

    Vehicle Field UIDs

    The default Vehicle Registration record has the following field UIDs

    type plate make model color year

    When creating your custom record section with vehicle search imports, those field UIDs will also need to match. The image below shows a custom record with the vehicle search section toggled with the matching field UIDs.

    Common Issues

    ERROR: This record template has no fields enabled for preview.

    You may encounter this error whilst attempting to save a custom record template.

    "Preview Fields" are what show up when you run a record lookup (first, last, age, plate, etc.). The image below shows an example of "preview fields" on a vehicle registration record.

    We require at least one field to be enabled for preview, as running a lookup with no preview fields would return a blank list of records.

    To designate a field as a "preview field", simple toggle the magnifying glass icon in the custom record editor, as shown below.

    Smart Signs

    Our smart signs integration resource allows you to update roadway signs in-game directly from the CAD!

    Sonoran CAD x London Studios

    This resource utilizes API endpoints that require the Pro version of Sonoran CAD or higher. For more information, view our pricing page.

    Looking for VPS, web, or dedicated hosting? Check out our official !

    Video Showcase

    Installation Guide

    If you have the original London Studios Smart Signs resource please remove and/or disable it from running. Our resource completely replicates the functionality of the original resource and they will conflict if both are running at the same time.

    1. Download the Resource

    from our store.

    This resource is managed through Tebex and will require you to login with FiveM. Be sure to login using the account that has the keymaster license for your server.

    Once "purchased" you can .

    2. Install the Resource

    We suggest installing the smartsigns_sonoran and smartsigns_sononran_helper folders within the [sonorancad] folder your integration framework is installed in. The final result would look like the image below...

    3. Add Requirements to Server.cfg file

    In your server.cfg add the following new line after/below your ensure sonorancad line:

    4. Configure options to your liking

    Rename config_RENAMEME.lua to config.lua.

    In the config.lua file, you can enable options depending on your framework you are using or permissions you would like to integrate with.

    The smart signs resource also has support with ESX, VRP, Discord logging, ace permissions, and more. from London Studios for the most up to date information.

    5. Configure your Discord Webhook URL (optional)

    Rename sv_discordConfig_RENAMEME.lua to sv_discordConfig.lua .

    In the sv_discordConfig.lua file, you can specify the discord webhook URL you would like log messages sent to from Smart Signs. Additional settings and to enable webhook logging is found in the config.lua file you renamed in the previous

    6. Set your Game Server IP/Port

    In the Admin panel, navigate to Advanced > In-Game Integration > Push Events and Live Map

    Ensure your game server's IP and game port are set. The CAD will use this to push sign updates to your server.

    Differing Inbound/Outbound IP Addresses

    Error: Server ID: 123 has IP set to: 1.2.3.4 -> your IP: '2.3.4.5'

    Some hosting providers may have your game server sending traffic out from a different IP address than is used to connect to your game server. If this is the case, toggle the Differing Outbound IP checkbox for this server and fill in the Outbound IP field.

    How to use

    In-Game Usage

    This script works by approaching a sign. When a player approaches a sign and are in the range of the control panel, they are able to edit the text of the sign if they meet the required permission checks. The resource has been optimized so that the signs will load and unload for players based on how close they are to each sign which is perfect for larger servers as it means that server resources will not be used unnecessarily.

    Modifying Signs in the CAD

    The street sign panel can be found on both the Dispatch and DMV pages. Users will need the Modify Street Signs permissions in order to update them.

    Here, you can easily search to filter sign labels. Sign text can also be easily duplicated from one sign to another.

    Live Map

    You can also modify smart signs right from the!

    Users will need both the Modify Street Signs and the Self Dispatch permissions in order to view and edit signs from the live map.

    Full Feature List

    Signs – This is the main element of the resource, allowing you to walk up to a sign and change the text from an in-game control panel at the bottom of the sign. This can be used to open a world of roleplay opportunities. Word Denylist – You are able to set the resource up so that users cannot use specific words on a sign. Discord Logs – You can choose to send logs to your Discord server via a webhook each time a player sets the text on a sign. Custom Model – This resource includes high-quality letters and a custom sign model created by Beaver Mods. This will ultimately enhance realism. Highly Configurable – This resource is highly configurable, allowing you to setup each sign separately. You can adjust the location of each sign, all messages and even add extra characters from other languages. Permission Checks – You can easily enable permission checks in the configuration file for ACE permissions, framework jobs/groups or SonoranCAD active unit checking.

    We understand that it may be confusing to use for some of our users. If you need support please feel free to open a ticket in the official London Studios Discord.

    Smart Signs Configuration

    You can easily open the config.lua and configure the script to your liking in either notepad, notepad ++ or using Visual Studio Code.

    The config examples below are not the full configuration file and further explanation comments of what each setting does can be found in the config.lua file.

    Main Configuration

    The first section is called main, allowing you to set the following:

    To change the activation key (adjustButton), replace it with your desired key code from .

    You can see from the above config just how configurable the resource is, allowing you to set many features such as the load in the distance and access points to edit the text of the signs, the different denied words and the animations played while the player is typing.

    Secondly, the instructionalText section allows you to convert the access message to another language.

    Permission Checks

    We’ve made it simpler than ever to integrate permissions into the resource. This can be Ace Permissions, VRP or even ESX Integration (built-in).

    This means that you can restrict certain players, permissions or even jobs/groups from setting the message on a sign.

    Sonoran CAD Permission Integration

    In the config.lua file, you can easily enable a permission check to allow "active units" in the CAD to change smartsigns in game.

    Simply ensure that useUnitPermission is set to true to enable this check

    Ace Permission Integration

    In the config.lua file, you can easily enable ace permissions and set the required permission.

    You could then add this to certain players in the server.cfg or even groups as part of a server framework.

    For more help on that, see some .

    vRP Integration

    In the config.lua file, you can easily enable vRP Integration including both vRP.hasPermission checks and vRP.hasGroup checks. This can allow you to restrict it to a police job for example, or highways maintenance job, if that exists on your server.

    Simply changed enabled to true to enable vRP integration. This will then generate the necessary vRP Proxy on the server, enabling global vRP functions such as GetUserId.

    In the checkGroup = {} section, you can set it up to check if the user has a required group. In the groups box, you can enter all the groups you would like to have permission, such as adding both police and administrators, as they may need to access them.

    In the checkPermission = {} section, you can do the same as a group, but for a permission instead. As you use the vRP framework you should be familiar with permissions and how to issue them.

    You should check your vRP groups.lua file to view your groups and the permissions for each group.

    ESX Integration

    In the config.lua file, you can easily enable ESX Integration using a job check.

    Simply change enabled to true to enable ESX integration. This will then generate the necessary ESX Shared Object on the server, enabling you to use ESX functions.

    In the checkJob = {} section, you can set it up to check if the user has a required job. For example, by keeping it as “police”, it will only work if the user has the police job. Alternatively, you may choose to add more such as “admin”.

    You should check your ESX jobs database table to be familiar with what jobs are configured on your server.

    QB Core Integration

    In the config.lua file, you can easily enable QB Core Integration using a job or permission check.

    Simply change enabled to true to enable the QB Core integration.

    In the checkJob = {} section, you can set it up to check if the user has a required job. For example, by keeping it as “police”, it will only work if the user has the police job. Alternatively, you may choose to add more such as “admin”.

    In the checkPermission = {} section, you can do the same as a job, but for a permission instead.

    Overall, we think we’ve made it easy for you to add permission checks into the resource. If you need additional help setting it up, our support team is here to help. You can .

    Locations.json file

    All sign locations and texts are now visible in the locations.json file, a dynamic file that will update every time players are on your server.

    This means that any text set by players on signs will also be saved each time your server is restarted.

    Adding new Signs

    To make it easier to set signs up we have added a /createsmartsign command which will only work while developerMode is set to true in config.lua. You can select left or right on the command depending on what side you want the sign to be.

    This command will then spawn a sign prop that can be repositioned with the following controls:

    R -- rotates the sign Right Mouse Button -- Exits Spooner Menu Left Mouse Button -- Allows you to move the sign as needed ENTER -- finish placement

    Once you press ENTER the new sign location will automatically be added to the locations.json file. You will need to restart your server to see the sign after setting it up.

    Updating from v1.4.1 to v1.5.1 or newer

    With the release of v.1.5.1 we have made the decision to not push an auto-update to users using v.1.4.1 or older. This is due to the change in configuration of sign locations and major refactoring of systems that would make automatically updating your config challenging. To update follow the steps below:

    1. Move your old smartsigns_sonoran folder to a safe location to reference your old config for any settings you would like to migrate over.

    2. Download the new version from your keymaster account, you should have "10870 - SmartSigns" (v1.4.1) and the new "339435 - Sonoran Store - Smart Signs (Sonoran CAD Edition)" asset in keymaster. Please download the newer one only as the old one will not receive updates going further.

    3. Follow the steps to install the updated resource. When configuring your settings refer back to your previous config file you have moved out of your server resources folder.

    [
      {
        "dbValue": "0",
        "friendlyValue": "Brown"
      },
      {
        "dbValue": "1",
        "friendlyValue": "Green"
      },
      {
        "dbValue": "2",
        "friendlyValue": "Blue"
      }
    ]

    Text Area

    The text area field allows you to create a large text area.

    Checkboxes

    The checkboxes type allows you to create multiple checkboxes.

    Random

    The random field allows you to randomly generate text. When a new record is created, this field will automatically generate the text based on the mask format. If the field is not disabled (readOnly) users can click the randomize button to continually generate new text.

    Sonoran CAD: Random Field
    Sonoran CAD: Random Field

    Date

    The date field allows you to specify a date field. You can also specify the formatting in the mask column.

    When readOnly is selected, this field will auto-fill the current date for new records.

    Time

    The time field allows you to specify a time field.

    Image

    The image field allows you to specify an image to be displayed.

    Linked Records

    The linked records field allows you to link and cross-reference other records and reports to this record.

    Flags

    Custom flag options can be added to every record template. When checked, these flags will show up as alerts on any lookup. Similar to a checkboxes section, you will need to expand the section and add options.

    Label

    Labels can display static text, along with color attributes.

    Address

    The address dropdown will auto-filter street address names that have been imported via CSV.

    Unit Information

    The UNIT_NUMBER, UNIT_NAME, UNIT_RANK, UNIT_AGENCY, UNIT_DEPARTMENT, UNIT_SUBDIVISION, UNIT_AGENCY_LOCATION, UNIT_AGENCY_ZIP, and UNIT_LOCATION field types will all automatically insert the unit's information when they create a new record.

    Supervisor

    This will disable the field for all non-supervisor unit identifiers. Your unit's supervisor status can be set in the unit identifier editor.

    Required

    Required fields will require the unit to enter something into the field before the record can be submitted.

    Unique

    Unique fields enforce that no duplicate values for this field are stored in the database. These values are enforced for the specific record template only.

    Unique fields can only be on non-DB Sync records and in custom sections.

    Read Only

    Read only fields prevent the user from entering new or modified text. This is used for auto-filled fields like unit information when a new record is created.

    Note: The date and time fields will auto-fill with the current date/time if readOnly is toggled, based on the community's timezone.

    : A-Z Letter
  • X: Alphanumeric

  • Example: Numbers

    Specifying ### allows the user to only enter 3 numbers in the field.

    Example: Phone Number

    Specifying (###) ### - #### formats the user's input into a phone number.

    Paste the unique Field Mapping ID from before. The box will light up green when a valid ID is entered.

    Checkbox or Select fields as the dependency parent will allow you to select what values will display this section or field.

    Text fields as the dependency parent will allow you to enter what text values will display this section or field.

    Dependency Types

    There are multiple options for dependency types.

    • Equal

      • Dependency will display if the entered content are an exact match to the specified value(s)

    • Not Equal

      • Dependency will display if the entered content is NOT equal to the specified value(s)

    • Contains

      • Dependency will display if the entered content contains any of the specified values(s)

    emergencyContact
    emergencyRelationship
    emergencyContactNumber
    residence
    video tutorial
    Learn more about ensuring civilian and vehicle searches link to your custom record fields
    add
    search
    permissions
    supervisor permission granted on your account
    Sonoran CAD's Custom Record Types
    Select custom or premade sections from the dropdown buttons
    Sonoran CAD: Custom Record Section Options
    Saving your new custom record
    Sonoran CAD Reports Center
    Resync Preview Fields
    Resync Preview Fields - Confirm
    Custom Record - Vehicle and Civilian search sections
    Sonoran CAD - Preview Fields Example (Shown in Yellow)
    Sonoran CAD - Enable Field for Preview
    server hosting
    View our video showcase of the Smart Signs resource here!
    Purchase the resource for free
    download the asset from your keymaster account
    View the documentation
    live map
    here
    documentation on Ace Permissions here
    open a support ticket here
    Smartsigns installed to [sonorancad] folder
    Sonoran CAD - Push Event Panel
    Sonoran CAD - Street Signs UI
    Sonoran CAD - Live Map Smart Signs
    2. Install the Resource

    Twitch Bodycam, Bot, & Lighting Integration

    Display your identifier information, attached call information, and more on your gaming stream!

    What is Sonoran CAD's Livestream Overlay?

    Sonoran CAD has a built-in livestream overlay, allowing you to display your live unit information, call information, and more!

    Our Twitch bot can also be configured to send out chat messages when data is modified.

    ensure smartsigns_sonoran
    
    # Permissions for Sonoran Smartsigns Auto-updater (REQUIRED)
    add_ace resource.smartsigns_sonoran command allow
    add_ace resource.smartsigns_sonoran_helper command allow
    config = {
        configVersion = 1.5, -- Do not change, used to see if config file is requiring updates.
        auto_update = true, -- Enable automatic updates from Sonoran Software for Smart Signs.
        main = {
            -- Here you are able to define how far the sign will load in from.
            -- If the player has loaded in the sign and goes out of this range the sign will unload on their client.
            loadInDistance = 300.0,
    
            -- Here you are able to define how close the player must be to the signs keypad in order to edit the text.
            -- 3.0 is the ideal value for "arms reach"
            accessPointDistance = 3.0,
    
            -- Here is the prop for the sign.
            -- You can change this if you wish but we recommend leaving this unless you are highly experienced.
            signModelName = {
                left = `prop_led_trafficsign_left`,
                right = `prop_led_trafficsign_right`,
            },
    
            -- This is the text that appears when you are changing the message. You could use this to translate to another language.
            instructionalText = "Press [E] to adjust sign",
    
            -- This will bring every sign back to default
            resetSignCommand = "resetsmartsigns",
            resetSignCommandEnabled = true,
            resetSignSuggestion = "Reset all smart signs around the map!",
    
            changeSignCommand = "editsmartsigns", -- To edit signs across the map
            changeSignSuggestion = "Edit all smart signs around the map!",
            changeSignCommandEnabled = true,
    
            -- Here you can change which button must be pressed to change the text on the sign
            -- A list of controls can be found on the official FiveM documentation @ https://docs.fivem.net/docs/game-references/controls/
            adjustButton = {0, 103}, -- {control group, control}
    
            -- This will change whether users can use /newsmartsign to automatically add signs into the locations.json file
            -- This will also enable debug printing on both the client and the server. This should be set to false most of the time.
            developerMode = false,
    
            -- Blips for all signs are automatically enabled on developer mode. This allows you to keep blips while disabling developer mode
            enableBlips = true,
            shortRangeBlips = true,
    
            -- Here you can define a list of words which cannot be placed on signs.
            -- These are automatically removed and replaced with blank text
            bannedWords = {
                "fuck",
                "shit",
            },
    
            -- This setting will toggle automatic centering of text
            -- Please note that centering may not be perfect due to the even amount of characters accepted by the sign
            centerText = false,
    
            -- This setting will utilize Sonoran CAD's Integration in order to determine if users are an active unit
            -- in the cad before allowing them to change smartsigns in game. Active units are any units with the CAD open
            -- to police, ems, fire or dispatch panels.
            useUnitPermission = false,
    
            -- Enable this to use Ace Permissions.
            -- This requires you to give groups or individual users the permission set below
            -- If you want to add further Ace Permission integration, edit sv_smartsigns.lua
            acePermissions = {
                enabled = false,
                permission = "update.sign"
            },
    
            -- We've added vRP integration. All you need to do is enable it below
            -- Then, configure if you wish to check for groups or permissions, or even both
            -- If you want to add further vRP integration, edit sv_smartsigns.lua
            vRP = {
                enabled = false,
                checkGroup = {
                    enabled = true, -- Enable this to use vRP group check
                    groups = {"police", "emergency", "admin"}, -- A user can have any of the following groups, meaning you can add different jobs
                },
                checkPermission = {
                    enabled = false, -- Enable this to use vRP permission check
                    permissions = {"police.menu", "player.kick"} -- A user can have any of the following permissions, allowing you to add multiple
                },
            },
    
            -- We've added ESX integration. All you need to do is enable it below
            -- Then, configure which jobs you want to check for
            -- If you want to add further ESX integration, edit sv_smartsigns.lua
            ESX = {
                enabled = false,
                checkJob = {
                    enabled = true, -- Enable this to use ESX job check
                    jobs = {"police"} -- A user can have any of the following jobs, allowing you to add multiple
                }
            },
    
            -- We've added QBCore integration. All you need to do is enable it below
            QBCore = {
                enabled = false,
                checkJob = {
                    enabled = false, -- Enable this to use QBCore job check
                    jobs = {"police"}, -- A user can have any of the following jobs, meaning you can add different jobs
                },
                checkPermission = {
                    enabled = false, -- Enable this to use QBCore permission check
                    permissions = {"god"}, -- A user can have any of the following permissions, allowing you to add multiple
                },
            },
    
            -- Here is the animations which are played when entering text for a sign.
            -- It is unlikely that this will need to be changed but you can disable the animation if you wish to do so.
            -- Find the animation list here: https://alexguirre.github.io/animations-list/
            animation = {
                enabled = true,
                dict = "anim@heists@prison_heiststation@cop_reactions", -- This is the animation dictionary (these show in bold on the animation list)
                name = "cop_b_idle", -- This is the animation name (these show below bold dictionaries on the animation list)
            },
    
            -- This allows you to enable Discord logging for the signs
            -- You must add your webhook in sv_discordConfig.lua
            logging = {
                enabled = false,
                displayName = "Smart Signs",
                colour = 31487,
                title = "**New Sign Log**",
                icon = "https://i.imgur.com/o7oAPb8.png",
                footerIcon = "https://i.imgur.com/n3n7JNW.png",
                dateFormat = "%d-%m-%Y %H:%M:%S", -- Day-Month-Year Hour-Minute-Second
    
                -- This section will work regardless of logging being enabled
                -- Make sure to set this to false in order to disable all logging
                bannedWordLogs = {
                    enabled = true,
                    colour = 16711680,
                }
            },
    
            soundEffect = {
                enabled = true,
                name = "CONFIRM_BEEP",
                dict = "HUD_MINI_GAME_SOUNDSET",
            },
    
            -- This allows you to move the position of every sign to a certain offSet, such as 1m down, if you feel they are all too high for example
            signOffset = {0.0, 0.0, 0.0}, -- x, y, z
        },
    useUnitPermission = true,
    acePermissions = {
        enable = false,
        permission = “update.sign”
    },
    vRP = {            
        enabled = false,            
        checkGroup = {                
            enabled = true, — Enable this to use vRP group check                
            groups = {“police”, “emergency”, “admin”}, — A user can have any of the following groups, meaning you can add different jobs            
        },            
        checkPermission = {                
            enabled = false, — Enable this to use vRP permission check                
            permissions = {“police.menu”, “player.kick”} — A user can have any of the following permissions, allowing you to add multiple            
            
        },        
        
    }
    ESX = {            
        enabled = false,            
        checkJob = {                
            enabled = true, — Enable this to use ESX job check                
            jobs = {“police”} — A user can have any of the following jobs, allowing you to add multiple            
        }        
    },
    QBCore = {
        enabled = false,
        checkJob = {
            enabled = false, -- Enable this to use QBCore job check
            jobs = {"police"}, -- A user can have any of the following jobs, meaning you can add different jobs
        },
        checkPermission = {
            enabled = false, -- Enable this to use QBCore permission check
            permissions = {"god"}, -- A user can have any of the following permissions, allowing you to add multiple
        },
    },
    Bodycam Overlay

    The free version of the overlay does not include the customizable bodycam asset. However, you can still create custom overlay text with the free version!

    Learn more about the full version of Sonoran CAD's stream overlay!

    The bodycam creates local text files and hosts a local webserver. This requires the desktop application to run.

    The stream overlay also includes a customizable version of the popular XION Chase Cam asset.

    This allows you to customize a bodycam overlay on your stream, with your real-time unit and call information.

    1. Set a File Directory

    First, ensure you are using the desktop version of Sonoran CAD. The application has to generate physical files, and host a local webserver to work. This can not be done in a browser.

    In the stream overlay, open the txt file directory viewer and select a folder for the text files and bodycam webpage to be generated:

    Stream Overlay - Text file Location

    2. Configuring the Bodycam Contents

    In the livestream overlay config section, expand the Bodycam section.

    Here, you can enable and customize the data placement and keys just as before with the customizable text files.

    • Expand the Unit Updates or Call Updates Section

    • Toggle ON the txt file

    • COPY the field key

    • PASTE the field key into the bodycam section

    • SAVE the configuration once complete

    You can also optionally specify a different port for the bodycam webpage to run on (9990 is the default).

    3. Add the Bodycam to OBS

    In OBS, add a new "Browser" source and paste the URL listed in the bodycam section. By default, this will be http://localhost:9990

    OBS - New Browser Source

    Paste the URL into the browser source and hit OK.

    4. Customize the Size and Placement

    You can now customize the size and placement of this browser window in OBS as you normally would.

    Smart Lighting

    Due to the nature of most smart bulb manufacturers, our smart lighting integration is at the mercy of their API support. We can not guarantee that these manufacturers won't change or remove backdoor support to these bulbs in the future.

    Video Promo and Tutorial

    Sonoran CAD - Smart Lighting

    Sonoran CAD allows you to configure in-game events to smart lighting in your own home!

    When you toggle your police lights in-game, your room can flash with custom lighting patterns to further immerse and simulate real world lighting.

    The smart lighting integration is not included with the free version of the Stream Overlay. Learn more about the full version of Sonoran CAD's stream overlay. The smart lighting integration creates local text files and hosts a local webserver. This requires the desktop application to run.

    Supported Smart Bulbs

    At this time, Sonoran CAD currently supports the following smart bulb types:

    Wyze Color (Recommended)

    Many of our development team members personally use and recommend these bulbs. Due to the design, these tend to provide the fastest response type with more complex lighting patterns. A 4 pack typically costs ~$40 ($10/bulb).

    Philips Hue

    Philips Hue is significantly more expensive, but is typically the most widely known option. This option will also require the purchase of a Hue bridge/hub. Due to the design, these tend to have a ~10ms+ delay when setting the color of multiple bulbs at a time.

    Therefore, we recommend keeping the delay between frames above 500ms when using Philips Hue bulbs.

    Govee

    Govee light bulbs are supported via Bluetooth and WiFi.

    Bluetooth bulbs are supported, but can have additional time when starting the initial connection. Bluetooth connections can also experience intermittent connection problems. Govee's WiFi bulbs are currently ran through the official API, resulting in rate limitations of 60 calls per minute.

    Therefore, we recommend keeping the delay between lighting frames above 1,000ms when using Govee wifi bulbs.

    1. Searching for Bulbs

    The smart lighting section has multiple Scenes

    • Restore: Set when you are no longer flashing emergency lights, turn signals, etc.

    • Emergency Lights: While you are in an emergency vehicle with the lights on

    • Panic: While your panic status is toggled

    • Available: When your unit status is set to available

    • Unavailable: When your unit status is set to unavailable

    • Busy: When your unit status is set to busy

    • Enroute: When your unit status is set to enroute

    • On Scene: When your unit status is set to on scene

    • Left Turn Signal: While your left hand turn signal is on

    • Right Turn Signal: While your right hand turn signal is on

    • Hazard Lights: While your hazard lights are on

    Expand the Scene > Add Bulb > Search for Bulbs > Select Wyze or Philips Hue

    Sonoran CAD - Scan for Smart Bulbs

    Credentials: Wyze

    • Username: Email address used to login to your Wyze account

    • Password: Password used to login to your Wyze account

    • Key ID: The "Key ID" in the Wyze API key generator

    • API Key: The "API Key" in the

    Credentials: Philips Hue

    Your Philips Hue bridge should be automatically discovered by pressing the Scan button in Sonoran CAD.

    If you are seeing the following error: Error: Unable to find a Hue bridge on the local network.

    You may need to manually enter the bridge's IP address. This is most easily found using the Philips Hue mobile app.

    1. Select Settings

    2. Network Settings

    3. Toggle DHCP Off

    4. Copy the IP address to Sonoran CAD

    5. Toggle DHCP On

    6. Scan for the bridge in Sonoran CAD

    Philips Hue - Copy Bridge IP
    Sonoran CAD - Manual Hue Bridge IP

    Credentials: Govee WiFi

    Govee WiFi bulbs are handled via Govee's official API. Note that this does include a rate limit of 60 calls/minute.

    1. Request an API Key

    Using the Govee mobile app navigate to Account > Settings > About Us > Apply for API Key

    2. Retrieve your API Key and Search

    Within a few minutes, Govee should email your account API credentials to use. Paste these into Sonoran CAD and search for your Govee WiFi lights.

    Credentials: Govee Bluetooth

    Govee Bulb models only supporting bluetooth can be controlled by Sonoran CAD, as long as your PC supports bluetooth connections. Windows limits this to no more than 5 active bluetooth connections at one time.

    1. Scan for Bluetooth devices

    Sonoran CAD will scan for all locally active Bluetooth devices. Govee bulbs will typically be found with a name format: WORD_MODELNUMBER_XXXX.

    If your bulb is not discoverable, turn the bulb's power off entirely for ~5 seconds then turn it back on. This should place your bulb into discovery mode.

    2. Add the Bulb

    Click on the Bluetooth bulb to add it to your scene, and continue on to building your lighting sequences.

    Bluetooth bulbs will have their status listed on the left side. When you click the Test button, it may take up to 60 seconds for the connection to complete.

    2. Creating Sequences

    You can add the desired bulb to your Scene. Each scene is made up of multiple frames.

    The example below shows a very simple sequence of two lights switching back and forth between red and blue, with a delay of 500ms between each frame. You can duplicate and create advanced chase sequences, flashes, etc. with several bulbs at a time.

    We recommend keeping the delays no shorter than: 250ms for Wyze Color Bulbs 500ms for Philips Hue Bulbs

    3. Testing and Using In-Game

    You can press the Test Scene button to test the scene with your smart bulbs. Press the Test Scene button in the Restore scene section to go back to your normal lighting.

    Local Webserver: In-Game Use

    For in-game use, your lights, turn signals, and hazards will automatically run as long as your community has the Sonoran CAD integration framework installed. This utilizes a local webserver running from your desktop app.

    1. If you have modified your Bodycam port from the default 9990, you will need to update this port in-game as well. Use the /setlightport <some port here> command in-game to change your port from 9990 to something else.

    2. Additionally, ensure you have set your file directory in the credentials section of the stream overlay.

    Configuring the Twitch Bot

    Sonoran CAD's stream overlay also comes with a configurable Twitch bot. This bot will send out chat updates when unit or call data is updated.

    The Twitch bot is not included with the free version of the Stream Overlay. Learn more about the full version of Sonoran CAD's stream overlay.

    1. Create a Twitch OAuth Token

    Create a new Twitch OAuth token by going to https://twitchapps.com/tmi/

    2. Configure your Twitch Bot Token and Username

    Using the overlay in OBS, select the Twitch Bot button in the taskbar. Paste in your Twitch channel name and OAuth key.

    Overlay - Twitch Bot Credentials

    Once set, you can press Test to display a test message in your Twitch chat.

    3. Configure the Bot's Event Data

    Every piece of unit and call data can be toggled on or off individually.

    It is highly recommended to only toggle on data updates that will not be frequently spammed. Toggling too many data fields and updating data too quickly may result in Twitch rate limiting your bot.

    Overlay - Twitch Data Fields

    4. Save and Run

    Once you have configured your Twitch Bot's credentials and data fields, press Save.

    Now, whenever one of those data fields is updated, your Twitch bot will send a chat message.

    Sonoran CAD - Stream Overlay

    Debugging the Twitch Bot

    If you're having issues seeing the Twitch bot messages, view the Twitch Logs panel in the stream overlay.

    This will contain valuable information on the twitch bot's connection, rate limiting, and other errors.

    Overlay - Twitch Logs

    If you have too many data fields toggled, and are sending Twitch updates too quickly you may experience rate limiting.

    Custom Overlay Text

    The overlay is immensely customizable, allowing you to customize every piece of data displayed.

    1. Accessing the Overlay Window

    The overlay configuration modal can be opened by navigating to Start Menu > System > Stream Overlay. Or, by searching in the start menu.

    2. Configuring Text File Location

    While the Twitch bot can run in a browser instance of Sonoran CAD, the desktop application is required, to generate unit/call data txt files.

    In the stream overlay, open the txt file directory viewer and select a folder for the text files to be generated:

    Stream Overlay - Text file Location

    3. Toggle and Configure Keys

    The free version of the overlay is limited to three (3) data keys. Learn more about the full version of Sonoran CAD's stream overlay!

    In the Configuration tab, toggle on the desired data fields for your unit and dispatch call information.

    For every field toggled, a text file will be generated to be viewed in OBS. However, we recommend creating custom text files to combine multiple data fields in a single text file.

    Stream Overlay - Custom Text Files

    Data Field Keys:

    These can be easily copied from the UI, by pressing the Copy button next to the toggled field and pasting into the custom file's key textbox.

    Key

    Description

    {unit_status}

    Unit Status

    {unit_location}

    Unit Location

    {unit_aop}

    Unit AOP

    {unit_number}

    Unit Number

    {unit_name}

    Unit Name

    4. Save your Configuration

    Don't forget to save your configuration!

    5. Configure Data in OBS

    In OBS, add a new text source:

    OBS - New Text Source

    In the text source properties, select Read from File and select one of your generated data key files from the location specified earlier.

    Stream Overlay - Text Files
    Stream Overlay - Text file Viewer

    You can now place the text field anywhere in your OBS stream layout.

    You can also customize the fonts, change the background and more!

    Purchasing the Overlay

    The free version of the livestream overlay allows anyone to test out the basic functionality. The free version does not allow use of the Twitch bot, bodycam, or smart lighting integration and is locked to a maximum of three custom "data keys".

    The full, individual license for Sonoran CAD's livestreaming tools is available for $7.99/mo.

    Or, include the livestreaming tools for your entire community with Sonoran One.

    Users can purchase a license to the full version in their billing center:

    Sonoran CAD - Smart Lighting
    Create and Manage a Subscription

    {unit_agency}

    Unit Agency

    {unit_department}

    Unit Department

    {unit_subdivision}

    Unit Subdivision

    {unit_rank}

    Unit Rank

    {unit_group}

    Unit Group

    {unit_panic}

    Unit Panic Status

    {call_id}

    Dispatch Call ID

    {call_origin}

    Dispatch Call Origin

    {call_status}

    Dispatch Call Status

    {call_priority}

    Dispatch Call Priority

    {call_block}

    Dispatch Call Block

    {call_address}

    Dispatch Call Address

    {call_postal}

    Dispatch Call Postal

    {call_title}

    Dispatch Call Title

    {call_code}

    Dispatch Call 10-Code

    {call_description}

    Dispatch Call Description

    Wyze API key generator
    The 'DATE' field option
    A 'SELECT' field shown in the record editor
    The 'TIME' field option
    The 'TIME' field shown in the record editor
    A 'CHECKBOXES' field shown in the record editor.
    The 'IMAGE' field option.
    Sonoran CAD - Custom Flags
    Sonoran CAD - Linked Records
    The 'DATE' field shown in the record editorTime
    The 'CHECKBOXES' field option
    A 'TEXTAREA' field shown in the record editor
    Supervisor field highlighted red
    Input field with REQUIRED toggled
    The 'SELECT' field option
    Required field shown in the record editor
    Custom Records - Read Only Fields
    The 'IMAGE' field shown in the record editor
    The 'TEXTAREA' field option
    Custom Records - Read Only Toggle
    Input field with SUPERVISOR toggled
    Sonoran CAD - Custom Record Address Field
    Sonoran CAD - Custom Record Label
    Sonoran CAD - Smart Lighting Video