Aller au contenu
← Toute la documentation

/// PIMPMYRUST PLUGIN

VoteCommands

Guide des réglages de VoteCommands pour cette version. Vérifiez la fiche du plugin avant de l'utiliser sur votre serveur.

Préparer votre fichier

  1. Vérifiez la version installée

    Ce guide décrit VoteCommands 0.2.0. Le configurateur doit utiliser cette même version.

  2. Récupérez les réglages

    Cliquez sur Importer, puis Depuis mon serveur. Choisissez les fichiers et confirmez leur chargement. Sélectionner un serveur ne remplace pas le document ouvert. Vous pouvez aussi importer des fichiers de cet appareil ou une configuration depuis Mes projets.

  3. Modifiez et envoyez

    Ajustez les réglages, corrigez les erreurs, puis utilisez Envoyer pour transmettre les fichiers au serveur choisi. Un conflit bloque l’envoi jusqu’à votre décision. Vous pouvez toujours exporter seulement les fichiers dont vous avez besoin.

Les envois au serveur disposent de sauvegardes privées. Enregistrer conserve votre travail dans Mes projets ; cette action n’envoie rien au serveur. Un téléchargement permet aussi de reprendre sans connexion.

Réglages de cette version

Général 10
Activer
Activé / désactivé · obligatoire

Activer ce contrôleur de vote. Chaque fichier de configuration correspond à un contrôleur indépendant, avec ses propres choix et commandes.

Chemin JSONEnabled
Démarrage automatique
Activé / désactivé · obligatoire

Lancer le premier vote après le chargement ou rechargement de ce contrôleur, en respectant DelayBeforeAutomaticStart. Désactivé, il faut le lancer manuellement ; la répétition se règle séparément.

Chemin JSONAutomaticStart
Répéter les sessions de vote
Activé / désactivé · obligatoire

Après le premier démarrage manuel ou automatique, relancer un vote à chaque TimeBetweenSessions. Désactivé, le démarrage n’ouvre qu’une seule session.

Chemin JSONAutomaticSessions
Délai avant le démarrage automatique (secondes)
Nombre · obligatoire

Attente en secondes après le chargement du contrôleur avant le premier vote automatique. Utilisé seulement si le démarrage automatique est activé.

Chemin JSONDelayBeforeAutomaticStart
Commande de démarrage du vote
Texte · obligatoire

Alias chat réservé au démarrage de ce contrôleur par un administrateur Rust, sans / initial. Choisissez un alias unique et différent de la commande d’ouverture du bulletin.

Chemin JSONCommandForStartSessions
Commande d’ouverture du vote
Texte · obligatoire

Alias chat qui ouvre le bulletin pendant une session, sans / initial. Voter reste soumis à VoteCommands.<nom du fichier>.Vote (ou au statut administrateur) ; ouvrir le bulletin ne lance pas une session.

Chemin JSONCommandForUi
Intervalle entre les débuts de session (secondes)
Nombre · obligatoire

Temps entre les débuts de votes répétés, pas délai après le résultat. N’agit que si AutomaticSessions est activé et doit dépasser VoteDurationSeconds.

Chemin JSONTimeBetweenSessions

Minimum : 0

Disposition du vote
Choix

Choisit la disposition native de ce vote. Legacy utilise les réglages UIConfiguration existants. Cette version ne nécessite pas PimpMyCUI.

Chemin JSONCuiTemplate

Valeurs possibles : operations-console, civic-ballot, relay-grid, arctic-council, broadcast-panel, legacy

Titre du vote
Valeur JSON

Titre facultatif affiché au-dessus des choix. Vide ou null utilise le titre du fichier de langue.

Chemin JSONCuiTitle
Question du vote
Valeur JSON

Question facultative affichée au-dessus du vote. Vide ou null utilise la question du fichier de langue.

Chemin JSONCuiQuestion
Déroulement et choix du vote 2
Durée du vote (secondes)
Nombre entier · obligatoire

Temps laissé aux joueurs pour voter, en secondes. À la fin, le contrôleur calcule le gagnant ; l’intervalle de répétition doit dépasser cette durée.

Chemin JSONCommandsConfiguration → VoteDurationSeconds

Minimum : 10 · Maximum : 3600

Choix proposés au vote
Liste d’objets · obligatoire

Choix proposés sur le bulletin, dans l’ordre de la liste. Chaque entrée contient son nom, son image et ses actions gagnantes ; l’image et le nom ne sont pas eux-mêmes des commandes.

Chemin JSONCommandsConfiguration → VoteCommands
Bouton de fermeture 2
Taille
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Largeur et hauteur du bouton de fermeture carré de l’interface historique, en pixels de référence CUI.

