Communauté sur les Eggdrops - Community about Eggdrops
[Demande] tcl dédicace - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (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)
+--- Thread: [Demande] tcl dédicace (/showthread.php?tid=1913)



tcl dédicace - ledieusam - 22/03/2022


tcl
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}
}



Bonjour, quelqu'un pourrait il ajouter dans ce bout de tcl :
quand je fais !addedi j'aimerais qu'il donne [29] Mis par :TOTO - Sinead o'connr Fire et qu'il y est comme ajout pour tel ou tel user
Merci


RE: tcl dédicace - CrazyCat - 22/03/2022

Bonjour.

1. Merci d'utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces) pour encadrer les codes dans les posts
2. Merci de lire https://forum.eggdrop.fr/Les-codes-couleurs-dans-les-scripts-t-123.html pour éviter de mettre du code indésirable dans les posts
3. Je ne comprends pas la question. En fait tu veux que le message de confirmation soit modifié pour ressembler à celui de la dédicace ?


RE: tcl dédicace - ledieusam - 22/03/2022

(22/03/2022, 13:58)CrazyCat Wrote: Bonjour.

1. Merci d'utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces) pour encadrer les codes dans les posts
2. Merci de lire https://forum.eggdrop.fr/Les-codes-couleurs-dans-les-scripts-t-123.html pour éviter de mettre du code indésirable dans les posts
3. Je ne comprends pas la question. En fait tu veux que le message de confirmation soit modifié pour ressembler à celui de la dédicace ?

le tcl donne les données chanteur, titre mais j'aimerais ajouter exemple "pour toto" enfin dire que la dédi est faite pour tel ou tel personne d'un salon


RE: tcl dédicace - Amand - 22/03/2022

Ce que tu écris n'a aucun sens.

Tu aimerais "ajouter un exemple 'pour toto'", qui est toto ? Celui qui tape la commande , un argument que tu ajoutes dans ta commande ?

Tu files un bout de code sans préciser de quel proc tu parles, on doit donc ouvrir obligatoirement le code pour te suivre ..

C'est plus difficile de comprendre votre écriture que de vous aider dans votre problème.


RE: tcl dédicace - ledieusam - 22/03/2022

(22/03/2022, 15:07)Amand Wrote: Ce que tu écris n'a aucun sens.

Tu aimerais "ajouter un exemple 'pour toto'", qui est toto ? Celui qui tape la commande , un argument que tu ajoutes dans ta commande ?

Tu files un bout de code sans préciser de quel proc tu parles, on doit donc ouvrir obligatoirement le code pour te suivre ..

C'est plus difficile de comprendre votre écriture que de vous aider dans votre problème.

toto est un exemple, dedi me donne chanteur + titre mais j'aimerais si possible qu'il ajoute au bout "pour tel user
exemple :
claude françois - cette année là pour toto (qui serait un user ou germain ou marie etc...) dedicace pour une personne
merci


RE: tcl dédicace - CrazyCat - 22/03/2022

Ben... Je ne comprends pas trop ton souci vu que ta commande "!addedi" prends tout ce qui la suit dans la dédicace.
Je pense que si tu tapes !addedi Elmer food beat - La complainte du du laboureur pour Roger qui est toujours bourré ça marchera.

Bref, je ne vois vraiment pas quel est ton souci.

Le script ne pourra jamais deviner pour quel utilisateur est la dédicace. A moins de changer la commande pour qu'elle soit !addedi <nick> ta dédicace


RE: tcl dédicace - Amand - 22/03/2022

Sinon il est peut être possible de récupérer son dernier argument ( dernier mot ) dans ta chaine qui correspondra à la personne dédicacé.


tcl
[lindex $x end]

devrait correspondre au dernier élément, tu le places où tu veux, si tu tapes:

Quote:!dedi titre machin je sais pas ce que tu écris et toto

toto sera le dernier élément mais le mieux est de revoir la syntaxe de la commande en mettant le nick en premier argument.

Correction: $x n'est pas une liste même si avec un peu de chance ça fonctionne, ce n'est pas la bonne façon de faire.

Le script est bancale , il traîte des strings comme des listes sans la formater avant.  

Le code doit être revu entièrement, tu peux toujours bidouiller pour faire ce que tu veux mais tu auras d'autres problèmes ultérieurement.


RE: tcl dédicace - aliasangelius - 22/03/2022

Salut,


tcl
putserv "privmsg $n :[[lindex $x 0]] Mis par : [lindex $x 1] [lrange $x 2 end]"; set stop 1



tcl
proc sc::dedip {nick host hand chan arg} {
	variable rchan
	if {$rchan!="" && [lsearch -nocase $rchan $chan]==-1} return
	dedi $nick $arg
}
 
proc sc::dedi {nick arg} {
	variable dj
	variable status
	if {$arg == ""} { putserv "NOTICE $nick :[::msgcat::mc m5]";return}
	if {[info exists status] && !$status} {putserv "NOTICE $nick :[::msgcat::mc m6]";return}
	putserv "NOTICE $nick :[msgcat::mc m7]"
	putlog [::msgcat::mc m8 $nick $arg]
	putserv "PRIVMSG $dj :[::msgcat::mc m9 $nick $arg]" 
}


Tu trouveras peut-être ta réponse dans ça, et modifié ton code, mais oui comme la dit @ Amand ton code et bancal.

Teste : https://scripts.eggdrop.fr/details-shoutcast-s128.html


RE: tcl dédicace - Amand - 23/03/2022

Ok, la dédicace est destiné à celui qui tape la commande.

Tu peux utiliser la variable $nick dans ton cas ça sera $n exemple :


tcl
putserv "privmsg $n :[[lindex $x 0]] Mis par : [lindex $x 1] [lrange $x 2 end] pour $n"; set stop 1




RE: tcl dédicace - MenzAgitat - 23/03/2022

Aucune des variables du script ne sont des listes mais des strings simples.
Utiliser des fonctions pour traiter les listes (lindex, lrange, llength, ...) sur des strings expose à des problèmes si ces strings contiennent certains caractères.
Pour transformer une string en liste correctement formatée, il existe la commande split.


Edit : de même, pour retransformer une liste en string il existe la commande join.

Pour aller plus loin (en anglais) :
Tcl Commands
Split
Join
Ce site fournit de nombreux exemples et astuces.


RE: tcl dédicace - ZarTek - 31/03/2022

Nous en sommes où ici? car ce post ont ne sais pas si il est résolu, si ta abandonné par contre je vois que tu as ouvert un nouveau post pour autres choses?
Serais bien de clôturer question/demande un a un avant de faire d'autres, car la ont a une demande un début de éclaircis dans tes explications et poufs ta disparu et tu reviens avec un autre truc. ce n'ai pas très constructif pour la communauté .. des débuts questions et des milieu de rien du tout... sans fin!