Communauté Eggdrop
choisir un fichier aleatoire - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : choisir un fichier aleatoire (/showthread.php?tid=765)



choisir un fichier aleatoire - loulou7593 - 11/10/2010

Bonjour, j'aimerais avoir un peu d'aide car je cherche en vain comment faire pour que mon bot ecrive lui meme dans un fichier voulu.

J'explique
le fichier de configuration de mon quizz se nomme quizz.conf
dans ce fichier doit figurer le nom de la base de donnée des questions sous forme "QUIZZFile=scripts/1.db"

Maintenant je possede plusieurs bases de données qui sont "1.db" "2.db" "3.db" etc...

J'aimerais faire en sorte que toutes les 2 heures mon egg ecrive lui meme dans le fichier "quizz.conf" au hasard une de mes bases de données qui sont comprise ente 1.db et 5.db. C'est a dire le quizz s'active et 2 heures apres le l'egg ecris lui meme au hasard QUIZZFile=scripts/1.db ou au hasard QUIZZFile=scripts/3.db histoire que mes questions tournes assez.

Merci


RE: choisir un fichier aleatoire - loulou7593 - 11/10/2010

voici un petit bout de code si quelqu'un peut m'aider ce serais gentil.

tcl
proc ::AutoRotation {min hour args} {
global botnick fname
set mot1 [lindex $text 0]
set f [open "$fname" "a"]
puts $f "QUIZZFile=scripts/$mot1.db"
close $f
puthelp "PRIVMSG #chan :rotation des questions"
}
 
bind time -|- {*0 * * * *} ::AutoRotation
 
proc ::AutoRotation {min hour args} {
global botnick fname
set mot1 [lindex $text 0]
set f [open "$fname" "a"]
puts $f "QUIZZFile=scripts/$mot1.db"
close $f
puthelp "PRIVMSG #chan :rotation des questions"
}



J'ai actuellement 5 bases de données et j'aimerais donc que toutes les 2 heures ca change de base de donnée ainsi de suite.
Les bases de données se nommes 1.db 2.db 3.db 4.db et 5.db


RE: choisir un fichier aleatoire - CrazyCat - 11/10/2010

Tu peux faire un tirage aléatoire du fichier avec quelque chose du genre:
tcl
set mydb [glob -dir scripts *.tcl]
set QUIZZFile [lindex $mydb [rand [llength $mydb]]]



(à adapter bien sûr)


RE: choisir un fichier aleatoire - loulou7593 - 11/10/2010

J'ai testé comme ca

tcl
bind time -|- {*/2 * * * *} ::AutoRotation
 
proc ::AutoRotation {min hour args} {
global botnick fname
set mydb [glob -dir scripts *.db]
set QUIZZFile [lindex $mydb [rand [llength $mydb]]]
set f [open "$fname" "a"]
puts $f "QUIZZFile=scripts/$mydb"
close $f
puthelp "PRIVMSG #chan :rotation des questions"
}



Cela ne marche pas et je n'ai aucune erreur en PL :s


RE: choisir un fichier aleatoire - CrazyCat - 11/10/2010

tcl
bind time -|- {*/2 * * * *} ::AutoRotation
 
proc ::AutoRotation {min hour args} {
global botnick fname
set mydb [glob -dir scripts *.db]
set QUIZZFile [lindex $mydb [rand [llength $mydb]]]
set f [open "$fname" "a"]
puts $f "QUIZZFile=scripts/$QUIZZFile"
close $f
puthelp "PRIVMSG #chan :rotation des questions"
}


Par contre, il faut vérifier ce qui est mis dans $QUIZZFile: le fichier ou path + fichier.
Vive le putlog.


RE: choisir un fichier aleatoire - loulou7593 - 12/10/2010

en fait c'est dans le dossier scripts il y a un fichier quizz.cfg
et ce fichier quizz.conf contient l'info ecrite QUIZZFile=scripts/1.db ou QUIZZFile=scripts/2.db en fonction de ce que le bot
pourrais choisir comme .db


RE: choisir un fichier aleatoire - CrazyCat - 12/10/2010

Maintenant, tu as tous les éléments pour faire ce que tu veux, donc cherche un peu, je ne te donnerai pas la solution directe. Surtout parce que je n'ai pas tous les éléments et que si c'est pour que tu recopies bêtement, ça ne t'apportera rien.

Tu sais désormais choisir un fichier aléatoirement, à toi de te servir de ça.