04-11-2011, 13:42 PM
AutoBankick est un script destiné aux semi-professionnels, il permet de bannir & kicker un joueur, et ce, sans passer par la banlist du serveur. Tout le monde sait que Banid expire à la fermeture (ou plantage) du serveur, et qu'à son redémarrage, les joueurs bannis ne le sont plus. Fini avec AutoBankick! Si vous bannissez un joueur 2 jours, vous pouvez redémarrer le serveur 50 fois, le joueur sera toujours banni et sera débanni automatiquement à la fin de sa sanction.
Ce script étant un script de bankick, il ne permet pas d'être utilisé dans le jeu. Les commandes doivent être utilisées dans la console du serveur. Pour utiliser AutoBankick dans le jeu, il vous faudra vous même créer un menu. On peut dire en quelques sortes que AutoBankick est une API de Bankick.
Tout le système de bankick est commandé par des threads (processus légers) qui permettent de ne pas exécuter les fonctions sous le processus du jeu mais sous un nouveau processus pour chaque fonction (donc aucuns lags normalement).
La base de données est écrite en methodParser (fichier ini facile à gérer). Le script effectue régulièrement des lectures dans ce fichiers (Pour vérifier si un joueur est banni par exemple), La lecture est rapide. Le script effectue des écritures (Ban/Unban) dans ce fichier, c'est moins rapide que la lecture mais sa reste tout de même assez rapide.
Voici la liste des commandes console (serveur) du script:
abk_addban <steamid> <durée en minutes> [raison] -- Banni un joueur du serveur pendant la durée impartie avec une raison personnalisée (facultatif).
abk_removeban <steamid> [raison] -- Débanni un joueur qui est banni.
abk_playerstatus <steamid> -- Affiche le status du joueur, s'il est banni ou non, et s'il est banni, affiche la date/heure de déban.
abk_banlist -- Affiche la liste des joueurs bannis ainsi que la date/heure de déban pour chacun. (cette commande est succeptible de faire lagguer/figer le serveur si la banlist est assez remplie).
abk_lenbanlist -- Diminutif de longueur de la banlist (lenght), elle affiche le nombre de joueurs bannis, inscrits dans la banlist.
abk_purgebanlist [slow/fast] -- Purge la banlist, retire tous les joueurs qui sont dans la banlist mais qui devraient être débannis (qui ne se sont plus connectés au serveur depuis leur ban).
abk_clearbanlist [slow/fast] -- Supprime la banlist inscrite sur le disque et en mémoire pour en récréer une nouvelle vide.
abk_dumpbanlist [slow/fast] -- Écrit toute la banlist dans le fichier "autobankick_dumpbanlist.txt" qui se trouve à côté de la banlist.
Informations supplémentaires: Voici les arguments de la raison personnalisée pour la commande "abk_addban":
- %1 = Date du déban
- %2 = Temps restant avant le déban
- %3 = Affiche le temps de ban
Note: Toutes les commandes ayant comme arguments [slow/fast] ont une fonction rapide et une fonction lente:
- La fonction lente: La fonction se déroule dans un processus (thread) autre que le celui du jeu, aucuns lags à prévoir dans le jeu, par contre, la fonction s’exécute lentement.
- La fonction rapide: La fonction utilise le processus du jeu pour effectuer toutes ses actions, des lags peuvent se ressentir en jeu, par contre, la fonction s'exécute très rapidement.
Préférez donc la fonction lente (slow) sur un serveur où il y a des joueurs.
Le script est entièrement configurable:
- La banlist peut être placée n'importe où, plusieurs serveurs utilisant AutoBankick peuvent y accéder.
- Libre à l'utilisateur de configurer le ban pour qu'il soit cumulable ou annulé en cas de double ban du même SteamID.
- Affichage de la date de déban dans la raison du ban InGame.
- Possibilité de bannir le joueur directement s'il se trouve sur le serveur.
- Possibilité d'avoir une raison de ban personnalisée (Toujours avec date de déban affichée).
- Possibilité de modifier le format de temps affichable pour la date de déban.
Vous pouvez récupérer la réponse d'une fonction en lisant la variable du jeu "autobankick__output". Elle peut renvoyer:
"None" -- L'utilisateur n'a utilisé aucune commande depuis le démarrage du script.
"Chargement" -- Le script charge la réponse de la fonction. Vous pourrez la lire dans quelques secondes.
"[xx] xxxxxx" -- [xx] est le nom de la fonction et le reste, c'est la réponse de la fonction.
Exemple: J'utilise la commande "abk_playerstatus STEAM_0:0:000", une seconde plus tard, la variable vaut "Chargement", et deux secondes plus tard, elle vaut "[abk_playerstatus] 'STEAM_0:0:000' est banni du serveur [Permanent]". Facile à récupérer.
Exemple d'utilisation:
Code :
>>> abk_clearbanlist
[ES::AutoBankick] La banlist a ete remise a zero.
>>> abk_banlist
[ES::AutoBankick] Aucun joueur banni.
>>> abk_addban STEAM_0:0:12345678 0
[ES::AutoBankick] 'STEAM_0:0:12345678' a ete banni du serveur 'Permanent'.
>>> abk_banlist
[ES::AutoBankick] ---------------------------------
[ES::AutoBankick] Liste des joueurs bannis: 1
[ES::AutoBankick] ---------------------------------
[ES::AutoBankick] 'STEAM_0:0:12345678' [Permanent]
>>> abk_playerstatus STEAM_0:0:12345678
[ES::AutoBankick] 'STEAM_0:0:12345678' est banni du serveur [Permanent].
>>> abk_addban STEAM_0:0:87654321 60
[ES::AutoBankick] 'STEAM_0:0:87654321' a ete banni du serveur '1:00:00'.
>>> abk_banlist
[ES::AutoBankick] ---------------------------------
[ES::AutoBankick] Liste des joueurs bannis: 2
[ES::AutoBankick] ---------------------------------
[ES::AutoBankick] 'STEAM_0:0:12345678' [Permanent]
[ES::AutoBankick] 'STEAM_0:0:87654321' [06/11/2011 - ~01:20]
>>> abk_dumpbanlist fast
[ES::AutoBankick] La banlist a ete stockee dans le fichier 'autobankick_dumpbanlist.txt' dans le dossier de la banlist.
>>> abk_playerstatus STEAM_0:0:87654321
[ES::AutoBankick] 'STEAM_0:0:87654321' est banni du serveur [06/11/2011 ~01:20].
>>> abk_removeban STEAM_0:0:12345678
[ES::AutoBankick] 'STEAM_0:0:12345678' a ete debanni du serveur.
>>> abk_banlist
[ES::AutoBankick] ---------------------------------
[ES::AutoBankick] Liste des joueurs bannis: 1
[ES::AutoBankick] ---------------------------------
[ES::AutoBankick] 'STEAM_0:0:87654321' [06/11/2011 - ~01:20]
>>> abk_lenbanlist
[ES::AutoBankick] Nombre de joueurs bannis: 1
>>> abk_playerstatus STEAM_0:0:12345678
[ES::AutoBankick] 'STEAM_0:0:12345678' n'est pas banni du serveur.
>>> abk_clearbanlist
[ES::AutoBankick] La banlist a ete remise a zero.
>>> abk_banlist
[ES::AutoBankick] Aucun joueurs bannis.
>>> abk_removeban STEAM_0:0:00000000
[ES::AutoBankick] 'STEAM_0:0:00000000' n'est pas banni du serveur.
>>> abk_addban STEAM_0:0:87654321 0 [Messiah93] J'avais envie de te bannir avec une raison [Deban: %1]
[ES::AutoBankick] 'STEAM_0:0:12345678' a ete banni du serveur 'Permanent'.
>>> abk_addban test_je_ne_suis_pas_un_steamid 0
[ES::AutoBankick] SYNTAXE: abk_addban <steamid> <duree>.
>>> abk_removeban test_pas_un_steamid
[ES::AutoBankick] SYNTAXE: abk_removeban <steamid>.
>>> abk_playerstatus je_ne_suis_pas_un_steamid
[ES::AutoBankick] SYNTAXE: abk_playerstatus <steamid>.
>>> abk_dumpbanlist test
[ES::AutoBankick] SYNTAXE: abk_dumpbanlist [slow/fast].
Note: Si vous voulez utiliser les commandes dans le jeu via le RCON, placez des " " entre le SteamID, de même pour la raison, sinon, vous aurez une erreur. La console client de Valve/Steam est capricieuse, elle ajoute un espace après chaque ":", et comme il y en a dans le SteamID, imaginez le bordel. Toutefois, il ne faut pas perdre de tête que ce script est fait pour être utilisé par la console du serveurs, certaines commandes sont susceptibles de ne rien renvoyer InGame par RCON, problème dû à l'optimisation. On ne peut pas tout avoir, il faut faire des choix.
Astuce: Si vous aussi avez plusieurs serveurs et que vous voulez utiliser ce script sur plusieurs de vos serveurs tout en gardant la même banlist, vous pouvez suivre cette astuce. Créez un serveur maître (MasterServer), c'est à lui que vous passerez toutes les commandes (abk_addban, abk_removeban, abk_dumpbanlist, etc.), les autres serveurs, eux, ne feront que vérifier les joueurs bannis à la connexion de chaque joueur. Un petit exemple avec schéma:
Sinon, vous pouvez toujours envoyer la commande abk_* à un seul des serveur pour que le joueur soit bannis de tous les autres serveurs (exemple, pour le cas de abk_addban) qui utilisent la même banlist. J'utilise un MasterServer toujours vide et sans autres plugins pour être sûr que le serveur auquel j’envoie mes commandes est toujours UP et que je peux envoyer des commandes qui sont susceptibles de faire lagger le serveur. (abk_banlist, abk_dumpbanlist fast, etc.). Vous pouvez aussi envoyer les commandes à un serveur peuplé, comme ceci:
Systèmes d'exploitation compatibles: Windows - Linux (optimisé) - MAC.
Petite remarque: La base de donnée n'est pas infinie, elle peut cependant accueillir beaucoup de joueurs. Y a pas à s’inquiéter.
F.A.Q:
Le script se lance, il arrive à lire la banlist mais pas à y écrire?
Il faut donner les droits d'écriture à autobankick.pyc (CHMOD) - 755 minimum.
Le script ne se lance pas?
Vérifiez avoir bien inscrit 'es_load autobankick' dans cfg/autoexec.cfg. Si c'est le cas, vérifiez dans vos logs pour y trouver des erreurs et les poster dans 'demande de support'.
La date/heure de déban n'est pas correcte, que faire?
Cela ne vient aucunement du script, c'est tout simplement l'heure de la machine où est hébergé le serveur qui est incorrecte. Vérifiez la date/heure de la machine. Le joueur sera cependant toujours banni le temps que vous avez demandé (ne pas se fier donc à la date de déban).
———————————————
Cordialement, Messiah93.
Cordialement, Messiah93.
Électromécanicien • Technicien/Développeur informatique