self.stay_channels=config_stay_channels
self.play_channels=config_play_channels
self.play_status={i:[0] for i in self.play_channels}
- self.scores={}
def give_me_my_pseudo(self,serv):
serv.privmsg("NickServ","RECOVER %s %s"%(config_pseudo,config_password))
if self.play_status[channel][0]==1:
if token==None:
# c'est donc que l'indice a été demandé
- if self.play_status[channe][-1]+config_time_incompressible_clue<time.time():
+ if self.play_status[channel][-1]+config_time_incompressible_clue<time.time():
token=self.play_status[channel][-1]
if self.play_status[channel][-1]==token:
indice=self.play_status[channel][2]
if cmd=="help":
helpmsg_default="""Liste des commandes :
HELP Affiche ce message d'aide
+ SCORE Affiche ton score (SCORE TRANSFERT <pseudo> [<n>] pour transférer des points)
SCORES Affiche les scores"""
helpmsg_ops="""
JOIN Faire rejoindre un channel (sans paramètres, donne la liste des chans actuels)
PLAY Passe un channel en mode "jouer"
NOPLAY Passe un channel en mode "ne pas jouer" """
helpmsg_overops="""
+ SCORES {DEL|ADD|SUB} Tu veux un dessin ?
SAY Fais envoyer un message sur un chan ou à une personne
STAY Ignorera les prochains LEAVE pour un chan
NOSTAY Opposé de STAY
if auteur in self.overops:
self.die()
elif cmd=="score":
- serv.privmsg(auteur,"Votre score : %s"%(self.scores.get(auteur,0)) )
+ if len(message)>1:
+ if len(message) in [3,4] and message[1].lower()=="transfert":
+ scores=self.get_scores()
+ de,to=auteur,message[2]
+ value=scores.get(de,0)
+ if len(message)==4:
+ try:
+ asked=int(message[3])
+ except ValueError:
+ serv.privmsg(auteur,"Syntaxe : SCORE TRANSFERT <pseudo> [<n>]")
+ return
+ else:
+ asked=value
+ if value==0:
+ serv.privmsg(auteur,"Vous n'avez pas de points")
+ return
+ elif asked<=0:
+ serv.privmsg(auteur,"Bien tenté…")
+ return
+ elif asked>value:
+ serv.privmsg(auteur,"Vous n'avez que %s points"%(value))
+ return
+ else:
+ self.add_score(de,-asked)
+ self.add_score(to,asked)
+ serv.privmsg(auteur,"Transfert de %s points de %s à %s"%(asked,de,to))
+ else:
+ serv.privmsg(auteur,"Syntaxe : SCORE TRANSFERT <pseudo> [<n>]")
+ else:
+ serv.privmsg(auteur,"Votre score : %s"%(self.get_scores().get(auteur,0)) )
elif cmd=="scores":
- scores=self.get_scores().items()
- # trie par score
- scores.sort(lambda x,y:cmp(x[1].lower(),y[1].lower()))
- scores.reverse()
- serv.privmsg(auteur,"Scores by score : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
- # trie par pseudo
- scores.sort(lambda x,y:cmp(x[0],y[0]))
- scores.reverse()
- serv.privmsg(auteur,"Scores by pseudo : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
+ if len(message)==1:
+ scores=self.get_scores().items()
+ # trie par score
+ scores.sort(lambda x,y:cmp(x[1],y[1]))
+ scores.reverse()
+ serv.privmsg(auteur,"Scores by score : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
+ # trie par pseudo
+ scores.sort(lambda x,y:cmp(x[0].lower(),y[0].lower()))
+ scores.reverse()
+ serv.privmsg(auteur,"Scores by pseudo : "+" ; ".join(["%s %s"%(i[0],i[1]) for i in scores]))
+ elif auteur in self.overops:
+ souscmd=message[1].lower()
+ if souscmd=="del":
+ if len(message)==3:
+ todelete=message[2]
+ scores=self.get_scores()
+ if scores.has_key(todelete):
+ del scores[todelete]
+ self.save_scores(scores)
+ serv.privmsg(auteur,"Score de %s supprimé"%(todelete))
+ else:
+ serv.privmsg(auteur,"Ce score n'existe pas : %s"%(todelete))
+ else:
+ serv.privmsg(auteur,"Syntaxe : SCORES DEL <pseudo>")
+ elif souscmd in ["add","sub"]:
+ if len(message)==4:
+ toadd,val=message[2],message[3]
+ try:
+ val=int(val)
+ except ValueError:
+ serv.privmsg(auteur,"Syntaxe : SCORES {ADD|SUB} <pseudo> <n>")
+ return
+ if souscmd=="sub":
+ val=-val
+ self.add_score(toadd,val)
+ serv.privmsg(auteur,"Done")
+ else:
+ serv.privmsg(auteur,"Syntaxe : SCORES {ADD|SUB} <pseudo> <n>")
+ else:
+ serv.privmsg(auteur,"Syntaxe : SCORES {DEL|ADD|SUB} <pseudo> [<n>]")
+ else:
+ notunderstood=True
else:
notunderstood=True
if notunderstood:
serv.privmsg(canal,"%s: Rappel : %s"%(auteur,self.play_status[canal][1]))
else:
serv.privmsg(canal,"%s: pas ici…"%(auteur))
+ if cmd=="indice" and canal in self.play_channels:
+ self.give_indice(serv,canal,None)
else:
tryother=True
else:
if re.match(tolere(answer_regexp),unicode(message,"utf8").lower()):
answer=self.play_status[canal][4]
serv.privmsg(canal,"%s: bravo ! (C'était %s)"%(auteur,answer))
- self.scoreplus(auteur)
+ self.add_score(auteur,1)
token=time.time()
self.play_status[canal]=[0,token]
serv.execute_delayed(random.randrange(Ttrig*5,Ttrig*10),self.start_enigme,(serv,canal,token))
f.close()
return scores
- def scoreplus(self,pseudo):
+ def add_score(self,pseudo,value):
scores=self.get_scores()
if scores.has_key(pseudo):
- scores[pseudo]+=1
+ scores[pseudo]+=value
else:
- scores[pseudo]=1
+ scores[pseudo]=value
self.save_scores(scores)
def save_scores(self,scores):