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 d'information
#1
Bonsoir,
J'ai dans mon eggdrop un code TCL pour sajoin les utilisateurs via la commande "!saj #salon" mais malheuresement elle ne marche pas, en effet au lieu de sajoin il me met les salons entre deux accolades " { et } "

Quand je fait "!saj #staff" voici ce que j'ai en partyline:
(Debug - Clams) :irc.****.fr 403 Clams {#staff} :No such channel

Voici m'a procédure de sajoin:

tcl
	set pseudo [lindex $arg 1]    
	set cible [lrange $arg 2 end]
	putdcc $::clams(idx) ":[clams:server] SAJOIN $pseudo $cible"


Par contre si j'ajoute un salon prédefini dans le code tel que #irc cela sajoin correctement:

tcl
	set pseudo [lindex $arg 1]    
	putdcc $::clams(idx) ":[clams:server] SAJOIN $pseudo #irc"


Donc si quelqu'un pourais m'expliquer pourquoi les salons sont de la forme {#salon} cela serais bien sympatique.
#2
lrange retourne une liste donc tu dois la retransformer en string simple :
tcl
set cible [join [lrange $arg 2 end]]

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.
#3
Voyons voyons... Je vais commencer par lire la documentation sur lrange et surprise:
Quote:Cette commande renverra une nouvelle liste consistant des éléments premier à dernier
Ah ben oui, c'est une liste, donc entre accolades.

Conclusion:

tcl
set cible [join [lrange $arg 2 end]]


EDIT: Arf, grilled par MenzAgitat !
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#4
salut,

en réalité c est dû au # du nom de salon

Code:
% set a [list 1 2 3 4 5 6 7 8] ; lrange $a 1 4
2 3 4 5

% set a [list #1 #2 #3 #4 #5 #6 #7 #8] ; lrange $a 1 4
{#2} #3 #4 #5
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#5
Oui, c'est vrai pour tous les caractères spéciaux (#, {, }, [, ], ...).
Quoi qu'il en soit, le mieux est de toujours utiliser join quand on extrait un élément de liste.

La rigueur dans l'écriture du code permet d'éviter beaucoup d'erreurs.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#6
Daccord, merci c'etait donc une erreur stupide de la nuit ^^
Merci pour les informations.
#7
elle a bon dos la nuit :p
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.
#8
Tout à fait :D
#9
CrazyCat Wrote:Oui, c'est vrai pour tous les caractères spéciaux (#, {, }, [, ], ...).
Quoi qu'il en soit, le mieux est de toujours utiliser join quand on extrait un élément de liste.

La rigueur dans l'écriture du code permet d'éviter beaucoup d'erreurs.

pas faux mais # est un cas vraiment particulier, il n'est entouré de {} que lorsqu'il est le 1 caractère de la ligne de retour et ceux pour la simple raison de le distinguer d'un commentaire


Code:
% set a [list #1 #2 #3 #4 #5 #6 #7 #8] ; lrange $a 1 4
{#2} #3 #4 #5
% set a [list 1#1 1#2 1#3 1#4 1#5 1#6 1#7 1#8] ; lrange $a 1 4
1#2 1#3 1#4 1#5
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Demande] Script 'piège' (Kick à la demande avec compteur de victime) Utas 6 7,063 21/12/2011, 11:24
Last Post: loulou7593

Forum Jump:


Users browsing this thread: 1 Guest(s)