Arkatool (menu interactif du style lecteur mp3)

Description

Voici un code plutôt original, puisqu'il présente un menu d'une façon peu ordinaire, jugez-en par le screenshot.
Ca ressemble pas mal à un certain lecteur MP3 dont je ne dirai pas de nom pour pas faire de pub (et ouais, je préfère la compagnie française Archos :D)

Le but était à la base de gagner du temps en s'organisant, et de présenter un menu plus joli que celui de mIRC.
L'utilisation est très intuitive, il suffit de décrire des cercles sur le disque pour sélectionner un autre item du menu, puis de cliquer.

Ce menu peut-être entièrement personnalisé (j'entends donc par vous) et cela très facilement.
Il suffit dans vos remotes de mettre les balises (AkT Begin, AkT End) sur deux lignes différentes, dans l'ordre et de caser votre menu entre les deux). Le reste (les .) est identique aux menus de mIRC (mis à part que je n'utilise pas les $chr(9))
Par exemple, cela pourrait donner :
AkT Begin
Sites
.IRCfr:url -n www.ircfr.com
.Google:url -n www.google.com
.-
.Mes favoris
..Mon favoris 1:url -n ...
(etc)
Quitter mIRC:exit -n
AkT End

D'autres exemples sont donnés dans le code lui-même. Vous pouvez également regarder le début du code, un menu y est déclaré (je déconseille au passage de le modifier).
Le texte de la liste défile lorsqu'il est trop long, de même avec le titre du dossier.

Des petites animations d'ouverture sont au rendez-vous :)

L'exécution est assez rapide, mis à part le lancement de la PicWin (/AkT), car j'utilise des /filter sur tous les remotes chargés pour fabriquer le menu.

Vous pouvez changer la résolution du disque (càd le nombre de parties de disque), mais aussi l'ajout de lignes noires qui délimitent les parties.
Une autre chose, assez importante, est la possibilité de changer ENTIEREMENT toutes les couleurs. Pour cela, rendez-vous dans le menu réglages, changer les couleurs, ...
Pour augmenter/diminuer la valeur d'une couleur, il suffit de rester appuyé sur le clic gauche tout en décrivant des cercles.
D'autres tips sont donnés dans la rubrique Informations, comme par exemple l'utilité du clic droit)

Je pense que ce code vaut la peine d'être testé :)
J'ai pas dit qu'il était très utile, d'ailleurs je le pense pas, c'était surtout pour m'améliorer et pourquoi pas pour l'utiliser plus tard. J'aurai aussi vraiment besoin de vos impressions pour l'améliorer.

Il crée un fichier AkT.ini et AkT.data dans votre dossier mIRC. Tapez /akt.remove ou allez dans Réglages pour effacer le premier, le second s'efface lors de la fermeture de la PicWin.

Source / Exemple :


;*****************
;    ArKaTool
;   By ArKanis
; www.arkanis.eu
;*****************

;Version 1.2

;Ne pas changer le nom du fichier en cours d'utilisation !
;Ne pas placer le menu dans un .ini (car il y aura des n*=...)

