Bon ben voila ça fait une semaine que je taf en dehors des heures du boulot, sur ce petit projet.
Si vous avez des questions, pas de problème, je vous répondrez.
Voila en espérant que ça serve, et que l'on puissent l'intégrer dur notre serveur match.
Présentation :
C'est un plugin pour des serveurs de Match CSS, il s'appelle Neuro War Menu, je sais ce n'est pas très recherché mais c'est comme ça

Ce plugin permet aux personnes autorisées d'afficher un menu qui leur permet de :
- Lancer des Wars avec différentes configurations de match (Ligue-France, ClanCalendar, ESL, etc...).
- Changer de map.
- Exécuter de nombreuses commandes serveurs.
- Kicker ou bannir des joueurs qui viendrait perturber un match.
- Gérer les admins depuis le jeu.
Et tout ceci sans que l'administrateur du serveur ne donne le mot de passe RCON.
Sinon ce plugin est totalement et surtout facilement configurable, aussi bien par les différentes ligues qui peuvent êtres jouées, que pour les maps ou les commandes serveurs. Des exemples seront donnés par la suite.
Pourquoi ? :
Depuis un certain temps que l'on fait des matchs sur Lique France, ClanCalendar, etc... on a eu quelques petits problèmes :
- Pour certains, le problème était de retenir toute les commandes pour charger la config d'un match, le round cut, lancer le match, arreter le match, etc...
- Ou encore certains problèmes qui pouvaient survenir pendant les matchs, ils ne savaient comment réagir ou ne le pouvaient tout simplement pas.
- L'autre inconvénient était cette fois ci pour l'administrateur, qui devait donner le mot de passe RCON du serveur pour pouvoir exécuter les commandes.
C'est pour cela que depuis un moment je réfléchissais dans le développement d'un plugin pour ne plus avoir ces problèmes.
Certains vont me dire, pourquoi ne pas utiliser un plugin de match du style CSSMatch ou ScriptMatch ?
Ben parce que certaines ligues n'acceptent pas de plugins de ce genre, que ces plugins consomment des ressources serveur pendant le match.
Téléchargement :
Le lien : Neuro War Menu
Version : 0.1b 20080612
Code source (pour ceux qui veulent voir) : le lien
Ligues intégrées :
- Ligue France - version : Saison 8
- ClanCalendar
- Clan France - version : 2.6
- ESL - version : 3.7
Si lors de l'utilisation, des bugs surviennent, veuillez m'en faire part, si possible me donner le log du serveur.
Coté technique :
- Le plugin est développé en Python (programmation Objet et rapide en exécution), environ 1200 lignes de code.
- Le plugin nécessite EventScripts 2.0.0.247a. (par la suite, je verrai pour le programmer en C++ et les fonctions de Valve pour qu'il n'utilise plus EventScripts).
- Les menus de la partie Wars, sont créés au chargement du plugin, donc aucune ressources n'est utilisées par la suite.
- Les menus de la partie Admins, sont créés dynamiquement et sont automatiquement supprimés lorsque l'admin quitte le menu, ou à chaque changememt de map, tout ceci pour ne pas consommer de ressources serveur.
Installation :
- Télécharger le plugin.
- Extraire les fichiers de l'archive, dans le dossier cstrike de votre serveur.
- Editer le fichier : /cstrike/cfg/neuro_war_menu/admins.db pour définir les personnes autorisées à utiliser le plugin.
- Ajouter es_load neuro_war_menu au fichier autoexec.cfg
Liste des choses à faire :
- Ajouter la fonction "kicker" au menu admin.
- Ajouter la fonction "bannir" au menu admin.
- Finir traduction du plugin en anglais.
- Supprimer la SourceTV de la liste des joueurs.
- Supprimer quelques petits bugs mineurs.
Idées :
Si vous avez des idées que je pourrais ajouter au plugin, ou si vous voyez des choses à améliorer, faites le moi savoir.
Utilisation :
Le plugin est séparé en 2 parties, la première pour les Wars et la deuxième pour gérer les admins.
Pour cela, 2 types d'admins ont été défini, les "simples" admins et les "super" admins.
Les "simples" admins n'ont accès qu'au menu de Wars, tandis que les "super" admins ont accès à la totalité des fonctions.
Partie : War :
Pour accéder à ce menu, il faut être au minimum "simple" admin, et taper la commande: !nwm (commande configurable).
Ce menu s'affiche :

