Aller au contenu

Couverture réseau

Combien de barres affiche un téléphone, et que se passe-t-il lorsqu’il n’en a aucune.

Elle est livrée désactivée. Une ville qui n’a pas demandé de couverture réseau conserve le téléphone habituel — toutes les barres partout, rien de refusé, rien de mesuré :

-- shared/config/signal.lua
Enabled = false, -- turn it on when you want bars that come from where the player is standing

Une fois activée sans rien changer d’autre, il ne se passe pas grand-chose non plus : sans antennes ni zones blanches, la carte bénéficie d’une couverture totale et la seule différence réside dans un indicateur de signal qui dit enfin la vérité. Ajoutez l’une des lignes ci-dessous et le système prend tout son sens.

Tout est décidé côté serveur, à partir de l’endroit où le joueur se trouve réellement. Un client qui déciderait de son propre signal serait un client sans réseau lorsque quelqu’un l’appelle et avec quatre barres lorsqu’il appelle lui-même.


Exactement la même chose que le mode avion, car c’est le même phénomène vu sous un autre angle : la ville ne peut pas joindre ce téléphone.

  • Les appels entrants et sortants sont refusés, et le téléphone indique Vous n’avez pas de réseau ici plutôt que non disponible.
  • Les messages ne partent pas, et les messages qui leur sont envoyés sont mis en attente.
  • Tout ce que la ville a tenté de délivrer est remis au joueur dès que les barres réapparaissent — rien n’est perdu, tout attend.
  • Le téléphone lui-même continue de fonctionner : l’appareil photo, les notes, la lampe torche, les photos déjà enregistrées.

La barre d’état affiche les barres disponibles, et à zéro elle indique Aucun service.


-- shared/config/signal.lua
City = {
Centre = vector3(195.0, -890.0, 30.0), -- Legion Square, near enough
Full = 3000.0, -- full signal within this
None = 9000.0, -- nothing at all past this
},

Signal au maximum dans la ville, puis les barres diminuent une par une en s’en éloignant. Mesuré sur un serveur en production avec les valeurs par défaut ci-dessus :

EmplacementBarres
Legion Square4
Sandy Shores3
Paleto Bay1

Définissez City = false pour désactiver ce comportement et vous appuyer uniquement sur les antennes relais.

Antennes relais, pour une ville où la couverture est un élément physique

Section intitulée « Antennes relais, pour une ville où la couverture est un élément physique »
Range = 900.0, -- full signal this close to a mast
Fade = 1400.0, -- and nothing this much further out
Masts = {
vector3(-75.0, -818.0, 326.0), -- the tower on Maze Bank
vector3(2358.0, 2570.0, 46.0), -- the masts above Sandy Shores
},

Dès que cette liste contient un élément, les barres proviennent de l’antenne la plus proche et City est ignoré. Une antenne qu’un joueur fait exploser plonge un quartier entier sans réseau téléphonique jusqu’à sa réparation — c’est la formule idéale si votre ville souhaite en faire un élément de gameplay.

Dead = {
{ Coords = vector3(895.0, -3245.0, -98.0), Radius = 120.0, Bars = 0 }, -- the labs
{ Coords = vector3(480.0, -1310.0, 29.0), Radius = 40.0, Bars = 1 }, -- the chop shop
},

Une zone blanche l’emporte toujours sur ce qu’indiquent les antennes, et lorsque deux zones se chevauchent, le nombre le plus faible prévaut : un bunker situé dans une vallée ne capte pas mieux pour autant. Bars = 0 équivaut à aucun signal ; tout autre chiffre correspond à un sous-sol qui capte encore une barre.

Une sphère, car le centre d’une sphère se repère à l’aide d’une seule commande.


exports.mic_phone:GetSignal(src) --> 0 to Config.Signal.Bars
exports.mic_phone:SetJammed(src, true) --> takes their bars away until you give them back

Ces deux fonctions fonctionnent même si la couverture réseau est désactivée. GetSignal renvoie le nombre maximal de barres, de sorte qu’un script peut le lire sans se demander si la fonctionnalité est active — et le brouillage retire bel et bien le signal à un joueur, car un braquage ou une prison souhaitant neutraliser les téléphones dans un bâtiment ne devrait pas avoir à configurer tout le système au préalable. C’est l’unique cas où un téléphone peut perdre son signal sur une installation par défaut, et c’est parce qu’une autre ressource l’a expressément demandé.

Le brouillage est géré côté serveur à dessein : un state bag que le client pourrait modifier serait un state bag que le client pourrait réinitialiser. C’est ce qu’utilise un braquage, une prison ou un scénario RP : brouillez tous les occupants du bâtiment, et levez le brouillage à la fin.

Sa lecture ne coûte strictement rien via le state bag :

if (Player(src).state.phoneSignal or 4) == 0 then
-- nobody is calling the police from in here
end
  • Aucun timing n’importe tant que Enabled = true n’est pas activé ; désactivé, rien n’est mesuré.
  • Le calcul a lieu toutes les Config.Signal.Tick secondes, cinq par défaut. Il s’agit d’un simple calcul de distance sur une liste restreinte, et personne n’a besoin d’une précision à la seconde près.
  • Config.Signal.Tell détermine si le téléphone affiche un message lorsque les barres disparaissent et lorsqu’elles reviennent. Les deux sont activés : perdre le réseau nécessite une explication, et le retrouver est l’instant précis où tous les messages en attente sont délivrés.