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. System 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. Main <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)
___________________________
T ype d'Exception par défaut
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
2 (*!*@hôte.domaine)
______________________________ _________
Type de masque pour l'Invite par défaut
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
2 (*!*@hôte.domaine)
_________________________
Rai son 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 .Main +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 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVéTECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVé par ROMELARD Fabrice
Speaker : Guillaume Rochette Cette session est dédiée à fournir le retour sur la mise en place d'un cloud privé (IaaS) par Osiatis pour son compte ou celui de ses clients. Ce projet s'est déroulé sur 4 mois et a permis de faire évoluer...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0 par odewit
Je viens de publier la version 3.0 de Perspective pour Silverlight, qui regroupe un portage sous Silverlight 5.0 des fonctionnalités de Perspective 2.0, le framework 3D de haut-niveau introduit récemment et de nouveaux exemples de code. En voici la li...
Cliquez pour lire la suite de l'article par odewit
Forum
RE : AIDERE : AIDE par Nico26000
Cliquez pour lire la suite par Nico26000 RE : AIDERE : AIDE par WorldDMT
Cliquez pour lire la suite par WorldDMT AIDEAIDE par Nico26000
Cliquez pour lire la suite par Nico26000
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|