Chemin JSONUIConfiguration → CloseButtonConfiguration → Size
Adresse de l’image
Texte · obligatoire

Uniquement avec la disposition Legacy. Image du bouton qui ferme le bulletin Legacy. Fermer ne retire pas un vote déjà enregistré et ne met pas fin à la session.

Chemin JSONUIConfiguration → CloseButtonConfiguration → ImageUrl
Compte à rebours 4
Coin bas gauche
Texte · obligatoire

Uniquement avec l’interface Legacy. Place ce coin dans l’écran. X : gauche (0) à droite (1). Y : bas (0) à haut (1). Les deux coins déterminent la taille de la zone.

Chemin JSONUIConfiguration → CountDownConfiguration → AnchorMin
Coin haut droit
Texte · obligatoire

Uniquement avec l’interface Legacy. Place ce coin dans l’écran. X : gauche (0) à droite (1). Y : bas (0) à haut (1). Les deux coins déterminent la taille de la zone.

Chemin JSONUIConfiguration → CountDownConfiguration → AnchorMax
Décalage bas gauche
Texte · obligatoire

Uniquement avec l’interface Legacy. Décale ce coin en pixels. X positif déplace vers la droite, Y positif vers le haut.

Chemin JSONUIConfiguration → CountDownConfiguration → OffsetMin
Décalage haut droit
Texte · obligatoire

Uniquement avec l’interface Legacy. Décale ce coin en pixels. X positif déplace vers la droite, Y positif vers le haut.

Chemin JSONUIConfiguration → CountDownConfiguration → OffsetMax
Titre du vote 1
Hauteur du titre
Nombre · obligatoire

Uniquement avec la disposition Legacy. Part de la hauteur de la fenêtre réservée à l’en-tête historique. Exemple : 0.1 = 10 %. Elle réduit l’espace restant pour les choix.

Chemin JSONUIConfiguration → TitleConfiguration → Height
Présentation des choix 4
Marge verticale
Nombre · obligatoire

Uniquement avec la disposition Legacy. Marge verticale autour des choix, exprimée en part de la hauteur de la fenêtre. Exemple : 0.01 = 1 % par côté.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → MarginHeight
Marge horizontale
Nombre · obligatoire

Uniquement avec la disposition Legacy. Marge horizontale autour des choix, exprimée en part de la largeur de la fenêtre. Exemple : 0.01 = 1 % par côté.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → MarginWidth
Couleur de fond
Texte · obligatoire

Uniquement avec la disposition Legacy. Couleur du panneau contenant tous les choix du bulletin Legacy, derrière leurs cartes. RGBA Rust entre 0 et 1 ; dernière valeur = opacité.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → BackgroundColor
Espacement des choix
Nombre · obligatoire

Uniquement avec la disposition Legacy. Espace entre les choix, exprimé en part de leur conteneur. Exemple : 0.01 = 1 %. Plus d’espace laisse moins de largeur aux cartes.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → MarginBetweenCommands
Fenêtre du vote 4
Largeur
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Largeur de la fenêtre historique, en pixels de référence CUI. Une largeur excessive peut sortir de l’écran sur un petit affichage.

Chemin JSONUIConfiguration → WindowConfiguration → Width
Hauteur
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Hauteur de la fenêtre historique, en pixels de référence CUI. Prévoyez assez d’espace pour tous les choix du vote.

Chemin JSONUIConfiguration → WindowConfiguration → Height
Adresse de l’image de fond
Valeur JSON · obligatoire

Uniquement avec la disposition Legacy. Champ conservé mais non utilisé par le rendu de VoteCommands 0.2.0. La fenêtre utilise BackgroundColor ; changer cette adresse ne lui ajoute pas d’image de fond.

Chemin JSONUIConfiguration → WindowConfiguration → BackgroundImageUrl
Couleur de fond
Texte · obligatoire

Uniquement avec la disposition Legacy. Couleur du fond de la fenêtre du bulletin Legacy. Choisissez un contraste suffisant avec les choix. RGBA Rust entre 0 et 1 ; dernière valeur = opacité.

Chemin JSONUIConfiguration → WindowConfiguration → BackgroundColor
Compte à rebours · Style du texte 4
Taille du texte
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Taille du texte du compte à rebours dans Legacy. Agrandir améliore sa visibilité mais peut le faire déborder de sa zone ; cela ne redimensionne pas le panneau.

Chemin JSONUIConfiguration → CountDownConfiguration → LabelConfiguration → FontSize
Couleur du texte
Texte · obligatoire

