WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2012
-
7 févr. 2009 à 22:11
donkishock
Messages postés26Date d'inscriptionlundi 11 septembre 2006StatutMembreDernière intervention 5 mars 2009
-
6 mars 2009 à 13:46
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
donkishock
Messages postés26Date d'inscriptionlundi 11 septembre 2006StatutMembreDernière intervention 5 mars 2009 6 mars 2009 à 13:46
Comment ça va psycho? c'est mimi ton tit player, j'aime bien je vais te piquer les fonction pour integrer à mon design ^^.On se croise sur le serveur :)
Cela fait plaisir de te voir ici.
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 18 févr. 2009 à 16:41
lol pas du tout pourquoi me faché :D
en plus contre qui? contre Vin :p je me fache jamais contre lui :)
pour le tokenize ça evite trop de calcules je pense que ça sera plus rapide
mes commentaires sont des idées a toi de voir ce qu'il te va :)
@+
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 16 févr. 2009 à 23:25
Lol.
Je rectifie simplement sur le fait que je dois être l'un des plus rigoureux de ce site (relis donc mon premier com) ^^, ce n'est pas de la prétention, c'est au bien au contraire chiant pour les autres. Mais la rigeur s'applique à l'optimisation de calculs, l'amélioration des performances d'un algorithme, mais pas (dans la plupart des cas) à la sémantique du code. Par exemple :
if (%pouet == 1) {
echo -a ok
}
else {
echo -a pas ok
}
n'est pas moins rigoureux que
echo -a $iif(%pouet,ok,pas ok)
C'est simplement la syntaxe qui est optimisée dans le 2ème cas. Donc aucune notion de rigueur là-dedans.
On avait déjà eu de bons débats sur ce site pour évaluer la rapidité d'interprétation du parser mIRC quand on mettait trop d'accolades inutiles, ou bien les différences entre les notions $null, $false, $true, 0 et 1, etc...
Ensuite, je n'étais pas du tout faché ^^ et je pense que WorldDMT non plus (j'espère, du moins ^^).
Enfin, je voulais également revenir sur $scriptdir et $mircdir. Moi aussi ayant été jusqu'à maintenant sur la version 6.17, e ne comprenais pas pourquoi WorldDMT, tu t'obstinais à préciser ceci... et bien j'ai vu par moi même en passant sous la 6.35 ^^. Et tu avais raison. Les répertoires d'installation sont partagés en deux, c'est assez lourd (tout ça à cause de Vista...). Bref, sur ce coup là tu as eu raison d'insister (sur d'autres sources aussi).
PsychoFlex
Messages postés9Date d'inscriptionsamedi 9 décembre 2000StatutMembreDernière intervention16 février 2009 16 févr. 2009 à 23:04
alors que dire, euh deja vous engueuler pas c'est pas necessaire :)
et oui j'ai ma facon de coder, qui est differente des facons des autres, la j'apprends pleins de choses que je connais pas, je test, j'observe, voit, pis déduit ce qui me correspond ou non !
Sinon j'ai mis %a pour une simple raison, c'est que si je met %b cela me retourne l'info mais erroné.
Sinon le fichier.ini n'est pas dans plugins, mais dans Radio-World-One, enfin bref, pour le tokenize, j'y avais pensé mais pas mis en pratique, par contre c'est interressant de voir comment chacun peut voir le code et comment il l'ecrirait, ca m'apprends beaucoup, merci encore a vous 2 :)
le -ie, c'est simplement que si le dialog est reduit il s'agrandit ( le but c'est un script que je monte pour des gens, qui sont des newbies, donc pas faire trop complexe, ni compliqué, et j'avoue mon script perso est bien different de celui que je monte ) la plupart des gens crée des scripts mais souvent sans penser au tous debutants, c'est cela que je cherche a faire, un script ou l'on peut personnaliser, et en meme temps, qui soit simple, rien de compliqué !
c'est pas un script Hightec, mais cela me permet de decouvrir beaucoup de chose sur le scripting, et les commandes existantes.
Et de permettre a des gens sans aucunes experiences de mirc ou du scripting, de se divertir et de se crée leur script.
Je le fais par plaisir d'apprendre et de partager.
Je vois dans la personnalité de WorldDMT, beaucoup de perfectionnisme et de rigueur, dans Uaip, beaucoup d'humanité, et de liberté.
Je suis un melange des deux, je veux un code propre, et humain ( mais s'il n'est pas parfait, je lui demande de bien fonctionner )
Sinon pour information, le mirc que j'utilise c'est un vieux mirc 6.17 en francais ( perso je tourne sous 6.21 ) par commodité de compatibilité, mais cela m'instruit beaucoup si je dois un jour passer a un mirc 6.31 ou plus. ($scriptdir)
Merci a vous 2 en tout cas, car j'apprends pleins de choses
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 16 févr. 2009 à 10:54
j'ai as dis que tout son des erreurs, j'ai bien dis quelque fautes
et ne pas utilisé le $scriptdir "est une faute" car a partir de la version 6.3 le $mircdir est different des autres versions inferieur et quand je vois par exp
".writeini Radio-World-One\Radio-World-One.ini Setup $1-" celà veux dire que le chemin est $mircdir dans la version 6.21 j'explique encore plus le dossier "Radio-World-One" est dans le dossier du mIRC (a coté de l'icone mirc.exe) mais dans la version 6.32 ça passe pas pareil.
et en plus le fichier.ini est dans un dossier qui s'appel "plugins" donc ça j'appel ça une faute
pour le reste j'ai presisé en disant "si tu veux" donc juste une proposition :)
d'apres qu'il a demandé des idées bien avant
@+
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 15 févr. 2009 à 16:05
Salut,
Tout ce que tu dis WorldDMT, ce ne sont pas des "erreurs", c'est simplement sa façon de scripter qui est différente de la tienne. Je suis d'accord que corriger un %b au lieu d'un %a c'est bien (cela peut débugguer entièrement un script) mais tout le reste de ton commentaire, ce ne sont que des subtilités. Du style corriger sa façon d'appeler le dialog, au final tu n'économises qu'un mot. Le but n'est pas de refaire entièrement les codes postés ici, mais simplement corriger les absurdités éventuelles. Je dis ça parce-que sur les dernières sources, tu te débrouilles toujours pour écrire des commentaires de plus en plus longs ^^ (je dis ça sans méchanceté).
Mais, comme tu le dis toi même, il y a plusieurs façons de coder une même chose, alors laissons la liberté aux scripteurs de choisir celles qu'ils préfèrent :)
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 15 févr. 2009 à 11:45
de rien mais je suis un debutant moi aussi :)
pour le zip je ne suis pas sur place en ce moment dans j'utilise pas mon pc et j'ai pas de mIRC ici :/
mais bon a propos de ton code j'ai vu quelques fautes
1- attetion dans l'alias WorldOne.current
var %d = $wildtok(%a,#*,1,32)
c'est var %d = $wildtok(%b,#*,1,32)
met la variable %b au lieu de %a
2- pour les alias suivantes wrad rrad Radioworld t'a pas utilisé de $scriptdir
dans ce cas ça va pas marché car le fichier Radio-World-One.ini est dans le dossier "plugins" donc il faut que ça deviennent comme ça si non tu aura 2 fichier.ini
alias -l wrad writeini $scriptdirplugins\Radio-World-One.ini Setup $1-
alias -l rrad return $readini($scriptdirplugins\Radio-World-One.ini,Setup,$1)
alias -l Radioworld return $readini($scriptdirplugins\Radio-World-One.ini,WorldOne,$1)
3- pour $gettok(%WorldOne,1,32) > 0 tu a plusieur tu peux si tu veux faire un tokenize 32 %WorldOne
comme ça les condition de la ligne 71 jusqu'a la ligne 76 deviennent comme ça
tokenize 32 %WorldOne
if ($1 > 0) did -c $dname 11 $1
else did -c $dname 11 1
if ($2 > 0) var %a $WorldOne.Amp(misc,setvolume $2)
if ($3 == 0) did -u $dname 6
did -ra $dname 6 $iif($3 == 1,<,>)
dialog -sb $dname -1 -1 157 $iif($3 == 1,80,60)
c'est meme plus rapide ça evite de faire les calcule a chaque ligne ^^
tu sais si tu es dans l'evenement du dialog t'es pas obligé de mettre le nom du dialog
tu sera obligé si tu utilise une alias
exp
$did(Radio,11).sel si ce n'est pas dans une alias tu peu faire $did(11).sel
donc pour "sclick $did == 6" tu peu faire si tu veux comme ça
if ($did == 6) {
set %WorldOne $did(11).sel $mid($dll($WorldOne.Amp,Misc,getvolume),4) $did(6).state
tokenize 32 %WorldOne
did -ra $dname 6 $iif($3 == 1 ,<,>)
dialog -sb Radio -1 -1 157 $iif($3 == 1,80,60)
}
4- pour $hget(WorldOne)
if ($hget(WorldOne) != WorldOne) hmake WorldOne 100
devient tout simplement
if (!$hget(WorldOne)) hmake WorldOne
5- pour l'alias Radioworldone pourquoi le "-ie"? utilise "-v"
alias Radioworldone dialog $iif($dialog(Radio),-ie Radio Radio,-omd Radio Radio)
devient si tu veux
alias Radioworldone dialog $iif($dialog(Radio),-v,-omd Radio) Radio
6- modifie ton unload
il faut netoyer tout ce que ton cript a es a faire comme modification
exp unset pour tes variables global ect...
@+
PsychoFlex
Messages postés9Date d'inscriptionsamedi 9 décembre 2000StatutMembreDernière intervention16 février 2009 15 févr. 2009 à 00:50
Voila WorldDMT et UAIP, j'ai remis tout propre a jour, selon vos conseils et propositions,
je constate plusieurs petites choses, c'est plus rapide et plus simple, et cette fois j'ai pensé au ZIP loll,
Encore Merci a vous deux, vous etes des connaisseurs ( pas des debutants comme moi ) merci car cela
me permet de mieux decouvrir le language mirc et ses astuces.
PS:WorldDMT, la tu peux prendre le Zip, et me dire s'il est propre ?
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 14 févr. 2009 à 10:49
j'ai pas trop regardé le code mais modifi dejà et le reste on verra plus clair
comme ça je verrai pour l'alias WorldOne.current
pour l'alias WorldOne.time si tu veux qu'apres 60 min l'heur safiche tu modifi juste la var %b
var %b $+($t.f(%h),:,$t.f(%m),:,$t.f(%s))
devient
var %b $+($iif(%h,$+($t.f(%h),:)),$t.f(%m),:,$t.f(%s))
bref si tu veux :)
@+
PsychoFlex
Messages postés9Date d'inscriptionsamedi 9 décembre 2000StatutMembreDernière intervention16 février 2009 14 févr. 2009 à 00:18
Alors j'ai bien lu vos suggestions et je suis en train de mettre à jour, la je cherche à comprendre ce qui change, pour l'alias WorldOne.Aff(c'est ok, effectivement il est plus clair et logique), pour le $did 6 également, je savais pas que l'on pouvait utiliser un check ainsi, merci car cela met trés utile pour apprendre, à mieux connaitre les fonctions des dialogs.
Je connaissais déjà le $iif mais je ne savais pas que l'on pouvait l'utiliser sur une ouverture de dialog, encore merci aussi pour cela.
Pour le $scriptdir, j'avais déjà modifié certain mais comme je maitrise pas encore bien cet alias, j'ai pas tout modifié.
Pour le $dname, euh la j'avoue c'est un reflex, chez moi :), mais c'est vrai que dans les alias c'est mieux de mettre le nom du dialog (erreur de ma part), merci de la souligner.
Pour l'alias WorldOne.current , la j'avoue je nage un peu, mais je vais chercher et apprendre, je comprends pas tout, mais je vais trouver.
Une fois que j'aurai bien capté, je mettrais tout à jour, en effet, j'ai modifié le post et pas le zip (encore erreur de ma part), heureusement que vous etes la ( cela ne ma même pas traversé l'esprit ).
Je vous remercie encore beaucoup car je decouvre beaucoup de chose dans vos partages.
PS:J'espere que vous serez également la pour m'aider, sur une autre remote, c'est un lecteur mp3( je sais y'en a pleins, mais celui-la est un peu different) je le posterai quand il sera pret à mon gout, je travaille encore dessus, mais prochainement je pense le poster.
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 12 févr. 2009 à 16:37
bjr
j'ai telecharger le dossier pour mieu voir
bon dejà tu a 2 accolades qui manquent a la fin des 2 dernieres lignes
et tu attention il faut aussi changer le zip puisque les modifications que tu a faites n'ont pas été changé dans le zip
bref t'a pas besoin des $shortfn et ne remplace pas par $qt sinon pour la dll ça passe pas avec met juste $scriptdir a la place de $mircdir
tu dois utilisé $scriptdir puisque a partir de la version 6.3 je pense que le script aura un dossier qui n'est pas dans le dossier là ou se trouve l'icone mIRC donc $mircdir ne conduit plus là ou on souhaite c'est pourquoi il faut utilisé $scriptdir
var %b $remove(%a,$chr(40),$chr(41),$chr(93),$chr(91),$chr(123),$chr(125))
var %b $numtok(%a,40)
mais déjà tu supprime le "$chr(40)" cmt tu fais encore un $numtok avec separateur 40!!! donc ça returne 1.
var %d = $remove($gettok(%a,$calc($WorldOne.testtitreradio(%a) + 1) $+ -,40),$chr(41),$chr(40))
devient si %b est tjr refaite avec $numtok
var %d = $left($wildtok(%a,#*,1,40),-1)
si non tu enleve la variable %b = $numtok(...)
comme ça %d devient tout simplement
var %d = $wildtok(%b,#*,1,32)
attention dans les alias je vois $dname il faut plutot mettre le nom meme Radio par exp
pour l'alias WorldOne.time il faut ajouté les heurs voilà ce que tu peux aussi faire
alias -l t.f return $iif($len($1) == 1,$+(0,$1),$1)
alias -l WorldOne.time {
var %a $gettok($dll($WorldOne.Amp,CurrentMusic,position),2,32),%x $int($calc(%a / 1000 / 60))
var %h $int($calc(%x / 60)),%m $int($calc(%x / 60 * 60 - %h * 60)),%s $int($calc(%a / 1000 - 60 * %x))
var %b $+($t.f(%h),:,$t.f(%m),:,$t.f(%s))
if ($did(Radio,10) != %b) did -ra Radio 10 %b
}
comme ça le format sera --:--:--
pour l'alias Radioworldone
c'est dejà ouvert en mode -od donc sur le bureau et au dessus donc je ne vois pas pourquoi quelqun ferra l'erreur de l'ouvrir 2 fois
moi je fais souvent comme ça
alias Radioworldone dialog $iif($dialog(Radio),-v,-omd radio) radio
a toi de voir en tout cas :)
pour l'alias WorldOne.taille
pourquoi ne pas faire un check push (id = 6)
tu remplace le boutton par
check ">", 6, 138 13 10 10, push
et dans l'evenement du dialog init
a la place de
if ($rrad(Taille) == on) { dialog -sb Radio -1 -1 157 80 | did -ra Radio 6 < }
elseif ($rrad(Taille) == off) { dialog -sb Radio -1 -1 157 60 | did -ra Radio 6 > }
tu mets
if (%WorldOne.taille) did -c $dname 6
did -ra $dname 6 $iif(%WorldOne.taille,>,<)
dialog -sb Radio -1 -1 157 $iif(%WorldOne.taille,80,60)
et dans sclick
if ($did == 6) {
set %WorldOne.taille $did(6).state
did -ra $dname 6 $iif(%WorldOne.taille,>,<)
dialog -sb Radio -1 -1 157 $iif(%WorldOne.taille,80,60)
}
là tu n'a plus besoin de l'alias WorldOne.taille
pour l'alias WorldOne.Aff
je prefere faire
alias -l WorldOne.Aff {
var %y $chan(0)
while (%y) {
if (($chan(%y) isin $1) || ($1 == ALL)) describe $chan(%y) $2-
dec %y
}
}
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 11 févr. 2009 à 23:24
attention a l'utilisation de $mircdir utilise plutot $scriptdir
donc l'alias img est fausse si le script est loadé hors du dossier mIRC on est fichu là et t'a pas besoin dutilisé $shortfn utilise $qt puisque si tu a un dossier qui a un nom qui contien une espace on est fichu
($qt met les guillemets "")
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 11 févr. 2009 à 21:05
j'ajoute encore
if ($hget(WorldOne) != WorldOne) { hmake WorldOne 100 }
devient
if (!$hget(WorldOne)) hmake WorldOne
et pour
var %a $dll($WorldOne.Amp,Play, $+ %b $+ )
t'es pas obligé de mettre des "$+" autour d'une variable non?
var %a $dll($WorldOne.Amp,Play,%b)
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 11 févr. 2009 à 20:31
Je tiens juste à souligner que les accolades autour d'une seule instruction ne ralentissent l'interprétation du code que dans certaines cas.
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 11 févr. 2009 à 20:24
bon quelques petites truc pas important mais ça rend plus propre et plus beau
enleve les "/" avant les commandes
quand tu n'a pas 2 comandes separé par "|" tu peux enlevé les accolades "{}"
exp:
if (%blabla) cmd <== là tu peux enlevé les accolades
if (%blabla) { cmd1 | cmd2 } <== là il y a 2 cmds separé par un "|"
PsychoFlex
Messages postés9Date d'inscriptionsamedi 9 décembre 2000StatutMembreDernière intervention16 février 2009 10 févr. 2009 à 18:41
Alors j'ai testé les 2 alias proposé, alors ca fonctionne et j'ai plus cet horrible goto, c'est vrai que celui de WorldDMT, me parait plus evident, mais bon tant que la boucle part pas en helice, ( la je parle par plantage de script sur une boucle while infini ) cela me va trés bien.
Je vous remercie a tous 2 en tout cas pour l'amélioration de cet alias, je vais mettre a jour direct, si vous voyez autre chose hésité pas a le dire. mon but étant d'apprendre la je suis servi :)
Encore grand merci a vous 2 :)
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 9 févr. 2009 à 12:21
Ce que j'ai dit plus haut, mais c'est "soit disant" pas rigoureux de mettre un return dans une boucle.
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 9 févr. 2009 à 12:16
bah moi j'aurai fais
alias -l WorldOne.testtitreradio {
var %a $remove($1-,$chr(32)),%x $numtok(%a,40)
while (%x) {
if ($right($gettok(%a,%x,40),1) != $chr(41)) return %x
dec %x
}
}
j'ai pas testé mais je pense que c'est bon ^^
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 9 févr. 2009 à 11:30
Alors, pour supprimer le goto, il y a plusieurs méthodes. En voilà une toute bête, soit disant "rigoureuse" et "propre" (même si moi, je ne l'aime pas) :
alias -l WorldOne.testtitreradio {
var %a = $remove($1-,$chr(32))
var %x = 2
var %fin = $numtok(%a,40)
var %verif = 1
while ((%x < %fin) && (verif == 1)) { if ($right($gettok(%a,%x,40),1) !$chr(41)) %verif 0
else inc %x
}
return $calc(%x -1)
}
Voilà, c'est moche je trouve, mais c'est comme ça qu'il faudrait faire.
Sinon, tu peux directement mettre le return dans le if (ça arrêtera la boucle en même temps).
Bref, petites subtilités...
PsychoFlex
Messages postés9Date d'inscriptionsamedi 9 décembre 2000StatutMembreDernière intervention16 février 2009 8 févr. 2009 à 23:39
Alors effectivement le background de la box est voulu en gris, car si je met en noir le text est illisible.
Sinon pour le :a4fin c'est bien une etiquette de goto pour la lecture du titre, j'ai bien essayé de le supprimer mais les infos retournés demeurent erronées et cela fais franchement deg dans le dialogue.
Je cherche encore a améliorer mais mes connaissances sont encore limitées donc je patauge un peu :)
sinon vos propositions sont les bienvenues
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 8 févr. 2009 à 11:19
Salut,
C'est l'étiquette d'un goto, ça veut dire que son algo n'est pas au point.
Bon sinon j'ai parcouru le script en speed, je vois pas de "grosse erreur", puis j'ai vu que tu as utilisé des hashtables, c'est pas trop mal.
Dans ton screen, on voit le background de ta groupbox gris et non noir, soit c'est volontaire, soit sache que c'est possible de le mettre noir.
Bonne continuation.
WorldDMT
Messages postés871Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 20121 7 févr. 2009 à 22:11
salut
j'ai pas trop regardé mais dans l'alias WorldOne.testtitreradio
j'ai vu " :a4fin " c'est quoi ce truc?
6 mars 2009 à 13:46
Cela fait plaisir de te voir ici.
18 févr. 2009 à 16:41
en plus contre qui? contre Vin :p je me fache jamais contre lui :)
pour le tokenize ça evite trop de calcules je pense que ça sera plus rapide
mes commentaires sont des idées a toi de voir ce qu'il te va :)
@+
16 févr. 2009 à 23:25
Je rectifie simplement sur le fait que je dois être l'un des plus rigoureux de ce site (relis donc mon premier com) ^^, ce n'est pas de la prétention, c'est au bien au contraire chiant pour les autres. Mais la rigeur s'applique à l'optimisation de calculs, l'amélioration des performances d'un algorithme, mais pas (dans la plupart des cas) à la sémantique du code. Par exemple :
if (%pouet == 1) {
echo -a ok
}
else {
echo -a pas ok
}
n'est pas moins rigoureux que
echo -a $iif(%pouet,ok,pas ok)
C'est simplement la syntaxe qui est optimisée dans le 2ème cas. Donc aucune notion de rigueur là-dedans.
On avait déjà eu de bons débats sur ce site pour évaluer la rapidité d'interprétation du parser mIRC quand on mettait trop d'accolades inutiles, ou bien les différences entre les notions $null, $false, $true, 0 et 1, etc...
Ensuite, je n'étais pas du tout faché ^^ et je pense que WorldDMT non plus (j'espère, du moins ^^).
Enfin, je voulais également revenir sur $scriptdir et $mircdir. Moi aussi ayant été jusqu'à maintenant sur la version 6.17, e ne comprenais pas pourquoi WorldDMT, tu t'obstinais à préciser ceci... et bien j'ai vu par moi même en passant sous la 6.35 ^^. Et tu avais raison. Les répertoires d'installation sont partagés en deux, c'est assez lourd (tout ça à cause de Vista...). Bref, sur ce coup là tu as eu raison d'insister (sur d'autres sources aussi).
16 févr. 2009 à 23:04
et oui j'ai ma facon de coder, qui est differente des facons des autres, la j'apprends pleins de choses que je connais pas, je test, j'observe, voit, pis déduit ce qui me correspond ou non !
Sinon j'ai mis %a pour une simple raison, c'est que si je met %b cela me retourne l'info mais erroné.
Sinon le fichier.ini n'est pas dans plugins, mais dans Radio-World-One, enfin bref, pour le tokenize, j'y avais pensé mais pas mis en pratique, par contre c'est interressant de voir comment chacun peut voir le code et comment il l'ecrirait, ca m'apprends beaucoup, merci encore a vous 2 :)
le -ie, c'est simplement que si le dialog est reduit il s'agrandit ( le but c'est un script que je monte pour des gens, qui sont des newbies, donc pas faire trop complexe, ni compliqué, et j'avoue mon script perso est bien different de celui que je monte ) la plupart des gens crée des scripts mais souvent sans penser au tous debutants, c'est cela que je cherche a faire, un script ou l'on peut personnaliser, et en meme temps, qui soit simple, rien de compliqué !
c'est pas un script Hightec, mais cela me permet de decouvrir beaucoup de chose sur le scripting, et les commandes existantes.
Et de permettre a des gens sans aucunes experiences de mirc ou du scripting, de se divertir et de se crée leur script.
Je le fais par plaisir d'apprendre et de partager.
Je vois dans la personnalité de WorldDMT, beaucoup de perfectionnisme et de rigueur, dans Uaip, beaucoup d'humanité, et de liberté.
Je suis un melange des deux, je veux un code propre, et humain ( mais s'il n'est pas parfait, je lui demande de bien fonctionner )
Sinon pour information, le mirc que j'utilise c'est un vieux mirc 6.17 en francais ( perso je tourne sous 6.21 ) par commodité de compatibilité, mais cela m'instruit beaucoup si je dois un jour passer a un mirc 6.31 ou plus. ($scriptdir)
Merci a vous 2 en tout cas, car j'apprends pleins de choses
16 févr. 2009 à 10:54
et ne pas utilisé le $scriptdir "est une faute" car a partir de la version 6.3 le $mircdir est different des autres versions inferieur et quand je vois par exp
".writeini Radio-World-One\Radio-World-One.ini Setup $1-" celà veux dire que le chemin est $mircdir dans la version 6.21 j'explique encore plus le dossier "Radio-World-One" est dans le dossier du mIRC (a coté de l'icone mirc.exe) mais dans la version 6.32 ça passe pas pareil.
et en plus le fichier.ini est dans un dossier qui s'appel "plugins" donc ça j'appel ça une faute
pour le reste j'ai presisé en disant "si tu veux" donc juste une proposition :)
d'apres qu'il a demandé des idées bien avant
@+
15 févr. 2009 à 16:05
Tout ce que tu dis WorldDMT, ce ne sont pas des "erreurs", c'est simplement sa façon de scripter qui est différente de la tienne. Je suis d'accord que corriger un %b au lieu d'un %a c'est bien (cela peut débugguer entièrement un script) mais tout le reste de ton commentaire, ce ne sont que des subtilités. Du style corriger sa façon d'appeler le dialog, au final tu n'économises qu'un mot. Le but n'est pas de refaire entièrement les codes postés ici, mais simplement corriger les absurdités éventuelles. Je dis ça parce-que sur les dernières sources, tu te débrouilles toujours pour écrire des commentaires de plus en plus longs ^^ (je dis ça sans méchanceté).
Mais, comme tu le dis toi même, il y a plusieurs façons de coder une même chose, alors laissons la liberté aux scripteurs de choisir celles qu'ils préfèrent :)
15 févr. 2009 à 11:45
pour le zip je ne suis pas sur place en ce moment dans j'utilise pas mon pc et j'ai pas de mIRC ici :/
mais bon a propos de ton code j'ai vu quelques fautes
1- attetion dans l'alias WorldOne.current
var %d = $wildtok(%a,#*,1,32)
c'est var %d = $wildtok(%b,#*,1,32)
met la variable %b au lieu de %a
2- pour les alias suivantes wrad rrad Radioworld t'a pas utilisé de $scriptdir
dans ce cas ça va pas marché car le fichier Radio-World-One.ini est dans le dossier "plugins" donc il faut que ça deviennent comme ça si non tu aura 2 fichier.ini
alias -l wrad writeini $scriptdirplugins\Radio-World-One.ini Setup $1-
alias -l rrad return $readini($scriptdirplugins\Radio-World-One.ini,Setup,$1)
alias -l Radioworld return $readini($scriptdirplugins\Radio-World-One.ini,WorldOne,$1)
3- pour $gettok(%WorldOne,1,32) > 0 tu a plusieur tu peux si tu veux faire un tokenize 32 %WorldOne
comme ça les condition de la ligne 71 jusqu'a la ligne 76 deviennent comme ça
tokenize 32 %WorldOne
if ($1 > 0) did -c $dname 11 $1
else did -c $dname 11 1
if ($2 > 0) var %a $WorldOne.Amp(misc,setvolume $2)
if ($3 == 0) did -u $dname 6
did -ra $dname 6 $iif($3 == 1,<,>)
dialog -sb $dname -1 -1 157 $iif($3 == 1,80,60)
c'est meme plus rapide ça evite de faire les calcule a chaque ligne ^^
tu sais si tu es dans l'evenement du dialog t'es pas obligé de mettre le nom du dialog
tu sera obligé si tu utilise une alias
exp
$did(Radio,11).sel si ce n'est pas dans une alias tu peu faire $did(11).sel
donc pour "sclick $did == 6" tu peu faire si tu veux comme ça
if ($did == 6) {
set %WorldOne $did(11).sel $mid($dll($WorldOne.Amp,Misc,getvolume),4) $did(6).state
tokenize 32 %WorldOne
did -ra $dname 6 $iif($3 == 1 ,<,>)
dialog -sb Radio -1 -1 157 $iif($3 == 1,80,60)
}
4- pour $hget(WorldOne)
if ($hget(WorldOne) != WorldOne) hmake WorldOne 100
devient tout simplement
if (!$hget(WorldOne)) hmake WorldOne
5- pour l'alias Radioworldone pourquoi le "-ie"? utilise "-v"
alias Radioworldone dialog $iif($dialog(Radio),-ie Radio Radio,-omd Radio Radio)
devient si tu veux
alias Radioworldone dialog $iif($dialog(Radio),-v,-omd Radio) Radio
6- modifie ton unload
il faut netoyer tout ce que ton cript a es a faire comme modification
exp unset pour tes variables global ect...
@+
15 févr. 2009 à 00:50
je constate plusieurs petites choses, c'est plus rapide et plus simple, et cette fois j'ai pensé au ZIP loll,
Encore Merci a vous deux, vous etes des connaisseurs ( pas des debutants comme moi ) merci car cela
me permet de mieux decouvrir le language mirc et ses astuces.
PS:WorldDMT, la tu peux prendre le Zip, et me dire s'il est propre ?
14 févr. 2009 à 10:49
comme ça je verrai pour l'alias WorldOne.current
pour l'alias WorldOne.time si tu veux qu'apres 60 min l'heur safiche tu modifi juste la var %b
var %b $+($t.f(%h),:,$t.f(%m),:,$t.f(%s))
devient
var %b $+($iif(%h,$+($t.f(%h),:)),$t.f(%m),:,$t.f(%s))
bref si tu veux :)
@+
14 févr. 2009 à 00:18
Je connaissais déjà le $iif mais je ne savais pas que l'on pouvait l'utiliser sur une ouverture de dialog, encore merci aussi pour cela.
Pour le $scriptdir, j'avais déjà modifié certain mais comme je maitrise pas encore bien cet alias, j'ai pas tout modifié.
Pour le $dname, euh la j'avoue c'est un reflex, chez moi :), mais c'est vrai que dans les alias c'est mieux de mettre le nom du dialog (erreur de ma part), merci de la souligner.
Pour l'alias WorldOne.current , la j'avoue je nage un peu, mais je vais chercher et apprendre, je comprends pas tout, mais je vais trouver.
Une fois que j'aurai bien capté, je mettrais tout à jour, en effet, j'ai modifié le post et pas le zip (encore erreur de ma part), heureusement que vous etes la ( cela ne ma même pas traversé l'esprit ).
Je vous remercie encore beaucoup car je decouvre beaucoup de chose dans vos partages.
PS:J'espere que vous serez également la pour m'aider, sur une autre remote, c'est un lecteur mp3( je sais y'en a pleins, mais celui-la est un peu different) je le posterai quand il sera pret à mon gout, je travaille encore dessus, mais prochainement je pense le poster.
12 févr. 2009 à 16:37
j'ai telecharger le dossier pour mieu voir
bon dejà tu a 2 accolades qui manquent a la fin des 2 dernieres lignes
et tu attention il faut aussi changer le zip puisque les modifications que tu a faites n'ont pas été changé dans le zip
bref t'a pas besoin des $shortfn et ne remplace pas par $qt sinon pour la dll ça passe pas avec met juste $scriptdir a la place de $mircdir
tu dois utilisé $scriptdir puisque a partir de la version 6.3 je pense que le script aura un dossier qui n'est pas dans le dossier là ou se trouve l'icone mIRC donc $mircdir ne conduit plus là ou on souhaite c'est pourquoi il faut utilisé $scriptdir
donc exp pour l'alias "img"
alias -l img { return $shortfn($mircdirRadio-world-one\bmp\ $+ $$1 $+ .bmp) }
devient
alias -l img return $scriptdirbmp\ $+ $1 $+ .bmp
et dans l'alias WorldOne.current
var %b $remove(%a,$chr(40),$chr(41),$chr(93),$chr(91),$chr(123),$chr(125))
var %b $numtok(%a,40)
mais déjà tu supprime le "$chr(40)" cmt tu fais encore un $numtok avec separateur 40!!! donc ça returne 1.
var %d = $remove($gettok(%a,$calc($WorldOne.testtitreradio(%a) + 1) $+ -,40),$chr(41),$chr(40))
devient si %b est tjr refaite avec $numtok
var %d = $left($wildtok(%a,#*,1,40),-1)
si non tu enleve la variable %b = $numtok(...)
comme ça %d devient tout simplement
var %d = $wildtok(%b,#*,1,32)
attention dans les alias je vois $dname il faut plutot mettre le nom meme Radio par exp
pour l'alias WorldOne.time il faut ajouté les heurs voilà ce que tu peux aussi faire
alias -l t.f return $iif($len($1) == 1,$+(0,$1),$1)
alias -l WorldOne.time {
var %a $gettok($dll($WorldOne.Amp,CurrentMusic,position),2,32),%x $int($calc(%a / 1000 / 60))
var %h $int($calc(%x / 60)),%m $int($calc(%x / 60 * 60 - %h * 60)),%s $int($calc(%a / 1000 - 60 * %x))
var %b $+($t.f(%h),:,$t.f(%m),:,$t.f(%s))
if ($did(Radio,10) != %b) did -ra Radio 10 %b
}
comme ça le format sera --:--:--
pour l'alias Radioworldone
c'est dejà ouvert en mode -od donc sur le bureau et au dessus donc je ne vois pas pourquoi quelqun ferra l'erreur de l'ouvrir 2 fois
moi je fais souvent comme ça
alias Radioworldone dialog $iif($dialog(Radio),-v,-omd radio) radio
a toi de voir en tout cas :)
pour l'alias WorldOne.taille
pourquoi ne pas faire un check push (id = 6)
tu remplace le boutton par
check ">", 6, 138 13 10 10, push
et dans l'evenement du dialog init
a la place de
if ($rrad(Taille) == on) { dialog -sb Radio -1 -1 157 80 | did -ra Radio 6 < }
elseif ($rrad(Taille) == off) { dialog -sb Radio -1 -1 157 60 | did -ra Radio 6 > }
tu mets
if (%WorldOne.taille) did -c $dname 6
did -ra $dname 6 $iif(%WorldOne.taille,>,<)
dialog -sb Radio -1 -1 157 $iif(%WorldOne.taille,80,60)
et dans sclick
if ($did == 6) {
set %WorldOne.taille $did(6).state
did -ra $dname 6 $iif(%WorldOne.taille,>,<)
dialog -sb Radio -1 -1 157 $iif(%WorldOne.taille,80,60)
}
là tu n'a plus besoin de l'alias WorldOne.taille
pour l'alias WorldOne.Aff
je prefere faire
alias -l WorldOne.Aff {
var %y $chan(0)
while (%y) {
if (($chan(%y) isin $1) || ($1 == ALL)) describe $chan(%y) $2-
dec %y
}
}
11 févr. 2009 à 23:24
donc l'alias img est fausse si le script est loadé hors du dossier mIRC on est fichu là et t'a pas besoin dutilisé $shortfn utilise $qt puisque si tu a un dossier qui a un nom qui contien une espace on est fichu
($qt met les guillemets "")
11 févr. 2009 à 21:05
if ($hget(WorldOne) != WorldOne) { hmake WorldOne 100 }
devient
if (!$hget(WorldOne)) hmake WorldOne
et pour
var %a $dll($WorldOne.Amp,Play, $+ %b $+ )
t'es pas obligé de mettre des "$+" autour d'une variable non?
var %a $dll($WorldOne.Amp,Play,%b)
11 févr. 2009 à 20:31
11 févr. 2009 à 20:24
enleve les "/" avant les commandes
quand tu n'a pas 2 comandes separé par "|" tu peux enlevé les accolades "{}"
exp:
if (%blabla) cmd <== là tu peux enlevé les accolades
if (%blabla) { cmd1 | cmd2 } <== là il y a 2 cmds separé par un "|"
c'est plus rapide aussi
pour l'evenement du dialog
on *:dialog:Radio:*:*:{
if ($devent == init) {
blabla ...
...
}
elseif ($devent == sclick) {
blabla ...
...
}
}
10 févr. 2009 à 18:41
Je vous remercie a tous 2 en tout cas pour l'amélioration de cet alias, je vais mettre a jour direct, si vous voyez autre chose hésité pas a le dire. mon but étant d'apprendre la je suis servi :)
Encore grand merci a vous 2 :)
9 févr. 2009 à 12:21
9 févr. 2009 à 12:16
alias -l WorldOne.testtitreradio {
var %a $remove($1-,$chr(32)),%x $numtok(%a,40)
while (%x) {
if ($right($gettok(%a,%x,40),1) != $chr(41)) return %x
dec %x
}
}
j'ai pas testé mais je pense que c'est bon ^^
9 févr. 2009 à 11:30
alias -l WorldOne.testtitreradio {
var %a = $remove($1-,$chr(32))
var %x = 2
var %fin = $numtok(%a,40)
var %verif = 1
while ((%x < %fin) && (verif == 1)) { if ($right($gettok(%a,%x,40),1) !$chr(41)) %verif 0
else inc %x
}
return $calc(%x -1)
}
Voilà, c'est moche je trouve, mais c'est comme ça qu'il faudrait faire.
Sinon, tu peux directement mettre le return dans le if (ça arrêtera la boucle en même temps).
Bref, petites subtilités...
8 févr. 2009 à 23:39
Sinon pour le :a4fin c'est bien une etiquette de goto pour la lecture du titre, j'ai bien essayé de le supprimer mais les infos retournés demeurent erronées et cela fais franchement deg dans le dialogue.
Je cherche encore a améliorer mais mes connaissances sont encore limitées donc je patauge un peu :)
sinon vos propositions sont les bienvenues
8 févr. 2009 à 11:19
C'est l'étiquette d'un goto, ça veut dire que son algo n'est pas au point.
Bon sinon j'ai parcouru le script en speed, je vois pas de "grosse erreur", puis j'ai vu que tu as utilisé des hashtables, c'est pas trop mal.
Dans ton screen, on voit le background de ta groupbox gris et non noir, soit c'est volontaire, soit sache que c'est possible de le mettre noir.
Bonne continuation.
7 févr. 2009 à 22:11
j'ai pas trop regardé mais dans l'alias WorldOne.testtitreradio
j'ai vu " :a4fin " c'est quoi ce truc?