Timer [Résolu]

Messages postés
70
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
25 février 2007
- - Dernière réponse : 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.
Afficher la suite 

14 réponses

Meilleure réponse
Messages postés
841
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de fjxokt
Messages postés
70
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
25 février 2007
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de LOLESKE88
Messages postés
841
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de fjxokt
Messages postés
70
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
25 février 2007
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de LOLESKE88
Messages postés
70
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
25 février 2007
3
Merci
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 :)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de LOLESKE88
Messages postés
841
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de fjxokt
Messages postés
70
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
25 février 2007
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de LOLESKE88
Messages postés
841
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de fjxokt
Messages postés
70
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
25 février 2007
3
Merci
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

}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de LOLESKE88
Messages postés
841
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de fjxokt
Messages postés
841
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
3
Merci
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
}
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de fjxokt
Messages postés
70
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
25 février 2007
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de LOLESKE88
Messages postés
841
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
0
Merci
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
Commenter la réponse de fjxokt
Messages postés
10
Date d'inscription
samedi 23 octobre 2010
Statut
Membre
Dernière intervention
9 juillet 2012
0
Merci
XS--XS
Merci LOLESKE88, c'est sympas , et le timer fonctionne à merveille merci à tous !!!
Commenter la réponse de cs_XSXS