Timer

Résolu
LOLESKE88 Messages postés 70 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 25 février 2007 - 5 janv. 2006 à 14:33
cs_XSXS Messages postés 10 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 9 juillet 2012 - 26 juin 2011 à 14:50
Bonjour,



on *:TEXT:*:#Pickup_a:{

if ($1-2 == !new server) {

hadd -m serv $strip($$3)

timer $+ $strip($3) 0 1 lannion $strip($3)

}

elseif ($1-2 == !del server && $hfind(serv,$$strip($3))) { hdel serv $strip($3) | timer $+ $strip($3) off }

}



alias lannion {

echo @Pickup IP DU NOUVEAU SERVEUR : $1

}



on *:TEXT:*:#Pickup_b:{

if ($1-2 == !new server) {

hadd -m serv $strip($$3)

timer $+ $strip($3) 0 1 lannion $strip($3)

}

elseif ($1-2 == !del server && $hfind(serv,$$strip($3))) { hdel serv $strip($3) | timer $+ $strip($3) off }

}



alias lannion {

echo @Pickup IP DU NOUVEAU SERVEUR : $1

}




Je rentre de vacance, je viens de tester ca et ca marche nikel avec les
hash table. J'ai compris le principe. Seulement voila, imaginons que
maintenant la meme IP soit présente dans deux channels différents.



#Pickup_a : !New server 192.168.0.1

#Pickup_b : !New server 192.168.0.1 <- a ce moment la, le echo de #Pickup_a s'arrete.



Quand je " !del server 192.168.0.1 " dans #Pickup_a alors il y a conflit avec #Pickup_b



Comment faire pour que les channels soient indépendants quel que soit l'IP ( avec !add server / !del server ) ?



Il faut refaire un hashtable ?



Merci d'avance pour votre aide.



Bonne année 2006 à vous.

14 réponses

fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
5 janv. 2006 à 17:46
tu n'as qu'a faire ta hash table de la manière suivant
hadd serv #chan1 ip;ip;ip;ip
hadd serv #chan2 ip;ip;ip

en gros un item par channel, et les ips dans les datas, séparées par un token ( ';' par exemple)
3
LOLESKE88 Messages postés 70 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 25 février 2007
5 janv. 2006 à 17:59
Bonsoir, merci pour ta réponse.

Je ne te comprends pas très bien néanmoins



Tu veux dire quelque chose comme ça ?



hadd -m serv #channel $strip($$3)



Merci d'avance.



Cordialement
3
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
5 janv. 2006 à 18:06
voila
sauf que si tu fais:
hadd -m serv #channel $strip($$3)
tu vas supprimer toutes les données pour ce channel
Il faut que tu verifie si l'ip $$3 n'est pas déja dans la table pour l'item #chan,
et si elle est différente, tu hadd -m serv #chan $addtok($hget(serv,#chan),$$3,59)
dans ce cas, tes ips seront stockées sous la forme ip1;ip2;ip3

/help $addtok si tu ne sais pas comment t'en servir
3
LOLESKE88 Messages postés 70 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 25 février 2007
5 janv. 2006 à 18:32
Merci d'accord.



je viens de tester cela :



peux-tu me dire si cela semble bon ?



on *:TEXT:*:#maison2:{

if ($1-2 == !new server) {

hadd -m serv #chan $addtok($hget(serv,#chan),$$3,59)

timer $+ $strip($3) 0 1 lannion2 $strip($3)

}

elseif ($1-2 == !del server && $hfind(serv,#chan),$$3,59) { hdel serv $strip($3) | timer $+ $strip($3) off }

}



J'ai un seconde question, en ce qui concerne #chan , je dois
manuellement mettre apres le # le nom du chan ou j'applique le on
*:TEXT:* par exemple, dans ce cas présent,



on *:TEXT:*:#maison2:{

hadd -m serv #maison2 $addtok($hget(serv,#maison2),$$3,59)



ou alors je n'ai rien besoin de touché ?



On ne peut pas appliquer %chan à la place de #chan ?



Merci d'avance pour votre réponse
3

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

Posez votre question
LOLESKE88 Messages postés 70 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 25 février 2007
6 janv. 2006 à 15:20
Bonjour,

Je viens de tester cette partie de mon script a l'instant. Mais ca ne marche toujours pas.



Quand l'IP d'un nouveau serveur apparait sur deux channels.

sur #maison et sur #maison2 par exemple

l'écho de #sur maison est arreté par celui de #maison2



Et la je ne vois pas trop quel en est la raison :s



Merci de m'éclairer a ce sujet.



D'avance merci, bonne journée :)
3
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
7 janv. 2006 à 01:23
on *:TEXT:*:#maison2:{
;je crée une var contenant l'ip (en supposant que c'est l'ip biensur)
var %ip $strip($3)
;si $1-2 == !new server et que l'ip %ip n'est pas contenue dans la table serv, item $chan
if ($1-2 == !new server && !$findtok($hget(serv,$chan),%ip,59)) {
;j'ajoute l'ip a l'item $chan
hadd -m serv $chan $addtok($hget(serv,$chan),%ip,59)
}
;si $1-2 == !del chan et que l'ip %ip est contenue dans l'item $chan de la table serv
elseif ($1-2 == !del server && $findtok($hget(serv,$chan),%ip,59) {
;je reinjecte le contenue de l'item $chan, en enlevant l'ip %ip
hadd -m serv $chan $remtok($hget(serv,$chan),%ip,59)
}
}

n'oublie pas que ta table se présente sous cette forme
_______________
|_____serv_____|

#chan1 | ip1;ip2;ip3;etc
#chan2 | ip1;ip2;etc
etc

donc pour ajouter une ip a un chan, j'utilise $addtok
exemple: $addtok(5;6;7,8,59) retourne 5;6;7;8 (59 = token ';')

pour supprimer une ip, j'utilise $remtok
exemple: $remtok(5 6 7,6,32) retourne 5 7 (32 = token 'espace')

biensur ces deux commandes sont utilisées avec hadd, sinon il ne se passeraient pas grand chose ;-)

