Commandes fantaisies ( op deop , voice devoice ) originales

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 933 fois - Téléchargée 16 fois

Contenu du snippet

J'ai vu plusieurs sources de commandes fantaisies , du type !op , !deop .
Trouvant ce système simplet , j'ai voulu améliorer sa :

- Commandes originales ( +o -o , +h -h , +v -v , +q -q , +a -a ).
- Possibilité d'utiliser la commande sur plusieurs pseudos ( +v Nick1 Nick2 Nick3 ).

Source / Exemple :


;############### COMMANDES FANTAISIES ####################

  elseif ($1 == +v) {
    if ($2) {
      var %i = 1
      while (%i <= $numtok($2-,32)) {
        .msg chanserv voice # $gettok($2-,%i,32)
        inc %i
      }
    }
    else .msg chanserv voice #
  }

  elseif ($1 == -v) {
    if ($2) {
      var %i = 1
      while (%i <= $numtok($2-,32)) {
        .msg chanserv devoice # $gettok($2-,%i,32)
        inc %i
      }
    }
    else .msg chanserv devoice #
  }

  elseif ($1 == +h) {
    if ($2) {
      var %i = 1
      while (%i <= $numtok($2-,32)) {
        .msg chanserv halfop # $gettok($2-,%i,32)
        inc %i
      }
    }
    else .msg chanserv halfop #
  }

  elseif ($1 == -h) {
    if ($2) {
      var %i = 1
      while (%i <= $numtok($2-,32)) {
        .msg chanserv dehalfop # $gettok($2-,%i,32)
        inc %i
      }
    }
    else .msg chanserv dehalfop #
  }

  elseif ($1 == -o) {
    if ($2) {
      var %i = 1
      while (%i <= $numtok($2-,32)) {
        .msg chanserv deop # $gettok($2-,%i,32)
        inc %i
      }
    }
    else .msg chanserv deop #
  }

  elseif ($1 == +o) {
    if ($2) {
      var %i = 1
      while (%i <= $numtok($2-,32)) {
        .msg chanserv op # $gettok($2-,%i,32)
        inc %i
      }
    }
    else .msg chanserv op #
  }

  elseif ($1 == +q) {
    if ($2) {
      var %i = 1
      while (%i <= $numtok($2-,32)) {
        .msg chanserv owner # $gettok($2-,%i,32)
        inc %i
      }
    }
    else .msg chanserv owner #
  }

  elseif ($1 == -q) {
    if ($2) {
      var %i = 1
      while (%i <= $numtok($2-,32)) {
        .msg chanserv deowner # $gettok($2-,%i,32)
        inc %i
      }
    }
    else .msg chanserv deowner #
  }

  elseif ($1 == +a) {
    if ($2) {
      var %i = 1
      while (%i <= $numtok($2-,32)) {
        .msg chanserv protect # $gettok($2-,%i,32)
        inc %i
      }
    }
    else .msg chanserv protect #
  }

  elseif ($1 == -a) {
    if ($2) {
      var %i = 1
      while (%i <= $numtok($2-,32)) {
        .msg chanserv deprotect # $gettok($2-,%i,32)
        inc %i
      }
    }
    else .msg chanserv deprotect #
  }

Conclusion :


Postez des commentaires afin d'améliorer la source !
Ajouter un commentaire

Commentaires

il va super bien, je l'ai modif à ma sauce avec des plus mais c'est nickel .. je conseilles toutefois de le mettre sur une machine à part
LeGnoMe666
Messages postés
43
Date d'inscription
dimanche 15 avril 2007
Statut
Membre
Dernière intervention
24 août 2009
-
Bonjour uaip,

Merci pour ces précisions.
Objectif atteind : Je m'endormirais moins "con" ce soir.

Bonne journée.
uaip
Messages postés
1470
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
-
Le coté "affreux", c'était simplement de faire tenir le code sur une ligne. Après pour les $regml() et $mid(), question de simplicité. $regml() est un identifieur qui retourne une valeur directe, tandis que $mid() va appeler d'autres commandes (internes) pour récupérer ce que tu veux (ici le 2ème char).
Pour les variables... certes comme tu le présentes, ça serait inutile, mais j'engloberais tout dans uns if plus général, parce-que if ($istok(-;+,$left($$1,1),59) && $istok(q;a;o;h;v,$mid($$1,2,1),59)) aussi est lourd comme condition, dans un input.

