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


besoin d'un petit plus avec load.tcl
#1
Bonjour
j'ai un script load.tcl qui foncionne tres bien
mais j'ai ajouté un autre script de MenzAgitat qui permet de lister tout les tcl qu'il ya dans mon fichier eggdrop.

voici le tcl de MenzAgitat

tcl
###
### Enregistrement de chaque script chargé dans la liste $::loaded_scripts (par MenzAgitat)
proc register_script {scriptname} {
global loaded_scripts
lappend loaded_scripts
if { [lsearch $loaded_scripts $scriptname] == -1 } {
lappend loaded_scripts $scriptname
}
return $scriptname
}


donc par conséquent dans le fichier .conf de l'eggdrop il faut que ce soit [register_script kikoulol.tcl]

Maintenant le script load.tcl

tcl
#################################################################################
#										#
# LOADTCL.TCL permet de charger ou d'enlever un fichier .tcl du config file	#
# du bot à partir de la partyline.						#
# Commande (en partyline) :							#
# .loadtcl <nom_du_rep/nom_du_fichier_tcl>					#
# .unloadtcl <nom_du_rep/nom_du_fichier_tcl>					#
#										#
# Remarque : un fichier de sauvegarde du config file du bot est créé sous le	#
# nom "svg_config_file.loadtcl" (on est jamais trop prudent !)			#
#										#
#										#
#################################################################################
 
 
##### CONFIGURATION #####
 
### Inscrire entres guillemets le nom du fichier de config du bot (ainsi qu'eventuellement
### le repertoire ds lekel il se situe si ce n'est pas le repertoire courant du bot !)
set nom_config_file "experienza.conf"
 
##### FIN DE LA CONFIGURATION #####
 
 
 
##### DEBUT DU PROGRAMME #####
 
bind dcc n loadtcl dcc:loadtcl
bind dcc n unloadtcl dcc:unloadtcl
 
proc dcc:loadtcl {handle idx text} {
	global loadvar lct nom_config_file
	set lct 0
	set fichier_tcl [lindex $text ]
	if {$fichier_tcl == ""} {
		putdcc $idx "#LOADTCL# Commande : \002.loadtcl <repertoire_du_fichier/nom_du_fichier>\002"
		return 0
	}
	if {$nom_config_file == ""} {
		putdcc $idx "#LOADTCL# Vous devez OBLIGATOIREMENT lire et completer ce qui est demandé dans le fichier \002loadtcl.tcl\002 !!"
		return 0
	}
	if {![file exists $nom_config_file]} {
		putdcc $idx "#LOADTCL# Le fichier $nom_config_file n'existe pas !"
		return 0
	}
	if {![file exists $fichier_tcl]} {
		putdcc $idx "#LOADTCL# Le fichier $fichier_tcl n'existe pas !"
		return 0
	}
	if {![file readable $fichier_tcl]} {
		putdcc $idx "#LOADTCL# Le fichier $fichier_tcl ne peut etre lu (verifie les droits peut-etre) !"
		return 0
	}
	if {[file type $fichier_tcl] != "file"} {
		putdcc $idx "#LOADTCL# Pour moi, $fichier_tcl n'est pas un fichier !"
		return 0
	}	
	set fd [open $nom_config_file r]
	while {[eof $fd] != 1} {
		set loadvar($lct) [gets $fd]
		if {[string range $loadvar($lct) 0 14] == "source scripts/"} {
			set ici $lct
		}		
		set lct [expr $lct + 1]
	}
	close $fd
	file copy -force $nom_config_file svg_config_file.loadtcl
	set fw [open $nom_config_file w+]
	set lct [expr $lct - 1]
	set i 0
	while {$i <= $lct} {
		if {$i == $ici} {
			puts $fw "source $fichier_tcl"
		}	
		puts $fw $loadvar($i)
		set i [expr $i + 1]
	}
	close $fw
	putdcc $idx "#LOADTCL# \002$fichier_tcl\002 correctement chargé (le fichier de config d'origine a été copié en \003svg_config_file.loadtcl\003 !), rehash en cours ..."
	source $fichier_tcl
	return 0
}
 
