Derniers codes sur codes-sources

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 177 fois - Téléchargée 27 fois

Contenu du snippet

Ce script sert a visualiser les derniers codes qui ont été ajoutés sur les principaux sites du réseaux CodeS-SourceS. L'"addon" est entièrement réalisé en picture window, un peu plus compliqué que les dialogs, mais sans DLL et plus joli (a mon gout)
Exploite :
- Picture Windows
- Hash Table
- Regexp
- Sockets

Source / Exemple :


alias cs {
  var %w @cs
  if ($window(%w)) window -c %w
  window -hdokpBC +dL %w -1 -1 350 291
  drawfill -nr %w 15659197 15659197 0 0 | drawrect -nr %w 8421504 1 0 0 350 291 
  drawline -nr %w 16777215 1 1 289 1 21 348 21 1 21 1 1 291 1 291 19 291 1 349 1 | drawline -nr %w 13489468 1 2 289 348 289 348 19 290 19 290 2 290 19 2 19 348 19 348 1
  dr 7 5 11 11
  drawline -nr %w 8421504 1 0 20 350 20 | drawline -nr %w 8421504 1 291 0 291 20
  drawtext -pbnr %w 8421504 15659197 Verdana 11 23 4 Derniers scripts sur CodeS-SourceS
  drawtext -nr %w 8421504 Webdings 11 304 1 0 r
  drawdot %w
  hadd -m cs text Veuillez sélectionner un site du réseau CodeS-SourceS
  drawcs
}
menu @cs {
  sclick {
    if (!$hget(cs,combo)) {
      if ($inrect($mouse.x,$mouse.y,0,0,350,20)) {
        if ($mouse.x < 290) movewin @cs $calc($mouse.dx -$window(@cs).x) $calc($mouse.dy -$window(@cs).y)
        elseif ($mouse.x isnum 302-314) window -n @cs
        elseif ($mouse.x isnum 320-332) csclose
      }
      elseif ($inrect($mouse.x,$mouse.y,203,27,12,17)) { hadd -m cs combo 1 | drawcs }
      elseif ($inrect($mouse.x,$mouse.y,225,27,63,17)) { hadd -m cs bouton 1 | drawcs }
      elseif ($inrect($mouse.x,$mouse.y,145,265,60,20)) { hadd -m cs bouton2 1 | drawcs }
    }
    else {
      if ($inrect($mouse.x,$mouse.y,133,44,82,132)) hadd cs combotext $gettok($hget(cs,sites),$int($calc(($mouse.y - 32)/13)),59)
      hdel cs combo | drawcs
    }
  }
  uclick {
    if ($hget(cs,bouton)) { 
      hdel cs bouton
      if ($inrect($mouse.x,$mouse.y,225,27,63,17)) {
        if (!$hget(cs,combotext)) { hadd cs text Vous devez tout d'abord sélectionner un site ! }
        else {
          if (!$hget(cs,urls)) hadd -m cs urls http://www.ircfr.com/ http://www.vbfrance.com/ http://www.cppfrance.com/ http://www.csharpfr.com/ http://www.delphifr.com/ http://www.phpcs.com/ http://www.aspfr.com/ http://www.javascriptfr.com/ http://www.flashkod.com/ http://www.codes-sources.com/
          hadd -m cs site $gettok($hget(cs,urls),$findtok($hget(cs,sites),$hget(cs,combotext),1,59),32) | hadd cs host $gettok($gettok($hget(cs,site),2,47),2-,46)
          hadd -m cs text Tentative de connexion à $hget(cs,site)
          sockclose cs | sockopen cs $hget(cs,host) 80
        }
      }
      drawcs 
    }
    if ($hget(cs,bouton2)) { 
      hdel cs bouton2
      if ($inrect($mouse.x,$mouse.y,145,265,60,20)) csclose
      else drawcs
    }
  }
}
alias -l drawcs {
  var %w @cs
  drawrect -nrf %w 15659197 1 4 23 342 263
  if ($hget(cs,text)) drawtext -nr %w 8421504 Verdana 11 9 50 $ifmatch
  dr 225 27 63 17 $iif($hget(cs,bouton),1,0) Charger
  dr 145 265 60 20 $iif($hget(cs,bouton2),1,0) Fermer
  drawrect -nrf %w 16777215 1 9 70 330 190 | drawrect -nr %w 8421504 1 9 70 330 190 | drawrect -nr %w 16432045 1 10 71 328 188
  dr 12 73 40 16 0 Date
  dr 54 73 205 16 0 Nom de la source
  dr 261 73 74 16 0 Auteur
  var %a 1 | while ($hget(cs,code [ $+ [ %a ] ])) {
    tokenize 32 $ifmatch
    var %g $left($gettok($1-,$($+(2-,$calc($0 -1)),2),32),-3) , %p $right($left($gettok($1-,$0,32),-1),-1)
    drawtext -nr %w 8421504 Verdana 10 14 $calc(81+ 10*%a) $1
    drawtext -nr %w 8421504 Verdana 10 57 $calc(81+10*%a) $iif($wrap(%g,Verdana,10,191,0,1) == %g,%g,$+($ifmatch,...))
    drawtext -nr %w 8421504 Verdana 10 264 $calc(81+10*%a) $iif($wrap(%p,Verdana,10,60,0,1) == %p,%p,$+($ifmatch,...))
    inc %a
  }
  drawtext -nr %w 8421504 Verdana 11 9 28 Sites du réseau CS :
  drawrect -nr %w 8421504 1 133 27 82 17 | drawline -nr %w 8421504 1 203 27 203 44
  drawline -nr %w 15880237 1 134 42 202 42 202 27 | drawline -nr %w 16432045 1 134 41 134 28 202 28 | drawrect -nrf %w 16092278 1 135 29 67 13
  drawline -nr %w 16777215 1 204 42 204 28 214 28 | drawline -nr %w 13489468 1 205 42 213 42 213 28 | drawtext -nr %w 8421504 Terminal 13 206 30 $chr(25)
  if ($hget(cs,combotext)) drawtext -nr %w 0 Verdana 11 137 29 $ifmatch
  if ($hget(cs,combo)) {
    drawrect -nr %w 8421504 1 133 44 82 132 | drawrect -nrf %w 16777215 1 134 45 80 130
    if (!$hget(cs,sites)) hadd -m cs sites IrcFr;VBFrance;CPPFrance;C#;DelphiFr;PHPcs;ASPFr;JavaScript;Flash;Tout CS
    var %i 1 | while ($gettok($hget(cs,sites),%i,59)) { drawtext -nr %w 8421504 Verdana 11 137 $calc(%i *13 +32) $ifmatch | inc %i }
  }
  drawdot %w
}
alias -l movewin {
  window $1 $calc($mouse.dx -$2) $calc($mouse.dy -$3)
  if ($mouse.key & 1) .timer 1 0 movewin $1-
}
on *:SOCKOPEN:cs:{
  if ($sockerr) { hadd cs text La connexion avec $hget(cs,site) a échoué. | hdel cs site | drawcs }
  else {
    sockwrite -n cs GET /index.aspx HTTP/1.0 | sockwrite -n cs Host: $hget(cs,host) | sockwrite -n cs
    hadd cs text Liste des derniers codes sur $hget(cs,host) ... | drawcs
  }
}
on *:SOCKREAD:cs:{
  var %a | sockread %a
  if (<th class="H isin %a) { hadd cs temp 1 | halt }
  if ($hget(cs,temp)) {
    if ($deltags(%a)) {
      tokenize 32 $deliso($ifmatch)
      hinc cs i
      hadd cs code [ $+ [ $hget(cs,i) ] ] $gettok($1,1-2,47) $2-
      if ($hget(cs,i) == 16) { sockclose cs | hdel cs temp | hdel cs i | hadd -m cs text Connexion refermée avec $hget(cs,site) | drawcs | halt }
    }
  }
}
on *:SOCKCLOSE:cs:{ hadd -m cs text Connexion refermée avec $hget(cs,site) | hdel cs site | drawcs }
alias -l deltags { var %i, %b = $regsub($1-,/(?:<.+?>)/g,$chr(32),%i) | return $remove(%i,$chr(9)) }
alias -l deliso {
  var %x $1-
  while ($regex(%x,/&(\d+);/)) %x = $replace(%x,$+(&,$regml(1),;),$chr($regml(1)))
  return %x
}
alias -l dr {
  var %w $$window(@cs)
  drawrect -nr %w 8421504 1 $1-4
  drawrect -nrf %w 16092278 1 $calc(2+$1) $calc(2+$2) $calc($3 -4) $calc($4 -4)
  drawline -nr %w $iif($5 == 1,16432045,15880237) 1 $calc(2+$1) $calc($2 +$4 -2) $calc($1 +$3 -2) $calc($2 +$4 -2) $calc($1 +$3 -2) $calc(1+$2)
  drawline -nr %w $iif($5 == 1,15880237,16432045) 1 $calc(1+$1) $calc($2 +$4 -2) $calc(1+$1) $calc(1+$2) $calc($1 +$3 -1) $calc(1+$2)
  if ($6-) drawtext -nr %w 0 Verdana 11 $calc($1 +($3 -$width($6-,Verdana,11))/2) $calc($2 +($4 -$height($6-,Verdana,11))/2) $6-
}
alias -l csclose { hdel -w cs * | close -@ @cs }

Conclusion :


- Pour lancer l'addon tapez /cs
- J'ai laissé tomber les sites les moins importants de CS pour ne pas avoir un combo de 6 mètres de long :o)
- Pour l'instant, ce script ne fait que lister les derniers codes sur CS. Prévu : un petit popup en click droit pour lancer le navigateur, etc...
- Remerciements : PaDa pour l'alias "deliso"
- Désolé pour le screenshot pas très beau (jpeg oblige)
- Prochaine étape : le GUI :)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
879
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
29 juin 2007

Oué j'ai oublié de la mettre en local, merci.
j'update.
Messages postés
20
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
2 décembre 2006

Petit bug j'pense il y a juste une variable %i qui reste même après l'avoir refermé, c'est normal ? (elle contient les informations sur la dernière source du menu)
Messages postés
253
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
16 octobre 2005

MaX_62 :) genial !! 10/10
Messages postés
4
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
18 juin 2005

Vraiment, bravo, je ne pourrais pas te dire si le code est bien, ou nul, ou bof...ect, mais la seule chose que je peut dire: c'est que tu viens de me faciliter la vie!
Au lieu d'allerplonger sous IE, je reste sur irc =)
MERCI :x
note: 10/10
Messages postés
1
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
17 juin 2005

C'est trop coooool sa bien joué
Afficher les 26 commentaires

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.