RADIO-WORLD-ONE PLAYER

WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 - 7 févr. 2009 à 22:11
donkishock Messages postés 26 Date d'inscription lundi 11 septembre 2006 Statut Membre Derniè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.

https://codes-sources.commentcamarche.net/source/49199-radio-world-one-player

donkishock Messages postés 26 Date d'inscription lundi 11 septembre 2006 Statut Membre Derniè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és 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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és 1466 Date d'inscription mardi 20 février 2007 Statut Membre Derniè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és 9 Date d'inscription samedi 9 décembre 2000 Statut Membre Dernière intervention 16 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és 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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és 1466 Date d'inscription mardi 20 février 2007 Statut Membre Derniè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és 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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és 9 Date d'inscription samedi 9 décembre 2000 Statut Membre Dernière intervention 16 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és 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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és 9 Date d'inscription samedi 9 décembre 2000 Statut Membre Dernière intervention 16 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és 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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

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
}
}
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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és 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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és 1466 Date d'inscription mardi 20 février 2007 Statut Membre Derniè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és 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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 "|"

c'est plus rapide aussi

pour l'evenement du dialog

on *:dialog:Radio:*:*:{
if ($devent == init) {
blabla ...
...
}
elseif ($devent == sclick) {
blabla ...
...
}
}
PsychoFlex Messages postés 9 Date d'inscription samedi 9 décembre 2000 Statut Membre Dernière intervention 16 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és 1466 Date d'inscription mardi 20 février 2007 Statut Membre Derniè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és 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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és 1466 Date d'inscription mardi 20 février 2007 Statut Membre Derniè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és 9 Date d'inscription samedi 9 décembre 2000 Statut Membre Dernière intervention 16 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és 1466 Date d'inscription mardi 20 février 2007 Statut Membre Derniè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és 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
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?
Rejoignez-nous