Récupérer un contenu aléatoire .txt [Résolu]

NKWolf 39 Messages postés samedi 28 août 2004Date d'inscription 11 janvier 2007 Dernière intervention - 6 juin 2005 à 12:10 - Dernière réponse : fjxokt 841 Messages postés vendredi 28 janvier 2005Date d'inscription 25 février 2009 Dernière intervention
- 6 juin 2005 à 18:54
Bonjour tout le monde

mon titre n'est pas très explicite mais je vais essayer de vous d'écrire mon problème, je débute en scripting et je sèche

donc voilà je cherche à faire un détecteur de mot automatique dont les mot et la réponse attendue sont dans un fichier texte

j'ai donc ajout dans le fichier variables :

%cdw_detect_mot.file script_cdw/detect_mot.txt

qui définit le fichier texte à utiliser
ensuite dans le popup j'ai mit :

Détecteur de mot
.Ajouter un mot:var %mot = $$?="Entrez le mot à détecter:" | var %rep = $$?="Entrez la réponse à envoyer:" | /write %cdw_detect_mot.file %mot \ %rep

ce qui me fait un menu avec une fentre qui s'ouvre et demande le mot puis la réponse à mettre, il sont alors enregistré dans le fichier texte comme ceci :

mot \ réponse

jusque là pas de problème tous ce passe comme prévus, mon problème maintenant est le suivant, comment faire en sorte que si l'un des mot est dit ( par n'importe qui ) la réponse auto associer à ce mot s'affiche ?, je suppose qu'il y'a un système de boucle à faire mais je n'y connais strictement rien à celà

donc si quelqu'un dit par exemple :

salut wolf

le script va chercher dans la liste des mot si il est présent, si oui alors il retourne la réponse associer

voilà, j'espère que vous comprendrez ce que je veut faire et que vous pourrez m'aider

merci d'avance de votre aide
Afficher la suite 

23 réponses

Répondre au sujet
fjxokt 841 Messages postés vendredi 28 janvier 2005Date d'inscription 25 février 2009 Dernière intervention - 6 juin 2005 à 12:32
+3
Utile
hum un conseil

si tu cherches un format du genre question reponse avec detection du
mot, utilise les fichiers ini, c'est a peine plus compliqué que les txt



tu cree un fichier du genre questions.ini



[data]

mot=reponse

salut=je sais pas ce que tu veux mettre

etc...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de fjxokt
NKWolf 39 Messages postés samedi 28 août 2004Date d'inscription 11 janvier 2007 Dernière intervention - 6 juin 2005 à 12:42
0
Utile
la procédure pour enregistrer un nouveau mot est-elle là même que pour les fichier texte ?

je vais me renseigner sur les fichier.ini merci encore, je vous tiens informer du résultat
Commenter la réponse de NKWolf
cs_wims 2473 Messages postés vendredi 23 juillet 2004Date d'inscription 1 août 2010 Dernière intervention - 6 juin 2005 à 12:44
0
Utile
Plusieur personne on deja presenté se probleme, cherche un peu sur le site :)
Commenter la réponse de cs_wims
NKWolf 39 Messages postés samedi 28 août 2004Date d'inscription 11 janvier 2007 Dernière intervention - 6 juin 2005 à 13:03
0
Utile
bon je viens de comprendre comment écrire dans un fichier ini la po de prob

je vais donc me pencher sur le fait que si un des item(mot) est dit alors on envoi la réponse
Commenter la réponse de NKWolf
NKWolf 39 Messages postés samedi 28 août 2004Date d'inscription 11 janvier 2007 Dernière intervention - 6 juin 2005 à 13:31
0
Utile
donc voilà ou j'en suis, j'arrive à ecrire dans mon fichier ini, c'est un bon début loll

donc maintenant je comprend pas comment verifier si l'un des mot dit est présent dans le fichier ini (considérer comme une base de donnée si je comprend bien ) afin d'envoyer la réponse auto

mon fichier ini : dtect_m.ini contient :

[detect_m]
mot1=réponse mot1
mot2=réponse mot2
etc...

je sais déjà que je doit utilisé l'evenment on *:text:
donc dans mon remote je tape

on *:text:kelkechose:#:{
/msg $nick $readini(script_cdw/dtect.ini, et là je comprend plus, et la non plus)
}

donc je suppose que "kelkechose" doit être définit par une variable pour qu'il puisse verifier si c'est présent dans le ini, ensuite afficher la réponse avec /msg, mais je sèche trop là

pourriez-vous m'aider ?
j'ai regarder un peut sur le site mais quand je voi tte ces source chui completement perdu

