BreizhSpirit
Messages postés13Date d'inscriptionjeudi 30 août 2007StatutMembreDernière intervention 1 septembre 2007
-
30 août 2007 à 17:31
BreizhSpirit
Messages postés13Date d'inscriptionjeudi 30 août 2007StatutMembreDernière intervention 1 septembre 2007
-
1 sept. 2007 à 01:47
Salut,
Je souhaite attenddre la fin de l'execution du /whois dans un alias pour pouvoir exploiter les resultats toujours dans cet ealias.
J'ai commencé par faire une boucle sur le test d'une variable qui est modifiée dans raw indiquant la fin du /whois
Alias ->
; On attend la fin du /whois
:loop
if (%IsWhoisEnd != true) {
goto loop
}
Remote ->
; Raw du /whois indiquant la fin de la commande
raw 318:*End of /WHOIS list*: {
%IsWhoisEnd = true
}
C'est la que je me suis rendu compte que apperement le "catch" de l'evenement raw 318 ne se fait pas tant que l'alias est pas fini.
Quelqu'un aurait une idée pour gérer le probleme autrment ou pour mettre une sorte de pause dans le loop pour permettre le "catch" ?
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 31 août 2007 à 04:07
Ah bah ça oui si tu veux :
on !*:join:#salon:{
set %nwho $nick
whois $nick
}
raw *:*:{
;vérifie que $2 sois le pseudo...
if ($2 == %nwho) {
if ($numeric == CellePourNetworkAdmin) set %answ 1
elseif ($numeric == CellePourUnAutreTruc) set %answ 1
elseif ($numeric == 318) && (%answ) { ici, le nick %nwho est condidéré comme un admin ou autre donc tu fais ce que tu veux, oublie pas d'unset les variable %answ et %nwho a la fin }
Il n'y aura pas de probleme au niveau du code, même si deux nick joigne en même temps
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 31 août 2007 à 16:59
Oui $2 représente je crois le nick whoisé, mais a vérifié que ce sois pas $1 ou $3
Et ce n'est pas que le server attend qu'un whois sois finis, mais disons que le cas ou deux personne joigne un salon avec disons 30 milliseconde réel de différence, est vraiment très rare, faudrait testé de whois deux personne en même temps, une qui a un grade spécial et une autre normal, avec un /echo dans la raw 318 selon si le nick a un grade spécial ou non. :)
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 30 août 2007 à 23:41
Ce n'est pas vraiment la bonne méthode, ce qu'il faut faire c'est choppé les messages, les stocker, et quand le raw se finis (318) tu affiches les infos, et n'oublie pas de mettre /haltdef pour que mirc arrête de mettre ses messages par défaut :
raw *:*:{
if ($numeric == 311) { set -u2 %raw311 $1- | haltdef }
elseif ($numeric == 319) { set -u %raw319 $1- | haltdef }
elseif ($numeric == 318) {
echo -a %raw311
echo -a %raw319
etc...
}
}
c'est un exemple, a toi de completé en formattant le texte contenus dans $1- (les différentes var) selon tes choix, rajoute les elseif a chaque fois
BreizhSpirit
Messages postés13Date d'inscriptionjeudi 30 août 2007StatutMembreDernière intervention 1 septembre 2007 31 août 2007 à 01:21
Disons que ma méthode me semble plus logique pour ce que je veux faire avec les informations du whois,ce n'est pas pour les afficher mais pour les exploiter lorsque quelqu'un join le channel, mais apparement cela ne s'adapte pas au fonctionnement de mirc. Donc je vais me debrouiller avec ce que tu m'as donné et contourner le problement. Merci encore pour ton aide wims, tu es mon eternel sauveur
Vous n’avez pas trouvé la réponse que vous recherchez ?
BreizhSpirit
Messages postés13Date d'inscriptionjeudi 30 août 2007StatutMembreDernière intervention 1 septembre 2007 31 août 2007 à 01:28
Pour info mon bot entre autre kick tous les gens qui ne font pas partie d'une guest list a part les admin et les services du serveur biensur. Je le fais dans un
on 1:JOIN:%Channel ce qui me parait plus logique biensur. Seulement j'ai besoin de connaitre les admins et serveur c'est pour ca que je passe par whois, il me semblait plus logique de faire tout le traitement dans join plutot que dans raw mais bon je vais faire avec.
BreizhSpirit
Messages postés13Date d'inscriptionjeudi 30 août 2007StatutMembreDernière intervention 1 septembre 2007 31 août 2007 à 01:57
En fait je pense que cela ne va pas être jouable avec ta méthode, je m'explique : Je n'aurais plus le $nick de la personne qui a join dans l'évement de raw, je pourrais le sauver dans une variable au moment du join mais je pense que si deux personnes join le channel dans un interval assez court je vais perdre l'information du premier join et du coup je ne saurais plus qui kicker ou ne pas kicker une fois dans le raw. Je sais pas si je me fais bien comprendre
BreizhSpirit
Messages postés13Date d'inscriptionjeudi 30 août 2007StatutMembreDernière intervention 1 septembre 2007 31 août 2007 à 12:01
Le seul truc que je ne comprend pas dans ton code c'est le $2, je pensais apres avoir lu l'aide mirc que l'on ne pouvait récupérer que $numeric et $rawmsg dans un raw. Je comprend bien que ici $2 représente le nickname concerné par le whois mais il est renseigné par quoi ?
BreizhSpirit
Messages postés13Date d'inscriptionjeudi 30 août 2007StatutMembreDernière intervention 1 septembre 2007 31 août 2007 à 12:26
Ok $n semble représenter le nième élément du $rawmsg et tu me confirme que le serveur ne me retournera jamais les données d'un /whois tant que le précédent /whois n'est pas terminé ?