Modification de plugin b3...

Tout ce qui concerne la configuration et l'administration des serveurs.
Rendez-vous dans Outils de communication & communautaires pour la conception de sites Internet.
Avatar du membre
Beber888
Référent outil (B3)
Messages : 293
Enregistré le : 01 mars 2009, 23:16
Localisation : Plailly(60)

Re: Modification de plugin b3...

Message par Beber888 » 14 nov. 2009, 12:45

Je dois avouer que le code de parser.py + iourt41 est assez compliqué a comprendre.
J'arrive à lire mon fichier ligne a ligne.
Je ne sais pas encore me placer direct à la fin mais j'essaierai avec un getsize.
Par contre c'est pour parser que c'est la lutte : voici mon code :
LectureTraces est activé cycliquement par une tempo

Code : Tout sélectionner

def LectureTraces(self):
                        
                        self.input.seek(self.Findeligne)
                        Ligne = self.input.readline()
                        if Ligne != '':
                                self.Findeligne = self.input.tell()
                                try:
                                        Ligne = (
                #T 1258064155 19*	19Lidys (~Lidys@ADijon-152-1-29-40.w83-194.abo.wanadoo.fr) a rejoint #urbanterror.fr
                #T 1258064333 23*	23monelle est parti (23Ping timeout23)
                                        re.compile(r'^(?P<time>[0-9])\s(?P<code>(19*|23*)\s(?P<player>[a-z]+))$', re.IGNORECASE),
                #T 1258063643 18<Lidys>	ensuite fais un effort sur l'orthographe
                                        re.compile(r'^(?P<time>[0-9])\s(?P<code>(18)\s(?P<player>[a-z]+)(?P<text>.*)\s)$', re.IGNORECASE)
                                        )
                                        self.Parser(Ligne)
                                except:
                                        self.console.write('BugExecParser')


        def Parser(self, data, match=None):
                temps = match.group('time')
                self.console.write(temps)
J'essaie juste avec la variable time mais à tout les coup je suis dans l'except.
Je voiv mal comment on attribut la String à re.compile ??
Mon serveur FTP
ftp://beber888.myftp.org
Mon serveur UrT
/connect beber888.no-ip.org
Mon site web
http://beber888.no-ip.org/

Avatar du membre
Courgette
Messages : 850
Enregistré le : 22 déc. 2007, 02:05
Localisation : Rennes

Re: Modification de plugin b3...

Message par Courgette » 14 nov. 2009, 16:26

voici un parser minimal :

Code : Tout sélectionner

import os
import time

filename = 'c:/temp/testfile.txt'
delay = 0.001 # lit le fichier toutes les 1ms

if os.path.isfile(filename):
    input = file(filename, 'r')
    input.seek(0, 2) # va à la fin du fichier
    
    working = True
    while working:
        line = str(input.readline()).strip()
        if line:
            print "j'ai lu : %s" % line
        time.sleep(delay)
    input.close()
else:
    print 'Error reading file %s' % filename

Avatar du membre
Beber888
Référent outil (B3)
Messages : 293
Enregistré le : 01 mars 2009, 23:16
Localisation : Plailly(60)

Re: Modification de plugin b3...

Message par Beber888 » 15 nov. 2009, 00:37

Merci ça m'a aidé. Mon plugin avance: maintenant le lit le fichier depuis la fin, je parse et créer des évènement joint, quit, speak et gere le cas ou c'est bot (zorbot etc...)qui speak ou une personne reelle.
Par contre je voudrais récupérer une liste des personnes présentes sur le serveur avec un level (0 1 2 20 40 60 80...) supérieur à un seuilpour leur envoyer des messages privés et ça marche pas.
Voici le code :

