Hallo Epvp community,
hier ist mal eine kleine Source vom Schneefall.
War jetzt nicht wirklich schwer oder ist übelst
geschrieben. Bin auch noch nicht so gut in GDI oder in WinAPI.
Naja hier ist der Code:
(Der Transparente GUI Code gehört nicht mir)
Virustotal:
Die Viren von VT kommen vom Compiler und glaube ich vom GDI+/WinApi.
Bin mir da nicht so sicher.
Die Flocken.rar ist im Anhang
hier ist mal eine kleine Source vom Schneefall.
War jetzt nicht wirklich schwer oder ist übelst
geschrieben. Bin auch noch nicht so gut in GDI oder in WinAPI.
Naja hier ist der Code:
(Der Transparente GUI Code gehört nicht mir)
Code:
#NoTrayIcon
#include <WinApi.au3>
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
Global Const $width = @DesktopWidth
Global Const $height = @DesktopHeight
Global $graphics, $backbuffer, $bitmap
Global $ScreenDc, $dc, $tSize, $pSize, $tSource, $pSource, $tBlend, $pBlend, $tPoint, $pPoint, $gdibitmap
Global $Flocken[1][6] = [[0]] ;[index: 0(X) 1(Y) 2(Richtung) 4(Falltime) 5(Width)]
Global $Speed, $FlockenWidth = 5, $FlockenHeight = 5, $Anzahl, $FlockenTimer
Opt("GUIOnEventMode", 1)
Opt("MouseCoordMode", 0)
$GUI = GUICreate("", $width, $height, 0, 0, 0, $WS_EX_LAYERED + $WS_EX_TOPMOST) ;Window Must be Layered for Transparency
GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
_GDIPlus_Startup()
$graphics = _GDIPlus_GraphicsCreateFromHWND($GUI)
$bitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $graphics)
$backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
If FileExists(@AppDataDir & "\Flocke.png") = False Then InetGet("http://ntprojects.1x.de/pictures/flocke.png", @AppDataDir & "\Flocke.png")
$FlockenPicture = _GDIPlus_ImageLoadFromFile(@AppDataDir & "\Flocke.png")
;_GDIPlus_GraphicsSetSmoothingMode($backbuffer, 2)
; == For transparency ==
$ScreenDc = _WinAPI_GetDC($GUI)
$gdibitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($bitmap)
$dc = _WinAPI_CreateCompatibleDC($ScreenDc)
_WinAPI_SelectObject($dc, $gdibitmap)
; == _WinAPI_UpdateLayeredWindow parameters ==
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", $width)
DllStructSetData($tSize, "Y", $height)
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
Global $alpha = 200
Global $alpha_steps = 5
DllStructSetData($tBlend, "Alpha", $alpha)
DllStructSetData($tBlend, "Format", 1)
$tPoint = DllStructCreate($tagPOINT)
$pPoint = DllStructGetPtr($tPoint)
DllStructSetData($tPoint, "X", 0)
DllStructSetData($tPoint, "Y", 0)
;===============================================
GUISetState()
WinSetOnTop($GUI, "", 1)
Flocken(1, 150, 15, 17, 17)
Do
_GDIPlus_GraphicsClear($backbuffer, 0x00000000)
Flocken(55, 55, 55, 55, 55, 2)
$gdibitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($bitmap)
_WinAPI_SelectObject($dc, $gdibitmap)
_WinAPI_UpdateLayeredWindow($GUI, $ScreenDc, 0, $pSize, $dc, $pSource, 0, $pBlend, 2)
_WinAPI_DeleteObject($gdibitmap)
Until False * Not Sleep(30)
Func Flocken($FSpeed, $FAnzahl, $Timer = 10, $W = 15, $H = 15, $Case = 0, $Place = 555)
If $Case = 0 Then
$Speed = $FSpeed
$Anzahl = $FAnzahl
$FlockenWidth = $W
$FlockenHeight = $H
$FlockenTimer = $Timer
ReDim $Flocken[$Anzahl][UBound($Flocken, 2)]
For $i = 0 To $Anzahl - 1
$Flocken[$i][0] = Random(0, $width, 1)
$Flocken[$i][1] = Random(0, $height, 1)
$Flocken[$i][2] = Random(1, 2, 1)
$Flocken[$i][3] = 0
$Flocken[$i][4] = Random(10, 17, 1)
Next
ElseIf $Case = 1 Then
$Flocken[$Place][0] = Random(0, $width, 1)
$Flocken[$Place][1] = Random(0, 0, 1)
$Flocken[$Place][2] = Random(1, 2, 1)
$Flocken[$Place][3] = 0
$Flocken[$Place][4] = Random(10, 17, 1)
ElseIf $Case = 2 Then
For $i = 0 To $Anzahl - 1
If $Flocken[$i][0] < 0 Or $Flocken[$i][0] > $width - $Flocken[$i][4] Or $Flocken[$i][1] < 0 Or $Flocken[$i][1] > $height - $Flocken[$i][4] Then
Flocken(55, 55, 55, 55, 55, 1, $i)
EndIf
If $Flocken[$i][2] = 1 Then
$Flocken[$i][0] -= Random(0, 2, 1); Links
$Flocken[$i][1] += Random(0, 2, 1); Runter
If $Flocken[$i][3] = $FlockenTimer Then
$Flocken[$i][3] = 0
$Flocken[$i][2] = 2
Else
$Flocken[$i][3] += 1
EndIf
ElseIf $Flocken[$i][2] = 2 Then
$Flocken[$i][0] += Random(0, 2, 1); Rechts
$Flocken[$i][1] += Random(0, 2, 1);Runter
If $Flocken[$i][3] = $FlockenTimer Then
$Flocken[$i][3] = 0
$Flocken[$i][2] = 1
Else
$Flocken[$i][3] += 1
EndIf
EndIf
_GDIPlus_GraphicsDrawImageRect($backbuffer, $FlockenPicture, $Flocken[$i][0], $Flocken[$i][1], $Flocken[$i][4], $Flocken[$i][4])
Next
EndIf
EndFunc ;==>Flocken
Func Close()
; Clean up
_WinAPI_DeleteDC($dc)
_WinAPI_ReleaseDC($GUI, $ScreenDc)
_GDIPlus_GraphicsDispose($backbuffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_GraphicsDispose($graphics)
_GDIPlus_Shutdown()
WinClose($GUI)
Exit
EndFunc ;==>Close
Virustotal:

Die Viren von VT kommen vom Compiler und glaube ich vom GDI+/WinApi.
Bin mir da nicht so sicher.
Die Flocken.rar ist im Anhang






