Clonescan en dialog

Contenu du snippet

Ca n'en fera qu'un seul de plus :)
Aprés a vous de choisir, ca fait 2ans que je l'ai programmé si mes sources peuvent vous servires ^^

Source / Exemple :


alias scaning {
  set %n 0
  :loop1
  inc %n 1
  if ($nick(%ichan,%n) isin %istock) { goto end }
  if ($ialchan($address($nick(%ichan,%n),2),%ichan,0) > 1) {
    inc %itotal 1
    unset %inick | set %l 0
    :loop2
    inc %l 1
    if ($ialchan($address($nick(%ichan,%n),2),%ichan,%l).nick) {
      set %istock %istock $ialchan($address($nick(%ichan,%n),2),%ichan,%l).nick
      did -a sc 7 $ialchan($address($nick(%ichan,%n),2),%ichan,%l).nick
      set %inick %inick + $ialchan($address($nick(%ichan,%n),2),%ichan,%l).nick 
      goto loop2
    }
    did -a sc 2 $right(%inick,-2) ¬
    did -a sc 2 $chr(160) $address($nick(%ichan,%n),2)
  }
  :end
  if (%n < $nick(%ichan,0)) { goto loop1 }
  if (%n == $nick(%ichan,0)) { scend }
}

alias scend {
  %ipourcent = [ $calc(%itotal * 100) ] / %itnick
  did -a sc 4 Total: %itotal host ( $+ $int(%ipourcent) $+ % $+ )
  if (%itotal == 0) { did -a sc 2 ¬ Aucun clône détecté. }
  if (%itotal != 0) { did -e sc 3,5 }
  else { did -e sc 3 }
  if ($me isop %ichan) && (%itotal > 0) { dialog -s sc -1 -1 420 130 }
  unset %it*
  unset %in*
  unset %ip*
  unset %is*
}

#cln off
raw 352:*:/halt
raw 315:*:.disable #cln | scaning | /halt
#cln end

alias cs {
  .ial on
  .enable #cln
  who #
  if ($dialog(sc) == sc) { halt }
  else { dialog -m sc sc }
  set %ichan #
  set %itnick $nick(#,0)
  set %itotal 0
  did -a sc 2 DETECTION DE CLONE EN COURS SUR # .....
  unset %inick
}

dialog sc {
  title "Détection de clônes"
  size -1 -1 320 130
  button "",1,1000 1000 1 1,ok
  list 2, 10 10 300 100
  button "&OK",3, 250 100 60 21,cancel
  text "",4, 10 104 130 20
  button "&Afficher",5, 180 100 60 21

  box "",6,320 10 2 80
  list 7,332 10 80 80,sort
  button "Kicker",8,334 100 35 21
  button "Bannir",9,373 100 35 21
  edit "Les clones ne sont pas autorisés !",10,332 70 80 23,autohs
}

on 1:dialog:sc:init:0:{ did -b sc 3,5,8,9 }

on 1:dialog:sc:sclick:*:{
  if ($did == 5) {
    set %c 0
    :loop
    inc %c 1
    msg $active $did(sc,2,%c)
    if (%c < $did(sc,2).lines) { goto loop }
  }
  if ($did == 7) { 
    if ($did(sc,7,$did(sc,7).sel).text != $null) { 
      did -e sc 8,9 
    } 
  }
  if ($did == 8) { kick %ichan $did(sc,7,$did(sc,7).sel).text $did(sc,10) | did -d sc 7 $did(sc,7).sel }
  if ($did == 9) { ban %ichan $did(sc,7,$did(sc,7).sel).text 7 }
}

Conclusion :


Pour le lancer c'est l'alias cs qui le met en marche :)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.