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


scritp tcl !bombe
#1
re a tous,

donc je renouvelle ma demande pour mon script

!bombe cecile (un exemple)
détection de la bombe
amorçage
x-or le nom de mon eggdrop a kicke cecile

voila en gros ce que j'aimerais pour mon script bombe

est ce possible ?

merci bien cordialement
#2
C'est très simple à faire:

tcl
bind pub - "!bombe" bombe:go
proc bombe:go { nick uhost handle chan text } {
   set victim [lindex [split $text] 0]
   if { ![onchan $victim $chan] } { return 0; }
   puthelp "PRIVMSG $chan :Détection de la bombe"
   after 3000 puthelp "PRIVMSG $chan :Amorçage de la bombe"
   after 5000 putkick $chan $victim "La bombe vient d'exploser"
}

Bon, il y a surement des erreurs, mais voila en quelques secondes le système
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#3
salut ....
j'ai retrouvé un vieux code qui pourrais sans doute etre amelioré, mais je pense qu'il devrait te suffire ....


tcl
# BOMBE - v1.0.2
set bombe_version "1.0.2"
# par ToM (2004)
##########################################################################################################
#
# DESCRIPTION :
# Le jeu de la patate chaude
###############################################################################
# UTILISATION :
# !allume
#	pour allumer une bombe
# !bombe <nick>
#	pour passer la bombe à <nick>
# !feinte
#	pour faire semblant de passer la bombe à <nick>
# !desamorce
#	pour désamorcer la bombe
###############################################################################
# CHANGELOG :
# v1
#	Création du script d'après Jokes.tcl par Tozz
# v1.0.1
#	Correction d'un bug !
# v1.0.2
#	Correction d'un bug ! (oui encore)
###############################################################################
# TODO :
# !desamorce : devrait prendre un certain temps avant de désamorcer
# !desamorce : devrait foirer de temps en temps :)
###############################################################################
###############################################################################
# CONFIGURATION DU SCRIPT
###############################################################################
 
# Le message d'aide qui sera envoyé au nick qui reçoit la bombe
set bombe_message_aide "Pour passer la bombe tape !bombe suivi du nom de la personne ; tu peux aussi feinter avec !feinte nick. Si tu veux désamorcer tape !desamorce"
 
#salon ou  le script ne  dois PAS fonctionner
set bomb_forbidchan "#salon1 #salon2"
 
###############################################################################
# FIN DE LA CONFIGURATION
# Ne pas éditer plus bas tant que vous ne savez pas ce que vous faites :p
############################################################################### 
 
# COMMANDES BOMBE
bind pub - !allume bombe_allumage
bind pub - !bombe		bombe_passe
bind pub - !feinte	bombe_feinte
bind pub - !desamorce	bombe_desamorce
 
 
### Initialisation des variables globales
 
set bombe_en_cours 0
 
 
### !allume
 
proc bombe_allumage {nick host hand chan arg} {
 
	global bomb_forbidchan
 
	if {$chan == $bomb_forbidchan} {
		putserv "notice $nick :On ne s'explose pas la face sur $bombe_forbidchan !"
		return 1
	}
 
 
global bombe_en_cours bombe_allumeur bombe_porteur bombe_timer_moitie bombe_timer_fini bombe_chan bombe_a_tourne bombe_message_aide
 
	if {$bombe_en_cours == 0} {
		putserv "PRIVMSG $chan :$nick sifflote, sort une bombe de sa poche et l'allume... Psssshhhhhhhhhhh..."
		putnotc $nick "$bombe_message_aide"
 
		set bombe_en_cours 1
		set bombe_chan $chan
		set bombe_porteur $nick
		set bombe_allumeur $nick
		set bombe_a_tourne 0
		set bombe_timer_moitie [utimer 60 bombe_timer_moitie]
		set bombe_timer_fini [utimer 120 bombe_timer_fini]
	} else {
		if {[strlwr $nick] == [strlwr $bombe_allumeur]} {
			puthelp "PRIVMSG $chan :$nick t'as déjà amorcé une bombe, pas la peine de tout faire exploser !!"
		} else {
			puthelp "PRIVMSG $chan :$bombe_allumeur a déjà piégé le chan $bombe_chan. C'est $bombe_porteur qui l'a entre les mains ... jusqu'à ce qu'il tape !bombe $nick ;)"
		}
	}
 
}
 
 
 
### !bombe
 
proc bombe_passe {nick host hand chan arg} {
 
	global bombe_en_cours bombe_allumeur bombe_porteur bombe_timer_moitie bombe_timer_fini bombe_chan bombe_a_tourne bombe_message_aide
 
	if {$bombe_en_cours==0} { 
		puthelp "PRIVMSG $chan :$nick tu veux passer quoi là ? T'as pas de bombe encore... [underline]!allume[reset] en une :)"
		return 0
	}
 
	if {[strlwr $nick] != [strlwr $bombe_porteur]} {
		puthelp "PRIVMSG $chan :Euh $nick c'est pas toi qui a la bombe c'est $bombe_porteur ... tant qu'il tape pas !bombe $nick :)"
		return 0
	}
 
	if {$arg==""} {
		puthelp "PRIVMSG $chan :Ce serait sympa de préciser à qui tu veux refiler le bébé $nick :)"
		return 0	
	}
 
	if {[strlwr $arg] == [strlwr $nick]} {
		puthelp "PRIVMSG $chan :Euh $nick tu jongles avec la bombe là ? :)"
		return 0	
	}
 
	if {![onchan $arg $bombe_chan]} {
		puthelp "PRIVMSG $chan :Euh $nick je vois personne qui s'appelle $arg ici... Tu ferais mieux de la passer à quelqu'un de présent sur $bombe_chan :)"
	return 0	
	}
 
	if {[strlwr $arg] == [strlwr $bombe_allumeur]} {
		puthelp "PRIVMSG $chan :Ah ! La bombe a fait un tour et revient dans les mains de $bombe_allumeur sans que ça ait pété ! Beau jeu d'équipe !"
	} else {
		puthelp "PRIVMSG $chan :$nick jette la bombe à $arg... Vas-y débrouille toi avec ça !"
	}
 
	putnotc $arg "$bombe_message_aide"
	set bombe_porteur $arg
	set bombe_a_tourne 1
 
	return 0
 
}
 
### !feinte
 
proc bombe_feinte {nick host hand chan arg} {
 
	global bombe_en_cours bombe_allumeur bombe_porteur bombe_timer_moitie bombe_timer_fini bombe_chan bombe_a_tourne
 
	if {$bombe_en_cours==0} { 
		puthelp "PRIVMSG $chan :$nick tu veux feinter avec quoi ! Tape déjà !allume tu verras après :)"
		return 0
	}
 
	if {[strlwr $nick] != [strlwr $bombe_porteur]} {
		puthelp "PRIVMSG $chan :Euh $nick c'est pas toi qui a la bombe c'est $bombe_porteur ... tant qu'il tape pas !bombe $nick :)"
		return 0
	}
 
	if {$arg==""} {
		puthelp "PRIVMSG $chan :$nick tu devrais dire qui tu veux feinter..."
		return 0	
	}
 
	if {[strlwr $arg] == [strlwr $nick]} {
		puthelp "PRIVMSG $chan :lol y'a $nick qui se feinte tout seul :p"
		return 0	
	}
 
	if {![onchan $arg $bombe_chan]} {
		puthelp "PRIVMSG $chan :Euh $nick je vois personne qui s'appelle $arg ici... Tu ferais mieux de feinter quelqu'un de présent sur $bombe_chan :)"
		return 0	
	}
 
	if {[strlwr $arg] == [strlwr $bombe_allumeur]} {
		puthelp "PRIVMSG $chan :Ah ! C'est $bombe_allumeur qui l'a allumée cette bombe, c'est normal qu'il y ait des représailles :)"
	} else {
		puthelp "PRIVMSG $chan :$nick s'approche de $arg comme s'il allait l'embrasser ... lui fourre la bombe sous le nez... puis repart avec. Quel talent d'acteur !!"
	}
 
	return 0
 
}
 
### !desamorce
 
proc bombe_desamorce {nick host hand chan arg} {
 
	global bombe_en_cours bombe_allumeur bombe_porteur bombe_timer_moitie bombe_timer_fini bombe_chan bombe_a_tourne
 
	if {$bombe_en_cours==0} { 
		puthelp "PRIVMSG $chan :$nick tu veux désamorcer quoi là, t'as chaud ? Tape déjà !allume tu verras après :)"
		return 0
	}
 
	if {[strlwr $nick] != [strlwr $bombe_porteur]} {
		puthelp "PRIVMSG $chan :Euh $nick c'est pas toi qui a la bombe c'est $bombe_porteur ... tant qu'il tape pas !bombe $nick :)"
		return 0
	}
 
	if {$bombe_a_tourne==0} {
		puthelp "PRIVMSG $chan :$nick désamorce la tranquillement la bombe, sans avoir menacé personne avec. C'est une variante de la !roulette ? T'as de la chance qu'elle t'ait pas explosé en pleine tronche..."
	} else {
		puthelp "PRIVMSG $chan :$nick sort fébrilement sa p'tite pince et coupe le fil rouge. Il était temps, à mon avis ça allait pas tarder à péter !"
	}
 
	set bombe_en_cours 0
	if {[utimerexists bombe_timer_moitie]!=""} {killutimer $bombe_timer_moitie}
	if {[utimerexists bombe_timer_fini]!=""} {killutimer $bombe_timer_fini}
 
	return 0
 
}
 
