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.
3
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.
0
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 :) )
0
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 !
0

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
0
Rejoignez-nous