J4Gu4R
Messages postés385Date d'inscriptionsamedi 7 août 2004StatutMembreDernière intervention 3 juillet 2007
-
24 nov. 2004 à 22:19
cs_maaars
Messages postés111Date d'inscriptiondimanche 31 août 2003StatutMembreDernière intervention14 août 2005
-
29 nov. 2004 à 13:18
bon en gros voila le dialog avec le code :
"""""""""""""""""""""""" édition mots """"""""""""""""""""""""
menu menubar {
réponses_auto_insultes:/auto_insult
}
alias auto_insult { dialog -m auto_insult auto_insult }
dialog auto_insult {
title "auto_réponses"
size -1 -1 90 130
option dbu
box "AnTi-inSuLTeS", 8, 5 5 80 87
text "LiSt DeS MoTs :", 1, 10 15 70 15
combo 2, 10 25 70 40, size vsbar drop
text "RajOuTeR Un MoT :", 4, 10 40 70 15
edit "", 5, 10 50 70 10
button "Ajouter", 6, 10 65 24 12
button "Effacer", 7, 35 65 24 12
check "ACTiV", 3, 60 65 30 12
text "éditeur de réponses :", 9, 10 80 70 15
button "GO", 10, 65 79 15 10
box "FeRmeR PV", 11, 5 93 80 20
text "ceci fermera les pv insult :", 12, 10 101 70 15
check "", 13, 76 98 20 15
button "OK", 1000, 5 116 80 10, flat ok
}
Alias foundtxt {
If (!$1) { halt } Var %a 0, %aa $lines(auto_insultes\insultes\insluts.txt)
While (%aa > %a) {
InC %a
If ($read(auto_insultes\insultes\insluts.txt,%a) == $1) { return yes }
}
}
on *:INPUT:*: {
if ( $1 == !insluts.txt ) { write auto_insultes\insultes\insluts.txt $2- }
}
on *:dialog:auto_insult:*:*: {
if ($devent == init) {
loadbuf -o auto_insult 2 auto_insultes\insultes\insluts.txt
$iif($group(#auto_insult) == on,did -c $dname 3,did -u $dname 3)
$iif($group(#ferme_insult) == on,did -c $dname 13,did -u $dname 13)
}
if ($devent == sclick) {
if ($did == 1000) { .timer -mh 1 50 .dialog -x auto_insult | halt } if ($did 6) { var %z $did(5) | write auto_insultes\insultes\insluts.txt %z | did -a auto_insult 2 %z }
if ($did == 7) { write -dl $+ $did(2).sel auto_insultes\insultes\insluts.txt | did -d auto_insult 2 $did(2).sel }
$iif($did(3).state == 1,.enable #auto_insult,.disable #auto_insult)
$iif($did(13).state == 1,.enable #ferme_insult,.disable #ferme_insult)
}
}
#auto_insult off
On *:text:*:?:{
If ($foundtxt($1-) == yes) {
msg $nick $read $mircdir\auto_insultes\insultes.txt $+
}
}
#auto_insult end
#ferme_insult on
On *:text:*:?:{
If ($foundtxt($1-) == yes) {
echo -s 4----------» 7 iNSuLTe De 4 $nick ... 3Le PV est fermé à $time «----------
close -m $nick
}
}
#ferme_insult end
dans ma boite on peut configurer des mots "button 6" qui s'enregistre dans "auto_insultes\insultes\insluts.txt"
bon le but étant biensur de repérer les mots interdits et de réagir de manière automatique.
le code est pas complet la réaction se fait sois en répondant automatiquement grace à un editeur de phrases en "button 10" mais l'on peut aussi choisir le fait de ne pas répondre mais de fermer automatiquement un pv ayant un mot interdit grace au #group "#ferme_insulte".
bon tout cela marche. le gros probleme et ce pourquoi je demande votre aide parce ke je n'arrive pas à faire autrement sans que ça beugue ou que ça ne fonctionne pas du tout.
probleme :
actuellement tel que c'est il faut que dans le pv la personne écrit exactement le mot et tout seul (aucun autre mot) pour que le code réagisse
par exemple le mot configuré est "bla" si j'écrit blabla ça réagi pas de meme que si j'ecrit "tu es un gros "bla" ça réagi pas non plus.
or
moi je voudrais ke le code réagisse dans le style :
on *:text:*:?:{
if ( blabla isin $1- ) { /msg $nick blablabla }
if ( chaud isin $1- ) { /msg $nick c'est cool j'aime la chaleur }
}
ou la au moin si une personne écrit chaudasse par exemple ben ça réagi meme si c'est dans une phrase et à n'importe quel endroit et meme si d'autres lettres sont rattaché à ce mot.
voila si jme suis mal expimé hésitez pas à me poser des questions
merci d'avance à ceux et celles qui pourraient m'aider :))
cs_maaars
Messages postés111Date d'inscriptiondimanche 31 août 2003StatutMembreDernière intervention14 août 2005 27 nov. 2004 à 21:38
plop
Alias foundtxt {
If (!$1-) { halt } Var %a 0, %aa $lines(auto_insultes\insultes\insluts.txt)
While (%aa > %a) {
InC %a
If ($read(auto_insultes\insultes\insluts.txt,%a) isin $1-) { return yes }
}
}
MaX_62
Messages postés879Date d'inscriptionvendredi 22 octobre 2004StatutMembreDernière intervention29 juin 2007 25 nov. 2004 à 12:08
Pense a lire l'aide de mIRC avant de poser des questions...
text correspond si le texte ne contient que ce mot
text* correspond si le texte débute par ce mot
*text correspond si le texte se termine par ce mot
*text* correspond si le texte contient ce mot n'importe où
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 25 nov. 2004 à 13:07
Je précise un peu ce qu'a dit MaX :
Alias foundtxt {
If (!$1) { halt } Var %a 0, %aa $lines(auto_insultes\insultes\insluts.txt)
While (%aa > %a) {
InC %a
If ($read(auto_insultes\insultes\insluts.txt,%a) == $1) { return yes }
}
}
bon j'ai pas lu l'alias en entier, mais ... c moche !
$read a des options bien plus propres, comme par exemple $read(fichier,w,*mot*). le problème c'est qu'a mon sens ca ne marche pas dans le sens désiré, ca te dit si un mot est dans le fichier txt, pas si ta phrase contient un mot exact du fichier.
A cet effet, ya surement moyen de s'en sortir autrement mais voila ce que je fais et c assez efficace (sauf que je stocke mes mots en hashtable) :
on *:Text:*:#:{
;mots a détecter
var %x = mot1|mot2|mot3|mot4
;et la une tite regex qui va te dire si l'un des mots de ta liste se trouve dans la phrase
if $regex($1-,/(^| )( $+ %x $+ )( |$)/i) { echo -a $nick a dit $regml(2) sur $chan !!!!!!!!!! }
}
j'espère pas avoir fait d'erreur teste tu me diras si ca marche :]
PaDa
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 25 nov. 2004 à 16:52
je t'explique ce masque il est assez simple : (et surtout utile pour un détecteur de mots!)
je m'apercois que d'ailleurs ca répond pas a ta demande, contente toi plutot de if $regex($1-,/( $+ %x $+ )/i) { echo -a $nick a dit $regml(1) sur $chan !!!!!!!!!! }
le masque est simple : on met juste (mot1|mot2|mot3....)
le | signifie "ou" dans un masque de regex, donc la ca signifie si la phrase contient mot1 ou mot2 ou mot3 etc...
j'entoure de / .... /i pour lui indiquer de pas tenir compte des majuscules/minuscules
enfin les parenthèses servent a "capturer" le mot qui match, et ainsi que $regml(1) contienne le mot qui est contenu dans la phrase...
en réalité ce code remplace
if (mot1 isin $1-) { echo -a $nick a dit mot1 sur $chan !!!!!!!!!! }
elseif (mot2 isin $1-) { echo -a $nick a dit mot2 sur $chan !!!!!!!!!! }
etc
le gros avantage étant que tu peux avoir une liste de mots que tu gères et dont le nombre est indéfini au départ :]
J4Gu4R
Messages postés385Date d'inscriptionsamedi 7 août 2004StatutMembreDernière intervention 3 juillet 2007 25 nov. 2004 à 18:04
merci pour ces explications mais en fait ce n'est justement pas la place d'un mot que je recherche mais plutot la réaction d'un mot configuré et ce meme si ce n'est pas un mot exact par ex:
si le mot configuré est "pouf" ben ça réagira si quelqu'un écrit "pouf" ou bien "poufiasse" ou encore "t qu'1 sale poufiasse" (bref n'importe où dans la phrase).
c'est pour ça que j'ai pris l'exemple de :
on *:text:*:?:{
if ( blabla isin $1- ) { /msg $nick blablabla }
if ( chaud isin $1- ) { /msg $nick c'est cool j'aime la chaleur }
}
puisque là ça fonctionne exactement comme je veux.
le probleme dans mon code actuellement c'est qu'il reagit si le mot est "pouf" mais pas si quelqu'un écrit "poufiasse" de même que si le mot "pouf" est n'importe ou dans une phrase. et avoir à configurer un nombre de mot n'est pas très pratique je trouve puisque dans le cas d'un pv insultant la phrase le mot exacte mais aussi très longue voir des fois un véritable discours d'abruti :))
voila en gros j'espère que je me suis mieu exprimé que la première fois. bon si le moyen n'existe pas j'vais repasser au bon vieux
text correspond si le texte ne contient que ce mot
text* correspond si le texte débute par ce mot
*text correspond si le texte se termine par ce mot
*text* correspond si le texte contient ce mot n'importe où
comme dit MaX_62
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 25 nov. 2004 à 20:15
mon truc réagit de la même facon pour tous les mots, cad qu'il fait $nick a dit blabla sur $chan, hormis ca il marche comme tu veux. la place du mot n'a aucune importance
PaDa
J4Gu4R
Messages postés385Date d'inscriptionsamedi 7 août 2004StatutMembreDernière intervention 3 juillet 2007 25 nov. 2004 à 22:37
ha dac' excuze PaDa c moi qu'avais pas compris
en fait moi c un detecteur de mot en fenetre privé donc jme suis permis de mettre ton code comme ça :
on *:Text:*:?:{
var %x = mot1|mot2|mot3|mot4
trouve dans la phrase
if $regex($1-,/(^| )( $+ %x $+ )( |$)/i) { echo -a $nick a dit $regml(2) !!! }
}
mais ça réagit pas du tout même pas au mot exact lol
ptetre que mon alias foudtext est plus compatible du coup mais j'vois pas pk puisque j'inscrit bien le mot et il retourne bien le mot dans le fichier insluts.txt
J4Gu4R
Messages postés385Date d'inscriptionsamedi 7 août 2004StatutMembreDernière intervention 3 juillet 2007 26 nov. 2004 à 00:18
il est possible que plusieur on:TEXT... sois à l'origine du probleme j'vais verifier ça mais normalement sois j'essaye d'optimiser mes codes pour éviter ce genre de probleme sois je je les met dans un #group configurable pour le meme motif mais j'vais voir ça :))
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 26 nov. 2004 à 00:24
lol... chu pas a l'abri d'une tite erreur de syntaxe d'ailleurs, les parenthèses font parfois (souvent) merder le moteur de regex de mirc. a l'occasion j'pourrai te filer un addon de mod complet pour que tu voies ce que je fais
mais la vé dormir :]
PaDa
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 26 nov. 2004 à 00:38
euh
on *:Text:*:?:{
var %x = $1
if $regex($strip($1-),/( %x )/ix) {
< avec ca, tu cherches si dans $1- ya ... $1 :(
c pas ca je crois :]
pour un mec qui a pas de couleurs, ce on text déclenchera a chaque fois.
PaDa