PLATEWATCH
Standalone ALPR System for GTA V LSPDFR
Version 5.4.1

Created by JadenPlayz

======================================================================
OVERVIEW
======================================================================

PlateWatch is a standalone Automatic License Plate Reader plugin for
GTA V LSPDFR.

The plugin scans vehicles in front of and behind your patrol vehicle,
displays their license plates, checks for active violations, and shows a
custom ALPR hit window when a flagged vehicle is detected.

PlateWatch includes a FiveM-style settings menu, two selectable reader
textures, configurable sounds, adjustable alert volume, movable UI
elements, custom hotlists, hit logging, and in-game keybind editing.

======================================================================
FEATURES
======================================================================

- Front and rear plate scanning
- Front-only, rear-only, or dual scan modes
- Two selectable reader UI textures
- Real GTA V plate textures and styles
- Automatic plate text sizing and centering
- ALPR hit window using the same plate-rendering system as the reader
- Exact violation descriptions
- Stolen vehicle alerts
- Expired or revoked registration alerts
- Unregistered vehicle alerts
- Expired, revoked, or missing insurance alerts
- Scratched VIN alerts
- Manual plate hotlist support
- Ignore list support
- Recent ALPR hit history
- CSV hit logging
- Eight selectable MDT sounds
- Adjustable alert volume
- Adjustable repeat-alert delay
- Movable and resizable plate reader
- Movable and resizable ALPR hit window
- FiveM-style settings menu
- In-game keybind changing
- Configurable key modifiers
- Automatic settings and texture reloading
- Optional Common Data Framework integration
- Standalone LSPDFR support

======================================================================
REQUIREMENTS
======================================================================

- Grand Theft Auto V
- RAGE Plugin Hook
- LSPDFR 0.4.9
- Microsoft .NET Framework 4.8

RAGENativeUI is not required.

======================================================================
INSTALLATION
======================================================================

1. Place PlateWatch.dll inside:

   Grand Theft Auto V\Plugins\LSPDFR

2. Place the PlateWatch folder inside:

   Grand Theft Auto V\Plugins\LSPDFR

3. The final structure should look like this:

Grand Theft Auto V
└── Plugins
    └── LSPDFR
        ├── PlateWatch.dll
        └── PlateWatch
            ├── PlateWatch.ini
            ├── PlateReaderUI.png
            ├── PlateReaderUI2.png
            ├── PlateTexture.png
            ├── Hotlist.txt
            ├── IgnoreList.txt
            ├── Plates
            │   ├── BlueOnWhite2.png
            │   ├── YellowOnBlack.png
            │   ├── YellowOnBlue.png
            │   ├── BlueOnWhite1.png
            │   ├── BlueOnWhite3.png
            │   └── NorthYankton.png
            ├── Sounds
            │   ├── MDT_01.wav
            │   ├── MDT_02.wav
            │   ├── MDT_03.wav
            │   ├── MDT_04.wav
            │   ├── MDT_05.wav
            │   ├── MDT_06.wav
            │   ├── MDT_07.wav
            │   └── MDT_08.wav
            └── Logs
                └── ALPR_Hits.csv

4. Start GTA V through RAGE Plugin Hook.

5. Go on duty in LSPDFR.

======================================================================
IMPORTANT CLEAN-INSTALL NOTE
======================================================================

Only install one PlateWatch DLL.

Old or copied DLLs can cause:

- Duplicate plate readers
- Duplicate menus
- Repeated MDT sounds
- Multiple ALPR hit windows
- Conflicting settings

Remove files such as:

- PlateWatch_old.dll
- PlateWatch - Copy.dll
- PlateReader.dll
- PlateWatchTest.dll
- Any previous PlateWatch build

Keep only one PlateWatch.dll inside:

Grand Theft Auto V\Plugins\LSPDFR

Restart GTA V after removing old builds.

======================================================================
DEFAULT CONTROLS
======================================================================

F7
Open the PlateWatch menu.

F8
Turn the ALPR system on or off.

F9
Acknowledge and dismiss the current ALPR hit.

F10
Enter or exit UI edit mode.

All keys can be changed from the PlateWatch menu or PlateWatch.ini.

======================================================================
MENU CONTROLS
======================================================================

Up / Down
Move through the settings.

Left / Right
Change the selected value.

Enter
Apply the selected option or begin key capture.

Escape
Close the menu or cancel key capture.