proc dcc:unloadtcl {handle idx arg} {
	global loadvar lct nom_config_file
	set lct 0
	set ici ""
	set fichier_tcl [lindex $arg 0]
	if {$fichier_tcl == ""} {
		putdcc $idx "#LOADTCL# Commande : \002.unloadtcl <repertoire_du_fichier/nom_du_fichier>\002"
		return 0
	}
	if {$nom_config_file == ""} {
		putdcc $idx "#LOADTCL# Vous devez \003OBLIGATOIREMENT\003 lire et completer ce qui est demandé dans le fichier \002loadtcl.tcl\002 !!"
		return 0
	}
	if {![file exists $nom_config_file]} {
		putdcc $idx "#LOADTCL# Le fichier $nom_config_file n'existe pas !"
		return 0
	}
	if {![file exists $fichier_tcl]} {
		putdcc $idx "#LOADTCL# Le fichier $fichier_tcl n'existe pas !"
		return 0
	}
	if {![file readable $fichier_tcl]} {
		putdcc $idx "#LOADTCL# Le fichier $fichier_tcl ne peut etre lu (verifie les droits peut-etre) !"
		return 0
	}
	if {[file type $fichier_tcl] != "file"} {
		putdcc $idx "#LOADTCL# Pour moi, $fichier_tcl n'est pas un fichier !"
		return 0
	}
	set fd [open $nom_config_file r]
	while {[eof $fd] != 1} {
		set loadvar($lct) [gets $fd]
		if {[string range $loadvar($lct) 0 end] == "source $fichier_tcl"} {
			set ici $lct
		}		
		set lct [expr $lct + 1]
	}
	close $fd
	if {$ici == ""} {
		putdcc $idx "#LOADTCL# \002$fichier_tcl\002 n'est pas dans le fichier de config !"
		return 0
	}
	file copy -force $nom_config_file svg_config_file.loadtcl
	set fw [open $nom_config_file w+]
	set lct [expr $lct - 1]
	set i 0
	while {$i <= $lct} {
		if {$i != $ici} {
			puts $fw $loadvar($i)
		}	
		set i [expr $i + 1]
	}
	close $fw
	putdcc $idx "#LOADTCL# \002$fichier_tcl\002 correctement viré (le fichier de config d'origine a été copié en \003svg_config_file.loadtcl\003 !), rehash en cours ..."
	rehash
	return 0
}


Voila actuellement pour ajouter un ficier tcl il faut taper en PL .loadtcl scripts/kikoulol.tcl

Mais le probleme etant donné qu'il faut que dans le fichier .conf de l'eggdrop il faut que ce soit sous format [register_script kikoulol.tcl] comment faire pour que dans load.tcl on ai juste apres dans la Pl a taper .loadtcl kikoulol.tcl et que ca enregistre auto sous scripts/[register_script kikoulol.tcl] ???

Merci de votre futur aide
#2
Tu peux essayer en modifiant ainsi:

tcl
set nom_config_file "experienza.conf"
 set basedir "scripts/"
 
bind dcc n loadtcl dcc:loadtcl
bind dcc n unloadtcl dcc:unloadtcl
 
proc dcc:loadtcl {handle idx text} {
   global loadvar lct nom_config_file
   set lct 0
   if {[lindex $text 0] == ""} {
      putdcc $idx "#LOADTCL# Commande : \002.loadtcl <nom_du_fichier>\002"
      return 0
   }
   set fichier_tcl [concat $::basedir [lindex $text 0]]
   ...
}
proc dcc:unloadtcl {handle idx arg} {
   global loadvar lct nom_config_file
   set lct 0
   set ici ""
   if {[lindex $arg 0] == ""} {
      putdcc $idx "#LOADTCL# Commande : \002.unloadtcl <nom_du_fichier>\002"
      return 0
   }
   set fichier_tcl [concat $::basedir [lindex $text 0]]
   ...
}

irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#3
Merci pour cette reponse rapide, jai du loupé un truc car j'ai vidé donc mon tcl et j'ai remplacé par ce que tu m'as proposé, et j'ai cette erreur en PL

