Jump to content



Photo

[Game] Bounce the Sun


  • Please log in to reply
15 replies to this topic

#1 sandin

sandin

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 569 posts

Posted 19 November 2009 - 12:52 AM

The Sun is gonna hit the ground, the Sun is gonna fall from the sky!!! ...unless YOU help the mankind save the world... for at least some time...

Move the mouse bellow the bouncing Sun and bounce it back into the sky.
Each bounce will give you 8 points, if the ball hits the wall or the top of the window instead of 8 points you get 8, 16, 24... points (8 * wall/top hits).

For full gameplay environment download Music/Sound files from here: BouncingSun+Music/Sound effects

The game doesn't use GDI, it was made with drawing and moving shapes/graphics.

If you feel like, you can post your best results here in this topic. Enjoy ;)

Here's a TIP: keep the Sun bouncing in the area of clouds, don't let it go bellow the clouds area :)

Screen Shot of the game:
Posted Image

...and source: edit: added dynamic background
AutoIt         
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinApi.au3> #include <Sound.au3> Opt("MouseCoordMode", 2) Opt("TrayIconHide", 1) Global $Save_File = @ScriptDir & "\Data\DATA.ini" if NOT FileExists($Save_File) then _Create_ini() Global Const $WS_EX_COMPOSITED = 0x2000000 Global $PosX = 0, $PosY = 0, $VelX = 0, $VelY = 0 Global $Gravity Global $CurMusic = 1, $Music1, $Music2 Global $TheBallIsDown = True, $Score = 0, $Tap_Counter = 1 Global $BallWidth = Number(IniRead($Save_File, "Options", "BallSize", "56")) Global $SpringWidth = Number(IniRead($Save_File, "Options", "SpringSize", "76")) Global $Highscore_key = IniRead($Save_File, "Top score", "score", "0/0") Global $Score_Multip = Number(IniRead($Save_File, "Options", "Score multiplier", "8")) Global $BallBounceHeight = Number(IniRead($Save_File, "Options", "Bounce height", "22")) Global $XAccelerate = Number(IniRead($Save_File, "Options", "Acceleration X", "40")) Global $OverAllSpeed = Number(IniRead($Save_File, "Options", "GameSpeed", "16")) Global $dynamicBackground = Number(IniRead($Save_File, "Options", "dynamicBackground", "1")) Global $Counter = 0, $BestResult = Number(StringLeft($Highscore_key, StringInStr($Highscore_key, "/")-1)) Global $Grass_move_timer = Random(100, 800, 1), $Grass_Current = 1, $Grass_Timer, $Cloud_Timer, $Cloud_move_timer = Random(100, 300, 1) Dim $Cloud_movement[10] $Form1 = GUICreate("Bounce The SUN - Keep the Sun from falling from the sky - by sandin", 640, 480+40, -1, -1, -1, $WS_EX_COMPOSITED) GUISetBkColor(0xBFE3FE) $Clouds = _Create_Clouds() $TheSpring = _Create_Sphere(0, 0, $SpringWidth, 15, 0x00477D) $TheBall = _Create_Sphere(0, 0, $BallWidth, $BallWidth, 0xFFFF00) GUICtrlSetState($TheSpring, $GUI_HIDE) GUICtrlSetState($TheBall, $GUI_HIDE) $Start_Button = GUICtrlCreateButton("S&tart", 640/2-150/2, 430, 150, 35) GUICtrlSetFont(-1, 14, 800, 2, "Arial") $MusicButton = GUICtrlCreateButton("Stop Music", 5, 490, 80, 25) $Grass = _Draw_ground_and_grass() $Result_label = GUICtrlCreateLabel("Press Start to play the game", 0, 260, 640, 80, 0x01) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetFont(-1, 26, 800, 2, "Arial") $Hits_Label = GUICtrlCreateLabel("Hits: 0", 100, 490, 160, 30) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetFont(-1, 18, 800, 2, "Arial") GUICtrlSetColor(-1, 0xFFF2CB) $Score_Label = GUICtrlCreateLabel("Score: 0", 220, 490, 160, 30) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetFont(-1, 18, 800, 2, "Arial") GUICtrlSetColor(-1, 0xFFF2CB) $BestResult_Label = GUICtrlCreateLabel("Highscore: " & $Highscore_key, 380, 490, 340, 30) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetFont(-1, 18, 800, 2, "Arial") GUICtrlSetColor(-1, 0xFFF2CB) $BounceSound = _SoundOpen(@ScriptDir & "\Data\Sound\Bounce.wav") $HitSound = _SoundOpen(@ScriptDir & "\Data\Sound\Hit.wav") $Music1 = _SoundOpen(@ScriptDir & "\Data\Music\Music01.mp3") $Music2 = _SoundOpen(@ScriptDir & "\Data\Music\Music02.mp3") GUISetState(@SW_SHOW) _SoundPlay($Music1) AdlibEnable("_The_Ball_Is_alive", $OverAllSpeed) While 1     Local $nMsg = GUIGetMsg()     Switch $nMsg         Case $GUI_EVENT_CLOSE             _SoundClose($BounceSound)             _SoundClose($HitSound)             _SoundClose($Music1)             _SoundClose($Music2)             Exit         Case $Start_Button             $Score = 0             $Tap_Counter = 1             $Counter = 0             GUICtrlSetData($Score_Label, "Score: 0")             GUICtrlSetData($Hits_Label, "Hits: 0")             $TheBallIsDown = False             _WinAPI_ShowCursor(False)             $PosX = 640/2-$BallWidth/2             $PosY = 0             $VelX = Random(-22, 22, 1)             $VelY = 0             $Gravity = Number(IniRead($Save_File, "Options", "Gravity", "1.0"))             GUICtrlSetState($Result_label, $GUI_HIDE)             GUICtrlSetState($TheSpring, $GUI_SHOW)             GUICtrlSetState($Start_Button, $GUI_HIDE)             GUICtrlSetState($TheBall, $GUI_SHOW)         Case $MusicButton             if GUICtrlRead($MusicButton) = "Stop Music" Then                 GUICtrlSetData($MusicButton, "Start Music")                 if $CurMusic = 1 Then                     _SoundStop($Music1)                 Else                     _SoundStop($Music2)                 EndIf             Else                 GUICtrlSetData($MusicButton, "Stop Music")                 $CurMusic = Random(1, 2, 1)                 if $CurMusic = 1 Then                     _SoundPlay($Music1)                 Else                     _SoundPlay($Music2)                 EndIf             EndIf     EndSwitch         Local $mouseMsg = GUIGetCursorInfo()     if NOT @error then         Local $Mouse_X = $mouseMsg[0]-$SpringWidth/2         Local $Mouse_Y = $mouseMsg[1]-15/2         _move_the_object_to($TheSpring, $Mouse_X, $Mouse_Y)     EndIf         if $dynamicBackground = 1 then         if Random(0, 1, 1) = 0 then             if TimerDiff($Grass_Timer) >= $Grass_move_timer Then                 if $Grass_Current = 1 then                     $Grass_Current = 2                     _move_the_object_to($Grass, 1, 477)                 Else                     $Grass_Current = 1                     _move_the_object_to($Grass, 0, 477)                 EndIf                 $Grass_move_timer = Random(100, 800, 1)                 $Grass_Timer = TimerInit()             EndIf         Else             If TimerDiff($Cloud_Timer) >= $Cloud_move_timer Then                 $Cloud_move_timer = Random(100, 300, 1)                 $Cloud_Timer = TimerInit()                 _Move_Clouds()             EndIf         EndIf     EndIf WEnd func _Create_ini()     if NOT FileExists(@ScriptDir & "\Data") then DirCreate(@ScriptDir & "\Data")     FileWrite($Save_File, "")     IniWrite($Save_File, "Options", "Gravity", "1.0")     IniWrite($Save_File, "Options", "Acceleration X", "40")     IniWrite($Save_File, "Options", "Bounce height", "22")     IniWrite($Save_File, "Options", "Score multiplier", "8")     IniWrite($Save_File, "Options", "GameSpeed", "16")     IniWrite($Save_File, "Options", "BallSize", "56")     IniWrite($Save_File, "Options", "SpringSize", "76")     IniWrite($Save_File, "Options", "dynamicBackground", "1")     IniWrite($Save_File, "Top score", "Score", "0/0") EndFunc func _Create_Sphere($x, $y, $width, $height, $color)     Local $sphere = GUICtrlCreateGraphic($x, $y, $width, $height)     GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0, $color)     GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, $x, $y, $width, $height)     Return $sphere EndFunc func _Create_Clouds()     dim $Cloouuudd[10]     for $i = 1 to 9         $Cloouuudd[$i] = GUICtrlCreateGraphic(Random(5, 505, 1), Random(5, 240, 1), 155, 35+25)         GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFFFFFF, 0xFFFFFF)         GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, Random(10, 35, 1), Random(15, 25, 1), Random(40, 90, 1), Random(25, 35, 1))         GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, Random(0, 15, 1), Random(10, 20, 1), Random(40, 70, 1), Random(25, 35, 1))         GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, Random(50, 60, 1), Random(10, 20, 1), Random(40, 95, 1), Random(25, 35, 1))         GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, Random(10, 35, 1), Random(0, 15, 1), Random(40, 95, 1), Random(25, 35, 1))         $Cloud_movement[$i] = Random(0, 1, 1)     Next     if $dynamicBackground = 1 then $Cloud_Timer = TimerInit()     Return $Cloouuudd EndFunc func _Draw_ground_and_grass()     Local $grass_graph1 = GUICtrlCreateGraphic(0, 479, 640, 1)     Local $Grass_move = GUICtrlCreateGraphic(0, 477, 640, 2)     for $i = 1 to 640 step 6         GUICtrlSetGraphic($grass_graph1, $GUI_GR_COLOR, 0x00570C)         GUICtrlSetGraphic($Grass_move, $GUI_GR_COLOR, 0x00570C)         GUICtrlSetGraphic($grass_graph1, $GUI_GR_RECT, $i, 0, 3, 1)         GUICtrlSetGraphic($Grass_move, $GUI_GR_RECT, $i, 0, 2, 2)     Next     GUICtrlCreateGraphic(0, 480+5, 640, 40-5)     GUICtrlSetBkColor(-1, 0x3E2300)     GUICtrlCreateGraphic(0, 480, 640, 5)     GUICtrlSetBkColor(-1, 0x00570C)     if $dynamicBackground = 1 then $Grass_Timer = TimerInit()     Return $Grass_move EndFunc func _The_Ball_Is_Alive()     _Apply_Gravity()     $PosX += $VelX     $PosY += $VelY     if $PosX > 640 - $BallWidth Then         $PosX = 640 - $BallWidth         _Apply_Rebound()     ElseIf $PosX < 0 Then         $PosX = 0         _Apply_Rebound()     EndIf     if $PosY > 480 - $BallWidth Then         $PosY = 480 - $BallWidth         _Apply_Bounce()     ElseIf $PosY < 0 Then         $PosY = 0         _Apply_Bounce()     EndIf     _move_the_object_to($TheBall, $PosX, $PosY)     if GUICtrlRead($MusicButton) = "Stop Music" then _Change_Music()     if $TheBallIsDown = False then _Collision() EndFunc func _Move_Clouds()     Local $i = Random(1, 9, 1)     Local $Cloud_Pos = ControlGetPos($Form1, "", $Clouds[$i])     if $Cloud_movement[$i] = 0 then ;left         if $Cloud_Pos[0] <= -$Cloud_Pos[2] Then             _move_the_object_to($Clouds[$i], 640, $Cloud_Pos[1])         Else             _move_the_object_to($Clouds[$i], $Cloud_Pos[0]-2, $Cloud_Pos[1])         EndIf     else ;right         if $Cloud_Pos[0] >= 640+$Cloud_Pos[2] Then             _move_the_object_to($Clouds[$i], -$Cloud_Pos[2], $Cloud_Pos[1])         Else             _move_the_object_to($Clouds[$i], $Cloud_Pos[0]+2, $Cloud_Pos[1])         EndIf     EndIf EndFunc func _Change_Music()     if $CurMusic = 1 Then         if _SoundPos($Music1, 2) >= _SoundLength($Music1, 2)-10 Then             _SoundStop($Music1)             $CurMusic = 2             _SoundPlay($Music2)         EndIf     Else         if _SoundPos($Music2, 2) >= _SoundLength($Music2, 2)-10 Then             _SoundStop($Music1)             $CurMusic = 1             _SoundPlay($Music1)         EndIf     EndIf EndFunc func _Collision()     Local $MousePos = MouseGetPos()     Local $Mouse_X = $MousePos[0]     Local $Mouse_Y = $MousePos[1]     if ($Mouse_X+$SpringWidth/2 > $PosX) AND ($Mouse_X-$SpringWidth/2 < $PosX+$BallWidth) AND ($Mouse_Y+15/2 > $PosY) AND ($Mouse_Y-15/2 < $PosY+$BallWidth) then         $Counter += 1         GUICtrlSetData($Hits_Label, "Hits: " & $Counter)         _SoundPlay($HitSound)         $VelY = -$BallBounceHeight         $VelX = ((($PosX+$BallWidth/2)-$Mouse_X)/(100/$XAccelerate) * (2-(2-1)*($BallWidth-10)/(56-10))) ;the last should result with 1 unless shrinking ball starts working, and thus increase X speed of the ball         if $VelX = 0 then $VelX = (Random(-10, 10, 1)/10)                 $Score += $Score_Multip*$Tap_Counter         $Tap_Counter = 1         GUICtrlSetData($Score_Label, "Score: " & $Score)         ;~      if $BallWidth > 10 then ;failed attemt to create ball and spring to shrink every 3 hits due to graphic display bug ;~          if Mod($Counter, 3) = 0 Then ;~              $BallWidth -= 1 ;~              $SpringWidth -= 1 ;~              GUICtrlSetGraphic($TheBall, $GUI_GR_ELLIPSE, 0, 0, $BallWidth, $BallWidth) ;~              GUICtrlSetGraphic($TheSpring, $GUI_GR_ELLIPSE, 0, 0, $SpringWidth, 15) ;~              GUICtrlSetData($BallSize_Label, "Size: " & $BallWidth) ;~          EndIf ;~      EndIf     EndIf EndFunc func _Set_the_object_size($object, $dimension)     GUICtrlSetGraphic($object, $GUI_GR_ELLIPSE, 0, 0, $dimension, $dimension) EndFunc func _move_the_object_to($object, $x, $y)     GUICtrlSetPos($object, $x, $y) EndFunc func _Apply_Gravity()     $VelY += $Gravity EndFunc func _Apply_Bounce()     if Round($VelY) > 1 Then _SoundPlay($BounceSound)     if $VelY > 0 Then         $VelY *= (-0.85)         if $TheBallIsDown = false Then             _WinAPI_ShowCursor(True)             $TheBallIsDown = True             GUICtrlSetData($Start_Button, "&Try again")             GUICtrlSetState($TheSpring, $GUI_HIDE)             GUICtrlSetState($Start_Button, $GUI_SHOW)             Local $show_result = "You score " & $Score & " points with " & $Counter & " hits"             if $Score > $BestResult then                 $BestResult = $Score                 $show_result &= @CRLF & "AND You beat the highscore!"                 GUICtrlSetData($BestResult_Label, "Highscore: " & $Score & "/" & $Counter)                 IniWrite($Save_File, "Top score", "Score", $Score & "/" & $Counter)             EndIf             GUICtrlSetData($Result_label, $show_result)             GUICtrlSetState($Result_label, $GUI_SHOW)         EndIf     Else         $Tap_Counter += 1         _SoundPlay($BounceSound)         $VelY *= (-1.0)     EndIf     $VelX *= 0.92     if Abs($VelX) < 1 Then $VelX = 0     if Abs($VelY) < 1 then $VelY = 0 EndFunc func _Apply_Rebound()     $Tap_Counter += 1     _SoundPlay($BounceSound)     $VelX *= (-0.9)     if Abs($VelX) < 1 then $VelX = 0 EndFunc