/*
AkT Begin
Sites
.Site principal:url -n www.arkanis.eu
.Consulter l'aide d'ArKanis:url -n www.arkanis.eu/aide/
.Déposer un bout de code:url -n www.arkanis.eu/codes
.Télécharger un code:url -n www.arkanis.eu/little
Informations
.Notice d'utilisation de l'ArKaTool
..Faites tourner la roulette en décrivant des cercles autour du centre:noop
..Cliquez sur le rectangle du milieu pour revenir au dossier parent:noop
..Le classement peut-être fait soit par fichier (dans un dossier du nom du remote) ou directement à la racine:noop
..Un clic droit vous fera revenir au dossier Parent ou fermera la fenêtre si vous êtes à la racine et annulera vos derniers changements:noop
..Dans le menu choix d'une couleur, une fois la couleur que vous voulez changer sélectionnée, cliquez et restez appuyé avec le bouton gauche de la souris, puis faites tourner le disque, relachez et cliquez ailleurs pour valider:noop
..-
..Pour faire votre propre menu, editez un remote, et insérez votre menu entre "AkT Begin" et "AkT End" sous la même forme que les menus de mIRC (cliquez pour un exemple):AkT.exemple
.Crédits
..Codé par ArKanis:noop
..Merci à Jordane, Panthouffle et à Wims pour leur test:noop
..12Visitez mon site:url -n www.arkanis.eu
Réglages
.Résolution du disque:AkT.resol
.Lignes noires
..$+($iif($readini(AkT.ini,Config,Lignes),),Afficher):AkT.ligne 1
..$+($iif(!$readini(AkT.ini,Config,Lignes),),Cacher):AkT.ligne 0
.Changer les couleurs
..Arrière-plan:akt.color 1
..Cercle
...Sélection:akt.color 2
...Arrière-plan:akt.color 3
..Rectangle central
...Sélection:akt.color 4
...Arrière-plan:akt.color 5
..Liste
...Texte des actions:akt.color 6
...Texte des dossiers:akt.color 7
...Sélection:akt.color 8
...Arrière-plan:akt.color 9
..Titre
...Texte:akt.color 10
...Arrière-plan:akt.color 11
.Appliquer les changements
..Appliquer:AkT.apply
..Appliquer automatiquement après un changement
...$+($iif($readini(AkT.ini,Config,Apply),),Oui) :writeini -n AkT.ini Config Apply 1
...$+($iif(!$readini(AkT.ini,Config,Apply),),Non) :writeini -n AkT.ini Config Apply 0
.-
.Classement
..$+($iif($readini(AkT.ini,Config,Files),),Classer par fichier) :writeini -n AkT.ini Config Files 1
..$+($iif(!$readini(AkT.ini,Config,Files),),Classer par ordre d'apparition) :writeini -n AkT.ini Config Files 0
.Effacer les données:AkT.remove
AkT End

  • /
alias akt { if ($window(@AkT)) window -c @AkT if ($hget(AkT)) hfree AkT window -aBCdg0Hk0opR +dL @AkT 0 0 400 204 var %s = $readini(AkT.ini,Config,Lignes) hadd -m AkT Parent AkT $+($iif(!%s,.),AkT.draw) hadd -m AkT Ticks $ticks hadd -m AkT Pos 1 var %aj, %m = $hget(AkT,Div) if ($readini(AkT.ini,Config,Files)) var %aj = 1 var %fn = $script, %i = 1, %h, %n = $script, %f = AkT.data, %x = temp-AkT.txt, %a = $script(0) .remove %f while %i <= %a { var %w = $script(%i), %l, %q if ((%w != $script) && ($read(%w,w,*AkT Begin*))) AkT.filter %w inc %i } AkT.filter $script filter -cgcff %f %x [0-9]+ [^\.] var %i = 1, %l = $lines(%f) while %i <= %l { var %e = $regsubex($read(%f,n,%i),^([0-9]+) (n[0-9]+=)?,$+(\1,$chr(32))), %r = %i $+($iif(%aj && !$regex(%e,^0 .*),.),$gettok(%e,2-,32)) if ($regex(%r,^[0-9]+ [^\.]+.*)) hadd -m AkT Liste $instok($hget(AkT,Liste),%r,0,59) write $+(-l,%i) %f %r inc %i } hadd -m AkT Dir 0 .remove temp-AkT.txt hadd -m AkT Racine $hget(AkT,Liste) $+($iif(!%s,.),AkT.anim1) 0 %m $2 drawdot @AkT } alias -l AkT.filter { if (!$1-) return var %f = AkT.data, %x = temp-AkT.txt filter -cgffn $qt($1-) %x .+ if ($gettok($read(%x,nr,^[0-9]+ (n[0-9]+=)?AkT Begin),1,32)) var %l = $calc($ifmatch +1) if ($gettok($read(%x,nr,^[0-9]+ (n[0-9]+=)?AkT End),1,32)) %q = $calc($ifmatch -1) if ((%l isnum 1-) && (%q isnum 2-) && (%l <= %q)) { if ($readini(AkT.ini,Config,Files)) write %f 0 $nopath($noext($1-)) filter -gffnr $+(%l,-,%q) $qt($1-) %f .+ } } alias -l AkT.draw { var %m = $readini(AkT.ini,Config,Résolution), %s = $show if (!%m) var %m = 20 elseif (%m !isnum 4-) var %m = 4 hadd -m AkT Div %m if ($readini(AkT.ini,Config,Colors)) hadd -m AkT Color $ifmatch else { hadd -m AkT Color 16773360 15098980 16745090 16759225 16765650 0 13107200 16763080 16777215 0 15369854 writeini -n AkT.ini Config Colors $hget(AkT,Color) } drawrect -nrfd @AkT $akt.col(1) 1 0 0 400 204 30 30 if ($window(@AkTCopy)) window -c @AkTCopy drawrect -nrd @AkT 0 1 0 0 400 204 30 30 drawtext -nr @AkT 7237230 Tahoma 12 328 188 By ArKanis AkT.parents $gettok($hget(AkT,Parent),-1,59) drawrect -nrfe @AkT $akt.col(3) 1 2 2 200 200 ;drawrect -nre @AkT $iif(%s,0,$calc($akt.col(2) -1)) 1 2 2 200 200 drawdot @AkT if ($1 == anim) { hadd -m AkT Ticks $ticks $+($iif(!%s,.),AkT.anim1) 0 %m } } alias -l AkT.anim1 { if (!$window(@AkT)) return var %s = $show, %m = $2, %c = $calc(2 / %m),%t = $calc(($ticks - $hget(AkT,Ticks)) * 0.0005 * %m + $1), %k = $akt.col(3) if ($1 == 0) { if ($hget(AkT,Last)) hdel AkT Last drawrect -nrfe @AkT $akt.col(3) 1 2 2 200 200 drawrect -nre @AkT $iif(%s,0,$calc(%k -1)) 1 2 2 200 200 if ($window(@AkTCopy)) window -c @AkTCopy window -BCdhg0k0npR +dL @AkTCopy 0 0 400 200 drawcopy -nr @AkT 0 0 400 200 @AkTCopy 0 0 var %g = $1-, %v = 1, %b = 1, %n = 1 tokenize 44 $rgb(%k) if ($1 > 128) var %v = -1 if ($2 > 128) var %b = -1 if ($3 > 128) var %n = -1 hadd -m AkT AnimDir %v %b %n tokenize 32 %g } var %co = 0 if (%s) drawcopy -nr @AkTCopy 0 0 400 200 @AkT 0 0 else { if ($gettok($rgb(%k),1,44)) var %co = $calc(%k -1) else var %co = $calc(%k +1) } var %n = $hget(AkT,AnimDir) if (($int(%t) != $int($1)) || ($1 == 0)) { var %a = $int($1) while %a <= $int(%t) { if ($int(%a) > %m) break var %r = $calc($int(%a) * %c * $pi) drawline -nr @AkT %co 1 102 102 $calc($cos(%r) *100 +102) $calc($sin(%r) *100 +102) if (!%s) { var %o = %a, %j = 5 while ((%o) && (%j) && ($2 > 6)) { var %couleur = $calc($floor($calc($gettok(%n,1,32) *4* %j + $gettok($rgb(%k),1,44))) + $floor($calc($gettok(%n,2,32) *4* %j + $gettok($rgb(%k),2,44))) *256 + $floor($calc($gettok(%n,3,32) *4* %j + $gettok($rgb(%k),3,44))) *256^2) if (%o <= $calc(%m /2)) var %g = $calc((-1) * %o) else var %g = $calc(%m - %o) if (%j > 1) drawfill -nr @AkT %couleur %co $akt.ang(%g,%m) else drawfill -nr @AkT %k %co $akt.ang(%g,%m) dec %o dec %j } } else drawcopy -nr @AkT 0 0 300 200 @AkTCopy 0 0 drawdot @AkT inc %a } } if (%t >= %m) { if ((!%s) && ($2 > 6) && (($calc($hget(AkT,Last) - %m) <= 6) || (!$hget(AkT,Last)))) { hadd -m AkT Last $int(%t) var %a = $int($1) while %a <= $int(%t) { var %g = $calc(%m - (%a -4)) drawfill -nr @AkT %k %co $akt.ang(%g,%m) inc %a } } if (($int($1) > $calc(%m + 7)) || (%s) || ($2 <= 6)) { hadd -m AkT Ticks $ticks AkT.anim2 0 $3 return } } var %r = $calc(%t * %c * $pi) if (%s) drawline -nr @AkT 0 1 102 102 $calc($cos(%r) *100 +102) $calc($sin(%r) *100 +102) drawdot @AkT hadd -m AkT Ticks $ticks .timerakt -m 1 1 $+($iif(!%s,.),AkT.anim1) %t %m $3 } alias -l AkT.anim2 { if ($2) { if ($hget(AkT,Ticks)) hdel AkT Ticks AkT.drawliste 1 drawdot @AkT return } var %t = $calc(($ticks - $hget(AkT,Ticks)) * 0.05 + $1) if (%t >= 20) var %t = 20 drawrect -dnrf @AkT $akt.col(4) 1 $calc(102 - $int(%t) * 5/4) $calc(102- $int(%t) /2) $calc($int(%t) *5/2) $int(%t) 20 20 drawrect -dnr @AkT 0 1 $calc(102 - $int(%t) * 5/4) $calc(102- $int(%t) /2) $calc($int(%t) *5/2) $int(%t) 20 20 drawdot @AkT if (%t >= 20) { hdel AkT Ticks AkT.drawliste 1 drawdot @AkT return } hadd -m AkT Ticks $ticks .timer -m 1 1 AkT.anim2 %t } ;**** ;Load ;**** on *:load:{ echo 2 -a * Code ArKaTool correctement chargé. Tapez /AkT pour commencer. echo 2 -a * Merci d'avoir installé ce code, j'espère qu'il vous plaira echo 2 -a * ArKanis - www.arkanis.eu } ;************* ;Menu & events ;************* menu status,channel,query { ArKaTool:akt } menu @AkT { leave:{ AkT.back drawdot @AkT } mouse:AkT.mouse $mouse.x $mouse.y sclick:AkT.sclick $mouse.x $mouse.y dclick:AkT.sclick $mouse.x $mouse.y rclick:.AkT.sclick parent } alias -l AkT.close { .timerAkT.balayage off .timerAkT.move off if ($window(@AkT.balayage)) window -c $ifmatch if ($window(@AkT)) window -c @AkT if ($hget(AkT)) hfree AkT if ($exists(AkT.data)) .remove AkT.data } alias -l AkT.ang { if (($1 !isnum) || ($2 !isnum)) return var %m = $calc(360* $1 / $2 + 360/(2* $2)) return $calc(102+ $cos(%m).deg *95) $calc(102+ $sin(%m).deg *(-95)) } alias -l AkT.mouse { if ($hget(AkT,Ticks)) return var %c = $getdot(@AkT,$1,$2), %d = $hget(AkT,Div) if ($inroundrect($1,$2,77,92,50,20,20,20)) { if ($hget(AkT,Temp) == Rect) return AkT.back if ($hget(AkT,Old)) hdel AkT Old hadd -m AkT Flash %c $akt.col(5) 102 102 hadd -m AkT Temp Rect drawfill -snr @AkT $akt.col(5) %c 102 102 drawdot @AkT } elseif ($calc(($1 -102)^2 + ($2 -102)^2) < 10000) { var %o = $hget(AkT,Old), %x = $calc(($1 - 102)/100), %y = $calc(($2 - 102)/100) var %m = $calc((%x ^2 + %y ^2)^(1/2)), %n = $hget(AkT,Pos), %t = $floor($calc($acos($calc(%x / %m)).deg *(-1)* $sgn(%y) / 360 * %d)) if ((%t == 0) && ($calc($1 - 102) < 0)) var %t = $floor($calc(%d / 2)) var %mo = $AkT.ang(%t,%d), %di = $calc(%o - %t) if ($abs(%di) == $calc(%d -1)) var %di = $sgn(%t) if (%o == $null) var %di = 0 var %m = $numtok($hget(AkT,Liste),59), %a = $hget(AkT,Pos) if ($calc(%d - $abs(%di)) < $calc(2 * %d / 3)) var %di = $calc((-1)* $sgn(%di) * (%d - $abs(%di))) inc %a %di if (%a < 1) var %a = 1 if (%a > %m) var %a = %m hadd -m AkT Old %t hadd -m AkT Pos %a AkT.back var %c1 = $rgb($akt.col(2)), %c2 = $rgb($akt.col(3)), %m1 = $AkT.ang($calc(%t -1),%d), %m2 = $AkT.ang($calc(%t +1),%d) var %cn = $rgb($calc(($gettok(%c1,1,44) + $gettok(%c2,1,44))/2),$calc(($gettok(%c1,2,44) + $gettok(%c2,2,44))/2),$calc(($gettok(%c1,3,44) + $gettok(%c2,3,44))/2))) AkT.df $akt.col(3) $akt.col(2) %mo %cn %m1 %cn %m2 if (($hget(AkT,Pause)) && ($gettok($hget(AkT,Parent),-1,59) == Résolution)) { hinc AkT Resol %di if ($hget(AkT,Resol) < 4) hadd -m AkT Resol 4 elseif ($hget(AkT,Resol) > 200) hadd -m AkT Resol 200 AkT.showresol $hget(AkT,Resol) } elseif (($hget(AkT,Pause)) && ($hget(AkT,Col))) { tokenize 32 $hget(AkT,Col) if ($mouse.key & 1) { var %co = $calc($gettok($3-,$2,32) + %di) if (%co > 255) var %co = 255 elseif (%co < 0) var %co = 0 AkT.showcolor $1-2 $puttok($3-,%co,$2,32) } else { var %b = $calc($2 + %di) if (%b < 1) var %b = 1 elseif (%b > 3) var %b = 3 } AkT.showcolor $1 %b $3- } elseif (%n != %a) AkT.liste %a drawdot @AkT } elseif (%c == $akt.col(1)) { AkT.back if ($hget(AkT,Old) != $null) hdel AkT Old drawdot @AkT } } alias -l AkT.sclick { if ($hget(AkT,Ticks)) return var %c = $getdot(@AkT,$1,$2) if (($hget(AkT,Pause)) && ($show) && ($1 != parent)) { if ($gettok($hget(AkT,Parent),-1,59) == Résolution) writeini -n AkT.ini Config Résolution $hget(AkT,Resol) elseif ($gettok($hget(AkT,Parent),-1,59) == Couleur) { if (($calc(($1 -102)^2 + ($2 -102)^2) < 10000) && (!$inroundrect($1,$2,77,92,50,20,20,20))) return tokenize 32 $hget(AkT,Col) writeini -n AkT.ini Config Colors $puttok($readini(AkT.ini,Config,Colors),$rgb($3,$4,$5),$1,32) } hdel AkT Pause if ($hget(AkT,Resol)) hdel AkT Resol hadd -m AkT Parent $deltok($hget(AkT,Parent),-1,59) hadd -m AkT Dir $deltok($hget(AkT,Dir),-1,59) if ($readini(AkT.ini,Config,Apply)) AkT.apply anim else AkT.parents $gettok($hget(AkT,Parent),-1,59) AkT.explore $hget(AkT,Dir) drawdot @AkT } elseif (($inroundrect($1,$2,77,92,50,20,20,20)) || ($1 == parent)) { if ($hget(AkT,Pause)) hdel AkT Pause if ($hget(AkT,Parent) == AkT) AkT.close else { hadd -m AkT Parent $deltok($hget(AkT,Parent),-1,59) hadd -m AkT Dir $deltok($hget(AkT,Dir),-1,59) akt.explore $hget(AkT,Dir) drawdot @AkT } } elseif ($calc(($1 -102)^2 + ($2 -102)^2) < 10000) { var %a = $gettok($hget(AkT,Liste),$hget(AkT,Pos),59), %l = $gettok(%a,1,32), %a = $regsubex($gettok(%a,2-,32),^\.*,) if ((!%a) || (!%l)) return hadd -m AkT $hget(AkT,Dir) $hget(AkT,Pos) $hget(AkT,First) if ($regex(%a,:([^:]+)$)) { var %i = 1, %l = $numtok($regml(1),124) while %i <= %l { $eval($gettok($regml(1),%i,124),2) inc %i } if ($window(@AkT)) window -a @AkT } elseif (%a != -) { hadd -m AkT $hget(AkT,Dir) $hget(AkT,Pos) $hget(AkT,First) hadd -m AkT Parent $+($hget(AkT,Parent),;,%a) hadd -m AkT Dir $+($hget(AkT,Dir),;,%l) } AkT.explore $hget(AkT,Dir) drawdot @AkT } elseif (%c == $akt.col(1)) AkT.move $1-2 } alias -l AkT.explore { var %a = $gettok($hget(AkT,Parent),-1,59), %p = $1-, %f = AkT.data if (%p == 0) hadd -m AkT Liste $hget(AkT,Racine) else { if ((!%a) || (!%p)) return if ($hget(AkT,Liste)) hdel AkT Liste filter -cffgn %f temp-AkT.txt .+ var %r = $read(%f,nw,$gettok($1-,-1,59) *), %l = $gettok($read(temp-AkT.txt,nw,* %r),1,32), %n = $calc($len($regsubex($gettok(%r,2-,32),[^\.].*,)) +1) filter -cffgr $+($calc(%l +1),-,$lines(%f)) %f temp-AkT.txt $+(^[0-9]+ \.,$chr(123),%n,$chr(44),$chr(125)) var %t = $calc($gettok($1-,-1,59) +1), %i = 1, %l = $lines(temp-AkT.txt) while %i <= %l { var %r = $read(temp-AkT.txt,n,%i) if ($gettok(%r,1,32) != %t) break if ($len($regsubex($gettok(%r,2-,32),[^\.].*,)) == %n) hadd -m AkT Liste $instok($hget(AkT,Liste),%r,0,59) var %t = %t + 1, %i = %i + 1 } } .remove temp-AkT.txt AkT.parents %a tokenize 32 $hget(AkT,%p) hadd -m AkT Pos $iif($1 isnum 1-,$1,1) AkT.drawliste $iif($2 isnum 1-,$2,1) } ;**** ;Move ;**** alias -l AkT.move { if (!$2) return var %x = $mouse.dx, %y = $mouse.dy if ($mouse.key & 1) { hadd -m AkT Move 1 .timerAkT.move -m 1 0 AkT.move $1- window @AkT $calc(%x - $1) $calc(%y - $2) } elseif ($hget(AkT,Move)) { hdel AkT Move .timerAkT.move off } } ;***** ;Liste ;***** alias -l AkT.liste { var %a = $1 if ($1 !isnum 1-) return var %f = $hget(AkT,First) if (($calc(%a - 9) > %f) || (!%f)) { var %f = $calc(%a - 9) if (%f < 1) var %f = 1 } elseif (%a < %f) { var %f = %a, %t = 1 } AkT.drawliste %f } alias -l AkT.drawliste { if ($hget(AkT,Pause)) return if (!$window(@AkT)) return if ($1 !isnum 1-) return var %t = 0, %l = $hget(AkT,Liste) hadd -m AkT First $1 drawrect -dfnr @AkT $akt.col(9) 1 215 32 150 156 20 20 drawrect -dnr @AkT 0 1 215 32 150 156 20 20 while %t <= 9 { var %r = $gettok(%l,$calc($1 + %t),59), %te = $eval($regsubex($gettok(%r,1,58),^[0-9]+ \.*,),2), %s = $iif($gettok(%r,2,58),1,0), %c = $iif(%s,$akt.col(6),$akt.col(7)) if ((%te) && (%s)) var %te = $chr(149) %te if ($hget(AkT,Pos) == $calc(%t + $1)) { drawrect -dfnr @AkT $akt.col(8) 1 220 $calc(36+ %t *15) 140 15 10 10 if ($width(%te,Tahoma,12,0,1) > 130) { if (!$timer(AkT.balayage)) .timerAkT.balayage -m 1 500 AkT.balayage hadd -m AkT Balayage $calc(%t +1) 0 } elseif ($hget(AkT,Balayage)) hdel AkT Balayage } if (%te) drawtext -pcnr @AkT %c Tahoma 12 225 $calc(36+15* %t) 130 20 %te if (%te == -) drawline -pcnr @AkT %c 1 225 $calc(44+15* %t) 355 $calc(44+15* %t) inc %t } } alias -l AkT.balayage { if (!$window(@AkT)) return var %t if (!$window(@AkT.balayage)) window -BCdg0hk0pR +dL @AkT.balayage -1 -1 200 22 var %i = 1 while %i <= 2 { drawrect -fnr @AkT.balayage $iif(%i == 1,$akt.col(8),$akt.col(11)) 1 0 0 200 30 tokenize 32 $hget(AkT,$iif(%i == 1,Balayage,Balai)) if (($1 isnum 1-) && ($2 isnum)) { var %p = $calc($2 +3), %p1 = %p, %t = 1, %r = $gettok($hget(AkT,Liste),$1,59), %s = $gettok(%r,2,58) var %te = $eval($regsubex($iif(%i == 1,$gettok($gettok(%r,1,58),2-,32),$gettok($hget(AkT,Parent),-1,59)),\.+,),3) if ((%te) && (%s)) var %te = $chr(149) %te var %l = $width(%te,Tahoma,12,0,1), %w = $calc(%l - $iif(%i == 1,130,154)) ;echo -a k0 %te if (%w > 0) { if (%p >= $calc(%l + 50)) var %p = 0 hadd -m AkT $iif(%i == 1,Balayage,Balai) $1 %p if (%te) { var %c = $iif(%i == 1,$iif(%s,$akt.col(6),$akt.col(7)),$akt.col(10)) drawtext -pnr @AkT.balayage %c Tahoma 12 $calc(%p *(-1)) 0 %te drawtext -pnr @AkT.balayage %c Tahoma 12 $calc(%p *(-1) + %l + 50) 0 %te } if (%i == 1) drawcopy -nr @AkT.balayage 0 1 130 14 @AkT 225 $calc(22+ $1 *15) else drawcopy -nr @AkT.balayage 0 1 154 14 @AkT 214 13 } } inc %i } if (%t) .timerAkT.balayage -h 1 50 AkT.balayage drawdot @AkT drawdot @AkT.balayage } alias -l AkT.parents { drawrect -fnrd @AkT $akt.col(11) 1 205 10 170 20 20 20 drawrect -nrd @AkT 0 1 205 10 170 20 20 20 drawtext -cnr @AkT $akt.col(10) Tahoma 12 214 12 154 20 $eval($$regsubex($1-,\.+,),3) if ($width($1-,Tahoma,0,1) > 154) { if (!$timer(AkT.balayage)) .timerAkT.balayage -h 1 500 AkT.balayage hadd -m AkT Balai 1 0 } } alias -l AkT.df { var %m = $0, %t = 2 while %t <= %m { var %co = $gettok($1-,%t,32), %pos = $gettok($1-,$+($calc(%t +1),-,$calc(%t +2)),32) drawfill -snr @AkT %co $1 %pos hadd -m AkT $+(Flash,$calc((%t -2)/3)) $1 %co %pos inc %t 3 } } alias -l AkT.back { var %t = 0 while $hget(AkT,$+(Flash,%t)) { drawfill -snr @AkT $ifmatch inc %t } hdel -w AkT Flash? if ($hget(AkT,Temp)) hdel AkT Temp } ;************** ;Aliases Divers ;************** alias -l sgn { if ($1 < 0) return -1 if ($1 == 0) return 0 return 1 } alias -l ext return $regsubex($1-,(.+)\.([^\.]+)$,\2) alias -l noext return $regsubex($1-,\.[^\.]+$,) ;********** ;Résolution ;********** alias -l AkT.resol { hadd -m AkT Pause 1 hadd -m AkT Resol $iif($readini(AkT.ini,Config,Résolution),$ifmatch,20) hadd -m AkT Parent $+($hget(AkT,Parent),;Résolution) hadd -m AkT Dir $+($hget(AkT,Dir),;0) AkT.showresol $hget(AkT,Resol) } alias AkT.showresol { if ($1 !isnum 0-) return AkT.clear drawrect -dfnr @AkT 16777215 1 235 95 106 10 10 10 if ($1 > 4) drawrect -dfnr @AkT 65280 1 236 95 $calc(104 * ($1 -4) / 196) 10 $iif($1 < 10,20,20) drawrect -dnr @AkT 0 1 235 95 106 10 10 10 var %te = Résolution : $1 drawtext -nr @AkT 0 Tahoma 12 $calc(237 + (102 - $width(%te,Tahoma,12))/2) 120 %te } ;******** ;Couleurs ;******** alias -l AkT.color { if ($1 !isnum 1-11) return hadd -m AkT Pause 1 hadd -m AkT Col $1 tokenize 44 $rgb($gettok($readini(AkT.ini,Config,Colors),$1,32)) hadd -m AkT Parent $+($hget(AkT,Parent),;Couleur) hadd -m AkT Dir $+($hget(AkT,Dir),;0) AkT.showcolor $hget(AkT,Col) 1 $1-3 } alias -l AkT.showcolor { if ($0 != 5) return hadd -m AkT Col $1- AkT.clear var %l = 255 65280 16711680, %i = 1 while %i <= 3 { if ($2 == %i) drawrect -dfnr @AkT $akt.col(8) 1 230 $calc(-5+40* %i) 116 40 20 20 drawrect -dfnr @AkT 16777215 1 235 $calc(5+40* %i) 106 10 10 10 if ($gettok($1-,$calc(%i + 2),32) > 4) drawrect -dfnr @AkT $calc(256^(%i -1) *255) 1 236 $calc(5+40* %i) $calc(104 * ($v1 -4) / 251) 10 $iif($v1 < 10,20,20) drawrect -dnr @AkT 0 1 235 $calc(5+40* %i) 106 10 10 10 var %te = $gettok(Rouge Vert Bleu,%i,32) : $+($v1,/255) drawtext -nr @AkT 16777215 Tahoma 12 $calc(236 + (102 - $width(%te,Tahoma,12))/2) $calc(20+40* %i) %te drawtext -nr @AkT 0 Tahoma 12 $calc(237 + (102 - $width(%te,Tahoma,12))/2) $calc(21+40* %i) %te inc %i } drawrect -dfnr @AkT $rgb($3,$4,$5) 1 245 165 86 20 20 20 drawrect -dnr @AkT 0 1 245 165 86 20 20 20 drawdot @AkT } alias -l AkT.col { if ($1 !isnum 1-) return return $iif($gettok($hget(AkT,Color),$1,32) != $null,$ifmatch,$gettok(16773360 15098980 16745090 16759225 16765650 0 13107200 16763080 16777215 0 15369854,$1,32)) } ;***** ;Ligne ;***** alias -l AkT.ligne { writeini -n AkT.ini Config Lignes $1 if ($readini(AkT.ini,Config,Apply)) { AkT.apply hadd -m AkT Dir $deltok($hget(AkT,Dir),-1,59) hadd -m AkT Parent $deltok($hget(AkT,Parent),-1,59) } } ;************* ;Clear & Apply ;************* alias -l AkT.clear drawrect -fnr @AkT $akt.col(1) 1 215 32 150 156 alias -l AkT.apply $+($iif(!$readini(AkT.ini,Config,Lignes),.),AkT.draw) anim ;******* ;Exemple ;******* alias -l AkT.exemple { var %c = write exemple.txt write -c exemple.txt %c AkT Begin %c Menu 1 %c .Sous Menu 1 %c ..Nom:Action %c .Nom:Action %c .Sous Menu 2 %c ..Sous Sous Menu 1 %c ...Nom:Action %c ...- %c ...Nom:Action %c ..Sous Sous Menu 2 %c ...Nom:Action %c ..Nom:Action %c - %c Menu 2 %c .Nom:Action %c AkT End run exemple.txt .timer 1 2 .remove exemple.txt } ;****** ;Remove ;****** alias AkT.remove { .remove AkT.ini echo 2 -at * Données de l'ArKaTool effacées ! } ;End Of File

Conclusion :


Merci de me faire part de vos idées d'application, remarques, conseils (surtout sur l'esthétisme de préférence :D), ...
C'est un début et si ça plait, je pourrai l'améliorer pour le rendre beaucoup plus utile. J'espère que ce code vous plaira :)

Si vous trouvez un skin plus joli que celui de base, je suis preneur ! Envoyez moi la ligne Colors qui est dans le fichier AkT.ini

Il faut impérativement mIRC 6.17 pour que le code fonctionne, et 6.21 pour qu'il soit parfait :p

Merci à Jordane, Panthouffle et Wims pour leur test et leurs avis

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.