Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


encore moi pour un essais du celebre !bip du mirc
#1

tcl
# all 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 all(flood) 5:10
 
# Ignorer l'utilisateur après son flood (0=non, 1=oui) :
set all(ignore) 0
 
# Si oui, combien de temps (en minutes) :
set all(ignoretime) 0
 
# Laisser faire les utilisateurs ayant certains flags :
set all(ignflags) "fmnov|fmnov"
 
 
## Réponses aux !all   ##############################################
#####################################################################
 
# Channels où le bot répondra :
set all(chans) "#irc-pacifique"  
set all(msgs) {
      var %i = 1, %z = 1, %t = $ceil($calc($nick($chan,0)/150))
      while (%i <= %t) { unset %a
        var %u = 1 | while (%u <= $iif(%i = %t, $calc($nick($chan,0)-((%t -1)*40)), 40)) {
          set %a $instok(%a,$nick($chan,%z),0,46)
          inc %u | inc %z
        }
      puthelp "PRIVMSG $channel :[Reveillez-Vous  $replace(%a,$chr(46),$chr(32)) | msg $chan  On se BouGe suR   $chan Bande de Roupilleurs !!! | inc %i]"
      }
    }
proc all:pub {nick uhost hand channel arg} {
global all all botnick
if ![matchattr $nick $all(ignflags) $channel] {
   if {[all:flood $nick $uhost]} {
      return 0
   }
}
if {(([lsearch -exact [string tolower $all(chans)] [string tolower $channel]] != -1) || ($all(chans) == "*")) && (![matchattr $hand b]) && ($nick != $botnick)} {
   if ![string length $arg] {
      puthelp "PRIVMSG $channel :[lindex $all(msgs) [rand [llength $all(msgs)]]] $nick"
      return 1
   }
}
}
#####################################################################
#####################################################################
#####################################################################
 
proc all:flood:init {} {
global all allflood
set all(floodnum) [lindex [split $all(flood) :] 0]
set all(floodtime) [lindex [split $all(flood) :] 1]
set i [expr $all(floodnum) - 1]
while {$i >= 0} {
   set allflood($i) 0
   incr i -1
}
}
all:flood:init
 
proc all:flood {nick uhost} {
global all allflood botnick
if {$all(floodnum) == 0} {
   return 0
}
set i [expr $all(floodnum) - 1]
while {$i >= 1} {
   set allflood($i) $allflood([expr $i - 1])
   incr i -1
}
set allflood(0) [unixtime]
if {[expr [unixtime] - $allflood([expr $all(floodnum) - 1])] <= $all(floodtime)} {
   if {$all(ignore)} {
      allignore [join [maskhost *!*[string trimleft $uhost ~]]] $botnick "Flood" $all(ignoretime)
   }
   return 1
} {
   return 0
}
}
 
 
putlog "Auteur inconnu actuellement"

Away
#2
Quelques conseils en vrac :

Tu devrais mettre une description quand tu soumets un script, qu'on ne soit pas obligé de lire le code pour comprendre à quoi ça sert car tout le monde ne sait pas lire le Tcl.

Utilise les balises [tcl] et [/tcl] du forum quand tu postes du code Tcl boudiou crénom de rogntudjuu [Image: http://www.eggdrop.fr/board/images/icons/rolleyes.gif]
(j'ai édité ton message pour y ajouter les balises, c'est-y pas mieux comme ça ?)

Si tu utilises des commandes et la syntaxe de mIRC dans du code en Tcl, ça ne va pas fonctionner (la commande var, les variables précédées d'un % au lieu d'un $, et les fonctions $replace et $chr par exemple)

Utilise un namespace (voir ici) plutôt qu'un array, ça évitera ainsi les conflits plus que probables que tu vas avoir si tu utilises des noms de variables aussi simples que $i $u $t ou $z.

On sent l'effort pour passer de mIRC au Tcl, c'est bien de toujours vouloir allez plus loin et apprendre de nouveaux truc, nous ne pouvons que t'y encourager. ;)
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#3
oups desoler pour les balises.mais bon des fois je suis tete en l aire.merci pour le namesspace je vais regarder ca de pres.et merci de m encourager parce que je suis debutant en tcl et j apprend po de facoin conventionnel je suis plu a apprendre sur le tas et vos encouragement me font plaisir
Away
#4
oula j ai pas bien compris l histoire du namespace.je suis desoler
Away
#5
jai re tenter avec ceci dite moi si je suis sur la bonne voie

tcl
# all 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 all(flood) 5:10
 
# Ignorer l'utilisateur après son flood (0=non, 1=oui) :
set all(ignore) 0
 
# Si oui, combien de temps (en minutes) :
set all(ignoretime) 0
 
# Laisser faire les utilisateurs ayant certains flags :
set all(ignflags) "fmnov|fmnov"
 
 
## Réponses aux !all   ##############################################
#####################################################################
 
# Channels où le bot répondra :
set all(chans) "#irc-pacifique"  
proc all_all {nick uhost hand channel } {
   global all_regular
   set hand [all_isauth $nick $channel]
   if [string length $hand]
            foreach victim [nicklist $channel] {
                puthelp "PRIVMSG $channel :[4Reveillez-Vous  4On se BouGe suR   $chan Bande de Roupilleurs 9!8!4!]"
               }
            }
 
#####################################################################
#####################################################################
#####################################################################
 
proc all:flood:init {} {
global all allflood
set all(floodnum) [lindex [split $all(flood) :] 0]
set all(floodtime) [lindex [split $all(flood) :] 1]
set i [expr $all(floodnum) - 1]
while {$i >= 0} {
   set allflood($i) 0
   incr i -1
}
}
all:flood:init
 
proc all:flood {nick uhost} {
global all allflood botnick
if {$all(floodnum) == 0} {
   return 0
}
set i [expr $all(floodnum) - 1]
while {$i >= 1} {
   set allflood($i) $allflood([expr $i - 1])
   incr i -1
}
set allflood(0) [unixtime]
if {[expr [unixtime] - $allflood([expr $all(floodnum) - 1])] <= $all(floodtime)} {
   if {$all(ignore)} {
      allignore [join [maskhost *!*[string trimleft $uhost ~]]] $botnick "Flood" $all(ignoretime)
   }
   return 1
} {
   return 0
}
}
 
 
putlog "Auteur inconnu actuellement"

Away


Forum Jump:


Users browsing this thread: 1 Guest(s)