Edited by sandin, 19 November 2009 - 05:07 PM.






#2 UEZ

UEZ

    Never say never

  • MVPs
  • 3,605 posts

Posted 19 November 2009 - 08:38 AM

Nice implementation! I like the ball physics but ball is flickering during movement!

UEZ

 
The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯


#3 AlmarM

AlmarM

    Programming my way.

  • Active Members
  • PipPipPipPipPipPip
  • 1,642 posts

Posted 19 November 2009 - 08:45 AM

Cooooooooooooooooool :)

#4 sandin

sandin

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 569 posts

Posted 19 November 2009 - 12:48 PM

Nice implementation! I like the ball physics but ball is flickering during movement!

UEZ


It does? but the $WS_EX_COMPOSITED style should remove any window/controls flickering (at least it does on my PC, Windows XP SP3, totally flicker free) - similar to DoubleBuffered form style on C, Delphi, etc...
Posted Image

Maybe there is a way to set DoubleBuffered style on the window, but I couldn't find it's value -.- and 0x2000000 ($WS_EX_COMPOSITED) worked for me...

#5 UEZ

UEZ

    Never say never

  • MVPs
  • 3,605 posts

Posted 19 November 2009 - 01:08 PM

I'm using Vista x32 generally and it is not flickering permanently, only sometimes.

