Communauté sur les Eggdrops - Community about Eggdrops
mini tcl sur fin - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (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)
+--- Thread: mini tcl sur fin (/showthread.php?tid=102)



mini tcl sur fin - caline012 - 14/11/2007


tcl
# Fin v1
# caline
# par caline
# 14/11/2007
 
#####################################################################
## Configuration du Script ##########################################
#####################################################################
 
# Anti flood sur les commandes du Bot x:y (x=nombre de fois, y=secondes) :
set fin(flood) 5:10
 
# Ignorer l'utilisateur après son flood (0=non, 1=oui) :
set fin(ignore) 0
 
# Si oui, combien de temps (en minutes) :
set fin(ignoretime) 0
 
# Laisser faire les utilisateurs ayant certains flags :
set fin(ignflags) "fmnov|fmnov"
 
 
## Réponses aux !fin   ##############################################
#####################################################################
 
# Channels où le bot répondra :
set !fin(chans) "#irc-pacifique"
 
# Editer les mots auxquels le bot doit répondre :
bind pub -|- !fin din:pub:!fin
bind pub -|- fin fin:pub:fin
 
# Réponses à l'utilisateur :
set !fin(msgs) {
   "Après avoir bien regardé dans la boule de cristal, je peux dire que finira ses 20 dernières année de sa vie en prison."
   "Après avoir bien regardé dans la boule de cristal, je peux dire que mourra dans son lit en paix"
   "Aie ça me dis rien de bon, il semblerait que tu meurs dans un incendie brulé vif"
   "Ben euhHhh d'après ma boule qui se trompe jamais finira enterré vivant."
   "T'inquiète pas rien de grave, tu mourras à l'hôpital 10 ans après le début de ton cancer enfin ça va ya pire quoi!!!"
   "Perso je crois qu'il faut que tu arrêtes la tequila,parce que je te vois mourir après avoir pris environ 16 vers Q-sec et d'affilé en plus !!!"
   "Un jour tu seras pris de la passion de la voile, et tu mourras pendant la route du rhum (en croyant que le but de la course c'etait de boire le plus durant la traversée)"
   "Ben alors la je sais pas mais c'est vague je trouve pas ta mort,par contre je crois pouvoir dire que tu t'appelle Dracula !! Attention un vampire"
   "Tu gagneras plein de sous, tu attireras les femmes mais tu mourras lors d'un rapport sexuel dsl!!!"
   "ben apparemment,tu vas mourrir tout connement en tombant d'un trottoir"
   "Arrête la drogue, car tu vas mourir d'une balle dans la tête lors d'un rendez-vous avec des jamaiquains pour de la weed"
   "Si j'ai bien vu mourras après s'être fumé un 35 feuilles perso. SalE DrOgUé"
   "Ben tu mourras étouffé avec un spaghetti alors ben euh bonne chance"
   "Tu finiras ta vie bouffé par un lion dans un zoO"
   "Ben euh je pense que finira sa vie à la suite d'être enculé par des schtroumpfs"
   "Un jour, tu oubliras de respirer et pouf tu seras mort, c'est con !!"
   "tu vas mourrir bouffé par un requin à marineland"
   "tu vas finir ta vie lors d'un saut à l'élastique où ils auront oublié de mettre l'élastique, c'est con !!"
   "Tu finiras tout simplement ta vie pendu à la suite d'une longue dépression"
   "Un jour, tu vas jouer au diabolo et tu vas t'étrangler avec la ficelle"
   "Tu va mourrir là d'une baston avec des moustiques qui finirons par te vider de ton sang"
   "finira enseveli par du sable mouvant"
   "Tu mourras dans ton lit d'hopital à la suite d'une erreur des médecins, il t'ont fait une greffe du coeur à la place de soigner ton bras" 
}
proc fin:pub:!fin {nick uhost hand channel arg} {
global !fin new botnick
if ![matchattr $nick $fin(ignflags) $channel] {
   if {[fin:flood $nick $uhost]} {
      return 0
   }
}
if {(([lsearch -exact [string tolower $!fin(chans)] [string tolower $channel]] != -1) || ($!fin(chans) == "*")) && (![matchattr $hand b]) && ($nick != $botnick)} {
   if ![string length $arg] {
      puthelp "PRIVMSG $channel :[lindex $!fin(msgs) [rand [llength $!fin(msgs)]]] $nick"
      return 1
   }
}
}
#####################################################################
#####################################################################
#####################################################################
 
