Le fichier texte

kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008 - 8 oct. 2004 à 20:47
tidds Messages postés 246 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 9 janvier 2006 - 9 oct. 2004 à 19:54
on m'avais aidé a faire un systeme d'aide pour mon bot qui permettait quand on disait !help d'afficher un fichier texte avec un temps de 1sec entre chaque ligne du txt

on *:TEXT:*:?:{
if ($strip($1) == !help) {
var %t = $lines(cmdaide.txt)
var %i 1
.msg $nick 12,0 Commandes de $me possible 4,0(Limitée celon le grade)
while (%i <= %t) {
.msg $nick $read(cmdaide.txt,%i)
inc %i
}
.msg $nick 12,0 Pour des infos complementaires sur la syntaX tapez '!help <commande>' 4,0 (ex: '!help logfoly')
}
}

ca marche niquel mais le probleme c'est que quand je tape '!help truc' ca m'affiche l'aide moi j'aimerai que quand ya un truc apres help ($2) ca recherche dans le txt la ligne commencant par !'truc'
et que ca l'affiche et que quand ya pas cette ligne ca renvoi une erreur. d'un autre coté je voudrais que quand ya rien apres !help ca renvoi le contenu du txt specifié
et qua quand $3 est non nul ca renvoi un message d'aide de maniere a ne repondre qu'a :
!help
!help <commandes>
et c'est tout
pas de reponse pour
!help <commandes> truc...

voila je sais pas si quelqu'un a deja fais quelque chose de similaire .
laissez moi les idées si vous pouvez pas m'aider a le faire
merci d'avance
_Marikou

9 réponses

COOLMAN002 Messages postés 969 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 1 juillet 2012 1
8 oct. 2004 à 23:33
on *:TEXT:*:?:{
if ($strip($1) == !help) {
if ($2) {
;la tu mets ce que doit faire si un mot après !help est dit
}
else {
var %t = $lines(cmdaide.txt)
var %i 1
.msg $nick 12,0 Commandes de $me possible 4,0(Limitée celon le grade)
while (%i <= %t) {
.msg $nick $read(cmdaide.txt,%i)
inc %i
}
.msg $nick 12,0 Pour des infos complementaires sur la syntaX tapez '!help <commande>' 4,0 (ex: '!help logfoly')
}
}
}

/help $read (surtout le ,w ^^)
0
tidds Messages postés 246 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 9 janvier 2006
8 oct. 2004 à 23:52
Je pense que le mieux serait d'utiliser la commande /tokenize car si le mot déclencheur se trouve aussi dans la description d'une commande, $read(<fichier>,w,*mot*) pourra retourner plusieurs lignes...

Mais le top du top serait de mettre tes commandes et ses descriptions dans une hash table, et ça serait beaucoup plus simple pour check. :)
0
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
9 oct. 2004 à 00:36
c'est simpa tout ca
moi j'avais penser a
var %z = $2
$read(cmdaide.txt,w,%z)
if($readn !== 0) {
.msg $nick $read(cmdaide.txt,$readn)
}

mais bon ca marche pas j'ai essayé des syntax dans le genre

ps: je suis pas tres callé en irc alor la syntaxx je gere pas

_Marikou
0
tidds Messages postés 246 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 9 janvier 2006
9 oct. 2004 à 01:03
var %z = $2
$read(cmdaide.txt,w,%z)
if($readn !== 0) {
.msg $nick $read(cmdaide.txt,$readn)
}


Pour mettre $2 dans une var ?
Ensuite, si tu te reportes à l'aide de mIRC, tu remarqueras que l'opérateur !== n'existe pas, utilise plutôt != et décolle ton if de la parenthèse.
De plus, dans ton cas, tu compare $readn à 0. Tu peux donc optimiser cette partie en faisant : if (!$readn) qui signifie if ($readn != 0) ou bien if ($readn != $null).

Tu peux aussi utiliser l'identifieur $ifmatch (qui n'est pas primordial ni plus court, mais ça te fera connaître un nouvel identifieur)

Donc, si je reprends ton code :

$read(cmdaide.txt,w,$+(*,$2,*)
if (!$readn) { .msg $nick $read(cmdaide.txt,$ifmatch) }


En espérant t'avoir aidé... :)
0

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

Posez votre question
tidds Messages postés 246 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 9 janvier 2006
9 oct. 2004 à 01:04
Dans ma première question, il fallait comprendre "Pourquoi" et non "Pour".
0
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
9 oct. 2004 à 14:03
merci beaucoup mais j'ai pas l'impression que ca marche
on *:TEXT:*:?:{
if ($strip($1) == !help) {
$read(cmdaide.txt,w,$+(!,$2)
if (!$readn) { .msg $nick $read(cmdaide.txt,$ifmatch) } else { .msg $nick ya pas }
}
}

ca me marque
* Invalid parameters: $read (line 25, controltout.ini)

ca doit venir de la ligne commencant par $read mais je vois pas pourquoi ca bug

_Marikou
0
tidds Messages postés 246 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 9 janvier 2006
9 oct. 2004 à 14:46
Essaye plutût ça :

on *:TEXT:*:?:{
if ($strip($1) == !help) {
  if $read(test.txt,w,$+(*,$2,*)) { msg $nick $ifmatch }
  else { msg $nick ya pas }
}
}
0
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
9 oct. 2004 à 19:21
ca marche pas du tout
ca me balance ya pa s a chque fois et j'ai bien rentré le nom du fichier et fais des test avec plusieur mot au debut fin et les erreurs de mirc
ca marche pas c'est bete
j'ai relu la syntax et ya pas d efautes frappante en tout cas
ca doit etre mal ecrit c'est tou
t'orais pas une autre idée
un truc genre
%i 1
%t = $line(cmdaide.txt)
while (i<=%t) {
boucle qui verifie si la ligne debut par $+(!,$2)
inc i
}

j'ai pas trop l'habitude de la syntax c'est pour ca que je post si t'as le temps de m'expliquer ce serait simpa ^^

_Marikou
0
tidds Messages postés 246 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 9 janvier 2006
9 oct. 2004 à 19:54
Change test.txt par le nom de ton fichier, et vérifie qu'il soit bien dans le répertoire de ton mIRC.exe.
Le code n'est pas buggé, ça doit fonctionner.
Sinon, vérifie que tu n'ais pas un évènement ON TEXT plus haut dans ton fichier.
0
Rejoignez-nous