/// 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
- Vérifiez la version installée
Ce guide décrit VoteCommands 0.2.0. Le configurateur doit utiliser cette même version.
- 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.
- 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 JSON
Enabled - 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 JSON
AutomaticStart - 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 JSON
AutomaticSessions - 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 JSON
DelayBeforeAutomaticStart - 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 JSON
CommandForStartSessions - 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 JSON
CommandForUi - 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 JSON
TimeBetweenSessionsMinimum : 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 JSON
CuiTemplateValeurs 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 JSON
CuiTitle - Question du vote
- Valeur JSON
Question facultative affichée au-dessus du vote. Vide ou null utilise la question du fichier de langue.
Chemin JSON
CuiQuestion
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 JSON
CommandsConfiguration → VoteDurationSecondsMinimum : 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 JSON
CommandsConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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 JSON
UIConfiguration → 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.VoteLa 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
| Champ | Rôle |
|---|---|
Enabled | Charger ce vote si activé. |
CommandForStartSessions | Commande admin, sans /. |
CommandForUi | Commande d’ouverture, sans /. |
CommandsConfiguration.VoteDurationSeconds | Durée d’un scrutin en secondes. |
AutomaticStart | Démarrer automatiquement après chargement. |
DelayBeforeAutomaticStart | Délai initial en secondes. |
AutomaticSessions | Répéter les sessions une fois démarrées. |
TimeBetweenSessions | Secondes 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écuterenv.time 6quand 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 facultatifEventManagerWrapper.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.