🗼Signal Towers
Overview
The signal tower system simulates cell tower coverage and signal strength for the in-game phone. It determines the player's signal bars based on proximity to configured towers and updates the UI accordingly. The system also provides exports for other scripts to query or set signal strength.
How Signal Strength is Calculated
Towers are defined in
Config.SignalTowers.Towers
as a list of coordinates.The system calculates the distance from the player to the nearest tower.
Signal strength (bars) is determined by which range threshold the player is within:
Config.SignalTowers.Range[1]
(weakest, farthest)... up to
Config.SignalTowers.Range[4]
(strongest, closest)
If the player is outside all tower ranges, the signal is set to 0.
Debugging
If
Config.SignalTowers.Debug
is enabled, blips are created for each tower and their signal ranges:Main tower blip (icon)
Colored radius blips for each signal level (red, yellow, blue, green)
Useful for visualizing coverage during development.
Exports
The following exports are provided for use in other scripts:
Get Current Service Bars
local bars = exports.yseries:GetCurrentService()
-- bars is 0-4
Get All Towers
local towers = exports.yseries:GetAllTowers()
-- towers is a table of vector3 positions
Force Signal Update
local newBars = exports.yseries:UpdateSignalStrength()
-- Recalculates and updates the signal
Set Service Bars Manually
---@param level - The level of the service(min:0, max: 4).
---@param disable - If *true disables auto service calculation thread.
exports.yseries:SetServiceBars(3, true)
Configuration Notes
All towers and ranges are set in
Config.SignalTowers
.To enable/disable the system, set
Config.SignalTowers.Enabled
.To show debug blips, set
Config.SignalTowers.Debug = true
.
Events
The system triggers
yseries:client:phone:service-changed
whenever the signal bars change.
Troubleshooting
If the signal is not updating, check that the config is loaded and the system is enabled.
Use debug blips to verify tower placement and coverage.
For further customization, edit client/utils/signalTowers.lua
and Config.SignalTowers
as needed.
Last updated