LOLESKE88
Messages postés70Date d'inscriptiondimanche 18 décembre 2005StatutMembreDernière intervention25 février 2007
-
5 janv. 2006 à 14:33
cs_XSXS
Messages postés10Date d'inscriptionsamedi 23 octobre 2010StatutMembreDerniè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 ) ?
fjxokt
Messages postés840Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 février 20091 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
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,
fjxokt
Messages postés840Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 février 20091 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
fjxokt
Messages postés840Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 février 20091 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)
fjxokt
Messages postés840Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 février 20091 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