devorZ
Messages postés46Date d'inscriptiondimanche 27 juillet 2008StatutMembreDernière intervention21 février 2009
-
27 juil. 2008 à 07:21
opignion -
26 juin 2016 à 10:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
peut être sa ? mouchard: jusqua 10 nick a votre guise d en métre plus
loulouzou
Messages postés58Date d'inscriptionmercredi 21 novembre 2007StatutMembreDernière intervention 7 mars 2009 7 mars 2009 à 11:21
BOULET7612,
slt, ta question ma intéroger, vut que j'ai eu la meme idée, genre éspioner une seul persone a sa connection a un serveur ou une conversation entre2 usager.. sa pourait mieux porter son nom de espion,
++
je notrai si amélioration ..
boulet7612
Messages postés8Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention 6 octobre 2008 6 oct. 2008 à 14:06
pourquoi ne pas pousser le vice un peut plus loin.style le paramettrer pour espionner ce que dis une seule personne.ou pouvoir filtrer les discution style enlever le spam ou des chose du genre la ca ferait une remote qui peut avoir du style
djul51
Messages postés44Date d'inscriptionlundi 24 septembre 2007StatutMembreDernière intervention17 avril 2009 2 août 2008 à 06:39
Par contre j'ai beau chercher, je ne vois pas l'intérêt de se balancer les données en echo ...
Et juste pour parler du code, moi j'avais codé la possibilité d'afficher ou non les événements, ce qui permettait d'anticiper (et donc éviter) certains excess flood, genre dans les heures de 'pointe', tout les événements étaient sur OFF, et seulement le on text fonctionnait... te voila une idée pour update ton code devorz ^^ (Ne m'oblige pas à dépoussiérer le mien pour le poster ici)
Autre chose aussi en ce qui concerne les codes couleur, évite les ctrl+k 1, pense à ceux qui comme moi ont un fond noir ...ctrl+o fait l'affaire puisqu'il fait du blanc sur fond noir et du noir sur fond blanc.
Pourquoi aussi ne pas inclure des commandes inputs permettant aux autres personnes profitant du spy de pouvoir effectuer différents 'réglages' du bot en ton absence ?
Et le must, c'est une boucle qui te permet te récupérer la liste des users @ et des voices (si tu ajoutes les regular ca va ptet flooder un poil)
Tu as maintenant presque toutes les clés en main pour faire une copie du mien ;]
djul.
Ps: désolé pour les deux mails de plus UAIP, mais je pense avoir fourni deux commentaires constructifs pour le code et non avoir alimenté des débats qui ont plus leur place sur un salon irc par exemple plutôt que sur ce genre de forum. :]
djul51
Messages postés44Date d'inscriptionlundi 24 septembre 2007StatutMembreDernière intervention17 avril 2009 2 août 2008 à 06:23
Même pas besoin de 30 personnes, il suffit d'une dizaine de lignes en autant de secondes pour excess flood... peut être qu'un bon réglage de l' "antiflood" de base du mIRC peut résoudre le soucis.
En ce qui concerne l'intérêt du code, perso j'ai codé ce genre de chose aussi à l'époque ou on était une bonne dizaine ban à vue d'un salon, plutôt que de se connecter à 10 chacun derrière un proxy, un seul y va et fait partager les autres sur le salon #farai au lieu de #rastafarai (ceci n'est qu'un exemple de salon au hasard :D). D'ailleurs faudrait trouver un salon pour renvoyer ce qui se passe sur #aide vu que le taux de ban à vue y est très fort actuellement..sacré serveur Orange n'est ce pas..
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 29 juil. 2008 à 18:25
Euh personnellement ce post ne m'a rien apporté d'utile étant donné que tous mes commentaires étaient des explications, et non des questions :)
Allez hop, nous ne dirons plus rien avant la prochaine modification du code...
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 29 juil. 2008 à 18:11
ça t'a été quand meme utile l'ami ;)
mais bof je pense qu'il n'y a plus rien a dire sur ce code
a lui de changer ce qu'on a donné comme idée s'il le veu bien
:)
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 29 juil. 2008 à 18:06
Bon on s'en fout. Perso j'en ai ma claque, j'ai reçu plus de 110 mails en quelques jours à cause des 3 dernières sources.
Si vous voulez faire un débat, faites le ailleurs, ça devient lourd là... (même en décochant l'option, je reçois encore les mails).
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 29 juil. 2008 à 17:56
"lors d'un away ou quand quelqu'un se fait ban pour aider l'autre"
ça lui sert a quoi exactement dans ce cas?? explique moi stp
devorZ
Messages postés46Date d'inscriptiondimanche 27 juillet 2008StatutMembreDernière intervention21 février 20091 29 juil. 2008 à 17:36
non sa peut toujours servir lors d'un away ou quand quelqu'un se fait ban pour aider l'autre tu peut trouver plein d'utilité puis sur le site j'en est pas vu a part un truck qui date de jérusalem..
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 29 juil. 2008 à 17:24
ah donc tu poste des choses qui servait a une epoque :/ ok
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 29 juil. 2008 à 17:14
lol la guerre sur IRC... on aura tout vu.
devorZ
Messages postés46Date d'inscriptiondimanche 27 juillet 2008StatutMembreDernière intervention21 février 20091 29 juil. 2008 à 17:10
worldDMT "d'ailleur pk espionné un chan t'a cas etre present c'est encore plus simple :p " perso a une epoque sur orange on faisait la guerre entre team et le spy sert pr les autre a voir exemple un pote a toi te dit a jsuis ban jveut trop voir se que sa raconte ba voila mais dans ton contexte c'est vrai ce n'est pas vraiment utile..
bakhcha
Messages postés11Date d'inscriptiondimanche 26 février 2006StatutMembreDernière intervention26 mars 2010 29 juil. 2008 à 16:39
merci WORLDDMT j'aimerai bien lire ces conversation et porquoi pas débuté en scripting mais j'ai le niveau -5/80 j'espère que vous m'acceptez parmi vous pour voir ce que vous discuter et apprendre en meme temps et j'aimerai bien que vous me guider vers les chemins rapide et sur pour apprendre efficacement ce script
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 29 juil. 2008 à 15:45
peu etre il a essayé en echo pas en msg #
d'ailleur pk espionné un chan t'a cas etre present c'est encore plus simple :p
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 29 juil. 2008 à 15:40
Non mais si si, il excess flood...
Sur un salon de 30 personnes, les 30 personnes font un netsplit, elles rejoignent le salon en même temps, toi tu /msg 30 fois en 1 seconde.Et si tu me dis non, je prend le même exemple avec 300 personnes.C'est facile de dire d'avoir testé sur un salon de 800 personne si il n'y a pas de chose particulière.
cs_ISoKa
Messages postés435Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention17 octobre 2008 29 juil. 2008 à 15:06
ha oué ca excess flood pas ? bin c'est super alors ça m'étonne bcp mais bon ma foi pk pas. mais avec un chan de 400 personnes qui parlent ça me semble quand même étonnant.
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 29 juil. 2008 à 09:49
<hors-sujet> Ne confonds pas 'programmeur' et 'scripteur' </hors-sujet>
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 29 juil. 2008 à 09:36
cool j'ai déjà un fan c'est un bon debut les gar :D
merci bakhcha c'est gentil moi aussi je debute en scripting faut juste avoir envi d'apprendre et tu sera plus fort que moi :)
bakhcha
Messages postés11Date d'inscriptiondimanche 26 février 2006StatutMembreDernière intervention26 mars 2010 29 juil. 2008 à 04:44
je m'excuse DEVORZ je vise rien de ce que tu penses , seulement je veux remercie WORLDMT de ma façon peut etre j'ai pas bien choisi les mots mais je l'jure j'ai pas d'arrière pensées je te remercie amicalement pour ton code c'est puissant
enfin je m'excuse .................merci et je vous souhaite la réussite programmeur DEVORZ
devorZ
Messages postés46Date d'inscriptiondimanche 27 juillet 2008StatutMembreDernière intervention21 février 20091 29 juil. 2008 à 04:18
si j'ai posté cette source pour avoir des avis de ta vie on s'en fou tu crois pas ..
bakhcha
Messages postés11Date d'inscriptiondimanche 26 février 2006StatutMembreDernière intervention26 mars 2010 29 juil. 2008 à 01:12
quand les grands parlent les petits écoutent
vraiment j'ai rien à dire avec monsieur WORLDMT "tu es fort fort fort je suis débutant en vb6 mais j'aime tous les langages de programmation
devorZ
Messages postés46Date d'inscriptiondimanche 27 juillet 2008StatutMembreDernière intervention21 février 20091 28 juil. 2008 à 23:42
Hello, eu isoka j'ai testé sur des gros channel, perso j'ai pas excess flood lorsque j'ai testé sa sur quakenet la ou on excess flood vite enfin perso j'ai pas excess ..
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 28 juil. 2008 à 22:40
Oui, mais tu ne m'apprend pas le mot lol :], dailleurs avant, c'étais possible nativement en mirc, maintenant c'est seulement possible en utilisant deux alias :)
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 28 juil. 2008 à 20:14
Alors wims dans ton cas ne l'utilise pas ^^.
Je n'ai jamais dit que le return était très utilisé en mIRC et chaque fois je précise que je ne sais pas exactement comment fonctionne le mIRC mais je base sur mes expériences (plusieurs langages).
Sinon à moi de t'apprendre un petit mot de vocabulaire: une routine qui s'auto-appelle s'appelle une fonction récursive (j'ai bon, hein ?) :p
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 28 juil. 2008 à 19:02
Moi j'ai pas testé le code j'ai juste parlé de codage :p
j'ai meme pas vus l'interret de faire un espionnage sur un autre chan
c'est pas mon gou peut etre ça plais au autres mais moi perso ça m'interrese pas trop
mais si le but est de codé et faire de nouvelles truc je suis a 100% avec
voilà les commentaires qui nous ont appris plein de truc meme si ça parle pas tout droit du code en question :)
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 28 juil. 2008 à 16:12
Fatigué, mais très bonne remarque quand même.
cs_ISoKa
Messages postés435Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention17 octobre 2008 28 juil. 2008 à 16:06
oups, suis fatigué moi j'me suis pas remis du week end, devorZ pas WorldDMT
cs_ISoKa
Messages postés435Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention17 octobre 2008 28 juil. 2008 à 15:58
coucou
question con et très terre à terre, il y a que moi qui m'inquiète de l'excess flood causé par ce code ?
WorldDMT tu aurais ptete itéré à t'en occupé pck sur un salon vivant j'voi pas comment tu peux faire autrement que excess flood
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 28 juil. 2008 à 15:48
Le parser de mIRC est plus chelou que vous le croyez...
Dès qu'il voit un {, c'est pas forcément une command, derrière ça peut être considéré comme du texte brut.Il y a aussi ce genre de truc : //Echo -a Ga } echo -a ok
Y'en a des centaines des trucs comme ça : à cause du parser
tu peux pas crée d'alias commençant par + car derrière dans $+nom_dalias, le $+ est detecté comme un mot clé $+(). les $regsubex utilise les $N en interne pour pouvoir retourné les (\N) différent match, ya plein de trucs de merde, ça a déja été reporté, mais ça ne risque pas d'être modifié tout simplement parce que ça a tjs été comme ça, et que changé un truc fait tout planté apparement (voir le bug des /if sur la 6.33, c'est suite a un changement du parseur sur les if/while..)
Et j'vais ajouter ma petite remarque concernant les /if et les return :
"Et WorlDMT, non il y a une subtile différence. Si tu mets un return dès le début, la "machine" (du moins le "truc" qui lit le code, je n'ai jamais su lui donner un nom :-° ...) bref, la machine va passer directement à la routine suivante (événement suivant, dans ce cas).
Or si tu mets un "if", elle va voir qu'il retourne un échec, et va donc aller chercher un "elseif" toujours dans cette même routine, au lieu de passer directement à la routine suivante."
Avec un return, ça stop simplement la routine en cours, (on ne peut pas dire que ça passe a la routine suivante..)
Avec un "if", tu dis qu'il va allé chercher un elseif, ce qui n'est pas faux mais donc dans c'est cas là, le but n'est tout simplement pas le même, tu peux pas clamer que if (!%var) return est mieux/plus utilisé que if (%var) { reste de la fonction } parce que c'est tout simplement pas la même chose.Et enfin mon dernier point, moi actuelement je fais un mario en mirc comme pas mal de monde sait, le code qui "gère" ce que fait mario se compose d'un alias apellé une fois, qui s'auto apelle a la fin (methode conseillé..), comment je fais avec ton return, faudrait que je fasse un goto pour allé directement rapellé le timer, moi j'suis pas fan, je préfere nettement un if :p
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 28 juil. 2008 à 12:24
ok merci je demandais juste car je ne connais pas encore trop en C/C++ je debut depuis une sem :p
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 28 juil. 2008 à 12:05
Bah "if / elseif / else" c'est presque la base de tous les langages ^^. (en C, c'est "else if" et pas "elseif").
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 28 juil. 2008 à 12:02
oui je vois ce que tu dis mais en C/C++ il y a aussi des elseif??
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 28 juil. 2008 à 11:57
"if / elseif / else" c'est pour détecter par exemple un événement dans une liste. Par exemple, soit si le pseudo est "Pouet" ça dit "salut", soit si le pseudo est "Kiki" ça dit "prout", soit si le pseudo est "Tala" ça dit "cucu" sinon ca dit "rien":
if ($nick == Pouet) say salut
elseif ($nick == Kiki) say prout
elseif ($nick == Tala) say cucu
else say rien
Dans ce cas là c'est utile, mais si tu n'as qu'une seule condition à vérifier, par exemple si la variable %pouet doit être égale à "oui" pour que la routine continue sinon ça ne fait rien, autant mettre:
if (%pouet != oui) return
;code ici
Si tu fais des recherches un peu dans d'autres langages (je pense notamment au C/C++ :$) tu verras que cette méthode est très utilisée, sachant que les routine sont en général très longues (par exemple, le simple fait d'ouvrir un fichier texte dans un edit multiligne en mIRC qui se fait donc en une ou deux lignes, doit se faire en une quinzaine de lignes en C).
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 28 juil. 2008 à 09:56
bonjour
peut atre tu peux avoir raison UAIP mais il reste tjr quelque chose qui existe qu'il faut tenir compte
si "if/elseif/else" sont pas trop actif par raport a "if / return" dans ce cas ya plus d'existance pour les "elseif" alors pourquoi avoir fait?
j'explique avec un exemple et je met des points pour etre plus clair
je tape : pass jimjim
if ($1 == pass) {
. if (%status == on) {
. . if ($2 != $null) {
. . . if ($2 == jimjim) {
<comande> ;au cas que tout est ok avec les conditions passé
}
. . . else <comande> ;au cas que $2 != pass (si t'a rien tu peu mettre "return" ou tu laisse vide)
}
. . else <comande> ;au cas que $2 == $null (pareil comme avant avec "return" ou vide)
}
. else <comande> ;au cas que %status != on (pareil)
}
là je reste sur la 1ere condition
if ($1 == pass) {
if (%status == on) {
dans ce cas si c'est pas pass ça passe a la suivante qui est sur la meme colone (meme nombre de point) comme precisé avec les pointier en haut
et
if ($1 != pass) return
if (%status == on) {
dans ce cas ausi si c'est pas pass ça passe a la suivante qui est sur la meme colone comme precisé avec les pointier en haut
si non ça serait curieu pour quoi avoir fais des "elseif" si avec return on peut faire et le system sera plus rapide ???
j'ai juste donné mon avis a propos je suis nouveau dans ce domaine
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 28 juil. 2008 à 00:38
Interpréteur, peut-être.
(mais je parlais de "machine" dans le sens "ordinateur" (en familier, quoi ^^)).
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 27 juil. 2008 à 22:11
"Interpréteur" ? ("machine virtuelle" me parait un peu exagéré pour mIRC :D)
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 27 juil. 2008 à 19:00
Boah, ce n'est qu'une opinion que je me suis faite, mais j'ai peut-être tord.
Et WorlDMT, non il y a une subtile différence. Si tu mets un return dès le début, la "machine" (du moins le "truc" qui lit le code, je n'ai jamais su lui donner un nom :-° ...) bref, la machine va passer directement à la routine suivante (événement suivant, dans ce cas).
Or si tu mets un "if", elle va voir qu'il retourne un échec, et va donc aller chercher un "elseif" toujours dans cette même routine, au lieu de passer directement à la routine suivante.
Là encore ce n'est qu'une question de quelques micro-secondes, mais bon...
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 27 juil. 2008 à 17:22
@uaip: tiens je n'avais jamais réfléchi à cela, en effet c'est un bon argument qui va à l'opposé de ce que je dis. Si on perd trop en perf en effet, mieux vaut éviter de mettre des accollades inutiles sur des parties sensibles du code où l'on a besoin de perf... Enfin en mIRC ça peut faire rire mais ce n'est pas toujours le cas, ça va dépendre des langages je suppose. Il y a du pour et du contre dans tous les choix de toute façon, tout dépend de ce que l'on veut ! Merci de l'info ;-)
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 27 juil. 2008 à 17:05
UAIP
"Ensuite, ton événement TEXT.....je la vérifie dès le début et stoppe le code si elle n'est pas vérifiée."
mais comme ça ça stop au cas que %state != on
si %state == on il continu et se trouve chez %espion.salon si c'est le cas il continu si non "elsif" il verifie la suite donc il a a verifié rien qu'une seul fois chaque etape et sans halt ou return rien qu'avec if/elseif
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 27 juil. 2008 à 16:32
Et zut.. j'ai eu beau me relire, encore des erreurs qui m'ont échappé...
[1er code]
on *:text:*:%spr:{
if (%state != on) return
;ton code
}
[2eme code]
on *:text:*:%spr:{
if (%state != on) {
;ton code
}
}
(bien que je me sois trompé deux fois dessus, "%espion.echo" est a oublier dans mes codes ^^)
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 27 juil. 2008 à 16:27
Yop.
En effet, mIRC ne prend que la première commande après le if () si aucune accolade n'est ouverte (comme la plupart des langage je pense (php, javascript, Perl, c/c++, etc).
Je suis entièrement d'accord avec PaDa. Bien que je ne sois qu'amateur encore, j'ai un peu touché à tout, donc au niveau de lisibilité des codes, oublis éventuels des subtilités de tel ou tel langage, etc... je suis d'accord.
Si je peux juste faire une suggestion. Là encore je ne sais pas du tout comment "fonctionne" le mIRC, mais pour ce qui est des langages compilés, j'ai lu quelques tutos de yacc et lex (ou bison et flex sous Windows). Et pour ce qui est des langages interprétés je pense avoir un peu compris le fonctionnement des parsers. Donc (toujours d'après mon expérience personnelle, donc rien de fiable) je me suis dit que, si besoin, ne pas mettre d'accolade était mieux qu'en mettre pour rien.
Mon raisonnement: la machine, lorsque elle détecte le '{' se dit "attention, je vais recevoir une suite de commandes, je dois donc me préparer pour les recevoir toutes" et cette procédure de préparation peut prendre un peu plus de temps que si les accolades n'étaient pas là.
Bon... c'est aussi peut-être les medocs qui me montent à la tête -_-
Ensuite, ton événement TEXT, je l'aurais aussi optimisé, mais pas de la même façon que WorldDMT.Je ne sais pas si c'est la bonne méthode, mais lorsque je me retrouve avec plusieurs conditions à évaluer dont une par exemple qui revient pour chaque if (tes "%state on" et "%espion.Echo on" par exemple) je la vérifie dès le début et stoppe le code si elle n'est pas vérifiée.
[1er code]
on *:text:*:%spr:{
if ((%state != on) || (%echo.espion != on) return
;ton code
}
Je trouve cette méthode mieux que:
[2eme code]
on *:text:*:%spr:{
if ((%state != on) {
;ton code
}
}
pour la simple et bonne raison que la procédure s'arrête immédiatement en cas d'échec de la condition [1er code] au lieu d'aller chercher un elseif un peu plus bas dans le code [2eme code].
devorZ
Messages postés46Date d'inscriptiondimanche 27 juillet 2008StatutMembreDernière intervention21 février 20091 27 juil. 2008 à 15:08
pour info j'ai améliorer la sources niveau dialog ^^
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 27 juil. 2008 à 15:07
"ta phrase est pas très française" je ne suis pas français dsl j'ai pas pus bien m'exprimé :)
"on est passé par 8 ou 10 langages on finit par oublier un peu les subtilités de chacun "
on peu oublié meme si on ne connait qu'une seul langue, il y a une differance entre oublié et ignoré de ma part quand je doute je teste avant de dire du n'importe quoi et au cas que j'ai mal dis d'autre vont le voir, et il vont me corrigé, je ne suis pas seul sur net :)
comme le cas de la parentheses dans le 1er commentaire j'avais pas fais attention et tu l'a vu c'est simple
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 27 juil. 2008 à 14:55
"tu n'aura pas la possiblilité de repondre a quelque question dans ce cas on va croire que ça vien pas de chez toi " : le jour où tu feras de l'info en milieu professionnel tu te rendras compte que la question n'est pas du tout là. Quand je reprends des codes qui ont plus de 10 ans et dont l'auteur est parti à la retraite personne me demande d'expliquer le code, on s'en fout un peu, on veut juste que ça fonctionne. Ici l'optique est différente, on est sur un site pour que les gens s'entraident et apprennent, mais je ne parlais pas du contexte d'ircfr, je parlais plus en général.
"je vois ce que tu dis mais ce n'ai pas une condition d'oublié sinon ne code plus" : ta phrase est pas très française, mais quand tu auras un tout petit peu d'expérience en programmation, tu te rendras compte que quand on est passé par 8 ou 10 langages on finit par oublier un peu les subtilités de chacun :-)
Pouah les réflexions de roxxor, ça m'apprendra à essayer d'élever le débat...
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 27 juil. 2008 à 14:39
j'ai pas demandé que tu me raconte ta vie juste ce que tu dis pour les guillemets si tu va faire apres 2 ans un code que tu ne saura pas les details parceque tu l'a fais depuis et tu a oublié tu n'aura pas la possiblilité de repondre a quelque question dans ce cas on va croire que ça vien pas de chez toi
et je suis avec toi pour un code soit bien lisible et bien classé
"Autre exemple typique :
if (condition) action1 | action2"
quand il y a plus d'une commande apres une condition il va falloir les accolades pour determiné la zone de la condition
pour tes codes j'ai jetté un coup d'oeuil
je vois ce que tu dis mais ce n'ai pas une condition d'oublié sinon ne code plus
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 27 juil. 2008 à 14:03
Tiens si tu veux des exemples, je prends sur moi un peu :
- un de mes mauvais codes : http://www.ircfr.com/codes/SNIPPET-ICALC-CALCUL-COMPLEXE_25481.aspx (si demain tu trouves un bug personne ne saura corriger, c'est illisible)
- un de mes bons codes : http://www.ircfr.com/codes/GEOTOOLS-GESTION-UWORLD_46819.aspx (les aliases parlent d'eux mêmes, le cheminement est facile à suivre sur un alias, les aliases utilisateurs sont modifiables sans bouger les aliases locaux, les vars ont une convention unique, etc)
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 27 juil. 2008 à 13:57
Sans vouloir raconter ma vie, je bosse un peu dans l'informatique, et une chose primordiale à mes yeux est qu'un code soit *maintenable*, c'est à dire qu'on puisse le retoucher 3 ans après pour s'adapter à un nouveau contexte, corriger un bug, réaliser une évolution, ...
Et pour qu'un code soit maintenable, il faut qu'il soit lisible facilement, et donc que tu aies des conventions de nommage et de coding assez carrées. Tu remarqueras que les "bons" codeurs ici font toujours des sources où les aliases sont bien organisés, où les noms suivent tous la même convention, où ils ne font pas un coup sans accollades un coup avec, etc...
Là c'est pareil : ces guillemets ne gênent pas et au contraire, si tu reprends ce code dans deux ans sans avoir fait de mirc scripting entre temps, et que tu veux rajouter une virgule dans le texte, tu le fais et ca marche. Si on enlève les guillemets, et que tu rajoutes une virgule après avoir arrêter de scripter pendant deux ans, tu vas te prendre la tête une demie heure pour trouver pourquoi ça marche pas.
Autre exemple typique :
if (condition) action1 | action2
mIRC a un comportement par défaut (je serais bien incapable de dire lequel) qui va faire que action2 sera exécuté ou pas. Je ne fais plus assez de mIRC pour me souvenir si après un pipe la 2e action est conditionnée au "if" ou pas. Mais si tu mets des accollades, tout le monde est gagnant, parce que tu n'as pas à réfléchir en lisant : tu sais que le "if" va s'appliquer uniquement au bloc entre accollades et que la suite est indépendante.
My 2 cents...
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 27 juil. 2008 à 13:19
oui PADA tu parle de
alias espion if (!$dialog(spy) dialog -m spy spy
je voulais mettre
alias espion if (!$dialog(spy)) dialog -m spy spy
il peut aussi mettre
alias espion if !$dialog(spy) dialog -m spy spy
c'est pas question de faire plus court ou plus long mais tu a la possibilité de faire de nouvelles choses en scripting et l'essenciel que ça marche avant tout et puisque ça cause pas de problemes pourquoi ne pas changer?
"2-a." c'etait juste pour une nouvelle vision si non j'ai pas dis que ça marchait pas :)
sauf si tu a quelque chose que je connais pas encore tu pourra me l'eclairsir je suis qu'un debutant ;)
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 27 juil. 2008 à 13:05
@WorldDMT :
1. Tu as une parenthèse en trop
2.a. Le but en coding ce n'est pas toujours de mettre le truc le plus court hein ;-) J'ai l'impression qu'aucun mIRC-scripteur ne réfléchit aux bonnes pratiques pour pouvoir être relu...
Pour les autres critiques ça me parait bien, donc je plussoie !
@devorZ : Bonne continuation
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 27 juil. 2008 à 11:38
salut
j'ai pas testé ton code pour te faire un commentaire sur le fonctionnement mais déjà sur le codage
1- tu n'a pas precisé qu'il faut taper "/espion" tu pouvais aussi faire en menu
alias espion dialog -m spy spy | .splay %son.module
si tu ouvre 2 fois tu aurra un msg d'erreur alors il faut verifié l'ouverture
et le splay %son.modul est peut etre chez toi mais pas chez tout le monde alors ça sert a rien
donc ça devient
alias espion if (!$dialog(spy) dialog -m spy spy
2- Dialog
a. je ne sais pas si tu a utilisé un dialog editeur mais si non t'a pas besoin de mettre les "" si le text ne contien pas de virgules
exp:
title "- Espion - /Espion" tu peu faire title - Espion - /Espion
text "Salon a Espioner :", 2, 55 2 44 8 tu peu faire text Salon a Espioner :, 2, 55 2 44 8
ect...
b. le bouton "fermer" pk ok cancel? met juste ok
c. pour le check pourquoi check"" et tu ajoute un text "echo"???
met tout simplement check echo et check salon
d. evenement
on *:Dialog:spy:sclick:*:{
on *:Dialog:spy:init:*:{
...
met juste
on *:Dialog:spy:*:*:{
if (devent == sclick) {
...
}
elseif ($devent == init) {
...
}
}
3- c'est quoi ça??
if ($did(7).state == 1) { set %espion.salon ON | unset %espion.echo }
else { unset %echo.salon }
if ($did(8).state == 1) { set %Espion.echo ON | unset %espion.salon }
else { unset %espion.echo }
si c'est pour ne pas que les 2 soient coché fais en radio au lieu de check
4- on join on part tout ces event, les syntaxe de if il fau encore des parentèses
met le syntaxe comme ça regarde les parentèses
if ((%state on) && (%espion.salon on)) {
5- on *:text:*:%spr:{
if (%state == on) && .....
pourquoi tout ces "if", "halt", et repetition de "%state == on" et autre utilise if/elseif
Modifié par opignion le 26/06/2016 à 10:48
mouchard:mouchard
}
alias mouchard dialog -m sentc sentc
dialog sentc {
title "Mouchard Par DhCp"
size -1 -1 580 360
text "Veillez mettre les pseudos à espionner dans les cases ci-dessous ." ,1,10 10 450 40,style(left)
box "Please fill in your sentences: ",50,10 53 530 275,style
text "Sentence 1:",2,20 70 65 20,style(left)
combo 3,85 70 445 20,style(edit)
text "Sentence 2:",4,20 95 65 20,style(left)
combo 5,85 95 445 20,style(edit)
text "Sentence 3:",6,20 120 65 20,style(left)
combo 7,85 120 445 20,style(edit)
text "Sentence 4:",8,20 145 65 20,style(left)
combo 9,85 145 445 20,style(edit)
text "Sentence 5:",10,20 170 65 20,style(left)
combo 11,85 170 445 20,style(edit)
text "Sentence 6:",12,20 195 65 20,style(left)
combo 13,85 195 445 20,style(edit)
text "Sentence 7:",14,20 220 65 20,style(left)
combo 15,85 220 445 20,style(edit)
text "Sentence 8:",16,20 245 65 20,style(left)
combo 17,85 245 445 20,style(edit)
text "Sentence 9:",18,20 270 65 20,style(left)
combo 19,85 270 445 20,style(edit)
text "Sentence 10:",20,20 295 65 20,style(left)
combo 21,85 295 445 20,style(edit)
button "Clear all",82,310 335 70 20,style(edit)
button "Save",80,390 335 70 20,style(ok)
button "Cancel",81,470 335 70 20,style(cancel)
}
on *:dialog:sentc:init:*:{
if (%spy1 == NotSet) did -ci sentc 3 1 Tapez le pseudo concerné
if (%spy2 == NotSet) did -ci sentc 5 1 Tapez le pseudo concerné
if (%spy3 == NotSet) did -ci sentc 7 1 Tapez le pseudo concerné
if (%spy4 == NotSet) did -ci sentc 9 1 Tapez le pseudo concerné
if (%spy5 == NotSet) did -ci sentc 11 1 Tapez le pseudo concerné
if (%spy6 == NotSet) did -ci sentc 13 1 Tapez le pseudo concerné
if (%spy7 == NotSet) did -ci sentc 15 1 Tapez le pseudo concerné
if (%spy8 == NotSet) did -ci sentc 17 1 Tapez le pseudo concerné
if (%spy9 == NotSet) did -ci sentc 19 1 Tapez le pseudo concerné
if (%spy10 == NotSet) did -ci sentc 21 1 Tapez le pseudo concerné
if (%spy1 != NotSet) did -ci sentc 3 1 %spy1
if (%spy2 != NotSet) did -ci sentc 5 1 %spy2
if (%spy3 != NotSet) did -ci sentc 7 1 %spy3
if (%spy4 != NotSet) did -ci sentc 9 1 %spy4
if (%spy5 != NotSet) did -ci sentc 11 1 %spy5
if (%spy6 != NotSet) did -ci sentc 13 1 %spy6
if (%spy7 != NotSet) did -ci sentc 15 1 %spy7
if (%spy8 != NotSet) did -ci sentc 17 1 %spy8
if (%spy9 != NotSet) did -ci sentc 19 1 %spy9
if (%spy10 != NotSet) did -ci sentc 21 1 %spy10
did -t sentc 80 1
}
on *:dialog:sentc:sclick:80:{
if ($did(sentc,3).text != Tapez le pseudo concerné) set %spy1 $did(sentc,3).text
if ($did(sentc,5).text != Tapez le pseudo concerné) set %spy2 $did(sentc,5).text
if ($did(sentc,7).text != Tapez le pseudo concerné) set %spy3 $did(sentc,7).text
if ($did(sentc,9).text != Tapez le pseudo concerné) set %spy4 $did(sentc,9).text
if ($did(sentc,11).text != Tapez le pseudo concerné) set %spy5 $did(sentc,11).text
if ($did(sentc,13).text != Tapez le pseudo concerné) set %spy6 $did(sentc,13).text
if ($did(sentc,15).text != Tapez le pseudo concerné) set %spy7 $did(sentc,15).text
if ($did(sentc,17).text != Tapez le pseudo concerné) set %spy8 $did(sentc,17).text
if ($did(sentc,19).text != Tapez le pseudo concerné) set %spy9 $did(sentc,19).text
if ($did(sentc,20).text != Tapez le pseudo concerné) set %spy10 $did(sentc,21).text
if ($did(sentc,3).text == Tapez le pseudo concerné) set %spy1 NotSet
if ($did(sentc,5).text == Tapez le pseudo concerné) set %spy2 NotSet
if ($did(sentc,7).text == Tapez le pseudo concerné) set %spy3 NotSet
if ($did(sentc,9).text == Tapez le pseudo concerné) set %spy4 NotSet
if ($did(sentc,11).text == Tapez le pseudo concerné) set %spy5 NotSet
if ($did(sentc,13).text == Tapez le pseudo concerné) set %spy6 NotSet
if ($did(sentc,15).text == Tapez le pseudo concerné) set %spy7 NotSet
if ($did(sentc,17).text == Tapez le pseudo concerné) set %spy8 NotSet
if ($did(sentc,19).text == Tapez le pseudo concerné) set %spy9 NotSet
if ($did(sentc,21).text == Tapez le pseudo concerné) set %spy10 NotSet
}
on *:dialog:sentc:sclick:79:userinfo
on *:dialog:sentc:sclick:82:{
set %spy1 NotSet
set %spy2 NotSet
set %spy3 NotSet
set %spy4 NotSet
set %spy5 NotSet
set %spy6 NotSet
set %spy7 NotSet
set %spy8 NotSet
set %spy9 NotSet
set %spy10 NotSet
did -ci sentc 3 1 Tapez le pseudo concerné
did -ci sentc 5 1 Tapez le pseudo concerné
did -ci sentc 7 1 Tapez le pseudo concerné
did -ci sentc 9 1 Tapez le pseudo concerné
did -ci sentc 11 1 Tapez le pseudo concerné
did -ci sentc 13 1 Tapez le pseudo concerné
did -ci sentc 15 1 Tapez le pseudo concerné
did -ci sentc 17 1 Tapez le pseudo concerné
did -ci sentc 19 1 Tapez le pseudo concerné
did -ci sentc 21 1 Tapez le pseudo concerné
}
on *:text:*:#:{
if ( %spy1 isin $nick) || ( %spy2 isin $nick) || ( %spy3 isin $nick) || ( %spy4 isin $nick) || ( %spy5 isin $nick) || ( %spy6 isin $nick) || ( %spy7 isin $nick) || ( %spy8 isin $nick) || ( %spy9 isin $nick) || ( %spy10 isin $nick) {
if ($window(@Mouchard)) {
aline -ph @Mouchard [ $time ] 11 $nick a dit sur 8 $chan $1-
}
elseif (!$window(@Mouchard)) {
window -mk0ne @Mouchard
aline -ph 4 @Mouchard [ $time ] 11 $nick a dit sur 8 $chan $1-
}
}
}
peut être sa ? mouchard: jusqua 10 nick a votre guise d en métre plus
7 mars 2009 à 11:21
slt, ta question ma intéroger, vut que j'ai eu la meme idée, genre éspioner une seul persone a sa connection a un serveur ou une conversation entre2 usager.. sa pourait mieux porter son nom de espion,
++
je notrai si amélioration ..
6 oct. 2008 à 14:06
2 août 2008 à 06:39
Et juste pour parler du code, moi j'avais codé la possibilité d'afficher ou non les événements, ce qui permettait d'anticiper (et donc éviter) certains excess flood, genre dans les heures de 'pointe', tout les événements étaient sur OFF, et seulement le on text fonctionnait... te voila une idée pour update ton code devorz ^^ (Ne m'oblige pas à dépoussiérer le mien pour le poster ici)
Autre chose aussi en ce qui concerne les codes couleur, évite les ctrl+k 1, pense à ceux qui comme moi ont un fond noir ...ctrl+o fait l'affaire puisqu'il fait du blanc sur fond noir et du noir sur fond blanc.
Pourquoi aussi ne pas inclure des commandes inputs permettant aux autres personnes profitant du spy de pouvoir effectuer différents 'réglages' du bot en ton absence ?
Et le must, c'est une boucle qui te permet te récupérer la liste des users @ et des voices (si tu ajoutes les regular ca va ptet flooder un poil)
Tu as maintenant presque toutes les clés en main pour faire une copie du mien ;]
djul.
Ps: désolé pour les deux mails de plus UAIP, mais je pense avoir fourni deux commentaires constructifs pour le code et non avoir alimenté des débats qui ont plus leur place sur un salon irc par exemple plutôt que sur ce genre de forum. :]
2 août 2008 à 06:23
En ce qui concerne l'intérêt du code, perso j'ai codé ce genre de chose aussi à l'époque ou on était une bonne dizaine ban à vue d'un salon, plutôt que de se connecter à 10 chacun derrière un proxy, un seul y va et fait partager les autres sur le salon #farai au lieu de #rastafarai (ceci n'est qu'un exemple de salon au hasard :D). D'ailleurs faudrait trouver un salon pour renvoyer ce qui se passe sur #aide vu que le taux de ban à vue y est très fort actuellement..sacré serveur Orange n'est ce pas..
29 juil. 2008 à 18:25
Allez hop, nous ne dirons plus rien avant la prochaine modification du code...
29 juil. 2008 à 18:11
mais bof je pense qu'il n'y a plus rien a dire sur ce code
a lui de changer ce qu'on a donné comme idée s'il le veu bien
:)
29 juil. 2008 à 18:06
Si vous voulez faire un débat, faites le ailleurs, ça devient lourd là... (même en décochant l'option, je reçois encore les mails).
29 juil. 2008 à 17:56
ça lui sert a quoi exactement dans ce cas?? explique moi stp
29 juil. 2008 à 17:36
29 juil. 2008 à 17:24
29 juil. 2008 à 17:14
29 juil. 2008 à 17:10
29 juil. 2008 à 16:39
29 juil. 2008 à 15:45
d'ailleur pk espionné un chan t'a cas etre present c'est encore plus simple :p
29 juil. 2008 à 15:40
Sur un salon de 30 personnes, les 30 personnes font un netsplit, elles rejoignent le salon en même temps, toi tu /msg 30 fois en 1 seconde.Et si tu me dis non, je prend le même exemple avec 300 personnes.C'est facile de dire d'avoir testé sur un salon de 800 personne si il n'y a pas de chose particulière.
29 juil. 2008 à 15:06
29 juil. 2008 à 09:49
29 juil. 2008 à 09:36
merci bakhcha c'est gentil moi aussi je debute en scripting faut juste avoir envi d'apprendre et tu sera plus fort que moi :)
29 juil. 2008 à 04:44
enfin je m'excuse .................merci et je vous souhaite la réussite programmeur DEVORZ
29 juil. 2008 à 04:18
29 juil. 2008 à 01:12
vraiment j'ai rien à dire avec monsieur WORLDMT "tu es fort fort fort je suis débutant en vb6 mais j'aime tous les langages de programmation
28 juil. 2008 à 23:42
28 juil. 2008 à 22:40
28 juil. 2008 à 20:14
Je n'ai jamais dit que le return était très utilisé en mIRC et chaque fois je précise que je ne sais pas exactement comment fonctionne le mIRC mais je base sur mes expériences (plusieurs langages).
Sinon à moi de t'apprendre un petit mot de vocabulaire: une routine qui s'auto-appelle s'appelle une fonction récursive (j'ai bon, hein ?) :p
28 juil. 2008 à 19:02
j'ai meme pas vus l'interret de faire un espionnage sur un autre chan
c'est pas mon gou peut etre ça plais au autres mais moi perso ça m'interrese pas trop
mais si le but est de codé et faire de nouvelles truc je suis a 100% avec
voilà les commentaires qui nous ont appris plein de truc meme si ça parle pas tout droit du code en question :)
28 juil. 2008 à 16:12
28 juil. 2008 à 16:06
28 juil. 2008 à 15:58
question con et très terre à terre, il y a que moi qui m'inquiète de l'excess flood causé par ce code ?
WorldDMT tu aurais ptete itéré à t'en occupé pck sur un salon vivant j'voi pas comment tu peux faire autrement que excess flood
28 juil. 2008 à 15:48
Dès qu'il voit un {, c'est pas forcément une command, derrière ça peut être considéré comme du texte brut.Il y a aussi ce genre de truc : //Echo -a Ga } echo -a ok
Y'en a des centaines des trucs comme ça : à cause du parser
tu peux pas crée d'alias commençant par + car derrière dans $+nom_dalias, le $+ est detecté comme un mot clé $+(). les $regsubex utilise les $N en interne pour pouvoir retourné les (\N) différent match, ya plein de trucs de merde, ça a déja été reporté, mais ça ne risque pas d'être modifié tout simplement parce que ça a tjs été comme ça, et que changé un truc fait tout planté apparement (voir le bug des /if sur la 6.33, c'est suite a un changement du parseur sur les if/while..)
Et j'vais ajouter ma petite remarque concernant les /if et les return :
"Et WorlDMT, non il y a une subtile différence. Si tu mets un return dès le début, la "machine" (du moins le "truc" qui lit le code, je n'ai jamais su lui donner un nom :-° ...) bref, la machine va passer directement à la routine suivante (événement suivant, dans ce cas).
Or si tu mets un "if", elle va voir qu'il retourne un échec, et va donc aller chercher un "elseif" toujours dans cette même routine, au lieu de passer directement à la routine suivante."
Avec un return, ça stop simplement la routine en cours, (on ne peut pas dire que ça passe a la routine suivante..)
Avec un "if", tu dis qu'il va allé chercher un elseif, ce qui n'est pas faux mais donc dans c'est cas là, le but n'est tout simplement pas le même, tu peux pas clamer que if (!%var) return est mieux/plus utilisé que if (%var) { reste de la fonction } parce que c'est tout simplement pas la même chose.Et enfin mon dernier point, moi actuelement je fais un mario en mirc comme pas mal de monde sait, le code qui "gère" ce que fait mario se compose d'un alias apellé une fois, qui s'auto apelle a la fin (methode conseillé..), comment je fais avec ton return, faudrait que je fasse un goto pour allé directement rapellé le timer, moi j'suis pas fan, je préfere nettement un if :p
28 juil. 2008 à 12:24
28 juil. 2008 à 12:05
28 juil. 2008 à 12:02
28 juil. 2008 à 11:57
if ($nick == Pouet) say salut
elseif ($nick == Kiki) say prout
elseif ($nick == Tala) say cucu
else say rien
Dans ce cas là c'est utile, mais si tu n'as qu'une seule condition à vérifier, par exemple si la variable %pouet doit être égale à "oui" pour que la routine continue sinon ça ne fait rien, autant mettre:
if (%pouet != oui) return
;code ici
Si tu fais des recherches un peu dans d'autres langages (je pense notamment au C/C++ :$) tu verras que cette méthode est très utilisée, sachant que les routine sont en général très longues (par exemple, le simple fait d'ouvrir un fichier texte dans un edit multiligne en mIRC qui se fait donc en une ou deux lignes, doit se faire en une quinzaine de lignes en C).
28 juil. 2008 à 09:56
peut atre tu peux avoir raison UAIP mais il reste tjr quelque chose qui existe qu'il faut tenir compte
si "if/elseif/else" sont pas trop actif par raport a "if / return" dans ce cas ya plus d'existance pour les "elseif" alors pourquoi avoir fait?
j'explique avec un exemple et je met des points pour etre plus clair
je tape : pass jimjim
if ($1 == pass) {
. if (%status == on) {
. . if ($2 != $null) {
. . . if ($2 == jimjim) {
<comande> ;au cas que tout est ok avec les conditions passé
}
. . . else <comande> ;au cas que $2 != pass (si t'a rien tu peu mettre "return" ou tu laisse vide)
}
. . else <comande> ;au cas que $2 == $null (pareil comme avant avec "return" ou vide)
}
. else <comande> ;au cas que %status != on (pareil)
}
là je reste sur la 1ere condition
if ($1 == pass) {
if (%status == on) {
dans ce cas si c'est pas pass ça passe a la suivante qui est sur la meme colone (meme nombre de point) comme precisé avec les pointier en haut
et
if ($1 != pass) return
if (%status == on) {
dans ce cas ausi si c'est pas pass ça passe a la suivante qui est sur la meme colone comme precisé avec les pointier en haut
si non ça serait curieu pour quoi avoir fais des "elseif" si avec return on peut faire et le system sera plus rapide ???
j'ai juste donné mon avis a propos je suis nouveau dans ce domaine
28 juil. 2008 à 00:38
(mais je parlais de "machine" dans le sens "ordinateur" (en familier, quoi ^^)).
27 juil. 2008 à 22:11
27 juil. 2008 à 19:00
Et WorlDMT, non il y a une subtile différence. Si tu mets un return dès le début, la "machine" (du moins le "truc" qui lit le code, je n'ai jamais su lui donner un nom :-° ...) bref, la machine va passer directement à la routine suivante (événement suivant, dans ce cas).
Or si tu mets un "if", elle va voir qu'il retourne un échec, et va donc aller chercher un "elseif" toujours dans cette même routine, au lieu de passer directement à la routine suivante.
Là encore ce n'est qu'une question de quelques micro-secondes, mais bon...
27 juil. 2008 à 17:22
27 juil. 2008 à 17:05
"Ensuite, ton événement TEXT.....je la vérifie dès le début et stoppe le code si elle n'est pas vérifiée."
mais comme ça ça stop au cas que %state != on
si %state == on il continu et se trouve chez %espion.salon si c'est le cas il continu si non "elsif" il verifie la suite donc il a a verifié rien qu'une seul fois chaque etape et sans halt ou return rien qu'avec if/elseif
27 juil. 2008 à 16:32
[1er code]
on *:text:*:%spr:{
if (%state != on) return
;ton code
}
[2eme code]
on *:text:*:%spr:{
if (%state != on) {
;ton code
}
}
(bien que je me sois trompé deux fois dessus, "%espion.echo" est a oublier dans mes codes ^^)
27 juil. 2008 à 16:27
En effet, mIRC ne prend que la première commande après le if () si aucune accolade n'est ouverte (comme la plupart des langage je pense (php, javascript, Perl, c/c++, etc).
Je suis entièrement d'accord avec PaDa. Bien que je ne sois qu'amateur encore, j'ai un peu touché à tout, donc au niveau de lisibilité des codes, oublis éventuels des subtilités de tel ou tel langage, etc... je suis d'accord.
Si je peux juste faire une suggestion. Là encore je ne sais pas du tout comment "fonctionne" le mIRC, mais pour ce qui est des langages compilés, j'ai lu quelques tutos de yacc et lex (ou bison et flex sous Windows). Et pour ce qui est des langages interprétés je pense avoir un peu compris le fonctionnement des parsers. Donc (toujours d'après mon expérience personnelle, donc rien de fiable) je me suis dit que, si besoin, ne pas mettre d'accolade était mieux qu'en mettre pour rien.
Mon raisonnement: la machine, lorsque elle détecte le '{' se dit "attention, je vais recevoir une suite de commandes, je dois donc me préparer pour les recevoir toutes" et cette procédure de préparation peut prendre un peu plus de temps que si les accolades n'étaient pas là.
Bon... c'est aussi peut-être les medocs qui me montent à la tête -_-
Ensuite, ton événement TEXT, je l'aurais aussi optimisé, mais pas de la même façon que WorldDMT.Je ne sais pas si c'est la bonne méthode, mais lorsque je me retrouve avec plusieurs conditions à évaluer dont une par exemple qui revient pour chaque if (tes "%state on" et "%espion.Echo on" par exemple) je la vérifie dès le début et stoppe le code si elle n'est pas vérifiée.
[1er code]
on *:text:*:%spr:{
if ((%state != on) || (%echo.espion != on) return
;ton code
}
Je trouve cette méthode mieux que:
[2eme code]
on *:text:*:%spr:{
if ((%state != on) {
;ton code
}
}
pour la simple et bonne raison que la procédure s'arrête immédiatement en cas d'échec de la condition [1er code] au lieu d'aller chercher un elseif un peu plus bas dans le code [2eme code].
27 juil. 2008 à 15:08
27 juil. 2008 à 15:07
"on est passé par 8 ou 10 langages on finit par oublier un peu les subtilités de chacun "
on peu oublié meme si on ne connait qu'une seul langue, il y a une differance entre oublié et ignoré de ma part quand je doute je teste avant de dire du n'importe quoi et au cas que j'ai mal dis d'autre vont le voir, et il vont me corrigé, je ne suis pas seul sur net :)
comme le cas de la parentheses dans le 1er commentaire j'avais pas fais attention et tu l'a vu c'est simple
27 juil. 2008 à 14:55
"je vois ce que tu dis mais ce n'ai pas une condition d'oublié sinon ne code plus" : ta phrase est pas très française, mais quand tu auras un tout petit peu d'expérience en programmation, tu te rendras compte que quand on est passé par 8 ou 10 langages on finit par oublier un peu les subtilités de chacun :-)
Pouah les réflexions de roxxor, ça m'apprendra à essayer d'élever le débat...
27 juil. 2008 à 14:39
et je suis avec toi pour un code soit bien lisible et bien classé
"Autre exemple typique :
if (condition) action1 | action2"
quand il y a plus d'une commande apres une condition il va falloir les accolades pour determiné la zone de la condition
pour tes codes j'ai jetté un coup d'oeuil
je vois ce que tu dis mais ce n'ai pas une condition d'oublié sinon ne code plus
27 juil. 2008 à 14:03
- un de mes mauvais codes : http://www.ircfr.com/codes/SNIPPET-ICALC-CALCUL-COMPLEXE_25481.aspx (si demain tu trouves un bug personne ne saura corriger, c'est illisible)
- un de mes bons codes : http://www.ircfr.com/codes/GEOTOOLS-GESTION-UWORLD_46819.aspx (les aliases parlent d'eux mêmes, le cheminement est facile à suivre sur un alias, les aliases utilisateurs sont modifiables sans bouger les aliases locaux, les vars ont une convention unique, etc)
27 juil. 2008 à 13:57
Et pour qu'un code soit maintenable, il faut qu'il soit lisible facilement, et donc que tu aies des conventions de nommage et de coding assez carrées. Tu remarqueras que les "bons" codeurs ici font toujours des sources où les aliases sont bien organisés, où les noms suivent tous la même convention, où ils ne font pas un coup sans accollades un coup avec, etc...
Là c'est pareil : ces guillemets ne gênent pas et au contraire, si tu reprends ce code dans deux ans sans avoir fait de mirc scripting entre temps, et que tu veux rajouter une virgule dans le texte, tu le fais et ca marche. Si on enlève les guillemets, et que tu rajoutes une virgule après avoir arrêter de scripter pendant deux ans, tu vas te prendre la tête une demie heure pour trouver pourquoi ça marche pas.
Autre exemple typique :
if (condition) action1 | action2
mIRC a un comportement par défaut (je serais bien incapable de dire lequel) qui va faire que action2 sera exécuté ou pas. Je ne fais plus assez de mIRC pour me souvenir si après un pipe la 2e action est conditionnée au "if" ou pas. Mais si tu mets des accollades, tout le monde est gagnant, parce que tu n'as pas à réfléchir en lisant : tu sais que le "if" va s'appliquer uniquement au bloc entre accollades et que la suite est indépendante.
My 2 cents...
27 juil. 2008 à 13:19
alias espion if (!$dialog(spy) dialog -m spy spy
je voulais mettre
alias espion if (!$dialog(spy)) dialog -m spy spy
il peut aussi mettre
alias espion if !$dialog(spy) dialog -m spy spy
c'est pas question de faire plus court ou plus long mais tu a la possibilité de faire de nouvelles choses en scripting et l'essenciel que ça marche avant tout et puisque ça cause pas de problemes pourquoi ne pas changer?
"2-a." c'etait juste pour une nouvelle vision si non j'ai pas dis que ça marchait pas :)
sauf si tu a quelque chose que je connais pas encore tu pourra me l'eclairsir je suis qu'un debutant ;)
27 juil. 2008 à 13:05
1. Tu as une parenthèse en trop
2.a. Le but en coding ce n'est pas toujours de mettre le truc le plus court hein ;-) J'ai l'impression qu'aucun mIRC-scripteur ne réfléchit aux bonnes pratiques pour pouvoir être relu...
Pour les autres critiques ça me parait bien, donc je plussoie !
@devorZ : Bonne continuation
27 juil. 2008 à 11:38
j'ai pas testé ton code pour te faire un commentaire sur le fonctionnement mais déjà sur le codage
1- tu n'a pas precisé qu'il faut taper "/espion" tu pouvais aussi faire en menu
alias espion dialog -m spy spy | .splay %son.module
si tu ouvre 2 fois tu aurra un msg d'erreur alors il faut verifié l'ouverture
et le splay %son.modul est peut etre chez toi mais pas chez tout le monde alors ça sert a rien
donc ça devient
alias espion if (!$dialog(spy) dialog -m spy spy
2- Dialog
a. je ne sais pas si tu a utilisé un dialog editeur mais si non t'a pas besoin de mettre les "" si le text ne contien pas de virgules
exp:
title "- Espion - /Espion" tu peu faire title - Espion - /Espion
text "Salon a Espioner :", 2, 55 2 44 8 tu peu faire text Salon a Espioner :, 2, 55 2 44 8
ect...
b. le bouton "fermer" pk ok cancel? met juste ok
c. pour le check pourquoi check"" et tu ajoute un text "echo"???
met tout simplement check echo et check salon
d. evenement
on *:Dialog:spy:sclick:*:{
on *:Dialog:spy:init:*:{
...
met juste
on *:Dialog:spy:*:*:{
if (devent == sclick) {
...
}
elseif ($devent == init) {
...
}
}
3- c'est quoi ça??
if ($did(7).state == 1) { set %espion.salon ON | unset %espion.echo }
else { unset %echo.salon }
if ($did(8).state == 1) { set %Espion.echo ON | unset %espion.salon }
else { unset %espion.echo }
si c'est pour ne pas que les 2 soient coché fais en radio au lieu de check
4- on join on part tout ces event, les syntaxe de if il fau encore des parentèses
met le syntaxe comme ça regarde les parentèses
if ((%state on) && (%espion.salon on)) {
5- on *:text:*:%spr:{
if (%state == on) && .....
pourquoi tout ces "if", "halt", et repetition de "%state == on" et autre utilise if/elseif
met plutot
on *:text:*:%spr:{
if (%state == on) {
if (%espion.salon == on) {
if (($nick isop $chan) && ($nick !isvo $chan)) { msg %logr ... $1- }
elseif (($nick !isop $chan) && ($nick isvo $chan)) { msg %logr ... $1- }
elseif (($nick isop $chan) && ($nick isvo $chan)) { msg %logr ... $1- }
elseif ($nick !isop $chan) { msg %logr ... $1- }
}
elseif (%espion.echo == on) {
if (($nick isop $chan) && ($nick !isvo $chan)) { echo -a ... $1- }
elseif (($nick !isop $chan) && ($nick isvo $chan)) { echo -a ... $1- }
elseif (($nick isop $chan) && ($nick isvo $chan)) { echo -a ... $1- }
elseif ($nick !isop $chan) { echo -a ... $1- }
}
}
}
27 juil. 2008 à 07:21