Uniquement avec la disposition Legacy. Couleur du texte du compte à rebours dans Legacy. Vérifiez le contraste sur son panneau. RGBA Rust entre 0 et 1 ; dernière valeur = opacité.

Chemin JSONUIConfiguration → CountDownConfiguration → LabelConfiguration → Color
Police de caractères
Texte · obligatoire

Uniquement avec la disposition Legacy. Police du texte du compte à rebours dans Legacy. Choisissez une police disponible dans le client Rust : une police installée seulement sur votre PC ne s’affichera pas chez les joueurs.

Chemin JSONUIConfiguration → CountDownConfiguration → LabelConfiguration → Font
Alignement du texte
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Position du texte du compte à rebours à l’intérieur de son panneau Legacy, sans déplacer ce panneau. Alignement Unity : 0–2 en haut, 3–5 au milieu, 6–8 en bas ; 4 = centré.

Chemin JSONUIConfiguration → CountDownConfiguration → LabelConfiguration → TextAnchor
Titre du vote · Style du texte 4
Taille du texte
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Taille du texte du titre du bulletin dans Legacy. Agrandir améliore sa visibilité mais peut le faire déborder de sa zone ; cela ne redimensionne pas le panneau.

Chemin JSONUIConfiguration → TitleConfiguration → LabelConfiguration → FontSize
Couleur du texte
Texte · obligatoire

Uniquement avec la disposition Legacy. Couleur du texte du titre du bulletin dans Legacy. Vérifiez le contraste sur son panneau. RGBA Rust entre 0 et 1 ; dernière valeur = opacité.

Chemin JSONUIConfiguration → TitleConfiguration → LabelConfiguration → Color
Police de caractères
Texte · obligatoire

Uniquement avec la disposition Legacy. Police du texte du titre du bulletin dans Legacy. Choisissez une police disponible dans le client Rust : une police installée seulement sur votre PC ne s’affichera pas chez les joueurs.

Chemin JSONUIConfiguration → TitleConfiguration → LabelConfiguration → Font
Alignement du texte
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Position du texte du titre du bulletin à l’intérieur de son panneau Legacy, sans déplacer ce panneau. Alignement Unity : 0–2 en haut, 3–5 au milieu, 6–8 en bas ; 4 = centré.

Chemin JSONUIConfiguration → TitleConfiguration → LabelConfiguration → TextAnchor
Apparence d’un choix 4
Marge intérieure
Nombre · obligatoire

Uniquement avec la disposition Legacy. Champ historique conservé dans la configuration, mais non utilisé par le rendu de VoteCommands 0.2.0. Ne comptez pas sur ce champ pour changer les marges.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → Padding
Couleur de fond
Texte · obligatoire

Uniquement avec la disposition Legacy. Couleur du fond de chaque carte de choix dans Legacy, pas couleur de la fenêtre entière. RGBA Rust entre 0 et 1 ; dernière valeur = opacité.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → BackgroundColor
Taille de la zone du nombre de votes
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Taille réservée à l’affichage du nombre de votes dans une carte, en pixels de référence CUI.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → VotesCountSize
Hauteur des images
Nombre · obligatoire

Uniquement avec la disposition Legacy. Part de la hauteur d’une carte réservée à l’image. Exemple : 0.85 = 85 % ; le reste sert au nom du choix.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → ImageHeight
Style du nom du choix 4
Taille du texte
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Taille du texte du nom de chaque choix dans Legacy. Agrandir améliore sa visibilité mais peut le faire déborder de sa zone ; cela ne redimensionne pas le panneau.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → NameLabelConfiguration → FontSize
Couleur du texte
Texte · obligatoire

Uniquement avec la disposition Legacy. Couleur du texte du nom de chaque choix dans Legacy. Vérifiez le contraste sur son panneau. RGBA Rust entre 0 et 1 ; dernière valeur = opacité.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → NameLabelConfiguration → Color
Police de caractères
Texte · obligatoire

Uniquement avec la disposition Legacy. Police du texte du nom de chaque choix dans Legacy. Choisissez une police disponible dans le client Rust : une police installée seulement sur votre PC ne s’affichera pas chez les joueurs.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → NameLabelConfiguration → Font
Alignement du texte
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Position du texte du nom de chaque choix à l’intérieur de son panneau Legacy, sans déplacer ce panneau. Alignement Unity : 0–2 en haut, 3–5 au milieu, 6–8 en bas ; 4 = centré.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → NameLabelConfiguration → TextAnchor
Style du nombre de votes 4
Taille du texte
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Taille du texte du nombre de votes de chaque choix dans Legacy. Agrandir améliore sa visibilité mais peut le faire déborder de sa zone ; cela ne redimensionne pas le panneau.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → VotesCountLabelConfiguration → FontSize
Couleur du texte
Texte · obligatoire

