Récupérer un contenu aléatoire .txt

Résolu
NKWolf Messages postés 38 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 11 janvier 2007 - 6 juin 2005 à 12:10
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 - 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

23 réponses

fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
6 juin 2005 à 12:32
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...
3
NKWolf Messages postés 38 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 11 janvier 2007
6 juin 2005 à 12:42
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
0
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
6 juin 2005 à 12:44
Plusieur personne on deja presenté se probleme, cherche un peu sur le site :)
0
NKWolf Messages postés 38 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 11 janvier 2007
6 juin 2005 à 13:03
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NKWolf Messages postés 38 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 11 janvier 2007
6 juin 2005 à 13:31
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
0
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
6 juin 2005 à 13:59
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...
0
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
6 juin 2005 à 14:05
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)
0
NKWolf Messages postés 38 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 11 janvier 2007
6 juin 2005 à 15:01
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
0
NKWolf Messages postés 38 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 11 janvier 2007
6 juin 2005 à 15:07
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 }
}
0
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
6 juin 2005 à 15:22
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 }
}
0
NKWolf Messages postés 38 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 11 janvier 2007
6 juin 2005 à 15:27
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
0
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
6 juin 2005 à 15:40
tu a coller le if :)
0
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
6 juin 2005 à 15:41
et l'accolade "}" au bout :o
0
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
6 juin 2005 à 15:41
tu a oublié un espace entre )) et { , et apres le if



on *:text:*:#:{
if ($readini(detect.ini,detect_m,$1)) {
msg $chan $v1 }
}
0
NKWolf Messages postés 38 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 11 janvier 2007
6 juin 2005 à 15:41
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
0
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
6 juin 2005 à 15:52
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 :)
0
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
6 juin 2005 à 16:03
je viens de tester et ça marche chez moi
0
NKWolf Messages postés 38 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 11 janvier 2007
6 juin 2005 à 18:20
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 )
0
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
6 juin 2005 à 18:33
$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)
0
NKWolf Messages postés 38 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 11 janvier 2007
6 juin 2005 à 18:44
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
0
Rejoignez-nous