LIMIT SYSTEM [GESTION D' UN CHAN OU MULTI(CHAN/SERV)]

RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009 - 20 oct. 2007 à 18:35
jlbnb Messages postés 11 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 28 février 2008 - 28 févr. 2008 à 08:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44445-limit-system-gestion-d-un-chan-ou-multi-chan-serv

jlbnb Messages postés 11 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 28 février 2008
28 févr. 2008 à 08:47
merci beaucoup a vous deux WIMS et RCA ArKanis sur la commande j'ai enlever le ! et hop ho miracle sa marche .
mille Merci bize à vous deux vous le mérité...
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
28 févr. 2008 à 07:31
essaye sans le ! juste avant le $calc
apparement, $nick($v2,0) = 0
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
28 févr. 2008 à 04:24
on *:quit:{
var %a $comchan($nick,0)
while (%a) {
if ($me isop $comchan($nick,%a)) .timerautolimit $+ $v2 1 5 mode $v2 +l $!calc($nick($v2,0) + 1)
dec %a
}
}

essaye comme ça, si ça ne marche pas, enleve le . sur le /timer et regarde s'il est déclencher, essaye de mettre ici ce que mirc dis...


Devrait fonctionner
jlbnb Messages postés 11 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 28 février 2008
28 févr. 2008 à 01:40
le code a marché sans enlever le .
alors sa se déclenche bien mais avant le quit il y avait ça
[01:02:02] × Mode : labelette / +l 17

après le quit j'ai eu ça
[01:30:02] « [Quit] EtOiLe
[01:30:07] × Mode : labelette / +l 1

du coup plus personne n'a pu rentrée
j'ai essayé la commande sans le . pour voir elle marche aussi et avec le même problème avec la limite qui tombe à 1
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
27 févr. 2008 à 22:58
on *:quit:{
var %a $comchan($nick,0)
while (%a) {
if ($me isop $comchan($nick,%a)) .timerautolimit $+ $v2 1 5 mode $v2 +l $!calc($nick($v2,0) + 1)
dec %a
}
}

essaye comme ça, si ça ne marche pas, enleve le . sur le /timer et regarde s'il est déclencher, essaye de mettre ici ce que mirc dis...


Devrait fonctionner
jlbnb Messages postés 11 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 28 février 2008
27 févr. 2008 à 21:48
je n'ai plus mon message d'erreur mais ça ne me diminue pas la limite
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
27 févr. 2008 à 21:36
on *:quit:var %a $comchan($nick,0) | while (%a) if ($me isop $comchan($nick,%a)) .timerautolimit $+ $v2 1 5 mode $v2 +l $!calc($nick($v2,0) + 1) | dec %a

Devrait fonctionner
jlbnb Messages postés 11 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 28 février 2008
27 févr. 2008 à 21:32
aye WINS une boucle jsuis nul tu pourrais me donner un exemple stp par rapport à ma commande pour le quit meri par avance car je m'arrache les cheveux la pourtant je ne suis pas blonde jte le promet
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
27 févr. 2008 à 12:43
C'est normal étant donnée que l'on ne quit pas un salon spécifique mais le server en lui même.
En gros dans un on quit, $chan est $null et le #:{ est pris en tant que command, il faut faire une boucle sur $comchan($nick,0)
jlbnb Messages postés 11 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 28 février 2008
26 févr. 2008 à 16:14
j'ai repris un code trouvé ici pour la limite sur un chan il marche très bien sauf qu'il me fait un message d'erreur que quand quelqu'un quit celui la
[Info] #:{ Commande invalide
je rappelle que la commande marche ya juste ce message d'erreur si vous pouviez m'aider j'ai chercher plusieurs solus mais rien n'y fait merci par avance
rappel du code:
on *:join:#:{ if ($me isop $chan) .timerautolimit [ $+ [ $chan ] ] 1 7 mode $chan +l $calc($nick($chan,0) + 2) }
on *:part:#:{ if ($me isop $chan) .timerautolimit [ $+ [ $chan ] ] 1 5 mode $chan +l $calc($nick($chan,0) + 1) }
on *:kick:#:{ if ($me isop $chan) .timerautolimit [ $+ [ $chan ] ] 1 5 mode $chan +l $calc($nick($chan,0) + 1) }
on *:quit:#:{ if ($me isop $chan) .timerautolimit [ $+ [ $chan ] ] 1 5 mode $chan +l $calc($nick($chan,0) + 1) }
n0man Messages postés 25 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 30 octobre 2007
24 oct. 2007 à 10:55
-> Isoka : J ai cherché sur le site je n est pas trouvé pourrait tu copier le lien stp :)
cs_ISoKa Messages postés 435 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 17 octobre 2008
23 oct. 2007 à 18:49
g di une betise ct sur http://www.mircscripts.fr que ct :]
cs_ISoKa Messages postés 435 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 17 octobre 2008
23 oct. 2007 à 17:38
pour les netsplit il me semble avoir vu passer un code sur ca voir meme un defis je sais plus trop sur http://scriptsdb.org ca pourrait etre je pense intéréssant pour ton truc
n0man Messages postés 25 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 30 octobre 2007
21 oct. 2007 à 16:26
Apres re et revérification je ne vois toujours pas pour :$comchan($nick,%a).op soit ca me retourne cette erreur $true No such nick/channel ou bien alors la limite est egal au nombre additioné a la fin de $calc
n0man Messages postés 25 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 30 octobre 2007
21 oct. 2007 à 15:50
-> ArKanis
1er msg : mode $comchan($nick,%a), pourquoi il n'y a pas de .op à la suite ? surtout que tu boucles dessus ...
Résolus