Uniquement avec la disposition Legacy. Couleur du texte du nombre de votes de chaque choix dans Legacy. Vérifiez le contraste sur son panneau. RGBA Rust entre 0 et 1 ; dernière valeur = opacité.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → VotesCountLabelConfiguration → Color
Police de caractères
Texte · obligatoire

Uniquement avec la disposition Legacy. Police du texte du nombre de votes de chaque choix dans Legacy. Choisissez une police disponible dans le client Rust : une police installée seulement sur votre PC ne s’affichera pas chez les joueurs.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → VotesCountLabelConfiguration → Font
Alignement du texte
Nombre entier · obligatoire

Uniquement avec la disposition Legacy. Position du texte du nombre de votes de chaque choix à l’intérieur de son panneau Legacy, sans déplacer ce panneau. Alignement Unity : 0–2 en haut, 3–5 au milieu, 6–8 en bas ; 4 = centré.

Chemin JSONUIConfiguration → VoteCommandsConfiguration → VoteCommandConfiguration → VotesCountLabelConfiguration → TextAnchor

Instructions du plugin

VoteCommands 0.2.0 — guide

Cette version native propose cinq interfaces issues des templates de la bêta 1.0.0, sans PimpMyCUI. Les correctifs compatibles de la bêta sont reportés ; les règles de vote et le calendrier restent ceux de la LTS 0.1.3. Ce candidat est local et n’a pas été publié.

Configurer les choix du vote

Dans Vote, le tableau présente chaque choix et le nombre de commandes ou d’appels de plugins actifs. Cliquez sur son nom pour modifier sa présentation, ou sur Actions pour définir ce qui s’exécute si ce choix gagne. Ajouter un choix crée une nouvelle option. Une action ajoutée reste désactivée tant que vous ne l’activez pas ; vérifiez ses paramètres avant de l’utiliser.

Choisir l’interface

Dans chaque fichier oxide/config/VoteCommands/<nom>.json, ajoutez ou modifiez :

"CuiTemplate": "operations-console",
"CuiTitle": "Politique des blueprints",
"CuiQuestion": "Quelle règle souhaitez-vous pour le prochain wipe ?"

Les valeurs proposées sont operations-console (défaut), civic-ballot, relay-grid, arctic-council et broadcast-panel. legacy conserve l’ancienne interface personnalisée via UIConfiguration. Gardez cette section existante. Un fichier sans les nouveaux champs utilise automatiquement le template par défaut. Un nom de template invalide est signalé en console ; le fichier n’est pas chargé.

CuiTitle et CuiQuestion sont facultatifs : absents, vides ou null, ils utilisent les textes de langue. Après modification, rechargez avec oxide.reload VoteCommands. Cela arrête les votes en cours sans action gagnante. Chaque contrôleur peut avoir son propre template ; aucun fichier CUI ni plugin supplémentaire n’est nécessaire.

La CUI affiche trois choix par page, leur total et leur part des votes. Les flèches donnent accès aux choix suivants. Le choix du joueur reste indiqué après réouverture. Les images viennent de ImageUrl dans chaque option ; une URL vide est acceptée. Ajoutez ImageAspectRatio avec largeur/hauteur (exemple : 1.5 pour 900 × 600). Sa valeur par défaut est 1, et les images gardent leurs proportions.

Installation et export

Sauvegardez le plugin, les configurations et le fichier de langue. Déchargez VoteCommands, installez les JSON dans le dossier oxide/config/VoteCommands/, puis installez VoteCommands.cs dans oxide/plugins/. Sur Carbon, utilisez carbon/config/VoteCommands/ et carbon/plugins/.

Il n’y a pas de fichier unique `oxide/config/VoteCommands.json`. Un fichier JSON configure un vote. L’éditeur exporte Example.json : placez-le dans oxide/config/VoteCommands/Example.json, ou renommez-le avec un nom unique. Ne remplacez pas un fichier personnalisé sans comparaison/sauvegarde.

Si ce dossier ne contient aucun JSON, y compris dans ses sous-dossiers, le plugin crée Example.json. Il ne remplace jamais un fichier existant, même invalide. Consultez les erreurs de la console au chargement.

Premier vote

L’exemple est manuel, activé et ses commandes gagnantes sont désactivées. En tant qu’administrateur, saisissez /vote_start, puis /vote, choisissez une option et attendez 60 secondes.

