cs_ISoKa
Messages postés435Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention17 octobre 2008 14 juil. 2007 à 14:44
Bin pour avoir plusieurs sockets en mm temps, soit tu fais bourin et tu repetes ton code autant de fois que tu veux de bots, soit tu fais un truc plus fin, c-a-d que tu adaptes ton script pour gerer plusieurs bot en interne. Par exemple : ton premier bot s'appel apparement shanorck1 donc bin tu te dis que tes bot s'appels de facon générale shanorckX. Ainsi tes :
on *:sockread:Shanorck1:{
deviennes
on *:sockread:Shanorck*:{
ainsi en gros aprés ton :
on *:sockread:Shanorck1:{
sockread %a
tokenize 32 %a
if ($gettok(%a,1,32) == PING) {
sockwrite -n $sockname PONG $remove($gettok(%a,2,32),:)
}
if ($gettok(%a,4,32) == :Welcome) {
echo -a 3;3Shanorck : Je suis maintenant connecté sur %Shanorck.serv $+ .
.timer.reg1 1 1 sockwrite -n $sockname privmsg nickserv identify %snpass
.timer.reg2 1 1 echo -a 3;3Shanorck : Je suis maintenant enregistré auprès de NickServ.
.timer.join1 1 2 sockwrite -n $sockname JOIN %chan1
.timer.join2 1 2 echo -a 3;3Shanorck : Je vais joindre le salon %chan1 $+ .
} if ($gettok(%a,2,32) KICK) && ($gettok(%a,3,32) %chan1) && ($gettok(%a,4,32) == %Shanorck.nickbot) {
sockwrite -n $sockname JOIN %chan1
}
pourrai devenir (je fai ca rapide je garantie pas la fonctoinalité) :
on *:sockread:Shanorck*:{
sockread %a
tokenize 32 %a
if ($1 == PING) {
sockwrite -n $sockname PONG $remove($2,:)
}
if ($4 == :Welcome) {
echo -a 3;3 $sockname : Je suis maintenant connecté sur % [ Shanorck.serv $+ [ $right($sockname,-8) ] ] $+ .
.timer.reg1 $+ $right($sockname,-8) 1 1 sockwrite -n $sockname privmsg nickserv identify % [ snpass $+ [ $right($sockname,-8) ] ]
.timer.reg2 $+ $right($sockname,-8) 1 1 echo -a 3;3 $sockname : Je suis maintenant enregistré auprès de NickServ.
.timer.join1 $+ $right($sockname,-8) 1 2 sockwrite -n $sockname JOIN % [ chan1 $+ [ $right($sockname,-8) ] ]
.timer.join2 $+ $right($sockname,-8) 1 2 echo -a 3;3 $sockname : Je vais joindre le salon % [ chan1 $+ [ $right($sockname,-8) ] ] $+ .
} if ($2 KICK) && ($3 % [ chan1 $+ [ $right($sockname,-8) ] ] ) && ($4 == % [ Shanorck.nickbot $+ [ $right($sockname,-8) ] ] ) {
sockwrite -n $sockname JOIN % [ chan1 $+ [ $right($sockname,-8) ] ]
}
Voila en gros à quoi ca ressemblerai aprés modif. Comme tu vois ca complique le code apparement mais bon en faite c'est juste que ca rajoute des ptis bouts de code surtt les variables par exemple %chan1 devient % [ chan1 $+ [ $right($sockname,-8) ] ]
ce $right($sockname,-8) represente juste le numero de ton bot en supposant que tu prennes comme convention que tes bots s'appel biensur shanorckX avec X etant un nombre quelquonque par exemple. Toutefois pour simplifié un peu la lecture et la manipulation j'te conseille de faire dés le debut du on sockread "var %b $right($sockname,-8) " comme ca t'as juste %chan1 devient % [ chan1 $+ [ %b ] ]
ce qui est moins lourd à lire.
Maintenant à toi de generer les sockets via ton dialog de facon intelligente.
ISoKa
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 14 juil. 2007 à 19:57
Mdr : $right($sockname,-8) deviens $right($sockname,1), sinon, j'lui conseillerai plutot de pas faire des trucs trop durs pour lui, et que au lieu de bidouiller le code des autres en socket, il devrait plutot faire son propre socket tout seul :)
cs_ISoKa
Messages postés435Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention17 octobre 2008 15 juil. 2007 à 00:55
Mdr : $right($sockname,-8) deviens $right($sockname,1) <<< Valable seulement si le numero est à 1 seul chiffre :), pour ma part j'avai traité le cas général avec une quantité pouvant etre superieure à 10
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 15 juil. 2007 à 02:35
"sinon, j'lui
conseillerai plutot de pas faire des trucs trop durs pour lui, et que
au lieu de bidouiller le code des autres en socket, il devrait plutot
faire son propre socket tout seul :)"
surtout que c'était mon 1er socket et que c'est codé comme une quiche
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 15 juil. 2007 à 02:48
sinon pour repondre a ta question, le systeme de l'étoile est pas mal, mais j'avoue que je l'avais utilisé pour les events mp3end / waveend / midiend et ca marchait pas :D (mais je suis sous mirc v6.17, ptete que ca joue qqchose..)
enfin bon, ma reponse n'est pas complete, dsl :s
cs_ISoKa
Messages postés435Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention17 octobre 2008 15 juil. 2007 à 03:24
"Bah si tu veux joué au plus malin, tu n'avais pas géré le cas ou le
nombre est superieur a 99 =), donc le mieux est
$remove($sockname,Shanorck)"
:/ comme j'l'avai di avant, mon truc c'est le cas général donc ca gerai meme 9999999 toutefois il est vrai que $remove($sockname,Shanorck) etait plus elegant vu que mon $right($sockname,-8) revient à $remove($sockname,Shanorck) reli bien, tu verras que c'est le cas :)
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 15 juil. 2007 à 04:06
Isoka : Ouaip dsl, ton $right étais bon et mon $remove n'est pas plus élégant que ton $right (même si mon $remove marche pour nimporte quel nom de socket)
Uaip :
Les évènements on MIDIEND, on WAVEEND, et on MP3END se déclenchent quand mIRC finit de jouer un son.
Format : on <niveau>:MIDIEND:<commandes>
Il y a aussi :
On SONGEND
Agit sur la fin des fichiers type OGG, MP3 & WMA.
Qui marche de la même façon, mais on waveend ne marchait pas, c'etais un bug, corrigé sur la 6.21 mais, quel est le rapport avec les joker (*) et pourquoi ne prend tu pas la 6.21 ?
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 15 juil. 2007 à 11:16
bah le rapport c'était l'utilisation de l'étoile (*). enfait j'ai fait un lecteur mp3 et j'avais fait ca :
[et la je viens de me rendre compte de mon erreur stupide :) ]
bref, le probleme est réglé ^^
et si je prends pas la 6.21 bah... ptete parce-que sans doute la facon de programmer a évoluer et je suppose que maintenant 4 lignes de mes codes reviennent a un simple identifieur, je code a l'ancienne, et ca m'embeterai de devoir tout changer... sinon, ma v6.17 est en francais (peu utile pour moi vu que j'ai viré la barre des menu, la toolbar, etc) mais pratique pour les requetes input.
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 15 juil. 2007 à 21:12
Pas bien de modifier l'exe de mIRC ;) mais quand au rapport 6.17/6.21, mirc est en constante évolution mais c'est très très rare que d'une version a une autre maintenant, il y est des changement de comportement d'un code (le dernier truc en date c'est le window -h), donc ton code sur la 6.17 est censé marché sur la 6.21, il y a juste des restriction sur les façon de coder sur les parenthese des if, mais si tu code pas comme un bourin ça marchera très bien et le seul identifieur nouveau de la 6.21 est $portable.