[09:13] Tcl error [dcc:loadtcl]: invalid command name "..."
#4
Bonjour.
je crois que les ... que CrazyCat à placé dans le code signifie { le suite du code que tu as donné }

:)
#5
Je n'y arrive toujours pas.
Serais til possible d'avoir la reponse de ce qu'il faudrais que je place là ou il y a ....

Merci d'avance
#6
Les ..., c'est la suite de le procédure.
Tu n'as qu'à remplacer (par exemple dans la première) les "..." par:

tcl
if {$nom_config_file == ""} {
      putdcc $idx "#LOADTCL# Vous devez OBLIGATOIREMENT lire et completer ce qui est demandé dans le fichier \002loadtcl.tcl\002 !!"
      return 0
   }
   if {![file exists $nom_config_file]} {
      putdcc $idx "#LOADTCL# Le fichier $nom_config_file n'existe pas !"
      return 0
   }
   if {![file exists $fichier_tcl]} {
      putdcc $idx "#LOADTCL# Le fichier $fichier_tcl n'existe pas !"
      return 0
   }
   if {![file readable $fichier_tcl]} {
      putdcc $idx "#LOADTCL# Le fichier $fichier_tcl ne peut etre lu (verifie les droits peut-etre) !"
      return 0
   }
   if {[file type $fichier_tcl] != "file"} {
      putdcc $idx "#LOADTCL# Pour moi, $fichier_tcl n'est pas un fichier !"
      return 0
   }   
   set fd [open $nom_config_file r]
   while {[eof $fd] != 1} {
      set loadvar($lct) [gets $fd]
      if {[string range $loadvar($lct) 0 14] == "source scripts/"} {
         set ici $lct
      }      
      set lct [expr $lct + 1]
   }
   close $fd
   file copy -force $nom_config_file svg_config_file.loadtcl
   set fw [open $nom_config_file w+]
   set lct [expr $lct - 1]
   set i 0
   while {$i <= $lct} {
      if {$i == $ici} {
         puts $fw "source $fichier_tcl"
      }   
      puts $fw $loadvar($i)
      set i [expr $i + 1]
   }
   close $fw
   putdcc $idx "#LOADTCL# \002$fichier_tcl\002 correctement chargé (le fichier de config d'origine a été copié en \003svg_config_file.loadtcl\003 !), rehash en cours ..."
   source $fichier_tcl
   return 0

irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#7
Voila j'ai mis ca comme ca


tcl
set nom_config_file "experienza.conf"
set basedir "scripts/"
 
bind dcc n loadtcl dcc:loadtcl
bind dcc n unloadtcl dcc:unloadtcl
 