The menu stays on the right side of the screen.

======================================================================
CHANGING KEYBINDS IN GAME
======================================================================

PlateWatch allows these controls to be changed from the menu:

- Menu key
- Toggle ALPR key
- Acknowledge key
- UI edit key

To change a key:

1. Open the PlateWatch menu.
2. Select the key you want to change.
3. Press Enter.
4. Release the old key.
5. Press the new key.
6. Press Escape to cancel.

The menu and toggle keys support:

- None
- Control
- Shift
- Alt

Duplicate PlateWatch keys are blocked.

Arrow keys, Enter, Escape, Windows keys, and modifier-only bindings cannot
be assigned.

New keybinds are automatically saved to PlateWatch.ini.

======================================================================
UI EDIT MODE
======================================================================

Press F10 to enter UI edit mode.

- Hover over the plate reader or ALPR hit window.
- Hold Left Mouse Button and drag to move the selected panel.
- Hold Left Mouse Button and use the mouse wheel to resize it.
- Press F10 again to save and exit.

The reader and hit window are moved and resized separately.

======================================================================
READER TEXTURES
======================================================================

PlateWatch supports two reader designs.

HARDWARE

Uses:

PlateReaderUI.png

DUAL DISPLAY

Uses:

PlateReaderUI2.png

Both files belong inside:

Grand Theft Auto V\Plugins\LSPDFR\PlateWatch

Change the active texture from the menu using:

UI TEXTURE

Use Left or Right to switch between the two styles.

Use RELOAD ACTIVE TEXTURE after replacing or editing a texture.

======================================================================
ALPR HIT WINDOW
======================================================================

The ALPR hit window displays:

- Real plate texture and plate style
- Plate number
- Alert status
- Violation
- Location
- Time
- Date
- Registered owner
- Vehicle
- Vehicle color

The plate shown inside the hit window uses the same plate texture, font,
text color, sizing, and centering system as the main plate reader.

Press the configured acknowledge key to dismiss the current hit.

======================================================================
DEFAULT CONFIGURATION
======================================================================

PlateWatch.ini is located at:

Grand Theft Auto V\Plugins\LSPDFR\PlateWatch\PlateWatch.ini

Recommended configuration:

[UI]
TextureStyle=HARDWARE
HardwareTexture=PlateReaderUI.png
DisplayTexture=PlateReaderUI2.png

[Display]
X=1000.00
Y=160.00
Scale=0.62

[HitPanel]
X=1085.00
Y=540.00
Scale=0.62
DurationSeconds=12.00

[ALPR]
Enabled=True
ReaderVisible=True
HitAlerts=True
LockIndicator=True
PoliceVehiclesOnly=True
ScanDistance=50.00

[Advanced]
ScanMode=BOTH
HitHistory=True
PersistentLogging=True
AutoEnableOnDuty=True
FlagRepeatSeconds=45.00

[Audio]
DetectionSound=MDT_01
Volume=75

[Controls]
MenuModifier=None
MenuKey=F7
ToggleModifier=None
ToggleKey=F8
AcknowledgeKey=F9
EditKey=F10

======================================================================
SCAN MODES
======================================================================

BOTH

Scans vehicles in front of and behind the patrol vehicle.

FRONT

Only scans vehicles in front of the patrol vehicle.

REAR

Only scans vehicles behind the patrol vehicle.

======================================================================
SUPPORTED VIOLATIONS
======================================================================

PlateWatch can report:

- STOLEN VEHICLE
- REGISTRATION EXPIRED
- REGISTRATION REVOKED
- UNREGISTERED VEHICLE
- INSURANCE EXPIRED
- INSURANCE REVOKED
- NO INSURANCE
- SCRATCHED VIN
- MANUAL HOTLIST MATCH
- Custom BOLO reasons

Multiple violations can appear in the same ALPR hit.

======================================================================
ALERT SEVERITY
======================================================================

ADVISORY

Lower-priority custom or informational alerts.

WARNING

- Expired registration
- Expired insurance

HIGH

- Revoked registration
- Revoked insurance
- Unregistered vehicle
- No insurance

CRITICAL

- Stolen vehicle
- Scratched VIN
- BOLO match
- Warrant-related hotlist entry
- High-priority manual hotlist match

======================================================================
MANUAL HOTLIST
======================================================================

Edit:

Grand Theft Auto V\Plugins\LSPDFR\PlateWatch\Hotlist.txt

