Envie de parler avec les autres membres de la communauté ? Alors venez vous connecter, vous vous sentirez moins seul !
Envie de parler avec les autres membres de la communauté ? Alors venez vous connecter, vous vous sentirez moins seul !
Rejoignez-nous sur le discord Urban Terror France !
Statistiques globales et en temps réel de la totalité des serveurs d'Urban Terror. Suivez l'évolution du nombre de joueurs sur Urban Terror !
Guide rapide concernant l'inscription sur le site officiel du jeu. Créez ainsi votre compte joueur qui permet d'être authentifié sur les serveurs de jeu de la 4.2 !
ma liste de plugins est : plugin-adminbase,plugin-basicrights,plugin-clientbase et plugin-extrarights.C:\Documents and Settings\Hamzus\Bureau\php>php.exe bot.php
_____________________________________________
| __ __ ____ __ |
| / / ___ ___ / /___ _/ __ )____ / /_ |
| / / / _ \/ _ \/ / __ `/ __ / __ \/ __/ |
| / /___/ __/ __/ / /_/ / /_/ / /_/ / /_ |
| /_____/\___/\___/_/\__,_/_____/\____/\__/ |
| |
| Garde un oeil sur votre serveur ! |
| |
| By Linkboss. |
|_____________________________________________|
Version courante : 0.2.6.2 Carlo
Ouverture du log (Bot)...[OK]
Chargement de la configuration (conf/leelabot.ini)...[OK]
Connexion au log de jeu...[OK]
Connexion au RCon...[OK]
Recuperation des infos serveur...[OK]
Synchronisation du serveur...[OK]
Server info :
Nom : #^1FastKillers ^7Team ^1Survivor^7!!!!
Gametype : Team Survivor
Matchmode : Off
Map : ut4_uptown
Version : ioq3 1.35urt win-x86 Dec 20 2007
Nombre de joueurs : 0
Nombre de bots : 0
Initialisation des plugins...
"...[ERREUR]t du plugin "adminbase
"...[ERREUR]t du plugin "clientbase
"...[ERREUR]t du plugin "basicrights
Synchronisation du log...[OK]
Bot lance.
ma leelabot comporte:adminbase
clientbase
basicrights
Code : Tout sélectionner
;Fichier de configuration de LeelaBot
;
;Lisez attentivement les commentaires avant d'éditer !
;Adresse du serveur
addr=localhost;
;Port du serveur (par défaut 27960)
port=27960;
;Mot de pase RCon
password=12345;
;Chemin absolu vers le fichier de log d'Urban Terror
logfile=C:\Documents and Settings\Hamzus\Bureau\UrbanTerror\q3ut4\games.log;
;Chemin vers la liste de plugins à charger par défaut
pluginsfile=conf/plugins-default.conf;
;Chemin vers les fichiers de configs des plugins
pluginsconfigfolder=conf/plugins;
;Réglage du premier lancement (permettant ou non l'utilisation de la commande !setadmin); 0=desactivé, 1=activé
firstrun=1;
;Mot de passe de la commande !setadmin
setadminpassword=4545;
;Mode daemon (marche uniquement sous Linux)
daemonmode=0;
;Nom du bot
botname=LeelaBot;
<?php
/*
Composition de l'array des admins (la base de données admin)
_admin
[GUID]
-> [0] -> 'groupe1'
-> [id] -> 'nom'
*/
class PluginBasicRights extends Plugin
{
private $_main;
private $_admin;
private $_adminComment;
private $_adminfile;
private $_commands;
private $_commandsArray = array();
public function __construct(&$main)
{
$this->_main = $main;
$this->_commands = $this->_main->getCommandsClass();
$config = parse_ini_file($this->_main->pluginsConfigFolder.'/basicrights.ini');
$this->_adminfile = $config['adminfile'];
$this->_commandsArray['!giverights'] = array('!giverights','90',"Donne des droits a un joueur (!giverights <joueur> <niveau>)");
$this->_commandsArray['!listadmins'] = array('!listadmins','50',"Donne la liste des admins connectes");
$this->_main->plugins->addClientEvent('!giverights','basicrights','CmdEventGiveRights',90);
$this->_main->plugins->addClientEvent('!listadmins','basicrights','CmdEventListAdmins',50);
if($this->_main->firstrun) {
$this->_main->plugins->addClientEvent('!setadmin','basicrights','CmdEventSetAdmin',0);
$this->_commandsArray['!setadmin'] = array('!setadmin','0',"Permet de vous ajoutez en tant que premier admin (!setadmin <pass>)");
}
$this->_main->plugins->addServerEvent('ClientUserinfo:','basicrights','SrvEventClientUserinfo');
$this->_commands->addCommands($this->_commandsArray);
$this->adminLoadFile();
$players = $this->_main->players;
// Si il y a déjà des joueurs sur le serveur
if(count($players) > 0)
{
//On parcourt les joueurs
foreach($players as $user)
{
//Gestion des droits pour les utilisateurs présents
if(isset($this->_admin[$this->_main->players[$user[0]][1]]))
$this->_main->players[$user[0]][11] = $this->_admin[$this->_main->players[$user[0]][1]];
else
$this->_main->players[$user[0]][11] = 0;
}
}
}
//Destruct : retire les commandes
public function __destruct()
{
$this->_commands->removeHelp(array_keys($this->_commandsArray));
return TRUE;
}
//Charge la liste des admins
public function adminLoadFile()
{
$admin_file = trim(file_get_contents($this->_adminfile));
$admin_tmp = explode("\n", $admin_file);
$this->_admin = array();
if($admin_tmp[0] != '')
{
foreach($admin_tmp as $currentAdmin)
{
$comment = explode('#',$currentAdmin,2);
$admin_buf = explode('~',$currentAdmin);
if($comment[1])
{
$comment[1] = explode('#',$comment[1]);
$comment[1] = $comment[1][0];
}
$admin_buf[1] = explode(' #',$admin_buf[1]);
$admin_buf[1] = $admin_buf[1][0];
$this->_admin[$admin_buf[0]] = $admin_buf[1];
$this->_adminComment[$admin_buf[0]] = $comment[1];
}
}
}
public function writeAdminList()
{
$admin_filename = $this->_adminfile;
$admin_file = fopen($admin_filename, 'w+');
foreach($this->_admin as $key => $rank)
{
fputs($admin_file, $key."~".$rank."");
if($this->_adminComment[$key])
fputs($admin_file, ' #'.$this->_adminComment[$key]);
fputs($admin_file, "\n");
}
}
// Fonction executer lors d'un !listadmins, donne la liste des admins connectés
public function CmdEventListAdmins()
{
$this->adminLoadFile();
$list = '';
$nbadmins = 0;
foreach($this->_main->players as $players)
{
if($players[11] > 0)
{
$list .= $players[2].' ('.$players[11].'), ';
++$nbadmins;
}
}
if($nbadmins > 0)
{
$list = substr($list, 0, -2);
$this->_main->query->tell($this->_main->clientID , $list);
}
else
{
$this->_main->query->tell($this->_main->clientID , 'Il n\'y a aucun admin connecte.');
}
}
// Fonction executer lors d'un !giverights, donne des droits à un joueur
public function CmdEventGiveRights()
{
$say = explode(' ',$this->_main->clientMsg);
if(isset($say[1]) && isset($say[2]))
{
$player = $this->_main->SearchPlayer($say[1]);
if($say[2] == 0 && isset($this->_admin[$this->_main->players[$player[0][0]][1]]))
unset($this->_admin[$this->_main->players[$player[0][0]][1]]);
elseif($say[2] != 0)
$this->_admin[$this->_main->players[$player[0][0]][1]] = $say[2];
if(!isset($this->_adminComment[$this->_main->players[$player[0][0]][1]]))
$this->_adminComment[$this->_main->players[$player[0][0]][1]] = $this->_main->players[$player[0][0]][2].'@'.$this->_main->players[$player[0][0]][9];
$this->_main->players[$player[0][0]][11] = $say[2];
$this->writeAdminList();
$this->_main->query->tell($this->_main->clientID ,'Le joueur '.$player[0][2].' a maintenant le niveau '.$say[2].'.');
}
else
{
$this->_main->query->tell($this->_main->clientID ,'Parametres insufisants.');
}
}
public function CmdEventSetAdmin() //Donne les droits d'admin si le mot de passe est bon et que le la configuration le permet (level 0 bien entendu)
{
$clientid = $this->_main->clientID;
$say = explode(' ',$this->_main->clientMsg);
if(isset($say[1]) && $this->_main->firstrun == 1)
{
if($say[1] == $this->_main->setadminpassword)
{
$this->adminLoadFile(); // Rechargement de la liste d'admins;
$this->_admin[$this->_main->players[$clientid][1]] = '100';
if(!isset($this->_adminComment[$this->_main->players[$clientid][1]]))
$this->_adminComment[$this->_main->players[$clientid][1]] = $this->_main->players[$clientid][2].'@'.$this->_main->players[$clientid][9];
$this->_main->players[$clientid][11] = 100;
$this->writeAdminList(); // réécriture des admins dans le fichier
$str = 'abcdefghijklmnopqrstuvwxyz01234567899876543210';
str_shuffle($str);
$this->_main->setadminpassword = substr($str,0,8);
$this->_main->firstrun = 0;
$this->_main->query->tell($clientid, '^3Vous etes maintenant super-administrateur.');
$this->_main->query->tell($clientid, '^3La commande !setadmin a ete desactive pour la session courante.');
$this->_main->query->tell($clientid, '^3Pensez a mettre firstrun a 0 avant de relancer le bot.');
}
else
$this->_main_->query->tell($this->clientID, '^3Mot de passe incorrect.');
}
}
public function SrvEventClientUserinfo()
{
$game = trim($this->_main->serverCommand);
$cmd = explode(' ',$game);
$this->adminLoadFile(); //Rechargement de la liste d'admins;
if(isset($this->_admin[$this->_main->players[$cmd[2]][1]]))
$this->_main->players[$cmd[2]][11] = $this->_admin[$this->_main->players[$cmd[2]][1]];
else
$this->_main->players[$cmd[2]][11] = 0;
}
}
$this->plugins[$pluginName] = new PluginBasicRights($main);
Ca changera pas grand-chose, les plugins s'appuient sur la même architecture depuis pas mal de temps.Ulty a écrit :que faire alors ?? :/ jpe pas telecharger l'anicenne version et testé avec???