Poster une réponse  Créer un sujet 
Probleme de commande quizz
Auteur Message
loulou7593
Member
***


Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut : Hors ligne
Message : #1
Probleme de commande quizz

Bonjour, je viens car j'ai un petit soucis avec un tcl de quizz.

voici la procedure de lancement du jeux

TCL :
bind pub -|b !bac KAOS_Start
 
# Global Variables
set KAOSRunning 0
set KAOSAllAnswered 0
set KAOSRoundOver 0
set KAOSQNumber 0
set KAOSQuestion ""
set KAOSQuestions(0) ""
set KAOSAsked ""
set KAOSMonthFileName ""
set KAOSQCount 0
set KAOSAnswerCount 0
set KAOSDisplayNum 0
set KAOSNumAnswered 0
set KAOSForced 0
set KAOSForcedQuestion ""
set KAOSAutoStart 0
 
# Scores And Ads
set KAOSAdNumber 0
set KAOSAd(0) "$botnick"
set KAOSAd(1) "$botnick"
set KAOSAd(2) "$botnick"
set KAOSAd(3) "$botnick"
set KAOSLastMonthScores(0) "Vide 0"
set KAOSLastMonthScores(1) "Vide 0"
set KAOSLastMonthScores(2) "Vide 0"
 
# Timers
set KAOSAdTimer ""
set KAOSQuestionTimer ""
 
# Version
set KDebug 0
set KAOSVersion "0.91.0"
 
#
# Start KAOS
#
proc KAOS_Start {nick uhost hand chan args} {
global KAOSChannel KAOSRunning KAOSQCount KAOSQNumber chanban KAOSAdNumber KAOSVersion KDebug
global botnick
set args [stripcodes bcruag $args]
 
if {($chan != $KAOSChannel)||($KAOSRunning != 0)} {return}
if {![isop $nick $chan]} {return}
if {![$botnick]} {return}
 
set KAOSQCount 0
set KAOSAdNumber 0
 
KAOS_ReadCFG
 
if {![file exist $chanban]} {
   putcmdlog "\[KAOS\] Question File: $chanban Unreadable Or Does Not Exist"
   return 0
}
 
set KAOSQCount [KAOS_ReadQuestionFile]
 
if {$KAOSQCount < 2} {
   putcmdlog "\[KAOS\] Not Enough Questions in Question File $chanban"
   return 0
}
 
set KAOSAskedFileLen [KAOS_ReadAskedFile]
 
if {$KAOSAskedFileLen >= $KAOSQCount} {
   kaosmsg "[kaos] [kcr] Mise à jour de la base de donnée tapez !bac \003"
   KAOS_ResetAsked
   return 0
}
 
set KAOSRunning 1
 
kaosmsg "[kaos] [kcm]Jeu du KAOS\[$KAOSQCount Questions\] \003"
 
bind pubm - "*" KAOSCheckGuess
 
KAOSAskQuestion
 
return 1
}


mon soucis est que j'ai rajouté une commande pour que toutes les deux heures la base de données des questions change et qu'ensuite le bot tape !bac sur le saln pour RElancer le jeu, mais apparement quand c'est lui meme qui tape !bac ca ne prend pas en compte la commande et le jeu ne se lance pas.

j'ai bien rajouté dans la procedure de lancement un flag pour le bot comme ca
TCL :
bind pub -|b !bac KAOS_Start


