|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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) ___________________________ Type d'Exception par défaut ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ 2 (*!*@hôte.domaine) _______________________________________ Type de masque pour l'Invite par défaut ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ 2 (*!*@hôte.domaine) _________________________ Raison 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
Sources en rapport avec celle ci
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
|
Téléchargements
Logiciels à télécharger sur le même thème :
|