et enfin pour verifier si l'ip est bien dans la table, j'utilise $findtok
exemple: $fintok(a;b;c;d,c,59) retourne 1 car 'c' fait bien parti de la chaine de tokens a;b;c;d

derniere chose $hget(serv,#chan1) retourne la liste des ips qui ont été ajoutées dans #chan1 sous la forme ip1;ip2;etc
3
LOLESKE88 Messages postés 70 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 25 février 2007
7 janv. 2006 à 03:23
Bonsoir,



Merci pour votre réponse vraiment.

J'ai une toute petite dernière chose a vous poser.



timer $+ $strip($3) 0 1 lannion2 $strip($3) <- pour le timer qui l'ance l'écho, la ligne reste la meme ?



-> timer $+ $strip($3) 0 1 lannion2 $strip($3)



D'avance merci, bonne soirée.
3
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
7 janv. 2006 à 10:56
a quoi sert cet alias 'lannion2' ? c'est lui qui produit l'echo ?
si oui:

il peut eêtre mis a la même place qu'avant, cependant, comme la même ip peut être dite sur 2 chan differents, il faut donner un autre nom au timer (pour eviter les conflits justement)
au lieu de timer[ip]
met timer[chan][ip] c'est à dire timer $+ $chan $+ %ip (pareil pour le stopper)
3
LOLESKE88 Messages postés 70 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 25 février 2007
7 janv. 2006 à 20:39
Bonsoir,

D'accord, je vois ce que vous voulez dire, vous avez ajouté $chan pour qu'il n'y est pas de conflit entre les channels.

Cependant, j'ai du faire une erreur quelque par dans le script, car aucun des scripts ne marche :s



PS : Oui, les alias " Lannion " et " lannion2" cherchent respectivement a écho les informations de #chan1 et #chan2.



Voici à quoi ressemble mon code :



on *:TEXT:*!new*server*:#maison:{

/var %ip = $strip($3)

if ($1-2 == !new server && !$findtok($hget(serv,$chan),%ip,59)) {

hadd -m serv $chan $addtok($hget(serv,$chan),%ip,59)

timer $+ $chan $+ %ip 0 1 lannion %ip

}

elseif ($1-2 == !del server && $findtok($hget(serv,$chan),%ip,59) {

hadd -m serv $chan $remtok($hget(serv,$chan),%ip,59)

}

}



on *:TEXT:*!del*server*:#maison2:{

/var %ip = $strip($3)

if ($1-2 == !new server && !$findtok($hget(serv,$chan),%ip,59)) {

hadd -m serv $chan $addtok($hget(serv,$chan),%ip,59)

timer $+ $chan $+ %ip 0 1 lannion2 %ip

}

elseif ($1-2 == !del server && $findtok($hget(serv,$chan),%ip,59) {

hadd -m serv $chan $remtok($hget(serv,$chan),%ip,59)

}

}



alias lannion {

echo @Pickup Nouveau serveur sur #xxx : IP DU NOUVEAU SERVEUR : $1

}



alias lannion2 {

echo @Pickup Nouveau serveur sur #xxx : IP DU NOUVEAU SERVEUR : $1

}
3
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
7 janv. 2006 à 20:52
on *:TEXT:!new server*:#fjx:{
var %ip $strip($3)
if ($1-2 == !new server && !$findtok($hget(serv,$chan),%ip,59)) {
hadd -m serv $chan $addtok($hget(serv,$chan),%ip,59)
timer $+ $chan $+ %ip 0 1 lannion %ip
}
elseif ($1-2 == !del server && $findtok($hget(serv,$chan),%ip,59) {
hadd -m serv $chan $remtok($hget(serv,$chan),%ip,59)
}
}

on *:TEXT:!del server*:#fjx:{
var %ip $strip($3)
if ($1-2 == !new server && !$findtok($hget(serv,$chan),%ip,59)) {
hadd -m serv $chan $addtok($hget(serv,$chan),%ip,59)
timer $+ $chan $+ %ip 0 1 lannion2 %ip
}
elseif ($1-2 == !del server && $findtok($hget(serv,$chan),%ip,59)) {
hadd -m serv $chan $remtok($hget(serv,$chan),%ip,59)
timer $+ $chan $+ %ip off
}
}

