kishkaya
Messages postés365Date d'inscriptionsamedi 26 juin 2004StatutMembreDernière intervention17 avril 2008
-
8 oct. 2004 à 20:47
tidds
Messages postés246Date d'inscriptionsamedi 1 novembre 2003StatutMembreDerniè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
COOLMAN002
Messages postés969Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention 1 juillet 20121 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')
}
}
}
tidds
Messages postés246Date d'inscriptionsamedi 1 novembre 2003StatutMembreDerniè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. :)
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é... :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
kishkaya
Messages postés365Date d'inscriptionsamedi 26 juin 2004StatutMembreDernière intervention17 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
kishkaya
Messages postés365Date d'inscriptionsamedi 26 juin 2004StatutMembreDernière intervention17 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 ^^
tidds
Messages postés246Date d'inscriptionsamedi 1 novembre 2003StatutMembreDerniè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.