UEZ

 
The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯


#6 Manadar

Manadar

    Taking a REST.

  • MVPs
  • 10,714 posts

Posted 19 November 2009 - 01:12 PM

Funny game. I also had double buffering problem in Windows Vista and the highscore doesn't seem to work.

:)

Here's a bot that will probably not work on anyone else's machine:
AutoIt         
HotKeySet("{ESC}", "_panic") Func _panic()     Exit EndFunc $hWnd = WinGetHandle("Bounce The SUN") If @error Then     MsgBox(0, "", "Start ""Bounce The SUN"" game first.") EndIf WinActivate($hWnd) WinWaitActive($hWnd) $PosSize = WinGetPos($hWnd) While 1     $pos = PixelSearch($PosSize[0],$PosSize[1],$PosSize[0] + $PosSize[2],$PosSize[1] + $PosSize[3], 0xffff00, 0, 3, $hWnd)     If @error Then         ControlClick($hWnd, "", "[CLASS:Button; INSTANCE:1]")     Else         $h = $PosSize[1] - $pos[1] ; Top of screen - pixel found at y coord         If ($h < -200) Then             MouseMove($pos[0] + 6, $pos[1] + 90, 0)         EndIf         If ($h < -400) Then             Send("{TAB}{SPACE}")         EndIf     EndIf WEnd