def ClientSpeak(self, ClientIrc, Data):
self.verbose('ClientSpeak')
if self.show_client_speak == 'true':
if self.show_global == 'true':
self.console.write('^4IRC^3: ^7%s^3:^3%s' % (ClientIrc, Data))
else:
self.verbose('Calcul Level')
for c in self.console.clients.getList():
Level = c.var(self._ClientPlugin, 'maxGroup', 0).value
self.verbose(Level)
if Level >= self.level_show_irc:
client.message('^4IRC^3: ^7%s^3:^3%s' % (ClientIrc, Data))
Mon serveur FTP
ftp://beber888.myftp.org
Mon serveur UrT
/connect beber888.no-ip.org
Mon site web
http://beber888.no-ip.org/

Avatar du membre
Courgette
Messages : 850
Enregistré le : 22 déc. 2007, 02:05
Localisation : Rennes

Re: Modification de plugin b3...

Message par Courgette » 15 nov. 2009, 02:03

En allant voir comment marche la commande !admins (qui donne la liste des admins), on tombe sur :

Code : Tout sélectionner

self.console.clients.getClientsByLevel(<level min>, <level max>)
Note qu'il faut veiller à ne pas flooder le serveur avec trop de commandes rcon. A chaque fois que le bot envoi un PM à un joueur, il envoi une commande rcon au server. Si trop d'admins sont connectés, tu vas envoyer beaucoup de commandes.
Peut-être que tu peux envoyer un seul PM à l'admin qui a le level le plus haut ?
if self.show_client_speak == 'true':
C'est très très moche

et plz, met ton code entre les balises code, y'a un bouton pour ça

Avatar du membre
Beber888
Référent outil (B3)
Messages : 293
Enregistré le : 01 mars 2009, 23:16
Localisation : Plailly(60)

Re: Modification de plugin b3...

Message par Beber888 » 15 nov. 2009, 11:59

Helas, je connais la prog vite fait mais pas les subtilités du Python.
Désolé pour les puristes mais je pars du principe que si le code fonctionne et ben c'est déja ça !
Après ton quote, c'est peu être moche (pkoi?) mais je vois pas comment faire autrement sinon de travailler en binaire.

Alors j'ai décortiqué le plus admins et j'ai modifier mon code en mettant des self.verbose pour bien voir ou ça merde :

Code : Tout sélectionner

        def getAdmins(self):
                     return self.console.clients.getClientsByLevel(20, 100)


        def AdminList(self, message):
                     self.verbose(message)
                     clist = self.getAdmins()
                     self.verbose(clist)
                     if len(clist) > 0:
                                self.verbose(ok)
                                for c in clist:
                                            self.verbose(ok2)
                                            ClientUrt = c.client
                                            self.verbose(c)
                                            self.verbose(c.client)
                                            ClientUrt.message(message)
Dans onstartup j'ai declaré :

Code : Tout sélectionner

                self._AdminPlugin = self.console.getPlugin('admin')
                self._ClientPlugin = self.console.getPlugin('clients')
Le programme AdminList est éxécuter cycliquement par une boucle try. Le problème c'est qu'a chaque vois mon programme va sur except. Apparemment ça couille à partir (ou sur): if len(clist) > 0.

Voici les log de verbose:
091115 10:46:18 VERBOSE IrcPlugin: ^4IRC^3: ^7Beber888^3:^3 yiiyiyuiu -> Ca c'est self.verbose(message)
091115 10:46:18 VERBOSE IrcPlugin: [<b3.clients.Client object at 0x00F4E330>] -> Ca c'est self.verbose(clist)
091115 10:46:18 VERBOSE IrcPlugin: Erreur Except -> ça c'est mon except

Pourtant j'ai pompé exactement le code de admin en enlevant ce que j'avais pas besoin
Mon serveur FTP
ftp://beber888.myftp.org
Mon serveur UrT
/connect beber888.no-ip.org
Mon site web
http://beber888.no-ip.org/

Avatar du membre
Courgette
Messages : 850
Enregistré le : 22 déc. 2007, 02:05
Localisation : Rennes

Re: Modification de plugin b3...

Message par Courgette » 15 nov. 2009, 13:53