Pour autoriser les joueurs :

oxide.grant group default VoteCommands.Example.Vote

La permission utilise le nom exact du fichier sans .json. Le droit VoteCommands.Example.Start ne permet pas à un non-administrateur de lancer un vote dans cette version. Les joueurs peuvent voir le scrutin mais ont besoin du droit Vote pour participer.

Réglages

ChampRôle
EnabledCharger ce vote si activé.
CommandForStartSessionsCommande admin, sans /.
CommandForUiCommande d’ouverture, sans /.
CommandsConfiguration.VoteDurationSecondsDurée d’un scrutin en secondes.
AutomaticStartDémarrer automatiquement après chargement.
DelayBeforeAutomaticStartDélai initial en secondes.
AutomaticSessionsRépéter les sessions une fois démarrées.
TimeBetweenSessionsSecondes entre les débuts de sessions.

Pour un vote de 60 secondes toutes les 20 minutes, utilisez une durée de 60, un intervalle de 1200, AutomaticSessions=true et AutomaticStart=true si le cycle doit démarrer au chargement. L’intervalle doit dépasser la durée du vote. Les commandes et noms de fichiers doivent être uniques.

Conservez la section UIConfiguration. Après édition, exécutez oxide.reload VoteCommands : les sessions en cours s’arrêtent sans exécuter d’action gagnante et le calendrier redémarre.

Options et actions

Les contrôles repris de la bêta rejettent les identifiants de commandes chat invalides (32 caractères maximum), les callbacks invalides (64 caractères maximum) et les commandes serveur activées contenant CR, LF ou NUL, ou dépassant 256 caractères. Les identifiants acceptent lettres, chiffres, point, tiret et underscore. Une image renseignée doit être une URL HTTP ou HTTPS directe, sans identifiants de connexion ni espaces. HTTPS est conseillé ; HTTP reste accepté par la CUI native. Les fichiers existants restent intacts ; corrigez un champ signalé puis rechargez.

Chaque entrée de CommandsConfiguration.VoteCommands a un nom, une URL d’image directe et des actions facultatives. Chaque commande/callback a son propre Enabled. Testez une commande dans la console avant de l’activer.

{
  "Name": "Day",
  "ImageUrl": "https://example.com/day.png",
  "PluginCallbacks": null,
  "ServerCommands": [{ "Enabled": true, "Command": "env.time 6" }]
}

Ce fragment est une option, pas une configuration complète. Remplacez l’URL par une image existante. PluginCallbacks accepte un PluginName installé et un PluginCallback réel sans argument. Les callbacks activés sont exécutés avant les commandes serveur.

Exemples et résultat

  • Example.json : exemple générique sans action active.
  • Example_SkipNight.json : vote jour/nuit ; l’option Day peut exécuter env.time 6 quand cet exemple est activé. Il ne détecte pas le coucher du soleil.
  • Example_NextMapWipe.json : enregistre un choix ; ne change pas la map ni le wipe.
  • Example_EventManager.json : nécessite EventManager compatible et l’adaptateur facultatif EventManagerWrapper.cs. Configurez vos événements dans EventManager et utilisez leurs vrais noms. Le plugin principal n’exige pas EventManager.

Seul l’exemple générique est activé par défaut. Chaque joueur vote une fois. Le choix le plus voté gagne ; une égalité avec des votes retient le premier choix à égalité dans l’ordre du fichier. Zéro vote : aucune commande ni callback n’est exécuté, même sur un serveur vide. Le cycle automatique continue à l’intervalle configuré.

Vérification et support

Vérifiez chargement, accès non-admin, images, compte à rebours, réouverture et plusieurs sessions automatiques. Testez une commande simple, puis une session sans vote. Les effets de vos hooks et le rendu dépendent de votre serveur et des plugins cibles. Pour le support, fournissez version, nom de fichier et erreur console, en retirant les secrets et détails privés.

Installer les fichiers

Avec un serveur connecté, cliquez sur Envoyer dans le configurateur. Le résultat indique si les fichiers ont été envoyés et si le plugin a été rechargé. Sans RCON, rechargez le plugin depuis votre panneau serveur après l’envoi.

Sans serveur connecté : Conservez une copie des fichiers actuels. Placez chaque fichier exporté dans le dossier indiqué avant l’export, ou reprenez les chemins du ZIP. Ne placez pas les données ou les traductions dans le dossier config.

Suivez les instructions du plugin ci-dessus pour ses dépendances et son rechargement. L’export ne connecte pas le site à votre serveur.

Guide de configuration et d’envoi →