|
Probleme de commande quizz
|
| Auteur |
Message |
loulou7593
Member
  
Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut :
Hors ligne
|
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
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
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
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 |
|
 |
CrazyCat
Administrator
      
Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut :
Hors ligne
|
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 |
|
 |
loulou7593
Member
  
Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut :
Hors ligne
|
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
[02:56:20] wrong # args: should be "KAOS_Start nick uhost hand chan ..."
|
|
| 01/01/2012 02:59 |
|
 |
CrazyCat
Administrator
      
Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut :
Hors ligne
|
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 |
|
 |
loulou7593
Member
  
Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut :
Hors ligne
|
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
## 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 |
|
 |
CrazyCat
Administrator
      
Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut :
Hors ligne
|
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:
utimer 20 KAOS_Start $::botnick [getchanhost $::botnick $channel] $::botnick $channel ""
Trucs et astuces en programmation - Je suis actuellement
|
|
| 01/01/2012 21:55 |
|
 |
loulou7593
Member
  
Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut :
Hors ligne
|
RE: Probleme de commande quizz
j'ai bien ajouté comme ceci
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
[22:36:00] Tcl error in script for 'timer101358':
[22:36:00] wrong # args: should be "utimer seconds command"
|
|
| 01/01/2012 22:51 |
|
 |
CrazyCat
Administrator
      
Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut :
Hors ligne
|
RE: Probleme de commande quizz
Essaye avec:
utimer 20 [list KAOS_Start $::botnick [getchanhost $::botnick $channel] $::botnick $channel ""]
Trucs et astuces en programmation - Je suis actuellement
|
|
| 02/01/2012 11:35 |
|
 |
loulou7593
Member
  
Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut :
Hors ligne
|
RE: Probleme de commande quizz
Bonjour,
J'ai procédé comme ceci
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.
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 |
|
 |
CrazyCat
Administrator
      
Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut :
Hors ligne
|
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 |
|
 |
loulou7593
Member
  
Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut :
Hors ligne
|
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 |
|
 |
loulou7593
Member
  
Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut :
Hors ligne
|
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 |
|
 |
CrazyCat
Administrator
      
Messages : 1,396
Groupe : Administrators
Inscription : Apr 2004
Statut :
Hors ligne
|
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:
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 |
|
 |
loulou7593
Member
  
Messages : 198
Groupe : Registered
Inscription : Apr 2008
Statut :
Hors ligne
|
RE: Probleme de commande quizz
Ok bin je vais faire ca en rentrant alors. Merci de ton eclaircissement.
|
|
| 03/01/2012 21:31 |
|
 |