Maintenant je vais travailler sur l'évenement on:quit pour essayer de gérer les nets splits
si vous avez des idées elles sont le bievenues
n0man Messages postés 25 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 30 octobre 2007
21 oct. 2007 à 15:16
-> ArkAnis
Dans ton permier msg tu ma dit : mode $comchan($nick,%a), pourquoi il n'y a pas de .op à la suite ? surtout que tu boucles dessus ...
Apres essais mirc me retourne ceci : $true No such nick/channel

2eme msg : if (%chanlimit != $null), devient if (%chanlimit) étant donné que c'est booléen.
Donc if (%blabla == $null), deveint if (!%blabla) ??

3eme msg : pour chacune de tes ON *, tu as une paire de { } inutile, si ce n'est deux :
Je me suis renseigné sur pourquoi mettre une ou ne pas mettre d' accolades.

-> Wims
Tu peux surement enlevé le $nick != $me en mettant un ! avant : on @!*:mode:#:{ a vérifié.
Un trous de memoire pour le ! en début de on: signifiais != $me, pourtant c pratique

on @*:mode:#:{ if ( $nick != $me && l isincs $1) { .timer [ $+ [ $chan ] $+ [ * ] $+ [ $network ] ] 1 2 mode $chan +l $calc($nick($chan,0) + 5) } }

J'ai vérifié, sur mirc 6.3, une condition écrite comme ça passe avec un && mais pas avec un || donc, fait gaffe

merci de l' info
n0man Messages postés 25 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 30 octobre 2007
21 oct. 2007 à 14:12
haaa impec merci :)

Dit moi pourrait tu m expliquer $v1 stp l aide de mirc que je possède n en fait pas référence. Sinon pour la boucle while ($comchan($nick,%a).op) du on:quit .op est il nécéssaire c $nick qui est utilisé et non $me ??
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
21 oct. 2007 à 13:56
tu utilises encore $chan alors que c'est un ON QUIT (j'avais pas fait gaffe)
$chan est vide et donc le timer a toujours le même nom

on @!*:quit:var %a = 1 | while ($comchan($nick,%a).op) { .timer [ $+ [ $v1 ] $+ [ * ] $+ [ $network ] ] 1 3 mode $v1 +l $calc($nick($v1,0) + 4) | inc %a }

comme ça c'est encore mieux :p
n0man Messages postés 25 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 30 octobre 2007
21 oct. 2007 à 13:52
J' ai apportés toute les modifs sugérée ci dessus, mais un problème persiste

on @!*:quit:var %a = 1 | while ($comchan($nick,%a).op) { .timer [ $+ [ $chan ] $+ [ * ] $+ [ $network ] ] 1 3 mode $comchan($nick,%a).op +l $calc($nick($comchan($nick,%a),0) + 4) | inc %a }

Avec le timer la cmd ne s' éxécute que sur le premier chan commun en enlevant le timer ca fonctionne bien

une idée sur le soucis ??
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
21 oct. 2007 à 11:54
l'histoire du $nick != $me, j'en ai parlé dans mon dernier commentaire oO
/mode #salon +kl clé 25
non, il n'y a pas d'erreur, j'ai bien utilisé $1
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
21 oct. 2007 à 04:41
on @*:mode:#:{ if ( $nick != $me && l isincs $1) { .timer [ $+ [ $chan ] $+ [ * ] $+ [ $network ] ] 1 2 mode $chan +l $calc($nick($chan,0) + 5) } }

J'ai vérifié, sur mirc 6.3, une condition écrite comme ça passe avec un && mais pas avec un || donc, fait gaffe