proc fin:flood:init {} {
global fin finflood
set fin(floodnum) [lindex [split $fin(flood) :] 0]
set fin(floodtime) [lindex [split $fin(flood) :] 1]
set i [expr $fin(floodnum) - 1]
while {$i >= 0} {
   set finflood($i) 0
   incr i -1
}
}
fin:flood:init
 
proc fin:flood {nick uhost} {
global fin finflood botnick
if {$fin(floodnum) == 0} {
   return 0
}
set i [expr $fin(floodnum) - 1]
while {$i >= 1} {
   set finflood($i) $finflood([expr $i - 1])
   incr i -1
}
set finflood(0) [unixtime]
if {[expr [unixtime] - $finflood([expr $fin(floodnum) - 1])] <= $fin(floodtime)} {
   if {$fin(ignore)} {
      newignore [join [maskhost *!*[string trimleft $uhost ~]]] $botnick "Flood" $fin(ignoretime)
   }
   return 1
} {
   return 0
}
}
 
 
putlog "Auteur inconnu actuellement"




RE: mini tcl sur fin - caline012 - 14/11/2007

voila jai un soucis sur un chan si on fait !fin il ne dicte aucun message


RE: mini tcl sur fin - CrazyCat - 15/11/2007

Il y a des erreurs:

tcl
bind pub -|- !fin din:pub:!fin
bind pub -|- fin fin:pub:fin

Dans la première ligne, tu appelles din:pub:!fin
Dans le seconde, c'est pas du tout la même chose, tu appelles la procédure fin:pub:fin qui n'est pas définie.

Je te conseille donc de mettre comme binds:

tcl
bind pub -|- !fin fin:pub:fin
bind pub -|- fin fin:pub:fin

Et de définir ta précdure ainsi:

tcl
proc fin:pub:fin {nick uhost hand channel arg} {

En effet, le "!" dans le nom de la procédure peut être génant.


RE: mini tcl sur fin - caline012 - 15/11/2007

erf marche po mieu mais je pense v le recommencer a z parce que la jai socis et vois pas trop ou


RE: mini tcl sur fin - MenzAgitat - 15/11/2007

Â
Fais un effort pour écrire caline012, on n'est pas sur un téléphone portable.


RE: mini tcl sur fin - caline012 - 15/11/2007


tcl
# Fin v1
# caline
# par caline
# 14/11/2007
 
#####################################################################
## Configuration du Script ##########################################
#####################################################################
 
# Anti flood sur les commandes du Bot x:y (x=nombre de fois, y=secondes) :
set fin(flood) 5:10
 
# Ignorer l'utilisateur après son flood (0=non, 1=oui) :
set fin(ignore) 0
 
# Si oui, combien de temps (en minutes) :
set fin(ignoretime) 0
 
# Laisser faire les utilisateurs ayant certains flags :
set fin(ignflags) "fmnov|fmnov"
 
 
## Réponses aux !fin   ##############################################
#####################################################################
 
# Channels où le bot répondra :
set fin(chans) "#irc-pacifique"
 
# Editer les mots auxquels le bot doit répondre :
bind pub - !fin fin:pub
 
# Réponses à l'utilisateur :
set fin(msgs) {
   "Après avoir bien regardé dans la boule de cristal, je peux dire que finira ses 20 dernières année de sa vie en prison."
   "Après avoir bien regardé dans la boule de cristal, je peux dire que mourra dans son lit en paix"
   "Aie ça me dis rien de bon, il semblerait que tu meurs dans un incendie brulé vif"
   "Ben euhHhh d'après ma boule qui se trompe jamais finira enterré vivant."
   "T'inquiète pas rien de grave, tu mourras à l'hôpital 10 ans après le début de ton cancer enfin ça va ya pire quoi!!!"
   "Perso je crois qu'il faut que tu arrêtes la tequila,parce que je te vois mourir après avoir pris environ 16 vers Q-sec et d'affilé en plus !!!"
   "Un jour tu seras pris de la passion de la voile, et tu mourras pendant la route du rhum (en croyant que le but de la course c'etait de boire le plus durant la traversée)"
   "Ben alors la je sais pas mais c'est vague je trouve pas ta mort,par contre je crois pouvoir dire que tu t'appelle Dracula !! Attention un vampire"
   "Tu gagneras plein de sous, tu attireras les femmes mais tu mourras lors d'un rapport sexuel dsl!!!"
   "ben apparemment,tu vas mourrir tout connement en tombant d'un trottoir"
   "Arrête la drogue, car tu vas mourir d'une balle dans la tête lors d'un rendez-vous avec des jamaiquains pour de la weed"
   "Si j'ai bien vu mourras après s'être fumé un 35 feuilles perso. SalE DrOgUé"
   "Ben tu mourras étouffé avec un spaghetti alors ben euh bonne chance"
   "Tu finiras ta vie bouffé par un lion dans un zoO"
   "Ben euh je pense que finira sa vie à la suite d'être enculé par des schtroumpfs"
   "Un jour, tu oubliras de respirer et pouf tu seras mort, c'est con !!"
   "tu vas mourrir bouffé par un requin à marineland"
   "tu vas finir ta vie lors d'un saut à l'élastique où ils auront oublié de mettre l'élastique, c'est con !!"
   "Tu finiras tout simplement ta vie pendu à la suite d'une longue dépression"
   "Un jour, tu vas jouer au diabolo et tu vas t'étrangler avec la ficelle"
   "Tu va mourrir là d'une baston avec des moustiques qui finirons par te vider de ton sang"
   "finira enseveli par du sable mouvant"
   "Tu mourras dans ton lit d'hopital à la suite d'une erreur des médecins, il t'ont fait une greffe du coeur à la place de soigner ton bras" 
}
proc fin:pub {nick uhost hand channel arg} {
global fin fin botnick
if ![matchattr $nick $fin(ignflags) $channel] {
   if {[fin:flood $nick $uhost]} {
      return 0
   }
}
if {(([lsearch -exact [string tolower $fin(chans)] [string tolower $channel]] != -1) || ($fin(chans) == "*")) && (![matchattr $hand b]) && ($nick != $botnick)} {
   if ![string length $arg] {
      puthelp "PRIVMSG $channel :[lindex $fin(msgs) [rand [llength $fin(msgs)]]] $nick"
      return 1
   }
}
}
#####################################################################
#####################################################################
#####################################################################
 
proc fin:flood:init {} {
global fin finflood
set fin(floodnum) [lindex [split $fin(flood) :] 0]
set fin(floodtime) [lindex [split $fin(flood) :] 1]
set i [expr $fin(floodnum) - 1]
while {$i >= 0} {
   set finflood($i) 0
   incr i -1
}
}
fin:flood:init
 
proc fin:flood {nick uhost} {
global fin finflood botnick
if {$fin(floodnum) == 0} {
   return 0
}
set i [expr $fin(floodnum) - 1]
while {$i >= 1} {
   set finflood($i) $finflood([expr $i - 1])
   incr i -1
}
set finflood(0) [unixtime]
if {[expr [unixtime] - $finflood([expr $fin(floodnum) - 1])] <= $fin(floodtime)} {
   if {$fin(ignore)} {
      newignore [join [maskhost *!*[string trimleft $uhost ~]]] $botnick "Flood" $fin(ignoretime)
   }
   return 1
} {
   return 0
}
}
putlog "Auteur inconnu actuellement"



voila la ca marche nikel je le pose en telechargement
Edit CrazyCat: merci d'utiliser les balises tcl et /tcl. Et lorsque le script fonctionne bien, il n'est pas forcémment utile de mettre le code ici si tu le met en téléchargement :)


RE: mini tcl sur fin - caline012 - 15/11/2007

a voir une utilisation sur different pseudo du style !fin [nick] voila have fun