Et pour le gain de temps, euh... "quelques millièmes de secondes au mieux", ça se joue plutôt sur des centièmes voire des dixièmes de seconde, et en programmation, c'est énorme. N'oublie pas que le mIRC est interprété. L'interprétation d'une "%var" va se traduire par la correspondance mot-clé / valeur. En gros, l'interpréteur remplace "%var" par sa valeur (attention, var locale uniquement). Tandis que les identifieurs comme $mid() demandent d'autres calculs derrière. Et ne crois pas qu'aucune variable ne va être allouée pour ces calculs.
Bon, oui, là je rentre dans les détails, ce qui peut sembler ridicule pour un code aussi petit. Mais selon ce que tu entendais par "optimisation" dans ton post, une $regex() est certes beaucoup plus efficace que le code d'Orona, mais aussi beaucoup plus gourmande en ressources qu'une simple série de if/elseif.
LeGnoMe666
Messages postés
43
Date d'inscription
dimanche 15 avril 2007
Statut
Membre
Dernière intervention
24 août 2009
-
bonjour uaip,


En effet, dans l'absolu, je te rejoins concernant l'utilisation des variables, sauf que, dans ce cas précis, je ne suis pas convaincu qu'elles soient (pour celles évoquées) d'une grande nécéssité, ni même judicieuses (peut être me trompes je) et ce, pour les raisons suivantes:
- Sur une telle commande, cela revient à allouer deux variables à chaque input pour qu'elles ne servent qu'une fois sur 10 000 (si tout va bien, on ne voice pas, ni manipule les levels toutes les 5 minutes en général).
- Ce n'ai pas un probleme en soit certes les variables allouées. Si je fais 100 commandes dans le même principe, nous arrivons à 200 variables allouées systématiquement a chaque input. Or, ces variables servent ici a quoi? Un gain de temps? (encore faut il parler du gain de temps... quelques millièmes de secondes au mieu) dans l'execution eventuelle (ici, une fois toutes les 5 heures au mieux) du code à suivre.
- Ajouter au fait, que le code executé, est relativement basique et court dans son temps d'execution, il s'agit ici d'une commande "+o" renvoit "mode #salon +o machin",.

Tout ceci fait que, je n'ai pas senti vraiment plus judiscieux l'utilisation que tu prescris. Peut etre je fais erreur et auras tu des infos à m'apporter à ce sujet.

Sinon, concernant le $regml, en effet, je n'utilises peut etre pas assez souvent et cela rejoint l'idée dans mon précedent post, où je sous-entendais qu'il n'existait pas "la" solution, mais bien plusieurs. Ici dans ce cas, je pense qu'il ne s'agit purement que de question de gout ; Mais dans tous les cas, je ne vois pas en quoi, cela rend t'il "affreux" un code pour autant?

Bonne journée.
uaip
Messages postés
1470
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
-
Je commencerai par dire que le mIRC, j'en fais plus (ça sera mon excuse pour les boulettes que je vais dire).

je parlais de répétition, parce-que par exemple dans ce code :
if ($istok(-;+,$left($$1,1),59) && $istok(q;a;o;h;v,$mid($$1,2,1),59)) { var %mode = $+($left($$1,1),$str($mid($$1,2,1),$iif(!$2,1,$numtok($2-,32)))) | mode $chan %mode $iif(!$2, $me, $2-) | halt }

Tu utilises 2 fois $left($$1,1) et 2 fois $mid($$1,2,1). Et tu ne me contrediras pas si je dis que :
var %a = 0 | while (%a < $calc(45*5/(7*3+2)+4/8+ $sqrt(4*3/8))) { echo -a $calc(45*5/(7*3+2)+4/8+ $sqrt(4*3/8)) | inc %a }
est beaucoup plus lent que :var %a 0, %b $calc(45*5/(7*3+2)+4/8+ $sqrt(4*3/8)) | while (%a < %b) { echo -a %b | inc %a }
d'ou l'intérêt de mettre en variable les résultats des fonctions appelées plusieurs fois

Aprs, pour les regex, je disais simplement que tu testes /^[+-][qaohv]$/ dans $1. Alors pourquoi redécortiquer encore ce $1 avec $left($1,1) et $mid($1,2,1) ? $regml() est là pour ça, en mettant les tokens à récupérer entre parenthèses :
//var %a = $regex($$1,/^([+-])([qaohv])$/) | echo -a $regml(1) $regml(2)

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.

Du même auteur (Orona)