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

Catégorie :AddOns Classé sous : mass, command, délai, delay Niveau : Initié Date de création : 09/06/2007 Date de mise à jour : 10/06/2007 03:19:36 Vu / téléchargé: 2 273 / 49

Note :
Aucune note

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

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.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

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

Commentaires et avis

signaler à un administrateur
Commentaire de wims le 09/06/2007 19:32:40

Encore une fois, une bonne idée, car il offre des options que ce déja présent ici n'offre pas mais le truc c'est que j'vois pas pourquoi tu ne fait pas simplement un snippet plutot que de t'encombré avec plein de truc inutile :)

signaler à un administrateur
Commentaire de TropNul le 09/06/2007 20:05:17

exacte.

mais j'ai voulu faire le plus clair possible au lieu de faire le plus concis possible.
ainsi permettant à un plus large public de lire facilement la source.

dans l'éventualité d'un script, il se peut que je modifie cette source afin d'en diminuer la taille mais pour l'instant, je mets ce projet de côté, sauf bien sûr pour corriger les bugs, si découvert.

:o)

signaler à un administrateur
Commentaire de wims le 09/06/2007 21:38:21

Bah je pense que ton code sera plus accessible sous forme de snippet complet dans ce style :

/MassComSys.Main [+|-]<eqaIovhkb|kb> [#nomdusalon] [délai] [exept] [type] [raison]

e = exept, q = owner, a = admin, I = invite

signaler à un administrateur
Commentaire de TropNul le 09/06/2007 23:16:19

à première vue, je devrais rajouter ces 4 modes.
mais le hic est qu'elles ne sont pas accéssibles sur tous les serveurs.
donc après un moment de réflexion (je me tâte lol), je préfère ne laisser
que les modes 'universelles' déjà présentes dans la fonction.

:o)

signaler à un administrateur
Commentaire de wims le 10/06/2007 00:08:13

Rajouter ces fonction n'est qu'un plus pour ton snippet ( si si, tu vas en faire un snippet ;( ) l'utilisateur qui n'est pas sur le server adequat n'utilisera pas ce params c'est tout

signaler à un administrateur
Commentaire de TropNul le 10/06/2007 11:15:37

mise à jour faite.
voici ce qu'il en résulte:

/MassComSys.Main [+|-]<aeIqovhkb|kb> <délai{100-1500}|d> [#nomdusalon] [type] [raison]

:o)

signaler à un administrateur
Commentaire de wims le 10/06/2007 17:13:42

Ok Bien ! il manque les [exept] mais c'est déja bien, en revanche : pourquoi on fait pas +e ou -e et +I ou -I ?

signaler à un administrateur
Commentaire de TropNul le 10/06/2007 21:13:23

c'est quoi que tu appelles " [exept] " ?
donnes moi des exemples stp :)

pour les -e et -I, c'est comme le -b, la fonction ne les gère pas.
bien qu'il soit toujours possible de rajouter cela maintenant que le hash table est
présent en permanence.

dans la toute première version, il y avait un hfree à la fin du timer.
il se peut fort bien que je rajoute ces fonctions donc.

signaler à un administrateur
Commentaire de wims le 10/06/2007 22:16:31

Ok, les [exept] seraient les nick a exclure de l'action

/MassComSys.Main [+|-]<aeIqovhkb|kb> <délai{100-1500}|d> <Wims,ArKanis,Nsh|e> [#nomdusalon] [type] [raison]

Ajouter un commentaire

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 &lt; !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&#233;butant mais je commence &#224; m'y connaitre un peu (je pense) et apr&#232;s avoir pass&#233; 2h sur le pb j'ai t


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.