Comme on peut le voir sur l'image, la partie supérieur du menu est réservée au différentes ligues que l'on veut jouer.
La partie inférieur quant à elle permet de changer de map ou d'exécuter de nombreuses commandes serveurs.
Comme on peut le voir ici, 5 configurations de match sont disponible, si vous en avez +, pas de problème, le plugin créé une nouvelle page avec le reste des configurations (à noté que sur toutes les pages sera présentes les fonctions Changer de map et Commandes serveurs.
On va commencer par voir pour lancer un match, ici chez choisit Ligue-France :

Ici on obtient un nouveau menu, qui est bien sur totalement configurable (mais j'en reparlerai après). On voit les différentes options qui s'offrent à nous :
- Charger la config : cela charge le fichier de configuration de Ligue-France pour paramétrer le serveur en fonction des exigences de LF.
- Round Cut.
- Lancer le match.
- Arrêter le match.
Enfin comme vous voyez, se n'est pas très compliqué et c'est même utilisable par le plus con d'entre nous

Maintenant on revient en arrière pour retourner au menu principal et choisir l'option Changer de map :

Bon ben là rien d'exceptionnel, c'est juste un menu qui permet de changer de map.
Bon on passe au menu Commandes serveur.



Comme on peut le voir ici, de nombreuses commandes sont disponibles (on peut en rajouter ou en enlever autant que l'on veut, mais j'en rappellerai plus tard):
Chaque choix ouvre un nouveau menu avec différentes options, là on peut voir le menu de la commande sv_alltalk :

On peut activer ou désactiver le AllTalk.
Ou encore la commande mp_startmoney :

On a le choix entre plusieurs options, il suffit juste de choisir, rien de plus simple.
Partie : Admins :
Pour accéder à ce menu, il faut être Super Admin, et taper la commande: !nwm admin (commande configurable).
Voici le menu principal de la partie admin :

Sur ce menu, on à plusieurs choix :
Le premier : Liste des admins :

Comme son nom l'indique, il permet d'afficher les admins qui ont l'autorisation d'accéder au menu du plugin.
Deuxième choix : Ajouter des admins :

Ce menu quant à lui, fait une liste des joueurs présents sur le serveur et qui ne sont pas déjà admin, ensuite il suffit juste de sélectionner les joueurs que l'on veut nommer admin et valider. Ensuite, pour chacun des joueurs sélectionnés le menu vous demande ceux que vous voulez définir Super Admin.

Troisième choix : Supprimer des admins :

Cette option nous permet d'afficher la liste des admins et ensuite de sélectionner ceux que l'on veut supprimer, puis de valider.
Les Super Admins ont des fonctions supplémentaires utilisable par ligne de commande, les voici :
- Créer un admin : "!nwm create_admin <Pseudo> <SteamID> <SuperAdmin : 0/1>"
Exemple : Je veux ajouter Jean qui à le SteamID STEAM_0:0:1515515 et je veux qu'il soit un simple admin.
je tape la commande suivante : !nwm create_admin Jean STEAM_0:0:1515515 0
si je voulais qu'il soit Super Admin, j'aurais tapé cette commande : !nwm create_admin Jean STEAM_0:0:1515515 1
- Editer un admin : "!nwm edit_admin <SteamID> <Nouveau Pseudo> <SuperAdmin : 0/1>"
Exemple : Je veux éditer un admin déjà existant, qui s'appelle Jean, qui à le SteamID STEAM_0:0:1515515 et qui est Super Admin, maintenant je veux qu'il s'appelle Dupond et qu'il ne soit plus que simple admin.
je tape la commande suivante : !nwm edit_admin STEAM_0:0:1515515 Dupond 0
- Supprimer un admin : "!nwm delete_admin <SteamID>"
Exemple : Je veux supprimer l'admin Jean qui à le SteamID STEAM_0:0:1515515.
je tape la commande suivante : !nwm delete_admin STEAM_0:0:1515515
Les Super Admins peuvent également kicker ou bannir un joueur qui viendrait perturber un match :
- Kicker un joueur : "!nwm kick <SteamID>"
Exemple : Je veux kicker le joueur qui à le SteamID STEAM_0:0:1515515.
je tape la commande suivante : !nwm kick STEAM_0:0:1515515
- Bannir un joueur : "!nwm ban <SteamID> <Durée en minutes, 0=illimité>"
Exemple : Je veux bannir le joueur qui à le SteamID STEAM_0:0:1515515 pendant 30 minutes.
je tape la commande suivante : !nwm ban STEAM_0:0:1515515 30
(Attention, le joueur n'est banni que pendant que le serveur fonctionne, lorsqu'il rebootera le ban ne sera plus prit en compte, pour le bannir vraiment il faut passer par une banlist. Cette fonction est utile pour ne plus être dérangé sur le moment et ceci très rapidement)[/indent]
Configuration du plugin :
Voici la liste des fichiers et dossiers utilisés par le plugin :
Citation
/cstrike/addons/eventscripts/neuro_war_menu/neuro_war_menu.py ##### le plugin en lui même.
/cstrike/cfg/neuro_war_menu/ ##### dossier principal de la configuration du plugin.
/cstrike/cfg/neuro_war_menu/admins.db ##### fichier regroupant tous les admins autorisés à utiliser le plugin.
/cstrike/cfg/neuro_war_menu/config.cfg ##### fichier de configuration du plugin.
/cstrike/cfg/neuro_war_menu/languages.ini ##### fichier regroupant toutes les langues utilisable par le plugin.
/cstrike/cfg/neuro_war_menu/menu_changelevel/ ##### dossier contenant le fichier pour configurer le menu "Changer de map".
/cstrike/cfg/neuro_war_menu/menu_changelevel/_changelevel.ini ##### fichier de configuration du menu "Changer de map".
/cstrike/cfg/neuro_war_menu/menu_servercommands/ ##### dossier contenant les fichiers de configuration des différentes commandes serveurs.
/cstrike/cfg/neuro_war_menu/menu_servercommands/_servercommands_order.cfg ##### fichier définissant l'ordre d'affichage des commandes dans le menu "Commandes serveur".
/cstrike/cfg/neuro_war_menu/menu_war/ ##### dossier contenant les fichiers de configuration des différentes configurations de match.
/cstrike/cfg/neuro_war_menu/menu_war/_war_order.cfg ##### fichier définissant l'ordre d'affichage des différentes ligues dans le menu principal.
Fichier : admins.db :
Il se présente de la manière suivante :
Citation
sa = 1 ##### défini si l'admin est SuperAdmin (1) ou non (0).
name = Jean ##### défini le pseudo de l'admin.
[STEAM_0:1:124652341715]
sa = 0
name = Dupond
[STEAM_0:1:12948942249]
sa = 0
name = Tafiole
[STEAM_0:1:822490254751]
sa = 1
name = Boulet
Fichier : config.cfg :
Il se présente de la manière suivante :
Citation
nwm_cmd = '!nwm' ##### Commande à utiliser pour afficher les menus ou utiliser les différentes fonctions.
console_cmd = 1 ##### Autorise à utiliser la commande depuis la console (1=Oui, 0=Non).
say_cmd = 1 ##### Autorise à utiliser la commande depuis le tchat (1=Oui, 0=Non).
language = 'fr' ##### Langage à utiliser, 'fr'=français, 'en'=english.
map_start_reload_plugin = 0 ##### Recharge complètement le plugin à chaque changement de map (1=Oui, 0=Non).
Fichier : languages.ini (en partie) :
Il se présente de la manière suivante :
Citation
fr = "Bienvenue"
en = "Welcome"
[msg_welcome_none]
fr = "Vous n'êtes pas autorisé à utiliser cette commande"
en = "You are not authorised to use this command"
[msg_command_syntax]
fr = "Syntaxe"
en = "Syntax"
[msg_create_admin_command_syntax]
fr = "create_admin <Pseudo> <SteamID> <SuperAdmin : 0/1>"
en = "create_admin <Nickname> <SteamID> <SuperAdmin : 0/1>"
[msg_delete_admin_command_syntax]
fr = "delete_admin <SteamID>"
en = "delete_admin <SteamID>"
[msg_edit_admin_command_syntax]
fr = "edit_admin <SteamID> <Nouveau Pseudo> <SuperAdmin : 0/1>"
en = "edit_admin <SteamID> <New Nickname> <SuperAdmin : 0/1>"
[msg_kick_command_syntax]
fr = "kick <SteamID>"
en = "kick <SteamID>"
[msg_kick_ok]
fr = "à bien été kické"
en = "has been kicked"
[msg_ban_command_syntax]
fr = "ban <SteamID> <Durée en minutes, 0=illimité>"
en = "ban <SteamID> <Time in minutes, 0=unlimited>"
[msg_ban_ok]
fr = "à bien été banni"
en = "has been banned"
[msg_unknown_command]
fr = "Commande inconnue"
en = "Unknown command"
Pour rajouter une langue il suffit juste de rajouter une ligne après chaque message, et de faire comme ci-dessus pour la langue fr ou en.
Fichier : _changelevel.ini :
Il se présente de la manière suivante :
Citation
fr = Recharger la map ##### titre de la commande en français.
en = Reload the map ##### titre de la commande en anglais.
cmd = ##### commande RCON à exécutée (on peut en mettre plusieurs à la suite, séparée par "; ").
menu_exit_after_cmd = 1 ##### quitte le menu (1) ou non (0) après avoir exécuté la commande.
special_cmd = nwm_reload_map ##### commande spéciale interne au plugin (ici elle permet de recharger la map)
[002]
fr = de_aztec
en = de_aztec
cmd = changelevel de_aztec
menu_exit_after_cmd = 1
[003]
fr = de_cbble
en = de_cbble
cmd = changelevel de_cbble
menu_exit_after_cmd = 1
[004]
fr = de_chateau
en = de_chateau
cmd = changelevel de_chateau
menu_exit_after_cmd = 1
Fichier : _servercommands_order.cfg :
Il définit l'ordre d'affichage des commandes serveurs dans le menu et il se présente de la manière suivante :
Citation
mp_restartgame.ini
sv_alltalk.ini
mp_limitteams.ini
sv_pausable.ini
mp_allowspectator.ini
mp_forcecamera.ini
mp_fadetoblack.ini
mp_roundtime.ini
mp_buytime.ini
mp_freezetime.ini
mp_startmoney.ini
mp_autoteambalance.ini
mp_friendlyfire.ini
mp_timelimit.ini
mp_winlimit.ini
mp_maxrounds.ini
mp_c4timer.ini
sv_gravity.ini
sv_voiceenable.ini
mp_autokick.ini
Il est en fait composé des noms des fichiers de configuration de chaque commandes serveurs (seulement les noms de fichiers présent dans ce fichier seront pris en compte pour créer les menus).
Pour exemple, voici le fichier de configuration de la commande sv_alltalk :
Fichier : sv_alltalk.ini :
Citation
fr = sv_alltalk ##### titre en français.
en = sv_alltalk ##### titre en anglais.
[title_menu] ##### titre à afficher dans le menu de la commande "sv_alltalk".
fr = sv_alltalk
en = sv_alltalk
[description] ##### une petite description qui sera affichée dans le menu des commandes serveurs.
fr = AllTalk
en =
[001] ##### premier choix du menu.
fr = Activer
en = Enable
cmd = sv_alltalk 1 ##### commande RCON à exécutée (on peut en mettre plusieurs à la suite, séparée par "; ").
menu_exit_after_cmd = 0 ##### quitte le menu (1) ou non (0) après avoir exécuté la commande.
[002] ##### deuxième choix du menu.
fr = Désactiver
en = Disable
cmd = sv_alltalk 0
menu_exit_after_cmd = 0
Si vous voulez rajouter une commande, il faut créer un fichier de configuration comme celui ci-dessus, puis ajouter le nom de ce fichier dans le fichier _servercommands_order.cfg.
Fichier : _war_order.cfg :
Il définit l'ordre d'affichage des différentes ligues à jouer dans le menu principal, et il se présente de la manière suivante :
Citation
lf.ini
cevo.ini
esl.ini
cf.ini
cal.ini
Il est également composé des noms de fichiers de configuration de chaque ligue, pour rajouter une ligue il faut procéder de la même manière que pour les commandes serveurs.
Voici un exemple de fichier de configuration d'une ligue, ici lf.ini qui est celui de Ligue-France.
Fichier : lf.ini :
Citation
fr = Ligue France ##### titre en français.
en = Ligue France ##### titre en anglais.
[title_menu] ##### titre du menu "Ligue-france" ici.
fr = Ligue France
en = Ligue France
[001] ##### premier choix du menu.
fr = Charger la config ##### texte du choix en français.
en = Load config ##### texte du choix en anglais.
cmd = zb_matchconfig config-lf ##### commande RCON à exécutée (on peut en mettre plusieurs à la suite, séparée par "; ").
menu_exit_after_cmd = 1 ##### quitte le menu (1) ou non (0) après avoir exécuté la commande.
special_cmd = nwm_reload_map ##### commande spéciale interne au plugin (ici elle permet de recharger la map).
[002] ##### deuxième choix.
fr = Round Cut
en = Round Cut
cmd = zb_ko3
menu_exit_after_cmd = 1
[003] ##### troisième choix.
fr = Lancer la War
en = Start War
cmd = zb_lo3
menu_exit_after_cmd = 1
[004] ##### quatrième choix.
fr = Arreter la War
en = Stop the War
cmd = zb_matchconfig NONE; tv_autorecord 0; exec server.cfg
menu_exit_after_cmd = 1
special_cmd = nwm_reload_map