begin process at 2008 05 17 08:23:19
1 173 922 membres
53 nouveaux aujourd'hui
13 973 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : probleme fichier.txt [ Divers / Trucs & Astuces ] (Bioxyd)

probleme fichier.txt le 09/03/2008 23:10:26

Bioxyd

Bonsoir tout le monde

 

Voila je vous explique mon problème je suis entrain de créer un bot script pour un chan de blague.

Je voudrais que le bot lise un texte aléatoire qui va être dans un fichier.txt

Jusque la j'arrive à le faire avec ce code :

on *:text:!blague_start:#:{
  timerblague 0 40 /msg $chan $!read(blague.txt, %i 1) | inc %i
}

on *:text:!blague_stop:#:{
  timerblague off
}

Mes le problème ses que je voudrais pouvoir lire 4 lignes à la fois comment je pourrais faire SVP


Re : probleme fichier.txt le 09/03/2008 23:46:06

wims
Tu fait ton compteur avec une variable globale de nom %i, c'est pas très prudent, pour lire 4 lignes, fait simplement ce que tu fait 4 fois :


on *:text:*:#:{
if ($1 == !blague_start) {
var %a 4
while (%a) {
 inc %cmpt
 .timerblague $+ %a 0 40 msg $chan $!read(blague.txt,%cmpt )
 if (%cmpt = $lines(blague.txt)) %cmpt = 0
 %a = %a - 1
 }
}
elseif ($1 == !blague_stop) .timerblague* off
}

Re : probleme fichier.txt le 09/03/2008 23:53:45

PaDa
Membre Club
"pour un chan de blague" < ça m'a beaucoup fait rire, merci :o)

Pour ton problème, ça dépend si tu dois lire 4 lignes à chaque fois ou non. Si tu dois lire 4 lignes à chaque fois, c'est facile, je t'explique comment faire en dessous (ce forum n'est pas là pour donner des codes tout cuits....). Si non, il faut que le bot sache comment commencer & s'arrêter, donc tu devras structurer ton fichier en conséquence.

Si c'est bien 4 lignes à chaque fois :
- la première blague prend les lignes 1 à 4
- la seconde les lignes 5 à 8
- etc.

Donc :
- tu gardes ton "timerblague" mais tu renvoies sur un alias : genre "timerblague 0 40 direblague"
- et donc tu te fais un alias "alias direblague { ... }"
- dans cet alias il faut :
  1- compter le nombre de lignes dans ton fichier grace à $lines et l'enregistrer dans une variable locale, par exemple %lines
  2- définir une blague au hasard qui sera lue : tu cherches à trouver un nombre aléatoire, multiple de 4, entre 1 et %lines : donc : $rand(1,%lines) te donne un de ces nombres mais sans le côté "multiple de 4", qui peut s'obtenir par "$calc(X % 4 * 4)" où X est à remplacer bien sûr
  3- ensuite, tu lis les 4 lignes en commençant à la ligne trouvée à l'étape précédente, et tu en lis 4, ça tu devrais y arriver (au besoin, /help $read, voir /help while si tu veux faire un truc propre)

Améliorations possible : utilisation de /play (à vérifier... je n'ai jamais trop utilisé)

Bon courage ! Si tu n'arrives pas à coder certaines de ces étapes, n'hésite pas à revenir, mais par pitié les gens, ne lui donnez pas un code tout cuit :o)

--
Pada

Re : probleme fichier.txt le 09/03/2008 23:54:50

PaDa
Membre Club
Ah raté.
Vilain wims !

(au passage, Bioxyd, il y a des trucs qui ne veulent rien dire dans ton code de départ, c'est un miracle si ça marche)

--
Pada

Re : probleme fichier.txt le 10/03/2008 00:00:39

wims
Je lui ai simplement fait la while, il avait le reste...
Le seul truc bizarre dans son code c'est ça : , %i 1)
Ceci reviens a prendre une phrase aléatoire dans le fichier (je pense que c'est un typo)
Il pourrait utiliser /play, mais c'est plus compliqué.


Re : probleme fichier.txt le 10/03/2008 08:43:34

PaDa
Membre Club
Y'a aussi le " | inc %i " derrière :-)
Je penche plutôt pour une boucle while copiée/collée sans avoir été comprise avant, puis des essais successifs de [Suppr.] pour corriger les erreurs.

--
Pada

Re : probleme fichier.txt le 10/03/2008 20:14:34

wims
Le | inc %i n'est pas bizarre en soi, il sert uniquement de compteur, histoire de faire les blagues une par une, de la première ligne a la $lines(blague.txt) $+ ieme :)
Bon sinon, ya des erreurs dans le/son/mon code (on parle de betement copier :( ?) :

Il voulait bel et bien l'effet "aleatoire", juste 4 fois, le code devient plus court !! :

on *:text:*:#:{
if ($1 == !blague_start) {
var %a 4
while (%a) {
.timerblague $+ %a 1 $calc(44 - %a) msg $chan $!read(blague.txt)
dec %a
}
elseif ($1 == blague_stop) .timerblague* off
}

En revanche, il est possible que deux même lignes sortent plusieurs fois durant les 4 /msg, j'ai même fais en sorte que les timers est une seconde d'écart


Classé sous : fichier, problème, probleme, txt, blague

Participer à cet échange

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS