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 :)
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.