Mass modes

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 573 fois - Téléchargée 19 fois

Contenu du snippet

Voici mon pti mass mode que j'aime assé bien :)
cmds:
!op tag* (pour op tous les nick qui commance par le tag desiré) | !op * (pour mass op) | !op (pour ce op)
!deop tag* (...) | !deop * (...) | !deop (...)
!voice tag* (...) | !voice * (...) | !voice (...)
!devoice tag* (...) | !devoice * (...) | !devoice (...)
ou encor la même en
+o tag* | +o * | +o
-o tag* | -o * | -o
+v tag* | +v * | +v
-v tag* | -v * | -v

Source / Exemple :


on *:text:*:#:{
  if ($1 == !op || $1 == +o) {
    if ($2 == $null) { mode $chan +o $nick }
    set %n ""
    var %i = $nopnick($chan,0)
    if %i = 0 { return }
    :next
    if ($2 iswm $nopnick($chan,%i)) {
      %n = $nopnick($chan,%i) %n
      inc %t
    }
    dec %i
    if (%t == 6) {
      mode $chan +oooooo %n
      %t = 0
      unset %n
    }
    if (%i != 0) { goto next }
    else {
      mode $chan +ooooo %n
    }
  }
  if ($1 == !voice || $1 == +v) {
    if ($2 == $null) { mode $chan +v $nick }
    set %n ""
    var %i = $nvnick($chan,0)
    if %i = 0 { return }
    :next
    if ($2 iswm $nvnick($chan,%i)) {
      %n = $nvnick($chan,%i) %n
      inc %t
    }
    dec %i
    if (%t == 6) {
      mode $chan +vvvvvv %n
      %t = 0
      unset %n
    }
    if (%i != 0) { goto next }
    else {
      mode $chan +vvvvv %n
    }
  }
  if ($1 == !deop || $1 == -o) {
    if ($2 == $null) { mode $chan -o $nick }
    set %n ""
    var %i = $opnick($chan,0)
    if %i = 0 { return }
    :next
    if ($2 iswm $opnick($chan,%i) && $protect($opnick($chan,%i)) != true) && $opnick($chan,%i) != $nick && $opnick($chan,%i) != L && $opnick($chan,%i) != Q && $opnick($chan,%i) != S && $opnick($chan,%i) != $me {
      %n = $opnick($chan,%i) %n
      inc %t
    }
    dec %i
    if (%t == 6) {
      mode $chan -oooooo %n
      %t = 0
      unset %n
    }
    if (%i != 0) { goto next }
    else {
      mode $chan -ooooo %n
    }
  }
  if ($1 == !devoice || $1 == -v) {
    if ($2 == $null) { mode $chan -v $nick }
    set %n ""
    var %i = $vnick($chan,0)
    if %i = 0 { return }
    :next
    if ($2 iswm $vnick($chan,%i) && $protect($vnick($chan,%i)) != true) && $vnick($chan,%i) != $nick && $vnick($chan,%i) != L && $vnick($chan,%i) != Q && $vnick($chan,%i) != S && $vnick($chan,%i) != $me {
      %n = $vnick($chan,%i) %n
      inc %t
    }
    dec %i
    if (%t == 6) {
      mode $chan -vvvvvv %n
      %t = 0
      unset %n
    }
    if (%i != 0) { goto next }
    else {
      mode $chan -vvvvv %n

    }
  }
}

A voir également

Ajouter un commentaire

Commentaires

hisoka2501
Messages postés
266
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2009
-
même remarque que toffu:
de plus la tu met mode +ooooo même si une seule personne est a oper, tu pourrais faire un truc qui met le bon nombre

genre:
$iif($numtok($2-,32) <= $modespl,$v1,$modespl)

de plus évite les goto, préfere un while bien pensé qui sera bien plus rapide, en mirc script le goto c'est le mal
cs_tofu
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1 -
tu devrais utiliser $modespl .. et tu devrais prendre $strip($1) sinon un mec qui écrit avec de la couleur (style la première lettre en gras d'une couleur, et le reste d'une autre couleur) ça marchera pas il me semble.

d'autre part, il me semblerait judicieux de mettre $1 et $2 dans des variables locales histoire de ne pas avoir à faire plein d'évaluations..

et au niveau de la syntaxe il serait aussi judicieux d'utiliser des "else if" tout simplement parce que présentement si tu ne mets que des "if" ça va faire une évaluation séquentielle et donc même si le "if" du "!op" est déclenché il va évaluer les autres "if" pour voir si $1 n'est pas par hasard égal = "!voice" "!devoice" etc... (inutile de tester des cas qui n'arriveront pas)
cs_wims
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1 -
C'est pas tres bien codé...

Comme l'a dis Panthouffle :
if ($2 == $null) se simplifie souvent par if (!$2) et
if ($2 != $null) se simplifie souvent par if ($2)
a condition que $2 sois différent de 0 et de $false

Ton code ne gère pas le $modespl qui retourne le nombre maximum de mode qui peux etre mis en meme temps par le server.

Oublie les goto et utilise les boucles while
On est pas tous sur quakenet donc S Q et tout la clique, ca saute :).Au pire fait une liste de pseudo a exclure

il manque les !halfop +h -h et !dehalfop

Et avant de posté, si t'avais fais un tour sur les sources du meme genre, tu aurais lu excatement les meme commentaires, et tu aurais ( j'espere ? ) corriger ca avant.

L'idée du $protect est pas con :)
Panthouffle
Messages postés
281
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
14 avril 2008
-
salut, j'ai pas trop le temps de regarder le code ce matin mais voici s'que j'ai vu à première vue :

if ($2 == $null) -> if (!$2)

pour oper plus que 6 personne tu peux vérifier combien de personnes il y a dans ta var %n et ensuite donner le bon nombre de o (dans +o) -> $+(+, $str(o, $numtok(%n,32))) même chose pour le voice etc
comme ca ca t'éviteras les boucle goto

Bonne chance

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.