MrPoulpi Labs
PMMS

Scripts disponibles

EN
Centre de documentation

Modèles, écrans et presets

Ajouter des modèles utilisables comme lecteurs, afficher la vidéo sur un renderTarget ou un scaleform, définir des presets et placer des lecteurs par défaut qui démarrent avec PMMS.

But : choisir quelles entités servent de lecteurs, où s’affiche la vidéo, et quels médias sont proposés. Fichier : pmms/config.lua, ou en jeu avec la permission pmms.manage.

Ajouter un modèle

Chaque entrée de Config.models est indexée par le hash du modèle (syntaxe `nom` de CfxLua) :

Config.models = {
    [`prop_boombox_01`] = {
        label = "Boombox"
    },
    [`prop_tv_flat_01`] = {
        label = "TV",
        renderTarget = "tvscreen"
    },
    [`pbus2`] = {
        attenuation = { sameRoom = 1.5, diffRoom = 6 },
        range = 100,
        isVehicle = false
    },
}
Champ Effet
label Nom affiché dans le panneau.
renderTarget Nom de la cible de rendu de l’écran du modèle : la vidéo s’y affiche via DUI. Sans ce champ, la vidéo s’affiche dans un cadre NUI au-dessus de l’entité.
filter, volume, attenuation, diffRoomVolume, range Réglages proposés par défaut pour ce modèle.
isVehicle Traiter l’entité comme un véhicule (l’extérieur compte comme une autre pièce) ou non. Absent : déterminé automatiquement. pbus2 et blimp3 sont livrés à false, pour être entendus de l’extérieur comme des objets.
scaleform Écran scaleform associé (position, rotation, échelle).

Résultat : après restart pmms, l’entité apparaît dans le panneau quand vous êtes à moins de Config.maxDiscoveryDistance.

Le nom du renderTarget dépend du modèle : il doit correspondre à une cible de rendu réellement présente dans le modèle. Un nom faux laisse l’écran noir sans erreur explicite. Les 102 écrans livrés utilisent par exemple tvscreen, ex_tvscreen, cinscreen, big_disp, tablet ou npcphone.

Enregistrer un modèle en jeu

Avec pmms.manage, le panneau permet d’enregistrer les réglages de l’entité ciblée pour le modèle ou pour cette entité. En console serveur :

pmms_add prop_boombox_01 Enceinte

Ces réglages sont écrits dans models.json (modèles) et defaultMediaPlayers.json (entités), et rechargés au démarrage par-dessus config.lua. Les exports addModelPermanently et addEntityPermanently font la même chose depuis un script (voir API).

Presets

Un preset est un média prédéfini, choisi par son nom :

Config.presets = {
    ['accueil'] = { url = 'https://exemple.fr/musique/accueil.ogg', title = 'Musique d’accueil', filter = false, video = false },
    ['jt'] = { url = 'https://www.youtube.com/watch?v=XXXXXXXXXXX', title = 'Journal', video = true },
}

exemple.fr et l’identifiant YouTube sont des exemples. url est obligatoire ; title, filter et video sont facultatifs. Le joueur tape /pmms_play accueil, ou /pmms_play random pour un preset au hasard ; /pmms_presets les liste dans le chat.

Sans la permission pmms.customUrl, un joueur ne peut jouer que des presets.

Lecteurs par défaut

Les lecteurs de Config.defaultMediaPlayers sont connus du serveur dès le démarrage :

Config.defaultMediaPlayers = {
    {
        position = vector3(-1388.5, -618.2, 30.8),
        label = "Bar — enceinte",
        spawn = true,
        model = `prop_boombox_01`,
        rotation = vector3(0.0, 0.0, 120.0),
        url = 'accueil',
        volume = 60,
        loop = false,
        filter = false,
        locked = true,
        range = 25
    },
}

Les coordonnées sont un exemple.

Champ Effet
position Obligatoire. Position de l’entité ; sert aussi d’identifiant du lecteur.
spawn true : l’entité est créée autour des joueurs à moins de Config.defaultMediaPlayerSpawnDistance. Absent : une entité doit déjà exister à cette position exacte.
model, rotation, invisible Entité créée quand spawn = true ; model absent : Config.defaultModel.
url URL, nom de preset ou random. Présent : le média démarre avec la ressource.
title, volume, offset, loop, filter, video, videoSize, muted, attenuation, diffRoomVolume, range Réglages du média (voir options de lecture).
locked true : seuls les joueurs avec pmms.manage peuvent contrôler ce lecteur.
scaleform Écran scaleform : { position, rotation, scale, standalone, attached }.

Résultat : au démarrage de pmms, l’enceinte apparaît au bar et joue le preset accueil, verrouillée pour les joueurs sans pmms.manage.

Écran scaleform libre

Pour afficher une vidéo sur un mur ou un panneau sans écran dans le modèle, utilisez un scaleform. Le scaleform livré est pmms_texture_renderer (stream/pmms_texture_renderer.gfx). Le panneau propose « Ma position » pour remplir position et rotation depuis votre personnage ; l’export serveur startScaleform fait de même par script.

Erreurs fréquentes

  • Entité absente du panneau : modèle non listé, entité à plus de maxDiscoveryDistance, ou joueur sans pmms.anyEntity.
  • Lecteur par défaut sans effet avec spawn absent : aucune entité n’existe exactement à position.
  • Écran noir : renderTarget erroné pour ce modèle, ou page DUI injoignable.
  • Réglages perdus après mise à jour : models.json et defaultMediaPlayers.json écrasés par les fichiers vides de la nouvelle archive.

Rechercher

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