Accueil > > > SYSTÈME DE COMMANDE EN MASSE AVEC DÉLAI
SYSTÈME DE COMMANDE EN MASSE AVEC DÉLAI
Information sur la source
Description
__________________________________ Mass.Commands.S ystem version 1.1.1 10.06.2007 par TropNul ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ _______ ____ Description ¯¯¯¯¯¯¯¯¯¯¯ Ce système de commande en masse va vous permettre de faire, au choix: un mass OP(+o), un mass DEOP(-o) un mass VOICE(+v), un mass DEVOICE(-v) un mass HALFOP(+h), un mass DEHALFOP(-h) un mass EXCEPTION(e), un mass INVITATION (I) un mass OWNER(+q), un mass DEOWNER(-q) un mass ADMIN(+a), un mass DEADMIN(-a) un mass KICK(k), un mass KICKBAN(kb) un mass BAN(b) _____________________ Syntaxe d'Utilisation ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ /MassComSys.Ma in <paramètre1> <paramètre2> [paramètre3] [paramètre4] [paramètre5] /MassComSys.Main [+|-]<aeIqovhkb|kb> <délai{100-1500}|d> [#nomdusalon] [type] [raison] Pour le délai, il faut préciser soit un nombre dans l'intervalle 100-1500 ou la lettre d ______________________ Type de ban par défaut ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ 2 (*!*@hôte.domaine) ___________________________ Typ e d'Exception par défaut ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ 2 (*!*@hôte.domaine) _______________________________ ________ Type de masque pour l'Invite par défaut ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ 2 (*!*@hôte.domaine) _________________________ Raiso n de kick par défaut ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Pas de raison ___________________________________ Délai en chaque commande par défaut ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ 0.5 sec (500 ms) _______________________ Toutes les possibilités ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ /MassComSys.M ain +v 500|d #salon /MassComSys.Main +v 500|d /MassComSys.Main -v 500|d #salon /MassComSys.Main -v 500|d /MassComSys.Main +o 500|d #salon /MassComSys.Main +o 500|d /MassComSys.Main -o 500|d #salon /MassComSys.Main -o 500|d /MassComSys.Main +h 500|d #salon /MassComSys.Main +h 500|d /MassComSys.Main -h 500|d #salon /MassComSys.Main -h 500|d /MassComSys.Main k 500|d #salon parce que /MassComSys.Main k 500|d parce que ! /MassComSys.Main b 500|d #salon 2 /MassComSys.Main b 500|d #salon /MassComSys.Main b 500|d 3 /MassComSys.Main b 500|d /MassComSys.Main kb 500|d #salon 5 parce que ! /MassComSys.Main kb 500|d #salon parce que ! /MassComSys.Main kb 500|d 2 parce que ! /MassComSys.Main kb 500|d parce que ! ________________________________________________ ___________________ Et pour les serveurs qui le permettent, s'ajoutent les possibilités ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ /MassComSys.Main +q 500|d #salon /MassComSys.Main +q 500|d /MassComSys.Main -q 500|d #salon /MassComSys.Main -q 500|d /MassComSys.Main +a 500|d #salon /MassComSys.Main +a 500|d /MassComSys.Main -a 500|d #salon /MassComSys.Main -a 500|d /MassComSys.Main e 500|d #salon 2 /MassComSys.Main e 500|d #salon /MassComSys.Main e 500|d 3 /MassComSys.Main e 500|d /MassComSys.Main I 500|d #salon 2 /MassComSys.Main I 500|d #salon /MassComSys.Main I 500|d 3 /MassComSys.Main I 500|d ___________ Généralités ¯¯¯¯¯¯¯¯¯¯¯ 1. Toutes les commandes sont MANUELLES pour des raisons de sécurité. 2. Pour le délai, il faut préciser soit un nombre dans l'intervalle 100-1500 ou la lettre d
Source
- ; ----------------------------------------------
- ; Mass.Commands.System-v1.1.1@10.06.2007@TropNul
- ; ----------------------------------------------
-
- ; Gestion & Afichage des erreurs
- Alias MassComSys.Error {
- If ($1 == nochan) && $2 {
- Echo -atei9 Pas sur le salon ou format du nom de salon incorrect $+($chr(3),06,$2,$chr(3)) !
- }
- ElseIf ($1 == notop) && $2 {
- Echo -atei9 Vous n'êtes pas opérateur sur le salon désiré $+($chr(3),06,$2,$chr(3)) !
- }
- ElseIf ($1 == nopar) && $2 {
- Echo -atei9 Le paramètre $+($chr(3),06,$2,$chr(3)) est incorrect ! Utilisez /MassComSys.Main [+|-]<aeIqovhkb|kb> <délai{100-1500}|d> [#nomdusalon] [type] [raison]
- }
- ElseIf ($1 == nodlay) && $2 {
- Echo -atei9 Le délai précisé en second paramètre est incorrect $+($chr(3),06,$2,$chr(3)) !
- }
- Halt
- }
-
- Alias MassComSys.Main {
- ; Initialisation ...
- Var %i = 1 , %a = $null , %b = $null , %r = $null , %t = $null , %k = $modespl
- Var %u = $null , %z = $null , %l = $null , %f = $null
- ; Création(si non existante) de la table où sera mise en attente les commandes de masse
- If !$hget(MassCommS) { Var %z = 1 | MassCommSys.Load }
- Else { Var %z = $calc($hfind(MassCommS,/^(\d+)/i,0,r) +1) }
- ; %x est le temps en millliseconde du délai observé entre chaque commande mise en attente
- If ($2 isnum 100-1500) { Var %x = $2 }
- ElseIf ($2 == d) { Var %x = $hget(MassCommS,delay) }
- Else { MassComSys.Error nodlay $2 }
- If $3 {
- ; Si le troisième paramètre est un nom de salon où vous êtes, il est pris comme le salonCible
- If ($3 ischan) { Var %c = $ifmatch }
- ; Si le troisième paramètre est un nombre, allouer localement comme étant le type de ban voulu à appliquer ultérieurement
- ; Dans cette même condition, allouer à %r la raison de kick, si l'appel est un masskick
- ElseIf ($3 !ischan) && ($3 isnum) {
- Var %t = $3 | If $4- { Var %r = $+(:,$4-) }
- }
- ; Sinon, produire une erreur
- Else { MassComSys.Error nochan $3 }
- }
- ; Si le troisième paramètre n'existe pas
- ElseIf !$3 {
- If ($active ischan) { Var %c = $ifmatch }
- Else { MassComSys.Error nochan null }
- }
- ; %j contient le nombre de pseudo sur le salonCible
- Var %j = $nick(%c,0)
- ; Si vous n'êtes ni opérateur ni ircop, produire une erreur !
- If ($me !isop %c) && (o !isin $usermode) { MassComSys.Error notop %c }
- ; Si le quatrième paramètre est un nombre, allouer localement comme étant le type de ban voulu à appliquer ultérieurement
- ; Dans cette même condition, allouer à %r la raison de kick, si l'appel est un masskick
- If ($4 isnum) { Var %t = $4 | If $5- { Var %r = $+(:,$5-) } }
- ElseIf $4- { Var %r = $+(:,$4-) }
- ; Vérification que le mode demandé soit connu.
- If $regex($1,/^([+-][aohqv]|[eIkb](?(?<=k)b?))$/i) {
- ; Sauvegarde du mode dans %l
- ; %f contient la condition qui sera vérifiée avant d'appliquer les modes
- Var %l = $1 , %f = $replace(%l,+o,!isop,+h,!ishop,+v,!isvoice,-v,isvoice)
- }
- ; Autrement, produire une erreur !
- Else { MassComSys.Error nopar 1 }
- ; Si le commande voulue est un ban en masse et que le type n'est toujours pas connu à ce niveau, allouer comme défaut == 2
- If (b isin %l) && !%t { Var %t = 2 }
- ; Maintenant, création des listes de pseudos/d'adresses qui seront mises en attente avec les modes voulus !
- While (%i <= %j) {
- Var %Nck = $nick(%c,%i)
- Var %Add = $address(%Nck,2)
- If !$MassCommSys.Find(%Nck).nick && !$MassCommSys.Find($gettok(%Add,2,64)).addr {
- If $regex(%l,/^([eIkb](?(?<=k)b?))$/i) {
- If (%Nck != $me) && (%Add != $address($me,2)) && (%Nck !isop %c) && (%Nck !ishop %c) {
- If (%l == k) { Var %a = %Nck $+ $chr(44) $+ $iif(%a,%a) }
- ElseIf $regex(%l,/^[eIb]$/i) { Var %a = $address(%Nck,%t) $+ $chr(32) $+ $iif(%a,%a) }
- ElseIf (%l == kb) {
- Var %u = $address(%Nck,%t) $+ $chr(32) $+ $iif(%u,%u)
- Var %a = %Nck $+ $chr(44) $+ $iif(%a,%a) $+ $iif(%u,$chr(59) $+ %u)
- }
- }
- }
- ElseIf $regex(%l,/^(-[aohq])/i) {
- If (%Nck != $me) && ($address(%Nck,2) != $address($me,2)) {
- Var %a = %Nck $+ $chr(32) $+ $iif(%a,%a)
- }
- }
- Else {
- If (%Nck $iif(%f,%f,isreg) %c) { Var %a = %Nck $+ $chr(32) $+ $iif(%a,%a) }
- }
- ; La condition suivante vérifie en fonction de $modespl (%k) qu'un multiple de %k est atteint
- ; et que %a contient au moins un item !
- If !$calc(%i % %k) && %a {
- Var %Itm = $+(%z,$chr(59),%c,$chr(59),%l,$iif(%r,$chr(59) $+ %r))
- Var %Dat = %a
- Inc %z
- HAdd MassCommS %Itm %Dat
- Var %a = $nick(%b,%i) , %u = $address($nick(%b,%i),%t)
- }
- }
- Inc %i
- }
- ; S'il reste toujours des items dans %a après la boucle, les gérer ici !
- If %a {
- Var %Itm = $+(%z,$chr(59),%c,$chr(59),%l,$iif(%r,$chr(59) $+ %r))
- Var %Dat = %a , %a = $null , %u = $null
- Inc %z
- HAdd MassCommS %Itm %Dat
- HAdd MassCommS MAX %z
- }
- ; Génération du compteur de queue si non existant et appel de " MassCommSys.Proc "
- If !$timer(MassComm) { .TimerMassComm -m 0 %x MassCommSys.Proc }
- }
-
- Alias MassCommSys.Proc {
- Var %e = 2 , %f = $hget(MassCommS,MAX)
- ; Cette fonction va chercher tant que la table contiendra plus de 2 items, le premier item !!
- ; Précisément, l'item nommé 1*
- If $hfind(MassCommS,1 $+ *,1,w) {
- Var %It = $ifmatch , %Da = $hget(MassCommS,%It)
- ; %Mo contient le mode à applique, %Ch le salonCible
- Var %Mo = $gettok(%It,3,59) , %Ch = $gettok(%It,2,59)
- ; Revérifier si l'on est opérateur ou ircop :p
- If ($me isop %Ch) || (o isin $usermode) {
- ; Faire chaque commande en attente ici !
- If (%Mo == k) {
- Var %Re = $iif($gettok(%It,4-,59),$ifmatch,:Pas de raison)
- RAW -q KICK %Ch %Da %Re
- }
- ElseIf (%Mo == kb) {
- Var %Re = $iif($gettok(%It,4-,59),$ifmatch,:Pas de raison)
- Var %Nk = $gettok(%Da,1,59) , %Ad = $gettok(%Da,2-,59) , %MoB = $+(+,$str(b,$numtok(%Ad,32)))
- RAW -q KICK %Ch %Nk %Re
- RAW -q MODE %Ch %MoB %Ad
- }
- ElseIf $regex(%Mo,/^([eIb])$/i) {
- Var %MoB = $+(+,$str($iif($regml(1) == i,$upper($ifmatch),$ifmatch),$numtok(%Da,32))) | RAW -q MODE %Ch %MoB %Da
- }
- ElseIf $regex(%Mo,/^(([+-])([aqohv]))$/i) {
- Var %NMo = $+($regml(2),$str($regml(3),$numtok(%Da,32)))
- RAW -q MODE %Ch %NMo %Da
- }
- }
- ; Décrémentation du nombre total de commandes en attente
- ; Effacement de la commande venant d'être effectuée !
- HAdd MassCommS MAX $calc(%f -1) | HDel MassCommS %It
- ; Et finalement, boucler dans la table afin de décaler toutes les commandes restantes
- While $hfind(MassCommS,%e $+ *,1,w) {
- Var %It = $ifmatch , %Da = $hget(MassCommS,%It)
- Var %NIt = $calc($gettok(%It,1,59) -1) $+ $chr(59) $+ $gettok(%It,2-,59)
- HAdd MassCommS %NIt %Da
- HDel MassCommS %It
- Inc %e
- }
- }
- ; Si l'item 1* n'est pas trouvé, alors tout arrêter :o)
- ; Cela signifie que toutes les commandes en attente ont été faites !
- Else { .TimerMassComm off }
- }
-
- dialog MComSys {
- title "Mass Command System"
- size -1 -1 148 124
- option dbu
- text "Délai (en ms) entre chaque commande", 1, 27 11 50 14
- combo 2, 82 12 33 79, size vsbar drop
- text "Pseudonymes exceptés", 3, 6 30 61 8
- text "Adresses exceptées", 4, 75 30 53 8
- box "", 5, 2 1 144 121
- list 6, 7 41 55 50, size vsbar
- list 7, 66 41 75 50, size vsbar
- edit "", 8, 7 93 55 10, autohs
- edit "", 9, 66 93 75 10, autohs
- button "Ajouter", 10, 8 106 25 12, flat
- button "Enlever", 11, 37 106 25 12, flat
- button "Ajouter", 12, 76 106 25 12, flat
- button "Enlever", 13, 105 106 25 12, flat
- }
-
- On *:Dialog:MComSys:*:*:{
- If ($devent == init) {
- ; Initialisé et mettre en Hash table si inexistante
- MassCommSys.Load
- ; Remplir le combo du 'délai'
- DidTok $dname 2 59 100;200;300;400;500;600;700;800;900;1000;1100;1200;1300;1400;1500
- ; Sélectionner le 'délai' déjà dans la base
- Var %d = $calc($hget(MassCommS,delay) / 100)
- Did -c $dname 2 %d
- ; Remplir les list des pseudonymes et adresses en exception.
- MassCommSys.Excpt 6 nick
- MassCommSys.Excpt 7 addr
- }
- ElseIf ($devent == sclick) {
- ; Bouton pour mettre un pseudonyme en exception
- If ($did == 10) {
- If $did(8) { MassCommSys.Add $dname 8 nick $ifmatch }
- Else { MassCommSys.Warn 2 | Did -f $dname 8 }
- }
- ; Bouton pour enlever un pseudonyme
- ElseIf ($did == 11) {
- If $did(6).seltext { MassCommSys.Del nick $ifmatch }
- Else { MassCommSys.Warn 3 | Did -f $dname 6 }
- }
- ; Bouton pour mettre une adresse en exception
- ElseIf ($did == 12) {
- If $did(9) { MassCommSys.Add $dname 9 addr $ifmatch }
- Else { MassCommSys.Warn 5 | Did -f $dname 9 }
- }
- ; Bouton pour enlever une addresse
- ElseIf ($did == 13) {
- If $did(7).seltext { MassCommSys.Del addr $ifmatch }
- Else { MassCommSys.Warn 6 | Did -f $dname 7 }
- }
- ; Lorqu'il y'a une sélection dans le combo du 'délai'
- ElseIf ($did == 2) { HAdd MassCommS delay $did(2).seltext }
- }
- ; A la fermeture du dialog, sauvegarder les données !
- ElseIf ($devent == close) { MassCommSys.Save }
- }
-
- menu menubar,channel {
- Mass Command System
- .Configuration:Dialog -m MComSys MComSys
- -
- }
-
- On *:Start:{
- If $hget(MassCommS) {
- MassCommSys.Save | HFree MassCommS
- }
- MassCommSys.Load
- }
- On *:DisConnect:MassCommSys.Save
- On *:Exit:MassCommSys.Save
- On *:Load:{
- If !$isdir(MComSys) { MkDir MComSys }
- If $exists($MassCommSys.Dir) { Write -c $MassCommSys.Dir }
- Write $MassCommSys.Dir
- Write $MassCommSys.Dir delay
- Write $MassCommSys.Dir 500
- Write $MassCommSys.Dir nick.except.1
- Write $MassCommSys.Dir IriX
- Write $MassCommSys.Dir addr.except.1
- Write $MassCommSys.Dir 3753371872.Net|2758010278.tv
- MassCommSys.Load
- }
- On *:UnLoad:{ Remove -b $MassCommSys.Dir | RmDir MComSys }
-
- Alias -l MassCommSys.Dir { Return MComSys\data.txt }
- Alias -l MassCommSys.Save { If $hget(MassCommS) { HSave MassCommS $MassCommSys.Dir } }
- Alias -l MassCommSys.Load {
- If !$hget(MassCommS) {
- HMake MassCommS 100 | HLoad MassCommS $MassCommSys.Dir
- }
- }
-
- ; Fonction pour remplir les 'list' des éléments en exception
- Alias -l MassCommSys.Excpt {
- Var %i = 1 , %id = $1
- Did -r $dname %id
- While $hfind(MassCommS,$+($2,.except.,%i),1,n) {
- Var %dat = $hget(MassCommS,$ifmatch)
- DidTok $dname %id 124 %dat
- Inc %i
- }
- }
-
- ; Fontion pour avertir l'utilisateur lors d'un erreur dans le dialog
- Alias -l MassCommSys.Warn {
- If ($1 == 1) { NoOp $input(Le pseudonyme $+(",$2,") est déjà $crlf dans la base d'exception,ow,Elément existant) }
- ElseIf ($1 == 2) { NoOp $input(Aucun pseudonyme entré,ow,Champs vide) }
- ElseIf ($1 == 3) { NoOp $input(Aucun pseudonyme selectionné,ow,Pas de selection) }
- ElseIf ($1 == 4) { NoOp $input(L'adresse $+(",$2,") est déjà $crlf dans la base d'exception,ow,Elément existant) }
- ElseIf ($1 == 5) { NoOp $input(Aucune adresse entrée,ow,Champs vide) }
- ElseIf ($1 == 6) { NoOp $input(Aucune adresse selectionnée,ow,Pas de selection) }
- }
-
- ; Fonction pour chercher si un pseudonyme ou une adresse est un exception
- Alias -l MassCommSys.Find {
- Var %a = $1 , %Typ = $prop , %i = 1
- While $hfind(MassCommS,$+(%Typ,.except.,%i),1,n) {
- Var %Dat = $hget(MassCommS,$ifmatch)
- If $istok(%Dat,%a,124) { Return 1 }
- Inc %i
- }
- Return 0
- }
-
- ; Fonction pour rajouter un pseudonyme ou une adresse dans la base d'exception
- ; MassCommSys.Add $dname 8 nick $ifmatch
- Alias -l MassCommSys.Add {
- Var %i = 1 , %Dat , %Itm , %Entry = $4 , %Typ = $3 , %ReloadId = $iif(%Typ == nick,6,7)
- While $hfind(MassCommS,$+(%Typ,.except.,%i),1,n) {
- Var %Itm = $ifmatch
- Var %Dat = $hget(MassCommS,%Itm)
- If $findtok(%Dat,%Entry,1,124) {
- MassCommSys.Warn 1 %Entry
- Did -f $1 $2 | Halt
- }
- Inc %i
- }
- Did -r $1 $2
- If ($numtok(%Dat,124) >= 20) {
- Var %Itm = $+(%Typ,.except.,%i) , %Dat = %Entry
- HAdd MassCommS %Itm %Dat
- MassCommSys.Excpt %ReloadId %Typ
- }
- Else {
- %Dat = %Dat $+ $chr(124) $+ %Entry
- HAdd MassCommS %Itm %Dat
- MassCommSys.Excpt %ReloadId %Typ
- }
- }
-
- ; Fonction pour enlever un pseudonyme ou une adresse de la base d'exception.
- ; MassCommSys.Del nick $ifmatch
- Alias -l MassCommSys.Del {
- Var %Rem = $2 , %Typ = $1 , %ReloadId = $iif(%Typ == nick,6,7)
- Var %i = 1 , %Dat , %Itm
- While $hfind(MassCommS,$+(%Typ,.except.,%i),1,n) {
- Var %Itm = $ifmatch
- Var %Dat = $hget(MassCommS,%Itm)
- If $findtok(%Dat,%Rem,1,124) {
- Var %Fnd = $ifmatch
- If ($numtok(%Dat,124) == 1) {
- HDel MassCommS %Itm
- Var %w = $calc(%i +1)
- While $hfind(MassCommS,$+(%Typ,.except.,%w),1,n) {
- Var %It = $ifmatch , %Da = $hget(MassCommS,%It)
- Var %NIt = $+(%Typ,.except.,$calc(%w -1))
- HAdd MassCommS %NIt %Da | HDel MassCommS %It
- Inc %w
- }
- }
- Else {
- %Dat = $deltok(%Dat,%Fnd,124)
- HAdd MassCommS %Itm %Dat
- }
- MassCommSys.Excpt %ReloadId %Typ
- Halt
- }
- Inc %i
- }
- }
-
- ; -----
- ; Eof()
- ; -----
; ----------------------------------------------
; Mass.Commands.System-v1.1.1@10.06.2007@TropNul
; ----------------------------------------------
; Gestion & Afichage des erreurs
Alias MassComSys.Error {
If ($1 == nochan) && $2 {
Echo -atei9 Pas sur le salon ou format du nom de salon incorrect $+($chr(3),06,$2,$chr(3)) !
}
ElseIf ($1 == notop) && $2 {
Echo -atei9 Vous n'êtes pas opérateur sur le salon désiré $+($chr(3),06,$2,$chr(3)) !
}
ElseIf ($1 == nopar) && $2 {
Echo -atei9 Le paramètre $+($chr(3),06,$2,$chr(3)) est incorrect ! Utilisez /MassComSys.Main [+|-]<aeIqovhkb|kb> <délai{100-1500}|d> [#nomdusalon] [type] [raison]
}
ElseIf ($1 == nodlay) && $2 {
Echo -atei9 Le délai précisé en second paramètre est incorrect $+($chr(3),06,$2,$chr(3)) !
}
Halt
}
Alias MassComSys.Main {
; Initialisation ...
Var %i = 1 , %a = $null , %b = $null , %r = $null , %t = $null , %k = $modespl
Var %u = $null , %z = $null , %l = $null , %f = $null
; Création(si non existante) de la table où sera mise en attente les commandes de masse
If !$hget(MassCommS) { Var %z = 1 | MassCommSys.Load }
Else { Var %z = $calc($hfind(MassCommS,/^(\d+)/i,0,r) +1) }
; %x est le temps en millliseconde du délai observé entre chaque commande mise en attente
If ($2 isnum 100-1500) { Var %x = $2 }
ElseIf ($2 == d) { Var %x = $hget(MassCommS,delay) }
Else { MassComSys.Error nodlay $2 }
If $3 {
; Si le troisième paramètre est un nom de salon où vous êtes, il est pris comme le salonCible
If ($3 ischan) { Var %c = $ifmatch }
; Si le troisième paramètre est un nombre, allouer localement comme étant le type de ban voulu à appliquer ultérieurement
; Dans cette même condition, allouer à %r la raison de kick, si l'appel est un masskick
ElseIf ($3 !ischan) && ($3 isnum) {
Var %t = $3 | If $4- { Var %r = $+(:,$4-) }
}
; Sinon, produire une erreur
Else { MassComSys.Error nochan $3 }
}
; Si le troisième paramètre n'existe pas
ElseIf !$3 {
If ($active ischan) { Var %c = $ifmatch }
Else { MassComSys.Error nochan null }
}
; %j contient le nombre de pseudo sur le salonCible
Var %j = $nick(%c,0)
; Si vous n'êtes ni opérateur ni ircop, produire une erreur !
If ($me !isop %c) && (o !isin $usermode) { MassComSys.Error notop %c }
; Si le quatrième paramètre est un nombre, allouer localement comme étant le type de ban voulu à appliquer ultérieurement
; Dans cette même condition, allouer à %r la raison de kick, si l'appel est un masskick
If ($4 isnum) { Var %t = $4 | If $5- { Var %r = $+(:,$5-) } }
ElseIf $4- { Var %r = $+(:,$4-) }
; Vérification que le mode demandé soit connu.
If $regex($1,/^([+-][aohqv]|[eIkb](?(?<=k)b?))$/i) {
; Sauvegarde du mode dans %l
; %f contient la condition qui sera vérifiée avant d'appliquer les modes
Var %l = $1 , %f = $replace(%l,+o,!isop,+h,!ishop,+v,!isvoice,-v,isvoice)
}
; Autrement, produire une erreur !
Else { MassComSys.Error nopar 1 }
; Si le commande voulue est un ban en masse et que le type n'est toujours pas connu à ce niveau, allouer comme défaut == 2
If (b isin %l) && !%t { Var %t = 2 }
; Maintenant, création des listes de pseudos/d'adresses qui seront mises en attente avec les modes voulus !
While (%i <= %j) {
Var %Nck = $nick(%c,%i)
Var %Add = $address(%Nck,2)
If !$MassCommSys.Find(%Nck).nick && !$MassCommSys.Find($gettok(%Add,2,64)).addr {
If $regex(%l,/^([eIkb](?(?<=k)b?))$/i) {
If (%Nck != $me) && (%Add != $address($me,2)) && (%Nck !isop %c) && (%Nck !ishop %c) {
If (%l == k) { Var %a = %Nck $+ $chr(44) $+ $iif(%a,%a) }
ElseIf $regex(%l,/^[eIb]$/i) { Var %a = $address(%Nck,%t) $+ $chr(32) $+ $iif(%a,%a) }
ElseIf (%l == kb) {
Var %u = $address(%Nck,%t) $+ $chr(32) $+ $iif(%u,%u)
Var %a = %Nck $+ $chr(44) $+ $iif(%a,%a) $+ $iif(%u,$chr(59) $+ %u)
}
}
}
ElseIf $regex(%l,/^(-[aohq])/i) {
If (%Nck != $me) && ($address(%Nck,2) != $address($me,2)) {
Var %a = %Nck $+ $chr(32) $+ $iif(%a,%a)
}
}
Else {
If (%Nck $iif(%f,%f,isreg) %c) { Var %a = %Nck $+ $chr(32) $+ $iif(%a,%a) }
}
; La condition suivante vérifie en fonction de $modespl (%k) qu'un multiple de %k est atteint
; et que %a contient au moins un item !
If !$calc(%i % %k) && %a {
Var %Itm = $+(%z,$chr(59),%c,$chr(59),%l,$iif(%r,$chr(59) $+ %r))
Var %Dat = %a
Inc %z
HAdd MassCommS %Itm %Dat
Var %a = $nick(%b,%i) , %u = $address($nick(%b,%i),%t)
}
}
Inc %i
}
; S'il reste toujours des items dans %a après la boucle, les gérer ici !
If %a {
Var %Itm = $+(%z,$chr(59),%c,$chr(59),%l,$iif(%r,$chr(59) $+ %r))
Var %Dat = %a , %a = $null , %u = $null
Inc %z
HAdd MassCommS %Itm %Dat
HAdd MassCommS MAX %z
}
; Génération du compteur de queue si non existant et appel de " MassCommSys.Proc "
If !$timer(MassComm) { .TimerMassComm -m 0 %x MassCommSys.Proc }
}
Alias MassCommSys.Proc {
Var %e = 2 , %f = $hget(MassCommS,MAX)
; Cette fonction va chercher tant que la table contiendra plus de 2 items, le premier item !!
; Précisément, l'item nommé 1*
If $hfind(MassCommS,1 $+ *,1,w) {
Var %It = $ifmatch , %Da = $hget(MassCommS,%It)
; %Mo contient le mode à applique, %Ch le salonCible
Var %Mo = $gettok(%It,3,59) , %Ch = $gettok(%It,2,59)
; Revérifier si l'on est opérateur ou ircop :p
If ($me isop %Ch) || (o isin $usermode) {
; Faire chaque commande en attente ici !
If (%Mo == k) {
Var %Re = $iif($gettok(%It,4-,59),$ifmatch,:Pas de raison)
RAW -q KICK %Ch %Da %Re
}
ElseIf (%Mo == kb) {
Var %Re = $iif($gettok(%It,4-,59),$ifmatch,:Pas de raison)
Var %Nk = $gettok(%Da,1,59) , %Ad = $gettok(%Da,2-,59) , %MoB = $+(+,$str(b,$numtok(%Ad,32)))
RAW -q KICK %Ch %Nk %Re
RAW -q MODE %Ch %MoB %Ad
}
ElseIf $regex(%Mo,/^([eIb])$/i) {
Var %MoB = $+(+,$str($iif($regml(1) == i,$upper($ifmatch),$ifmatch),$numtok(%Da,32))) | RAW -q MODE %Ch %MoB %Da
}
ElseIf $regex(%Mo,/^(([+-])([aqohv]))$/i) {
Var %NMo = $+($regml(2),$str($regml(3),$numtok(%Da,32)))
RAW -q MODE %Ch %NMo %Da
}
}
; Décrémentation du nombre total de commandes en attente
; Effacement de la commande venant d'être effectuée !
HAdd MassCommS MAX $calc(%f -1) | HDel MassCommS %It
; Et finalement, boucler dans la table afin de décaler toutes les commandes restantes
While $hfind(MassCommS,%e $+ *,1,w) {
Var %It = $ifmatch , %Da = $hget(MassCommS,%It)
Var %NIt = $calc($gettok(%It,1,59) -1) $+ $chr(59) $+ $gettok(%It,2-,59)
HAdd MassCommS %NIt %Da
HDel MassCommS %It
Inc %e
}
}
; Si l'item 1* n'est pas trouvé, alors tout arrêter :o)
; Cela signifie que toutes les commandes en attente ont été faites !
Else { .TimerMassComm off }
}
dialog MComSys {
title "Mass Command System"
size -1 -1 148 124
option dbu
text "Délai (en ms) entre chaque commande", 1, 27 11 50 14
combo 2, 82 12 33 79, size vsbar drop
text "Pseudonymes exceptés", 3, 6 30 61 8
text "Adresses exceptées", 4, 75 30 53 8
box "", 5, 2 1 144 121
list 6, 7 41 55 50, size vsbar
list 7, 66 41 75 50, size vsbar
edit "", 8, 7 93 55 10, autohs
edit "", 9, 66 93 75 10, autohs
button "Ajouter", 10, 8 106 25 12, flat
button "Enlever", 11, 37 106 25 12, flat
button "Ajouter", 12, 76 106 25 12, flat
button "Enlever", 13, 105 106 25 12, flat
}
On *:Dialog:MComSys:*:*:{
If ($devent == init) {
; Initialisé et mettre en Hash table si inexistante
MassCommSys.Load
; Remplir le combo du 'délai'
DidTok $dname 2 59 100;200;300;400;500;600;700;800;900;1000;1100;1200;1300;1400;1500
; Sélectionner le 'délai' déjà dans la base
Var %d = $calc($hget(MassCommS,delay) / 100)
Did -c $dname 2 %d
; Remplir les list des pseudonymes et adresses en exception.
MassCommSys.Excpt 6 nick
MassCommSys.Excpt 7 addr
}
ElseIf ($devent == sclick) {
; Bouton pour mettre un pseudonyme en exception
If ($did == 10) {
If $did(8) { MassCommSys.Add $dname 8 nick $ifmatch }
Else { MassCommSys.Warn 2 | Did -f $dname 8 }
}
; Bouton pour enlever un pseudonyme
ElseIf ($did == 11) {
If $did(6).seltext { MassCommSys.Del nick $ifmatch }
Else { MassCommSys.Warn 3 | Did -f $dname 6 }
}
; Bouton pour mettre une adresse en exception
ElseIf ($did == 12) {
If $did(9) { MassCommSys.Add $dname 9 addr $ifmatch }
Else { MassCommSys.Warn 5 | Did -f $dname 9 }
}
; Bouton pour enlever une addresse
ElseIf ($did == 13) {
If $did(7).seltext { MassCommSys.Del addr $ifmatch }
Else { MassCommSys.Warn 6 | Did -f $dname 7 }
}
; Lorqu'il y'a une sélection dans le combo du 'délai'
ElseIf ($did == 2) { HAdd MassCommS delay $did(2).seltext }
}
; A la fermeture du dialog, sauvegarder les données !
ElseIf ($devent == close) { MassCommSys.Save }
}
menu menubar,channel {
Mass Command System
.Configuration:Dialog -m MComSys MComSys
-
}
On *:Start:{
If $hget(MassCommS) {
MassCommSys.Save | HFree MassCommS
}
MassCommSys.Load
}
On *:DisConnect:MassCommSys.Save
On *:Exit:MassCommSys.Save
On *:Load:{
If !$isdir(MComSys) { MkDir MComSys }
If $exists($MassCommSys.Dir) { Write -c $MassCommSys.Dir }
Write $MassCommSys.Dir
Write $MassCommSys.Dir delay
Write $MassCommSys.Dir 500
Write $MassCommSys.Dir nick.except.1
Write $MassCommSys.Dir IriX
Write $MassCommSys.Dir addr.except.1
Write $MassCommSys.Dir 3753371872.Net|2758010278.tv
MassCommSys.Load
}
On *:UnLoad:{ Remove -b $MassCommSys.Dir | RmDir MComSys }
Alias -l MassCommSys.Dir { Return MComSys\data.txt }
Alias -l MassCommSys.Save { If $hget(MassCommS) { HSave MassCommS $MassCommSys.Dir } }
Alias -l MassCommSys.Load {
If !$hget(MassCommS) {
HMake MassCommS 100 | HLoad MassCommS $MassCommSys.Dir
}
}
; Fonction pour remplir les 'list' des éléments en exception
Alias -l MassCommSys.Excpt {
Var %i = 1 , %id = $1
Did -r $dname %id
While $hfind(MassCommS,$+($2,.except.,%i),1,n) {
Var %dat = $hget(MassCommS,$ifmatch)
DidTok $dname %id 124 %dat
Inc %i
}
}
; Fontion pour avertir l'utilisateur lors d'un erreur dans le dialog
Alias -l MassCommSys.Warn {
If ($1 == 1) { NoOp $input(Le pseudonyme $+(",$2,") est déjà $crlf dans la base d'exception,ow,Elément existant) }
ElseIf ($1 == 2) { NoOp $input(Aucun pseudonyme entré,ow,Champs vide) }
ElseIf ($1 == 3) { NoOp $input(Aucun pseudonyme selectionné,ow,Pas de selection) }
ElseIf ($1 == 4) { NoOp $input(L'adresse $+(",$2,") est déjà $crlf dans la base d'exception,ow,Elément existant) }
ElseIf ($1 == 5) { NoOp $input(Aucune adresse entrée,ow,Champs vide) }
ElseIf ($1 == 6) { NoOp $input(Aucune adresse selectionnée,ow,Pas de selection) }
}
; Fonction pour chercher si un pseudonyme ou une adresse est un exception
Alias -l MassCommSys.Find {
Var %a = $1 , %Typ = $prop , %i = 1
While $hfind(MassCommS,$+(%Typ,.except.,%i),1,n) {
Var %Dat = $hget(MassCommS,$ifmatch)
If $istok(%Dat,%a,124) { Return 1 }
Inc %i
}
Return 0
}
; Fonction pour rajouter un pseudonyme ou une adresse dans la base d'exception
; MassCommSys.Add $dname 8 nick $ifmatch
Alias -l MassCommSys.Add {
Var %i = 1 , %Dat , %Itm , %Entry = $4 , %Typ = $3 , %ReloadId = $iif(%Typ == nick,6,7)
While $hfind(MassCommS,$+(%Typ,.except.,%i),1,n) {
Var %Itm = $ifmatch
Var %Dat = $hget(MassCommS,%Itm)
If $findtok(%Dat,%Entry,1,124) {
MassCommSys.Warn 1 %Entry
Did -f $1 $2 | Halt
}
Inc %i
}
Did -r $1 $2
If ($numtok(%Dat,124) >= 20) {
Var %Itm = $+(%Typ,.except.,%i) , %Dat = %Entry
HAdd MassCommS %Itm %Dat
MassCommSys.Excpt %ReloadId %Typ
}
Else {
%Dat = %Dat $+ $chr(124) $+ %Entry
HAdd MassCommS %Itm %Dat
MassCommSys.Excpt %ReloadId %Typ
}
}
; Fonction pour enlever un pseudonyme ou une adresse de la base d'exception.
; MassCommSys.Del nick $ifmatch
Alias -l MassCommSys.Del {
Var %Rem = $2 , %Typ = $1 , %ReloadId = $iif(%Typ == nick,6,7)
Var %i = 1 , %Dat , %Itm
While $hfind(MassCommS,$+(%Typ,.except.,%i),1,n) {
Var %Itm = $ifmatch
Var %Dat = $hget(MassCommS,%Itm)
If $findtok(%Dat,%Rem,1,124) {
Var %Fnd = $ifmatch
If ($numtok(%Dat,124) == 1) {
HDel MassCommS %Itm
Var %w = $calc(%i +1)
While $hfind(MassCommS,$+(%Typ,.except.,%w),1,n) {
Var %It = $ifmatch , %Da = $hget(MassCommS,%It)
Var %NIt = $+(%Typ,.except.,$calc(%w -1))
HAdd MassCommS %NIt %Da | HDel MassCommS %It
Inc %w
}
}
Else {
%Dat = $deltok(%Dat,%Fnd,124)
HAdd MassCommS %Itm %Dat
}
MassCommSys.Excpt %ReloadId %Typ
Halt
}
Inc %i
}
}
; -----
; Eof()
; -----
Conclusion
___________________ Installation (LOAD) ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Pour installer le système, décidez d'abord quelle langue vous allez utiliser. Dans chaque cas, le fichier *_commented.mrc est facultatif (uniquement pour aider à comprendre)
Placez le fichier MCommSys-FR-v1.1.1.mrc dans le répertoire de votre logiciel mIRC
Manuellement:
1. Tapez dans la fenêtre 'status' de mIRC la commande suivante: /load -rs MCommSys-FR-v1.1.1.mrc
Avec l'éditeur de script:
1. Tapez la combinaison de touche ALT R 2. Vous êtes maintenant dans l'éditeur de scripts, onglet 'remotes'. 3. Cliquez sur le menu File/Load 4. Choisissez le fichier que vous avez placer précédemment. 5. Cliquer sur OK ________________________ Désinstallation (UNLOAD) ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Manuellement:
1 . Tapez dans la fenêtre 'status' de mIRC la commande suivante:
/unload -rs MCommSys-FR-v1.1.1.mrc
Avec l'éditeur de script:
1. Tapez la combinaison de touche ALT R 2. Vous êtes maintenant dans l'éditeur de scripts, onglet 'remotes'. 3. Cliquez sur le menu File/Unload 4. Choisissez le fichier MCommSys-FR-v1.1.1.mrc 5. Cliquer sur OK _________ ATTENTION ¯¯¯¯¯¯¯¯¯ Lors de la désinstallation, la base de données du système de masse sera effacée et mise dans la corbeille (par sécurité). Si vous pensez avoir fait une erreur, restaurez donc le fichier de la corbeille. ______________ Configurations ¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯ Pour configurer, selectionner 'Mass Command System' dans le menubar ou en faisant un click-droit sur le fond de n'importe quel salon.
Historique
- 09 juin 2007 17:18:33 :
- correction '$horloge' par le commutateur -t pour les commandes /echo
- 09 juin 2007 20:00:31 :
- cf. les fichiers bugfix-*.txt
- 09 juin 2007 21:55:29 :
- cf. bugfix-*.txt
- 10 juin 2007 03:19:36 :
- changement majeure. cf. les fichiers changelog-*.txt et bugfix-*.txt
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Liste des utilisateurs [ par gosney ]
Salut,Je voudrais jouer avec la liste des utilisateurs d'un canal donné (par exemple celui depuis lequel l'alias est executé).Concretement, je voudrai
probleme de variable [ par Virtuallllll ]
depuis aujourd'hui plus aucun script qui utilise des variables ne marche ... a chaque fois ds le status il me met "%cmd Unknown command"et qd j'essaye
Script simple mais qui ne marche pas :( [ par Tamahome ]
Bonjour,voila j'ai fait un petit script qui permet de lancer un programme sur un timer (tous les soirs a 00h00, chaque 1er jour du mois, et chaque dim
remote pour le !mass [ par OsrNet ]
bonjour, j'ai perdu toutes mes connaissance en irc et je voudré savoir comment on fait le !mass ( sa sert a se oper,voicer,halfoper,owner) Merci d'ava
dl mp3 [ par valantin ]
~~DeMoN~~voila deja bonjour je cherche une command pour faire demarre le dcc automatiquement quand un user tape une command exemple < !le titre du
délai pour joindre des chans [ par MeF ]
bonsoir :)voilà je cherche désespérément un ti truc, surement très simple à faire, mais j'ai pas réussi à trouver ce que ça pouvait etre :s donc je me
[Recherche] un bon script de mass svp [ par banditxp ]
bonjour, j'ai testé pas mal de scripts dispo sur le site, mais le mass voice ou devoice le font membre pas membre.c'est tres chiant.je trouve pas de s
detecter les mass invite [ par maaars ]
plop les gensvoila je voudrai savoir s'il existe un moyen de detecter les mass invite sur un salon.(je peux pas faire plus clair je crois :p)('' )
probleme de ($nick unknown command [ par J4Gu4R ]
voila dans ma remote un évenement de kickon *:KICK:*:{ if ($knick == $me) { echo -s je me fais kick } elseif ($nick == $me) { echo -s je ki
Petit problème posé à tous les pros de scripting =) [ par Squallou ]
Bonjour bonjour ^^alors jsuis débutant mais je commence à m'y connaitre un peu (je pense) et après avoir passé 2h sur le pb j'ai t
|
Derniers Blogs
TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : ON RAWMODERE : ON RAWMODE par WorldDMT
Cliquez pour lire la suite par WorldDMT AVERTISSMENT ET KIKKAVERTISSMENT ET KIKK par mouhcine951990
Cliquez pour lire la suite par mouhcine951990
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|