Edited by Manadar, 19 November 2009 - 01:13 PM.


#7 AlmarM

AlmarM

    Programming my way.

  • Active Members
  • PipPipPipPipPipPip
  • 1,642 posts

Posted 19 November 2009 - 01:27 PM

Here's a bot that will probably not work on anyone else's machine

Works fine for me :)

Edited by AlmarM, 19 November 2009 - 01:27 PM.


#8 UEZ

UEZ

    Never say never

  • MVPs
  • 3,605 posts

Posted 19 November 2009 - 01:38 PM

Funny game. I also had double buffering problem in Windows Vista and the highscore doesn't seem to work.

:)

Here's a bot that will probably not work on anyone else's machine:

AutoIt         
HotKeySet("{ESC}", "_panic") Func _panic()     Exit EndFunc $hWnd = WinGetHandle("Bounce The SUN") If @error Then     MsgBox(0, "", "Start ""Bounce The SUN"" game first.") EndIf WinActivate($hWnd) WinWaitActive($hWnd) $PosSize = WinGetPos($hWnd) While 1     $pos = PixelSearch($PosSize[0],$PosSize[1],$PosSize[0] + $PosSize[2],$PosSize[1] + $PosSize[3], 0xffff00, 0, 3, $hWnd)     If @error Then         ControlClick($hWnd, "", "[CLASS:Button; INSTANCE:1]")     Else         $h = $PosSize[1] - $pos[1] ; Top of screen - pixel found at y coord         If ($h < -200) Then             MouseMove($pos[0] + 6, $pos[1] + 90, 0)         EndIf         If ($h < -400) Then             Send("{TAB}{SPACE}")         EndIf     EndIf WEnd

Yep, not working properly ;)

UEZ

 
The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯


#9 sandin

sandin

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 569 posts

Posted 19 November 2009 - 01:42 PM

...and the highscore doesn't seem to work.

O_o

if $Score > $BestResult then      $BestResult = $Score      $show_result &= @CRLF & "AND You beat the highscore!"      GUICtrlSetData($BestResult_Label, "Highscore: " & $Score & "/" & $Counter)      IniWrite($Save_File, "Top score", "Score", $Score & "/" & $Counter) EndIf
the code is very simple, how can it not work? O_o

BOTs take fun from the games :), if you wanna be the best, just use:
ControlSetText("Bounce The SUN", "", "[CLASS:Static; INSTANCE:18]", "Highscore: 99999/99")
;)

#10 Mat

Mat

    43 38 48 31 30 4E 34 4F 32

  • MVPs
  • 4,040 posts

Posted 19 November 2009 - 02:16 PM

To get a ridiculous score just keep it in the corner, trapped by your mouse, whilst you go eat lunch.

It did not work very well on my computer, but then, nothing ever does... I had to edit it a bit to make it a lot lighter (I ended up moving the adlib to only start on button press, and end on game end, losing out on the fun bouncy bit at the end), the game was starting, and finishing, before it even showed the sun!

Mat

