Aller au contenu

Service et positionsJeu

La prise de service synchronisée entre le jeu et SuperMDT (dont lb-phone), le réglage de prise de service depuis le MDT, les positions de la carte en direct, le point GPS des appels et le bouton panique en jeu.

Sur cette page05
  1. Du jeu vers le MDT
  2. Du MDT vers le jeu
  3. Les positions
  4. Le point GPS des appels
  5. Le bouton panique en jeu

Avec l’intégration au jeu, la prise de service est la même en jeu et dans le MDT : un agent qui prend son service au vestiaire apparaît en service dans SuperMDT, et inversement. Les positions des agents en service alimentent la carte en direct. Le module lui-même (pointage, heures, tableau des agents) est décrit dans Prise de service.

Tu n’as rien à configurer, à part relier tes jobs à tes services. La passerelle suit le service tel que ton framework le connaît :

Framework Ce que la passerelle écoute
ESX chargement du personnage, changement de métier, déconnexion ; l’état onDuty du métier
QBCore chargement et déchargement du personnage, changement de métier, QBCore:Server:SetDuty (que qb-core déclenche aussi après sa propre bascule de service)
Qbox les mêmes événements que QBCore, lus par qbx_core

Dès qu’un personnage passe en service dans un métier relié, SuperMDT ouvre sa session de service dans le service correspondant (journal : « a pris son service depuis le jeu »). La fin de service, une déconnexion ou un changement de personnage la terminent.

La passerelle ne se fie pas aux événements seuls : elle relit l’état des joueurs toutes les 15 secondes, ce qui rattrape un script de métier qui change le service sans prévenir.

Un vestiaire, un point de service, un menu radial ou une commande /duty : s’ils changent le service dans le framework, la passerelle le voit. C’est le cas de l’application « Services » de lb-phone, qui ne gère pas le service elle-même mais passe par le framework.

Un script qui garde son propre état de service, sans jamais le changer dans le framework, n’est pas vu.

Si ton serveur n’a aucun moyen de prendre son service, la passerelle peut fournir une commande : set supermdt_duty_command "service" dans server.cfg crée /service, qui bascule le service du métier actuel dans le framework.

Le personnage est bien en service dans le jeu, mais SuperMDT refuse de l’enregistrer et le joueur est prévenu par un message en jeu :

Message Cause
« ton compte n’est lié à aucun membre du MDT » Compte de jeu non relié
« tu n’es pas affecté à ce service » Le membre n’est pas affecté au service du métier
« tu es mis à pied dans ce service » Le membre est mis à pied

Ses positions ne sont alors pas envoyées non plus.

Le réglage Prise de service depuis le MDT se trouve dans Configuration › Services, sur la fiche de chaque service :

Réglage Effet
Seulement si connecté en jeu Le bouton du MDT ne marche que si le personnage de ce service est en jeu ; il le met aussi en service en jeu. C’est le réglage par défaut avec le jeu.
Autorisée Le bouton du MDT prend et termine le service, en jeu ou non.
Jeu uniquement Le service se prend en jeu ; le MDT ne fait que l’afficher.

Une prise ou une fin de service faite dans le MDT est appliquée au personnage en jeu dans les 30 secondes. Dans tous les cas, un superviseur peut terminer la session d’un agent.

Les positions des agents alimentent la carte en direct. Seuls les joueurs en service dans un métier relié à un service envoient leur position ; un civil, ou un agent hors service, n’apparaît jamais.

  • Intervalle : de 10 à 300 secondes, réglé avec la carte en direct (rappelé dans Configuration › Jeu › Positions). La passerelle l’applique sans redémarrer.
  • Économie : une position n’est renvoyée que si le joueur a bougé de plus de 25 mètres, ou après deux intervalles. Les occupants d’un même véhicule partagent une lecture.
  • Confidentialité : les positions ne sont jamais enregistrées dans la base de SuperMDT. Elles restent en mémoire dans le relais de la carte, qui oublie un joueur après trois intervalles sans nouvelles.

Il faut OneSync (onesync on) et des artefacts FXServer compatibles Node 22 : sans eux, tout le reste marche, mais pas les positions.

Ce que tu vois dans supermdt status Cause Que faire
« Positions : non » Carte en direct désactivée, relais non configuré, ou OneSync coupé Activer la carte en direct ; onesync on.
« Relais : …, connecté : non » Pare-feu sortant, artefact trop ancien supermdt log donne le code de fermeture.
Positions « ignorées » Joueur en service en jeu mais pas dans le MDT (refus, compte non relié) Voir le message reçu par le joueur à sa prise de service.

Quand ton unité est engagée sur un appel qui a un point sur la carte (depuis le dispatch, la fiche de l’appel ou la tablette), la passerelle pose en jeu, chez chaque membre de l’unité connecté, un repère sur la position de l’appel et un itinéraire GPS coloré (bleu par défaut). Le repère s’appelle « Appel n° 12 — Vol à main armée » et une petite notification s’affiche : « Itinéraire vers l’appel n° 12 ».

  • Ton repère à toi n’est jamais touché : c’est un repère à part, pas le point violet que tu poses sur la carte du jeu.
  • Un seul itinéraire SuperMDT à la fois : le dernier choisi, engagement ou Placer le point. Si ton unité est engagée ailleurs ensuite, l’itinéraire suit l’engagement ; un Placer le point plus récent reprend la main.
  • Il disparaît au désengagement de ton unité, à la clôture ou au transfert de l’appel, et quand tu arrives sur place (à 30 m, réglable).
  • Tu peux le retirer toi-même : menu SuperMDT (F9) › Retirer le point, ou une touche que tu choisis (« Retirer le point GPS SuperMDT » dans Paramètres › Raccourcis clavier › FiveM, aucune par défaut). Le retrait est immédiat et ne concerne que toi ; le point ne revient pas pour le même choix, comme à l’arrivée. C’est la seule façon de retirer un point posé avec Placer le point. Retirer le point d’un engagement ne désengage pas ton unité : elle reste sur l’appel dans le MDT.
  • Il suit l’appel : si le lieu de l’appel est modifié, le point se déplace.

Le point arrive en une à deux secondes par le relais de la carte en direct ; sans relais, en 30 secondes au plus (la passerelle relit la liste à chaque sondage). Aucune requête n’est faite joueur par joueur : la passerelle reçoit une seule liste pour tout le serveur.

Il faut l’intégration au jeu et un joueur connecté, dont le compte est relié au membre. Pour poser le point d’un appel sans t’engager, utilise Placer le point sur la fiche de l’appel, dans le dispatch ou dans le menu de l’appel sur la carte.

Dans config_shared.lua, bloc Config.Waypoints :

Réglage Par défaut Effet
enabled true false : ni point ni itinéraire (le serveur ne demande même pas la liste)
sprite 1 l’icône du point (1 : cercle standard)
colour 3 la couleur du point (3 : bleu) ; évite le violet (repère du joueur) et le rouge (bouton panique)
routeColour 3 la couleur de l’itinéraire GPS (3 : bleu)
scale 1.0 la taille du point
notify true la notification « Itinéraire vers l’appel n° 12 » quand un point est posé
clearOnArrival true retirer le point quand le joueur arrive sur place ; il ne revient pas pour le même appel, sauf si l’appel est déplacé ou choisi de nouveau dans le MDT
arriveDistance 30.0 la distance d’arrivée, en mètres
clearKey '' la touche par défaut de « Retirer le point » (commande supermdt_waypoint_clear) : aucune ; chaque joueur peut en choisir une

Les numéros d’icône et de couleur sont ceux de la liste des blips de FiveM. Dans la console du serveur, supermdt status affiche une ligne « Points GPS des appels » : activé ou non, le nombre de points suivis et de joueurs concernés, et d’où vient la dernière liste (relais ou sondage).

  • Côté joueur, dans la console F8 : supermdt_client affiche l’état du point GPS (actif, affiché, appel suivi, origine : engagement ou Placer le point, dernier événement). supermdt_client debug active les traces du point GPS dans la console, jusqu’au prochain redémarrage du jeu ; la même commande les coupe.
  • Côté serveur, supermdt status donne la ligne « Points GPS des appels » (ci-dessus). Pour le détail (listes reçues, points envoyés et retirés, joueur par joueur), active le journal détaillé avec le convar supermdt_debug (voir Les convars). Déclaré avec setr supermdt_debug true, il active aussi les traces du point GPS chez les joueurs.
  • Rien n’apparaît : vérifie que le compte du joueur est relié au membre, que son personnage est connecté, et que Config.Waypoints.enabled vaut true. Si le joueur est déjà arrivé sur place (clearOnArrival) ou a retiré le point (Retirer le point), le point ne revient pas pour le même appel : un nouveau Placer le point le repose.

Un agent en service peut déclencher le bouton panique sans ouvrir la tablette :

  • la commande /panique ;
  • une touche : F10 par défaut sur QBCore et Qbox (libre dans GTA V et hors des raccourcis F6 et F7) ; aucune par défaut sur ESX, où F10 est prise par esx_adminmenu. Chaque joueur la choisit ou la change dans Paramètres › Raccourcis clavier › FiveM › « Bouton panique SuperMDT (alerte au dispatch) ». Le serveur peut la changer ou la retirer (Config.Panic.key). La touche est indépendante de la commande (elle est rattachée à la commande interne supermdt_panic) : on peut garder l’une sans l’autre.