sinon concernant le l == $1, si ya un mode +k avec la lettre l, ya pas une erreur ?

Tu peux surement enlevé le $nick != $me en mettant un ! avant : on @!*:mode:#:{ a vérifié.
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
21 oct. 2007 à 00:06
tu as refait l'erreur du .timer timer dans le ON QUIT

tu devrais mettre le même chrono pour tous les timers
si pendant une même seconde il y a quelqu'un qui join, et un autre qui se fait kicker (dans cet ordre), tu auras un +l qui se fait une seconde après, au lieu de 8

pour chacune de tes ON *, tu as une paire de { } inutile, si ce n'est deux :
on @!*:mode:#:if (l isincs $1) .timer [ $+ [ $chan ] $+ [ * ] $+ [ $network ] ] 1 2 mode $chan +l $calc($nick($chan,0) + 5)
(mets le ! tout devant, ça t'évite le ($nick != $me))

on @!*:quit:var %a = 1 | while ($comchan($nick,%a).op) { .timer [ $+ [ $chan ] $+ [ * ] $+ [ $network ] ] 1 3 mode $comchan($nick,%a).op +l $calc($nick($comchan($nick,%a),0) + 4) | inc %a }
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
20 oct. 2007 à 21:23
concernant le regex, il vaut mieux utiliser la méthode que j'ai donnée, elle sera même plus rapide que ton regex vu qu'il monopolise plein de ressources


while ($comchan($me,%a).op) l' évaluation se fait au sein meme de la boucle pas besoin de le répéter je pense ?
si, justement, sinon tu peux avoir un décalage entre les %a


N' ayant jamais vus de mass quit ou mass time out, je me suis dit pas besoin de mettre de timer
les net splits font mal, très mal ... si le salon est gros, tu peux avoir 50 déconnexions en l'espace d'une seconde.


if (%chanlimit != $null), devient if (%chanlimit) étant donné que c'est booléen.
n0man Messages postés 25 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 30 octobre 2007
20 oct. 2007 à 19:53
Bonsoir ArKanis

Pourquoi tu n'as pas mis de timer sur le ON QUIT ?
N' ayant jamais vus de mass quit ou mass time out, je me suis dit pas besoin de mettre de timer

u devrais utiliser un alias qui lance le timer, ça t'éviterait d'avoir 10 fois la déclaration du timer et du calcul de $nick(...)
Je vois pas pourquoi je n' y est pas pensé lol

Pour le Regex il permet de détecter si on fait soit +l ou -l, et de s' éxécuter vite, pour l' erreur je débute avec les regex des que je trouve je change

mode $comchan($nick,%a), pourquoi il n'y a pas de .op à la suite ? surtout que tu boucles dessus ...
while ($comchan($me,%a).op) l' évaluation se fait au sein meme de la boucle pas besoin de le répéter je pense ?

if ($opnick == $me) { .timer timer [ $+ [ ...
tu as testé ?
Erreur de ma part

et si je veux seulement activer ce code pour un salon et pas tous, je fais comment ? (j'ai la réponse : je prends un autre code ...)
je vois que tu est perspicace :p sinon dans l alias qui géreras les timers je rajoute une comparaison du genre
if (%chanlimit != $null) { .timer [ $+ [ $chan ] $+ [ * ] $+ [ $network ] ] 1 1 mode %chanlimit +l $calc($nick(%chanlimit,0) + 4) }
else { ...

.timer [ $+ [ $chan ] $+ [ * ] $+ [ $network ] ] 1 0
pourquoi avoir mis ce timer si tu as 1 0 ?!
Re erreur de ma part

Merci pour ta pertinence et la suggestion pour l alias :)
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
20 oct. 2007 à 18:35
Pourquoi tu n'as pas mis de timer sur le ON QUIT ?

tu devrais utiliser un alias qui lance le timer, ça t'éviterait d'avoir 10 fois la déclaration du timer et du calcul de $nick(...)

ton regex est faux : $regex($1-,^([+-][l]))
si tu mets +cl 15, il ne le détectera pas
utilise tout simplement ceci : if (l isincs $1)

mode $comchan($nick,%a), pourquoi il n'y a pas de .op à la suite ? surtout que tu boucles dessus ...

if ($opnick == $me) { .timer timer [ $+ [ ...
tu as testé ?

et si je veux seulement activer ce code pour un salon et pas tous, je fais comment ? (j'ai la réponse : je prends un autre code ...)

.timer [ $+ [ $chan ] $+ [ * ] $+ [ $network ] ] 1 0
pourquoi avoir mis ce timer si tu as 1 0 ?!
Rejoignez-nous