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


En galère avec un codage de script de dédi
#1
Bonjour,

Je me suis lancé dans la confection d'un tcl pour faire des dédicaces mais hélas je tombe sur un os...

tcl
######################################################################
##																	##
##																	##
##  	-Système de dédicace pour webradio "Minut'Radio"            ##
## 			Partenaire de Secretchat.fr - Version 1.0				##
##																	##
##																	##
######################################################################
 
 
 
set chans "#staff"
set chansource "#control"
set chanradio "#Radio"
 
 
bind pub - "!addedi" add:edi
bind pub - "!deledi" del:msg
bind pub - "!edi" msg:edi
 
 
proc add:edi {n ht hd ch a} {
set edi [lrange $a 0 end]
	if {$ch == $::chanradio} {
		if {$edi == ""} {putserv "notice $n :Syntaxe => !addedi < message >"; return}
		if {![file exists "scripts/dedi.dab"]} {set files [open "scripts/dedi.dab" a+]; close $files}
		# enregistrement de la dedi #
		set num [expr {int(rand() * 37)}]
		set files [open "scripts/dedi.dab" a+]
		puts $files "$num $n $edi"
		close $files
		putserv "notice $n :Dedi enregistré et validé"
	} else {
		putserv "notice $n :Erreur Salon"
	} 
}
 
proc del:msg {n ht hd ch a} {
set num [lindex $a 0]
set stop 0
if {$ch == $::chans} {
	if {$num == ""} {putserv "notice $n :Syntaxe => !deledi < numéro >"; return}
	if {![file exists "scripts/dedi.dab"]} {putserv "notice $n :Aucune dedi actuellement"}
	# suppression de la dedi #
	catch {open "scripts/dedi.dab" r} liste
	while {![eof $liste]} { gets $liste verif; if {![string compare -nocase $num [lindex $verif 0]]} { set stop 1 }; if {[string compare -nocase $num [lindex $verif 0]] && $verif!=""} { lappend salle "$verif" } }
	catch {close $liste}
	if {$stop == 0} {putserv "notice $n :Numéro Inconnu"; return}
	if {[info exists salle]} {
		set del [open "scripts/dedi.dab" w+]; foreach delchan $salle { puts $del "$delchan"}; close $del
	} else { set del [open "scripts/dedi.dab" w+]; close $del }
	putserv "notice $n :La dedi vient d'être supprimer"
} else {
	putserv "notice $n :Erreur Salon"
} }
 
proc msg:edi {n ht hd ch a} {
set stop 0
if {$ch == $::chans} {
	putserv "notice $n :13~6~13~6~12 Liste des dedi 13~6~13~6~"
	putserv "notice $n : "
	if {![file exists "scripts/dedi.dab"]} {putserv "notice $n :12Aucune dedi actuellement"}
 
	# securité anti beug #
	catch {open "scripts/dedi.dab" r} secu
	while {![eof $secu]} {gets $secu xs; if {[lindex $xs 0] != ""} {
		lappend verif "[llength $xs]"
	} }; catch {close $secu}
	# Calcul nombre de ligne #
	if {[info exists verif]} {
		if {[llength $verif] > "15"} {set stop 2; putserv "notice $n :4/!\\ Alerte Surcharge /!\\ 14Merci de supprimer des dedi"}
		if {[llength $verif] > "20"} {set stop 2; putserv "notice $n :4/!\\ Alerte Surcharge Excessif /!\\ 14Supprimer des dedi Impérativement 4/!\\ Alerte Surcharge Excessif /!\\"}
		if {[llength $verif] == "25"} {set stop 5; putserv "notice $n :4/!\\ Alerte Suppression de toutes les  dedi /!\\ 14Trop de dedi on été enregistrer : $verif 4/!\\ Alerte Suppression de toutes les dedi /!\\"}
	}
	# Fin control anti beug #
	if {$stop == 5} {exec rm -rf "scripts/dedi.dab"}
	if {$stop == 2} {
		catch {open "scripts/dedi.dab" r} files
		while {![eof $files]} {gets $files x; if {[lindex $x 0] != ""} {
			putserv "privmsg $n :6\[\4 [lindex $x 0] 6\]\ 10Mis par :7 [lindex $x 1] 1-12 [lrange $x 2 end]"; set stop 1
		} }; catch {close $files}
	}
	if {$stop == 0} {
		catch {open "scripts/dedi.dab" r} files
		while {![eof $files]} {gets $files x; if {[lindex $x 0] != ""} {
			putserv "notice $n :6\[\4 [lindex $x 0] 6\]\ 10Mis par :7 [lindex $x 1] 1-12 [lrange $x 2 end]"; set stop 1
		} } ; catch {close $files}
	}
	if {$stop == 0} {putserv "notice $n :12Aucune dedi actuellement"}
	putserv "notice $n : "
	putserv "notice $n :13~6~13~6~12 Fin de la liste des dedi 13~6~13~6~"
} else {
	putserv "notice $n :Erreur Salon"
} }


La commande !edi et !deledi fonctionne mais en revanche pour la commande !addedi je me trouve avec une erreur salon sur les 3 salons en question...