I don't know where I'm going, but I'm on my way.


#11 Manadar

Manadar

    Taking a REST.

  • MVPs
  • 10,714 posts

Posted 19 November 2009 - 02:37 PM

O_o

if $Score > $BestResult then      $BestResult = $Score      $show_result &= @CRLF & "AND You beat the highscore!"      GUICtrlSetData($BestResult_Label, "Highscore: " & $Score & "/" & $Counter)      IniWrite($Save_File, "Top score", "Score", $Score & "/" & $Counter) EndIf

the code is very simple, how can it not work? O_o

Turns out the font is different on Windows 7 and it doesn't fit in the first line so it's wrapped to the next line that's outside of the client area and it doesn't shut up.


Edit: Guys, please no more comments about my bot. I don't want to steal the topic.

Edited by Manadar, 19 November 2009 - 02:50 PM.


#12 Notepad

Notepad

    Seeker

  • Active Members
  • 29 posts

Posted 27 December 2009 - 03:16 AM

The Sun is gonna hit the ground, the Sun is gonna fall from the sky!!! ...unless YOU help the mankind save the world... for at least some time...

I found a bug!!!

Hope it helps loz! ;)

Edited by CalvinAndHobbesRules, 27 December 2009 - 03:20 AM.

Hi.

#13 Manadar

Manadar

    Taking a REST.

  • MVPs
  • 10,714 posts

Posted 27 December 2009 - 12:18 PM

To get a ridiculous score just keep it in the corner, trapped by your mouse, whilst you go eat lunch.

I found a bug!!!

Hope it helps loz! ;)

Been posted ...

#14 James

James

    jbrooksuk

  • MVPs
  • 9,469 posts

Posted 27 December 2009 - 01:15 PM

It seems to flicker more when I have the whole "package" running; sounds and images.

#15 Notepad

Notepad

    Seeker

  • Active Members
  • 29 posts

Posted 28 December 2009 - 12:38 AM

Been posted ...

Ohhhhhh didn't see :evil: :evil:
But I do have a vid of it! ;)
the easiest way to get 999999999999/99999999999 is go into data then open data and change score lol!
Hi.

#16 Mat

Mat

    43 38 48 31 30 4E 34 4F 32

  • MVPs
  • 4,040 posts

Posted 28 December 2009 - 11:31 AM

Your video wasn't quite perfect, I was able to get it right in the corner and leave it unnattended while I (very literally) went to have lunch.

Mat

I don't know where I'm going, but I'm on my way.





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users