Anti insultes en hashtable

Soyez le premier à donner votre avis sur cette source.

Vue 6 155 fois - Téléchargée 378 fois

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

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mercredi 8 juin 2011
Statut
Membre
Dernière intervention
16 octobre 2012

Bonjour je suis nouveau dans le domaine pourrais t-on m'expliquer ce que je dois faire pour que remote fonctionne ??

Merci
Messages postés
264
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2009

éssaie: if (ishop $nick $chan)
Messages postés
288
Date d'inscription
lundi 8 mars 2004
Statut
Membre
Dernière intervention
14 février 2009

Bon j'ai un soucis avec la protections des halfop ca ne veux en aucuns cas la prendre en compte et je n'arrive pas à trouver pourquoi quelque soit la syntaxe utilisée pour identifié si $nick et halfop ...
Messages postés
264
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2009

bon épuronts tout ca:

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

les { } ne servent que si il y a plusieurs commandes, sinon elles rallentises le code inutilement,

les / devant les commandes en script (/msg) ne servent a rien et occupent de la place pour rien et rendes moin lisibles (oui de la place tu a bien lu, les demo 512 octect par example sonts des defits basé sur un code de 512 octect maxi donc on économise de la place)

.halt => on évite ce gerne de chose, utilise plutot return pour ne pas poser de conflits

# elseif ($did = 34) { ap sent a
# did -c $dname 34 | did -u $dname 35 | did -u $dname 36
# }

devient:

elseif ($did = 34) {
ap sent a
did -c $dname 34
did -u $dname 35,36
}

en effet on évite les | qui ralentisent le code et on éssaie un maximum de chainer les commandes did avec des ,
on évite aussis de faire des trucs crades comme:
elseif (condition) { commande1
commande 2
commande 3
}
pour des soucis de lisibilitée

pour info: un if est plus rapide qu'un $iff() (fait le bench tu vera)

meme remarque que plus haut: tokenize 32 $strip($1-)
$gettok($1-,2,32) > $2
besoin de le rendre maléable ? => $ [ $+ [ %i ] ]
$0 = $numtok($1-,32)


var %i 1 => var %i = 1
le = n'est pas du luxe prend l'habitude de le metre car des fois ca ne passera pas (éssaie avec la fonction findfile par example tu vera)

conseil: évite de metre on et off, privilegie 0 pour off et 1 pour on, comme ca tu rédui le code a : if ($hget(%table,item)) au lieux de if ($hget(%table,item) == on) donc gain de temp et de claretée (les Boléens sonts utiles)


voila je pensse avoir fait le tour
Messages postés
288
Date d'inscription
lundi 8 mars 2004
Statut
Membre
Dernière intervention
14 février 2009

honnêtement je n'ai pas trop le temp non plus j'améliore constament mon script et donc ce qui est déja fait je ne revient pas beaucoup dessus, mais c'est vrai que si je peux le réduire et l'optimiser autant que tu le propose ca serait pas mal =)
Afficher les 12 commentaires

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.