Bon, et bien voila ma dernière nouveauté ^^
Il s'agit ici d'un bureau (de résolution personnalisable) sous mIRC, ayant à peu près les mêmes fonctions que celui de windows (pas aussi complet certes)
L'intérêt ici est de pouvoir executer des commandes très rapidement en cliquant sur les icones souhaitées. Vous pouvez bien entendu ajouter vos propres icones.
La possibilité de changer l'image représentant l'icone est incluse, de même pour le fond de la picwin.
Vous pouvez personnaliser ce bureau (placer les icones ou vous voulez), et vous avez la possibilité de rajouter quelques icones préinscrites (concernant des jeux, des liens, une heure), changer le nom des icones, leur action, supprimer, copier des icones, ...
Des effets de fermeture sont inclus (il faut l'activer) : déconseillé aux machines lentes
Tapez /qs pour ouvrir le bureau (il téléchargera les fichiers requis s'il y en a)
Des sockets de téléchargement sont incluses.
Comme pour Windows, vous pouvez aligner vos icones, les classer par nom, type et date.
Des icones "cachées" peuvent-être rajoutées : le fait de taper leur nom avec la fenêtre @qs active l'executera. Il en est de même avec toutes les icones.
Tapez * pour masquer le texte (vous comprendrez en l'essayant)
Enfin, une option vous permettra de télécharger à la demande un "pack" d'icones. Cette liste peut-être mise à jour (par moi, via le site)
Le code est également composé d'un petit jeu : le but est de taper l'alphabet le plus vite possible (l'icone figure dans les icones supplémentaires)
Une horloge numérique est de la partie
Les icones qui commencent par "QS" sont protégées.
Source / Exemple :
;******************
; Quick System
; By ArKanis
; www.arkanis.eu
;******************
alias qs {
if ($version < 6.14) {
input.request.ok Veuillez mettre votre mIRC à jour afin d'utiliser cette fonctionnalité.
return
}
if ($window(@qs)) {
window -a @qs
return
}
var %needed = barrelongue.bmp¥barre.bmp¥dossier.jpg¥app.jpg¥mirc.jpg¥internet.jpg¥config.jpg¥backgroundQS.jpg¥icone.jpg¥texte.jpg¥xShostingico.bmp, %t = 1, %max = $numtok(%needed,165)
if (!$isdir(ArKanis)) mkdir $+(",$mircdir,ArKanis")
if (!$isdir(ArKanis/Icones)) mkdir $+(",$mircdir,ArKanis/Icones")
while %t <= %max {
var %file = $gettok(%needed,%t,165)
if (!$exists($+(ArKanis/Icones/,%file))) {
hadd -m finish.dl.arka QS qs
hadd -m queue.dl.arka $+(Script-ArKanis/,%file) ArKanis/Icones
}
inc %t
}
if ($hget(queue.dl.arka,0).item) {
var %o = $hget(queue.dl.arka,1).item, %c = $hget(queue.dl.arka,%o)
hdel queue.dl.arka %o
do.dl.arka %o %c
return
}
;Pass
var %o = $readini(Config.ini,QSConfig,VeillePass)
if (%o) {
unset %a %ok
while !%ok {
var %a = $input.request.pass(Quel est votre mot de passe ?)
if (%a === %o) var %ok = 1
if (!%a) var %ok = 2
}
if (%ok == 2) return
}
;Valeurs par défaut
var %ontop = u, %active = a, %bureau = $iif(!$readini(Config.ini,QSConfig,Bureau),l,L)
if ($regex($1-,ontop:([^\s]+))) {
var %ontop = $iif($regml(1),o,u)
}
if ($regex($1-,active:([^\s]+))) {
var %active = $iif($regml(1),a,n)
}
if ($regex($1-,bureau:([^\s]+))) {
var %bureau = $iif($regml(1),l,L)
}
window $+(-,%active,%ontop,BCdg0k0pRz) $+(+d,%bureau) @qs -1 -1 $qs.w(x) $qs.w(y) ArKanis/Icones/qs.ico
var %background = $readini(Config.ini,QSConfig,Background)
drawpic -cmns @qs 1 1 $qs.w(x) $qs.w(y) $iif($exists(%background),$+(",%background,"),ArKanis/Icones/backgroundQS.jpg)
drawpic -nrst @qs 16777215 1 1 86 20 ArKanis/Icones/barre.bmp
drawpic -nrst @qs 16777215 87 1 $calc($qs.w(x) - 85) 20 ArKanis/Icones/barrelongue.bmp
drawrect -nr @qs 0 1 1 1 $calc($qs.w(x) -1) $calc($qs.w(y) -1)
if ($window(@qsempty)) window -c @qsempty
if ($window(@qscopy)) window -c @qscopy
window -BCg0hk0pRz +dL @qsempty -1 -1 $qs.w(x) $qs.w(y)
drawcopy @qs 0 0 $qs.w(x) $qs.w(y) @qsempty 0 0
if ($hget(QSPos)) hfree QSPos
if ($hget(QS)) hfree QS
hmake QSPos 10
writeini -n Config.ini QSDo General action.general
writeini -n Config.ini QS General 01/01/1970 01:00:00 !
writeini -n Config.ini QSConfig Balle 0
if (!$readini(Config.ini,QSicones,General)) writeini -n Config.ini QSicones General Icone:ArKanis/Icones/config.jpg Position:30|30
hload -i QSPos Config.ini QSIcones
qs.sorticones
if (%list) hadd -m QS List %list
qs.draw.icones disp
window -BCg0hk0pRz +dL @qscopy -1 -1 $qs.w(x) $qs.w(y)
drawdot @qs
drawcopy @qs 0 0 $qs.w(x) $qs.w(y) @qscopy 0 0
if ($readini(Config.ini,QSConfig,Veille) > 0) .timerqsveille 1 $calc($ifmatch * 60) qs.veille
}
alias -l action.general {
.timer -h 1 1 $iif($isalias(agp),agp,url -n http://arkanisfr.free.fr/ArKanis/)
}
;***
; Draw
;***
alias -l qs.draw.icones {
if ($1 != disp) drawcopy -n @qsempty 0 0 $qs.w(x) $qs.w(y) @qs 0 0 $qs.w(x) $qs.w(y)
var %max = $numtok($hget(QS,List),163), %t = %max
while %t > 0 {
var %r = $gettok($hget(QS,List),%t,163), %u = $hget(QSPos,%r)
if ((%r != Last) && (%r != QSBalle)) {
var %reg = $regex(%u,Position:([^\s]+)), %position = $regml(1)
if ($regex(%position,([^\s]+)\|([^\s]+))) {
var %x = $regml(1), %y = $regml(2)
if ((%x !isnum) || (%x > $qs.w(x))) var %x = $r(0,$calc($qs.w(x) - 52))
if ((%y !isnum) || (%y > $qs.w(y))) var %y = $r(25,$calc($qs.w(y) - 87))
}
else var %x = $r(0,$calc($qs.w(x) - 52)), %y = $r(25,$calc($qs.w(y) - 52))
var %position = %x %y
var %reg = $regex(%u,Icone:([^\s]+)), %icone = $regml(1)
if ((!%icone) || (!$exists($replace(%icone,¥,$chr(32))))) var %icone = ArKanis/Icones/icone.jpg
drawrect -nr @qs 0 1 $calc(%x -1) $calc(%y -1) 52 52
qs.pic %icone %x %y 50 50
hadd -m QSPos %r $+(Icone:,%icone) $+(Position:,%x,|,%y)
var %m = $iif($hget(QS,Sel) == %r,1,0), %m2 = $iif($hget(QSDo,LastName) == %r,1,0)
if (%r == $hget(QS,Sel)) {
var %text = $null, %max = $calc($len(%r) + 10), %lo = 1, %maxy = $calc($qs.w(y) - 43)
while ((%lo <= %max) && (%y <= %maxy)) {
while $width($+(%text,$mid(%r,%lo,1)),Tahoma,10,0,0) <= 50 && %lo <= %max {
var %text = $+(%text,$mid(%r,%lo,1))
inc %lo
}
if (%text) drawtext -bnr @qs $iif(%m2,12707327,16777215) $iif(%m,9835520,16419980) Tahoma 10 $calc(%x +1) $calc(%y + 51) $replace(%text,$chr(165),$chr(32))
inc %y 10
unset %text
}
}
else {
var %lo = 1, %max = $calc($len(%r) + 10), %text = $null, %maxlen = $iif($width(%r,Tahoma,10,0,0) > 50,38,50)
while $width($+(%text,$mid(%r,%lo,1)),Tahoma,10,0,0) <= %maxlen && %lo <= %max {
var %text = $+(%text,$mid(%r,%lo,1))
inc %lo
}
drawtext -bnr @qs $iif(%m2,12707327,16777215) $iif(%m,9835520,16419980) Tahoma 10 $calc(%x +1) $calc(%y + 51) $iif(%maxlen == 38,$+($replace(%text,$chr(165),$chr(32)),...),$replace(%text,$chr(165),$chr(32)))
}
hadd -m QSClick %r %x %y 50 50
}
dec %t
}
}
alias -l draw.texte.clavier {
if ($1 != verif) {
drawrect -nr @qs 0 1 8 $calc($qs.w(y) -32) $calc($qs.w(x) -16) 20
drawrect -fnr @qs 14939391 1 9 $calc($qs.w(y) -31) $calc($qs.w(x) -18) 18
if ($hget(QS,Clavier)) drawtext -cnr @qs 0 Tahoma 12 15 $calc($qs.w(y) -29) $calc($qs.w(x) -27) 20 $iif($hget(QS,ClavierSecret),$str(*,$len($hget(QS,Clavier))),$hget(QS,Clavier))
}
if ($mouse.key & 1) qs.draw.sel $$hget(QS,Sel)
}
alias -l qs.draw.sel {
if ((!$1) && (!$hget(QS,Sel))) return
var %title = $iif($1,$1,$hget(QS,Sel)), %u = $hget(QSPos,%title)
var %reg = $regex(%u,Position:([^\s]+)), %position = $regml(1)
var %reg = $regex(%u,Icone:([^\s]+)), %icone = $regml(1)
qs.pic %icone $gettok(%position,1,124) $gettok(%position,2,124)
}
alias -l qs.pic {
if (!$3) return
if (!$window(@qs)) return
var %icone = $1, %nom = $gettok($replace(%icone,\,/),-1,47)
if ($readini(Config.ini,QSTransparence,%nom) != $null) drawpic -cmnstr @qs $ifmatch $2- $+(",$replace(%icone,¥,$chr(32)),")
else drawpic -cmns @qs $2- $+(",$replace(%icone,¥,$chr(32)),")
}
;***
; Menu
;***
menu @qs {
sclick:qs.sclick
mouse:qs.mouse
dclick:qs.dclick
-
;*** Propriétés de l'icone
$iif($qs.sclick(right) && $qs.sclick(right),Propriétés de l'icone)
.Changer l'icone: qs.chg.img $hget(QS,Sel)
.Renommer:qs.menu.rename.start $hget(QS,Sel)
.Supprimer:qs.delete.icone $hget(QS,Sel)
.Changer l'action:qs.chg.action $hget(QS,Sel)
.Définir la transparence:qs.transparence $hget(QS,Sel)
;*** Propriétés de la fenêtre
$iif(!$qs.sclick(right) && !$qs.sclick(right),Propriétés de la fenêtre)
.Changer l'arrière plan:qs.chg.img $hget(QS,Sel)
.$iif($readini(Config.ini,QSConfig,Start),$style(1)) Ouvrir automatiquement à l'ouverture de mIRC:qs.menu.rename.start $hget(QS,Sel)
.Animations
..$iif($readini(Config.ini,QSConfig,Animate),$style(1)) Activer les animations de fermeture:qs.effects.status
..Changer l'image de fermeture:qs.effects.background
.Icones supplémentaires
..$iif($readini(Config.ini,QSConfig,Jeux),$style(1)) Ajouter les jeux:qs.icones.disp Jeux
..$iif($readini(Config.ini,QSConfig,Liens),$style(1)) Ajouter les liens utiles:qs.icones.disp Liens
..$iif($readini(Config.ini,QSConfig,Serveurs),$style(1)) Ajouter les icones Serveurs:qs.icones.disp Serveurs
..$iif($readini(Config.ini,QSConfig,Divers),$style(1)) Divers:qs.icones.disp Divers
..Balle
...$iif($readini(Config.ini,QSConfig,Balle) && !$timer(qs.balle),$style(1)) Afficher:qs.balle
...Definir sa couleur de transparence:qs.transparence QSBalle
...Changer l'icone:qs.chg.img QSBalle
...Changer l'action:{
var %action = $input.request(Action à réaliser ?)
if (!%action) return
writeini -n Config.ini QSDo QSBalle %action
}
.$iif(!$readini(Config.ini,QSConfig,Bureau),$style(1)) Mettre @QS dans la barre des tâches:qs.taskbar $readini(Config.ini,QSConfig,Bureau)
.$iif(!$hget(QS,Sel),Image de veille)
..$iif($readini(Config.ini,QSConfig,Veille),$style(1) Activer au bout de ... $ifmatch minutes,Activer au bout de ...) :{
var %t = $input.request(Activer au bout de combien de minutes ? 0 Pour desactiver)
if (%t >= 0) writeini -n Config.ini QSConfig Veille %t
if (%t > 0) .timerqsveille 1 $calc(%t * 60) qs.veille
}
..$iif($readini(Config.ini,QSConfig,VeilleBalle),$style(1)) Ajouter la balle: qs.veille.balle
..Changer l'image de veille: qs.chg.img Veille
..Activer l'écran de veille:.timerqsveille 1 2 qs.veille
..$iif($readini(Config.ini,QSConfig,VeillePass),$style(1)) A la reprise, protéger par mot de passe:qs.veille.pass
.Résolution
..Personnaliser:qs.resol $input.request(Largeur (horizontal), comprise entre 400 et 2000) $input.request(Hauteur (vertical), comprise entre 300 et 2000)
..-
..640*480:qs.resol 640 480
..800*600:qs.resol 800 600
..1024*768:qs.resol 1024 768
..1280*1024:qs.resol 1280 1024
..1600*1200:qs.resol 1600 1200
;***
$iif($hget(QS,Sel),Copier,$iif(!$hget(QS,Copy),$style(2)) Coller) : qs.c-c $hget(QS,Sel)
-
$iif(!$hget(QS,Sel),Réorganiser les icones)
.$iif($readini(Config.ini,QSConfig,Aligner),$style(1)) Aligner:{
writeini -n Config.ini QSConfig Aligner $iif($readini(Config.ini,QSConfig,Aligner),0,1)
if ($readini(Config.ini,QSConfig,Aligner)) qs.align
}
.$iif($readini(Config.ini,QSConfig,Fixer),$style(1)) Fixer les icones:writeini -n Config.ini QSConfig Fixer $iif($readini(Config.ini,QSConfig,Fixer),0,1)
.$iif(!$readini(Config.ini,QSConfig,Aligner),$style(2)) Réorganiser par
..$iif($readini(Config.ini,QSConfig,Sort) == Nom,$style(1)) Nom:writeini -n Config.ini QSConfig Sort Nom | if ($readini(Config.ini,QSConfig,Aligner)) qs.sorticones
..$iif($readini(Config.ini,QSConfig,Sort) == Type || !$readini(Config.ini,QSConfig,Sort),$style(1)) Type:writeini -n Config.ini QSConfig Sort Type | if ($readini(Config.ini,QSConfig,Aligner)) qs.sorticones
..$iif($readini(Config.ini,QSConfig,Sort) == Date,$style(1)) Date:writeini -n Config.ini QSConfig Sort Date | if ($readini(Config.ini,QSConfig,Aligner)) qs.sorticones
$iif(!$hget(QS,Sel),Nouveau)
.Fichier Texte:qs.addtext
.Dossier:qs.addfolder
.Raccourci
..ArKanis:qs.addicone ArKanis icone.jpg
..mIRC:qs.addicone mIRC mirc.jpg
..Application:qs.addicone Application app.jpg
..URL:qs.addicone URL internet.jpg
..Caché (taper le nom sur le clavier vous fera l'ouvrir):qs.addcache
.-
$iif(!$hget(QS,Sel),Télécharger le pack d'icones supplémentaires):qs.dl.pack
-
Fermer:qs.close
}
alias -l qs.resol {
if (($1 isnum 400-2000) && ($2 isnum 300-2000)) {
writeini -n Config.ini QSConfig WindowX $round($1,0)
writeini -n Config.ini QSConfig WindowY $round($2,0)
window -c @qs
.timer -h 1 500 qs
}
}
alias -l qs.taskbar {
writeini -n Config.ini QSConfig Bureau $iif($readini(Config.ini,QSConfig,Bureau),0,1)
input.request.ok Vous aurez besoin de redémarrer la fenêtre pour observer les changements.
}
alias -l qs.chg.img {
if (($1) && ($1 != Veille)) {
var %title = $1, %u = $hget(QSPos,%title), %fol = $iif($isdir(ArKanis/Icones),$+($mircdir,ArKanis/Icones/),$mircdir)
var %reg = $regex(%u,Position:([^\s]+)), %position = $regml(1)
var %reg = $regex(%u,Icone:([^\s]+)), %icone = $regml(1)
hadd -m QSSel Nom %title
qs.icones.sel
}
else {
var %img = $sfile($mircdir,Image 800*600,Sélectionner)
if ((!$exists(%img)) || (!%img)) return
if ($1 == Veille) {
if (!$input.request.y.n(Etes-vous sûr(e) de vouloir choisir %img en tant qu'image de veille ?)) return
writeini -n Config.ini QSConfig VeilleImg %img
}
else {
if (!$input.request.y.n(Etes-vous sûr(e) de vouloir choisir %img en tant qu'image de fond ?)) return
writeini -n Config.ini QSConfig Background %img
window -c @qs
.timer -h 1 500 qs
}
qs.save
}
}
alias -l qs.menu.rename.start {
if ($1) {
if (($left($1,2) == QS) || ($1 == General)) {
input.request.ok Impossible de renommer ces icones
return
}
var %nom = $1, %nom2 = $input.request(Quel sera le nouveau nom de $+(",$1,") ?)
if (!%nom2) return
if (!$input.request.y.n(Etes-vous sûr(e) de vouloir changer le nom de %nom ?)) return
if (%nom == %nom2) return
hadd -m QSPos %nom2 $hget(QSPos,%nom)
hadd -m QS List $reptok($hget(QS,List),%nom,%nom2,1,167)
hdel QSPos %nom
var %r = $readini(Config.ini,QS,%nom)
writeini -n Config.ini QS %nom2 $iif($numtok(%r,32) == 3,%r,$asctime(dd/mm/yyyy HH:nn:ss) Divers)
if (%r) remini Config.ini QS %nom
qs.save
qs.sorticones
qs.draw.icones
drawdot @qs
}
else writeini -n Config.ini QSConfig Start $iif($readini(Config.ini,QSConfig,Start),0,1)
}
alias -l qs.delete.icone {
if (!$1) return
var %nom = $1
if (!$input.request.y.n(Etes-vous sûr(e) de vouloir supprimer l'icone $replace(%nom,¥,$chr(32)) ?)) return
hadd -m QS List $remtok($hget(QS,List),%nom,1,167)
if ($hget(QSPos,%nom)) hdel QSPos %nom
if ($readini(Config.ini,QS,%nom)) remini Config.ini QS %nom
qs.save
qs.sorticones
qs.draw.icones
drawdot @qs
}
alias -l qs.effects.status writeini -n Config.ini QSConfig Animate $iif($readini(Config.ini,QSConfig,Animate),0,1)
alias -l qs.chg.action {
if (($left($1,2) == QS) || ($1 == General)) {
input.request.ok Impossible de changer l'action de ces icones
return
}
if ($1) {
var %nom = $1, %action = $input.request(Action à réaliser ?)
if (!%action) return
writeini -n Config.ini QSDo %nom %action
}
}
alias -l qs.icones.disp {
if (!$1) return
writeini -n Config.ini QSConfig $1 $iif($readini(Config.ini,QSConfig,$1),0,1)
if ($1 == Jeux) {
if ($readini(Config.ini,QSConfig,$1)) {
var %icone = $iif($exists(ArKanis/Icones/lettres.jpg),ArKanis/Icones/lettres.jpg,ArKanis/Icones/icone.jpg), %x = $r(25,775), %y = $r(25,525)
hadd -m QSPos QSAlphabet $+(Icone:,%icone) $+(Position:,%x,|,%y)
writeini -n Config.ini QSIcones QSAlphabet $hget(QSPos,QSAlphabet)
writeini -n Config.ini QS QSAlphabet $asctime(dd/mm/yyyy HH:nn:ss) !
writeini -n Config.ini QSDo QSAlphabet qs.alphabet
if ($isalias(bombe.cfg)) {
var %icone = $iif($exists(ArKanis/Icones/bombe.jpg),ArKanis/Icones/bombe.jpg,ArKanis/Icones/icone.jpg), %x = $r(25,775), %y = $r(25,525)
hadd -m QSPos QSBombe $+(Icone:,%icone) $+(Position:,%x,|,%y)
writeini -n Config.ini QSIcones QSBombes $hget(QSPos,QSBombe)
writeini -n Config.ini QS QSBombe $asctime(dd/mm/yyyy HH:nn:ss) !
writeini -n Config.ini QSDo QSBombe bombe.cfg
}
if ($isalias(sudoku)) {
var %icone = $iif($exists(ArKanis/Icones/sudoku.bmp),ArKanis/Icones/sudoku.bmp,ArKanis/Icones/icone.jpg), %x = $r(25,775), %y = $r(25,525)
hadd -m QSPos QSSudoku $+(Icone:,%icone) $+(Position:,%x,|,%y)
writeini -n Config.ini QSIcones QSSudoku $hget(QSPos,QSSudoku)
writeini -n Config.ini QS QSSudoku $asctime(dd/mm/yyyy HH:nn:ss) !
writeini -n Config.ini QSDo QSSudoku Sudoku
}
}
else {
if ($hget(QSPos,QSAlphabet)) hdel QSPos QSAlphabet
if ($readini(Config.ini,QS,QSAlphabet)) remini Config.ini QS QSAlphabet
if ($readini(Config.ini,QSDo,QSAlphabet)) remini Config.ini QSDo QSAlphabet
if ($hget(QSPos,QSBombe)) hdel QSPos QSBombe
if ($readini(Config.ini,QS,QSBombe)) remini Config.ini QS QSBombe
if ($readini(Config.ini,QSDo,QSBombe)) remini Config.ini QSDo QSBombe
if ($hget(QSPos,QSSudoku)) hdel QSPos QSSudoku
if ($readini(Config.ini,QS,QSSudoku)) remini Config.ini QS QSSudoku
if ($readini(Config.ini,QSDo,QSSudoku)) remini Config.ini QSDo QSSudoku
}
qs.draw.icones
drawcopy -n @qs 0 0 $qs.w(x) $qs.w(y) @qscopy 0 0 $qs.w(x) $qs.w(y)
drawdot @qs
}
elseif ($istok(Liens-Divers-Serveurs,$1,45)) {
unset %alias
if ($1 == Liens) var %icones = ArKanis/Icones/internet.jpg, %files = ArKanis£http://arkanisfr.free.fr/ArKanis/¥ircFR£www.ircfr.com£ircfr¥Quakenet£www.quakenet.eu.org£qnet, %alias = url -n
elseif ($1 == Divers) var %icones = ArKanis/Icones/disquette.jpg, %files = Heure£qs.clock£clock.bmp¥BotWar£botwar£botwar.bmp¥Veille£qs.veille£screen.bmp¥Manager£manager£calendrier.bmp
elseif ($1 == Serveurs) var %icones = ArKanis/Icones/xShostingico.bmp, %files = xShosting£url -n http://www.xShoting.org¥FAQ£url -n http://xshosting.org/FAQ/¥Ajouter©un©serveur£qs.add.multiserv¥Connection©à©un©serveur£qs.multiserv.connect
var %max = $numtok(%files,165), %t = 1
if ($readini(Config.ini,QSConfig,$1)) {
while %t <= %max {
var %act = $gettok(%files,%t,165),%nom = $replace($+(QS,$gettok(%act,1,163)),©,¥), %f = $gettok(%act,3,163)
if ((%nom == manager) && (!$isalias(manager))) unset %nom
elseif (%f) {
if ($mid(%f,-4,1) == $chr(46)) var %u = $+(ArKanis/Icones/,%f)
else var %u = $+(ArKanis/Icones/,%f,.jpg)
if ($exists(%u)) var %icone = %u
}
else var %icone = %icones
var %x = $r(25,725), %y = $r(25,525)
hadd -m QSPos %nom $+(Icone:,%icone) $+(Position:,%x,|,%y)
writeini -n Config.ini QSIcones %nom $hget(QSPos,%nom)
writeini -n Config.ini QS %nom $asctime(dd/mm/yyyy HH:nn:ss) !
writeini -n Config.ini QSDo %nom %alias $gettok(%act,2,163)
inc %t
}
}
else {
while %t <= %max {
var %act = $gettok(%files,%t,165),%nom = $replace($+(QS,$gettok(%act,1,163)),©,¥)
if ($hget(QSPos,%nom)) hdel QSPos %nom
if ($readini(Config.ini,QS,%nom)) remini Config.ini QS %nom
if ($readini(Config.ini,QSDo,%nom)) remini Config.ini QSDo %nom
inc %t
}
}
}
qs.save
qs.sorticones
qs.draw.icones
drawdot @qs
}
alias -l qs.c-c {
if (($left($1,2) == QS) || ($1 == General)) {
input.request.ok Impossible de copier ces icones
return
}
if ($1) hadd -m QS Copy $1
else {
if (!$hget(QS,Copy)) return
var %t = 2, %nom = $hget(QS,Copy)
while ($readini(Config.ini,QSIcones,$+(%nom,¥,-,%t,-))) inc %t
var %newnom = $+(%nom,$chr(165),-,%t,-)
writeini -n Config.ini QS %newnom $iif($readini(Config.ini,QS,%nom),$ifmatch,$asctime(dd/mm/yyyy HH:nn:ss) Copy)
if (!$regex(%newnom,[a-zA-Z0-9]|[-\.!\?¥\s\+])) {
input.request.ok Des caractères non autorisés sont utilisés. Les seuls caractères autorisés sont les lettres, les nombres, l'espace, et + - . ! ?.
return
}
if ($readini(Config.ini,QSDo,%nom)) writeini -n Config.ini QSDo %newnom $ifmatch
unset %x %y
if ($readini(Config.ini,QSConfig,Aligner)) {
var %nb = $ini(Config.ini,QSIcones,0), %col = $int($calc(%nb / 8)), %x = $calc(70* %col + 70)
var %y = $calc(%nb - %col * 6)
}
if (%x !isnum 25-775) var %x = $r(25,775)
if (%y !isnum 25-575) var %y = $r(25,575)
var %u = $hget(QSPos,%nom)
var %reg = $regex(%u,Icone:([^\s]+)), %icone = $regml(1)
if (!$exists(%icone)) var %icone = ArKanis/Icones/icone.jpg
hadd -m QSPos %newnom $+(Icone:,%icone) $+(Position:,%x,|,%y)
hadd -m QS List $iif($hget(QS,List),$+($ifmatch,£),%newnom)
qs.save
qs.sorticones
qs.draw.icones
drawdot @qs
}
}
alias -l qs.transparence {
if ($1) {
var %nom = $1, %reg = $regex($hget(QSPos,%nom),Icone:([^\s]+)), %icone = $regml(1)
if (!%icone) {
input.request.ok Impossible de récuperer l'image de l'icone %nom
return
}
if (!$input.request.y.n(Etes-vous sûr(e) de vouloir changer la couleur de transparence de l'icone $replace(%icone,¥,$chr(32)) ?)) return
var %nom = $gettok($replace(%icone,\,/),-1,47)
var %o = $readini(Config.ini,QSTransparence,%nom)
if (%o != $null) {
if ($input.request.y.n(Voulez-vous supprimer la transparence actuelle ?)) { remini Config.ini QSTransparence %nom | return }
}
var %r = $input.request(Couleur rouge ? de 0 à 255), %v = $input.request(Couleur verte ? de 0 à 255), %b = $input.request(Couleur bleue ? de 0 à 255)
if (%r !isnum 0-255) return
if (%v !isnum 0-255) return
if (%b !isnum 0-255) return
var %rgb = $rgb(%r,%v,%b)
if (%rgb !isnum 0-16777215) {
input.request.ok Erreur : les couleurs sont invalides.
return
}
writeini -n Config.ini QSTransparence %nom %rgb
qs.save
qs.sorticones
qs.draw.icones
drawdot @qs
}
}
;***
; Clavier
;***
on *:keydown:@qs:*:{
if ($hget(QS,Veille)) {
var %o = $readini(Config.ini,QSConfig,VeillePass)
if (%o) {
unset %a %ok
while !%ok {
var %a = $input.request.pass(Quel est votre mot de passe ?)
if (%a === %o) var %ok = 1
if (!%a) var %ok = 2
}
if (%ok == 2) return
}
hdel QS Veille
if ($readini(Config.ini,QSConfig,VeilleBalle)) .timerqs.balle off
drawcopy @qscopy 0 0 $qs.w(x) $qs.w(y) @qs 0 0
}
if ($readini(Config.ini,QSConfig,Veille) > 0) .timerqsveille 1 $calc($ifmatch * 60) qs.veille
unset %q
if ($regex($keychar,[a-zA-Z0-9]|[-\.!\?¥\s\+])) {
if ($hget(QSAlphabet,On)) {
if (!$window(@alphabet)) return
if (!$hget(QSAlphabet,Last)) {
if ($keychar == a) {
hadd -m QSAlphabet Last $keyval
hadd -m QSAlphabet Time $ticks
hadd -m QSAlphabet Error 0
drawrect -frn @alphabet 16777215 1 0 0 100 100
drawtext -or @alphabet 13150890 Tahoma 50 30 10 $upper($chr($calc($asc($keychar) + 1)))
drawdot @alphabet
hadd -m QSAlphabet Seq $keychar
}
}
else {
hadd -m QSAlphabet Seq $+($hget(QSAlphabet,Seq),$keychar)
if ($keyval == $calc($hget(QSAlphabet,Last) +1)) {
hadd -m QSAlphabet Last $keyval
if ($keychar == z) qs.alphabet.end $calc($ticks - $hget(QSAlphabet,Time))
else {
drawrect -frn @alphabet 16777215 1 0 0 100 100
drawtext -or @alphabet 13150890 Tahoma 50 30 10 $upper($chr($calc($asc($keychar) + 1)))
drawdot @alphabet
}
}
else hinc QSAlphabet Error
}
return
}
if ($keyval == 13) {
qs.clavier $iif($hget(QS,Clavier),$ifmatch,$hget(QSDo,LastName))
return
}
if ($keyval == 9) return
if ($keyval == 32) hinc QS Space
else {
hadd -m QS Clavier $+($hget(QS,Clavier),$iif($hget(QS,Space),$str($chr(32),$ifmatch)),$keychar)
hadd -m QS Space 0
}
.timerqs.clavier 1 2 qs.clavier $hget(QS,Clavier)
var %q = 1
}
if ($keychar == *) {
if (!$hget(QS,ClavierSecret)) {
hadd -m QS ClavierSecret 1
if ($hget(QS,Clavier)) {
drawrect -nr @qs 0 1 8 $calc($qs.w(y) -32) $calc($qs.w(x) -16) 20
drawrect -fnr @qs 14939391 1 9 $calc($qs.w(y) -31) $calc($qs.w(x) -18) 18
drawtext -cnr @qs 0 Tahoma 12 15 $calc($qs.w(y) -29) $calc($qs.w(x) -27) 20 $iif($hget(QS,ClavierSecret),$str(*,$len($hget(QS,Clavier))),$hget(QS,Clavier))
drawdot @qs
}
}
}
if (($keyval == 8) && (!$hget(QSAlphabet,On))) {
if ($hget(QS,Clavier)) {
hadd -m QS Clavier $left($hget(QS,Clavier),-1)
.timerqs.clavier 1 2 qs.clavier $hget(QS,Clavier)
var %q = 1
}
}
if (%q) {
drawrect -nr @qs 0 1 8 $calc($qs.w(y) -32) $calc($qs.w(x) -16) 20
drawrect -fnr @qs 14939391 1 9 $calc($qs.w(y) -31) $calc($qs.w(x) -18) 18
if ($hget(QS,Clavier)) drawtext -cnr @qs 0 Tahoma 12 15 $calc($qs.w(y) -29) $calc($qs.w(x) -27) 20 $iif($hget(QS,ClavierSecret),$str(*,$len($hget(QS,Clavier))),$hget(QS,Clavier))
drawdot @qs
}
}
alias -l qs.clavier {
.timerqs.clavier off
if ($mouse.key & 1) {
if (!$window(@qscopy)) return
if (!$window(@qsempty)) return
drawcopy -n @qscopy 0 0 $qs.w(x) $qs.w(y) @qs 0 0 $qs.w(x) $qs.w(y)
drawcopy -n @qsempty 0 $calc($qs.w(y) - 32) $qs.w(x) 33 @qs 0 $calc($qs.w(y) - 32) $qs.w(x) 33
var %o = $timer(qs.icone.move).com, %o = %icone = $gettok(%o,3,32), %pos = $gettok(%o,4,32), %x = $gettok(%pos,1,124), %y = $gettok(%pos,2,124)
qs.pic %icone %x %y 50 50
drawrect -nr @qs 0 1 $calc(%x -1) $calc(%y -1) 52 52
}
else {
if (!$window(@qsempty)) return
drawcopy -n @qsempty 8 $calc($qs.w(y) -32) $calc($qs.w(x) -16) 20 @qs 8 $calc($qs.w(y) -32) $calc($qs.w(x) -16) 20
qs.draw.icones
}
draw.texte.clavier verif
drawdot @qs
if ($hget(QS,ClavierSecret)) hdel QS ClavierSecret
if (!$1) return
var %text = $replace($1-,$chr(32),$chr(165))
if ($readini(Config.ini,QSDo,%text)) .timer -h 1 1 $ifmatch
hdel QS Clavier
}
;***
; Effets
;***
alias -l qs.effects.background {
if (!$input.request.y.n(Etes-vous sûr(e) de vouloir changer l'image de fond visible à la fermeture ?)) return
var %nom = $sfile($mircdir,Image 800*600,Sélectionner)
if (!$exists(%nom)) return
writeini -n Config.ini QSConfig AnimateBackground %nom
}
alias -l qs.close {
.timerqs.save off
qs.save
.timerqs.balle off
.timerqsveille off
if ($window(@alphabet)) window -c @alphabet
if ($window(@qssel)) window -c @qssel
if ($window(@qsempty)) window -c @qsempty
if ($window(@qsveille)) window -c @qsveille
var %r = $readini(Config.ini,QSConfig,AnimateBackground),%pic = $iif($exists(%r) && %r,%r,$+($mircdir,ArKanis/Icones/elishabackground.jpg))
if (($window(@qscopy)) && ($readini(Config.ini,QSConfig,Animate)) && ($exists(%pic))) {
drawpic -cms @qscopy 0 0 $qs.w(x) $qs.w(y) $+(",%pic,")
var %r = $r(1,5), %timer = 0
if (%r == 1) {
var %h = 0, %j = 0, %maxx = $qs.w(x), %maxy = $qs.w(y)
if ($hget(Effet1X)) hfree Effet1X
if ($hget(Effet1Y)) hfree Effet1Y
while ((%h <= %maxx) || (%j <= %maxy)) {
if (%h <= %maxx) hadd -m Effet1X %h 1
if (%j <= %maxy) hadd -m Effet1Y %j 1
inc %h
inc %j
}
while (($hget(Effet1X,0).item) || ($hget(Effet1Y,0).item)) {
var %x = $hget(Effet1X,$r(1,$hget(Effet1X,0).item)).item
if ($hget(Effet1X,%x)) hdel Effet1X %x
var %y = $hget(Effet1Y,$r(1,$hget(Effet1Y,0).item)).item
if ($hget(Effet1Y,%y)) hdel Effet1Y %y
if (!%x) var %x = 0
if (!%y) var %y = 0
inc %timer 5
.timerqs.effet. $+ %timer -h 1 %timer qs.effet 1 %x %y
}
inc %timer 500
}
elseif (%r == 2) {
var %x = 1
while %x <= $qs.w(x) {
inc %timer 5
.timerqs.effet. $+ %timer -h 1 %timer qs.effet 2 %x
inc %x 5
}
}
elseif (%r == 3) {
var %y = 1
while %y <= $qs.w(x) {
inc %timer 5
.timerqs.effet. $+ %timer -h 1 %timer qs.effet 3 %y
inc %y 5
}
}
elseif (%r == 4) {
var %x1 = 0, %x2 = $qs.w(x), %y1 = 0, %y2 = $qs.w(y)
while ((%x2 >= 0) && (%y2 >= 0)) {
inc %timer 5
.timerqs.effet. $+ %timer -h 1 %timer drawrect -r @qs 0 1 %x1 %y1 %x2 %y2
inc %x1
inc %y1
dec %x2 2
dec %y2 2
}
}
elseif (%r == 5) {
var %x1 = $calc($qs.w(x) /2), %x2 = 0, %y1 = $calc($qs.w(y) /2), %y2 = 0
while ((%x1 >= 0) || (%y1 >= 0)) {
inc %timer
.timerqs.effet. $+ %timer -h 1 %timer drawcopy @qscopy %x1 %y1 %x2 %y2 @qs %x1 %y1 %x2 %y2
dec %x1 2
dec %y1 2
inc %x2 4
inc %y2 4
}
}
inc %timer 500
.timer -h 1 %timer window -c @qs
}
else window -c @qs
.timer -h 1 $calc($iif(%timer isnum,%timer,0) + 500) if ($window(@qscopy)) window -c @qscopy
}
alias -l qs.effet {
if (!$window(@qs)) return
if ($1 == 1) {
var %x = $2, %y = $3
drawcopy -n @qscopy %x 0 1 $qs.w(y) @qs %x 0 1 $qs.w(y)
drawcopy -n @qscopy 0 %y $qs.w(x) 1 @qs 0 %y $qs.w(x) 1
drawdot @qs
}
elseif ($1 == 2) {
if (!$2) return
var %x = $2
drawcopy -n @qscopy %x 0 5 $qs.w(y) @qs %x 0 5 $qs.w(y)
drawdot @qs
}
elseif ($1 == 3) {
if (!$2) return
var %y = $2
drawcopy -n @qscopy 0 %y $qs.w(x) 5 @qs 0 %y $qs.w(x) 5
drawdot @qs
}
}
;***
; Opérations sur les icones
;***
alias -l qs.sorticones {
var %r = $readini(Config.ini,QSConfig,Sort)
if (!$istok(Nom-Type-Date,%r,45)) var %r = Type
if (%r == Nom) {
var %t = 1, %max = $hget(QSPos,0).item, %list = $null
while %t <= %max {
var %list = $+(%list,$iif(%list,£),$hget(QSPos,%t).item))
inc %t
}
var %list = $sorttok(%list,163)
}
elseif (%r == Type) {
var %t = 1, %max = $hget(QSPos,0).item, %list = $null, %list2 = $null
while %t <= %max {
var %ti = $hget(QSPos,%t).item
var %list2 = $+(%list2,$iif(%list2,£),$iif($gettok($readini(Config.ini,QS,%ti),3,32),$ifmatch,z),§,%ti)
inc %t
}
}
elseif (%r == Date) {
var %t = 1, %max = $hget(QSPos,0).item, %list = $null, %list2 = $null
while %t <= %max {
var %ti = $hget(QSPos,%t).item, %list2 = $+(%list2,$iif(%list2,£),$iif($time($gettok($readini(Config.ini,QS,%ti),1-2,32)),$ifmatch,$ctime),§,%ti)
inc %t
}
}
if ($istok(Date-Type,%r,45)) {
var %list2 = $sorttok(%list2,163)
var %t = 1, %max = $numtok(%list2,163)
while %t <= %max {
var %list = $+(%list,$iif(%list,£),$gettok($gettok(%list2,%t,163),2,167))
inc %t
}
}
hadd -m QS List %list
qs.align
}
alias -l qs.align {
if (!$readini(Config.ini,QSConfig,Aligner)) return
var %t = 1, %max = $numtok($hget(QS,List),163), %ligne = 0, %colonne = 1
while %t <= %max {
var %nom = $gettok($hget(QS,List),%t,163), %u = $hget(QSPos,%nom)
var %reg = $regex(%u,Icone:([^\s]+)), %icone = $regml(1)
inc %ligne
if (%ligne > 8) { inc %colonne | var %ligne = 1 }
hadd -m QSPos %nom $+(Icone:,%icone) $+(Position:,$calc(%colonne * 80 - 50),|,$calc(%ligne * 70 - 40))
inc %t
}
qs.draw.icones
drawdot @qs
}
;***
; Ajouts
;***
alias -l qs.addcache {
var %nom = $replace($input.request(Nom du fichier caché ?),$chr(32),¥)
if (($left(%nom,2) == QS) || (%nom == General)) {
input.request.ok Votre fichier ne peut commencer par QS (nom réservé).
return
}
if ($len(%nom) > 20) {
input.request.ok Veuillez choisir un nom d'icone plus court (max 20 caractères).
return
}
if (!$regex(%nom,^[a-zA-Z0-9]|[-\.!\?¥\s\+]$)) {
input.request.ok Des caractères non autorisés sont utilisés. Les seuls caractères autorisés sont les lettres, les nombres, l'espace, et + - . ! ?.
return
}
if ($readini(Config.ini,QSDo,%nom)) {
input.request.ok Ce nom existe déjà. Veuillez en choisir un autre.
return
}
var %action = $input.request(Alias à executer ? (run ..., away, msg, ...))
if (!%action) return
writeini -n Config.ini QSDo %nom %action
writeini -n Config.ini QS %nom $asctime(dd/mm/yyyy HH:nn:ss) Cache
}
alias -l qs.addicone {
var %type = $iif($1,$1,Divers), %nom = $replace($input.request(Nom du raccourci ?),$chr(32),¥)
if (($left(%nom,2) == QS) || (%nom == General)) {
input.request.ok Votre raccourci ne peut commencer par QS (nom réservé).
return
}
if ($len(%nom) > 20) {
input.request.ok Veuillez choisir un nom d'icone plus court (max 20 caractères).
return
}
if ($readini(Config.ini,QSIcones,%nom)) {
if (!$input.request.y.n(Ce nom existe déjà, continuer ?)) return
}
if (!$regex(%nom,[a-zA-Z0-9]|[-\.!\?¥\s\+])) {
input.request.ok Des caractères non autorisés sont utilisés. Les seuls caractères autorisés sont les lettres, les nombres, l'espace, et + - . ! ?.
return
}
if (!%nom) return
if ($1 == URL) var %action = url -n $$input.request(Page à ouvrir ?)
elseif ($1 == Application) var %action = run $$sfile(c:\,Application,Sélectionner)
else var %action = $input.request(Alias à executer ? (run ..., away, msg, ...))
if (!%action) return
unset %x %y
if ($readini(Config.ini,QSConfig,Aligner)) {
var %nb = $ini(Config.ini,QSIcones,0), %col = $int($calc(%nb / 10)), %x = $calc(70* %col + 70)
var %y = $calc(%nb - %col * 10)
}
if (%x !isnum $+(25-,$calc($qs.w(x) - 27))) var %x = $r(25,$calc($qs.w(x) - 27))
if (%y !isnum $+(25-,$calc($qs.w(y) - 97))) var %y = $r(25,$calc($qs.w(y) - 97))
var %icone = $iif($right($2,4) == .jpg,$2,icone.jpg)
hadd -m QSPos %nom $+(Icone:ArKanis/Icones/,%icone) $+(Position:,%x,|,%y)
hadd -m QS List $iif($hget(QS,List),$+($ifmatch,£),%nom)
qs.sorticones
qs.draw.icones
writeini -n Config.ini QSIcones %nom $+(Icone:ArKanis/Icones/,%icone) $+(Position:,%x,|,%y)
writeini -n Config.ini QSDo %nom %action
writeini -n Config.ini QS %nom $asctime(dd/mm/yyyy HH:nn:ss) %type
drawdot @qs
}
alias -l qs.addtext {
var %nom = $remove($input.request(Nom du fichier texte ?),.txt)
if (($left(%nom,2) == QS) || (%nom == General)) {
input.request.ok Votre fichier texte ne peut commencer par QS (nom réservé).
return
}
if ($len(%nom) > 20) {
input.request.ok Veuillez choisir un nom d'icone plus court (max 20 caractères).
return
}
if (!$regex(%nom,[a-zA-Z0-9]|[-\.!\?¥\s\+])) {
input.request.ok Des caractères non autorisés sont utilisés. Les seuls caractères autorisés sont les lettres, les nombres, et - . ! ?.
return
}
var %no = $replace(%nom,$chr(32),¥)
if ((!%nom) || ($readini(Config.ini,QSIcones,$+(%no,.txt)))) { input.request.ok Ce nom de fichier existe déjà ! | return }
var %no = $+(%no,.txt), %file = $+($mircdir,ArKanis/,%nom,.txt)
var %action = run $+(",%file,")
unset %x %y
if ($readini(Config.ini,QSConfig,Aligner)) {
var %nb = $ini(Config.ini,QSIcones,0), %col = $int($calc(%nb / 10)), %x = $calc(70* %col + 70)
var %y = $calc(%nb - %col * 10)
}
if (%x !isnum $+(25-,$calc($qs.w(x) - 27))) var %x = $r(25,$calc($qs.w(x) - 27))
if (%y !isnum $+(25-,$calc($qs.w(x) - 97))) var %y = $r(25,$calc($qs.w(x) - 97))
hadd -m QSPos %no Icone:ArKanis/Icones/texte.jpg $+(Position:,%x,|,%y)
hadd -m QS List $iif($hget(QS,List),$+($ifmatch,£),%no)
qs.sorticones
qs.draw.icones
writeini -n Config.ini QSIcones %no $hget(QSPos,%no)
writeini -n Config.ini QSDo %no %action
writeini -n Config.ini QS %no $asctime(dd/mm/yyyy HH:nn:ss) @Texte
if (!$exists(%file)) write -c $+(",%file,")
run $+(",%file,")
drawdot @qs
}
alias -l qs.addfolder {
var %nom = $remove($input.request(Nom du dossier ?),.txt)
if (($left(%nom,2) == QS) || (%nom == General)) {
input.request.ok Votre dossier ne peut commencer par QS (nom réservé).
return
}
if ($len(%nom) > 20) {
input.request.ok Veuillez choisir un nom d'icone plus court (max 20 caractères).
return
}
if (!$regex(%nom,[a-zA-Z0-9]|[-\.!\?¥\s\+])) {
input.request.ok Des caractères non autorisés sont utilisés. Les seuls caractères autorisés sont les lettres, les nombres, et - . ! ?.
return
}
var %no = $replace(%nom,$chr(32),¥)
if ((!%nom) || ($readini(Config.ini,QSIcones,%no))) { input.request.ok Ce nom de dossier existe déjà ! | return }
var %folder = $+(ArKanis\,%nom), %fol = $+(",$mircdir,%folder,"), %action = run %fol
unset %x %y
if ($readini(Config.ini,QSConfig,Aligner)) {
var %nb = $ini(Config.ini,QSIcones,0), %col = $int($calc(%nb / 10)), %x = $calc(70* %col + 70)
var %y = $calc(%nb - %col * 10)
}
if (%x !isnum $+(25-,$calc($qs.w(x) - 27))) var %x = $r(25,$calc($qs.w(x) - 27))
if (%y !isnum $+(25-,$calc($qs.w(x) - 97))) var %y = $r(25,$calc($qs.w(x) - 97))
hadd -m QSPos %no Icone:ArKanis/Icones/dossier.jpg $+(Position:,%x,|,%y)
hadd -m QS List $iif($hget(QS,List),$+($ifmatch,£),%nom)
qs.sorticones
qs.draw.icones
writeini -n Config.ini QSIcones %no $hget(QSPos,%no)
writeini -n Config.ini QSDo %no %action
writeini -n Config.ini QS %no $asctime(dd/mm/yyyy HH:nn:ss) @Dossier
if (!$isdir(%fol)) mkdir %fol
run $+(",$mircdir,%folder,")
drawdot @qs
}
alias -l qs.save {
if (!$hget(QSPos)) return
if ($hget(QSPos,Last)) hdel QSPos Last
hsave -i QSPos Config.ini QSIcones
}
;***
; Mouse
;***
alias -l qs.dclick {
.timerqs.icone.move off
var %x = $mouse.x, %y = $mouse.y
var %t = 1, %max = $hget(QSPos,0).item
while %t <= %max {
var %title = $hget(QSPos,%t).item, %u = $hget(QSPos,%title)
var %reg = $regex(%u,Position:([^\s]+)), %position = $regml(1)
if ($regex(%position,([^\s]+)\|([^\s]+))) {
var %xx = $regml(1), %yy = $regml(2)
if ($inrect(%x,%y,%xx,%yy,50,50)) {
var %action = $readini(Config.ini,QSDo,%title)
if (!%action) {
if (!$input.request.y.n(Cette icone ne mêne à aucune action. Souhaitez-vous lui en assigner une ?)) return
var %action = $input.request(Nom de l'action ?)
if (!%action) return
writeini -n Config.ini QSDo %title %action
}
if (%title != QSBalle) {
hadd -m QSDo LastName %title
qs.draw.icones
}
drawdot @qs
hadd -m QSDo Last %action
.timer -h 1 1 %action
return
}
}
inc %t
}
}
alias -l qs.sclick {
if ($hget(QS,Veille)) {
var %o = $readini(Config.ini,QSConfig,VeillePass)
if (%o) {
unset %a %ok
while !%ok {
var %a = $input.request.pass(Quel est votre mot de passe ?)
if (%a === %o) var %ok = 1
if (!%a) var %ok = 2
}
if (%ok == 2) return
}
hdel QS Veille
if ($readini(Config.ini,QSConfig,VeilleBalle)) .timerqs.balle off
drawcopy @qscopy 0 0 $qs.w(x) $qs.w(y) @qs 0 0 $qs.w(x) $qs.w(y)
}
if ($readini(Config.ini,QSConfig,Veille) > 0) .timerqsveille 1 $calc($ifmatch * 60) qs.veille
if ($window(@qssel)) window $iif($hget(QS,OnTop,-ao),-a) @qssel
var %qslast = $hget(QS,Sel)
unset %passage
if (%qslast) hdel QS Sel
var %x = $mouse.x, %y = $mouse.y
if ((!$readini(Config.ini,QSConfig,Fixer)) || ($1 == right)) {
;echo -a X : %x - Y : %y :: Longueur : $calc(%x - $iif($gettok($hget(Temp,Last),1,32),$ifmatch,0)) - Hauteur : $calc(%y - $iif($gettok($hget(Temp,Last),2,32),$ifmatch,0))
;hadd -m Temp Last %x %y
var %t = 1, %max = $numtok($hget(QS,List),163)
while %t <= %max {
var %title = $gettok($hget(QS,List),%t,163), %u = $hget(QSPos,%title)
var %reg = $regex(%u,Position:([^\s]+)), %position = $regml(1)
if ($regex(%position,([^\s]+)\|([^\s]+))) {
var %xx = $regml(1), %yy = $regml(2)
var %position = %xx %yy
if ($inrect(%x,%y,%xx,%yy,50,50)) {
var %m2 = $iif($hget(QSDo,LastName) == %title,1,0)
if (%title != QSBalle) {
hadd -m QS Sel %title
qs.draw.icones
if ($timer(qs.clavier)) draw.texte.clavier
drawdot @qs
if ($1 == right) return %title
else {
window -BCdg0hk0pRz +dL @qscopy -1 -1 $qs.w(x) $qs.w(y)
drawcopy @qs 0 0 $qs.w(x) $qs.w(y) @qscopy 0 0 $qs.w(x) $qs.w(y)
if ($hget(QS,Sel)) qs.draw.sel
}
}
else hadd -m QSBalle Last $mouse.x $mouse.y
var %reg = $regex(%u,Icone:([^\s]+)), %icone = $regml(1)
if ((!%icone) || (!$exists($replace(%icone,$chr(165),$chr(32))))) var %icone = ArKanis/Icones/icone.jpg
.timerqs.icone.move -h 1 200 qs.icone.move %title %icone $replace(%position,$chr(32),$chr(124))
return
}
elseif ($inrect(%x,%y,%xx,%yy,50,60)) {
var %m2 = $iif($hget(QSDo,LastName) == %title,1,0)
if (%title != QSBalle) {
hadd -m QS Sel %title
qs.draw.icones
if ($timer(qs.clavier)) draw.texte.clavier
drawdot @qs
if ($1 == right) return
window -BCdg0hk0pRz +dL @qscopy -1 -1 $qs.w(x) $qs.w(y)
drawcopy @qs 0 0 $qs.w(x) $qs.w(y) @qscopy 0 0 $qs.w(x) $qs.w(y)
if ($hget(QS,Sel)) qs.draw.sel
qs.menu.rename.start $hget(QS,Sel)
}
else hadd -m QSBalle Last $mouse.x $mouse.y
var %reg = $regex(%u,Icone:([^\s]+)), %icone = $regml(1)
if ((!%icone) || (!$exists($replace(%icone,$chr(165),$chr(32))))) var %icone = ArKanis/Icones/icone.jpg
.timerqs.icone.move -h 1 200 qs.icone.move %title %icone $replace(%position,$chr(32),$chr(124))
return
}
}
inc %t
}
}
if ((%qslast) && (%qslast != QSBalle)) {
var %ulast = $hget(QSPos,%qslast), %m2 = $iif($hget(QSDo,LastName) == %qslast,1,0)
var %reglast = $regex(%ulast,Position:([^\s]+)), %positionlast = $regml(1)
qs.draw.icones
if ($timer(qs.clavier)) draw.texte.clavier
drawdot @qs
}
drawdot @qs
if ($1 == right) return
if ($inrect(%x,%y,26,2,13,13)) {
if ($hget(QS,OnTop)) { hdel QS OnTop | window -u @qs }
else { hadd -m QS OnTop 1 | window -o @qs }
timerontop off
}
elseif ($inrect(%x,%y,46,2,13,13)) window -n @qs
elseif ($inrect(%x,%y,67,2,13,13)) url -n http://arkanisfr.free.fr/ArKanis/index.php?page=qs
elseif ($inrect(%x,%y,5,2,13,13)) qs.close
elseif ($inrect(%x,%y,0,0,$qs.w(x),10)) qs.move %x %y
}
alias -l qs.icone.move {
if (!$3) return
if ($readini(Config.ini,QSConfig,Fixer)) return
if ($readini(Config.ini,QSConfig,Veille) > 0) .timerqsveille 1 $calc($ifmatch * 60) qs.veille
var %x = $calc($mouse.dx - $window(@qs).dx - 25), %y = $calc($mouse.dy - $window(@qs).dy - 25), %title = $1, %icone = $2
if (!$window(@qs)) .timerqs.icone.move off
if ($mouse.key & 1) {
if (%x >= $calc($qs.w(x) - 25)) var %x = $calc($qs.w(x) - 25)
elseif (%x <= -24) var %x = -24
if (%y >= $calc($qs.w(y) - 97)) var %y = $calc($qs.w(y) - 97)
elseif (%y <= 25) var %y = 25
if ($hget(QSPos,Last) == %x %y) {
.timerqs.last -h 1 100 $!iif($hget(QSPos,Last),hdel QSPos Last,return)
return
}
hadd -m QSPos Last %x %y
.timerqs.last -h 1 100 $!iif($hget(QSPos,Last),hdel QSPos Last,return)
hadd -m QS MoveIcone 1
.timerqs.icone.move -h 0 0 qs.icone.move $1-2 $+(%x,$chr(124),%y)
drawcopy @qscopy 0 0 $qs.w(x) $calc($qs.w(y) - 46) @qs 0 0
if (%title != QSBalle) qs.pic %icone %x %y 50 50
drawrect -nr @qs 0 1 $calc(%x -1) $calc(%y -1) 52 52
drawdot @qs
hadd -m QSPos %title $+(Icone:,%icone) $+(Position:,%x,$chr(124),%y)
}
elseif ($hget(QS,MoveIcone)) {
if ($1 == QSBalle) {
if ($hget(QSBalle,Last)) {
hadd -m QSBalle MvtX $calc(($mouse.x - $gettok($hget(QSBalle,Last),1,32)) * 1 / 100)
hadd -m QSBalle MvtY $calc(($mouse.y - $gettok($hget(QSBalle,Last),2,32)) * 1 / 75)
.timerqs.balle -h 1 1 qs.move.balle
}
}
drawcopy -n @qsempty 0 0 $qs.w(x) $qs.w(y) @qs 0 0
hdel QS MoveIcone
.timerqs.icone.move off
qs.draw.icones
if ($timer(qs.clavier)) draw.texte.clavier
drawdot @qs
.timerqs.save 1 60 qs.save
;***modifs faites
drawcopy @qs 0 0 $qs.w(x) $calc($qs.w(y) - 46) @qscopy 0 0
}
}
alias -l qs.mouse {
;non utilisé
}
alias -l qs.move {
var %x = $mouse.dx, %y $mouse.dy
if (!$window(@qs)) .timerqs.move off
if ($mouse.key & 1) {
hadd -m QS Move 1
.timerqs.move -h 0 0 qs.move $1-
window @qs $calc(%x - $1) $calc(%y - $2)
}
elseif ($hget(QS,Move)) { hdel QS Move | .timerqs.move off }
}
;***
; DL PACK
;***
alias -l qs.dl.pack {
if (!$input.request.y.n(Télécharger le pack d'icones supplémentaires ? Elles se trouveront dans ArKanis/Icones)) return
if (!$isdir(ArKanis)) mkdir ArKanis
if (!$isdir(ArKanis/Icones)) mkdir ArKanis/Icones
sockclose arka.icones.pack
sockopen arka.icones.pack arkanisfr.free.fr 80
}
on *:sockopen:arka.icones.pack:{
if ($sockerr) return
sockwrite -n $sockname GET http://arkanisfr.free.fr/ArKanis/icones.php HTTP/1.0
sockwrite -n $sockname $crlf
}
on *:sockread:arka.icones.pack:{
var %a
sockread %a
if (%a) {
tokenize 32 %a
if (($1 == dl) && (!$exists($+(ArKanis/Icones/,$2)))) hadd -m queue.dl.arka $3 ArKanis/Icones/
}
}
on *:sockclose:arka.icones.pack:{
if ($hget(queue.dl.arka,0).item) {
var %o = $hget(queue.dl.arka,1).item, %c = $hget(queue.dl.arka,%o)
hadd -m finish.dl.arka Icones run $+($mircdir,ArKanis/Icones/)
hdel queue.dl.arka %o
do.dl.arka %o %c
}
else .timer -h 1 1 input.request.ok Vous avez déjà téléchargé toutes les images supplémentaires
}
;***
; Games
;***
alias -l qs.alphabet {
if (!$readini(Config.ini,QSAlphabet,Record)) input.request.ok Comment ça se joue ? $crlf Il suffit simplement de taper l'alphabet dans l'ordre sur votre clavier le plus vite possible et sans se tromper.
if (!$input.request.y.n(Etes-vous prêt(e) ? Le chronomètre commencera dès que vous aurez tapé sur A)) return
window -bBCdoph +dL @alphabet -1 -1 100 100
if ($hget(QS,OnTop)) window -u @qs
window -a @qs
drawrect -frn @alphabet 16777215 1 0 0 100 100
drawtext -or @alphabet 13150890 Tahoma 50 30 10 A
drawdot @alphabet
if ($hget(QSAlphabet)) hfree QSAlphabet
hadd -m QSAlphabet On 1
}
alias -l qs.alphabet.end {
if ($window(@alphabet)) window -c @alphabet
if ($hget(QS,OnTop)) window -o @qs
var %error = $hget(QSAlphabet,Error), %seq = $hget(QSAlphabet,Seq)
if ($hget(QSAlphabet)) hfree QSAlphabet
if (!$1) return
input.request.ok Vous avez fait %error $+(erreur,$iif(%erreur > 1,s)) en $+($1,ms.) Séquence tapée : %seq
var %r = $readini(Config.ini,QSAlphabet,Record)
if (($1 < %r) || (!%r) || ($iif(%r > 0,0,1))) {
writeini -n Config.ini QSAlphabet Record $1
input.request.ok Vous venez de battre votre record $iif(%r,qui était de $+(%r,ms)) ! Il est maintenant de $+($1,ms.)
}
else input.request.ok Votre record est actuellement de $+(%r,ms.)
}
menu @alphabet {
sclick {
if (!$window(@qs)) window -c @alphabet
else window -a @qs
}
Fermer:{
if ($hget(QSAlphabet)) hfree QSAlphabet
window -c @alphabet
}
}
;***
; Clock
;***
alias qs.clock {
var %needed = clockbackground.bmp¥chiffres.bmp, %t = 1, %max = $numtok(%needed,165)
if (!$isdir(ArKanis/Icones)) mkdir ArKanis/Icones
while %t <= %max {
var %file = $gettok(%needed,%t,165)
if (!$exists($+(ArKanis/Icones/,%file))) {
hadd -m finish.dl.arka QS qs
hadd -m queue.dl.arka $+(Script-ArKanis/,%file) ArKanis/Icones
}
inc %t
}
if ($hget(queue.dl.arka,0).item) {
var %o = $hget(queue.dl.arka,1).item, %c = $hget(queue.dl.arka,%o)
hdel queue.dl.arka %o
do.dl.arka %o %c
return
}
if (!$window(@qsclock)) window -BCdg0hk0pRz +dL @qsclock 1 1 273 199
if (!$window(@qsclockchiffres)) window -Bg0hk0pRz +dL @qsclockchiffres -1 -1 345 51
drawpic -n @qsclockchiffres 1 1 ArKanis/Icones/chiffres.bmp
window -a @qsclock
.timerqsclock 0 1 qsclock.disp
qsclock.disp
}
alias -l qsclock.disp {
if (!$window(@qsclock)) { .timerqsclock off | return }
if (!$window(@qsclockchiffres)) { .timerqsclock off | return }
drawpic -nrt @qsclock 255 1 0 ArKanis/Icones/clockbackground.bmp
var %time = $asctime(HH:nn), %h = $left(%time,1) $mid(%time,2,1) $mid(%time,4,1) $mid(%time,5,1), %t = 1, %pos = 55
var %masque = 305-0-35-50|1-0-14-50|17-0-35-50|55-0-34-50|88-0-33-50|125-0-35-50|161-4-37-48|199-0-32-52|234-0-37-50|270-0-38-50
while %t <= 5 {
if ($mid(%time,%t,1) == 1) inc %pos 10
inc %t
}
var %t = 1
while %t <= 4 {
var %n = $gettok(%h,%t,32), %ch = $gettok(%masque,$calc(%n + 1),124)
drawcopy -nrt @qsclockchiffres 16777215 $replace(%ch,-,$chr(32)) @qsclock %pos 70 $gettok(%ch,3,45) $gettok(%ch,4,45)
inc %pos $gettok(%ch,3,45)
if (%t == 2) {
dec %pos 10
drawdot -nr @qsclock 12582912 5 $calc(%pos + 20) 90 $calc(%pos + 20) 110
inc %pos 20
}
inc %t
}
drawdot @qsclock
}
menu @qsclock {
sclick {
echo -a $getdot(@qsclock,$mouse.x,$mouse.y)
qsclock.move $mouse.x $mouse.y
}
On top
.Oui:window -o @qsclock
.Non:window -u @qsclock
Fermer:{
if ($window(@qsclockchiffres)) window -c @qsclockchiffres
window -c @qsclock
}
}
alias -l qsclock.move {
if (!$2) return
var %x = $mouse.dx, %y $mouse.dy
if (!$window(@qsclock)) .timerqsclock.move off
if ($mouse.key & 1) {
.timerqsclock.move -h 0 0 qsclock.move $1-
window @qsclock $calc(%x - $1) $calc(%y - $2)
}
else .timerqsclock.move off
}
;***
; Selection d'icones
;***
alias -l qs.icones.sel {
if (!$hget(QSSel,Nom)) return
if (!$exists(ArKanis/Icones/visio.bmp)) {
hadd -m finish.dl.arka qssel qs.icones.sel
dl.arkanis Script-ArKanis/visio.bmp ArKanis/Icones/
return
}
if ($window(@qssel)) window -a @qssel
else {
var %r = $readini(Config.ini,QSConfig,LastFolder), %fol = $iif($isdir(%r),%r,$+($mircdir,ArKanis/Icones/))
hadd -m QSSel Folder %fol
var %max = $findfile(%fol,*,0)
window -aBCdg0hok0pz +dL @qssel 0 0 249 199
drawpic -cn @qssel 1 1 ArKanis/Icones/visio.bmp
hadd -m QSSel Compteur $r(1,%max)
;max peut-être vide
qssel.draw.image
}
if ($window(@qssel)) drawdot @qssel
}
menu @qssel {
sclick:qssel.sclick
}
alias -l qssel.draw.image {
var %nom = $findfile($hget(QSSel,Folder),*,$hget(QSSel,Compteur))
unset %size
var %size = $file(%nom).size
drawrect -nfr @qssel 16711680 1 52 42 149 99
if ($istok(.jpg-.bmp-.png-.gif-.ico,$right(%nom,4),45)) {
hadd -m QSSel Image %nom
if (%size > 300000) drawtext -nr @qssel 0 Tahoma 12 79 85 Fichier trop gros
else {
if (%size < 2000) drawpic -mns @qssel 76 42 99 99 $+(",%nom,")
else drawpic -mns @qssel 52 42 149 99 $+(",%nom,")
}
}
else {
drawtext -nr @qssel 0 Tahoma 12 93 85 Pas d'image
}
drawdot @qssel
}
alias -l qssel.sclick {
var %x = $mouse.x, %y = $mouse.y
;echo -a X : %x - Y : %y :: Longueur : $calc(%x - $iif($gettok($hget(Temp,Last),1,32),$ifmatch,0)) - Hauteur : $calc(%y - $iif($gettok($hget(Temp,Last),2,32),$ifmatch,0))
;hadd -m Temp Last %x %y
if ($inrect(%x,%y,32,158,52,17)) {
hdec -m QSSel Compteur
if ($hget(QSSel,Compteur) <= 0) hadd -m QSSel Compteur $findfile($hget(QSSel,Folder),*,0)
qssel.draw.image
}
elseif ($inrect(%x,%y,165,158,52,17)) {
hinc -m QSSel Compteur
if ($hget(QSSel,Compteur) > $findfile($hget(QSSel,Folder),*,0)) hadd -m QSSel Compteur 0
qssel.draw.image
}
elseif ($inrect(%x,%y,89,158,31,17)) {
if (($hget(QSSel,Image)) && ($hget(QSSel,Nom))) {
var %img = $hget(QSSel,Image), %title = $hget(QSSel,Nom), %u = $hget(QSPos,%title)
if (!%img) return
if (!$exists(%img)) { input.request.ok L'image n'existe pas ! | return }
if (!$input.request.y.n(Valider l'image %img ?)) return
var %img = $replace(%img,$chr(32),¥)
var %reg = $regex(%u,Position:([^\s]+)), %position = $regml(1)
hadd -m QSPos %title $+(Icone:,%img) $+(Position:,%position)
qs.save
if (!$hget(QS,Veille)) qs.draw.icones
drawdot @qs
window -c @qssel
window -a @qs
}
else {
input.request.ok Vous n'avez sélectionné aucune image.
return
}
}
elseif ($inrect(%x,%y,129,158,31,17)) {
var %r = $readini(Config.ini,QSConfig,LastFolder), %fol =
var %o = $sdir($iif($isdir(%r),%r,$mircdir),Changer le dossier,Sélectionner)
if ($isdir(%o)) {
hadd -m QSSel Folder %o
writeini -n Config.ini QSConfig LastFolder %o
}
hadd -m QSSel Compteur 1
qssel.draw.image
drawdot @qs
}
elseif ($inrect(%x,%y,171,4,13,13)) url -n http://arkanisfr.free.fr/ArKanis/index.php?page=qs
elseif ($inrect(%x,%y,194,4,13,13)) window -n @qssel
elseif ($inrect(%x,%y,215,4,13,13)) {
if ($hget(QSSel,OnTop)) { hdel QSSel OnTop 1 | window -u @qssel }
else { hadd -m QSSel OnTop 1 | window -o @qssel }
}
elseif ($inrect(%x,%y,235,4,13,13)) window -c @qssel
elseif ($inrect(%x,%y,52,42,149,99)) input.request.ok Fichier : $findfile($hget(QSSel,Folder),*,$hget(QSSel,Compteur))
elseif ($inrect(%x,%y,9,8,157,20)) qssel.move %x %y
}
alias -l qssel.move {
if (!$2) return
var %x = $mouse.dx, %y $mouse.dy
if (!$window(@qssel)) .timerqssel.move off
if ($mouse.key & 1) {
.timerqsclock.move -h 1 0 qssel.move $1-
window @qssel $calc(%x - $1) $calc(%y - $2)
}
}
;***
; Icone mouvante
;***
alias -l qs.balle {
if ($readini(Config.ini,QSConfig,Balle)) {
remini Config.ini QSConfig Balle
drawcopy @qscopy 0 0 $qs.w(x) $qs.w(y) @qs 0 0
.timerqs.balle off
if ($hget(QSPos,QSBalle)) hdel QSPos QSBalle
}
else {
writeini -n Config.ini QSConfig Balle 1
hadd -m QSBalle MvtX $+($iif($r(0,1),-),$r(3,6))
hadd -m QSBalle MvtY $+($iif($r(0,1),-),$r(3,6))
var %x = $r(0,752), %y = $r(50,552), %re = $readini(Config.ini,QSIcones,QSBalle)
var %reg = $regex(%re,Icone:([^\s]+)), %img = $iif($exists($regml(1)),$regml(1),ArKanis/Icones/balle.bmp)
hadd -m QSPos QSBalle $+(Icone:,%img) $+(Position:,%x,|,%y)
qs.move.balle
}
}
alias -l qs.move.balle {
if (!$exists(ArKanis/Icones/balle.bmp)) {
hadd -m finish.dl.arka qs.move.balle qs.move.balle
dl.arkanis Script-ArKanis/balle.bmp ArKanis/Icones/
return
}
if (!$window(@qs)) return
if ($mouse.key & 1) {
.timerqs.balle -h 1 1 qs.move.balle
return
}
var %u = $hget(QSPos,QSBalle)
var %reg = $regex(%u,Position:([^\s]+)), %position = $regml(1)
var %x = $gettok(%position,1,124), %y = $gettok(%position,2,124), %xx = %x, %yy = %y
var %reg = $regex(%u,Icone:([^\s]+)), %icone = $iif($exists($regml(1)),$regml(1),ArKanis/Icones/balle.bmp)
if ((!$hget(QSBalle,MvtX)) && (!$hget(QSBalle,MvtY))) {
hadd -m QSpos QSBalle $+(Icone:,%icone) $+(Position:,%x,|,%y)
qs.pic %icone %x %y 50 50
drawdot @qs
return
}
dec %xx
dec %yy
var %maxx = $calc($qs.w(x) -50), %maxy = $calc($qs.w(y) - 80)
if ($hget(QSBalle,MvtX) != $null) {
inc %x $ifmatch
if (%x !isnum) var %x = $r(25,%maxx)
while %x !isnum $+(0-,%maxx) {
if (%x >= 752) { var %x = $calc(%maxx * 2 - %x) | hadd -m QSBalle MvtX $calc($hget(QSBalle,MvtX) * -1) }
if (%x <= 0) { var %x = $calc(0 * 2 - %x) | hadd -m QSBalle MvtX $calc($hget(QSBalle,MvtX) * -1) }
}
}
if ($hget(QSBalle,MvtY) != $null) {
inc %y $ifmatch
if (%y !isnum) var %y = $r(50,%maxy)
while %y !isnum $+(50-,%maxy) {
if (%y >= 522) { var %y = $calc(%maxy * 2 - %y) | hadd -m QSBalle MvtY $calc($hget(QSBalle,MvtY) * -1) }
if (%y <= 50) { var %y = $calc(50 * 2 - %y) | hadd -m QSBalle MvtY $calc($hget(QSBalle,MvtY) * -1) }
}
}
.timerqs.balle -h 1 1 qs.move.balle
if ($hget(QS,Veille)) drawcopy @qsveille %xx %yy 52 52 @qs %xx %yy 52 52
else drawcopy @qscopy %xx %yy 52 52 @qs %xx %yy 52 52
hadd -m QSpos QSBalle $+(Icone:,%icone) $+(Position:,%x,|,%y)
qs.pic %icone %x %y 50 50
drawdot @qs
}
alias -l qs.veille.balle writeini -n Config.ini QSConfig VeilleBalle $iif($readini(Config.ini,QSConfig,VeilleBalle),0,1)
alias -l qs.veille {
if (!$window(@qs)) return
var %img = $readini(Config.ini,QSConfig,VeilleImg), %img = $iif($exists(%img),%img,$+($mircdir,ArKanis/Icones/paysage.jpg))
hadd -m QS Veille 1
if (!$exists(%img)) var %img = $+($mircdir,ArKanis/Icones/backgroundQS.jpg)
drawpic -cnms @qs 0 0 $qs.w(x) $qs.w(y) $+(",%img,")
window -BCdg0hk0npRz +dL @qsveille -1 -1 $qs.w(x) $qs.w(y)
drawdot @qs
;window -a @qs
drawcopy @qs 0 0 $qs.w(x) $qs.w(y) @qsveille 0 0
if ($readini(Config.ini,QSConfig,VeilleBalle)) {
hadd -m QSBalle MvtX $+($iif($r(0,1),-),$r(3,6))
hadd -m QSBalle MvtY $+($iif($r(0,1),-),$r(3,6))
var %x = $r(0,752), %y = $r(50,$calc($qs.w(y) - 46))
hadd -m QSPos QSBalle Icone:ArKanis/Icones/balle.bmp $+(Position:,%x,|,%y)
qs.move.balle
}
}
alias -l qs.veille.pass {
writeini -n Config.ini QSConfig VeillePass $iif($readini(Config.ini,QSConfig,VeillePass),0,1)
if ($readini(Config.ini,QSConfig,VeillePass)) {
var %a = $input.request.pass(Quel sera le mot de passe ? Souvenenez vous-en, et faites attention aux majuscules.)
if (!%a) return
writeini -n Config.ini QSConfig VeillePass %a
input.request.ok Le mot de passe est %a
}
}
;*** xShosting
alias -l qs.add.multiserv {
;ajouter un serveur/bnc
var %nom = $input.request(Quel nom donner au serveur ?), %no = $+(QS!,$replace(%nom,$chr(32),$chr(165)))
if (($left(%nom,2) == QS) || (%nom == General)) {
input.request.ok Impossible de donner ce nom au serveur
return
}
if (!$regex(%no,[a-zA-Z0-9]|[-\.!\?¥\s\+])) {
input.request.ok Des caractères non autorisés sont utilisés. Les seuls caractères autorisés sont les lettres, les nombres, l'espace, et + - . ! ?.
return
}
if (!%nom) return
var %o = $readini(Config.ini,QSBNCs,%no)
if (%o) {
if (!$input.request.y.n(Ce nom de serveur est déjà utilisé. Continuer ? L'ajout de ce serveur supprimera l'ancien)) return
}
unset %mdp %ident %ip %port %passrequest
var %ip = $input.request(Quel est l'IP de ce serveur ? Ne mettez pas le port), %port = $input.request(Quel est le port de ce serveur ?)
if ((!%ip) || (!%port)) {
input.request.ok Champs invalides
return
}
var %passrequest = $input.request.y.n(Avez-vous besoin d'un mot de passe pour vous connecter sur ce serveur ?)
if (%passrequest) {
if ($input.request.y.n(Souhaitez-vous que cette application retienne votre mot de passe ? Attention, cette mémorisation n'est pas sécurisée !)) {
var %mdp = $input.request.pass(Quel est le mot de passe pour se connecter sur ce serveur/BNC ?)
}
}
var %ident = $input.request(Quel sera votre ident pour ce serveur ?)
if (!$input.request.y.n(Etes-vous sûr(e) de vouloir ajouter le serveur/bnc du nom de %nom à la liste des serveurs déjà existants ?)) return
var %action = qs.multiserv.connect %nom
if ($input.request.y.n(Souhaitez-vous ajouter un raccourci pour vous connecter sur ce serveur/bnc sur votre bureau (QS) ?)) {
unset %x %y
var %icone = xShostingico.bmp
if ($readini(Config.ini,QSConfig,Aligner)) {
var %nb = $ini(Config.ini,QSIcones,0), %col = $int($calc(%nb / 10)), %x = $calc(70* %col + 70)
var %y = $calc(%nb - %col * 10)
}
if (%x !isnum 25-775) var %x = $r(25,775)
if (%y !isnum 25-505) var %y = $r(25,505)
hadd -m QSPos %no $+(Icone:ArKanis/Icones/,%icone) $+(Position:,%x,|,%y)
hadd -m QS List $iif($hget(QS,List),$+($ifmatch,£),%no)
qs.sorticones
qs.draw.icones
drawdot @qs
writeini -n Config.ini QSIcones %no $+(Icone:ArKanis/Icones/,%icone) $+(Position:,%x,|,%y)
writeini -n Config.ini QS %no $asctime(dd/mm/yyyy HH:nn:ss) Serveur
}
writeini -n Config.ini QSDo %no %action
writeini -n Config.ini QSBNCs %no $+(PassRequest:,$iif(%passrequest,1,0)) $+(Pass:,%pass) $+(IP:,%ip) $+(Port:,%port) $+(Ident:,%ident)
}
alias -l qs.multiserv.connect {
var %nom = $iif($1,$1,$input.request(Sur quel Serveur/BNC se connecter ? Donnez le nom))
if (($left(%nom,2) == QS) && ($left(%nom,3) != QS!)) var %nom = $+(QS!,%nom)
if ($left(%nom,3) != QS!) var %nom = $+(QS!,%nom)
var %no = $replace(%nom,$chr(32),$chr(165)), %o = $readini(Config.ini,QSBNCs,%no)
if (!%o) return
unset %pass %ip %port %new
var %reg = $regex(%o,Pass:([^\s]+)), %pass = $regml(1)
var %reg = $regex(%o,IP:([^\s]+)), %ip = $regml(1)
var %reg = $regex(%o,Port:([^\s]+)), %port = $regml(1)
if (!%ip) return
if (%port !isnum) return
var %reg = $regex(%o,PassRequest:([^\s]+)), %passrequest = $regml(1)
if ((!%pass) && (!%passrequest )) var %pass = $input.request.pass(Quel est le mot de passe pour se connecter sur ce serveur/BNC ?)
var %new = $iif($input.request.y.n(Souhaitez-vous vous connecter sur un nouveau groupe de fenêtre ?),-m)
if (!$input.request.y.n(Etes-vous sûr(e) de vouloir vous connecter sur %nom ?)) return
server %new %ip %port %pass $iif(%ident,-i $me $anick $+(%ident,@hotmail.com) %ident)
}
alias qs.w {
if ($1 == x) return $iif($readini(Config.ini,QSConfig,WindowX) isnum 0-2000,$ifmatch,802)
if ($1 == y) return $iif($readini(Config.ini,QSConfig,WindowY) isnum 0-1600,$ifmatch,602)
}
;***
; Download
;***
alias dl.arkanis {
if (!$1) return
if (!$hget(queue.dl.arka,0).item) {
hadd -m queue.dl.arka $1 $iif($2,$2,/) $iif($3,$3,$gettok($1,-1,47))
do.dl.arka $1-
hadd -m dl.arka.Ticks Begin $ticks
}
else {
hadd -m queue.dl.arka $1 $iif($2,$2,/) $iif($3,$3,$gettok($1,-1,47))
if (!$sock(dl.arka)) .timerbegin.download 1 5 do.dl.arka $hget(queue.dl.arka,1).item $hget(queue.dl.arka,$hget(queue.dl.arka,1).item)
}
}
alias queue.arkanis {
var %t = 1, %m = $hget(queue.dl.arka,0).item
while %t <= %m {
var %o = $hget(queue.dl.arka,%t).item, %p = $hget(queue.dl.arka,%o)
echo -a 2 $+ $asctime([HH:nn:ss]) 12,1[ 0Fichier en attente : %o 12-0 Emplacement où stocker : $gettok(%p,1,32) 12-0 Nom du fichier : $gettok(%p,2,32) 12]
inc %t
}
}
alias -l do.dl.arka {
.timerbegin.download off
if (!$1) return
tokenize 32 $replace($1-,$chr(92),$chr(47))
if ($hget(dl.arka)) hfree dl.arka
hadd -m dl.arka Link $1
hadd -m dl.arka Folder $iif($2,$+(/,$gettok($2,1-,47)),/)
hadd -m dl.arka Folder $replace($iif($right($hget(dl.arka,Folder),1) != $chr(47),$+($hget(dl.arka,Folder),$chr(47)),$hget(dl.arka,Folder)),$chr(47),$chr(92))
hadd -m dl.arka Name $iif($3,$3,$gettok($1,-1,47))
hadd -m dl.arka Type $iif($istok(dll-jpg-hlp-bmp-ico-mdx-mp3-reg-wav-zip-rar-exe,$gettok($hget(dl.arka,Name),-1,46),45),Binary,Text)
if ($exists($+(",$left($mircdir,-1),$hget(dl.arka,Folder),$hget(dl.arka,Name),"))) .remove $+(",$left($mircdir,-1),$hget(dl.arka,Folder),$hget(dl.arka,Name),")
echo -a 2 $+ $asctime([HH:nn:ss]) 12,1[ 0Connecting to FTP ... 12]
unset %o
var %fol = $replace($hget(dl.arka,Folder),$chr(47),$chr(92)), %t = 1, %max = $gettok(%fol,0,92), %folder = $null
while %t <= %max {
var %g = $gettok($hget(dl.arka,Folder),%t,92), %folder = $+(%folder,%g,\)
if (!$isdir(%folder)) .mkdir %folder
inc %t
}
sockclose dl.arka
sockopen dl.arka arkanisfr.free.fr 80
}
on *:sockopen:dl.arka:{
.timerbegin.download off
if (!$hget(dl.arka,Name)) return
echo -a 2 $+ $asctime([HH:nn:ss]) 12,1[ 0Preparing to download $hget(dl.arka,Name) ... 12]
hadd -m dl.arka Ticks $ticks
if ($sockerr) return
if ($hget(dl.arka,0).item < 4) return
sockwrite -n $sockname GET $+(http://arkanisfr.free.fr/,$hget(dl.arka,Link)) $iif($hget(dl.arka,Type) == Text,HTTP/1.0)
sockwrite -n $sockname $crlf
}
on *:sockread:dl.arka:{
.timerbegin.download off
if ($hget(dl.arka,Type) == Binary) {
sockread &a
bwrite $+(",$left($mircdir,-1),$hget(dl.arka,Folder),$hget(dl.arka,Name),") -1 -1 &a
}
elseif ($hget(dl.arka,Type) == Text) {
sockread %a
if (%o) write $+(",$left($mircdir,-1),$hget(dl.arka,Folder),$hget(dl.arka,Name),") %a
if ($left(%a,13) == Content-Type:) set %o 1
}
}
on *:sockclose:dl.arka:{
var %t = $hget(queue.dl.arka,0).item, %ph = $null
if (%t > 1) var %ph = $calc(%t -1) fichier(s) restant(s).
echo -a 2 $+ $asctime([HH:nn:ss]) 12,1[ 0Download of $hget(dl.arka,Name) finished in $+($calc($ticks - $hget(dl.arka,Ticks)),ms) $iif(%ph,$+(%ph,$chr(32))) $+ 12]
hdel queue.dl.arka $hget(dl.arka,Link)
if (($hget(dl.arka,Name) == ArKanis-MAJ.mrc) && ($exists(ArKanis-MAJ.mrc))) { .load -rs ArKanis-MAJ.mrc | unset %download.arkanis* | return }
if (%t > 1) { .timer -h 1 50 do.dl.arka $hget(queue.dl.arka,1).item $hget(queue.dl.arka,$hget(queue.dl.arka,1).item) | return }
var %t = $hget(dl.arka.Ticks,Begin)
echo -a 2 $+ $asctime([HH:nn:ss]) 12,1[ 0Tous les fichiers placés en file d'attente pour le téléchargement ont été téléchargés $+ $iif(%t,$+($chr(32),en,$chr(32),$calc(($ticks - %t) /1000),s)) $+ . 12]
if ($hget(finish.dl.arka,0).item) {
var %t = 1, %m = $hget(finish.dl.arka,0).item
while %t <= %m {
var %o = $hget(finish.dl.arka,%t).item, %p = $hget(finish.dl.arka,%o)
if (%p) $+(.timer,$gettok(%p,1,32)) -oh 1 5 %p
inc %t
}
if ($hget(finish.dl.arka)) hfree finish.dl.arka
}
}
;***
; Input Request
;***
alias input.request {
if ($1 == pass) { var %t = 1 | tokenize 32 $2- }
if (!$1) return
if ($dialoginput.request) return
hadd -m InputRequest Question $1-
return $dialog(input.request,input.request,-4)
}
alias input.request.y.n {
if (!$1) return
if ($dialoginput.request) return
hadd -m InputRequest Question $1-
return $iif($dialog(input.request.y.n,input.request.y.n,-4),$true,$false)
}
alias input.request.pass {
if (!$1) return
if ($dialoginput.request) return
hadd -m InputRequest Question $1-
return $dialog(input.request.pass,input.request.pass,-4)
}
alias input.request.ok {
if (!$1) return
if ($dialoginput.request) return
hadd -m InputRequest Question $1-
return $iif($dialog(input.request.ok,input.request.ok,-4),$true,$false)
}
dialog input.request {
title Input Needed
size -1 -1 150 60
option dbu
icon ArKanis/ArKanis.ico
button "OK" 1, 130 50 20 10, default ok
text "By ArKanis" 4, 10 30 45 10
edit "" 5, 60 2 90 40, read multi vsbar return
edit "" 6, 0 50 125 10, result autohs
icon 7, 6 5 48 24 , $mircexe
}
dialog input.request.y.n {
title Input Needed
size -1 -1 150 60
option dbu
icon ArKanis/ArKanis.ico
button "&Yes" 1, 80 45 30 15, ok result default
button "&No" 2, 115 45 30 15, cancel
text "By ArKanis" 4, 10 30 45 10
edit "" 5, 60 2 90 40,read multi vsbar return
icon 7, 6 5 48 24 , $mircexe
}
dialog input.request.pass {
title Input Needed
size -1 -1 150 60
option dbu
icon ArKanis/ArKanis.ico
button "OK" 1, 130 50 20 10, default ok
text "By ArKanis" 4, 10 30 45 10
edit "" 5, 60 2 90 40, read multi vsbar return
edit "" 6, 0 50 125 10, result autohs pass
icon 7, 6 5 48 24 , $mircexe
}
dialog input.request.ok {
title Avertissement
size -1 -1 150 60
option dbu
icon ArKanis/ArKanis.ico
button "&OK" 1, 115 43 30 15, ok result default
text "By ArKanis" 4, 10 30 45 10
edit "" 5, 60 2 90 40,read multi vsbar return
icon 7, 6 5 48 24 , $mircexe
}
ON *:DIALOG:input.request*:*:*:{
if ($devent == init) {
if (($dname == input.request) || ($dname == input.request.pass)) did -f $dname 6
if (!$exists(ArKanis/Input.jpg)) dl.arkanis Script-ArKanis/Input.jpg ArKanis/
else did -g $dname 7 ArKanis/Input.jpg
if ($hget(InputRequest,Question)) did -o $dname 5 1 $hget(InputRequest,Question)
did -o $dname 4 1 Par ArKanis
}
if (($did == 7) && ($did(4).text == Par ArKanis)) did -o $dname 4 1 Lien vers le site
if (($devent == sclick) && ($did == 7)) url -n http://arkanisfr.free.fr/ArKanis/
if (($did != 7) && ($did(4).text != Par ArKanis)) did -o $dname 4 1 Par ArKanis
}
on *:start:{
if ($readini(Config.ini,QSConfig,Start)) {
qs ontop:0 active:0
.timerwindow -o @qs
.timerontop 1 30 $!iif($window(@qs),window -u @qs,return)
}
}
Conclusion :
mIRC version >= 6.14 nécessaire
Pas de bugs connus pour le moment. Il est fort probable qu'il y en ait, malgré mes efforts et mes beta-testeurs (thx à eux), étant donné que j'ai commencé ce code hier fin d'aprem.
Je manque d'idées pour rajouter de belles choses donc vos remarques seront utiles.
Ce code est tiré de mon add-on (Script-ArKanis) version 4.3 (téléchargeable sur mon site)
Utilisation de sockets, regex, drawcopy, ... aucune dll
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.