Merci d'avance de votre aide.
#2
Et quelle est l'erreur ?
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#3
Mince je pensais l'avoir mise ! C'est juste que sa me met erreur salon à la commande !addedi
#4
Je vote à 110% pour un problème de casse.
Remplace:

tcl
if {$ch == $::chanradio} {

par:

tcl
if {[string tolower $ch] == [string tolower $::chanradio]} {


On a dit et répété je ne sais combien de fois qu'il fallait toujours comparer les pseudos, handles et canaux en minuscule.

Et tu aurais pu simplement débuguer en remplaçant:

tcl
putserv "notice $n :Erreur Salon"

par:

tcl
putserv "notice $n :Erreur Salon => $ch != $::chanradio"

zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#5
Ah merci ! tout est nickel
#6
 

tcl
if { [string equal -nocase $ch $::chanradio] } {
...

Pourquoi faire simple ?
Parce que !
 
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.
#7
J'ai encore une question voir deux. Si je souhaite mettre la commande en par exemple /dedi <texte> j'ai qu'à mettre une aliase sur unreal de ce type :
Quote: alias "DEDIBOT" {
nick "DEDIBOT";
type robot;
};
alias "dedi" {
nick "DEDIBOT";
type robot;
};

Et pour lire les dedi je souhaite mettre sur des vhosts je dois rajouter au début de ma conf :
tcl
set permission1 {
  *@*Anim.Domaine.fr  
}

Puis dans le codage ces deux lignes ?
tcl
foreach salons $autorisation1 {
    foreach vhost $permission1 {

Donc en gros
tcl
proc msg:edi {n ht hd ch a} {
set stop 0
if {$ch == $::chans} {
foreach salons $autorisation1 {
    foreach vhost $permission1
   putserv "notice $n :13~6~13~6~12 Liste des dedi 13~6~13~6~"
   putserv "notice $n : "
   if {![file exists "scripts/dedi.dab"]} {putserv "notice $n :12Aucune dedi actuellement"}


Merci de vos réponses et aides.
#8
Pouvez répéter la question ?
Qu'est-ce que Unreal vient faire dans un codage tcl ? Quel est ton souci ? Et si tu as déjà une idée du code, pourquoi ne le teste tu pas ?
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#9
Salut,

Pourquoi pas partir sur un tcl de shoutcast ?
Me semble que sa serait le mieux adapter à ce type de demande..
Si y'as un dj de disponible, l'eggdrop enverra un privé au dj en lui stipulant que intel désire tel musique et la phrase de dedi..

Sa serait beaucoup plus simple non ?
Voir des trucs ircop, machin truc arrêter..

Si des utilisateurs désire inclure dans un de leur eggdrops, ce type de tcl ils font comment ?
Là vous passer tout par o:line, "ircop,link etc.." Sa ne sert strictement à rien.
#10
Quote:Qu'est-ce que Unreal vient faire dans un codage tcl ?
Parce que j'aimerai mettre la commande en /dedi au lieu de !dedi qui est pas trop discret..

et pour le reste je préfère demande avant de tester :s
#11
Ta /msg lebot dedi phrase
Qui serait discret :p
Mais pour les alias pour les server je sais pas faire jamais utiliser toujours trouver pas utiles pour ce que je faisait.
Peut être que quelqu'un sera t'aider ici :)

Envoyé de mon GT-N7000 en utilisant Tapatalk
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#12
Ah.. Parce que moi c'est le contraire je sais pas code le /msg bot dedi phrase :s
#13
Regarde sue les bind msg
Tape : .tcl bind msg
Sa donne genre : bind msg - !dedi dedic
Proc dedic { nick host hand arg } {
...

C'est ce genre la.
Tu veut un bon exemple de base pas compliquer c'est simple dll : gestion.bot v2 si ya encore sur ce site.
Et dessus ta des exemples.
Après si tu trouve pas rien dit moi ! Je viendrais taider

Envoyé de mon GT-N7000 en utilisant Tapatalk
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll


Possibly Related Threads…
Thread Author Replies Views Last Post
  probleme avec le script Pooshy.tcl LTEF 18 680 22/06/2022, 12:49
Last Post: CrazyCat
  [Résolu] Problème avec le script autolog T3nS 2 3,393 06/12/2017, 16:08
Last Post: T3nS
  [Bug] Problème avec le script zurl.tcl T3nS 0 3,204 03/08/2017, 19:40
Last Post: T3nS
  Soucis de codage avec un kick KeeViiNou 14 8,724 26/03/2014, 23:18
Last Post: KeeViiNou
  Soucis avec un codage KeeViiNou 9 6,506 14/03/2014, 21:22
Last Post: aliasangelius
  probleme avec mon script Nostromo1st 7 6,198 05/06/2013, 09:51
Last Post: Nostromo1st
  Problème d'authentification avec un script Demonis 17 12,418 25/03/2013, 21:16
Last Post: aliasangelius
  soucis avec un script emprunté :s lesny 9 6,727 04/01/2011, 00:27
Last Post: lesny
  soucis avec un script de greet loulou7593 2 3,988 09/08/2009, 11:02
Last Post: loulou7593

Forum Jump:


Users browsing this thread: 1 Guest(s)