Timers

Résolu
LOLESKE88 Messages postés 70 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 25 février 2007 - 27 févr. 2006 à 00:12
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011 - 21 févr. 2007 à 00:00
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

cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
27 févr. 2006 à 00:57
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.
LOLESKE88 Messages postés 70 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 25 février 2007
27 févr. 2006 à 01:26
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.
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
27 févr. 2006 à 01:42
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 :) )
Mc_AbBeR Messages postés 301 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 février 2007
2 mars 2006 à 19:53
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 !

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
21 févr. 2007 à 00:00
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
Rejoignez-nous