encore merci de votre aide
Commenter la réponse de NKWolf
fjxokt 841 Messages postés vendredi 28 janvier 2005Date d'inscription 25 février 2009 Dernière intervention - 6 juin 2005 à 13:59
0
Utile
tu veux reagir au mot si la personne dit ce mot seulement, ou si elle prononce ce mot dans une phrase ?

pour le premier cas, if faut que tu te serve de $readini(detect.ini,detect_m,$1)

pour le second, c'est un peu plus compliqué

il faut que pr chaque event text, tu verifie si chacun des mots n'est pas present dans ton ini



dans un event on *:TEXT, $0 retourne le nombre total de mots, $1 le premier mot; $2 le second etc..



en gros ça donnerai



on *:TEXT:*:#:{

var %f 1, %total $0

while (%f <= %total) {

if ($readini(detect.ini,detect_m,$ $+ [ %i ])) { msg $chan $v1 }

inc %i }

}



a tester...
Commenter la réponse de fjxokt
fjxokt 841 Messages postés vendredi 28 janvier 2005Date d'inscription 25 février 2009 Dernière intervention - 6 juin 2005 à 14:05
0
Utile
oups



c'est plutot



on *:TEXT:*:#:{
var %f 1 | while (%f <= $0) {
if ($readini(detect.ini,detect_m,$ $+ [ %f ])) { msg $chan $v1 }
inc %i }
}

(vivement une fonction editttttttttttttttttttttttt)
Commenter la réponse de fjxokt
NKWolf 39 Messages postés samedi 28 août 2004Date d'inscription 11 janvier 2007 Dernière intervention - 6 juin 2005 à 15:01
0
Utile
c'est la première solution qu'il me faut, donc réagir si ce mot seulement est dit

donc comme tu dit :
$readini(detect.ini,detect_m,$1)

mais dois-je aussi le placer dans un event on text ?
j'ai fait ceci dans le remote:

on *:text:*:?:{
/msg $nick $readini(detect.ini,detect_m,$1)
}

mais rien ne ce produit lorsque je tape un des mot à auto réponse, ai-je fait une erreur ?

et encore merci beaucoup de votre aide c'est vraiment sympa l'aide que vous fournissez
Commenter la réponse de NKWolf
NKWolf 39 Messages postés samedi 28 août 2004Date d'inscription 11 janvier 2007 Dernière intervention - 6 juin 2005 à 15:07
0
Utile
j'ai aussi essayer la deuxième solution, mais dès que quelqu'un tape quelques chose meme un bonjour c'est mon mirc qui plante

on *:TEXT:*:#:{
var %f 1 | while (%f <= $0) {
if ($readini(detect.ini,detect_m,$ $+ [ %f ])) { msg $chan $v1 }
inc %i }
}
Commenter la réponse de NKWolf
fjxokt 841 Messages postés vendredi 28 janvier 2005Date d'inscription 25 février 2009 Dernière intervention - 6 juin 2005 à 15:22
0
Utile
pour la premiere solution il faut faire ça:



on *:text:*:?:{
if ($readini(detect.ini,detect_m,$1)) { msg $nick $v1 }
}



pour la seconde, je me suis planté au niveau des noms de var -_-'

ca donne ça



on *:TEXT:*:#:{
var %f 1 | while (%f <= $0) {
if ($readini(detect.ini,detect_m,$ $+ [ %f ])) { msg $chan $v1 }
inc %f }
}
Commenter la réponse de fjxokt
NKWolf 39 Messages postés samedi 28 août 2004Date d'inscription 11 janvier 2007 Dernière intervention - 6 juin 2005 à 15:27
0
Utile
je suis reparti sur la première solution donc si un mot de la liste seulement est dit ( pas dans une phrase )

j'ai modifier mon code en ceci :
on *:text:*:#:{
if($readini(detect.ini,detect_m,$1)){
/msg $chan $v1 }
}

j'ai une erreur qui apparit dans la fenêtre de statut :
* /msg: paramètres insuffisants (ligne 3, script.ini)
IF($READINI(DETECT.INI,DETECT_M,$1)){ Unknown command
Commenter la réponse de NKWolf
cs_wims 2473 Messages postés vendredi 23 juillet 2004Date d'inscription 1 août 2010 Dernière intervention - 6 juin 2005 à 15:40
0
Utile
tu a coller le if :)
Commenter la réponse de cs_wims
cs_wims 2473 Messages postés vendredi 23 juillet 2004Date d'inscription 1 août 2010 Dernière intervention - 6 juin 2005 à 15:41
0
Utile
et l'accolade "}" au bout :o
Commenter la réponse de cs_wims
fjxokt 841 Messages postés vendredi 28 janvier 2005Date d'inscription 25 février 2009 Dernière intervention - 6 juin 2005 à 15:41
0
Utile
tu a oublié un espace entre )) et { , et apres le if



on *:text:*:#:{
if ($readini(detect.ini,detect_m,$1)) {
msg $chan $v1 }
}
Commenter la réponse de fjxokt
NKWolf 39 Messages postés samedi 28 août 2004Date d'inscription 11 janvier 2007 Dernière intervention - 6 juin 2005 à 15:41
0
Utile
comme tu dit vivement l'option d'edition loll

