MrPoulpi Labs
PMMS

Scripts disponibles

EN
Centre de documentation

Intégrations

Brancher vos notifications, configurer les logs Discord et le webhook, traduire les textes, héberger la page DUI, servir des médias locaux avec httpmanager et régler les émetteurs sonores.

But : adapter PMMS à votre serveur sans toucher aux fichiers protégés. Fichiers : integrations/client.lua, integrations/server.lua, config.server.lua, locales.lua, staticEmitters.lua et server.cfg.

Notifications

Toutes les notifications de PMMS passent par PMMSBridge.notify(args) dans integrations/client.lua. Par défaut, elle les affiche dans l’interface NUI de PMMS. Les champs utilisés sont args.text, args.title (nom de la ressource par défaut) et args.duration (Config.notificationDuration par défaut).

Exemple avec ox_lib :

function PMMSBridge.notify(args)
    if type(args) ~= "table" then
        args = {}
    end

    lib.notify({
        title = args.title or "Radio",
        description = args.text,
        duration = args.duration or Config.notificationDuration
    })
end

Ajoutez alors '@ox_lib/init.lua' aux shared_scripts du manifeste, ou remplacez lib.notify par l’export de votre script de notifications.

Résultat : « No media player nearby » et les messages d’erreur s’affichent dans votre système de notifications. Config.showNotifications = false masque la plupart d’entre elles (voir Configuration).

Logs Discord

Le serveur envoie un embed « Lien PMMS lancé » à chaque lecture acceptée (« Demande de lecture »), à chaque ajout en file d’attente et à chaque lancement par le serveur ou un export (« Lancement serveur/export »), y compris les lecteurs par défaut au démarrage et les copies de lecteurs.

  1. Dans server.cfg, après exec @pmms/permissions.cfg :
set pmms_webhook "https://discord.com/api/webhooks/…"
  1. Dans config.server.lua, réglez logsEnabled, logName, logColor et includeIdentifiers (voir Configuration).

L’embed contient l’action, le nom et l’ID du joueur, le handle, le titre, l’URL, la position, le volume, la vidéo et, si includeIdentifiers = true, tous les identifiants du joueur. Les libellés de l’embed sont écrits en français dans integrations/server.lua ; modifiez ce fichier pour changer la mise en forme.

Textes

locales.lua associe chaque texte d’origine à sa traduction. Modifiez la valeur à droite, gardez la clé à gauche et les marqueurs %s, %d :

["No media player nearby"] = "Aucun lecteur à proximité",
["You must specify a URL to play."] = "Indiquez une URL à lire.",

Les valeurs livrées reprennent les textes d’origine, majoritairement en anglais. Les textes du panneau (boutons, libellés) sont dans ui/index.html et ui/script.js.

Page DUI

Pour afficher une vidéo sur un écran (modèle avec renderTarget ou scaleform), chaque client ouvre un navigateur DUI sur une page web :

  • média en https:// : Config.dui.urls.https, livré sur https://pmms-dui.mrpoulpiii.fr ;
  • média en http:// : Config.dui.urls.http s’il est défini, sinon http://<adresse du serveur>/pmms/dui/, que l’archive ne fournit pas.

Si la page ne répond pas dans Config.dui.timeout (30 s), F8 affiche « Failed to initialize DUI browser » et l’écran reste noir. Le code de cette page n’est pas dans l’archive.

Héberger votre propre page : la page DUI de la ressource d’origine est publiée par kibook (dépôt kibook/pmms-dui). Déployez-la sur votre hébergement HTTPS, puis :

Config.dui.urls.https = "https://dui.mon-serveur.fr"

dui.mon-serveur.fr est un exemple. Vérifiez que cette page est compatible avec votre version de PMMS avant de basculer.

httpmanager et médias locaux

pmms déclare httpmanager comme gestionnaire HTTP de la ressource : les fichiers placés dans pmms/http/ sont servis à l’adresse http://<adresse du serveur>/pmms/…. Un média dont l’URL ne commence ni par http:// ni par https:// est cherché dans pmms/http/media/. Ce dossier n’existe pas dans l’archive : créez-le pour servir vos propres fichiers.

/pmms_play annonce.ogg

lit pmms/http/media/annonce.ogg. Le nom de fichier n’étant pas une URL autorisée, il faut pmms.anyUrl, un motif adapté dans Config.allowedUrls, ou un preset dont l’url est ce nom. Ces médias passent en http:// : sur un écran, ils demandent une page DUI http (voir plus haut).

httpmanager publie aussi, sur sa propre adresse, une page password/ et une route de génération de hash utilisées par ses fonctions d’authentification.

Émetteurs sonores

staticEmitters.lua liste 301 émetteurs sonores de la carte GTA (musique de bars, d’ambiance…). Avec Config.autoDisableStaticEmitters = true, ils sont coupés quand un média est audible, puis rétablis selon leur valeur enabled. Passez enabled = false à un émetteur pour qu’il reste coupé en permanence.

Services externes contactés

Service Quand Par qui
Page DUI (Config.dui.urls.https) Vidéo https:// sur un écran Chaque client
Adresse du média Chaque lecture Chaque client à portée
redm.khzae.net (bruit de phonographe) Filtre activé sur RedM Chaque client à portée
Webhook Discord Logs activés Le serveur

Erreurs fréquentes

  • Notifications en double : votre PMMSBridge.notify appelle votre système et le SendNUIMessage d’origine.
  • lib est nil dans integrations/client.lua : ox_lib n’est pas chargé par le manifeste de pmms.
  • Aucun log : webhook vide, déclaré avant le exec, ou logsEnabled = false.
  • Écran noir avec un média http:// : aucune page DUI http n’est disponible.

Rechercher

Tapez un terme : paramètre, export, erreur…