alias lannion {
echo @Pickup Nouveau serveur sur #XXX : IP DU NOUVEAU SERVEUR : $1
}

alias lannion2 {
echo @Pickup Nouveau serveur sur #XXX : IP DU NOUVEAU SERVEUR : $1
}

ça devrait marcher
3
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
7 janv. 2006 à 20:55
hum une question
tu veux que ces codes ne fonctionnent que sur #maison et #maison2 ?

dans ce cas tes events doivent ressembler a ça

on *:TEXT:!new server*:*:{
if ($chan #maison || $chan #maison2) {
la suite du code ici
}
}

on *:TEXT:!del server*:*:{
if ($chan #maison || $chan #maison2) {
la suite du code ici
}
}
3
LOLESKE88 Messages postés 70 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 25 février 2007
7 janv. 2006 à 23:27
Bonsoir, excuseez moi de vous embetez encore une fois avec mon script.

Mais ca ne fonctionne toujours pas comme je le voudrais.



on *:TEXT:!new server*:#fjx:{

var %ip $strip($3)

if ($1-2 == !new server && !$findtok($hget(serv,$chan),%ip,59)) {

hadd -m serv $chan $addtok($hget(serv,$chan),%ip,59)

timer $+ $chan $+ %ip 0 1 lannion %ip

}

elseif ($1-2 == !del server && $findtok($hget(serv,$chan),%ip,59) {

hadd -m serv $chan $remtok($hget(serv,$chan),%ip,59)

}

}



on *:TEXT:!del server*:#fjx:{

var %ip $strip($3)

if ($1-2 == !new server && !$findtok($hget(serv,$chan),%ip,59)) {

hadd -m serv $chan $addtok($hget(serv,$chan),%ip,59)

timer $+ $chan $+ %ip 0 1 lannion2 %ip

}





elseif ($1-2 == !del server && $findtok($hget(serv,$chan),%ip,59)) {

hadd -m serv $chan $remtok($hget(serv,$chan),%ip,59)

timer $+ $chan $+ %ip off

}

}



alias lannion {

echo @Pickup Nouveau serveur sur #XXX : IP DU NOUVEAU SERVEUR : $1

}



alias lannion2 {

echo @Pickup Nouveau serveur sur #XXX : IP DU NOUVEAU SERVEUR : $1

}



En fait, je veux que ces codes fonctionnes sur plein de serveurs mais que je choisirais dans le :

on *:TEXT:!new server*:#NOM_CHANNEl_DS_LEQUEL_JE_VEUX_QUE_LE_CODE_MARCHE:{



Mais je voudrais apres que chaque code utilise un alias different

Et dans votre version, quel que soit le channel, ca utilisera l'alias " Lannion "

Mais moi je voudrais que mon code utilise soit, Lannion, soit autre chose.

Apres, c'est moi qui choisis ce que je veux mettre.

Et pareil pour !del server

Je vois que vous avez fait un code pour !new server et !del server



D'avance merci,et excusez moi de vous embettez avec ceci ...



Bonne soirée
3
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
8 janv. 2006 à 10:27
ok alors on récapitule:
tu veux que l'on puisse ajouter des ips sur un certain nombre de chans définis (c'est a dire pas tous les chans mais par exemple que #chan1 et #chan2)
d'autre part, je ne comprend pas l'interet de faire plusieurs alias lannion, puisque la seule chose qui diffère de ces deux alias, c'est le #chan qui est ecrit dans le message
tu devrai faire ton code comme ça quand tu appelles le timer

timer $+ $chan $+ %ip 0 1 lannion $chan %ip

et ton UNIQUE alias lannion sera comme ça:

alias lannion {
echo @Pickup Nouveau serveur sur $1 : IP DU NOUVEAU SERVEUR : $2
}

enfin, tu dis que:
"En fait, je veux que ces codes fonctionnes sur plein de serveurs mais que je choisirais dans le :
on *:TEXT:!new server*:#NOM_CHANNEl_DS_LEQUEL_JE_VEUX_QUE_LE_CODE_MARCHE:{"

dans ce cas tu n'as qu'a te servir de l'ebauche de code que je t'ai donnée 2 messages plus haut

J'avoue que j'ai de plus en plus de mal a comprendre le but et le principe de fonctionneent de ce code
0
cs_XSXS Messages postés 10 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 9 juillet 2012
26 juin 2011 à 14:50
XS--XS
Merci LOLESKE88, c'est sympas , et le timer fonctionne à merveille merci à tous !!!
0
Rejoignez-nous