CITATION
Au final j'ai donc retiré les "$+" mais j'ai du modifier mes "/" par des "\" et le "msg #" par "amsg".
J'ai également ajouté le "$msn.encode" sur mon fichier mrc.
Et j'ai donc pu supprimer tous les "$msn.encode" de mon fichier texte ainsi que les "timers" et les "amsg".
De cette manière la première ligne s'affiche sans problème.
Alors déjà d'une part, c'est sur internet que l'on utilise le
/ lol ... Le truc c'est que XP est tolérant, alors ça pourrait passer mais attention aux autres windows... (je me suis fait avoir dans ccscript V2 lol). Donc pour un chemin sur un pc c'est bien
\ 
Pour le message c'est logique lucky... La commande
/amsg envoie le message
sur tous les channels où tu es connecté, cependant c'est vrai que c'est le plus simple pour les timers. Pourquoi ? Parceque au moment ou le timer s'execute, # ou $chan ne sont plus évalués, ils sont devenus obselètes sur le temps du timer, et mirc les "oublie"... Donc si ton message était /msg #
un coucou à tous, dans un timer, à l'execution il perd # donc il tente en fait /msg
un coucou ... et en effet il peut te dire "
un n'est pas une salle"... lol Dans le cas de /amsg, mirc cherche lui même tous les channels où tu es connecté sur un serveur commun au moment de l'execution et y transmet le message.
Il y a quelques petites astuces pour contrer la perte des variables dans les timers, on peut sur mirc remplacer:
CODE
.timer.test 1 1 /msg # test 123
par:
CODE
.timer.test 1 1 /msg $!comchan($nick,1) test 123
On peut aussi feinter en enregistrant la salle dans une petite variable avant le timer et reconstruire la variable:
CODE
set %chan #
.timer.test 1 1 /msg % $+ chan test 123
Cette méthode est très pratique: à la 1ère auto-évaluation, le timer va seulement "coller" le % et le chan pour avoir %chan, et au moment de l'execution, le timer trouvera bien le channel par la variable.Quand on a en plus vincula, on peut simplifier comme ceci:
CODE
.timer.test 1 1 /msg $!msn.get($cid,fullroom) test 123
Notez que le ! oblige mIRC a re-évaluer $msn.get à la fin du timer... Cette fonction d'eXonyte permet de retrouver le channel en fonction du CID actif.On pourrais donc imaginer ce genre de solutions:
CODE
ON *:TEXT:*loll*:*:{
if (%timer.lol) { halt }
set %timer.lol enable
var %i = 1, %u = $rand(1,$lines(paroles\lol.txt)), %n = $numtok($read(paroles\lol.txt,%u),124)
while (%i <= %n) {
.timer 1 %i /msg $!msn.get($cid,fullroom) $msn.encode($gettok($read(paroles\lol.txt,%u),%i,124))
inc %i
}
.timer -o 1 %i unset %timer.lol
}
ou
CODE
ON *:TEXT:*loll*:*:{
if (%timer.lol) { halt }
set %timer.lol enable | set %chan #
var %i = 1, %u = $rand(1,$lines(paroles\lol.txt)), %n = $numtok($read(paroles\lol.txt,%u),124)
while (%i <= %n) {
.timer 1 %i /msg % $+ chan $msn.encode($gettok($read(paroles\lol.txt,%u),%i,124))
inc %i
}
.timer -o 1 %i unset %timer.lol
}
Une dernière solution serait aussi par exemple d'utiliser un alias pour la commande en salle, et que le timer, au lieu d'executer la commande, execute l'alias (donc non-évalué) qui trouver bien le channel.
Bon courage