Aide pour une remote mIRC

Lunon Messages postés 3 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 18 juillet 2008 - 14 juil. 2008 à 12:19
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 - 18 juil. 2008 à 20:38
Bonjour, je souhaite tester sur un bot une fonction très basique.
En tappant par exemple !test dans un channel, je voudrais que le bot aille chercher dans le fichier test.txt les différentes phrases qu'il trouve. C'est très simple et j'arrive à le faire. Par contre, j'aimerai qu'il les prenne dans l'ordre du fichier ex : 1, 2, 3, 4 etc et non 3, 8, 1, 6 aléatoirement comme il le fait actuellement. Quelqu'un aurait cette petite astuce ?

Merci d'avance.

10 réponses

cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
14 juil. 2008 à 12:46
J'ai une super idée : /help $read
En mettant un numéro de ligne en 2e paramètre ton remote lira ... la ligne demandée :-)

Ensuite il te suffit d'avoir un compteur que tu augmentes de 1 à chaque passage de la commande : /help /inc

Bon courage,
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
14 juil. 2008 à 19:56
et pense également à vérifier que ton compteur soit plus petit que le nombre total de lignes, que tu peux récupérer avec $lines(fichier.txt)
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
15 juil. 2008 à 22:39
salut
en tapant !test tu veux recevoir les lignes completes donc le contenu d'un fichier ??

pourquoi ne pas faire /loadbuf #chan test.txt donc:

on *:text:!test:#:loadbuf #chan test.txt

mais dans les 2 cas avec loadbuf ou $read si le fichier a trop de ligne tu risque un flood :p

tape /help /loadbuf

mais si c'est pour lire une phrase a chaque !test et pas aléatoire

essaye ça

on *:input:#: {
  if ($1 == !test) {
    var %i $lines(test.txt)
;pour reprendre la 1er ligne
    if (%i == %l) set %l 0 
    if (!%l) set %l 1
    else set %l $calc(%l + 1)
    msg # $read(test.txt,%l)
;comme ça a chaque !test tu aura une ligne
  }
;et au cas que tu veu annulé et reprendre a zero
  if ($1 == !reload) {
    if ($2 == test) {
      unset %l
    }
  }
}

pareil avec entete on *:text:*:#: { .... pour les autre utilisateurs

alors si tu tape !reload test tu revien a zero si tu retape !test c'est la premiere ligne

c'est une exemple a toi de voir ce qu'il te faut ;)
0
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
15 juil. 2008 à 23:24
Je ne crois pas que ce soit ce qu'il veut. Et si c'était le cas, "/play" est bien plus adapté que "/loadbuf" qui sert comme son nom l'indique à faire du buffering (si je ne m'abuse...)
0

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

Posez votre question
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
16 juil. 2008 à 10:54
salut

"Je ne crois pas que ce soit ce qu'il veut. Et si c'était le cas"
oui effectivement j'ai constaté ça car il dit

"C'est très simple et j'arrive à le faire. Par contre, j'aimerai qu'il les prenne dans l'ordre du fichier ex : 1, 2, 3, 4 etc et non 3, 8, 1, 6 aléatoirement comme il le fait actuellement"

donc on comprend d'ici qu'il fait un $read(test.txt) et ça lit aléatoirement alors le 2eme code qu'il cherche ce qui est plus clair j'espere qu'il repond pour qu'on sache si c'est vraiment qu'il cherche ou on a pas bien compris ce qu'il voulait
0
Lunon Messages postés 3 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 18 juillet 2008
16 juil. 2008 à 18:51
Bonjour, tout d'abord merci de vos réponses.

Ce que je n'arrive pas à faire, c'est lire dans un fichier test.txt les lignes les unes après les autres. Ce que j'ai réussi à faire :
 
/msg #test $read(test.txt, 1) | /msg #test $read(test.txt, 2) | /msg #test $read(test.txt, 3) | /msg #test $read(test.txt, 4) etc etc.

Donc ça lis les lignes les unes après les autres, sans être aléatoirement ce que je cherchais, mais dans un fichier avec 500 lignes il faut que je les tapes toutes ? J'ai cru lire plus haut qu'on pouvait faire un compteur... Quelqu'un pourrait m'expliquer ?


 


Merci beaucoup,


 


Lunon 
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
16 juil. 2008 à 19:11
explique encore plus stp

tu veu tapé une fois "!test" et ça lit tout le contenu ligne apres ligne une fois ou a chaque "!test" ça lit une ligne?
0
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
16 juil. 2008 à 19:12
Regarde par ici : http://mhc.magnetik.org/?p=cours&e=alias7

D'ailleurs, tu devrais suivre tout le cours, c'est plus intéressant que de se faire pondre du code ici :p
0
Lunon Messages postés 3 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 18 juillet 2008
18 juil. 2008 à 19:23
En fait je veux que quand je fais !test ça lis tout le contenu ligne après ligne. J'ai réussi ça en faisant le code suivant

=> /msg #test $read(test.txt, 1) | /msg #test $read(test.txt, 2) | /msg #test $read(test.txt, 3) | /msg #test $read(test.txt, 4) etc etc

Mais comme j'ai des fichiers .txt qui font 40 ou 50 lignes je voudrais savoir si avec un compteur (mais je n'ai aucune idée de comment faire) on pouvait simplifier le code.

Et une autre petite question, dans un gros fichier .txt genre 2000 ou 3000 phrases, comment peut-on faire pour faire lire sur le chan avec le code ci-dessus toutes les lignes du ficher .txt comprenant le mot "essai" par exemple ?

En esperant avoir été un peu plus clair,

Cordialement, Lunon
0
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
18 juil. 2008 à 20:38
salut

bon pour le contenu d'un grand fichier fais

on *:text:!test:#:play test.txt 1000  (si c'est pour un bot)

on *:input:#: if ($1 == !test) play test.txt 1000  (si c'est dans ta remote donc toi meme qui tape !test)

comme ça la lecture sera (1000 ms = 1 sec.) 1 sec. chaque ligne ce qui est par defau pour evité le flood (voir: /help /play)
et /play stop pour arreter de defiler

pour la 2eme question c'est pas aussi simple que ça je ne suis pas encore a ce niveau :p
0
Rejoignez-nous