Lagbar picwin

Contenu du snippet

En voila une source originale !
Bon, blague a part, j'ai eu envie de faire une petite lagbar personnelle et je me suis dit qu'elle pourrait etre utile à d'autres, qui sait ?
Il peut servir de tuto(sans comment') pour l'utilisation de dégradés, dégradés tres simples a effectuer:
on creée le dégradé au lancement de l'alias dans une @win caché qui nous servira de buffer, puis on drawcopy la portion qui nous interresse, donc pas de resources inutiles perdues :-)
Bref, c'est une lagbar, que l'on peut déplacer, et qui se présente sous la forme d'un alias /lag comportant plusieurs parametres
je les indique
/lag x y w h lag_maximum periode_refresh couleur* couleur_font couleur_texte +c*

x,y,w et h sont la position de la lagbar (x et y) et ses dimensions (w et h)
lag_maximum indique quelle sera la valeur maximum de lag a afficher sur la lagbar (ex 200ms , 500, etc...)
periode_refresh indique la duree separant 2 verification du lag (ex 2 secs)
couleur* et la couleur: plusieurs options
db = degradé 'froid'
df = degradé 'feu'
dv = degrade vert->rouge
dr = degradé 'chaud'
dnb = degradé niveau de gris
c = couleur unie mais qui varie en fonction du lag, de jaune à rouge
nb = de même mais varie en niveau de gris
$rgb(R,G,B) = vous pouvez definir une couleur perso pour la lagbar

couleur_font est la couleur du fond de la lagbar
couleur_texte est devinez... la couleur du text affiché, bravo ! si vous ne mettez rien une couleur du clair au foncé sera choisie, en fonction du lag
Enfin le parametre +c est optionnel, et permet de mettre un cadre noir autour de la lagbar

Dernière chose, le lag donnée est propre a chaque serveur (encore heureux :o)

Source / Exemple :


on *:appactive:if ($window(@lag)) window $iif($appactive,-o,-u) @lag
on *:ctcpreply:lb*: {
  if ($nick == $me && $2 isnum) {
    var %l $2 | tokenize 32 $hget(lag,opt)
    var %d $calc(($ticks -%l)/1000),%b $calc(%d * $3 /$5),%c $calc(255-(%d *255/$5)),%t $calc(255-%c)
    dr $($8,2) 1 0 0 $3-4
    if ($regex($7,dr|dnb|db|df|dv)) deg %b $4
    elseif ($7 == c) dr $rgb(255,%c,0) 1 0 0 %b $4
    elseif ($7 == nb) dr $rgb(%c,%c,%c) 1 0 0 %b $4
    else dr $($7,2) 1 0 0 %b $4
    drawtext -nor @lag $iif($9 != +c && $9,$($v1,2),$rgb(%t,%t,%t)) arial 10 $center(%d) sec
    drawdot @lag
  }
  haltdef
}

menu @lag {
  sclick { if ($hget(lag,lock)) movewin $active $calc($mouse.dx - $window($active).x) $calc($mouse.dy - $window($active).y) }
  $iif($hget(lag,lock),Ancrer,Détacher) la lagbar:hadd -m lag lock $iif($hget(lag,lock),0,1)
  Relancer:/lag_reload
  -
  Couleur barre
  .Degradé Feu:$lag_rep(df).barre
  .Degradé Glace:$lag_rep(db).barre
  .Degradé Chaud:$lag_rep(dr).barre
  .Degradé Vert-rouge:$lag_rep(dv).barre
  .Dégradé de gris:$lag_rep(dnb).barre
  .-
  .Blanc -> noir:$lag_rep(nb).barre
  .Jaune -> rouge:$lag_rep(c).barre
  .-
  .Couleur unie:$lag_rep($q).barre
  Couleur fond:$lag_rep($q).font
  Couleur texte:$lag_rep($q).texte
  -
  Options
  .Période de rafraichissement:$lag_rep($$input(Période de rafraichissement ? (sec),ieoc,Rafraichissement)).re
  .Lag maximum:$lag_rep($calc($$input(Indiquez le lag maximum à afficher ? (msec),ieoc,Lag Maximum) /1000)).max
  -
  Info code:.echo -q $input(Code de la lagbarre active :,ioe,Aide,/lag $+ $chr(32) $hget(lag,opt))
  -
  Fermer:{ .timerlag off | hfree lag | close -@ @lag* }
}

alias lag {
  if (!$8) { echo -a  $+ $color(info) $+ * /lag: paramètres insuffisants | halt }
  elseif ($remove($1-6,$chr(32)) !isnum) { echo -a  $+ $color(info) $+ * /lag: erreur de paramètre | halt }
  close -@ @lag*
  window -poBdh +bL $+ $iif(+c !isin $9-,d) @lag $1-4
  hadd -m lag opt $1-
  if ($regex($7,dr|dnb|db|df|dv)) bdeg
  .timerlag -oi 0 $6 lm
}

alias lagtest {
  if $1 == 1 lag 526 42 200 20 0.08 2 db $rgb(212,208,200) $rgb(0,0,0)
  elseif $1 == 2 lag 526 42 200 20 0.08 2 df $rgb(212,208,200) +c
  elseif $1 == 3 lag 526 44 100 15 0.08 2 dv $rgb(255,255,255) +c
  elseif $1 == 4 lag 526 42 120 30 0.08 2 c $rgb(255,255,255) $rgb(1,0,0) +c
}

alias -l bdeg {
  var %i 0,%p $1 | tokenize 32 $hget(lag,opt)
  window -ph @lagb
  while (%i <= $3) {
    if ($7 == df) {
      var %v $calc(510 -(510 * %i / $3)),%vv $iif(%v > 255,$calc(%v -255),0)
      drawrect -nrf @lagb $rgb($iif(%v > 255,255,%v),%vv,0) 1 %i 0 1 $4
    }
    elseif ($7 == dv) {
      var %v $calc(510 * %i / $3),%vv $iif(%v > 255,$calc(255-(%v -255)),255)
      drawrect -nrf @lagb $rgb($iif(%v > 255,255,%v),%vv,0) 1 %i 0 1 $4
    }
    elseif ($7 == dr) {
      var %c $calc(255-(%i *255/$3))
      drawrect -nrf @lagb $rgb(255,%c,0) 1 %i 0 1 $4
    }
    elseif ($7 == dnb) {
      var %c $calc(255-(%i *255/$3))
      drawrect -nrf @lagb $rgb(%c,%c,%c) 1 %i 0 1 $4
    }
    elseif ($7 == db) {
      var %b $calc(510 * %i / $3),%bb $iif(%b > 255,$calc(255 + (255 - %b)),255)
      drawrect -nrf @lagb $rgb($iif(%b > 255,0,$calc(255 - %b)),%bb,255) 1 %i 0 1 $4
    }
    inc %i
  }
  drawdot @lagb
}

alias -l lag_rep {
  if ($prop == barre) { $rep($1,7) | bdeg }
  elseif ($prop == font) $rep($1,8)
  elseif ($prop == texte) {
    var %p $1 | tokenize 32 $hget(lag,opt)
    if ($9 && $9 != +c) $rep(%p,9)
    elseif ((!$9) || ($9 == +c)) hadd lag opt $instok($1-,%p,9,32)
  }
  elseif ($prop == re) $rep($1,6)
  elseif ($prop == max) $rep($1,5)
}

alias -l center { var %d $1 | tokenize 32 $hget(lag,opt) | return $calc(($3 /2)-($width(%d,arial,10)/2)-10) $calc(($4 /2)-7) %d }
alias -l dr drawrect -rnf @lag $1-
alias -l lm { if ($server) { .ctcpreply $me lb $ticks } | else { clear @lag | drawtext -o @lag 4 arial 11 $center(Déconnecté) } }
alias -l lag_reload { if ($hget(lag,opt)) { tokenize 32 $ifmatch | lag $window(@lag).x $window(@lag).y $window(@lag).w $window(@lag).h $5- } }
alias -l movewin { window $1 $calc($mouse.dx - $2) $calc($mouse.dy - $3) | if ($mouse.key & 1) { .timer 1 0 movewin $1- } }
alias -l deg { drawcopy @lagb 0 0 $1-2 @lag 0 0 }
alias -l rep { hadd lag opt $puttok($hget(lag,opt),$1,$2,32) }
alias -l q return $$input(Indiquez la couleur ? $crlf Format $ $+ rgb(R,G,B),ieoc,Changement de couleur)

Conclusion :


j'ai mis 4 exemples a votre disposition, étudiez l'alias /lagtest pour bien voir la syntaxe a utiliser
pour tester:
/lagtest 1
/lagtest 2
jusqu'a 4 ;-)

Attention, si vous voulez du noir à 100% , mettez comme couleur rgb du $rgb(1,0,0) (pour eviter d'avoir un zero)

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.