La commande et la touche se coupent de deux façons :

  • côté serveur de jeu : command = '' (la commande n’est pas enregistrée du tout) ou keyEnabled = false (pas de touche) dans Config.Panic ;
  • côté MDT, service par service : Commande en jeu et Touche en jeu dans Configuration › Opérations › Bouton panique (voir Bouton panique). Le joueur qui les utilise reçoit alors « ton service a désactivé la commande (ou la touche) de panique en jeu ». Le MDT et la tablette restent disponibles.

La passerelle lit la position du personnage côté serveur (il faut OneSync) et l’envoie avec l’alerte. SuperMDT crée un appel urgent, ou rattache l’alerte à l’appel où l’unité du joueur est déjà engagée.

Dans config_shared.lua, bloc Config.Panic :

Réglage Par défaut Effet
enabled true la commande et la touche existent
command 'panique' le nom de la commande ; '' : pas de commande de chat
keyEnabled true la touche existe (commande interne supermdt_panic)
key 'F10' la touche par défaut ('' : aucune ; sur ESX, Config.FrameworkKeys.esx.panic la remplace, vide par défaut). FiveM retient la touche par commande : la changer ne modifie pas celle des joueurs qui l’ont déjà enregistrée
confirm false true : il faut deux appuis en moins de confirmWindowMs (2 000 ms) pour déclencher
cooldownMs 3000 délai minimal entre deux appuis pris en compte, côté joueur
sound true un son discret quand SuperMDT répond
alertSound true le son des alertes des collègues (voir plus bas)
alertRoute true l’itinéraire GPS vers le point d’une alerte
alertBlipMinutes 10 durée maximale du point clignotant sur la carte du jeu

Dans config.lua, Config.PanicServer.cooldownMs (5000) limite chaque joueur à une alerte toutes les 5 secondes côté serveur, en plus du délai minimal réglé pour le service dans SuperMDT (Configuration › Opérations › Bouton panique).

Message Cause
« alerte panique envoyée au dispatch (appel #N) » Un appel urgent a été créé
« alerte panique envoyée au dispatch, sur ton appel en cours (#N) » L’alerte est rattachée à l’appel où son unité est engagée
« prends ton service pour utiliser le bouton panique » Le personnage n’est pas en service
« tu n’as pas la permission d’utiliser le bouton panique » Son grade n’a pas Bouton panique › Déclencher
« ton métier n’est relié à aucun service du MDT » Métier non relié
« ton compte de jeu n’est relié à aucun membre du MDT » Compte non relié
« le bouton panique est désactivé dans ton service » Bouton coupé dans Configuration › Opérations
« ton service a désactivé la commande de panique en jeu » Commande en jeu coupée dans Configuration › Opérations
« ton service a désactivé la touche de panique en jeu » Touche en jeu coupée dans Configuration › Opérations
« ton alerte panique est déjà en cours » Une seule alerte ouverte par agent
« alerte panique déjà envoyée, réessaie dans N s » Délai minimal entre deux alertes
« l’alerte panique n’a pas pu être envoyée, réessaie » SuperMDT injoignable ou erreur passagère

Dans la console du serveur, supermdt status affiche une ligne « Bouton panique » : disponible ou non, et le nombre d’alertes envoyées, acceptées et refusées.

Quand un agent déclenche le bouton panique, les autres agents en service du même service le voient aussi en jeu, même sans ouvrir la tablette et même panneau de dispatch rapide masqué :

  • une notification rouge qui clignote à l’écran : « Détresse : nom (unité) », l’appel, et la distance et la direction depuis ton personnage (« à 420 m au nord-est ») ;
  • une carte rouge en tête du dispatch rapide (bord qui clignote, pastille qui pulse, distance et flèche vers l’agent) ;
  • un son d’alerte (trois bips, au plus une salve toutes les 5 secondes). Chacun le coupe ou le rétablit avec /panique son (sans commande de chat : /supermdt_panic_sound), choix retenu sur son PC ;
  • un point rouge clignotant sur la carte du jeu, avec l’itinéraire GPS vers l’alerte la plus récente.

Tout disparaît dès que l’alerte est acquittée ou close (le point, au plus tard après alertBlipMinutes). Rien n’arrive aux joueurs hors service, ni à ceux d’un autre service, ni à l’agent en détresse lui-même ; trois alertes au plus à la fois. Il faut le dispatch rapide activé par l’organisation (Configuration › Jeu › En jeu) et Config.QuickDispatch.panicAlerts = true (par défaut) : la page du panneau reste alors chargée en service, invisible tant qu’il n’y a pas d’alerte.