begin process at 2012 02 10 03:42:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

AddOns

 > ANTI INSULTES EN HASHTABLE

ANTI INSULTES EN HASHTABLE


 Information sur la source

Note :
6 / 10 - par 2 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :AddOns Classé sous :insulte, hashtable Niveau :Débutant Date de création :06/11/2005 Date de mise à jour :05/11/2006 16:42:46 Vu / téléchargé :4 913 / 328

Auteur : lebaronrouge

Ecrire un message privé
Site perso
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • 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
  • }
  • }
  • }
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
    }
  }
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

04 novembre 2006 16:23:42 :
Ajout de l'option de protection des halfops activable à volonté
05 novembre 2006 16:42:46 :
Ajout de l'option de protection des halfops fonctionnelle (merci rca arkanis)

 Sources du même auteur

Source avec Zip Source avec une capture GESTIONNAIRE CHANSERV
Source avec Zip Source avec une capture SOUNDS MANAGER PERSONALISABLE

 Sources de la même categorie

PACMAN MULTI-JOUEUR EN LIGNE par wims
PROXY&SOCKS SCANNER+LEECHER par independentt
GESTIONNAIRE DE HIGHLIGHT AVANCÉ AVEC IGNORE SALON OU PSEUDO par doob666
AUTOJOIN HTABLE MULTISERVER par doob666
TCL - AJOUT SUPPRESSION DE LOGS par Atok

 Sources en rapport avec celle ci

PENDU EN @WINDOW par hisoka2501
ANTI INSULTE SIMPLE ET EFFICACE PAS COMME LES AUTRES par LsM232
Source avec Zip SIMULATION DE TABLEAU DANS MIRC AVEC LES HASHTABLE par BaFM
Source avec Zip ANTI-INSULTES V2.0 par Thomas46
GAGNEZ EN VITESSE DANS UN MP3 PLAYER GRACE AU HASH TABLE par Kerrigan

Commentaires et avis

Commentaire de RCA ArKanis le 06/11/2005 18:56:52

vraiment dommage qu'il n'y ait qu'un chan possible

les / sont inutiles

ban kick : ban -k (cf aide)

tu peux utiliser tokenize 32 $strip($1-) au début de ton on text et de ton on action, ça t'évitera de faire $strip à chaque fois

== $true, t'enlèves
le . devant halt sert à rien, et perso je préfère "return"

tu peux même regrouper ces deux events en un seul, étant donné qu'ils sont identiques ici
on *:text:*:#:badword.check $chan $nick $1-
on *:action:*:#:badword.check $chan $nick $1-

alias -l badword.check {
  if (!$3) return
  tokenize 32 $strip($1-)
  if ((($2 isop $1) && ($ap(op) == on)) || (($2 isvoice $1) && ($ap(voice) == on)) || ($ap(actif) != on) || ($me !isop $1)) return
  else {
    var %i = 3, %m = $0
    while %i <= %m {
      var %w = $gettok($3-,%i,32)
      if ($istok($ap(list),%w,182)) {
        if ($istok(a-k-kb,$ap(sent),45)) msg $1 Le mot $+(,%w,) est interdit
        if ($ap(sent) == k) kick $1 $nick "message de kick, tout de même"
        elseif ($ap(sent) == kb) ban -k $1 $nick 2
        break (à vérifier)
      }
      inc %i
    }
  }
}

Commentaire de wims le 06/11/2005 19:39:42

" vraiment dommage qu'il n'y ait qu'un chan possible" ?

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)

if (%tps == $null) >> if (!%tps) aussi


Commentaire de GaaraS le 09/11/2005 22:05:01

En effet se serai plus pratique de pouvoir choisir les chans que l'on veu activer, et personnaliser la sentence selon le chan.
Sinon j'aime tout se qui est en HashTable ^^
7/10

Commentaire de lebaronrouge le 10/11/2005 22:37:39

Merci les gars pour vos remarques j'en prends note et améliorerait donc à l'ocasion ce code dans ce sens ;o)
A la base comme c'était pour gerer mon seul et unique canal et que je voulais un code perso il à donc été optimisé dans mon sens mais si il peut être utilisé par d'autres je vais étudier tout ca.

Commentaire de lebaronrouge le 03/12/2005 11:26:57

if (%tps == $null) >> if (!%tps) aussi

C'est pas plutot pour :
if (%tps != $null) que l'on peut mettre if (!%tps)
et non si le %tps == $null ???

Commentaire de lebaronrouge le 04/12/2005 13:11:28

toute facon rca arkanis rien ne marche de ce que tu as mis lol

Commentaire de RCA ArKanis le 04/12/2005 14:12:29

au lieu de $nick mets $2

le tokenize marche forcement en tout cas

suffit de chercher un peu où est le pb, j'avais donné ce code sans tester, j'ai pas le temps de m'y mettre vraiment ^^
c'était en plus une "erreur" évidente, t'aurais pu la voir très facilement ...

Commentaire de lebaronrouge le 19/12/2005 12:31:23

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 =)

Commentaire de hisoka2501 le 26/07/2006 03:38:32

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

Commentaire de lebaronrouge le 04/11/2006 19:28:28

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 ...

Commentaire de hisoka2501 le 04/11/2006 23:12:00

éssaie: if (ishop $nick $chan)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Anti Insulte [ par Crazy KiD ] oui je cherche un anti-insulte mais qui qu'on peux configurer pour pas que je kick mon ami ché pas si vous comprenez :P probleme de hashtables [ par kishkaya ] ben j'ai cherché dans l'aide mais j'ai pas trouvéje crés un systeme de log de membres avec une hashtablej'ai deux problemes : if ($hget(log) != lo modification de hashtable des que quelqu'un quit un salon [ par kishkaya ] Voila j'ai essayé plein de syntax mais ca a rien donnéj'aimerai que l'on supprime l'insertion $gettok($nick,1,124) de la hashtable 'authen' quand $nic Afficher le contenu d'une hashtable [ par kishkaya ] voila le contenu d'une hashtable est sous cette forme :$nick|logincela est geré par un bot et j'aimerai rajouter une fenetre, une windows dans ce bot Anti insulte aide [ par Adnim_Sonic ] bonjour je sais comment faire mon anti insulte mais je voudrais passe o stade avec un avertisement avent kick mais un fois que je la fait je l active hashtable et pixel [ par ranny ] Bonsoir tout le monde,Voila j'ai 2 petites questions.1/ Comment intervertir les valeurs d'une variable $hget.Par exemple comment donner la valeur de $ problème de hashtable [ par doob666 ] Bonjour,J'aimerais savoir comment on peut récupérer des données commençant par le même item dans une hashtable en une seule fois ? Je m'explique, j'ai Détection mots (insulte, provocation, badword) [ par Surfsp33 ] Bonjour, Je sais que le site regorge d'anti-insulte et d'anti-badword. J'ai déjà regardé par mal de script mais je n'arrive pas à trouver ce que je


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,323 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales