Communauté Eggdrop
En galère avec un codage de script de dédi - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : En galère avec un codage de script de dédi (/showthread.php?tid=1505)



En galère avec un codage de script de dédi - KeeViiNou - 14/03/2014

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.


RE: En galère avec un codage de script de dédi - CrazyCat - 14/03/2014

Et quelle est l'erreur ?


RE: En galère avec un codage de script de dédi - KeeViiNou - 14/03/2014

Mince je pensais l'avoir mise ! C'est juste que sa me met erreur salon à la commande !addedi


RE: En galère avec un codage de script de dédi - CrazyCat - 14/03/2014

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"





RE: En galère avec un codage de script de dédi - KeeViiNou - 14/03/2014

Ah merci ! tout est nickel


RE: En galère avec un codage de script de dédi - MenzAgitat - 14/03/2014

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


Pourquoi faire simple ?
Parce que !
 


RE: En galère avec un codage de script de dédi - KeeViiNou - 14/03/2014

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 :
Citation : 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.


RE: En galère avec un codage de script de dédi - CrazyCat - 14/03/2014

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 ?


RE: En galère avec un codage de script de dédi - aliasangelius - 15/03/2014

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.


RE: En galère avec un codage de script de dédi - KeeViiNou - 15/03/2014

Citation :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


RE: En galère avec un codage de script de dédi - aliasangelius - 15/03/2014

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 Smile

Envoyé de mon GT-N7000 en utilisant Tapatalk


RE: En galère avec un codage de script de dédi - KeeViiNou - 16/03/2014

Ah.. Parce que moi c'est le contraire je sais pas code le /msg bot dedi phrase :s


RE: En galère avec un codage de script de dédi - aliasangelius - 16/03/2014

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