@ UEZ hast recht danke für die funktion
Aus deinem AutoIteroids Spiel oder?
Nicht nur
Ich benutze sie auch z.B. in "Simple Ball Collision Simulation".
Das Verhaken ist wirklich nicht einfach zu lösen, hab' das auch bei den Kugeln ![]()
UEZ
@ UEZ hast recht danke für die funktion
Aus deinem AutoIteroids Spiel oder?
Nicht nur
Ich benutze sie auch z.B. in "Simple Ball Collision Simulation".
Das Verhaken ist wirklich nicht einfach zu lösen, hab' das auch bei den Kugeln ![]()
UEZ
Ich habe deinen Code schnell überflogen und mir ist folgendes aufgefallen:
1) du berechnest $pi/180 immer, obwohl $pi/180 eine Konstante ist
Vorschlag: Global Const $pi_div_180 = 4 * ATan(1) / 180
2) auch die Potenz von Zahlen ist langsamer als die Multiplikation, d.h. a^2 = a*a. Kannst ja bei deiner Pythagoras Berechnung berücksichtigen!
Ich habe mir dafür eine Funktion geschrieben:
Func Pixel_Distance($x1, $y1, $x2, $y2) ;Pythagoras theorem
Local $a, $b, $c
If $x2 = $x1 And $y2 = $y1 Then
Return 0
Else
$a = $y2 - $y1
$b = $x2 - $x1
$c = Sqrt($a * $a + $b * $b)
Return $c
EndIf
EndFunc ;==>Pixel_Distance
Ansonsten Top!
UEZ
Saubere Arbeit. ![]()
Was mir aufgefallen ist: bei einem Tor sollte sich der Ball auch hinter die Torlinie bewegen!
Respekt!
Was war denn die größte Herausforderung?
Gruß,
UEZ
Hallo UEZ,
gelungene Umsetzung des Spiels
, hat mich sofort 30 Jahre jünger gemacht, hab gedaddelt bis ich ich Ladehemmung hatte (STRG-Taste muss ich mal nachkontrolieren). Weiter so und großes Lob
,
mfg (Auto)bert
Ich war so um die 12 Jahre als ich das erste Mal vor der Kiste stand und Asteroids bewunderte - das ist auch schon ca. 25 Jahre her! Man wie die Zeit vergeht... ![]()
Btw, ich glaube ich habe die Explosionsgeräusche vergessen zu aktivieren:
einfach in der Funktion Func Explosion_Init($ex, $ey) die Zeile If $start_game = 1 Then Explosion_Sound() vor der EndFunc einfügen! SORRY!
In der nächsten, sehr wahrscheinlich Final Version, werden die Explosionsgeräusche wieder da sein!
Gruß,
UEZ
Hallo UEZ
Unglaublich, heute ging mir die genau gleiche idee durch den kopf.hab das spiel früher mal für flash / action script programmiert. Dann kamm mir noch ein anderes Spiel (Klassiker) in den sinn, dass ich auch mal programmiert hatte. und zwar ist es arkanoid / breakout..
vielleicht könnte es eine idee für das nächste spiel sein..??!!
grüsse
Ich werde genau deinen Weg gehen, aber nur anders herum: ich werde jetzt mit Flash respektive C/C++ anfangen. Ohne C/C++ kommt man nicht sehr weit ![]()
Vielleicht werde ich ja ein Game in Flash erstellen, aber bis dahin ist es noch sehr weit...
Gruß,
UEZ
PS: Ach ja, ich bin auch kein AutoIt Meister ![]()
AUTOITEROIDS (Final): ein Clone des Arcade Spielhallen Klassikers Asteroids von 1979 (Atari)
[Blockierte Grafik: https://www.autoitscript.com/forum/uploads/monthly_05_2009/post-29844-1242504010.png]
Steuerung:
Game Play:
Download:
Credits:
Zu finden auch hier (inkl. Change Log): http://www.autoitscript.com/forum/index.php?showtopic=95138
Online zocken: ASTEROIDS (Java Version) ![]()
Viel Spaß beim Ballern
UEZ
Ich hab's rausgefunden. DL Link und Quellcode aktualisiert (1. Post).
Die Pegelauschläge hängen nun von der Lautstärke ab.
Gruß,
UEZ
Auch unter Vista gibt es den Stereomix um den Output aufzunehmen:
Rechtsklick auf das Lautsprechersymbol -> Aufnahmegeräte -> Rechtsklick -> "deaktivierte Geräte anzeigen"
Dann erscheinen dann alle möglichen Devices, welche man dann aktivieren kann._BASS_RecordInit($bass_dll, -1) der Parameter gibt das Aufnahmegerät an, wird bei UEZ warscheinlich 2 sein...(-1 = Default, wahrscheinlich Mikro)
Weiß allerdings nocht nicht, wie man automatisch erkennt, welcher der richtige ist...lgE
Ehrlich gesagt habe ich auch nicht weiter geforscht ![]()
Bei mir wird leider nicht mehr erkannt als Microphone und LineIn!
Ich werde versuchen, die Lautstärke mit einzubeziehen, so dass, wenn die Lautstärke leise ist, die Pegel Ausschäge weniger sind. D.h. je lauter desto mehr Pegel Ausschläge.
Ich habe noch nicht nachgeforscht, ob bass.dll die Lautstärke auslesen kann und ob Vista kompatibel.
UEZ
Darf ich die Visualisierung für meinen Media Player nutzen?
Nach genauso etwas suche ich schon lange....
JA! Nur würde ich gerne bei den "Credits" auftauchen. ![]()
Hinweis: Bass.au3, Bass.dll und das Bild sind nicht mein geistiges Eigentum ![]()
Bitteschön,
UEZ
@UEZ
da haben ma das problem schon! ich hab kA von demzudem versteh ich nurn teil des codes
Hier die Modifikation des Codes:
;code by UEZ 2009
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/SO
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Run_After=upx.exe --best "%out%"
#include <GUIConstantsEx.au3>
#include <GDIplus.au3>
#include <WindowsConstants.au3>
#include "Bass.au3" ;thanks to BrettF
Opt("GUIOnEventMode", 1)
_GDIPlus_Startup()
$bitmap_from_file = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\AIMP_VU.bmp") ;thanks to AIMP2 player ![]()
Global Const $iX = _GDIPlus_ImageGetWidth($bitmap_from_file)
Global Const $iY = _GDIPlus_ImageGetHeight($bitmap_from_file)
Global Const $bass_dll = DllOpen(@ScriptDir & "\BASS.dll")
_BASS_SetConfig($bass_dll, $BASS_CONFIG_REC_BUFFER, 1000)
_BASS_RecordInit($bass_dll, -1)
;thanks to eukalyptus
$Cnt = 0
$Name = _BASS_RecordGetInputName($bass_dll, 0)
While $Name <> ""
$Input = _BASS_RecordGetInput($bass_dll, $Cnt)
If BitAND($Input[0], $BASS_INPUT_TYPE_WAVE) Then _BASS_RecordSetInput($bass_dll, $Cnt, $BASS_INPUT_TYPE_WAVE, 1)
$Cnt += 1
$Name = _BASS_RecordGetInputName($bass_dll, $Cnt)
WEnd
If @OSVersion = "WIN_VISTA" Or @OSVersion = "WIN_2008" Then _BASS_RecordSetInput($bass_dll, 0, $BASS_INPUT_TYPE_WAVE, 1)
$RecHandle = _BASS_RecordStart($bass_dll, 44100, 2, _WinAPI_MakeLong(0, 10))
Global Const $width = $iX * 2
Global Const $height = $iY
$hwnd = GUICreate("", $width, $height, -1, -1, Default, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
GUISetOnEvent($GUI_EVENT_CLOSE, "close")
GUISetState()
$graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
$bitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $graphics)
$backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
_GDIPlus_GraphicsSetSmoothingMode($backbuffer, 4)
Global Const $pen_size = 2
$pen = _GDIPlus_PenCreate(0, $pen_size)
$brush_l = _GDIPlus_BrushCreateSolid()
$brush_r = _GDIPlus_BrushCreateSolid()
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, 0)
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, $iX, 0)
Global Const $pi = 3.1415926535897932384626433832795
Global Const $pi_div_180 = $pi / 180
Global Const $max_amplitude = 450
Global Const $min_x = 25
Global Const $max_x = 160
Global Const $pointer_ini_point_y = 80 ;less is longer
Global Const $pointer_start_y = 93
Global Const $pointer_length = 65
Global Const $ellipse_size = 8
Global Const $ellipse_size_half = $ellipse_size / 2
Global Const $width_div_4 = $width / 4
Global Const $width_div_2 = $width / 2
Dim $title[19] = ["º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`", _
"GDI+ Visualization: Analog Meter", _
"Credits:", _
"Main coding by: UEZ 2009", _
"Bass UDF: BrettF", _
"Bass Record Function Code: eukalyptus", _
"Bass DLL: https://autoit.de/www.un4seen.com", _
"Image: AIMP Player", _
"Music: ACC:Xess", _
"For more music visit: ", _
"http://remix.kwed.org (C64 Remakes / Remixes)", _
"And of course", _
"AutoIt developers ;-)", _
"•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*.¸ .. ¥ .. ¸.•*´¯", _
"Greetings to: ", _
"All members from", _
"www.autoitscript.com / https://autoit.de/www.autoit.de", _
" ", _
"Restarting text..."]
Global $c = 0 ;counter for sleep
Global $i = 1 ;for character
Global $j = 0 ;for array
Global $k = UBound($title) - 1
Global $s = 150 ;sleep time
Global $in = True
Global $effect = Random(1, 2, 1)
$g = 0x00
$b = 0x00
Do
$levels = _BASS_ChannelGetLevel($bass_dll, $RecHandle)
$LeftChLvl = _WinAPI_LoWord($levels) * 135 / 0x1500
$RightChLvl = _WinAPI_HiWord($levels) * 135 / 0x1500
$l_x2 = $min_x + $max_x * ($LeftChLvl / $max_amplitude)
If $l_x2 >= $max_x Then $l_x2 = $max_x
$l_y2 = $pointer_ini_point_y - Sin($l_x2 * $pi_div_180) * $pointer_length
$r_x2 = $min_x + $max_x * ($RightChLvl / $max_amplitude)
If $r_x2 >= $max_x Then $r_x2 = $max_x
$r_y2 = $pointer_ini_point_y - Sin($r_x2 * $pi_div_180) * $pointer_length
_GDIPlus_PenSetColor($pen, 0xCF111111)
_GDIPlus_GraphicsDrawLine($backbuffer, $width_div_4 - 1, $pointer_start_y, $l_x2, $l_y2, $pen)
_GDIPlus_GraphicsDrawLine($backbuffer, $width - $width_div_4 - 1, $pointer_start_y, $width_div_2 + $r_x2, $r_y2, $pen)
$r = $LeftChLvl * ($LeftChLvl / 0xFF)
_GDIPlus_BrushSetSolidColor($brush_l, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
_GDIPlus_GraphicsFillEllipse($backbuffer, $width_div_4 - $ellipse_size_half - 1, $pointer_start_y - $ellipse_size_half, $ellipse_size, $ellipse_size, $brush_l)
$r = $RightChLvl * ($RightChLvl / 0xFF)
_GDIPlus_BrushSetSolidColor($brush_r, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
_GDIPlus_GraphicsFillEllipse($backbuffer, $width - $width_div_4 - $ellipse_size_half - 1, $pointer_start_y - $ellipse_size_half, $ellipse_size, $ellipse_size, $brush_r)
_GDIPlus_GraphicsDrawImageRect($graphics, $bitmap, 0, 0, $width, $height)
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, 0)
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, $iX, 0)
Sleep(25)
Display_Info()
Until False
Func Display_Info()
If $in Then
If $i <> StringLen($title[$j]) + 1 Then
If $effect = 1 Then
WinSetTitle($hwnd, "", StringLeft($title[$j], $i)) ;effect 1a, 1 by 1
Else
WinSetTitle($hwnd, "", StringRight($title[$j], $i)) ;effect 2a, scroll to right
EndIf
$i += 1
Else
If $c = $s Then
$i = 1
$in = False
$c = 0
$effect = Random(1, 2, 1)
Else
$c += 1
EndIf
EndIf
Else
If $i <> StringLen($title[$j]) + 1 Then
If $effect = 1 Then
WinSetTitle($hwnd, "", StringLeft($title[$j], StringLen($title[$j]) - $i)) ;effect 1b, 1 by 1
Else
WinSetTitle($hwnd, "", StringRight($title[$j], StringLen($title[$j]) - $i)) ;effect 2b, scroll to left
EndIf
$i += 1
Else
$i = 1
$in = True
$effect = Random(1, 2, 1)
If $j = $k Then
$j = 0
Else
$j += 1
EndIf
EndIf
EndIf
EndFunc ;==>Display_Info
Func close()
_BASS_Free($bass_dll)
DllClose($bass_dll)
_GDIPlus_PenDispose($pen)
_GDIPlus_BrushDispose($brush_l)
_GDIPlus_BrushDispose($brush_r)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_GraphicsDispose($graphics)
_GDIPlus_GraphicsDispose($backbuffer)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>close
; #FUNCTION# ====================================================================
; Name...........: _GDIPlus_BrushSetSolidColor
; Description ...: Set the color of a Solid Brush object
; Syntax.........: _GDIPlus_BrushSetSolidColor($hBrush, [$iARGB = 0xFF000000])
; Parameters ....: $hBrush - Handle to a Brush object
; $iARGB - Alpha, Red, Green and Blue components of brush
; Return values .: Success - True
; Failure - False
; Author ........:
; Modified.......: smashly
; Remarks .......:
; Related .......:
; Link ..........; @@MsdnLink@@ GdipSetSolidFillColor
; Example .......; Yes
; ================================================================================
Func _GDIPlus_BrushSetSolidColor($hBrush, $iARGB = 0xFF000000)
Local $aResult
$aResult = DllCall($ghGDIPDll, "int", "GdipSetSolidFillColor", "hwnd", $hBrush, "int", $iARGB)
If @error Then Return SetError(@error, @extended, 0)
Return SetError($aResult[0], 0, $aResult[0] = 0)
EndFunc ;==>_GDIPlus_BrushSetSolidColor
Vielen Dank an eukalyptus für den Teil des Codes!
Achtung: auf Vista funzt das Ganze nicht richtig. Z.B. bekomme ich nur über das Mikrofon die Levels angezeigt. Außerdem kann ich es auf XP momentan nicht testen und kann auch zu den Zeigerausschlägen nicht sagen, ob die ok sind.
Ansonsten einfach den Hex Teiler entsprechend im Code für $LeftChLvl bzw. $RightChLvl ändern.
UEZ
Line Out
also all des was du hörst.
Was alles die BASS.DLL + Derivate kann, habe ich mir im Detail nicht angeschaut. Vielleicht ist es auch möglich den I/O der Sound Karte abzuzweigen und mit dem Visualisierer darzustellen.
Momentan spielt es nur Audio Dateien ab, aber du kannst ja gerne den Code umschreiben, so dass es direkt den I/O Stream darstellt
Ich weiss nicht, ob ich die Zeit dafür haben werde...
Gruß,
UEZ
Gefällt mir sehr =)
Wäre es möglich die gesamte Ton-aus/eingabe anzeigen lassen?
Danke, für das Feedback.
Was genau meinst du mit "gesamte Ton-aus/eingabe anzeigen lassen"?
UEZ
Ups, stimmt. Ich habe die bass*.au3's in mein include Verzeichnis, und deshalb ist es mir nicht aufgefallen!
Werde die Downloads gleich mal updaten!!!
DANKE für den Hinweis! ![]()
UEZ
Hallo
Ein Typisches UEZ Produkt. Sieht wirklich gut aus, respekt
Könntest du vlt noch die BassConstants hinzufügen?Mfg spider
Danke für das Feedback ![]()
So, mein GDI+ Zeug ist also typisch für mich ![]()
Die BassConstants wird in der Bass.au3 geladen ![]()
UEZ
Click Me Link korrigiert! ![]()
Sorry,
UEZ
Hab' ein GDI+ Visualizer geschrieben:
;code by UEZ 2009
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
#AutoIt3Wrapper_UseUpx=n
;~ #AutoIt3Wrapper_Run_After=upx.exe --best "%out%"
#AutoIt3Wrapper_Run_After=upx.exe --ultra-brute "%out%"
#AutoIt3Wrapper_Run_After=del /f /q "Visualizer_Analog Meter_Obfuscated.au3"
#include <GUIConstantsEx.au3>
#include <GDIplus.au3>
#include <Memory.au3>
#include <Misc.au3>
#include <WindowsConstants.au3>
#include "Bass.au3" ;thanks to BrettF and ProgAndy
Opt("GUIOnEventMode", 1)
#Region load image files
Global $dll = DllOpen("user32.dll")
_GDIPlus_Startup()
Global $bitmap_from_file
$bitmap_from_file = Load_BMP_From_Mem(VU_Image()) ;thanks to AIMP2 player ![]()
Global $bitmap_from_file2
$bitmap_from_file2 = Load_BMP_From_Mem(VU_Fragement_Image())
Global Const $iX = _GDIPlus_ImageGetWidth($bitmap_from_file)
Global Const $iY = _GDIPlus_ImageGetHeight($bitmap_from_file)
Global Const $width = $iX * 2
Global Const $height = $iY
#EndRegion
#Region initialize sound and load MP3
Global $levels, $LeftChLvl, $RightChLvl, $l_x2, $l_y2, $r_x2, $r_y2, $r, $current
Global $ChLevel = 0x1000
Global $volume_error = 0
Global $ve
Global $volume_boost_level = 2
Global $needle_decrease_speed = 0.0275
Global $no_load = 0
Global Const $bass_dll = _BASS_Startup(@ScriptDir & "\BASS.dll")
If @error = -1 Then
MsgBox(16, "ERROR!", "Could not load BASS.dll" & @CR & "Terminating... ")
Exit
EndIf
Global $file = FileOpenDialog("Select MP3...", "", "MP3 Files (*.mp3)");
If @error Then
$no_load = 1
MsgBox(16, "Error", "Could not load audio file!" & @CRLF & @CRLF & "At main screen you can press O to open file open dialog window" & @CRLF & "or you can drag'n'drop a mp3 file to window!", 20)
EndIf
Global $filename = StringMid($file, StringInStr($file, "\", 0, -1) + 1, StringLen($file) - StringInStr($file, "\", 0, -1) - 4) ;get the filename only
Global $file_suffix
_BASS_Init($BASS_DEVICE_CPSPEAKERS)
Global $MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
Global $song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
#EndRegion
#Region GUI
Global Const $WM_DROPFILES = 0x0233
Global $hwnd = GUICreate("", $width, $height, -1, -1, Default, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_ACCEPTFILES))
GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "Move") ;move main window when lmb pressed and hold on main window
GUISetState()
#EndRegion
#Region initialize GDI+
Global $graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
Global $bitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $graphics)
Global $backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
_GDIPlus_GraphicsSetSmoothingMode($backbuffer, 4)
Global Const $pen_size = 2
Global $pen = _GDIPlus_PenCreate(0, $pen_size)
Global $brush_l = _GDIPlus_BrushCreateSolid()
Global $brush_r = _GDIPlus_BrushCreateSolid()
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, 0)
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, $iX, 0)
#EndRegion
#Region constants
Global Const $pi = 4 * ATan(1)
Global Const $pi_div_180 = $pi / 180
Global Const $max_amplitude = 450
Global Const $min_x = 25
Global Const $max_x = 160
Global Const $pointer_ini_point_y = 80 ;less is longer
Global Const $pointer_start_y = 93
Global Const $pointer_length = 65
Global Const $ellipse_size = 8
Global Const $ellipse_size_half = $ellipse_size / 2
Global Const $width_div_4 = $width / 4
Global Const $width_div_2 = $width / 2
Global Const $sleep = 30
#EndRegion
#Region play audio
_BASS_ChannelPlay($MusicHandle, 1)
$volume = _BASS_GetVolume()
If @error Or $volume = 1 Then ;check whether _BASS_GetVolume() returns 1
$volume_error = 1
$ve = "YES! Volume controlled peak disabled!"
Else
$ve = "NO!"
EndIf
#EndRegion
#Region initialize title in window
Dim $title[25] = ["º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`", _
" GDI+ Visualization: Analog Meter", _
" Playing: " & $filename, _
" Get volume error: " & $ve, _
" Press P to pause current song", _
" Press C to continue after P was pressed", _
" Press O to open another song", _
" Press ESC to exit program", _
" Credits:", _
" Main coding by: UEZ 2009", _
" Bass UDF: BrettF (modified by ProgAndy)", _
" Bass DLL: http://www.un4seen.com", _
" Image: AIMP Player", _
" And of course", _
" AutoIt developers ;-)", _
"•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*.¸ .. ¥ .. ¸.•*´¯", _
" Greetings to: ", _
" All members from", _
" http://www.autoitscript.com / http://www.autoit.de", _
" Richie for the good ideas to improve Analog Meter", _
" Christos", _
" and", _
" DrSchulz (http://www.drschulz-music.de/) ;-)", _
" ", _
" Restarting text..."]
Global $c = 0 ;counter for sleep
Global $i = 1 ;for character
Global $j = 0 ;for array
Global $k = UBound($title) - 1
Global $s = 150 ;sleep time
Global $in = True
Global $effect = Random(1, 2, 1)
Global $g = 0x00
Global $b = 0x00
Global $pause = 0
#EndRegion
#Region additional GUI functions
GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES") ;enable drag'n'drop
GUIRegisterMsg($WM_TIMER, "Draw") ;$WM_TIMER = 0x0113
DllCall("User32.dll", "int", "SetTimer", "hwnd", $hwnd, "int", 0, "int", $sleep, "int", 0) ;set GUIRegisterMsg($WM_TIMER, "Draw") timer
#EndRegion
Do
Until False * Not Sleep(100000) ;do nothing, just sleep
Func Draw()
If WinGetState($hwnd) = 15 Then ;only activate keys when window is active
If _IsPressed("50", $dll) Then ;P pressed (pause)
_BASS_Pause()
$pause = 1
ElseIf _IsPressed("43", $dll) Then ;C pressed (continue after pause)
_BASS_Start()
$pause = 0
ElseIf _IsPressed("4F", $dll) Then ;O pressed (open file dialoge)
$file = FileOpenDialog("Select MP3...", "", "MP3 Files (*.mp3)")
If Not @error Then
$file_suffix = StringRight($file, 3)
If StringLower($file_suffix) = "mp3" Then
$filename = StringMid($file, StringInStr($file, "\", 0, -1) + 1, StringLen($file) - StringInStr($file, "\", 0, -1) - 4) ;get the filename only
$title[2] = "Music: " & $filename
_BASS_ChannelStop($MusicHandle)
$MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
$song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
_BASS_ChannelStop($MusicHandle)
_BASS_ChannelPlay($MusicHandle, 1)
EndIf
EndIf
EndIf
EndIf
$levels = _BASS_ChannelGetLevel($MusicHandle) ;get 16-bit level for l/r
If $no_load Then $levels = 0x00000000
$l_w = _HiWord($levels) ;get volume level from left (15-8 bit)
$r_w = _LoWord($levels) ;get volume level from right (7-0 bit)
If $l_w < 0 Then $l_w = ($l_w + 1) * - 1 ;invert value to positive value (a bug in bass.dll?)
If $r_w < 0 Then $r_w = ($r_w + 1) * - 1
If $volume_error = 1 And $pause = 0 Then
$volume = 0.33333
Else
If $pause = 0 Then $volume = _BASS_GetVolume() * $volume_boost_level
EndIf
If $pause = 1 Then ;if pause then move needle to position 0
If $volume >= 0 Then $volume -= $needle_decrease_speed
EndIf
$LeftChLvl = 1 + Round($l_w * 135 / $ChLevel * $volume, 0) ; 135 = $max_x - $min_x
$RightChLvl = 1 + Round($r_w * 135 / $ChLevel * $volume, 0)
$l_x2 = $min_x + $max_x * ($LeftChLvl / $max_amplitude) ;set x/y coordinate of needle
If $l_x2 >= $max_x Then $l_x2 = $max_x ;avoid exceeding right limit of needle
If $l_x2 < $min_x Then $l_x2 = $min_x ;avoid exceeding left limit of needle
$l_y2 = $pointer_ini_point_y - Sin($l_x2 * $pi_div_180) * $pointer_length ;calculate length of left needle (radius) depending and new x/y coordinate
$r_x2 = $min_x + $max_x * ($RightChLvl / $max_amplitude)
If $r_x2 >= $max_x Then $r_x2 = $max_x
If $r_x2 < $min_x Then $r_x2 = $min_x
$r_y2 = $pointer_ini_point_y - Sin($r_x2 * $pi_div_180) * $pointer_length
_GDIPlus_PenSetColor($pen, 0xCF111111)
_GDIPlus_GraphicsDrawLine($backbuffer, $width_div_4 - 1, $pointer_start_y, $l_x2, $l_y2, $pen) ;draw left needle
_GDIPlus_GraphicsDrawLine($backbuffer, $width - $width_div_4 - 1, $pointer_start_y, $width_div_2 + $r_x2, $r_y2, $pen) ;draw right needle
_GDIPlus_GraphicsDrawImageRect($backbuffer, $bitmap_from_file2, 68, 76, 53, 30)
_GDIPlus_GraphicsDrawImageRect($backbuffer, $bitmap_from_file2, $iX + 68, 76, 53, 30)
$r = $LeftChLvl * ($LeftChLvl / 0xFF)
_GDIPlus_BrushSetSolidColor($brush_l, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
_GDIPlus_GraphicsFillEllipse($backbuffer, $width_div_4 - $ellipse_size_half - 1, $pointer_start_y - $ellipse_size_half, $ellipse_size, $ellipse_size, $brush_l)
$r = $RightChLvl * ($RightChLvl / 0xFF)
_GDIPlus_BrushSetSolidColor($brush_r, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
_GDIPlus_GraphicsFillEllipse($backbuffer, $width - $width_div_4 - $ellipse_size_half - 1, $pointer_start_y - $ellipse_size_half, $ellipse_size, $ellipse_size, $brush_r)
_GDIPlus_GraphicsDrawImageRect($graphics, $bitmap, 0, 0, $width, $height)
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, 0) ;clear screen by overwritting screen with bmp (left)
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, $iX, 0) ;clear screen by overwritting screen with bmp (right)
$current = _BASS_ChannelGetPosition($MusicHandle, $BASS_POS_BYTE) ;get current song position
If $current >= $song_length Then _BASS_ChannelPlay($MusicHandle, 1) ;replay song when it is finished
Display_Info() ;display win title info
EndFunc ;==>Draw
Func Move() ;move whole window when pressed lmb and hold continuing drawing of window content
DllCall("user32.dll", "int", "SendMessage", "hWnd", $hwnd, "int", 0x00A1, "int", 2, "int", 0) ;$WM_NCLBUTTONDOWN = 0x00A1
EndFunc ;==>Move
Func WM_DROPFILES($hwnd, $msg, $wParam, $lParam) ;drag'n'drop function - I don't know who made this
Local $tBuffer = DllStructCreate("char[256]")
Local $iString
;Get dropped items count
Local $aRet = DllCall("shell32.dll", "int", "DragQueryFile", "int", $wParam, "int", -1, "ptr", 0, "int", 0)
;Getting name only from 1st dropped item
DllCall("shell32.dll", "int", "DragQueryFile", "int", $wParam, "int", 0, "ptr", DllStructGetPtr($tBuffer), "int", DllStructGetSize($tBuffer))
$iString = DllStructGetData($tBuffer, 1)
DllCall("shell32.dll", "none", "DragFinish", "int", $wParam)
$file = $iString
$filename = StringMid($file, StringInStr($file, "\", 0, -1) + 1, StringLen($file) - StringInStr($file, "\", 0, -1) - 4) ;get the filename only
$file_suffix = StringRight($file, 3)
If StringLower($file_suffix) = "mp3" Then
_BASS_ChannelStop($MusicHandle)
$title[2] = "Music: " & $filename
$MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
$song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
_BASS_ChannelStop($MusicHandle)
_BASS_ChannelPlay($MusicHandle, 1)
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_DROPFILES
Func Display_Info()
If $in Then
If $i <> StringLen($title[$j]) + 1 Then
If $effect = 1 Then
WinSetTitle($hwnd, "", StringLeft($title[$j], $i)) ;effect 1a, 1 by 1
Else
WinSetTitle($hwnd, "", StringRight($title[$j], $i)) ;effect 2a, scroll to right
EndIf
$i += 1
Else
If $c = $s Then
$i = 1
$in = False
$c = 0
$effect = Random(1, 2, 1)
Else
$c += 1
EndIf
EndIf
Else
If $i <> StringLen($title[$j]) + 1 Then
If $effect = 1 Then
WinSetTitle($hwnd, "", StringLeft($title[$j], StringLen($title[$j]) - $i)) ;effect 1b, 1 by 1
Else
WinSetTitle($hwnd, "", StringRight($title[$j], StringLen($title[$j]) - $i)) ;effect 2b, scroll to left
EndIf
$i += 1
Else
$i = 1
$in = True
$effect = Random(1, 2, 1)
If $j = $k Then
$j = 0
Else
$j += 1
EndIf
EndIf
EndIf
EndFunc ;==>Display_Info
Func Close()
_BASS_Stop()
_BASS_Free()
DllClose(@ScriptDir & "\BASS.dll")
GUIRegisterMsg($WM_DROPFILES, "")
GUIRegisterMsg($WM_TIMER, "")
DllClose($dll)
_GDIPlus_PenDispose($pen)
_GDIPlus_BrushDispose($brush_l)
_GDIPlus_BrushDispose($brush_r)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_GraphicsDispose($graphics)
_GDIPlus_GraphicsDispose($backbuffer)
_GDIPlus_Shutdown()
GUIDelete($hwnd)
Exit
EndFunc ;==>Close
Func Load_BMP_From_Mem($pic) ;coded by UEZ. Thanks to ProgAndy for mem allocation lines
Local $memBitmap, $len, $tMem, $hImage, $hData, $pData, $hStream, $hBitmapFromStream
$memBitmap = Binary($pic) ;load image saved in variable (memory) and convert it to binary
$len = BinaryLen($memBitmap) ;get length of image
$hData = _MemGlobalAlloc($len, 0x0002) ;allocates movable memory ($GMEM_MOVEABLE = 0x0002)
$pData = _MemGlobalLock($hData) ;translate the handle into a pointer
$tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
_MemGlobalUnlock($hData) ;decrements the lock count associated with a memory object that was allocated with GMEM_MOVEABLE
$hStream = _WinAPI_CreateStreamOnHGlobal($pData) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
$hBitmapFromStream = _GDIPlus_BitmapCreateFromStream($hStream) ;Creates a Bitmap object based on an IStream COM interface
$tMem = ""
Return $hBitmapFromStream
EndFunc
Func _WinAPI_CreateStreamOnHGlobal($hGlobal = 0, $fDeleteOnRelease = True)
Local $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "hwnd", $hGlobal, "int", $fDeleteOnRelease, "ptr*", 0)
If @error Then Return SetError(@error, @extended, 0)
Return $aResult[3]
EndFunc ;==>_WinAPI_CreateStreamOnHGlobal
Func _GDIPlus_BitmapCreateFromStream($pStream)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $pStream, "int*", 0)
If @error Then Return SetError(@error, @extended, 0)
Return $aResult[2]
EndFunc ;==>_GDIPlus_BitmapCreateFromStream
Func VU_Image()
Local $VU = '0x89504E470D0A1A0A0000000D49484452000000BE0000006B0803000000FE59C833000002A6504C5445000000FFFFFF282828707070B8B8B8484848D8D8D8F8F8F8808080A0A0A0181818E0E8E0F0F0'
$VU &= 'E8E8F0E8C8D0D0E8F0F0F0F8F0D8E0D8809088586868909898E0E8E8F0F8F8607068707878B0B8B8F8F8F098A0A0D0D8D880888898A8A0D8E0E0C0C8C8C0C0C0687070C0C8C0C0C0B8E0E0D8788080B8'
$VU &= 'C0C0D0D0D0585858787878888888D0D8D0B0B8B0F8F0F0606060909090A8B0B0A0A8A850605868686860686898A098808880708078A8B0A8485858889090A0A8A0F0F0F8989898707880788078788888'
$VU &= '7078709898A0788880506860D0D0D8F8F0F8808890687878909890B8C0B8A0A098806040A08080D04838D0C8C888908890A098808078B84030D04038C03828C86050E0C0A0B8B8B0C8C8D0C03830C840'
$VU &= '30C83830C04840505858B8C8C0C84038E08080889898D03830A08060888880B06058E8E0D8586860F0E8E8687068F8F0E8384840789088907068C8D0C8C83828986858C83028202020C83020D8D8D098'
$VU &= '7870B0B0B8708080586060485050B0B0A8606860687870B06860C02020787070806060A87060404020787870806868A8A8A03838380404042C2C2C4C4C4CDCDCDCFCFCFC8484840C0C0CA4A4A4B4B4B4'
$VU &= '1C1C1CF4F4F4F8FCF8C4C4C4FCFCF8D4D4D4CCCCCC7C7C7C8C8C8C545454F8FCFC6464645C5C5CFCF8F8FCF8FC6C6C6C9C9C9CF8F8FCFCE0E084807CBCC4C07C88848C7C7CB06458A4ACA87884809C6C'
$VU &= '60D0D0CC808C88A47C7C8C94949C808098A09C90746CC44038D4D4D0807C7CA04C4074807C787C7CBC4838CCD0CCB8BCB8A46C58C8CCC8E4E8E0F0FCF8E4E8E4B0B4B0ACB4AC748080B05044BCC0BCC0'
$VU &= 'C4C0F4F8F4808C8CAC5848DCE0DCB4B8B4E0E4E0909C98D0D4D0D4D8D4ECECEC080808F0F0F0E0E0E0C8C8C8303030BCBCBC343434747474ACACAC404040A8A8A8505050101010E8E8E8E4E4E4B0B0B0'
$VU &= '3C24B1380000138849444154785ED4CE091180400C03C0F87797F4BBE3C70903A8E82A58BC7474849F726E773FCBD0B75FCB78B29FD80520CBDCAF861803D0E443ADB930B7719D67386F84D997A82060'
$VU &= '652F69620196209902AC094004AAD0A201B156DA38159D984E2A516A493111CBDED354AEABA497B4EEC56D33196D860A964B8E02696123AD5BB95737BD5A7553A9357BA1EBB0D80DC71C3687FC27DD3D'
$VU &= '806C6A466401096CC9678667170B70F6392FBFF3EDC10C9D1A0D1C380CA736F45F1FF8CE86A8E140521357BFFA81EFCCD70C1C488C5AE0173DFD927130FD8D52E040A75F6AA48FB6E31CC6DEB357FA22'
$VU &= '14728E8450E748588908F8080121F6505F2E02431E1E663D1C518F3EF2A8D6D9059F4EEDB1EEA80A494844F040348CA4DE5EA71FD2118DC57B34C227FEDD22DADD0B807A88899EB0B977E9F7AD01A50D'
$VU &= '6761CDC0421F9A4357750BDBA06532A422D11F40973310F8D0F7805A52585043AA8ADE4753780F9D6CD6735D0194AD55EFC02D07C67DF50D6CDD58C5D2D7C45007E0FD34533FA44EA66320F4BB524A2A'
$VU &= 'E366E1F6C748E1284A08D1FE30542015CD887832FEBE3C84D394BF01BE7B0DB8F678ED6B6BA8DDE8DB517FF55800C31D181A028687D0042455DF3452D675BC87A0A320D7EF200B8FFCF7A5CA5D001871'
$VU &= '10EDE9B47097D4F10FE755B329FFABD76BA5EB7DF4D46BD777D28781A1AFF0F8163AEAFABB87AF53922502FD230901E23D4CA49F489E182565ED3FF664774E9E9188152296BC4C20FCE14C6F320AB009'
$VU &= '7D71C31D3C56ABFD6FFA7DC7D78F8BBBE9EFE84F50272801A114F3C998BAFD5DC089C6EB5E3C12118A68E8331FA54D13365861ACA08A421ECDF1956BC3D7BCE258D85DBF74E8C63030FFF26AE9DDE19D'
$VU &= 'D3274DA88E0EB24267204D22DC93C6364894554AE76D156E9327BB4C0B0D0A39A4BBB74F7AB7F8176E78EAA543631CFCDEC19DF46120F8DF2EB0F9EEF5EB87941DF4E913C93DF9FD11E8603CA550A4C3'
$VU &= '85C23DD5439B03B948432B11149010423969120D466227B5A7EAD77D5801B9A37EEDE543252070ECF8B1E1D28EFA40CD316080CA620D3BCBC32968A74E45EA45444BCD7CC4B76705EF41B845D1388B6A'
$VU &= '114854247E60DB2C7B7FF0A38FF40220558064D689606736053CC4E215DF6FF7C79621871DED492190D3BAC04A850DBABA68DB3621314984F375531BB9BBEB8288E655E8044CF94A3D2A7D093DE924C9'
$VU &= 'D050E1E1F73CF2FCFE2D9F55BB629A204174697992B0E9A1EB48F8B224984F80F223F13147EA5B9E3EC146E3C9D1A2457F3B6143282C37AEC73F12054432B6FBB6418EC6036DD958A75CB56942B821B5'
$VU &= '90A387D437758487D2204DBFA0E5822694B1A7C10A6095F3BE3E818F21A20560EBE8D504BAC0BC1629AB000826A3C948249F74F66AC749CB22510F9E69D781D3110525302D1D915886202DA40A521570'
$VU &= 'F2E1C6C76377D387A3C96BD11FAAB20BCE232964650400A943391100F746DFAE5A047B3BCBA46DA942B72052BDB2724CAABA45223712814EA2B7A0420D09E5E94CFFA9DC482C56D062FDA7F3F95C34E5'
$VU &= 'C6D54041E61BCB43253ED4A180A00DD3247572645CBD579F6D4CDF632C291337CD323D0027206B2097024FC22D2800184AF7C7A2C1582C968FA61289703C1E5794DEDE703811CDE563B16477F019D771'
$VU &= '4E2920F9F14F3C3BF15CD6A2C8DA242D1E15F00F68C036EAD3041249D5E9C8F9FEB42AB009F1C91448331A3B821022B154281D0D6ADAA772036941DC0F5528CF8C7E4A3BF1643E1D81F8E1336727CF9C'
$VU &= '3BFF231B02A4CD4E15A4499F0AC0066D4A5FA4B23F7A8A08271DE866D52ED326311013C8C2D1126059F4F4C7F2195789C0476ADC7F3F4CA124F29A96FFE427A62626A62FCC7833C85A3A5CAD57CE8226'
$VU &= 'A9FA7D1440B94DFA44E2D31A92792FE3005456099A20C4480A24735A3CA515728DCCEBC38E7FFABA917AF833E3E3E3335317272626CE5E3C37FBF5C88FE5A47DC53449FA7DD419D204DAA4AFB2B33FEA'
$VU &= 'F41773DD0A74BB6C9BA64D12294D806AFEA33DB9B0DA48AB19480B80353EFEFB2FCE5C9C3B3B71616AF6C77FE20828A990F0FBA813CD6B026D4A9F88F73FAD16C7C22069B2EC8F1FAB44F21925373E7A'
$VU &= 'D404CA680D822C0FBC7AFA0FFFE8E2F4D9B3D39333B33FC5B2CE3A2AE1913971B43DFA10AE8354FF610032A00A65F7815AF8692D2500130F46B5BA7AF3B527FEF8CCE4F4C4D9A999D99F0149DBAC10A1'
$VU &= 'B49BEFF8D9F6741E42A41412AE83CE9C03B242593AA194968F13241E0276FDC99F9EFE337F15CC5D3877FEB3A00FC4899F2BA69C87D4679D0A850049942DE6345297F26AB49077F0F090D6DB7F7EFA2F'
$VU &= '6626A7CF5E983A77DE2E93EC82F8DCE7BA2AF0301F589FA41C6D0296491F44623950273850C81F0688366093B5D86B7FF90DAF0D5DF09600988513E9FA8C83874A9F84C86404C8B269DB264DD324E1F8'
$VU &= 'CFAAEA252DE8A07D50D7F5D74F3FFB8DE727262ECE9CCFE2E9EEF4FBB9930FA24FA2735CD39E4883B42C5AA6E51F88818288C4B430DA0D3B0BA77FE1F939AF82669F4BA6409D2024BBE97F7517FD4041'
$VU &= '20DA110749D3F2C3B74D12D17ECD55B117FC55CF5FFFCDF4C4DCF499675966B5AE4FAAA4BE5BFA1BF7D3A74D284303508341153449D3362D9270C63501624FE0CADFFEFC0B73D35E0FCD8255D3040824'
$VU &= '334901ABB5E2D121B47191EA4E9C8C8D8440DB96954F0B033DA9965A258956587DE4EFFEFEC2D90B93E7BE5EF66F4AEA0825C723B8F4CC11E84DA62FED0BB958B2F352F244410169D9F4ED11098E09E8'
$VU &= '2D1895DE192CA115AA6BAFFDC3E485B9CBE73E0FFA37B5993C9C1418481655B4A0AF0C29C20B5AA443A054B76DC2D146D50A4DAB697FBEB9B47489065AE11F4F7F61F2F9B91766CE83FC266DD2AE300B'
$VU &= 'E5291746B3FA34D5742892FFA5A80BD8A44E1FB88530C88A65A3490C717BD3B92D5AD387FECF43FFE2F94F9DB7A99BD411D714B5E7576291E6D3A76E9AB432BF9A14A12F5E828C9E88161C90AC12CD52'
$VU &= '5A1E14627099688D7FFDB79E7F7F61EEF2D4AC6D67AB44FCB18CF36B79902D148FEA3A883EA58099A40BFAE462219036596D3A7CE796B3BAEAAC6C1A680DFEE7AB3F7979FAF9C9D9ACAD1348FCFAA7B5'
$VU &= '93660BB56FAAA930784485AE23D19D4296EA5891205931D134A59545E1F1CEAD125A83E5FC6B9EFFE5C9D9CF96F99C4BA11064F3FA74D2042D929E7FF8A91C446194F56F8855340BBFB5EC080FE7AD2B'
$VU &= '2DC66F92B95F7EF1F2DC0BBF316BE77ED32D1326C9E6FB3E6952A243B8914B3DB142942069A3798CDAA8227C36176F975AF3376DF2D68917A7E6E6667ECB2B6055A507764ABF761FFD063A39F2443CFF'
$VU &= '6800244DA205F8C682B32971FEE01DA225E89138FDDB53675EFA9D23C8D29655D0D2A6017568E95FECE8CF116415AD60883B8AA72FF9D6E86A6BF1DB0079E9D5DF7DE9F7AAD469FBFE6821FDED58F028'
$VU &= '93680D2E2FF9F61267E04DB65AFDE8FAE6958F3F53A66ED307BBEAB71BC3787B4571DE43B9D3F4B3CBB2D0802C83ACCF053BE87FF01E7D03BB0336AB5F5A59BA5237F7872BEE328D66F56D34A8EE94FA'
$VU &= 'DEA7AFDCAA7B2FAE2CCA49DC7EBB597DC084846017EA34917EFB904D7349B9E2B1B8B2BCE29F28EE4AA9F5BB10FF3FFA7CE32D69AF2CBFB99A7115390FA54D77D97B7D63757450DABB999AE1DC5EF4CE'
$VU &= '14F74ECD300E84BEC1E5BE45C563E9CEDB86FF6270707069616B900742DF30366F0FFAF683B73C6303B595A24730B87240F44B2B0B8B3ECB8DAD6669B5E653327020F4959525DF7EB0CF91D6F7D2CE59'
$VU &= 'B4BFEFCBA6B93028F503C5E03DBCFEFAC848B0F816DB9AFE77ADB7579F6FDC1A6CE02EF479ACADC9211008DC2EDE743789F6E9AF79FAED4DDF58BDB920DD975C692FF1DC57EE146F29B5120DB453BFDD'
$VU &= 'E91B1C58715D571A37B8BA75F5F6CDD137376B256F0D1BD8BFFAB269DEDC0A5CBDBAE5E31FD6D7B746FDD8595B5596B78A77560D633FEB9756E6D7EFB2B1B1BE5E1C75FFA944C360A6589C9FDF985FE3'
$VU &= 'BED6BF321F9CDFD8D898F71ACDC64631A0D4287D0D2E8FCC7B048BFF61ECDBA56B18A59BAF78E2AF8C0537FC26E3C7FE5E3B9DF7DF098E8D960C639FA66F70F095316D2C381F5C91B11BDB67B6383236'
$VU &= 'F6CAD8D8C81BDCB7FAA53B63C1EDB16FD72FDD1996AC97DAA7DFD7567DD46E66646F6FC8DFEB2FAE06D63C166A86B15F97AE54DFB1B4EA18D8AFE963D7FF9C37EA603FE9B7CEC1D037600077D3360E98'
$VU &= 'BE0189D4971807465FAAD694BEE1C70FBDEC71E8F1E13EA5262FFFDFEA1BA55A8D0F225F5A1A3EFEA56F7FF9830DBEFCED2F1DBBE6961E6402945F321F40DF40EDCAC2FAD6924318ADC9AFFE0FE756B4'
$VU &= '9CAA0E451B0C89F8DC1FC81BC5077CE099AFF223A88285320CA8A333FA4734092844217F7283B6A770CFB9BDED592A387BEFC9ACACBDB3639C41EE3C45F974F2DE713AA9A978B668C00F87C26D262BE2'
$VU &= 'D3BF519FA6EE78B359877EFCA3277CB0DC2F34C5FDC6FE763B75E892B1AD6817F16DC4BEB036B3F1CCA43FA5AF683077255C578CC336F88168E85C2CEEDCEBA57D50C53F72F67A7D9FC862E1643FE95C'
$VU &= '8D1C2B06E166E36310FC507D9A8C67B6BD77662B137F3FDBF052D41D3CDDB6D68AF9656B3BE7B565D7DECD5CE8F2FB8D02A3A93BDADBF66C55D29FFD685029A672B5BD6CB74B7B45E877E9C7E272D93F'
$VU &= 'EDB7B53EB20E975ABBBEBCBDBD5DE7F565B43EE8F593725D9647FADD64C6C96AB7DC2AACC59F8B2E268BFFA00F024AB6A75AE16467F49BECA9B01D6B3CB67567BDAF4FDAF57ADA1F0EF669729D9FF4DD'
$VU &= '5A99C7E3B563BBF91F98F41FD6FBD82BE26CE779B74C7614DF5FBD384007F48788D176A12AD6D30E2CFE865C41C77EEF8CA7D6E562ED54B1CF5F74C1681C53269F147FAF76ACE576BD1A1F9EDCFC7BFA'
$VU &= 'E3C6D2BA55B4D0BBB5FBFFEA078332CEA5A71585B62479F02DED71B577A6B391EE5875A1D84FC68CD25881D276367FF5BC6269D9FA79361DED8DDFD2C97C9A6293509A99D8375384EF7AF0AD62B03819'
$VU &= '79B7741B1FA828EA339435C0CFF0803E2B4D24A1292346A20C71151E53E8E8CB11A7F8361DC263D8CA469A304A7104E3DF562DB1157B5BB7EC42B1D726B3B6C9E91D4D7B7C55FA178573D69DD9D4D947'
$VU &= 'C34E1200689023811C9A5102AB2811F71325A699B5D46D99E37B0C95CC4D8E5042112722EB174F208F50D06CC65925431395DDF01853C628C6F74419A2A9D80CBABCAA2066B21D663308D0C1DECC2EDB'
$VU &= '753DEFB6A9898358F30B0C9D275D3B9D2FD797A7D9C676CC000C90B8C72A444026666CC8924777F79D418E6FEC73C335210B8F4722650628CC07EABBC7B26A1237415292368D62FC71C008EEFA64EE91'
$VU &= '54CC758D44701A10180CE50BE8E66935D577A3422B14B44594B24FB4293CCD6F76CFDA2F67D3A771D32FFF001021A5292547426611E161692A639F41009228A92225AE2C230C7068B41DFDE2437D9EF9'
$VU &= '4C121F96392F3306617B5FE41F00BC61256F13D34C4D00A82CF3BEFA2AA0DC9F2D7D64CFB562B15814AF76827CE4BF0321C40FAF3787A61D0EFAD47A92C346D82D119033809B1C505575AD1A7E70FA09'
$VU &= '020A00A53856A04110E44D7C57FFF58B8DE4071BA465DB97F572A2DD50BC8E93B40733E59B7971F74D9EACE5C839B04E9D1FE1F778A5FE07FD28C349D4B028C13C0E383139565E96519E129E91848280'
$VU &= 'F332C10043642698247858F972BF7CB28A8936BF61319F1233EBC1248F0BEDEED4AEF5FAB2DD8741BF78D2927342987AA3D2447E9A22546256129F93B4F33765C21100698609E50941CAC500A0BFE807'
$VU &= '3E521643B491297320A06B6060CECCF298F26329239182401866C90197A282992958BF76036AD53B4BBBCEDF51CC57900F006785F6E19D14EBBD3E6AFAE5534A3FEA3A4AC488E0A812A1846E6A4A1855'
$VU &= 'D2ECEA0755709A005C1938314A215126A3B2AF7E809BC8C4C710101EE581806685B198C15619248255B76BCBB0C94A40122138427050F940D62367727D9DBC2AA86BA15932213D2472AC151FEEF9757E'
$VU &= '3E7812F4F813E9C34AF8823724EA9A4F65548F9257A12F09BAD137D47000B98F6960E41561A608D9A078046CA22A35AB889651023188202C194424C8222E1AAE3480308214E48240C9C22807BDCD4EE8'
$VU &= 'D6F67A9D7CE05A68F611963D40C3D18AC967C075775E42F079904C18200D2F21411C26314C9128591931A406C97010048803BF22D24C212E6954A61CA181FA00DF3FF4D6AD06CFFD759DEBCE15BF5FB0'
$VU &= '0A093E0B379E2EC7F5DBB5074DAB570246BF00ABA9AE69FD88B7E55A7F049F12BC1FEC3106EF8DF2C33858220A7D6AB46B9C77FAACEB9C7E0310F35BD098AC6D6966A6A8F1E9FF7503D3B6ADC5F3B58F'
$VU &= '89A7EDA6B2AA6487EEBE71346F320879F6C6DB03FBE2F8759F448B529421C69A386D1105BE99372CE54C997D1074F40B49BB6956D3A31186110E8D48C67C631C1FB399EB0A1E31107C79B872F5F3EEE5'
$VU &= 'F96580B745713A4C8508C51D9B9157146F6F839887D7D161293A79BF1227095DE91A86A8905B4559136EB898B91B28852131A0C47BA85D8AD5182D6A106369DCE48C05D467CCCFD5451963107CA10FDF'
$VU &= '6DC7FAC3F3DB10CF2FF5C2B32D5709628486BBDED55A7DFD77D0C3F3657D19A12FFF97034DAB94677E9BB64DE3D3B84554D1F4D5F79BFA86FE503BE8AFF7ADD45A9E47AF0F7FC0B52E4E17FBBC9A4E57'
$VU &= '67FBE22DEAC99FA2E6D66139F5C15F82B2D1E5A1D8594DFC4F2B75B0E2200C840178BAD968C95BECB173E9250F995457E9D18ABE532D4A24CC40DFA4B1746F6D6060BFF39F7F0602534AFDA6D73FA887'
$VU &= '2EC27B1CC357889A4847770AD1C07B5577ACF673B9DD0BB16B333AF076B4DF452D34DF9B03D9AE6FE1933644B79C364E07864F78DC0F74BC9CE7A29652A3F200AC5435588994A6CAAEA8197278894F4B'
$VU &= '3E660857AB69AB156E81E6F583889D00A6B8A205003CE4B1310C597EAB08B43E4B45B06FFFE6FB49C6C3BFF39314240FFB2BE73850E508D20000000049454E44AE426082'
Return $VU
EndFunc
Func VU_Fragement_Image()
Local $VU_Fragment = '0x89504E470D0A1A0A0000000D49484452000000350000001E0803000000BB53A6B7000000AE504C54450000003030302828281010104040404848485050507878786060606868683838381818182C2C'
$VU_Fragment &= '2C343434202020080808A8A8A88888889090907070705858588080807474744C4C4C7C7C7C5C5C5C6C6C6CB8B8B8B0B0B0646464D8D8D8F0F0F0E0E0E0ACACACC0C0C08484840C0C0CA4A4A41C1C1C8C'
$VU_Fragment &= '8C8C545454040404A0A0A0E8E8E8E4E4E4D4D4D4C4C4C4D0D0D0C8C8C8B4B4B49898989C9C9CBCBCBCDCDCDCF4F4F4CCCCCCECECEC909898AA04C38C0000000174524E530040E6D8660000025D494441'
$VU_Fragment &= '54785EC5D2D772DB381480611EF4CEDE49F52E773BC9EEFBBF58204AB1A954E52ADF053183C37F301C30F8E716094F1B2FE5C9E2C624910A0CBA30A0C4F68F49D72B64C05A75612D18A444F4DBA636C8'
$VU_Fragment &= '2743342CF644F97037FF6554803927A4148DFFB054D6949C7B63E4CF9B9601395154F0CA076C2764517141143901FAB32862ACCEEA1DA1296F1841781586217684A5554349E647AC7CFD311292E7B9A0'
$VU_Fragment &= 'B2AA894518DBBA6984D5D859DA577E3BCF2B295EBE8F6A99C79C31DE13A5DC8A46B3E9E7CFD35997F94C11C9CB5DB5CC9BEC3A9BD7324E522A39011FE97C36F591CFA67789DB28052517B448E2B43E8C'
$VU_Fragment &= 'A285F091A05C808F904EEE8EFF4DCF8E77AF1B6715802CA84C62593F7F548DD8266C5711A7AC052D27B3E3BBD9A4D0A7FB7065C5B2642BE47BB4CD9631ED5340E021F37C3FFB7077DF5A37EC2B5E9749'
$VU_Fragment &= '9CE597E8AD2E384D8543608C818D78987C9A7CBA984C264FCD661820D43434E65977AEB810AC2A351AC0267FB81F79BC7FDA3A40039DF13295CDE5E72B330E1AB98171F1E2F1CBC8E3E27F83CE438449'
$VU_Fragment &= 'C576F57A388AF41C6177016ED93E5D691340EE424355D3F4E88F22A9D478A3379E7F02E2DDC362E4A1CB117C1B3BEC8A46754144F90E63FD0D06245EDBB791F62011E87718F74519943909F108426419'
$VU_Fragment &= 'B5CFEFDA794C11C223615905DCECF19856A88FBBF9BC1BF8752B91D2786CAF82D57E752534609B388AD6D1D936550061B81A0B827D786DBF224609FE7258AF0FEBC34BD51344F0F72F053FC2042C13C5'
$VU_Fragment &= '328E978560CA101DDC02138B2CA18C51A28CF5D16D56962830278A5A1CDC0C0319000EFE0ED6FA97C957E7B64B82E69A2ACC0000000049454E44AE426082'
Return $VU_Fragment
EndFunc
Quellcode alleine läuft nicht, deshalb komplettes Paket hier herunterladen inkl. Exe Dateien: <CLICK ME > oder einfach den Link unten benutzen. ![]()
Viel Spaß
UEZ
PS: ist noch im ßeta Stadium Finale Version
UEZ also bei mir war das 9. Klasse ^^...
Ich kann mich nicht mehr so richtig erinnern, aber angenommen, es war auch bei mir in der Neunten, dann was das 1985!
UEZ
AutoIt rechnet intern in Bogenmaß und dein Taschenrechner in Grad.
Grad: 0° - 360°
Bogenmaß: 0 - 2*Pi
Es ist schon verdammt lang her, wo ich den Stoff in der Schule pauken musste ![]()
Daraus folgt:
Bogenmaß = Grad * PI / 180
Grad = Bogenmaß * 180 / PI
Gruß,
UEZ