et cette ligne de façon a ce qu'il n'y ai que les op qui puisse lancer le quizz et aussi le bot
comme ceci
TCL :
proc KAOS_Start {nick uhost hand chan args} {
global KAOSChannel KAOSRunning KAOSQCount KAOSQNumber chanban KAOSAdNumber KAOSVersion KDebug
global botnick
set args [stripcodes bcruag $args]
 
if {($chan != $KAOSChannel)||($KAOSRunning != 0)} {return}
if {![isop $nick $chan]} {return}
if {![$botnick]} {return}


mais je pense qu'il doit y avoir une erreur quelque part.

Si quelqu'un peu m'aider.

Merci

31/12/2011 14:57
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
CrazyCat
Administrator
*******


Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut : Hors ligne
Message : #2
RE: Probleme de commande quizz

Un eggdrop ne réagit pas à ce qu'il dit en canal.
Donc si ton eggdrop dit "!bac", le bind pub ne réagit pas.

Il serait plus simple que la procédure qui change la base de données appelle directement la procédure KAOS_Start. C'est d'ailleurs la seule méthode logique (pour ne pas dire intelligente) à utiliser.


Trucs et astuces en programmation - Je suis actuellement
31/12/2011 18:18
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
loulou7593
Member
***


Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut : Hors ligne
Message : #3
RE: Probleme de commande quizz

Bonjour,

Meilleurs voeux à toutes et tous.

J'ai deja essayé de faire en sorte que la procédure appelle KAOS_Start, mais j'ai cette erreur en PL

TCL :
[02:56:20] wrong # args: should be "KAOS_Start nick uhost hand chan ..."

01/01/2012 02:59
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
CrazyCat
Administrator
*******


Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut : Hors ligne
Message : #4
RE: Probleme de commande quizz

Il faut que tu appelles la procédure avec les arguments qu'elle recevrait si elle était appelée par un bind pub.


Trucs et astuces en programmation - Je suis actuellement
01/01/2012 15:52
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
loulou7593
Member
***


Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut : Hors ligne
Message : #5
RE: Probleme de commande quizz

en fait pour faire le systeme de rotation de base de donnée, j'ai repris une partie d'un code qui se trouve de fun.tcl et j'ai fait comme ceci

TCL :
## Systeme de rotation des bases de données #########################
#####################################################################
 
# Channels où seront envoyés les blagues :
set rotation(chans) "#accueil"
 
# Intervalle de temps entre chaque blague en minutes (0=désactivé) :
set rotation(time) 120
 
# Editer ici les blagues :
set rotation(msgs) {
   "1.db"
   "2.db"
   "3.db"
   "4.db"
   "5.db"
   "6.db"
   "7.db"
   "8.db"
   "9.db"
   "10.db"
   "11.db"
   "12.db"
   "13.db"
   "14.db"
}
 
#####################################################################
#####################################################################
#####################################################################
 
#nom du fichier texte à lire
set fname "scripts/quizz.cfg"
 
proc rot:pub:bot {nick uhost hand channel arg} {
global rot bot botnick
if ![matchattr $nick $rot(ignflags) $channel] {
   if {[rot:flood $nick $uhost]} {
      return 0
   }
}
if {(([lsearch -exact [string tolower $bot(chans)] [string tolower $channel]] != -1) || ($bot(chans) == "*")) && (![matchattr $hand b]) && ($nick != $botnick)} {
   putserv "PRIVMSG $channel :[lindex $bot(msgs) [rand [llength $bot(msgs)]]]"
   return 1
}
}
if {(($rotation(time) != 0) && (![string match "*rot:rotation*" [timers]]))} {
timer $rotation(time) rot:rotation
}
 
proc rot:rotation {} {
global rotation
global fname
set f [open "$fname" "a"]
puts $f "KAOSFile=scripts/[lindex $rotation(msgs) [rand [llength $rotation(msgs)]]]"
close $f
foreach channel $rotation(chans) {
   rehash
   puthelp "PRIVMSG $channel :Rotation de la base de donnée"
   puthelp "privmsg $channel :Mise à jour du quizz Veuillez patienter. Redemarrage en cours."
   utimer 20 KAOS_Start
}
 
if {(($rotation(time) != 0) && (![string match "*rot:rotation*" [timers]]))} {
   timer $rotation(time) rot:rotation
}
return 1
}


j'ai mis un utimer de façon a ce que apres le rehash tout ai le temps de se mettre en place et appelé KAOS_Start mais j'ai donc l'erreur en PL que j'ai montré avant.

01/01/2012 16:49
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
CrazyCat
Administrator
*******


Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut : Hors ligne
Message : #6
RE: Probleme de commande quizz

Oui, c'est ce que je t'ai dit, tu n'envoies aucun argument alors que la procédure attends nick, host, handle, chan et args.
Donc:

TCL :
utimer 20 KAOS_Start $::botnick [getchanhost $::botnick $channel] $::botnick $channel ""


Trucs et astuces en programmation - Je suis actuellement
01/01/2012 21:55
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
loulou7593
Member
***


Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut : Hors ligne
Message : #7
RE: Probleme de commande quizz

j'ai bien ajouté comme ceci

TCL :
proc rot:rotation {} {
global rotation
global fname
set f [open "$fname" "a"]
puts $f "KAOSFile=scripts/[lindex $rotation(msgs) [rand [llength $rotation(msgs)]]]"
close $f
foreach channel $rotation(chans) {
   rehash
   puthelp "PRIVMSG $channel :Rotation de la base de donnée"
   puthelp "privmsg $channel :Mise à jour du quizz Veuillez patienter. Redemarrage en cours :)."
   utimer 20 KAOS_Start $::botnick [getchanhost $::botnick $channel] $::botnick $channel ""
}
 
if {(($rotation(time) != 0) && (![string match "*rot:rotation*" [timers]]))} {
   timer $rotation(time) rot:rotation
}
return 1
}


toujours une erreur en PL

Code :
[22:36:00] Tcl error in script for 'timer101358':
[22:36:00] wrong # args: should be "utimer seconds command"

01/01/2012 22:51
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
CrazyCat
Administrator
*******


Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut : Hors ligne
Message : #8
RE: Probleme de commande quizz

Essaye avec:

TCL :
utimer 20 [list KAOS_Start $::botnick [getchanhost $::botnick $channel] $::botnick $channel ""]


Trucs et astuces en programmation - Je suis actuellement
02/01/2012 11:35
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
loulou7593
Member
***


Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut : Hors ligne
Message : #9
RE: Probleme de commande quizz

Bonjour,

J'ai procédé comme ceci

TCL :
proc rot:rotation {} {
global rotation
global fname
set f [open "$fname" "a"]
puts $f "KAOSFile=scripts/[lindex $rotation(msgs) [rand [llength $rotation(msgs)]]]"
close $f
foreach channel $rotation(chans) {
   rehash
   puthelp "PRIVMSG $channel :Rotation de la base de donnée"
   puthelp "privmsg $channel :Mise à jour du quizz Veuillez patienter. Redemarrage en cours :)."
   utimer 20 [list KAOS_Start $::botnick [getchanhost $::botnick $channel] $::botnick $channel ""]
}
 
if {(($rotation(time) != 0) && (![string match "*rot:rotation*" [timers]]))} {
   timer $rotation(time) rot:rotation
}
return 1
}


Je n'ai plus d'erreur en PL mais par contre ca ne relance pas le quizz.

Je joint le TCL entier en piece jointe ce sera peut etre plus comprehensible.


.tcl File  quizz.tcl (Taille : 23.17 Ko / Téléchargements : 2)

Ce message a été modifié le: 02/01/2012 16:06 par loulou7593.

02/01/2012 15:17
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
CrazyCat
Administrator
*******


Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut : Hors ligne
Message : #10
RE: Probleme de commande quizz

Est-ce que ton egg est op sur le canal ? Est-ce que tu as mis des putlog de debug dans la procédure KAOS_Start ?
On ne va pas tout te faire.


Trucs et astuces en programmation - Je suis actuellement
02/01/2012 21:04
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
loulou7593
Member
***


Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut : Hors ligne
Message : #11
RE: Probleme de commande quizz

Oui mon egg est op sur le canal.
Pour les putlog de debug sur la procedure KAOS_Start je n'ai rien fait car je ne sais pas pour putlog de debug.
Desole. Merci quand meme

02/01/2012 21:11
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
loulou7593
Member
***


Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut : Hors ligne
Message : #12
RE: Probleme de commande quizz

Si par hasard quelqu'un passe par ici et qu'il pourrais m'expliquer l'histoire des putlog de debug je suis preneur. Merci d'avance.

03/01/2012 19:35
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
CrazyCat
Administrator
*******


Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut : Hors ligne
Message : #13
RE: Probleme de commande quizz

En gros, tu reprends ton code pour afficher du debug et savoir où tu passes et ce qui déconne:

TCL :
proc KAOS_Start {nick uhost hand chan args} {
global KAOSChannel KAOSRunning KAOSQCount KAOSQNumber chanban KAOSAdNumber KAOSVersion KDebug
global botnick
set args [stripcodes bcruag $args]
 
if {($chan != $KAOSChannel)||($KAOSRunning != 0)} {putlog "Pas le bon chan ou Kaos ne tourne pas"; return;}
if {![isop $nick $chan]} {putlog "Ah ben je ($nick)ne suis pas op sur $chan"; return;}
if {![$botnick]} {putlog "$botnick n'est pas moi (truc inutile)"; return;}
putlog "En fait, c'est après que ça déconne"

Et en fonction du message affiché en party-line, tu sauras ce qui foire.


Trucs et astuces en programmation - Je suis actuellement
03/01/2012 21:20
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
loulou7593
Member
***


Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut : Hors ligne
Message : #14
RE: Probleme de commande quizz

Ok bin je vais faire ca en rentrant alors. Merci de ton eclaircissement.

03/01/2012 21:31
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Poster une réponse  Créer un sujet 

Discussions probablement similaires...
Discussion: Auteur Réponses: Affichages: Dernier message
  probleme de commande sur KAOS loulou7593 42 1,453 10/05/2011 17:29
Dernier message: alias_angelius
  Probleme avec commande AJOUT d'users loulou7593 14 385 10/07/2010 17:57
Dernier message: CrazyCat
  Probleme sur une !commande heretoc 3 292 22/06/2009 14:54
Dernier message: heretoc

Voir une version imprimable
Envoyer ce sujet à un ami
S'abonner au sujet | Ajouter le sujet aux favoris

Aller à :