TheBloodTear
Знающий
- Сообщения
- 36
- Репутация
- 9
Вот нашел в недрах мусора очень милый скрипт, думаю понравится ..
Скрипт заставляет ряд картинок двигаться за указателем мыши .. Так как на носу Новый Год, я вставил в качестве картинок снежинки ;).. Я думаю, если у кого-то есть дамы, которые могут встретить Новый Год за ПК, или на след день быть за ним, то будет мило установить им это ;).. Используя условия:
вместо появления через HotKey ;).. Как установить EXE в автозагрузку думаю знаете ;)..
Скрипт и картинки во вложении ;).. С наступающим всех!!! :beer:
P.S. Исходный код скрипта не мой, и к сожалению я автора не вспомню, т.к. скачан скрипт был очень давно :(..
Код:
#NoTrayIcon
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
FileInstall ("1.png", @TempDir & "\1.png", 1)
FileInstall ("2.png", @TempDir & "\2.png", 1)
FileInstall ("3.png", @TempDir & "\3.png", 1)
FileInstall ("4.png", @TempDir & "\4.png", 1)
FileInstall ("5.png", @TempDir & "\5.png", 1)
FileInstall ("6.png", @TempDir & "\6.png", 1)
FileInstall ("7.png", @TempDir & "\7.png", 1)
FileInstall ("8.png", @TempDir & "\8.png", 1)
FileInstall ("9.png", @TempDir & "\9.png", 1)
Global $iDots = 9
Global $aDots[$iDots][9]
Global $iXpos = 0
Global $iYpos = 0
Global $iDeltaT = 0.01
Global $iSegLen = 10
Global $iSpringK = 10
Global $iMass = 1
Global $iXGravity = 0
Global $iYGravity = 50
Global $iRes = 10
Global $iStopVel = 0.1
Global $iStopAcc = 0.1
Global $iDotSize = 25
Global $iBounce = 0.75
Global $snow = 0
Global Const $AC_SRC_ALPHA = 1
Global $iHeight = @DesktopHeight
Global $iWidth = @DesktopWidth
HotKeySet ("^{F12}", "snow") ;Ctrl+F12 - показать, либо скрыть
HotKeySet ("{ESC}", "bay") ;Esc - выход
While 1
If $snow = 1 Then
$m = MouseGetPos()
$iXpos = $m[0]
$iYpos = $m[1]
_Animate()
EndIf
Sleep (10)
WEnd
Func snow()
If $snow = 1 Then
For $i = 1 To ($iDots - 1)
$iDotSize-=2
GUISetState(@SW_HIDE, $aDots[$i][0])
$snow = 0
Next
Else
For $i = 1 To ($iDots - 1)
$iDotSize-=2
$aDots[$i][0] = GUICreate("Snow", $iDotSize, $iDotSize, 144, 160, $WS_POPUP , $WS_EX_LAYERED + $WS_EX_TOOLWINDOW+$WS_EX_TOPMOST)
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile(@TempDir & "\" & $i & ".png")
SetBitMap($aDots[$i][0] , $hImage, 255)
GUISetState(@SW_SHOW, $aDots[$i][0])
$snow = 1
Next
EndIf
EndFunc
Func bay()
Exit
EndFunc
Func _Animate()
$aDots[0][1] = $iXpos
$aDots[0][2] = $iYpos
For $i = 1 To ($iDots - 1)
Local $spring[3]
$spring[1] = 0
$spring[2] = 0
_Spring_Force($i - 1, $i, $spring)
If $i < ($iDots - 1) Then _Spring_Force($i + 1, $i, $spring)
Local $resist[3]
$resist[1] = -$aDots[$i][3] * $iRes
$resist[2] = -$aDots[$i][4] * $iRes
Local $accel[3]
$accel[1] = ($spring[1] + $resist[1]) / $iMass + $iXGravity
$accel[2] = ($spring[2] + $resist[2]) / $iMass + $iYGravity
$aDots[$i][3] += ($iDeltaT * $accel[1])
$aDots[$i][4] += ($iDeltaT * $accel[2])
If Abs($aDots[$i][3]) < $iStopVel And Abs($aDots[$i][4]) < $iStopVel And Abs($accel[1]) < $iStopAcc And Abs($accel[2]) < $iStopAcc Then
$aDots[$i][3] = 0
$aDots[$i][4] = 0
EndIf
$aDots[$i][1] += $aDots[$i][3]
$aDots[$i][2] += $aDots[$i][4]
If ($aDots[$i][2] < 0) Then
If ($aDots[$i][4] < 0) Then $aDots[$i][4] = $iBounce * - $aDots[$i][4]
$aDots[$i][2] = 0
EndIf
If ($aDots[$i][2] >= $iHeight - $iDotSize - 1) Then
If ($aDots[$i][4] > 0) Then $aDots[$i][4] = $iBounce * - $aDots[$i][4]
$aDots[$i][2] = $iHeight - $iDotSize - 1
EndIf
If ($aDots[$i][1] >= $iWidth - $iDotSize) Then
If ($aDots[$i][3] > 0) Then $aDots[$i][3] = $iBounce * - $aDots[$i][3]
$aDots[$i][1] = $iWidth - $iDotSize - 1
EndIf
If ($aDots[$i][1] < 0) Then
If ($aDots[$i][3] < 0) Then $aDots[$i][3] = $iBounce * - $aDots[$i][3]
$aDots[$i][1] = 0
EndIf
WinMove($aDots[$i][0], "", $aDots[$i][1], $aDots[$i][2])
Next
EndFunc
Func _Spring_Force($i, $j, ByRef $spring)
Local $springF
$dx = $aDots[$i][1] - $aDots[$j][1]
$dy = $aDots[$i][2] - $aDots[$j][2]
$len = Sqrt($dx ^ 2 + $dy ^ 2)
If Not ($len > $iSegLen) Then Return
$springF = $iSpringK * ($len - $iSegLen)
$spring[1] += ($dx / $len) * $springF
$spring[2] += ($dy / $len) * $springF
EndFunc
Func SetBitmap($hGUI, $hImage, $iOpacity)
Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
$hScrDC = _WinAPI_GetDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize )
DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth ($hImage))
DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha" , $iOpacity )
DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
_WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC (0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC ($hMemDC)
EndFunc
Скрипт заставляет ряд картинок двигаться за указателем мыши .. Так как на носу Новый Год, я вставил в качестве картинок снежинки ;).. Я думаю, если у кого-то есть дамы, которые могут встретить Новый Год за ПК, или на след день быть за ним, то будет мило установить им это ;).. Используя условия:
Код:
If @YEAR = "2010" And @MON = "01" And @MDAY < 10 Then
вместо появления через HotKey ;).. Как установить EXE в автозагрузку думаю знаете ;)..
Скрипт и картинки во вложении ;).. С наступающим всех!!! :beer:
P.S. Исходный код скрипта не мой, и к сожалению я автора не вспомню, т.к. скачан скрипт был очень давно :(..