on *:close:@SF: { sfStop } alias sfPrepare { window -pdk0 +t @SF -1 -1 320 220 drawrect -rf @SF 0 1 0 0 314 188 sfStop set %sfDrawId 0 set %sfDelId 1 set %sfFrames 0 set %sfTime 0 set %sfFrame 0 ;set %sfLastFrame $ticks hmake sfDotCoordX 1000 hmake sfDotCoordY 1000 hmake sfDotSize 1000 hmake sfDotSpeed 1000 hmake sfDotColor 1000 sfCreateObj 10 .timerSfUpdateFrame -mo 0 1 sfUpdateFrame } alias sfStop { .timerSfUpdateFrame off .timersfCreateId off unset sfDrawId unset sfDelid unset %sfFrames unset %sfTime unset %sfFrame unset %sfTotalObj ;unset %sfLastFrame if ($hget(sfDotCoordX)) { hfree sfDotCoordX } if ($hget(sfDotCoordY)) { hfree sfDotCoordY } if ($hget(sfDotSize)) { hfree sfDotSize } if ($hget(sfDotSpeed)) { hfree sfDotSpeed } if ($hget(sfDotColor)) { hfree sfDotColor } drawrect -rf @SF 0 1 0 0 314 188 } alias sfUpdateFrame { drawrect -rnf @SF 0 1 0 0 314 188 var %x %sfdelId while (%sfDrawId >= %x) { var %cx = $hget(sfDotCoordX,%x) var %cx = %cx + $hget(sfDotSpeed,%x) ;original 314 if (%cx > 317) { sfRecreateObj %x } else { drawdot -nr @SF $hget(sfDotColor,%x) $hget(sfDotSize,%x) %cx $hget(sfDotCoordY,%x) hadd sfDotCoordX %x %cx } inc %x } drawtext -rn @SF 16777215 2 2 %sfFrame %sfTotalObj inc %sfFrames if ($calc($ticks - %sfTime) > 1000) { set %sfTime $ticks set %sfFrame %sfFrames if (%sfFrame > 31) { .timersfCreateId -mo 5 5 sfCreateObj 1 } elseif (%sfFrame < 30) { sfDelObj 1 } set %sfFrames 0 } drawdot @SF } alias sfRecreateObj { ;hadd sfDotCoordX $1 $calc($rand(1,30) * -1) hadd sfDotCoordX $1 -1 hadd sfDotCoordY $1 $rand(1,187) hadd sfDotSize $1 $rand(1,4) hadd sfDotSpeed $1 $calc($rand(100,600) / 100) hadd sfDotColor $1 $rand(1,16777215) } alias sfCreateObj { if ($calc($hget(sfDotCoordX,0).item + $1) > 1000) { echo -a OBJECT LIMIT REACHED | return } var %x = $1 while (%x) { var %sid $sfId sfRecreateObj %sid ;hadd sfDotCoordX %sid $rand(1,314) dec %x } set %sfTotalObj $hget(sfDotCoordX,0).item } alias sfDelObj { if ($hget(sfDotCoordX,0).item < $1) { echo -a TOTAL OBJECTS: $v1 | return } var %x = $1 while (%x) { hdel sfDotCoordX %sfDelId hdel sfDotCoordY %sfDelId hdel sfDotSize %sfDelId hdel sfDotSpeed %sfDelId hdel sfDotColor %sfDelId inc %sfDelId dec %x } set %sfTotalObj $hget(sfDotCoordX,0).item } alias sfId { inc %sfDrawId return %sfDrawId }