### bombe_timer_moitie
 
proc bombe_timer_moitie {} {
 
global bombe_en_cours bombe_allumeur bombe_porteur bombe_timer_moitie bombe_timer_fini bombe_chan bombe_a_tourne
 
	if {$bombe_en_cours==0} { 
		return 0
	}
 
	if {$bombe_a_tourne==0} {
		puthelp "PRIVMSG $bombe_chan :La mèche de la bombe s'est déjà à moitié consumée, et c'est toujours $bombe_allumeur qui l'a dans les mains... $bombe_allumeur t'es pétrifié par la trouille ? :)"
	} else {
		puthelp "PRIVMSG $bombe_chan :$bombe_porteur s'aperçoit que la mèche de la bombe s'est déjà à moitié consumée..."
	}
 
}
 
### bombe_timer_fini
 
proc bombe_timer_fini {} {
 
	global bombe_en_cours bombe_allumeur bombe_porteur bombe_timer_moitie bombe_timer_fini bombe_chan bombe_a_tourne
 
	if {$bombe_en_cours==0} { 
		return 0
	}
 
	if {$bombe_a_tourne==0} {
		puthelp "PRIVMSG $bombe_chan :La mèche est totalement consumée, et $bombe_allumeur la tient toujours dans ses mains... C'était un suicide !"
		putserv "kick $bombe_chan $bombe_allumeur :[bold]BAOUM !!![bold] :'( Adieu on t'aimait bien !"
	} else {
		puthelp "PRIVMSG $bombe_chan :$bombe_porteur n'a pas le temps de passer la bombe qu'elle explose ! Saleté de $bombe_allumeur tu le paieras ! :)"
		putserv "kick $bombe_chan $bombe_porteur :[bold]BAOUM !!![bold] Ta mort sera vengée."
	}
 
	set bombe_en_cours 0
 
}
 
 
############################
# debug
############################
 
bind pub - !bdebug bombe_debug
proc bombe_debug {nick host hand chan arg} {
 
	global bombe_en_cours bombe_allumeur bombe_porteur bombe_timer_moitie bombe_timer_fini bombe_chan bombe_a_tourne bombe_message_aide
	puthelp "PRIVMSG $bombe_chan :bombe_en_cours -> $bombe_en_cours | bombe_chan -> $bombe_chan | bombe_a_tourne -> $bombe_a_tourne"
	puthelp "PRIVMSG $bombe_chan :bombe_allumeur -> $bombe_allumeur | bombe_porteur -> $bombe_porteur"
	puthelp "PRIVMSG $bombe_chan :bombe_timer_moitie -> $bombe_timer_moitie | bombe_timer_fini -> $bombe_timer_fini"
	puthelp "PRIVMSG $bombe_chan :$bombe_message_aide"
}
 
 
 
 
 
 
putlog "[bold]Bombe[bold] v$bombe_version par AzazeL. Tapez [underline]!allume[reset] :)"


voilà, a toi de le configurer pour ton chan /eggdrop et au besoin de le modifier, merci de l'aiser le nom de l'auteur.
#4
super merci pour vos réponses mais ou est ce que je pourrais apprendre à coder mes scripts moi meme si vous aviez des exemples de sites interressants

sinon merci beaucoup je vais voir tout ça

bien cordialement
#5
re , bha commence par les utiliser, les modifier, et en faisant des erreures tu apprendras, y a pas d'ecole du script :)
il te faut juste penser une sauvegarde "non modifiée" de tes scripts afin de pourvoir les remettre si il t'arries de ne plus pouvoir trouver une panne apres une modification.De plus tu peux lire ici, et le wiki, bien entendu ça aide beaucoup.tu as beaucoup d'aides aussi dans ton propre eggdrop.dans le dossier help notement.

Cordialement.
#6
je te remercie pour ta reponse bien cordialement
#7
J'adore les choses inutiles qui démontrent que celui qui a modifié n'a pas tout compris à ce que fait le tcl:

tcl
if [string match "*c*" [getchanmode $chan]] {
   putserv "PRIVMSG $chan :\00314Bombe \| \0031Joli\0034 $nick !! Tu as trouvé le bon fil \0031:D"
} else {
   putserv "PRIVMSG $chan :\00314Bombe \| \0031Joli\0034 $nick !! Tu as trouvé le bon fil \0031:D"
}

Donc, on regarde s'il y a un mode +c sur le canal (pour rappel, ce mode bloque les messages contenant des couleurs) mais qu'il y soit ou pas, on envoie un message avec du code couleur.

Maintenant, ce que j'en dis... :D
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#8
coucou ,
idée pour alliassangelius :
soit envoyer un msg sur le chan en disant que le mode +c ( ou +S ) est actif, et stopper le jeu, soit detecter on join si le un des deux modes est actif, "interdire" le commande et envoi d'une notice à l'utilisateur expliquand le pourquoi.

Cordialement.

ps : rappel pour les modes salon :

+c = bloque et interdit l'envois du msg avec couleurs .
+S = filtre le contenu et laisse envoyer le msg, mais sans couleurs.
#9
cestlemien Wrote:soit envoyer un msg sur le chan en disant que le mode +c ( ou +S ) est actif, et stopper le jeu, soit detecter on join si le un des deux modes est actif, "interdire" le commande et envoi d'une notice à l'utilisateur expliquand le pourquoi.

aliassangelius Wrote:oui ça peut être une idée sympa (à voir)

En fait, vous ne lisez qu'à moitié ce qui est dit dans les posts, et qu'un quart des scripts que vous postez ?
Il n'y a pas d'idée à inventer, il suffit de faire ce qui est en place dans le dernier couple de putserv: ne pas mettre les codes couleurs si le +c est activé.

Merci de réfléchir un peu avant de poster.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#10
re :)

pas faux, dans ce cas il faut revoir tout le code puis que meme pour l'anti flood c'est aussi en "couleur, d'ou l'idée de le faire on join ( ou alors comme tu dis, faire oui detection si mode +c /S envoisdu msg sans color, sinon "avec" . )

Cordialment.
#11
Re,
oui, donc le bot fait quoi si justement le +c est actif ? il est bloqué :p mais kick quand même apres XX temp si l'on tape la commande puisque les codes couleurs sont toujours dans le script :)

Cordialement)
#12
re ,
Alors soit j 'ai pas tout compris, soit ...

Quote:

set bombe(good) [lindex $bombe(list) [rand [llength $bombe(list)]]]
putlog "$bombe(list) + $bombe(good)"
putserv "PRIVMSG $chan :\00314Bombe \| \0031Attention\0034 $bombe(nick) \0031Tu dois couper le bon fil tu as 30 secondes :\0034 $bombe(list) \0031( !cut couleur )"
} else {
putserv "PRIVMSG $chan :\00314Bombe \| \0031Attention\0034 $bombe(nick) \0031Tu dois couper le bon fil tu as 30 secondes :\0034 $bombe(list) \0031( !cut couleur )"
}


Si le +c est mis, le message apparait comment sur le salon ?

(dsl si je joue les chieur là )

Cordialement.
#13
OMG ! Mais lisez les RFC et tenez-y vous ! Arrêtez d'inventer n'importe quoi qui ne sert à rien.
Je veux bien que vous ayez 15 ans à vous deux, mais il faut connecter les neurones à un moment.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#14
re ...

je voulait juste demontrer/chercher que si le +c est appliqué sur un des salons ou le bombe.tcl est actif, la plupart des message ne pourront être delivrés sur le dit salon à cause des couleurs dans le script.Et donc chercher une solution, soit la detection du +c, soit et faire agir le bot en fonction.Je ne vois en rien là dedans le fait que l'on "invente" quelque chose.

cordialement.
#15
cestlemien Wrote:je voulait juste demontrer/chercher que si le +c est appliqué sur un des salons ou le bombe.tcl est actif, la plupart des message ne pourront être delivrés sur le dit salon à cause des couleurs dans le script.Et donc chercher une solution, soit la detection du +c, soit et faire agir le bot en fonction.Je ne vois en rien là dedans le fait que l'on "invente" quelque chose.

La détection du +c était présente dans la première version qu'a donné alias_angelius, le souci était qu'il mettait les mêmes messages (avec les codes couleurs donc) dans les deux cas (présence ou non du +c).
Tout ce qu'il avait à faire était de supprimer les codes couleurs dans 50% des putserv.

La correction qu'alias_angelius a faite est encore pire que tout, on dirait que des lignes ont été effacées au hasard.

J'ai fait un petite version (non testée) qui vous fera peut-être comprendre comment on réfléchit à un développement:

tcl
# bombe.tcl
# !bomb <pseudo>
# !cut <couleur>
 
 
bind pub - !bomb bombe:pub
bind pub - !cut cut:pub
 
set fils(couleur) {
      jaune
      rouge
      marron
      bleu
      vert
      noir
      violet
      orange
      gris
      cyan
      blanc
      fushia
}
 
set bombe(set) 0
set bombe(nick) ""
set bombe(kickeur) ""
set bombe(good) ""
set bombe(list) ""
set bombe(timer) ""
set bombe(chan) ""
set bombe(antifloodt) ""
set bombe(antiflood) 0
set bombe(antiflood2) 0
 
proc antiflood:bomb {chan} {
      global bombe
      if {$bombe(antiflood) >= 3} {
            if {$bombe(antiflood2) == 1} { return 0 }
            putserv "PRIVMSG $chan :Contrôle de flood activé pour la commande !bomb : pas plus de 3 requête(s) toutes les 200 secondes."
            set bombe(antiflood2) 1
            set bombe(antifloodt) [utimer 200 {set bombe(antiflood) 0 ; set bombe(antiflood2) 0}]
            return 0
      } else {
            incr bombe(antiflood)
      }
}
 
proc filtout {chan text} {
      if [string match "*c*" [getchanmode $chan]] {
            return [stripcodes abcgru $text]
      } else {
            return $text
      }
}
 
proc bombe:pub {nick uhost hand chan arg} {
      global fils bombe botnick
      if {[string tolower [lindex $arg 0]] == [string tolower $botnick]} {
            putkick $chan $nick [filtout $chan "\00313O\0031wned \00313<3"]
            return 0
      }
      if {$bombe(set) == 1} {
            set msg [filtout $chan "\00314Bombe \| \0034Le jeu est deja en cours d'utilisation."]
            putserv "PRIVMSG $chan :$msg"
            return 0
      }
      if {[lindex $arg 0] == ""} {
            set msg [filtout $chan "\00314Bombe\003 \| !bomb PSEUDO"]
            putserv "PRIVMSG $chan :$msg"
            return 0
      }
      if {![antiflood:bomb $chan]} { return 0 }
 
      set bombe(set) 1
      set bombe(nick) [lindex $arg 0]
      set bombe(kickeur) $nick
      set cdf [rand 4]
      incr cdf
      set x 0      
      set bombe(chan) $chan
      set bombe(timer) [utimer 30 {putkick $bombe(chan) $bombe(nick) [filtout $bombe(chan) "\002Boum !!!\002 Temps écoulé !"]; set bombe(set) 0}]
       while {$x<=$cdf} {
            if {$x == 0} { set bombe(list) "" }
             set bombe(list) "$bombe(list) [lindex $fils(couleur) [rand [llength $fils(couleur)]]]"
 
             incr x
       }
      set bombe(good) [lindex $bombe(list) [rand [llength $bombe(list)]]]
      putlog "$bombe(list) + $bombe(good)"
      set msg [filtout $chan "\00314Bombe \| \0031Attention\0034 $bombe(nick) \0031Tu dois couper le bon fil tu as 30 secondes :\0034 $bombe(list) \0031( !cut couleur )"]
	  putserv "PRIVMSG $chan :$msg"
}
 
 
proc cut:pub {nick uhost hand chan arg} {
      global bombe
      if {$bombe(set) == 1} {
            if {$nick == $bombe(nick)} {
                  if {[lindex $arg 0] == $bombe(good)} {
                        set msg [filtout $chan "\00314Bombe \| \0031Joli\0034 $nick !! Tu as trouvé le bon fil \0031:D"]
                        putserv "PRIVMSG $chan :$msg"
                  } else {
                        set msg 
                        putkick $chan $nick [filtout $chan "\00314Boum !! Dtc !! Le bon fil était\0034 $bombe(good)"]
                  }
                  set bombe(set) 0
                  killutimer $bombe(timer)
            } else {
                  set msg [filtout $chan "\00314Bombe\003 \| C'est a $bombe(nick) de couper le fil !"]
                  putserv "PRIVMSG $chan :$msg"
            }
      }
}
 
putlog "\[bomb\] a été chargé."


Edit:Petite modification pour utiliser des putkick plutôt que des putserv "kick" partout.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away


Possibly Related Threads…
Thread Author Replies Views Last Post
  TCL !bombe lesny 6 4,120 17/11/2010, 22:33
Last Post: lesny
  tcl !bombe Trinity 8 3,547 29/01/2010, 14:36
Last Post: Trinity

Forum Jump:


Users browsing this thread: 1 Guest(s)