proc dcc:loadtcl {handle idx text} {
   global loadvar lct nom_config_file
   set lct 0
   if {[lindex $text 0] == ""} {
      putdcc $idx "#LOADTCL# Commande : \002.loadtcl <nom_du_fichier>\002"
      return 0
   }
   set fichier_tcl [concat $::basedir [lindex $text 0]]
   if {$nom_config_file == ""} {
      putdcc $idx "#LOADTCL# Vous devez OBLIGATOIREMENT lire et completer ce qui est demandé dans le fichier \002loadtcl.tcl\002 !!"
      return 0
   }
   if {![file exists $nom_config_file]} {
      putdcc $idx "#LOADTCL# Le fichier $nom_config_file n'existe pas !"
      return 0
   }
   if {![file exists $fichier_tcl]} {
      putdcc $idx "#LOADTCL# Le fichier $fichier_tcl n'existe pas !"
      return 0
   }
   if {![file readable $fichier_tcl]} {
      putdcc $idx "#LOADTCL# Le fichier $fichier_tcl ne peut etre lu (verifie les droits peut-etre) !"
      return 0
   }
   if {[file type $fichier_tcl] != "file"} {
      putdcc $idx "#LOADTCL# Pour moi, $fichier_tcl n'est pas un fichier !"
      return 0
   }   
   set fd [open $nom_config_file r]
   while {[eof $fd] != 1} {
      set loadvar($lct) [gets $fd]
      if {[string range $loadvar($lct) 0 14] == "source scripts/"} {
         set ici $lct
      }      
      set lct [expr $lct + 1]
   }
   close $fd
   file copy -force $nom_config_file svg_config_file.loadtcl
   set fw [open $nom_config_file w+]
   set lct [expr $lct - 1]
   set i 0
   while {$i <= $lct} {
      if {$i == $ici} {
         puts $fw "source $fichier_tcl"
      }   
      puts $fw $loadvar($i)
      set i [expr $i + 1]
   }
   close $fw
   putdcc $idx "#LOADTCL# \002$fichier_tcl\002 correctement chargé (le fichier de config d'origine a été copié en \003svg_config_file.loadtcl\003 !), rehash en cours ..."
   source $fichier_tcl
   return 0
}
proc dcc:unloadtcl {handle idx arg} {
   global loadvar lct nom_config_file
   set lct 0
   set ici ""
   if {[lindex $arg 0] == ""} {
      putdcc $idx "#LOADTCL# Commande : \002.unloadtcl <nom_du_fichier>\002"
      return 0
   }
   set fichier_tcl [concat $::basedir [lindex $text 0]]
   if {$nom_config_file == ""} {
      putdcc $idx "#LOADTCL# Vous devez \003OBLIGATOIREMENT\003 lire et completer ce qui est demandé dans le fichier \002loadtcl.tcl\002 !!"
      return 0
   }
   if {![file exists $nom_config_file]} {
      putdcc $idx "#LOADTCL# Le fichier $nom_config_file n'existe pas !"
      return 0
   }
   if {![file exists $fichier_tcl]} {
      putdcc $idx "#LOADTCL# Le fichier $fichier_tcl n'existe pas !"
      return 0
   }
   if {![file readable $fichier_tcl]} {
      putdcc $idx "#LOADTCL# Le fichier $fichier_tcl ne peut etre lu (verifie les droits peut-etre) !"
      return 0
   }
   if {[file type $fichier_tcl] != "file"} {
      putdcc $idx "#LOADTCL# Pour moi, $fichier_tcl n'est pas un fichier !"
      return 0
   }
   set fd [open $nom_config_file r]
   while {[eof $fd] != 1} {
      set loadvar($lct) [gets $fd]
      if {[string range $loadvar($lct) 0 end] == "source $fichier_tcl"} {
         set ici $lct
      }      
      set lct [expr $lct + 1]
   }
   close $fd
   if {$ici == ""} {
      putdcc $idx "#LOADTCL# \002$fichier_tcl\002 n'est pas dans le fichier de config !"
      return 0
   }
   file copy -force $nom_config_file svg_config_file.loadtcl
   set fw [open $nom_config_file w+]
   set lct [expr $lct - 1]
   set i 0
   while {$i <= $lct} {
      if {$i != $ici} {
         puts $fw $loadvar($i)
      }   
      set i [expr $i + 1]
   }
   close $fw
   putdcc $idx "#LOADTCL# \002$fichier_tcl\002 correctement viré (le fichier de config d'origine a été copié en \003svg_config_file.loadtcl\003 !), rehash en cours ..."
   rehash
   return 0
}


Mais quand je tape en pl .unloadtcl kikoulol.tcl ca m'indiqu cette erreure

[22:44] Tcl error [dcc:unloadtcl]: can't read "text": no such variable

Et je voulais etre sur en tapant .loadtcl kikoulol.tcl ca me l'ajouteras dans mon fichier eggdrop
en format
tcl
source scripts/[register_script kikoulol.tcl]

???
#8
J'ai essayé de faire un ajout script et là il me dit

#LOADTCL# Le fichier scripts/ antito.tcl n'existe pas !

On remarque qu'entre scripts/ et antito.tcl il y a un espace.
Comment faire pour qu'il n'y ai pas cet espace ?
#9

tcl
set fichier_tcl [concat $::basedir[lindex $text 0]]

Enfin, ce que j'en dis... Il y a un moment où il faut esayer soi-même
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
  Petit soucis avec un script d'annonce de la saint du jour, etc... loulou7593 3 5,983 19/11/2011, 14:53
Last Post: CrazyCat
  petit soucis avec logger lesny 54 33,582 12/08/2011, 18:52
Last Post: lesny

Forum Jump:


Users browsing this thread: 1 Guest(s)