Format:

PLATE|REASON

Examples:

46EEK572|FELONY VEHICLE BOLO
82JBD294|WANTED VEHICLE - ARMED SUSPECT
68FBM911|VEHICLE CONNECTED TO ROBBERY

The custom reason can appear in the ALPR hit window, history, CSV log,
notifications, and RAGE Plugin Hook log.

======================================================================
IGNORE LIST
======================================================================

Edit:

Grand Theft Auto V\Plugins\LSPDFR\PlateWatch\IgnoreList.txt

Add one plate per line:

12ABC345
68FBM911
TESTCAR1

Ignored plates will not:

- Lock on the reader
- Open the ALPR hit window
- Play an MDT sound
- Enter recent-hit history
- Appear in the CSV hit log

======================================================================
MDT SOUNDS
======================================================================

Available options:

- Off
- MDT_01
- MDT_02
- MDT_03
- MDT_04
- MDT_05
- MDT_06
- MDT_07
- MDT_08

Sound files belong inside:

Grand Theft Auto V\Plugins\LSPDFR\PlateWatch\Sounds

Alert volume can be adjusted from 0 to 100.

Example:

[Audio]
DetectionSound=MDT_01
Volume=75

======================================================================
REPEAT-ALERT DELAY
======================================================================

The repeat-alert delay prevents the same flagged plate from repeatedly
triggering sounds and hit windows while it remains nearby.

Example:

[Advanced]
FlagRepeatSeconds=45.00

The delay can also be changed from the PlateWatch menu.

======================================================================
CSV LOGGING
======================================================================

When persistent logging is enabled, PlateWatch creates:

Grand Theft Auto V\Plugins\LSPDFR\PlateWatch\Logs\ALPR_Hits.csv

The log can contain:

- UTC timestamp
- Plate number
- Camera direction
- Alert severity
- Vehicle model
- Registered owner
- Exact violations
- Record source

======================================================================
TROUBLESHOOTING
======================================================================

TWO READERS OR MENUS APPEAR

- Delete older PlateWatch DLLs.
- Keep only one PlateWatch.dll.
- Restart GTA V.

THE WRONG TEXTURE APPEARS

Open the menu and change UI TEXTURE.

You can also edit:

[UI]
TextureStyle=HARDWARE

or:

[UI]
TextureStyle=DUAL DISPLAY

THE TEXTURE IS MISSING

Confirm these files exist:

Plugins\LSPDFR\PlateWatch\PlateReaderUI.png
Plugins\LSPDFR\PlateWatch\PlateReaderUI2.png

PLATES ARE MISALIGNED

- Confirm the correct texture is selected.
- Confirm both included textures are installed.
- Do not use a differently arranged image without updating the plate
  mapping in Main.cs.

MDT AUDIO REPEATS

- Increase FlagRepeatSeconds.
- Remove duplicate PlateWatch DLLs.
- Restart GTA V.

MDT AUDIO IS TOO LOUD

Lower:

[Audio]
Volume=75

SOUNDS DO NOT PLAY

- Confirm DetectionSound is not Off.
- Confirm Volume is above 0.
- Confirm the selected WAV file exists.
- Use standard PCM WAV files.

KEYBINDS DO NOT CHANGE

- Select the key option and press Enter.
- Release the old key before pressing the new one.
- Do not assign Enter, Escape, arrow keys, or modifier-only keys.
- Check RAGEPluginHook.log for unsupported-key messages.

CSV LOG DOES NOT APPEAR

- Confirm PersistentLogging=True.
- Confirm the Logs folder exists.
- Trigger a valid ALPR hit.
- Check RAGEPluginHook.log for file-access errors.

======================================================================
SUPPORT
======================================================================

When reporting an issue, include:

- RAGEPluginHook.log
- LSPDFR version
- GTA V game build
- PlateWatch.ini
- Screenshot or video
- Hotlist.txt and IgnoreList.txt when relevant
- A list of DLLs inside Plugins\LSPDFR

======================================================================
DISCLAIMER
======================================================================

PlateWatch is an unofficial community-created modification for GTA V
LSPDFR.

It is not affiliated with Rockstar Games, Take-Two Interactive, LSPDFR,
FiveM, Motorola, or any real law-enforcement agency.

Do not redistribute, reupload, modify, sell, or include PlateWatch in
another download without permission from the original creator.
