Anti insultes en hashtable

Description

Salut.
Je propose ma premiere source issue de moi-même et de mon ami came boy pour le citer.Apres en avoir testé un paquets ayants tous des bugs ou problèmes de reconnaissance réelle des mots,on a tenté de faire un bon anti insulte qui fasse vraiment la diférence entre une insulte et non pas un mot comme "con" reperé dans "connaitre" par exemple,et devant aussi prendre en compte les diférences de codes compris dans l'écriture d'un script utilisant la couleur dans l'écriture. c'est pourquoi nous avons utilisé les tokens,de plus ce code fonctionne en hashtable.Il suffit d'entrer sois-même tous les mots et insultes dans la liste,modifiable à volonté biensur.Il est activable ou non,avec choix de protections des ops,voice,choix des sentence : avertir,kick ou kickban et choix du canal d'action (# pour tous les chans ou l'on est op).Ce code tourne depuis longtemps sur mon salon et fonctionne parfaitement et fait vraiment son boulot.Puisse-t-il servir à d'autre, enjoy ;o)

Source / Exemple :


dialog badwords {
  title "©         ?anti-insultes?"
  size -1 -1 152 190
  option dbu
  list 2, 21 44 110 125, size
  button "Nouveau", 1, 22 27 37 12
  button "Supprimer", 3, 93 27 37 12
  button "OK", 5, 57 176 37 12, ok
  text "choisis le canal d'action", 8, 48 5 55 8
  edit "", 9, 51 12 50 10
  box "", 10, 18 39 116 133
  menu "activation", 24
  item "on", 25, 24
  item "off", 27, 24
  menu "protection", 28
  item "op", 29, 28
  item "halfop", 13, 28
  item "voice", 30, 28
  menu "sentence", 31
  item "avertir", 34, 31
  item "kick", 35, 31
  item "kickban", 36, 31
}

alias badwords { dialog -m badwords badwords }

alias ap {
  if ($isid) return $hget(badwords,$1)
  else hadd badwords $1-
}

on *:text:*:%wordchan:{
  if ((($nick isop #) && ($ap(op) == on)) || (($nick isvoice #) && ($ap(voice) == on)) || (($nick($chan,$nick,h)) && ($ap(halfop))) || ($ap(actif) != on) || ($me !isop #)) { halt }
  else {
    var %i 1
    while (%i <= $0) {
      if ($istok($ap(list),$strip($gettok($1-,%i,32)),182) == $true) && ($ap(sent) == a) { /msg # Le mot  $gettok($1-,%i,32)  est interdit | .halt }
      if ($istok($ap(list),$strip($gettok($1-,%i,32)),182) == $true) && ($ap(sent) == k) { /msg # Le mot  $gettok($1-,%i,32)  est interdit | /kick # $nick | .halt }
      if ($istok($ap(list),$strip($gettok($1-,%i,32)),182) == $true) && ($ap(sent) == kb) { /msg # Le mot  $gettok($1-,%i,32)  est interdit | ban # $nick 2 | /kick # $nick | .halt } 
      inc %i
    }
  }
}

on *:action:*:%wordchan:{
  if ((($nick isop #) && ($ap(op) == on)) || (($nick isvoice #) && ($ap(voice) == on)) || (($nick($chan,$nick,h)) && ($ap(halfop))) || ($ap(actif) != on) || ($me !isop #)) { halt }
  else {
    var %i 1
    while (%i <= $0) {
      if ($istok($ap(list),$strip($gettok($1-,%i,32)),182) == $true) && ($ap(sent) == a) { /msg # Le mot  $gettok($1-,%i,32)  est interdit | .halt }
      if ($istok($ap(list),$strip($gettok($1-,%i,32)),182) == $true) && ($ap(sent) == k) { /msg # Le mot  $gettok($1-,%i,32)  est interdit | /kick # $nick | .halt }
      if ($istok($ap(list),$strip($gettok($1-,%i,32)),182) == $true) && ($ap(sent) == kb) { /msg # Le mot  $gettok($1-,%i,32)  est interdit | ban # $nick 2 | /kick # $nick | .halt }
      inc %i
    }
  }
}

on *:exit:{ hsave -o badwords badwords }

on *:start:{
  if ($ap(badwords)) .hfree badwords | hmake badwords 200
  if ($exists(badwords) = $true) .hload badwords badwords
  else { ap badwords off }
}

on *:DIALOG:badwords:*:*:{
  if ($devent == init) {
    did -r $dname 2
    if ($ap(actif) == on) { did -c $dname 25 | did -u $dname 27 }
    else { did -c $dname 27 | did -u $dname 25 }
    didtok $dname 2 182 $ap(list)
    did -a $dname 9 %wordchan
    $iif($ap(op) == on,did -c $dname 29,did -u $dname 29)
    $iif($ap(halfop),did -c $dname 13,did -u $dname 13)
    $iif($ap(voice) == on,did -c $dname 30,did -u $dname 30)
    if ($ap(sent) == a) { did -c $dname 34 | did -u $dname 35 | did -u $dname 36 }
    elseif ($ap(sent) == k) { did -u $dname 34 | did -c $dname 35 | did -u $dname 36 }
    else { did -u $dname 34 | did -u $dname 35 | did -c $dname 36 }
  }
  elseif ($devent == sclick) {
    if ($did == 1) {
      var %tps = $$?="Entrer le mot a kicker"
      if (%tps == $null) halt
      elseif ($count(%z,¶) != 0) { var %tps = $input(Ne peut pas contenir  ce caractaire : ¶,-o,ERREUR) | halt }
      elseif ($istok($ap(list),%tps,182) == $true) { var %tps = $input(Désolé mais ce mot est déjà dans la liste !,-o,ERREUR) | halt }
      ap list $addtok($ap(list),%tps,182)
      did -r $dname 2
      didtok $dname 2 182 $ap(list)
    }
    elseif ($did == 3) {
      ap list $deltok($ap(list),$did(2).sel,182)
      did -r $dname 2
      didtok $dname 2 182 $ap(list)
    }
    elseif ($did == 9) {  $did($dname,9) badwords  %wordchan }
    elseif ($did == 5) { set %wordchan $did($dname,9) }
  }
  elseif ($devent == menu) {
    if ($did == 25) { ap actif on
      did -c $dname 25
      did -u $dname 27
    }
    elseif ($did == 27) { ap actif off
      did -c $dname 27
      did -u $dname 25
    }
    elseif ($did = 29) { $iif($ap(op) == off,ap op on,ap op off)
      $iif($ap(op) == on,did -c $dname 29,did -u $dname 29)
    }
    elseif ($did = 13) { $iif($ap(halfop) == 0,ap halfop 1,ap halfop 0)
      $iif($ap(halfop),did -c $dname 13,did -u $dname 13)
    }
    elseif ($did = 30) { $iif($ap(voice) == off,ap voice on,ap voice off)
      $iif($ap(voice) == on,did -c $dname 30,did -u $dname 30)
    }
    elseif ($did = 34) { ap sent a
      did -c $dname 34 | did -u $dname 35 | did -u $dname 36
    }
    elseif ($did = 35) { ap sent k
      did -u $dname 34 | did -c $dname 35 | did -u $dname 34
    }
    elseif ($did = 36) { ap sent kb
      did -u $dname 34 | did -u $dname 35 | did -c $dname 36
    }
  }
}

Codes Sources

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.