π οΈConfiguration
This document describes all configuration options for the DevHub Truck robbery resource.
β οΈ REQUIRED STEPS BEFORE USE
1. pma-voice Configuration in server.cfg
Make sure that voice_enableRadioAnim in server.cfg is set to 0. If it doesn't exist, add to server.cfg:
setr voice_enableRadioAnim 02. pma-voice Export
Add this to the bottom of pma-voice/client/module/radio.lua:
exports("getRadioData", function()
return radioData
end)Shared Configuration (configs/shared.lua)
Reserved Channels System
Controls which radio frequencies are restricted to specific jobs or custom conditions.
Shared.ReservedChannels = {
{ jobs = { "police", "sheriff", "state" }, channels = { 909, 909.01, 909.02, 911 } },
{ jobs = { "police", "sheriff", "state", "ambulance" }, channels = { 912 } },
{ jobs = { "mechanic1" }, channels = { 913 } },
{ jobs = { "mechanic2" }, channels = { 914 } },
{ channels = { 915 }, handler = function(source, channel)
local crimeJob = "xd"
if crimeJob == "vagos" then
return true
else
return false, "Access only for Vagos members"
end
end
},
}jobs: Array of job names that have access to the specified channels
channels: Array of frequency numbers that are reserved
handler: Optional custom function for advanced access control
Parameters:
source(player ID),channel(frequency number)Returns:
boolean(access granted), optionalstring(denial message)
Usage: Add new entries to create job-specific radio channels
Example - Adding a new reserved channel for mechanics:
Antenna Disable System
Configuration for the antenna hacking/disabling feature.
enabled: Enable/disable the antenna disabling feature
time: Duration in milliseconds that antenna remains disabled (default: 20 minutes)
item: Item name required to disable antenna
Set to
falseto allow disabling without an itemDefault:
"dh_antenna_disabler"
Antenna Debug Mode
Shows antenna coverage radius on the map for testing purposes.
AntennaDebug: Set to
trueto visualize antenna coverage areas on the mapUsage: Enable during setup to verify antenna placement and coverage
Antenna Locations
Defines all radio antenna locations across the map and their signal coverage.
prop: Prop model name for the antenna object
coords: vector3 coordinates (x, y, z) for antenna placement
rotation: vec3 rotation values (pitch, roll, yaw)
radius: Signal coverage radius in game units
Default Locations: 12 antennas strategically placed across the map
Coverage Areas:
Los Santos: 1300-1650 unit radius
Sandy Shores: 1350-2000 unit radius
Paleto Bay: 1200-3000 unit radius
Adding a New Antenna:
Radio Item Name
Defines the inventory item name for the radio.
RadioItem: Item name in your inventory system
Default:
"radio"Disable: Set to
falseto allow radio access without an item requirement
Client Configuration (configs/client.lua)
configs/client.lua)Radio Animations
Defines multiple animation options for holding and using the radio.
dict: Animation dictionary name
anim: Specific animation name within the dictionary
flags: Animation flags (49 = upperbody + loop)
propModel: Radio prop model (set to
falsefor no prop)bone: Bone ID for prop attachment (28422 = right hand)
offsets: Position and rotation offsets for the prop
x, y, z: Position offset
xRot, yRot, zRot: Rotation offset in degrees
Players can switch between animations in-game settings
Aiming Animation
Special animation used when player is aiming with a weapon while using radio.
Same structure as regular animations
No prop model by default for compatibility with weapon aiming
Automatically activates when player aims while radio is open
Translation Configuration (configs/translation.lua)
configs/translation.lua)Customize all user-facing text in the resource. Full multi-language support.
Tuning Minigame Translations
Items Configuration (items/items.lua)
items/items.lua)Add these items to your inventory system:
Radio Item
Antenna Disabler Item
Item Images:
items/dh_antenna_disabler.png- Provided in the resourceAdd to your inventory images folder
Customization Examples
Creating Job-Specific Channels
Add multiple job groups with shared access:
Custom Access Handler Example
Create advanced access control based on custom logic:
Making Radio Accessible Without Item
Allow all players to use radio without needing the item:
Advanced Configuration
Frequency Range
The radio supports frequencies from 0.00 to 9999.99 MHz.
Signal Strength System
Signal strength is calculated based on:
Distance from nearest antenna
Antenna radius configuration
Whether antenna is disabled
Signal Levels:
5 bars: Within optimal range (< 50% of radius)
3-4 bars: Medium range (50-75% of radius)
1-2 bars: Weak signal (75-100% of radius)
0 bars: No signal (outside radius or antenna disabled)
UI Customization
Players can customize their radio interface:
Wallpaper: None or Custom
Background Opacity: Adjustable transparency
Radio Volume: Individual volume control
Button Click Volume: UI sound control
HUD Display: Toggle on/off
Radio Scale: Size adjustment
HUD Scale: HUD size adjustment
Position: Drag and reposition UI elements
Animation: Choose from available animations
Troubleshooting
Radio not opening:
Verify player has the radio item (if
Shared.RadioItemis set)Check F8 console for Lua errors
Check if resource is started:
/ensure devhub_radio
No signal everywhere:
Enable
Shared.AntennaDebug = trueto visualize coverageVerify antenna coordinates are valid
Ensure antenna props are spawning correctly
Reserved channels not working:
Verify job names match your framework's job names exactly
Check player's job with
/jobor similar commandReview server console for access denial messages
Test custom handler functions with debug prints
Antenna hacking not working:
Verify player has
dh_antenna_disableritemCheck if
Shared.DisableSettings.enabledistrueEnsure minigame scripts are loaded
Look for errors during antenna interaction
Last updated