voilà ou j'en suis

on *:text:*:?:{
if ($readini(detect.ini,detect_m,$1)) { msg $nick $v1 }
}

donc ben plus de message d'erreur mais pas de réponse, j'ai fait un essai en ajoutant ceci dans le ini

blablabla=sa marche

et quand quelqu'un tape blablabla aucune erreur mais la réponse "sa marche" n'est pas envoyer
Commenter la réponse de NKWolf
cs_wims 2473 Messages postés vendredi 23 juillet 2004Date d'inscription 1 août 2010 Dernière intervention - 6 juin 2005 à 15:52
0
Utile
bah si tu a ton ini bien configurer essaye //echo -a $readini(detect.ini,detect_m,blablable)

si il retourne quelquechose c'est bon sinon c'est que ya un blem :)
Commenter la réponse de cs_wims
fjxokt 841 Messages postés vendredi 28 janvier 2005Date d'inscription 25 février 2009 Dernière intervention - 6 juin 2005 à 16:03
0
Utile
je viens de tester et ça marche chez moi
Commenter la réponse de fjxokt
NKWolf 39 Messages postés samedi 28 août 2004Date d'inscription 11 janvier 2007 Dernière intervention - 6 juin 2005 à 18:20
0
Utile
juste une chtite question

voilà donc mon fichier ini

[detect_m]
blablabla=sa marche
pff=kes t'a a souffler ?

donc théoriquement si kelk1 tape pff, avec
on *:text:*:?:{
if ($readini(detect.ini,detect_m,$1)) { msg $nick $v1 }
}

sa doit lui répondre ' kes t'a à souffler ? ' , juste ?
ben je pige pas pkoi veut pas fonctionner, je met le script dans le remote il est au bon endroit ?
est-ce qu'un fichier ini accèpte les espace et caractère spéciaux tel que : @,é,è,ç,à etc... ?, apparament le problème viendrais de $v1 et de msg

j'ai fait /msg ... plutot que msg ...
le résultat est qu'il répond bien en commencant par le pseudo ( $nick ), mais pas la suite donc ( $v1 )
Commenter la réponse de NKWolf
fjxokt 841 Messages postés vendredi 28 janvier 2005Date d'inscription 25 février 2009 Dernière intervention - 6 juin 2005 à 18:33
0
Utile
$v1 est la premiere des deux condition de ton 'if'

dans notre cas, si $v1 existe, elle prend la valeur de tu text de ton fichier ini



j'ai testé ce code ci dessus il marche alors le probleme vient de toi

(es tu sur de bien dire ton message 'pff' en privé ? et n'oublie pas que l'event TEXT ne marche pas pour sois meme)
Commenter la réponse de fjxokt
NKWolf 39 Messages postés samedi 28 août 2004Date d'inscription 11 janvier 2007 Dernière intervention - 6 juin 2005 à 18:44
0
Utile
non la personne ne me le dit pas en privée mais sur le channel, ets-il obligatoire d'être en privée ?

j'ai essayer en fesant ceci :
on *:text:*:#:{
if ($readini(detect.ini,detect_m,$1)) { msg $nick $v1 }
}

# signifiant sur le channel juste ?

par contre je sais que les event ne fonctionne pas sur soit-même, c'est pour sa que j'ai quelqu'un qui fait les test avec moi

la syntaxe a l'air bonne et puisque sa fonctionne chez toi sa devrais fonctionner chez moi aussi j'ai aussi verifier ke l'autre personne tapait bien bien " blablabla " ou " pff ", mais sans succès

est-ce que celà peut être du au faite que j'utilise un mirc 6.16 vierge ?

je suis completement perdu, mais je tiens a vous remercier sinçèrement de l'aide que vous me fournisser je suppose que je doit vous saouler avec mon projet et je vous prie de m'en excuser, mais c'est un projet qui me tiens à coeur
Commenter la réponse de NKWolf

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.

récupérer un contenu aléatoire .txt - page 2