Pourquoi ce script anti j/p ban les mecs qui /hop???

Utilisateur anonyme - 29 déc. 2005 à 17:31
cs_Huitre Messages postés 290 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 29 février 2008 - 30 déc. 2005 à 19:18
Bonjour,

Voilà c'que j'ai dans le remote

;anti join-part
ON *:JOIN:#monChan: {
set %join. [ $+ [ $nick ] ] 1
.timerunset 1 60 unset %join. [ $+ [ $nick ] ]
}

ON *:PART:#monChan: {
if (%join. [ $+ [ $nick ] ]) {
msg $nick #monChan join/part -> Banni | mode $chan +b $wildsite
}
}
;fin antijoinpart

Donc ça marche très bien.. A un souci près, quand le mec /HOP ça le ban quand même. Et je pige absolument pas pourquoi. S'il /HOP ça veut dire qu'il /PART puis qu'il /JOIN. Dans la partie ON PART du code, rien ne devrait se passer puisque le mec n'a pas encore /JOIN
Donc j'y pige rien du tout :/ Si quelqu'un pouvait me mettre sur la voie :)

Merci d'avance

8 réponses

COOLMAN002 Messages postés 969 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 1 juillet 2012 1
29 déc. 2005 à 18:00
si il /hop c'est qu'il PART et ensuite JOIN, et qu'il est déjà sur le salon...

Si il hop après être resté plus de 60 secondes sur le salon, se sera bon.

PS: plutot que de mettre un timer pour unset la var, /set -u60 %join. [ $+ [ nick ] ] 1
0
Utilisateur anonyme
29 déc. 2005 à 19:26
Nope, s'il reste plus de 60 secondes il est quand même banni :/ Je comprends pas pourquoi

C'est sans doute mieux de se débarrasser du timer pour unset la var mais le problème est toujours là!

Je join mon chan,
J'attends les 60 secondes,
Je fais un /HOP je suis banned!

???
0
cs_Huitre Messages postés 290 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 29 février 2008
29 déc. 2005 à 23:46
C est normal que le mec qui /hop se fasse ban si il /hop ds les 60 sec apres son arrivée.
Puisque pour /hop il faut JOIN ! Donc ca fait : Join , Part , Join.

A la place du timer , tu devrais juste stocker le temps d arrivée de la personne , et verifie si $calc(%join. [ $+ [ nick ] ] - $ctime) < 60 , et le ban si c est le cas, sinon tu unset la var.
Je ne suis pas partisan des scripts à 153214541235134514351346135 timers du tout, puisque limité a 99 timer.
Si ca ne marche pas du tout, utilise les hashtable pour stocker les valeurs, car set avec [ ] c est caca aussi :p
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
30 déc. 2005 à 03:16
à mon avis ton :
.timerunset 1 60 unset %join. [ $+ [ $nick ] ]
va faire un unset 1 (il remplacera par la valeur de cette variable)
soit tu mets unset %join. $+ $nick, soit tu utilises la solution de CoolMan002, avec -u60 (conseillée)
0

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

Posez votre question
cs_Huitre Messages postés 290 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 29 février 2008
30 déc. 2005 à 12:48
De plus vu que tu as nommé ton timer, il le reinitialise a chaque fois que quelqu un join, donc il ne unset jamais les autres variables. Le probleme vient de la.
0
Utilisateur anonyme
30 déc. 2005 à 16:55
rien ne marche, j'y pige rien
Laissons tomber :/ J'trouverai bien le script qui marche qqpart
0
COOLMAN002 Messages postés 969 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 1 juillet 2012 1
30 déc. 2005 à 18:51
En cette période de fête, soyons généreux :)

on *!:JOIN:#: set -u60 %join. [ $+ [ $nick ] ] ON
on *!:PART:#: if (%join. [ $+ [ $nick ] ]) { msg $nick # join/part -> Banni | mode $chan +b $wildsite }
0
cs_Huitre Messages postés 290 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 29 février 2008
30 déc. 2005 à 19:18
Au lieu de mettre .timerunset 1 60 /unset %join. $+ $nick
tu mets .timer 1 60 /unset %join. $+ $nick
0
Rejoignez-nous