publie l'ensemble de ton code sur pastbin http://fr.pastebin.ca/ et envoi le lien. Je regarderais demain

Avatar du membre
Beber888
Référent outil (B3)
Messages : 293
Enregistré le : 01 mars 2009, 23:16
Localisation : Plailly(60)

Re: Modification de plugin b3...

Message par Beber888 » 15 nov. 2009, 14:05

ok
Mon serveur FTP
ftp://beber888.myftp.org
Mon serveur UrT
/connect beber888.no-ip.org
Mon site web
http://beber888.no-ip.org/

Avatar du membre
Beber888
Référent outil (B3)
Messages : 293
Enregistré le : 01 mars 2009, 23:16
Localisation : Plailly(60)

Re: Modification de plugin b3...

Message par Beber888 » 15 nov. 2009, 16:33

J'ai trouver la souce de mon problème. Déjà si tu fait un try ben t'as plus de traces exacte de l'erreur.
Ensuite j'avais fait self.verbose(toto) sans ' donc ça couille.
Et puis c sont les client donc c.message('toto') et ça marche.
Merci quand même
Mon serveur FTP
ftp://beber888.myftp.org
Mon serveur UrT
/connect beber888.no-ip.org
Mon site web
http://beber888.no-ip.org/

Avatar du membre
Beber888
Référent outil (B3)
Messages : 293
Enregistré le : 01 mars 2009, 23:16
Localisation : Plailly(60)

Re: Modification de plugin b3...

Message par Beber888 » 25 nov. 2009, 20:40

Je recherche l'évènement B3 qui dit qu'un joueur c'est fait nuker? ou du moins par quelle méthode récupérer cette information.
Merci
Mon serveur FTP
ftp://beber888.myftp.org
Mon serveur UrT
/connect beber888.no-ip.org
Mon site web
http://beber888.no-ip.org/

Avatar du membre
Courgette
Messages : 850
Enregistré le : 22 déc. 2007, 02:05
Localisation : Rennes

Re: Modification de plugin b3...

Message par Courgette » 25 nov. 2009, 21:46

cette info n'est pas dans le log du jeu...

Avatar du membre
Beber888
Référent outil (B3)
Messages : 293
Enregistré le : 01 mars 2009, 23:16
Localisation : Plailly(60)

Re: Modification de plugin b3...

Message par Beber888 » 25 nov. 2009, 22:16

Ben je comprend pas ya ça:
UT_MOD_NUKED='34'
Apparemment dans l'evenement client_kill ya une notion d'arme donc MOD_nuked doit marcher mais ça marche pas.
Mon serveur FTP
ftp://beber888.myftp.org
Mon serveur UrT
/connect beber888.no-ip.org
Mon site web
http://beber888.no-ip.org/

Avatar du membre
Courgette
Messages : 850
Enregistré le : 22 déc. 2007, 02:05
Localisation : Rennes

Re: Modification de plugin b3...

Message par Courgette » 25 nov. 2009, 23:50

ah, en effet, ca apparait dans le log sous forme de kill.
Du coup tu viens de mettre en évidence un bug du parser pour les kill par slap ou nuke.

change iourt41.py avec

Code : Tout sélectionner

        ## Fix attacker
        if match.group('aweap') in (self.UT_MOD_SLAPPED,self.UT_MOD_NUKED):
            self.debug('OnKill: slap/nuke => attacker should be None')
            attacker = self.clients.getByCID(-1) # make the attacker 'World'
pour voir (untested)

Avatar du membre
Beber888
Référent outil (B3)
Messages : 293
Enregistré le : 01 mars 2009, 23:16
Localisation : Plailly(60)

Re: Modification de plugin b3...

Message par Beber888 » 26 nov. 2009, 01:04

ça marche nickel, tu sais ce qu'il te reste à faire sur le parser.... :mrgreen:
Mon serveur FTP
ftp://beber888.myftp.org
Mon serveur UrT
/connect beber888.no-ip.org
Mon site web
http://beber888.no-ip.org/

Répondre