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


[Demande] tcl dédicace
#1

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


Attached Files
.tcl   dedicace.tcl (Size: 3.85 KB / Downloads: 6)
  Reply
#2
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-coule...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 ?
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
  Reply
#3
(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-coule...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
  Reply
#4
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.
  Reply
#5
(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
  Reply
#6
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
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
  Reply
#7
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.
  Reply
#8
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
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
  Reply
#9
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

  Reply
#10
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.
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.
  Reply
#11
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!
Retrouvez les dernières modifications de mes scripts TCL (versions Alpha/Bêta) ainsi que d'autres de mes réalisations sur ma page GitHub et les versions stables dans la section scripts de ce site  8-)
  Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Demande] Script recupération dedicace sur une page web fedora 6 5,820 10/03/2015, 02:20
Last Post: angels
  [TCL] Problème Multichan & dédicace [Flo] 2 4,007 09/01/2011, 13:37
Last Post: [Flo]

Forum Jump:


Users browsing this thread: 1 Guest(s)