MESSAGE D'ACCUEIL + RÉACTION À DES COMMANDES PERSONNALISABLE
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009
-
11 août 2007 à 18:57
KoMa94
Messages postés10Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention16 août 2007
-
16 août 2007 à 12:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
KoMa94
Messages postés10Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention16 août 2007 16 août 2007 à 12:16
j'ai trouvé pour pas etre limité dans mes édits, je devais mettre autohs dans les edit de mon dialog. donc maintenant je vais essayé de voir pour utilisé les $nick, etc dans mes dialogues.
merci pour vos réponse au dessus
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 14 août 2007 à 20:11
Ah ? treeview, listview c'est fais ^^ ?
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 14 août 2007 à 19:50
tu plaisantes ? :(
il ne reste que le popup et le multiedit, tout le reste est opérationnel !
il ne fait pas bugguer le code et tu peux le trouver en téléchargeant ma météo xD
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 14 août 2007 à 19:07
Ton GUI ? la chose pas finis, qui est trouvable nul part et qui fait bugué tes codes ? ah oui c'est bien ça :D
cs_ISoKa
Messages postés435Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention17 octobre 2008 14 août 2007 à 18:51
Pour ne pas etre limiter par le nombre de salon tu peux tout à fait faire une listebox avec les noms de chans et quand tu selectionne un nom de chan ca te met dans tes edits tes differents trucs. aprés suffit de faire des variables qui prennent en compte les noms des salons genre %cmd $+ [ salon ] $+ [ %i ] . fin c'est un exemple ca car à mon avis si tu viens à gerer bcp de variables vaut mieu mettre tout ca en htables ca te pourira moins tes var. pour rajouter des edits tu peux faire un truc du meme principe avec des listbox ou combobox pour ne pas etre limiter sur le volume.
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 14 août 2007 à 17:01
ah bah tiens, je t'ai répondu sur tes variables même sans avoir lu ton message :D
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 14 août 2007 à 16:59
- variables globales : ouvre ton remote, et va dans la section Variables. T'auras une grande liste de toutes les variables que tu utilises. La plupart d'entre elles sont temporaires et doivent donc être effacées.
Tu devrais inscrire les données les plus importantes dans un fichier .ini (/writeini et $readini)
- 5 messages : non, pas si tu de débrouilles pour en avoir une infinité (while)
- un salon : en utilisant des .ini, il aurait été très simple d'avoir autant de salons que tu voulais s'il se construit comme ceci :
#salon1 !commande=que dire ...
!site=l'url ...
etc
#salon2 ...
- Anti-Flood : variables/timers : set -u3 %anti.flood 1, + d'autres qui comportent le nick dans le nom de la variable, par exemple
- En utilisant $eval(...,2), je pense que ça devrait fonctionner
sinon utilise 'nick', 'chan' et tu fais un mega $replace
une solution possible pour ton problème : utiliser mon GUI xD
KoMa94
Messages postés10Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention16 août 2007 14 août 2007 à 16:57
oups à chaque fois j'oubli un truc, pourquoi doit on mettre des unset?
et ou sont stockés les variables que j'ai créé? car je me demandais comment mon script rétrouvait les données rentré dans mon dialog quand je fermais mon irc et que je le r'ouvrais.
merci
KoMa94
Messages postés10Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention16 août 2007 14 août 2007 à 16:52
bon ba effectivement c'était ça, mon script marche nikel maintenant :D
c'est vrai que maintenant ça fait plus propre et j'ai gagné beaucoup de ligne.
sinon comme ça m'amuse pas mal de codé un peu, je vais encore améliorer mon script et y ajouter meme d'autre fonction au fur et à mesure. Pour l'instant j'ai pas encore d'idée car je cherchais a faire juste quelques chose dont j'avais besoin mais ça viendra.
donc pour le moment je vais essayé d'amélioré en terme d'option sur ce qu'on m'a dit plus haut (Arkanis) :
- utilisation de variables globales : que voulais tu dire par la car je comprend pas trop lol ^^
- limité à 5 messages, pourquoi pas plus ? je suis d'accord mais je suis donc obligé de rajouté des édits hein ?
- limité à un seul salon : ça effectivement ça pourais être bien mais vu mon utilité et mon niveau j'ai limité à 1 salon lol.
- pas d'anti-flood : effectivement yen a pas mais la va faloir que je me fasse mal pour codé ça ^^
- Tu aurais pu faire en sorte qu'on puisse utiliser $nick ou $chan ainsi que d'autres identifieurs ($time, $date, ...) : oui ça serait très utile d'ailleur j'aurais bien aimé que ça puisse ce faire mais quand je tape ces commandes dans un édit elles sont pas reconnu et je sais pas comment faire et puis je n'y ai pas trop réfléchi encore.
ah oui une derniere chose, quand je tape dans un édit je suis limité en nombre de caractère car quand j'arrive au bout de la ligne je ne peux plus continué, j'aurais bien aimé une solution.
Sinon merci à vous 3 pour vos aides, conseils et explications.
cs_ISoKa
Messages postés435Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention17 octobre 2008 14 août 2007 à 15:14
bin fallait ptete laisser les crochets dans les variables elles ont vraiment une utilitée. Remets les et test à nouveau pour voir.
KoMa94
Messages postés10Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention16 août 2007 14 août 2007 à 13:02
ah oui je vien de remarquer quelque chose aussi, quand j'ai changé les édit et que je clique sur validé ça prend bien en compte mes changements. par contre des que je reviens deçu tous mes édits ce sont effacé et on les chiffres comme je vous en ai parlé au dessus. je comprend vraiment pas pouquoi ça fait ça :s
KoMa94
Messages postés10Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention16 août 2007 14 août 2007 à 12:47
j'ai donc regroupé les on dialog et optimisé le code avec vos instructions ce qui donne :
on *:dialog:KoMa:*:*:{
if ($devent == init) {
if (%checkaccueil) { did -c KoMa 12 | did -n KoMa 7,8,9,10,11 }
else { did -m KoMa 7,8,9,10,11 }
var %i = 1
while %i <= 5 { did -a KoMa $calc(%i + 6) %msgaccueil $+ %i | inc %i }
did -a KoMa 16 %channelcmd
var %i = 1
while %i <= 7 { did -a KoMa $calc(%i + 25) %cmd $+ %i | did -a KoMa $calc(%i + 39) %msgcmd $+ %i | inc %i }
}
elseif ($devent == sclick) {
if ( $did == 13 ) {
var %i = 1
while %i <= 5 { set %msgaccueil $+ %i $did($calc(%i + 6)) | inc %i }
set %channelcmd $did(16)
var %i = 1
while %i <= 7 { set %cmd $+ %i $did($calc(%i + 25)) | set %msgcmd $+ %i $did($calc(%i + 39)) | inc %i }
}
if ( $did == 12 ) {
if ($did(12).state) { did -n KoMa 7,8,9,10,11 | set %checkaccueil 1 | echo -a 7¤¤ 4Messages d'accueil 10activés }
else { did -m KoMa 7,8,9,10,11 | set %checkaccueil 0 | echo -a 7¤¤ 4Messages d'accueil 10déactivés }
}
}
}
mon script marche très par contre j'ai juste un truc que j'arrive pas à trouver et qui me faisais pas avant, c'est que quand je load mon script et que je l'exécute, dans tous les édits j'ai un chiffre sauf celui qui correcpond au channel car c'est le seul qui n'est pas dans une boucle while.
dans la partie accueil par exemple dans le premier edit j'ai un 1, le 2eme un 2, le 3eme un 3, etc.
dans les edit de cmd pareil j'ai un 1 dans le premier, etc.. et pareil pour les msgcmd.
je sais pas pourquoi ça fait ça car normalement le nouveau code correspond à l'ancien en mieu biensur ^^ mais renvoi la meme chose.
merci pour vos messages ;)
cs_ISoKa
Messages postés435Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention17 octobre 2008 13 août 2007 à 01:33
Ha! heu peut etre j'avou que j'ai pas testé le code que j'ai ecri donc fodrai que je verif ca. merci :)
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 13 août 2007 à 01:04
Non testé ISoKa, mais =< ne signifie pas <=, tout comme => ne signifie pas >=, il me semble que => ou =< exprime == (plus ou moins un bug certes)
cs_ISoKa
Messages postés435Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention17 octobre 2008 13 août 2007 à 00:43
Bonjour,
en parlant de while et de reduction de code si je trompe pas :
#
# on *:dialog:KoMa:sclick:*: {
# if ( $did == 13 ) {
# set %msgaccueil1 $did(7)
# set %msgaccueil2 $did(8)
# set %msgaccueil3 $did(9)
# set %msgaccueil4 $did(10)
# set %msgaccueil5 $did(11)
# set %channelcmd $did(16)
# set %cmd1 $did(26)
# set %cmd2 $did(27)
# set %cmd3 $did(28)
# set %cmd4 $did(29)
# set %cmd5 $did(30)
# set %cmd6 $did(31)
# set %cmd7 $did(32)
# set %msgcmd1 $did(40)
# set %msgcmd2 $did(41)
# set %msgcmd3 $did(42)
# set %msgcmd4 $did(43)
# set %msgcmd5 $did(44)
# set %msgcmd6 $did(45)
# set %msgcmd7 $did(46)
# }
#
# if ( $did == 12 ) {
# if ($did(12).state) { did -n KoMa 7,8,9,10,11 | set %checkaccueil 1 | echo -a 7¤¤ 4Messages d'accueil 10activés }
# else { did -m KoMa 7,8,9,10,11 | set %checkaccueil 0 | echo -a 7¤¤ 4Messages d'accueil 10déactivés }
# }
# }
#
# on *:dialog:KoMa:*:*:{
# if $devent == init {
# if (%checkaccueil) { did -c KoMa 12 | did -n KoMa 7,8,9,10,11 }
# else { did -m KoMa 7,8,9,10,11 }
# did -a KoMa 7 %msgaccueil1
# did -a KoMa 8 %msgaccueil2
# did -a KoMa 9 %msgaccueil3
# did -a KoMa 10 %msgaccueil4
# did -a KoMa 11 %msgaccueil5
# did -a KoMa 16 %channelcmd
# did -a KoMa 26 %cmd1
# did -a KoMa 27 %cmd2
# did -a KoMa 28 %cmd3
# did -a KoMa 29 %cmd4
# did -a KoMa 30 %cmd5
# did -a KoMa 31 %cmd6
# did -a KoMa 32 %cmd7
# did -a KoMa 40 %msgcmd1
# did -a KoMa 41 %msgcmd2
# did -a KoMa 42 %msgcmd3
# did -a KoMa 43 %msgcmd4
# did -a KoMa 44 %msgcmd5
# did -a KoMa 45 %msgcmd6
# did -a KoMa 46 %msgcmd7
# }
# }
pourrai devenir ca si je m'a pas gourré :) :
on *:dialog:KoMa:sclick:*: {
if ( $did == 13 ) {
set %channelcmd $did(16)
var %i 1
while (5 =< %i) { set %msgacceuil $+ %i $did($calc(%i + 6)) | inc %i }
var %i 1
while (7 =< %i) { set %cmd $+ %i $did($calc(%i + 25)) | set %msgcmd $+ %i $did($calc(%i + 39)) | inc %i }
}
if ( $did == 12 ) {
if ($did(12).state) { did -n KoMa 7,8,9,10,11 | set %checkaccueil 1 | echo -a 7¤¤ 4Messages d'accueil 10activés }
else { did -m KoMa 7,8,9,10,11 | set %checkaccueil 0 | echo -a 7¤¤ 4Messages d'accueil 10déactivés }
}
}
on *:dialog:KoMa:*:*:{
if $devent == init {
if (%checkaccueil) { did -c KoMa 12 | did -n KoMa 7,8,9,10,11 }
else { did -m KoMa 7,8,9,10,11 }
var %i 1
while (5 =< %i) { did -a koma $calc(%i + 6) [ %msgacceuil $+ [ %i ] ] | inc %i }
did -a KoMa 16 %channelcmd
var %i 1
while (7 =< %i) { did -a koma $calc(25 + %i) [ %cmd $+ [ %i ] ] | did -a koma $calc(%i + 39) [ %msgcmd $+ [ %i ] ] | inc %i }
}
}
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 12 août 2007 à 21:12
Tu ne peux pas récupérer le 1 de cette façon, il faudrait que tu sépares les deux IF si tu comptes vraiment l'avoir..
KoMa94
Messages postés10Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention16 août 2007 12 août 2007 à 20:59
effectivement avec $v1 mon script fonctionne très bien.
donc dans ton exemple :
if ((1) && (2 < 3)) echo -a $v1 - $v2
2 $v1 et 3 $v2 mais 1 = ??? lol je commence à comprendre mais ya toujours un petit mais.
sinon wims je me pencherais sur ce on dialog dans la semaine ;)
encore merci à vous 2 de vos explication clair =)
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 12 août 2007 à 20:16
Lol méaculpa même si je trouve ça bien nul :)
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 12 août 2007 à 19:30
j'ai raison pour ma boucle, c'est bien $v1 qu'il faut utiliser ^^
en fait, j'ai l'impression que $v1 et $v2 dépendent du DERNIER if vérifié.
si on a par exemple :
if ((1) && (2 < 3)) echo -a $v1 - $v2
on aura "2 - 3" étant donné que le dernier if vérifié est 2 < 3
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 12 août 2007 à 18:48
Oui tu as tout a fait raison pour le $v1, il renvois %cmd*, c'est juste une confusion d'ArKanis (oh le vilain!), puisque au début, il de vérifiait pas $1 ( ce que dis l'user ) donc ça condition n'avais qu'une comparaison, il faut mettre $v2 ici :p.
Pour les event on dialog, tu avais bien commencé pour l'init :
on *:dialog:Koma:*:*:{
if ($devent == init) { ici, c'est l'init }
;il faut continuer après avec les autres evenements :
elseif ($devent == sclick) { ici c'est sclick }
elseif ($devent == edit) { etc.. }
}
KoMa94
Messages postés10Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention16 août 2007 12 août 2007 à 14:41
a oui aussi wims tu as dit plus haut que les on dialog n'était pas regroupé, j'ai essayé de voir si je pouvais le faire mais vu que le event n'est pas le meme je comprend pas comme je peux faire.
je sais je suis nul mais pour le moment ça reste compliqué tout ça pour moi xD. merci
KoMa94
Messages postés10Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention16 août 2007 12 août 2007 à 14:13
mon /inc était bien dans le while j'avais juste mi des { } pour la notice qui serve a rien ^^, sinon j'ai modifier le checkaccueil comme vous m'avait dit maintenant que j'ai compris la signification du if (%checkaccueil) qui renvoi une valeur 1 si elle existe ou 0 si non.
sinon pour le $+ j'ai compris encore un truc qui va etre tres utile pour obtimiser le code ;)
sinon reste juste un point ou je suis un peu perdu :
if (%msgaccueil [ $+ [ %j ] ]) .notice $nick $v1
ici $v1 j'ai compris que ça renvoi mon message d'accueil pas de probleme. j'ai été voir dans l'aide pour $ifmatch et j'ai ça :
$ifmatch
Retourne le premier paramètre de la comparaison correspondante if-then-else.
donc ma question et :
if ((%cmd [ $+ [ %i ] ] == $1) && (%msgcmd [ $+ [ %i ] ])) {
dans cette ligne le premier paramêtre en question c'est %msgcmd*
apparament oui car c'est ce que renvoi $v1, mais moi par contre j'aurais plutot pensé à %cmd* en tant que premier paramêtre :s
merci encore de vos réponse
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 12 août 2007 à 11:51
tu as des problèmes de {} KoMa :
on *:join:%channelcmd:{
if (%checkaccueil = ON) {
var %j = 1
while %j <= 5 {
if (%msgaccueil [ $+ [ %j ] ]) .notice $nick $v1
inc %j
}
}
}
faut que le /inc soit à l'intérieur de la while, sinon c'est une boucle infinie
comme l'a dit Wims, si tu peux, essaye de fixer la variable %checkaccueil soit à 1, soit à 0
tu aurais donc if (%checkaccueil) au lieu de if (%checkaccueil == ON)
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 12 août 2007 à 05:43
le $+ sert a collé deux chose, a $+ b donne ab, ici les [ ] servent donc a vérifié que la variable %msgcmfN (ou N est le %i dans la boucle) existe bien $v1 = $ifmatch, cela permet de retourne la premiere partis d'une condition genre if (10 > %x) { echo -a ok }, ici $v1 = $ifmatch = 10, et $v2 = $ifmatch2 = la valeur de %x
KoMa94
Messages postés10Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention16 août 2007 12 août 2007 à 04:28
encore merci pour votre aide c'est cool.
donc j'ai été voir un peu comment on utilisais la boucle while effectivement c'est très pratique. Arkanis j'ai donc changé mon code avec le code que tu m'as donné mais je l'ai pas copier bêtement j'ai biensur essayé de comprendre.
ce qui ma permi aussi de faire une autre boucle while pour les %msgaccueil que voici :
on 1:join:%channelcmd:{
if (%checkaccueil = ON) {
var %j = 1
while %j <= 5 {
if (%msgaccueil [ $+ [ %j ] ]) {
.notice $nick $v1
}
inc %j
}
}
}
Sinon Wims pour les did je ferais ça quand j'aurais du temps car la il est tard lol mais d'abord j'aimerais un peu plus comprendre les codes que j'ai modifié car j'ai compris leur fonctionnement mais je me pose encore quelques questions.
c'est sur cette ligne que j'ai un peu de mal : if ((%cmd [ $+ [ %i ] ] == $1) && (%msgcmd [ $+ [ %i ] ])) {
si quelqu'un pouvais ma la commenter pour que je comprenne comment on la lit et surtout d'ou sors ce $+
et pour finir pour ce soir dans ( .notice $nick $v1 ) le $v1 signifie quoi? (enfin j'ai bien remarqué que ça me renvoi la valeur de %msgcmd* mais j'ai pas compris comment)
je sais pas si je me suis bien exprimé enfin bref je vous remerci d'avance pour le temps que vous me consacré.
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 12 août 2007 à 03:06
Un petit $strip ne ferai pas de mal non plus avec ce genre de code ^^
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 12 août 2007 à 02:11
Effectivement, j'ai pas pris le temps de relire
Voici la correction :
ON *:TEXT:*:%channelcmd:{
var %i = 1
while %i <= 7 {
if ((%cmd [ $+ [ %i ] ] == $1) && (%msgcmd [ $+ [ %i ] ])) {
.notice $nick $v1
break
}
inc %i
}
}
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 12 août 2007 à 00:39
Pour l'histoire du truc bouléen (normalement ArKanis fais tjs cette remarque :o) set tes variables a 1 ou 0 et utilise ensuite if (%var) ou if (!%var) (qui exprime, si elle existe, c'est on, sinon, c'est off)
Les on dialog non plus ne sont pas regroupé (/help $devent)
au lieu d'afficher les variables lors de l'init du dialog, écris le nom des variables directement dans la table du dialog entre les "" et enlève tout les did -a inutiles ainsi :)
Tu devrais aussi regardé l'aide sur les whiles pour optimiser tes codes, chaque fois que tu reproduis 3 actions (ou plus) qui sont exactement les mêmes sauf pour un ou deux parametres, tu dois/peux utiliser une while (/help /while)
ps : ArKanis, ta while est fausse, tu ne vérifie pas ce que l'user écris :/
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 11 août 2007 à 20:35
tant que tu es prêt à modifier ça va encore !
y'a des gens qui osent laisser des codes (encore pire que celui-ci !!!) tels quels
on t'aidera bien volontiers et tu pourras ainsi progresser plus rapidement :)
KoMa94
Messages postés10Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention16 août 2007 11 août 2007 à 19:28
merci pour ton message, j'était biensur conscient que mon code était pas top car j'ai commencé à codé il y 2 jours lol. je prend donc en note tes remarques et je vais essayer de faire quelques choses de plus propre quand j'aurais un peu de temps. a+
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 11 août 2007 à 18:57
aie aie, très très mal codé !
Beaucoup de défauts :
- ON TEXT non regroupés
- utilisation de variables globales
- limité à 5 messages, pourquoi pas plus ?
- limité à un seul salon
- pas d'anti-flood
- fautes de grammaire (Met => Mets)
- Tu aurais pu faire en sorte qu'on puisse utiliser $nick ou $chan ainsi que d'autres identifieurs ($time, $date, ...)
- Si on tape "", vu la valeur par défaut des variables, on va avoir des notices envoyées ... utilise unset %msgcmg? sur le ON LOAD
if ($did(12).state == 1) devient : if ($did(12).state)
vu que $did().state renvoie une valeur booléenne
Pour regrouper tes ON TEXT, tu fais :
ON *:TEXT:*:%channelcmd:{
var %i = 1
while %i <= 7 {
if (%msgcmd [ $+ [ %i ] ]) {
.notice $nick $v1
break
}
inc %i
}
}
ça évite tes 21 lignes ...
Conclusion :
Assez inutile sous cette forme car trop peu d'options.
Très mal codé et pas du tout optimisé
16 août 2007 à 12:16
merci pour vos réponse au dessus
14 août 2007 à 20:11
14 août 2007 à 19:50
il ne reste que le popup et le multiedit, tout le reste est opérationnel !
il ne fait pas bugguer le code et tu peux le trouver en téléchargeant ma météo xD
14 août 2007 à 19:07
14 août 2007 à 18:51
14 août 2007 à 17:01
14 août 2007 à 16:59
Tu devrais inscrire les données les plus importantes dans un fichier .ini (/writeini et $readini)
- 5 messages : non, pas si tu de débrouilles pour en avoir une infinité (while)
- un salon : en utilisant des .ini, il aurait été très simple d'avoir autant de salons que tu voulais s'il se construit comme ceci :
#salon1
!commande=que dire ...
!site=l'url ...
etc
#salon2
...
- Anti-Flood : variables/timers : set -u3 %anti.flood 1, + d'autres qui comportent le nick dans le nom de la variable, par exemple
- En utilisant $eval(...,2), je pense que ça devrait fonctionner
sinon utilise 'nick', 'chan' et tu fais un mega $replace
une solution possible pour ton problème : utiliser mon GUI xD
14 août 2007 à 16:57
et ou sont stockés les variables que j'ai créé? car je me demandais comment mon script rétrouvait les données rentré dans mon dialog quand je fermais mon irc et que je le r'ouvrais.
merci
14 août 2007 à 16:52
c'est vrai que maintenant ça fait plus propre et j'ai gagné beaucoup de ligne.
sinon comme ça m'amuse pas mal de codé un peu, je vais encore améliorer mon script et y ajouter meme d'autre fonction au fur et à mesure. Pour l'instant j'ai pas encore d'idée car je cherchais a faire juste quelques chose dont j'avais besoin mais ça viendra.
donc pour le moment je vais essayé d'amélioré en terme d'option sur ce qu'on m'a dit plus haut (Arkanis) :
- utilisation de variables globales : que voulais tu dire par la car je comprend pas trop lol ^^
- limité à 5 messages, pourquoi pas plus ? je suis d'accord mais je suis donc obligé de rajouté des édits hein ?
- limité à un seul salon : ça effectivement ça pourais être bien mais vu mon utilité et mon niveau j'ai limité à 1 salon lol.
- pas d'anti-flood : effectivement yen a pas mais la va faloir que je me fasse mal pour codé ça ^^
- Tu aurais pu faire en sorte qu'on puisse utiliser $nick ou $chan ainsi que d'autres identifieurs ($time, $date, ...) : oui ça serait très utile d'ailleur j'aurais bien aimé que ça puisse ce faire mais quand je tape ces commandes dans un édit elles sont pas reconnu et je sais pas comment faire et puis je n'y ai pas trop réfléchi encore.
ah oui une derniere chose, quand je tape dans un édit je suis limité en nombre de caractère car quand j'arrive au bout de la ligne je ne peux plus continué, j'aurais bien aimé une solution.
Sinon merci à vous 3 pour vos aides, conseils et explications.
14 août 2007 à 15:14
14 août 2007 à 13:02
14 août 2007 à 12:47
on *:dialog:KoMa:*:*:{
if ($devent == init) {
if (%checkaccueil) { did -c KoMa 12 | did -n KoMa 7,8,9,10,11 }
else { did -m KoMa 7,8,9,10,11 }
var %i = 1
while %i <= 5 { did -a KoMa $calc(%i + 6) %msgaccueil $+ %i | inc %i }
did -a KoMa 16 %channelcmd
var %i = 1
while %i <= 7 { did -a KoMa $calc(%i + 25) %cmd $+ %i | did -a KoMa $calc(%i + 39) %msgcmd $+ %i | inc %i }
}
elseif ($devent == sclick) {
if ( $did == 13 ) {
var %i = 1
while %i <= 5 { set %msgaccueil $+ %i $did($calc(%i + 6)) | inc %i }
set %channelcmd $did(16)
var %i = 1
while %i <= 7 { set %cmd $+ %i $did($calc(%i + 25)) | set %msgcmd $+ %i $did($calc(%i + 39)) | inc %i }
}
if ( $did == 12 ) {
if ($did(12).state) { did -n KoMa 7,8,9,10,11 | set %checkaccueil 1 | echo -a 7¤¤ 4Messages d'accueil 10activés }
else { did -m KoMa 7,8,9,10,11 | set %checkaccueil 0 | echo -a 7¤¤ 4Messages d'accueil 10déactivés }
}
}
}
mon script marche très par contre j'ai juste un truc que j'arrive pas à trouver et qui me faisais pas avant, c'est que quand je load mon script et que je l'exécute, dans tous les édits j'ai un chiffre sauf celui qui correcpond au channel car c'est le seul qui n'est pas dans une boucle while.
dans la partie accueil par exemple dans le premier edit j'ai un 1, le 2eme un 2, le 3eme un 3, etc.
dans les edit de cmd pareil j'ai un 1 dans le premier, etc.. et pareil pour les msgcmd.
je sais pas pourquoi ça fait ça car normalement le nouveau code correspond à l'ancien en mieu biensur ^^ mais renvoi la meme chose.
merci pour vos messages ;)
13 août 2007 à 01:33
13 août 2007 à 01:04
13 août 2007 à 00:43
en parlant de while et de reduction de code si je trompe pas :
#
# on *:dialog:KoMa:sclick:*: {
# if ( $did == 13 ) {
# set %msgaccueil1 $did(7)
# set %msgaccueil2 $did(8)
# set %msgaccueil3 $did(9)
# set %msgaccueil4 $did(10)
# set %msgaccueil5 $did(11)
# set %channelcmd $did(16)
# set %cmd1 $did(26)
# set %cmd2 $did(27)
# set %cmd3 $did(28)
# set %cmd4 $did(29)
# set %cmd5 $did(30)
# set %cmd6 $did(31)
# set %cmd7 $did(32)
# set %msgcmd1 $did(40)
# set %msgcmd2 $did(41)
# set %msgcmd3 $did(42)
# set %msgcmd4 $did(43)
# set %msgcmd5 $did(44)
# set %msgcmd6 $did(45)
# set %msgcmd7 $did(46)
# }
#
# if ( $did == 12 ) {
# if ($did(12).state) { did -n KoMa 7,8,9,10,11 | set %checkaccueil 1 | echo -a 7¤¤ 4Messages d'accueil 10activés }
# else { did -m KoMa 7,8,9,10,11 | set %checkaccueil 0 | echo -a 7¤¤ 4Messages d'accueil 10déactivés }
# }
# }
#
# on *:dialog:KoMa:*:*:{
# if $devent == init {
# if (%checkaccueil) { did -c KoMa 12 | did -n KoMa 7,8,9,10,11 }
# else { did -m KoMa 7,8,9,10,11 }
# did -a KoMa 7 %msgaccueil1
# did -a KoMa 8 %msgaccueil2
# did -a KoMa 9 %msgaccueil3
# did -a KoMa 10 %msgaccueil4
# did -a KoMa 11 %msgaccueil5
# did -a KoMa 16 %channelcmd
# did -a KoMa 26 %cmd1
# did -a KoMa 27 %cmd2
# did -a KoMa 28 %cmd3
# did -a KoMa 29 %cmd4
# did -a KoMa 30 %cmd5
# did -a KoMa 31 %cmd6
# did -a KoMa 32 %cmd7
# did -a KoMa 40 %msgcmd1
# did -a KoMa 41 %msgcmd2
# did -a KoMa 42 %msgcmd3
# did -a KoMa 43 %msgcmd4
# did -a KoMa 44 %msgcmd5
# did -a KoMa 45 %msgcmd6
# did -a KoMa 46 %msgcmd7
# }
# }
pourrai devenir ca si je m'a pas gourré :) :
on *:dialog:KoMa:sclick:*: {
if ( $did == 13 ) {
set %channelcmd $did(16)
var %i 1
while (5 =< %i) { set %msgacceuil $+ %i $did($calc(%i + 6)) | inc %i }
var %i 1
while (7 =< %i) { set %cmd $+ %i $did($calc(%i + 25)) | set %msgcmd $+ %i $did($calc(%i + 39)) | inc %i }
}
if ( $did == 12 ) {
if ($did(12).state) { did -n KoMa 7,8,9,10,11 | set %checkaccueil 1 | echo -a 7¤¤ 4Messages d'accueil 10activés }
else { did -m KoMa 7,8,9,10,11 | set %checkaccueil 0 | echo -a 7¤¤ 4Messages d'accueil 10déactivés }
}
}
on *:dialog:KoMa:*:*:{
if $devent == init {
if (%checkaccueil) { did -c KoMa 12 | did -n KoMa 7,8,9,10,11 }
else { did -m KoMa 7,8,9,10,11 }
var %i 1
while (5 =< %i) { did -a koma $calc(%i + 6) [ %msgacceuil $+ [ %i ] ] | inc %i }
did -a KoMa 16 %channelcmd
var %i 1
while (7 =< %i) { did -a koma $calc(25 + %i) [ %cmd $+ [ %i ] ] | did -a koma $calc(%i + 39) [ %msgcmd $+ [ %i ] ] | inc %i }
}
}
12 août 2007 à 21:12
12 août 2007 à 20:59
donc dans ton exemple :
if ((1) && (2 < 3)) echo -a $v1 - $v2
2 $v1 et 3 $v2 mais 1 = ??? lol je commence à comprendre mais ya toujours un petit mais.
sinon wims je me pencherais sur ce on dialog dans la semaine ;)
encore merci à vous 2 de vos explication clair =)
12 août 2007 à 20:16
12 août 2007 à 19:30
en fait, j'ai l'impression que $v1 et $v2 dépendent du DERNIER if vérifié.
si on a par exemple :
if ((1) && (2 < 3)) echo -a $v1 - $v2
on aura "2 - 3" étant donné que le dernier if vérifié est 2 < 3
12 août 2007 à 18:48
Pour les event on dialog, tu avais bien commencé pour l'init :
on *:dialog:Koma:*:*:{
if ($devent == init) { ici, c'est l'init }
;il faut continuer après avec les autres evenements :
elseif ($devent == sclick) { ici c'est sclick }
elseif ($devent == edit) { etc.. }
}
12 août 2007 à 14:41
je sais je suis nul mais pour le moment ça reste compliqué tout ça pour moi xD. merci
12 août 2007 à 14:13
sinon pour le $+ j'ai compris encore un truc qui va etre tres utile pour obtimiser le code ;)
sinon reste juste un point ou je suis un peu perdu :
if (%msgaccueil [ $+ [ %j ] ]) .notice $nick $v1
ici $v1 j'ai compris que ça renvoi mon message d'accueil pas de probleme. j'ai été voir dans l'aide pour $ifmatch et j'ai ça :
$ifmatch
Retourne le premier paramètre de la comparaison correspondante if-then-else.
donc ma question et :
if ((%cmd [ $+ [ %i ] ] == $1) && (%msgcmd [ $+ [ %i ] ])) {
dans cette ligne le premier paramêtre en question c'est %msgcmd*
apparament oui car c'est ce que renvoi $v1, mais moi par contre j'aurais plutot pensé à %cmd* en tant que premier paramêtre :s
merci encore de vos réponse
12 août 2007 à 11:51
on *:join:%channelcmd:{
if (%checkaccueil = ON) {
var %j = 1
while %j <= 5 {
if (%msgaccueil [ $+ [ %j ] ]) .notice $nick $v1
inc %j
}
}
}
faut que le /inc soit à l'intérieur de la while, sinon c'est une boucle infinie
comme l'a dit Wims, si tu peux, essaye de fixer la variable %checkaccueil soit à 1, soit à 0
tu aurais donc if (%checkaccueil) au lieu de if (%checkaccueil == ON)
12 août 2007 à 05:43
if ((%cmd [ $+ [ %i ] ] == $1) && (%msgcmd [ $+ [ %i ] ])) {
le $+ sert a collé deux chose, a $+ b donne ab, ici les [ ] servent donc a vérifié que la variable %msgcmfN (ou N est le %i dans la boucle) existe bien $v1 = $ifmatch, cela permet de retourne la premiere partis d'une condition genre if (10 > %x) { echo -a ok }, ici $v1 = $ifmatch = 10, et $v2 = $ifmatch2 = la valeur de %x
12 août 2007 à 04:28
donc j'ai été voir un peu comment on utilisais la boucle while effectivement c'est très pratique. Arkanis j'ai donc changé mon code avec le code que tu m'as donné mais je l'ai pas copier bêtement j'ai biensur essayé de comprendre.
ce qui ma permi aussi de faire une autre boucle while pour les %msgaccueil que voici :
on 1:join:%channelcmd:{
if (%checkaccueil = ON) {
var %j = 1
while %j <= 5 {
if (%msgaccueil [ $+ [ %j ] ]) {
.notice $nick $v1
}
inc %j
}
}
}
Sinon Wims pour les did je ferais ça quand j'aurais du temps car la il est tard lol mais d'abord j'aimerais un peu plus comprendre les codes que j'ai modifié car j'ai compris leur fonctionnement mais je me pose encore quelques questions.
c'est sur cette ligne que j'ai un peu de mal : if ((%cmd [ $+ [ %i ] ] == $1) && (%msgcmd [ $+ [ %i ] ])) {
si quelqu'un pouvais ma la commenter pour que je comprenne comment on la lit et surtout d'ou sors ce $+
et pour finir pour ce soir dans ( .notice $nick $v1 ) le $v1 signifie quoi? (enfin j'ai bien remarqué que ça me renvoi la valeur de %msgcmd* mais j'ai pas compris comment)
je sais pas si je me suis bien exprimé enfin bref je vous remerci d'avance pour le temps que vous me consacré.
12 août 2007 à 03:06
12 août 2007 à 02:11
Voici la correction :
ON *:TEXT:*:%channelcmd:{
var %i = 1
while %i <= 7 {
if ((%cmd [ $+ [ %i ] ] == $1) && (%msgcmd [ $+ [ %i ] ])) {
.notice $nick $v1
break
}
inc %i
}
}
12 août 2007 à 00:39
Les on dialog non plus ne sont pas regroupé (/help $devent)
au lieu d'afficher les variables lors de l'init du dialog, écris le nom des variables directement dans la table du dialog entre les "" et enlève tout les did -a inutiles ainsi :)
Tu devrais aussi regardé l'aide sur les whiles pour optimiser tes codes, chaque fois que tu reproduis 3 actions (ou plus) qui sont exactement les mêmes sauf pour un ou deux parametres, tu dois/peux utiliser une while (/help /while)
ps : ArKanis, ta while est fausse, tu ne vérifie pas ce que l'user écris :/
11 août 2007 à 20:35
y'a des gens qui osent laisser des codes (encore pire que celui-ci !!!) tels quels
on t'aidera bien volontiers et tu pourras ainsi progresser plus rapidement :)
11 août 2007 à 19:28
11 août 2007 à 18:57
Beaucoup de défauts :
- ON TEXT non regroupés
- utilisation de variables globales
- limité à 5 messages, pourquoi pas plus ?
- limité à un seul salon
- pas d'anti-flood
- fautes de grammaire (Met => Mets)
- Tu aurais pu faire en sorte qu'on puisse utiliser $nick ou $chan ainsi que d'autres identifieurs ($time, $date, ...)
- Si on tape "", vu la valeur par défaut des variables, on va avoir des notices envoyées ... utilise unset %msgcmg? sur le ON LOAD
if ($did(12).state == 1) devient : if ($did(12).state)
vu que $did().state renvoie une valeur booléenne
Pour regrouper tes ON TEXT, tu fais :
ON *:TEXT:*:%channelcmd:{
var %i = 1
while %i <= 7 {
if (%msgcmd [ $+ [ %i ] ]) {
.notice $nick $v1
break
}
inc %i
}
}
ça évite tes 21 lignes ...
Conclusion :
Assez inutile sous cette forme car trop peu d'options.
Très mal codé et pas du tout optimisé