Timers

Résolu
Signaler
Messages postés
70
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
25 février 2007
-
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
-
Bonsoir,

Aujourd'hui, j'ai un nouveau probleme avec mes timers. Mais je ne suis
pas sur que le probleme vienne de la commande timer, mais plus de la
facon dont je lance son exécution.





Voila a quoi ressemble mon code.



on *:TEXT:*Julien*terminé*:#channel1:{

var %nick1 $strip($1, burc)

var %channel1 $strip($3, burc)

timertransfer 3 5 transfer %channel1 COMPLETé %nick

}



on *:TEXT:*Julia*finie*:#channel2:{

var %nick1 $strip($1, burc)

var %channel2 $strip($3, burc)


timertransfer 3 5 transfer %channe2 FINIE %nick


}



on *:TEXT:*Robert*aboutit*:#channel3:{

var %nick1 $strip($1, burc)

var %channel3 $strip($3, burc)



timertransfer 3 5 transfer %channel3 ABOUTIT %nick



}



alias transfer {

/dll nomt_urc.dll nomt_urc( 0 , ' $+ $2 $+ ', ', ' $+ $1 $+ ', ' $+ $3 $+ ', ', ' $+ $1 $+ ','', '', '', 0, 0, , 0, 0);

echo @TEST $timestamp $3 a $2 $1

}



Imaginons dans le cas sur #channel 1,



l'echo me dirait : Julien a complété xxxxxxxxx

L'echo me permet de vérifier si toutes les choses se passent bien, et
me permet de voir si les parametres ont bien été envoyés a la .dll



Le probleme, c'est que j'ai remarqué que j'utilise des timer. A chaque
fois, la manip est faite 3 fois, car timertransfer 3 5 .....

Imaginons 2 choses se terminent a 5 secodnes d'intervales sur #channel1 et #channel2



Channel 1 va commencer a s'executer a sa tache



ainsi



Seconde3 : echo Julien a Complété xxxxx

Seconde8 : echo Julien a Complété xxxxx

Seconde8 (vu que %channel2 a terminé 5 secondes plus tard, et que le
timer commence 3 secodnes apres l'execution 3 + 5 = 8 ) Julia a finie
xxxxx

Seconde13 : Julia a finie xxxxx

Seconde18 : Julia a finie xxxxx



Ainsi, on remarque que #channel1 n'a pas pu s'éxecuter 3 fois parce que #channel2 l'a coupé.

En gros, mon probleme, comment faire, ( en gardant mon code pareil, en
faisaitn appel a un second alias ), pour que les channel ne se coupent
pas.



Le probleme doit se situer au moment ou j'éxecute un alias




timertransfer 3 5 transfer %channe2 FINIE %nick



Merci d'avance pour votre aide.



Cordialement.

5 réponses

Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
Déja reunis les on text et optimise un peu :



on *:TEXT:*:#channel1,#channel2,#channel3:{

if ($istok(Julien terminé.Julia finie.Robert aboutit,$1-2,46)) {

var %nick1 $strip($1) ,%channel1 $strip($3)

.timertransfer 3 5 transfer %channel1
$replace($2,terminé,COMPLETÉ,finie,FINIE,aboutit,ABOUTIT) %nick

}

}

J'suis pas sur que la comparaison ( $istok ) sois celle que tu veux mais il me semble que c'est ca.

Que vaux $3 ?



Essaye un echo au debut de l'alias au cas ou la command avec la dll marche pas



alias transfer {

echo @Test debut $timestamp $3 a $2 $1

/dll nomt_urc.dll nomt_urc( 0 , ' $+ $2 $+ ', ', ' $+ $1 $+ ', ' $+ $3 $+ ', ', ' $+ $1 $+ ','', '', '', 0, 0, , 0, 0);

echo @TEST fin $timestamp $3 a $2 $1

}



J'vois pas trop pourquoi les commandes ne s'execute deux fois au lieu
de trois pour ton exemple , l'alias execute juste deux commande qui
n'influent pas sur les timers.
Messages postés
70
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
25 février 2007

Salut wims, merci de pour ton aide.

Enfin, j'aurais aimé gardé les on *text séparé pour chaque channels, garder la meme structure.



on *:TEXT:*Julien*terminé*:#channel1:{

var %nick1 $strip($1, burc)

var %channel1 $strip($3, burc)

timertransfer 3 5 transfer %channel1 COMPLETé %nick

}



on *:TEXT:*Julia*finie*:#channel2:{

var %nick1 $strip($1, burc)

var %channel2 $strip($3, burc)

timertransfer 3 5 transfer %channe2 FINIE %nick

}



On va prendre l'exemple avec deux channels.

Et on va garder l'alias mais on ve laisser plus que l'echo dedans. Comme ceci



alias transfer {

echo @TEST $timestamp $3 a $2 $1

}



Mais pour pouvoir faire des tests, on va faire des alias a la place des on*text.

Comme ceci. Et on tt simplifier au maximum, pour faire apparaitre mon probleme.



alias channel1 {


var %nick1 = Alain

var %text1 = lalala

timertransfering 3 5 transfering %nick1 %text1

}




alias channel2 {


var %nick2 = Julia


var %text2 = lilili

timertransfering 3 5 transfering %nick2 %text2

}



alias transfer {

echo @TEST $1 $2

}



En gros la j'ai tout simplifié.

Fais /channel1

Puis 7-8 secondes plus tard /channel2



On voit que ca commence comme ca

;channel1 commence son echo

@Test Alain lala

;on vient de démarrer /channel2

@Test Julia lili

@Test Julia lili

@Test Julia lili



En gros on remarque donc bien que qd on lance /channel2 ca coupe
/channel1 parce qu'il utilise le meme alias. Comment remedier a cela ?
En gardant la meme structure. Qu'est ce qui est faux dans mon code ?



Merci d'avance pour votre aide.
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
Non mais en fait j'suis fatigué ce soir :(

C'est tout a fait normal que tu n'est pas le reste des echo ( ou de nimporte quelle action ).

Cela viens du fait que tes nom de timer sont identique donc :

on text ou alias channel1 declenché

/timertransfering > il se declenche

autre on text ou channel2 declenché

/timertransfering > comme il est deja enclenché , mirc le ferme et le reouvre automatiquement



pour resoudre se probleme il suffit de renommer le nom du timer par rapport au pseudo :)

.timer $+ %nick



ou %nick est le pseudo de celui qui a declenché l'evenement

si le meme pseudo declenche deux fois les on text par contre meme
probleme donc fait gaffe en verifiant que un pseudo n'est pas acces a
une command s'il a deja un timer a son nom ce qui donne sa :





on *:TEXT:*Julia*finie*:#channel2:{

var %nick1 $strip($1, burc)

var %channel2 $strip($3, burc)

if (!$timer(transfering $+ %nick)) timertransfer 3 5 transfer %channe2 FINIE %nick

}



pense a modifier pour les 3 on text ( ou un seul si tu prend ma methode :) )
Messages postés
301
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
19 février 2007

Et au fait, j'en ai marre que tout le monde pose cette question "timers"... Regardez sur l'help ou sur les archives du forum !
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
1
nn mais ya qu'un event text pour chaque remote, si t'en veux pr chaque chan, tu fais plusieurs remotes, mais c'est inutile, mets les chans en condit