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
Répondre Avertir
#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]]
   ...
}


Répondre
#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 "..."
Répondre Avertir
#4
Bonjour.
je crois que les ... que CrazyCat à placé dans le code signifie { le suite du code que tu as donné }

Smile
Répondre Avertir
#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
Répondre Avertir
#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


Répondre
#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]


???
Répondre Avertir
#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 ?
Répondre Avertir
#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
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté