[b3]Création d'un plugin qui ne marche pas

Tout ce qui concerne la configuration et l'administration des serveurs.
Rendez-vous dans Outils de communication & communautaires pour la conception de sites Internet.
Répondre
NoYd
Messages : 1
Enregistré le : 07 août 2015, 17:34

[b3]Création d'un plugin qui ne marche pas

Message par NoYd » 07 août 2015, 17:37

Salut, j'ai un petit problème, j'ai fait un plugin pour reset les stats, mais ça ne marche pas !

b3.log :

Code : Tout sélectionner

150807 11:16:57	ERROR	'Error loading plugin xlrplus'
Traceback (most recent call last):
  File "/home/urt/b3/b3/parser.py", line 673, in loadPlugins
    pluginModule = self.pluginImport(plugin_name, plugins[s]['path'])
  File "/home/urt/b3/b3/parser.py", line 749, in pluginImport
    mod = __import__(module)
  File "/home/urt/b3/b3/plugins/xlrplus.py", line 21
    self._adminPlugin = self.console.getPlugin('admin')
xlrplus.py :

Code : Tout sélectionner

# Allow players to reset their stats using !xlrreset or !reset

__author__  = 'NoYd'
__version__ = '0.1'

import b3
import b3.events
import b3.plugin
import b3.cron

class xlrplus(b3.plugin.Plugin):
    requiresConfigFile = True
    
    def onLoadConfig(self):
      try:
            self._min_level_xlrreset = self.config.getint('settings', 'min_level_xlrreset')
      except:
            self._min_level_xlrreset = 0
            
              # get the admin plugin so we can register commands
        self._adminPlugin = self.console.getPlugin('admin')
        if not self._adminPlugin:
            # something is wrong, can't start without admin plugin
            self.error('Could not find admin plugin')
            return False
        else:
        # Register commands
          self._adminPlugin.registerCommand(self, 'xlrreset', 1, self.cmd_xlrreset, 'reset')
        
      self.verbose('Loading config')
    
    def onStartup(self):
        """\
        Initialize plugin settings
        """
 

 
        # Register our events
        self.verbose('Registering events')
        self.registerEvent(b3.events.EVT_CLIENT_AUTH)
 
        self.debug('Started')
        
     def onEvent(self, event):
        """\
        Handle intercepted events
        """
            self.dumpEvent(event)
        
   	def cmd_xlrreset(self, data, client, cmd=None):
	"""\
	Reset your XLRstats
	"""
	
q = ("""UPDATE  `xlr_playerstats` SET  `kills` =  '0',
`deaths` =  '0',
`teamdeaths` =  '0',
`suicides` =  '0',
`ratio` =  '0',
`skill` =  '0',
`curstreak` =  '0',
`winstreak` =  '0',
`losestreak` =  '0',
`rounds` =  '0' WHERE  `xlr_playerstats`.`client_id` =  '%s')""" % (client.id))

	self.console.storage.query(q)
 
Ya quelque chose que j'arrive pas à cerner, il me dit la ligne 21 marche pas mais j'ai exactement fait comme sur le wiki b3...

Ils disent aussi que c'est à cause des doublons normalement pour la première partie de l'erreur, mais aucun doublon, j'ai fait un find partout sur le serv, rien du touuuut...

Beru
Messages : 42
Enregistré le : 06 janv. 2013, 22:44

Re: [b3]Création d'un plugin qui ne marche pas

Message par Beru » 07 août 2015, 23:52

Commence par le onStartup, mets le getPlugin comme ça. Ensuite déclare tes commande et l'évenement toujours dans le startup.

Code : Tout sélectionner

	def onStartup(self):
		self._adminPlugin = self.console.getPlugin('admin')
		if not self._adminPlugin:
			self.error('Could not find admin plugin')
			return False
Dans le onLoad, charge la conf (lvl de la commande). Puis le reste (onEvent et cmd) tu les laisses dans cet ordre la.

Refais un test comme ça et tiens nous au courant.

Avatar du membre
PtitBigorneau
Messages : 516
Enregistré le : 19 oct. 2008, 13:50
Localisation : brest

Re: [b3]Création d'un plugin qui ne marche pas

Message par PtitBigorneau » 09 août 2015, 00:45

Ya quelque chose que j'arrive pas à cerner, il me dit la ligne 21 marche pas mais j'ai exactement fait comme sur le wiki b3...
:)

deja pour faire simple tu mets un fichier xlrplus.ini dans extplugins/conf

Code : Tout sélectionner

[commands]
xlrreset-reset: 1
tu fais comme ça au debut de ton plugin

Code : Tout sélectionner

# Allow players to reset their stats using !xlrreset or !reset

__author__  = 'NoYd'
__version__ = '0.1'

import b3
import b3.plugin
from b3.functions import getCmd

class Xlrplus(b3.plugin.Plugin):

    _adminPlugin = None

puis ta fonction onStartup

Code : Tout sélectionner

    def onStartup(self):
        
        self._adminPlugin = self.console.getPlugin('admin')
        
        if not self._adminPlugin:
            self.error('Could not find admin plugin')
            return False
			
        if 'commands' in self.config.sections():
            for cmd in self.config.options('commands'):
                level = self.config.get('commands', cmd)
                sp = cmd.split('-')
                alias = None
                if len(sp) == 2:
                    cmd, alias = sp

                func = getCmd(self, cmd)
                if func:
                    self._adminPlugin.registerCommand(self, cmd, level, func, alias)
puis ta fonction cmd_xlrreset, que moi je ferais comme ça

Code : Tout sélectionner

    def cmd_xlrreset(self, data, client, cmd=None):
        """\
        Reset your XLRstats
        """
           
        cursor = self.console.storage.query("""
        UPDATE xlr_playerstats
        SET kills =  0, deaths =  0, teamdeaths =  0, suicides =  0, ratio =  0, skill =  0, curstreak =  0, winstreak =  0, losestreak =  0, rounds =  0 
        WHERE client_id = '%s'
        """ % (client.id))
        cursor.close()
-[TPF]-PtitBigorneau
http://www.PtitBigorneau.fr

Répondre