1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. moritz1243

Beiträge von moritz1243

  • Pixelveränderung

    • moritz1243
    • 14. Oktober 2009 um 23:22

    Da ich mal hoffe das das kein bot wird, mit pixelgetcolor

  • _GUICtrlRichEdit_FindTextEx Problem [gelöst] - Sci Lexer Fragen

    • moritz1243
    • 14. Oktober 2009 um 23:22

    Sieht kompliziert aus zeigt er denn eine Zeile an wo der fehler liegen könnte

  • Kann man sowas mit AutoIt erstellen?

    • moritz1243
    • 14. Oktober 2009 um 23:20

    Du kannst dir auch einfach selber die bilder machen und sie dort positionieren

  • Hilfe bei Gui

    • moritz1243
    • 14. Oktober 2009 um 23:17

    Ich bin auch dagegen Bots zu unterstützen

  • Game Launcher

    • moritz1243
    • 14. Oktober 2009 um 16:05

    also die Bilder und verknüpfungen müssen in den gleichen oderner wie das script und müsen auch den glechen Namen haben, also Crysis.jpg und crysis.lnk. Das mit der exe ist dann wohl mein Fehler, ich habe win7 64bit und habe sie dementsprechend compiled. Musste sie dir eben 32bit compilen ;)

  • Game Launcher

    • moritz1243
    • 14. Oktober 2009 um 15:08

    Hi @ All,

    ich wollte hier ein Programm vorstellen, wleches das Überfüllen des Mointors mit Spielverknüpfungen verhindert. Es ist eine Art Spiele Start Center. Die Bedienung ist sehr einfach gehalten, einfach eine Verknüpfung von dem Spiel und ein Bild, welches den gleichen Namen hat wie die Verknüpfung in dem Ordner und fertig(Die Bilder finden sich gut bei Google, einfach Spiel xyz Cover und schon findet man welche). Um durch die Spiele zu blättern einfach linke Maustaste gedrückt halten und die Maus nach links oder rechts bewegen oder Pfeil links bzw rechts zum druchblättern. Um ein Spiel zu starten einfach eines anklicken oder Enter drücken dann wird das spiel welches gerade in der mitte ist gestartet.

    Ich hoffe es gefällt euch, da ich viel Zeit in das Design gesteckt habe 8)

    [Blockierte Grafik: http://img262.imageshack.us/img262/2518/bsp1.jpg] 
    [Blockierte Grafik: http://img262.imageshack.us/img262/1438/bsp2.png]

    Ich würde mich über feedback freuen :)

    Hier noch der Quelltext:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #Include <Constants.au3>
    #include <GuiConstants.au3>
    #include <Misc.au3>
    #include <IE.au3>
    #include <Array.au3>
    #include <WinAPI.au3>
    #include <GuiConstantsEx.au3>
    #include <Color.au3>
    #include <IrrlichtPluginUtils.au3>
    #NoTrayIcon

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MouseCoordMode', 0)

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet('{Esc}', '_Ende')

    [/autoit] [autoit][/autoit] [autoit]

    Global $Titel = "Spiele Center by Moritz1243 ;-)"

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $INI = @ScriptDir & "\Info.ini"
    Global Const $CONFIG = @ScriptDir & "\Config.ini"
    Global Const $Bilder_dir = @ScriptDir & "\Bilder\"
    Global Const $Spiel_dir = @ScriptDir & "\Verknüpfungen\"

    [/autoit] [autoit][/autoit] [autoit]

    Global $datei[1][1], $icon[1], $name[1], $position, $mouse_pos, $mouse_pos_now, $Spiele_Anzahl = 0, $bewegung, $bewegung_letzte
    Global $button_autostart, $button_exit
    Local $aktuelles_spiel, $letztes_spiel, $spiel_blinken
    Local $Icon_Position[1]
    Global $Icon_Distance = 30

    [/autoit] [autoit][/autoit] [autoit]

    Global $icolor_red = Number(IniRead(@scriptdir & "\config.ini","Config","Hintergrund Farbe Rot",-1))
    Global $icolor_green = Number(IniRead(@scriptdir & "\config.ini","Config","Hintergrund Farbe Gruen",-1))
    Global $icolor_blue = Number(IniRead(@scriptdir & "\config.ini","Config","Hintergrund Farbe Blau",-1))
    If $icolor_red = -1 Then
    IniWrite($CONFIG,"Config","Hintergrund Farbe Rot",64)
    IniWrite($CONFIG,"Config","Hintergrund Farbe Gruen",64)
    IniWrite($CONFIG,"Config","Hintergrund Farbe Blau",255)
    $icolor_red = 64
    $icolor_green = 64
    $icolor_blue = 255
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Global $switch[4]

    [/autoit] [autoit][/autoit] [autoit]

    Global $Reload

    [/autoit] [autoit][/autoit] [autoit]

    Global $width = 1024
    Global $height = 600

    [/autoit] [autoit][/autoit] [autoit]

    Global $Flow_type = IniRead($CONFIG,"Config","Flow Type",-1)
    If $Flow_type = -1 Then
    IniWrite($CONFIG,"Config","Flow Type",1)
    $Flow_type = 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Global $Window_type = IniRead($CONFIG,"Config","Window_type",-1)
    If $Window_type = -1 Then
    IniWrite($CONFIG,"Config","Window_type",1)
    $Window_type = 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Global $BK_type = IniRead($CONFIG,"Config","BK_type",-1)
    If $BK_type = -1 Then
    IniWrite($CONFIG,"Config","BK_type",1)
    $BK_type = 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $Window_type = 0 Then Global $Hwnd = CreateLayeredDevice("SpieleCenter", 0,@DesktopHeight * 1 / 8, @DesktopWidth, @DesktopHeight * 6 / 8,255, 0, 128, 0 )
    If $Window_type = 1 Then Global $Hwnd = CreateDevice($EDT_DIRECT3D9, 1024, 600, 16, 0, 0, 0)
    If $Window_type = 2 Then Global $Hwnd = CreateDevice($EDT_DIRECT3D9, @DesktopWidth,@DesktopHeight, 32, True, 0, 0)
    SetWindowCaption($Titel)
    WinSetOnTop($Hwnd, "", 1 )

    [/autoit] [autoit][/autoit] [autoit]

    Global $Timer_aktive = IniRead($CONFIG,"Config","Timer",-1)
    If $Timer_aktive = -1 Then
    IniWrite($CONFIG,"Config","Timer",1)
    $Timer_aktive = 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $compare[2]

    [/autoit] [autoit][/autoit] [autoit]

    Global $Camera = AddCameraSceneNode(0, 0, 0, 250, 0, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Global $Light1 = AddLightSceneNode( 0, -1000, 1000, -1000, 0, 0, 0, 0 )
    Global $SLight = AddNewSLight( 1, 50, 1, 500, 3000, $ELT_POINT)
    SetSLightSpecularColor( $SLight, 0.1, 0.1, 0.1 )
    SetLightData( $Light1, $SLight )

    [/autoit] [autoit][/autoit] [autoit]

    Global $Light2 = AddLightSceneNode( 0, 1000, 1000, 1000, 0, 0, 0, 0 )
    SetLightData( $Light2, $SLight )

    [/autoit] [autoit][/autoit] [autoit]

    Global $Bilder[1]
    Global $Node[1]
    Global $Node_Back[1]
    Global $Bilder_alpha[1]

    [/autoit] [autoit][/autoit] [autoit]

    Global $pointer[1]

    [/autoit] [autoit][/autoit] [autoit]

    Global $sortieren_type = 0

    [/autoit] [autoit][/autoit] [autoit]

    Global $search_txt

    [/autoit] [autoit][/autoit] [autoit]

    Global $Info_Text = AddStaticText("", 422, 200, 602, 400); [, Border [, WordWrap [, iParent [, FillBackground ]]]] )
    Global $Button_Einstellungen = AddImage(GetTexture($Bilder_dir & "einstellungen.png"), $width - 58, $height - 58)
    Global $Button_Sortieren = AddImage(GetTexture($Bilder_dir & "sortieren.png"), $width - 116, $height - 58)

    [/autoit] [autoit][/autoit] [autoit]

    draw(0)
    Global $anzahl_spiele
    Spiele_laden()

    [/autoit] [autoit][/autoit] [autoit]

    Global $Particle[1][4]
    Global $Node_Particle[1]
    Global $Anzahl_Particle = 120
    Global $Partikel_onoff = IniRead($CONFIG,"Config","Partikel",-1)
    If $Partikel_onoff = -1 Then
    IniWrite($CONFIG,"Config","Partikel",1)
    $Partikel_onoff = 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $Partikel_onoff = 1 Then _particle_create()

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $icon[$Spiele_Anzahl + 1]
    ReDim $name[$Spiele_Anzahl + 1]
    ReDim $Icon_Position[$Spiele_Anzahl + 1]

    [/autoit] [autoit][/autoit] [autoit]

    draw(0)

    [/autoit] [autoit][/autoit] [autoit]

    AdlibEnable("_bus",12)

    [/autoit] [autoit][/autoit] [autoit]

    Local $msg

    [/autoit] [autoit][/autoit] [autoit]

    While True

    [/autoit] [autoit][/autoit] [autoit]

    If WinActive($Titel) Then

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed(44) Then Spiele_ordnen(0)

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("0D") Then Spiel_starten($aktuelles_spiel)

    [/autoit] [autoit][/autoit] [autoit]

    ; $compare[0] = GUICtrlRead($search)

    [/autoit] [autoit][/autoit] [autoit]

    If $compare[0] <> $compare[1] Then
    $compare[1] = $compare[0]
    ;If $compare[0] <> "search" And $compare[0] <> "" Then

    For $i = 0 To $Spiele_Anzahl Step 1

    $search_txt = $compare[0]

    [/autoit] [autoit][/autoit] [autoit]

    If StringLeft($datei[$i][2],StringLen($compare[0])) = StringLeft($compare[0],StringLen($compare[0])) Then
    $Bewegung = $Icon_Distance * -$i
    $position = $bewegung
    ;draw($Bewegung)
    $aktuelles_spiel = Int((-$bewegung + 15) / $Icon_Distance)
    If $aktuelles_spiel > $Spiele_Anzahl - 1 Then $aktuelles_spiel = $Spiele_Anzahl - 1
    If $aktuelles_spiel < 0 Then $aktuelles_spiel = 0
    ; GUICtrlSetData($info_titel, $datei[$aktuelles_spiel][2])
    ExitLoop
    EndIf

    Next
    ;EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed ("01") Then ; Spiele mit Maus bewegen oder Starten

    $mouse_pos_now = MouseGetPos()

    If $mouse_pos_now[1] - 25 > $height - 58 And $mouse_pos_now[1] - 25 < $height - 10 Then
    If $mouse_pos_now[0] > $width - 58 And $mouse_pos_now[0] < $width - 10 Then
    einstellungen()
    ElseIf $mouse_pos_now[0] > $width - 116 And $mouse_pos_now[0] < $width - 68 Then
    Spiele_ordnen($sortieren_type)
    $sortieren_type += 1
    If $sortieren_type = 3 Then $sortieren_type = 0
    Draw(0)
    Do
    Sleep(100)
    Until Not _IsPressed ("01")
    EndIf
    EndIf

    If Mod($Bewegung,$Icon_Distance) = 0 Then
    SetText($info_text,"")
    SetRotation($Node[$aktuelles_spiel],0,0,0)
    EndIf

    $mouse_pos = MouseGetPos(0)
    Local $coll = GetSceneNodeFromScreenCoordinatesBB(MouseGetPos(0),MouseGetPos(1))

    For $i = 0 To $Spiele_Anzahl Step 1
    If $coll = $Node[$i] Or $coll = $Node_Back[$i] Then Spiel_starten($i)
    Next

    $position = $bewegung

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $mouse_pos_now = MouseGetPos(0)

    [/autoit] [autoit][/autoit] [autoit]

    $bewegung = ($mouse_pos_now - $mouse_pos) + $position
    If $bewegung > ($Spiele_Anzahl - 1) * $Icon_Distance Then $bewegung = ($Spiele_Anzahl - 1) * $Icon_Distance
    If $bewegung < 0 Then $bewegung = 0
    ConsoleWrite($bewegung & @CRLF)
    $aktuelles_spiel = Int(($bewegung + 15) / $Icon_Distance)
    If $aktuelles_spiel > $Spiele_Anzahl - 1 Then $aktuelles_spiel = $Spiele_Anzahl - 1
    If $aktuelles_spiel < 0 Then $aktuelles_spiel = 0

    If $aktuelles_spiel <> $letztes_spiel Then

    $letztes_spiel = $aktuelles_spiel

    EndIf

    If $bewegung <> $bewegung_letzte Then
    $bewegung_letzte = $bewegung
    ConsoleWrite($bewegung & @CRLF)
    draw($Bewegung)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(5)

    [/autoit] [autoit][/autoit] [autoit]

    Until Not _IsPressed ("01")

    [/autoit] [autoit][/autoit] [autoit]

    ; $position = $bewegung

    EndIf

    If _IsPressed ("02") Then ; Eigenschaften abfragen
    $mouse_pos = MouseGetPos(0)
    Local $coll = GetSceneNodeFromScreenCoordinatesBB(MouseGetPos(0),MouseGetPos(1))

    [/autoit] [autoit][/autoit] [autoit]

    _center_aktuelles_Spiel()

    $aktuelles_spiel = Int(($bewegung + 15) / $Icon_Distance)
    For $i = 0 To $Spiele_Anzahl Step 1
    If $coll = $Node[$i] Then;-329 49 < 70

    For $deg = 0 To 180 Step 5
    BeginScene(True, True, 0, $icolor_red,$icolor_green,$icolor_blue)
    SetRotation($Node[$pointer[$aktuelles_spiel]],0,$deg,0)
    SceneDraw()
    GuiDraw()
    EndScene()
    Sleep(5)
    Next

    Local $process = StringSplit ($datei[$pointer[$aktuelles_spiel]][0], "\")
    Local $Spielzeit = IniRead(@ScriptDir & "\info.ini","Log",$process[$process[0]],0)
    SetText($info_text,"Spiel: " & $datei[$pointer[$aktuelles_spiel]][2] & @LF _
    & @LF _
    & "Spielzeit: " & _sec_to_time_string($Spielzeit) & @LF _
    & "Gespielt: " & IniRead(@ScriptDir & "\info.ini","Spiele",$datei[$pointer[$aktuelles_spiel]][2],0) - 1 & " mal" & @LF _
    & "Dateipfad: " & $datei[$pointer[$aktuelles_spiel]][0])
    EndIf

    If $coll = $Node_Back[$i] Then
    SetText($info_text,"")
    For $deg = 180 To 360 Step 5
    BeginScene(True, True, 0, $icolor_red,$icolor_green,$icolor_blue)
    SetRotation($Node[$pointer[$aktuelles_spiel]],0,$deg,0)
    SceneDraw()
    GuiDraw()
    EndScene()
    Sleep(5)
    Next
    EndIf
    Next

    EndIf

    If _IsPressed("25") then ; Durchblättern links
    If Mod($Bewegung,$Icon_Distance) = 0 Then
    SetText($info_text,"")
    SetRotation($Node[$aktuelles_spiel],0,0,0)
    EndIf
    _center_aktuelles_Spiel()
    ConsoleWrite($bewegung & @CRLF)
    If $bewegung = 0 Then
    Do
    $bewegung +=10
    draw($bewegung)
    Until $bewegung = ($Spiele_Anzahl - 1) * $Icon_Distance
    ;draw($bewegung)
    Else
    For $i = 1 to 10
    $bewegung -= $Icon_Distance / 10
    Draw($bewegung)
    Sleep(10)
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    endif

    If _IsPressed("27") then ; Durchblättern links
    If Mod($Bewegung,$Icon_Distance) = 0 Then
    SetText($info_text,"")
    SetRotation($Node[$aktuelles_spiel],0,0,0)
    EndIf
    _center_aktuelles_Spiel()
    ConsoleWrite($bewegung & @CRLF)
    If $bewegung = ($Spiele_Anzahl - 1) * $Icon_Distance then
    do
    $bewegung -=10
    draw($bewegung)
    until $bewegung = 0
    ;draw($bewegung)
    Else
    for $i = 1 to 10
    $bewegung += $Icon_Distance / 10
    Draw($bewegung)
    Sleep(10)
    next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    endif
    ; draw($Bewegung)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(5)

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func Spiele_laden()

    [/autoit] [autoit][/autoit] [autoit]

    Local $search, $desti, $compare

    ; $Ordner = FileSelectFolder("Ordner wählen", "",2)
    ; $Ordner = "C:\Dokumente und Einstellungen\Moritz\Desktop\Spiele"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $isearch = FileFindFirstFile($Spiel_dir & "*.lnk")
    If $isearch = -1 Then Return 0

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Local $type = FileFindNextFile($isearch)
    If @error Then ExitLoop
    $anzahl_spiele += 1
    WEnd

    FileClose($search)

    [/autoit] [autoit][/autoit] [autoit]

    $search = FileFindFirstFile($Spiel_dir & "*.lnk")

    [/autoit] [autoit][/autoit] [autoit]

    While 1

    ReDim $datei[$Spiele_Anzahl + 1][5]
    ReDim $Bilder[$Spiele_Anzahl + 1]
    ReDim $Bilder_alpha[$Spiele_Anzahl + 1]
    ReDim $node[$Spiele_Anzahl + 1]
    ReDim $Node_Back[$Spiele_Anzahl + 1]
    ReDim $pointer[$Spiele_Anzahl + 1]

    $pointer[$Spiele_Anzahl] = $Spiele_Anzahl

    $datei[$Spiele_Anzahl][0] = FileFindNextFile($search)
    If @error Then ExitLoop
    $datei[$Spiele_Anzahl][1] = $datei[$Spiele_Anzahl][1]
    $datei[$Spiele_Anzahl][2] = StringTrimRight ($datei[$Spiele_Anzahl][0], 4)

    If IniRead($INI,"Spiele",$datei[$Spiele_Anzahl][2],0) = 0 Then
    $Reload = True
    IniWrite($INI,"Spiele",$datei[$Spiele_Anzahl][2],1)
    EndIf

    If StringRight ($datei[$Spiele_Anzahl][0],3) = "lnk" Then
    $desti = FileGetShortcut($Spiel_dir & $datei[$Spiele_Anzahl][0])
    $datei[$Spiele_Anzahl][0] = $desti[0]
    $datei[$Spiele_Anzahl][1] = $desti[1]
    $datei[$Spiele_Anzahl][3] = $desti[4]
    $datei[$Spiele_Anzahl][4] = $desti[5]
    EndIf

    $Node[$Spiele_Anzahl] = AddCubeSceneNode(100)
    $Node_Back[$Spiele_Anzahl] = AddCubeSceneNode(101,$Node[$Spiele_Anzahl])
    SetMaterialTexture($Node_Back[$Spiele_Anzahl], 0, GetTexture($Bilder_dir & "\back.jpg"))
    SetPosition($Node_Back[$Spiele_Anzahl],0,0,-5)
    SetScale($Node[$Spiele_Anzahl], 1, 1.5, 0.1)
    $Bilder[$Spiele_Anzahl] = GetTexture($Bilder_dir & "\" & $datei[$Spiele_Anzahl][2] & ".jpg")
    SetMaterialTexture($Node[$Spiele_Anzahl], 0, $Bilder[$Spiele_Anzahl])
    SetMaterialFlag($Node[$Spiele_Anzahl], $EMF_LIGHTING, 0 )

    SetScale($Node[$Spiele_Anzahl], 1, 1.5, 0.1)

    ; $Bilder[$Spiele_Anzahl] = _GDIPlus_ImageLoadFromFile($Ordner & "\temp\" & $datei[$Spiele_Anzahl][2] & ".jpg")
    ; $Bilder_alpha[$Spiele_Anzahl] = _GDIPlus_ImageLoadFromFile($Ordner & "\temp\" & $datei[$Spiele_Anzahl][2] & "_alpha.jpg")

    ; MsgBox(0,"",$bilder[$Spiele_Anzahl])

    $Spiele_Anzahl += 1
    ToolTip("Load ... " & Int($Spiele_Anzahl / $anzahl_spiele * 100) & "%")
    WEnd

    ToolTip("")
    ; _ArrayDisplay($datei)

    FileClose($search)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Draw($wegi)

    [/autoit] [autoit][/autoit] [autoit]

    BeginScene(True, True, 0, $icolor_red,$icolor_green,$icolor_blue)

    ; $icolor_red = Mod($icolor_red + random(0,5,1),255)
    ; $icolor_green = Mod($icolor_green + random(0,5,1),255)
    ; $icolor_blue = Mod($icolor_blue + random(0,5,1),255)

    [/autoit] [autoit][/autoit] [autoit]

    Local $pi_div_180 = 4 * ATan(1) / 180
    Local $xi, $yi

    [/autoit] [autoit][/autoit] [autoit]

    Local $aktuelles = Int((-$bewegung + 15) / $Icon_Distance)

    [/autoit] [autoit][/autoit] [autoit]

    Switch $flow_type

    [/autoit] [autoit][/autoit] [autoit]

    Case 0

    $Icon_Distance = 30

    For $i = 0 To $Spiele_Anzahl Step 1

    [/autoit] [autoit][/autoit] [autoit]

    $Icon_Position[$i] = $wegi + $i * $Icon_Distance

    If $Icon_Position[$i] > -90 And $Icon_Position[$i] < 90 Then

    SetVisible($Node[$i], 1)

    $xi = Sin (-$Icon_Position[$i] * $pi_div_180) * 200
    $yi = Cos (-$Icon_Position[$i] * $pi_div_180) * 60

    [/autoit] [autoit][/autoit] [autoit]

    SetPosition($Node[$i], $xi / 2 * 8/10,0,$yi)

    [/autoit] [autoit][/autoit] [autoit]

    Else
    SetVisible($Node[$i], 0)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    Case 1

    $Icon_Distance = 70

    For $i = 0 To $Spiele_Anzahl Step 1

    ; If $Icon_Position[$i] > -90 And $Icon_Position[$i] < 0 Then $bewegung += 1

    $Icon_Position[$i] = $wegi + $i * -$Icon_Distance

    ; If $i > $aktuelles Then $Icon_Position[$i] += 50
    ; If $i < $aktuelles Then $Icon_Position[$i] -= 50

    ; If $Icon_Position[$i] > -45 And $Icon_Position[$i] < 0 Then
    ; $bewegung += 1
    ; ElseIf $Icon_Position[$i] < 45 And $Icon_Position[$i] > 0 Then
    ; $bewegung -= 1
    ; EndIf

    If $Icon_Position[$i] > -90 And $Icon_Position[$i] < 90 Then

    SetRotation($Node[$pointer[$i]],0,-$Icon_Position[$i],0)
    SetPosition($Node[$pointer[$i]],$Icon_Position[$i],0,(90 - Abs($Icon_Position[$i])) / 2)

    ElseIf $Icon_Position[$i] > 0 Then
    SetRotation($Node[$pointer[$i]],0,-90,0)
    SetPosition($Node[$pointer[$i]],$Icon_Position[$i],0,0)
    Else
    SetRotation($Node[$pointer[$i]],0,90,0)
    SetPosition($Node[$pointer[$i]],$Icon_Position[$i],0,0)
    EndIf


    Next

    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    SceneDraw( )
    GuiDraw( )

    [/autoit] [autoit][/autoit] [autoit]

    EndScene( )

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Bus()
    BeginScene(True, True, 0, $icolor_red,$icolor_green,$icolor_blue)

    If $BK_type = 1 Then _bk_change_color()
    If $Partikel_onoff = 1 Then _particle()

    SceneDraw()
    GuiDraw()

    [/autoit] [autoit][/autoit] [autoit]

    EndScene()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Spiel_starten($iSpiel)
    If MsgBox(4,"","Wollen Sie " & $datei[$iSpiel][2] & " wirklich starten?") = 6 Then
    IniWrite($INI,"Spiele",$datei[$iSpiel][2],IniRead($INI,"Spiele",$datei[$iSpiel][2],1) + 1)

    [/autoit] [autoit][/autoit] [autoit]

    ShellExecute($datei[$iSpiel][0],"",$datei[$iSpiel][1])
    FileDelete(@scriptdir & "\commandline.cl")
    If $Timer_aktive = 1 Then
    Local $string = StringSplit ($datei[$iSpiel][0], "\")
    FileWrite(@scriptdir & "\commandline.cl",$String[$string[0]])
    ShellExecute("timer.exe","",@ScriptDir)
    EndIf
    Exit
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _bk_change_color()

    If $switch[3] = 0 Then
    $switch[3] = 5
    If $switch[0] = 0 Then
    $icolor_red += 1
    Else
    $icolor_red -= 1
    EndIf
    If $icolor_red >= 255 Then
    $icolor_red = 255
    $switch[0] = 1
    EndIf
    If $icolor_red <= 0 Then
    $icolor_red = 0
    $switch[0] = 0
    EndIf
    If $switch[1] = 0 Then
    $icolor_green += 2
    Else
    $icolor_green -= 2
    EndIf
    If $icolor_green >= 255 Then
    $icolor_green = 255
    $switch[1] = 1
    EndIf
    If $icolor_green <= 0 Then
    $icolor_green = 0
    $switch[1] = 0
    EndIf
    If $switch[2] = 0 Then
    $icolor_blue += 3
    Else
    $icolor_blue -= 3
    EndIf
    If $icolor_blue >= 255 Then
    $icolor_blue = 255
    $switch[2] = 1
    EndIf
    If $icolor_blue <= 0 Then
    $icolor_blue = 0
    $switch[2] = 0
    EndIf
    Else
    $switch[3] -= 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Einstellungen()

    [/autoit] [autoit][/autoit] [autoit]

    AdlibDisable()

    [/autoit] [autoit][/autoit] [autoit]

    Local $Gui_Ein = GUICreate("Einstellungen",280,400)

    Local $check_partikel = GUICtrlCreateCheckbox("Partikel",10,10,200,20)
    If IniRead($CONFIG,"Config","Partikel",0) = 1 Then GUICtrlSetState($check_partikel, $GUI_CHECKED)
    Local $check_bkchange = GUICtrlCreateCheckbox("Hintergrundfarbenwechsel",10,50,200,20)
    If IniRead($CONFIG,"Config","BK_type",0) = 1 Then GUICtrlSetState($check_bkchange, $GUI_CHECKED)
    Local $check_timer = GUICtrlCreateCheckbox("Timer",10,90,200,20)
    If IniRead($CONFIG,"Config","Timer",0) = 1 Then GUICtrlSetState($check_timer, $GUI_CHECKED)
    Local $button_save = GUICtrlCreateButton("Speichern",100,300,80,40)

    GUICtrlCreateLabel("BK Farbe",150,135,50,20)
    Local $input_c_red = GUICtrlCreateInput($icolor_red,10,130,40,20)
    Local $input_c_green = GUICtrlCreateInput($icolor_green,60,130,40,20)
    Local $input_c_blue = GUICtrlCreateInput($icolor_blue,110,130,40,20)

    Local $set[4]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While True
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $button_save
    If GUICtrlRead($check_partikel) = 4 Then
    $set[0] = 0
    Else
    $set[0] = 1
    EndIf
    IniWrite($CONFIG,"Config","Partikel",$set[0])
    If $Partikel_onoff <> $set[0] Then
    If $Partikel_onoff = 0 Then
    _particle_create()
    Else
    _particle_delete()
    EndIf
    $Partikel_onoff = $set[0]
    EndIf

    If GUICtrlRead($check_bkchange) = 4 Then
    $set[1] = 0
    Else
    $set[1] = 1
    EndIf
    IniWrite($CONFIG,"Config","BK_type",$set[1])
    $BK_type = $set[1]

    [/autoit] [autoit][/autoit] [autoit]

    If GUICtrlRead($check_timer) = 4 Then
    $set[2] = 0
    Else
    $set[2] = 1
    EndIf
    IniWrite($CONFIG,"Config","Timer",$set[2])
    $Timer_aktive = $set[2]

    $icolor_red = Number(GUICtrlRead($input_c_red))
    $icolor_green = Number(GUICtrlRead($input_c_green))
    $icolor_blue = Number(GUICtrlRead($input_c_blue))
    IniWrite(@scriptdir & "\config.ini","Config","Hintergrund Farbe Rot",$icolor_red)
    IniWrite(@scriptdir & "\config.ini","Config","Hintergrund Farbe Gruen",$icolor_green)
    IniWrite(@scriptdir & "\config.ini","Config","Hintergrund Farbe Blau",$icolor_blue)

    EndSwitch
    WEnd
    GUIDelete($Gui_Ein)
    AdlibEnable("_bus",12)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Spiele_ordnen($imerkmal)

    [/autoit] [autoit][/autoit] [autoit]

    Switch $imerkmal
    Case 0 ; Spiel Zeit
    ConsoleWrite("Sortieren Spielzeit" & @CRLF)
    Local $list[$Spiele_Anzahl][2]
    For $i = 0 To $Spiele_Anzahl - 1 Step 1
    Local $process = StringSplit ($datei[$i][0], "\")
    $list[$i][0] = Number(IniRead(@ScriptDir & "\info.ini","Log",$process[$process[0]],0))
    $list[$i][1] = $i
    Next
    _ArraySort($list)
    For $i = 0 To $Spiele_Anzahl - 1 Step 1
    $pointer[$i] = $list[$Spiele_Anzahl - 1 - $i][1]
    Next
    Case 1 ; Wie oft gespielt
    ConsoleWrite("Sortieren Wie oft gespielt" & @CRLF)
    Local $list[$Spiele_Anzahl][2]
    For $i = 0 To $Spiele_Anzahl - 1 Step 1
    $list[$i][0] = Number(IniRead(@ScriptDir & "\info.ini","Spiele",$datei[$i][2],0))
    $list[$i][1] = $i
    Next
    _ArraySort($list)
    For $i = 0 To $Spiele_Anzahl - 1 Step 1
    $pointer[$i] = $list[$Spiele_Anzahl - 1 - $i][1]
    Next
    Case 2 ; Alphabetisch
    ConsoleWrite("Sortieren Alphabetisch" & @CRLF)
    For $i = 0 To $Spiele_Anzahl - 1 Step 1
    $pointer[$i] = $i
    Next
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _center_aktuelles_Spiel()

    While Mod(-$Bewegung,$Icon_Distance) <> 0
    If Mod($Bewegung,$Icon_Distance) > $Icon_Distance / 2 Then
    $Bewegung += 1
    Else
    $Bewegung -= 1
    EndIf
    draw($Bewegung)
    ; ToolTip($Bewegung & " Mod: " & Mod(-$Bewegung,$Icon_Distance) & " < " & $Icon_Distance)
    WEnd

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _particle_create()

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $Node_Particle[$Anzahl_Particle]
    ReDim $Particle[$Anzahl_Particle][4]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To 119 Step 1

    $Node_Particle[$i] = AddCubeSceneNode(Random(1,4,1))
    ; $Node_Particle[$i] = AddSphereSceneNode(Random(1,2,1), 20)
    $particle[$i][0] = Random(-200,200,1)
    $particle[$i][1] = Random(-200,200,1)
    $particle[$i][2] = Random(-200,300,1)
    $particle[$i][3] = Random(1,4,1)
    SetPosition($Node_Particle[$i],$particle[$i][0],$particle[$i][1],-$particle[$i][2])
    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _particle()

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($particle) - 1 Step 1

    If $particle[$i][2] < -300 Then ; Wenn es auf der z-achse kleiner also -200 ist
    $particle[$i][0] = Random(-200,200,1)
    $particle[$i][1] = Random(-200,200,1)
    $particle[$i][2] = Random(200,300,1)
    $particle[$i][3] = Random(1,4,1)
    Else
    $particle[$i][2] -= $particle[$i][3]
    EndIf

    SetPosition($Node_Particle[$i],$particle[$i][0],$particle[$i][1],-$particle[$i][2])

    Next

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _particle_delete()
    For $i = 0 To UBound($Node_Particle) - 2 Step 1
    Remove($Node_Particle[$i])
    Next
    SetVisible($Node_Particle[UBound($Node_Particle) - 1],0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Bild_Suche($iTitel)

    [/autoit] [autoit][/autoit] [autoit]

    _IEErrorHandlerRegister ()

    [/autoit] [autoit][/autoit] [autoit]

    $oIE = _IECreateEmbedded ()
    GUICreate("Embedded Web control Test", 640, 480, _
    (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
    $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
    $GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 600, 360)
    $GUI_Button_Back = GUICtrlCreateButton("Back", 10, 420, 100, 30)
    $GUI_Button_Forward = GUICtrlCreateButton("Forward", 120, 420, 100, 30)
    $GUI_Button_Home = GUICtrlCreateButton("Home", 230, 420, 100, 30)
    $GUI_Button_Stop = GUICtrlCreateButton("Stop", 340, 420, 100, 30)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _IENavigate ($oIE, "http://images.google.de/")
    $oForm = _IEFormGetObjByName($oIE, "f")
    $oQuery = _IEFormElementGetObjByName($oForm, "q")
    _IEFormElementSetValue($oQuery, $iTitel)
    _IEFormSubmit($oForm)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $GUI_Button_Home
    _IENavigate ($oIE, "http://images.google.de/")
    Case $msg = $GUI_Button_Back
    _IEAction ($oIE, "back")
    Case $msg = $GUI_Button_Forward
    _IEAction ($oIE, "forward")
    Case $msg = $GUI_Button_Stop
    _IEAction ($oIE, "stop")
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    GUIDelete()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _sec_to_time_string($isec)
    Local $string = Int($isec / 3600) & " h " & Int(Mod($isec,3600) / 60) & " min " & Mod(Mod($isec,3600),60) & " sec"
    Return $string
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Ende()
    Exit
    EndFunc

    [/autoit]


    EDIT NEUE VERSION - Die Beta Version :rock:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    -Sortieren ist nun möglich
    -Optionen sind jetzt verfügbar
    -Mit Rechtsklick auf das Spiel kann man Infos abfragen
    -Der Hintergrund ändert jetzt seine Farbe (kann auch in der ini ausgestellt werden)

    Dateien

    Spiele Center Beta.part1.rar 993,28 kB – 591 Downloads Spiele Center Beta.part2.rar 383,26 kB – 569 Downloads
  • AutoStart Functionen

    • moritz1243
    • 14. Oktober 2009 um 12:31

    Mein Fehler ich wollte im I-explorer zurück gehen und der hing kurz worauf hin ich wohl zweimal auf zurück gegangen bin :D

  • AutoStart Functionen

    • moritz1243
    • 14. Oktober 2009 um 00:10

    Abend es war noch gut, wenn du ein Programm dabei macht, was eine liste aller programme anzeigt und das man diese dann löschen kann. Also quasi ein programm was deine udf nutzt :)<br>

  • AutoStart Functionen

    • moritz1243
    • 14. Oktober 2009 um 00:10

    Abend es war noch gut, wenn du ein Programm dabei macht, was eine liste aller programme anzeigt und das man diese dann löschen kann. Also quasi ein programm was deine udf nutzt :)

  • Das Klick Game

    • moritz1243
    • 14. Oktober 2009 um 00:06

    Das programm ist so sinnlos, dass man es nicht mehr beschreiben kann und es zeigt einem nicht mal die benötigte Zeit an -.-

  • In einem Spiel eine Nachricht optisch schön darstellen

    • moritz1243
    • 13. Oktober 2009 um 16:33

    gut ich schau mal nach ob ich die UDF finde mal gucken was sich da machen lässt

  • In einem Spiel eine Nachricht optisch schön darstellen

    • moritz1243
    • 13. Oktober 2009 um 14:11

    ja schon klar war auch ehr nen Joke aber programme wie fraps bekommen das doch auch hin

  • In einem Spiel eine Nachricht optisch schön darstellen

    • moritz1243
    • 11. Oktober 2009 um 13:32

    Also bei Crysis funktioniert das nicht:-(

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 4. Oktober 2009 um 20:03

    Dafür habe ich jetzt knapp zwei Wochen gebraucht.

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 21. September 2009 um 13:56

    Also erstmal finde ich es gut, dass sich so viele dafür interessieren. Ich habe mir das Wissen dazu selber aus dem I-NEt bzw der Readme zusammengesucht und ja es ist möglich einen richtigen Ego-Shooter damit zu erstellen. - Wenn ihr noch Ideen für das Spiel habt - ich bin für Anregungne immer offen. ;)
    Übrigens, ich wollte das Spiel ursprünglich in 2D mit GDIPLUs machen aber das ist leider zu langsam :(

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 20. September 2009 um 21:39

    Ja, die Irrlicht Engine ist echt klasse, jedoch kann man mit Autoit bis jetzt noch nicht alle Funktionen nutzen :(. Ich hoffe mal, dass daran noch gearbeitet wird.

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 20. September 2009 um 21:13

    Guten Tag zusammen,

    ich möchte euch stolz die 2 Version meines Jump n' Run Spiels vorstellen. Ich habe am Spiel viel verbessert ,hinzugefügt und berichtig, außerdem habe ich Ton hinzugefügt. Ich hoffe euch gefällte diese Version und ich würde mich über feedback freuen :rolleyes: .

    [Blockierte Grafik: http://img85.imageshack.us/img85/8563/bsp.jpg]

    Changelog:
    Spiel:

    Spoiler anzeigen


    -Sound!
    -neue Gegner (Shooter,Fly) sowie Verbesserungen der alten Gegener
    -Partikel Engine (Version 0.3)
    -zerbrechliche Blöcke
    -Münzen
    -Leben (für 50 Münzen bekommt man ein Leben)
    -Platformen wurden verbessert

    -Leider hat das Spiel ein Memory Leak, da die Partikel nicht vollständig gelöscht
    werden können. Dieser Fehler stellt jedoch kein Problem dar, da man vorerst eh nur
    einen Level spielen.


    Editor:

    Spoiler anzeigen


    Der Editor wurde komplett neu geschrieben und funktioniert jetzt fehlerfrei! Außerdem
    ist der Editor nun dynamisch was die Objekte angeht, sie werden aus der objekte.ini
    geöffnet, welche sich beliebig erweitern lässt.

    -Knöpfe wurden hinzugefügt
    -speichern auf "s"
    -map komplett löschen auf "n"
    -map laden "l"


    Fortschritt:

    Spiel: 90%
    Editor: 100% Der Editor funktioniert nun perfekt ohne fehler :rock:

    Hier noch der Quellcode:
    Spiel:

    Spoiler anzeigen
    [autoit]

    #include "IrrlichtPluginUtils.au3"
    #include <windowsconstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Misc.au3>
    #include <Array.au3>
    #include <Partikel.au3>
    #include <Mathe.au3>
    #include <Sound.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)
    Opt('GuiOnEventMode', 1)
    Opt('MouseCoordMode', 1)

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{ESC}","beenden")
    ;HotKeySet("{F9}","aufloesung") ; funktioniert noch nicht :(

    [/autoit] [autoit][/autoit] [autoit]

    Global $width = @DesktopWidth
    Global $height = @DesktopHeight
    Global $title = "Model"

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $tex_dir = @ScriptDir & "\texturen\"
    Global Const $mdl_dir = @ScriptDir & "\models\"
    Global Const $snd_dir = @ScriptDir & "\sounds\"

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $CCoin = Binary(1)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aKeyboardState[256], $vergleich, $k_left = 39,$k_right = 37,$k_fore = 38,$k_back = 40,$k_jump = 32, $jump_p = 0, $state[2]
    Local $ccd
    Global Const $pi_div_180 = 4 * ATan(1) / 180;,$pi = 3.14159265358979, $radToDeg = 180 / $pi,

    [/autoit] [autoit][/autoit] [autoit]

    Opt( "TrayIconHide", 1 )
    Opt( "WinTitleMatchMode", 3 )

    [/autoit] [autoit][/autoit] [autoit]

    Global $hwnd = GUICreate($title, $width, $height)
    GUISetOnEvent($GUI_EVENT_CLOSE, "beenden")

    [/autoit] [autoit][/autoit] [autoit]

    CreateDeviceOnWindow($hwnd, $EDT_DIRECT3D9, 0, 0, $width, $height, 32, 0, 1)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    ;CreateDevice($EDT_DIRECT3D9, $width, $height, 32, 1, 1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $textbox = AddStaticText( "", 10, 10, 130, 20, 1 )
    Global $Light = AddLightSceneNode( 0, 0, 500, -200, 1, 1, 1, 10000)

    [/autoit] [autoit][/autoit] [autoit]

    Global $camera_x, $camera_y, $camera_z = -300, $camera_y_hight = 100
    Global $Camera = AddCameraSceneNode(0, 0,150,-200,0,0,0 )

    [/autoit] [autoit][/autoit] [autoit]

    Local $format = ".jpg"
    Global $sky = AddSkyBoxSceneNode( GetTexture($tex_dir & "sky\UP" & $format), GetTexture($tex_dir & "sky\dn" & $format), GetTexture($tex_dir & "sky\bk" & $format), GetTexture($tex_dir & "sky\ft" & $format), GetTexture($tex_dir & "sky\rt" & $format), GetTexture($tex_dir & "sky\lf" & $format))

    [/autoit] [autoit][/autoit] [autoit]

    ;#### Spieler ###########################################################

    [/autoit] [autoit][/autoit] [autoit]

    Global $spawn_punkt[2]
    Global $ziel_punkt[3]
    Global $Player_x, $Player_y, $Player_z
    Global $l = False, $r = False ,$o = False ,$u = False
    Global $Player_can_jump = 1
    Global $Player_standby_timer
    Global $Spieler_ani = "stehen"
    Global $Player_look_dir, $Player_dir
    Global $Player_Mesh = GetMesh($mdl_dir & "player.md2")
    Global $Player_Texture = GetTexture($mdl_dir & "player.jpg")

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $leben_max = 10
    Global $Leben[2]

    [/autoit] [autoit][/autoit] [autoit]

    Global $Player_Node = AddAnimatedMeshSceneNode($Player_Mesh)
    SetMaterialTexture( $Player_Node, 0, $Player_Texture)
    SetMD2Animation($Player_Node, $EMAT_STAND)
    SetAnimationSpeed( $Player_Node, 10 )
    SetLoopMode($Player_Node, 1)
    SetPosition($Player_Node, 80,80,0)

    [/autoit] [autoit][/autoit] [autoit]

    #Region Models & Texturen laden

    [/autoit] [autoit][/autoit] [autoit]

    Global $Box_Mesh = GetMesh($mdl_dir & "box.md2")
    Global $Block_Texture = GetTexture($mdl_dir & "block.jpg")
    Global $Grass_Texture = GetTexture($mdl_dir & "rasen.jpg")
    Global $Stein_Texture = GetTexture($mdl_dir & "stein.jpg")
    Global $BreakableBlock_Texture = GetTexture($mdl_dir & "breakableblock.jpg")

    [/autoit] [autoit][/autoit] [autoit]

    Global $Plattform_Mesh = GetMesh($mdl_dir & "Plattform.md2")
    Global $Plattform_Texture = GetTexture($mdl_dir & "Plattform.jpg")

    [/autoit] [autoit][/autoit] [autoit]

    Global $herz_Mesh = GetMesh($mdl_dir & "herz.md2")
    Global $herz_Tex = GetTexture($mdl_dir & "herz.jpg")
    Global $Gegner_Mesh = GetMesh($mdl_dir & "gegner.md2")
    Global $Gegner_Mesh2 = GetMesh($mdl_dir & "gegner_fly.md2")
    Global $Gegner_Mesh3 = GetMesh($mdl_dir & "gegner_kanone.md2")
    Global $Gegner_Mesh4 = GetMesh($mdl_dir & "toilet.md2")
    Global $Gegner_Tex = GetTexture($mdl_dir & "gegner.pcx")
    Global $Gegner_Tex2 = GetTexture($mdl_dir & "gegner_fly.jpg")
    Global $Gegner_Tex3 = GetTexture($mdl_dir & "gegner_kanone.jpg")
    Global $Gegner_Tex4 = GetTexture($mdl_dir & "toilet.jpg")

    [/autoit] [autoit][/autoit] [autoit]

    Global $save_point_mesh = GetMesh($mdl_dir & "save.md2")
    Global $save_point_tex = GetTexture($mdl_dir & "save.jpg")

    [/autoit] [autoit][/autoit] [autoit]

    Global $Schalter_mesh1 = GetMesh($mdl_dir & "Schalter_t1.md2")
    Global $Schalter_tex1 = GetTexture($mdl_dir & "Schalter_t1.jpg")
    Global $Schalter_mesh2 = GetMesh($mdl_dir & "Schalter_t2.md2")
    Global $Schalter_tex2 = GetTexture($mdl_dir & "Schalter_t2.jpg")
    Global $Tuer_mesh = GetMesh($mdl_dir & "Tür.md2")
    Global $Tuer_tex = GetTexture($mdl_dir & "Tür.jpg")
    Global $Coin_Mesh = GetMesh($mdl_dir & "coin.md2")
    Global $Coin_Texture = GetTexture($mdl_dir & "coin.jpg")

    [/autoit] [autoit][/autoit] [autoit]

    Global $light_save = AddBillboardSceneNode( 0, 128, 128 )
    Global $light_tex = GetTexture($tex_dir & "\particlewhite.bmp")

    [/autoit] [autoit][/autoit] [autoit]

    #EndRegion

    [/autoit] [autoit][/autoit] [autoit]

    Global $herz_node[10]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To 9 Step 1
    $herz_node[$i] = AddMeshSceneNode($herz_mesh)
    SetMaterialTexture($herz_node[$i], 0, $herz_tex)
    SetScale($herz_node[$i],0.25,0.25,0.25)
    SetPosition($herz_node[$i],320 - $i * 12,80,300)
    AddChild($camera, $herz_node[$i])
    SetVisible($herz_node[$i],0)
    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $Box[1][2]
    Global $Box_Node[1]
    Global $Box_Coords[1][2]
    Global $map_blocks[256][11]

    [/autoit] [autoit][/autoit] [autoit]

    Global $map_objekte[256][11]

    [/autoit] [autoit][/autoit] [autoit]

    Global $moving_objects_pos[1][2], $moving_objects_pos_mm[1][4], $moving_objects_speed[1], $moving_objects_vec[1][2], $objekt[1]

    [/autoit] [autoit][/autoit] [autoit]

    Global $gegner_pos[1][2], $gegner_variablen[1][4], $gegner_speed[1], $gegner[1], $gegner_type[1], $gegner_rotation[1], $gegner_status[1]

    [/autoit] [autoit][/autoit] [autoit]

    Global $save_points[1][2], $save_point[1]

    [/autoit] [autoit][/autoit] [autoit]

    Global $Box[1][2]
    Global $Box_reset[1][2]
    Global $Box_fallen[1]
    Global $Box_node

    [/autoit] [autoit][/autoit] [autoit]

    Global $Tuer[1][2]
    Global $Schalter[1][2]
    Global $Tuer_Status[1]
    Global $Tuer_node[1]
    Global $Tuer_move[1]
    Global $Schalter_node[1]
    Global $Schalter_node2[1]

    [/autoit] [autoit][/autoit] [autoit]

    Global $Coin[1][4]
    Global $Coins_rotation
    Global $Coins_collected = 0

    [/autoit] [autoit][/autoit] [autoit]

    Global $BreakableBlock[1][3]

    [/autoit] [autoit][/autoit] [autoit]

    Global $snd_break = _SoundOpen($snd_dir & "break.wav" , "break")
    Global $snd_checkpoint = _SoundOpen($snd_dir & "Checkpoint.wav" , "checkpoint")
    Global $snd_kill = _SoundOpen($snd_dir & "Kill.wav" , "kill")
    Global $snd_lose = _SoundOpen($snd_dir & "Lose.wav" , "lose")
    Global $snd_runterfallen = _SoundOpen($snd_dir & "Runterfallen.wav" , "runterfallen")
    Global $snd_schalter = _SoundOpen($snd_dir & "Schalter.wav" , "schalter")
    Global $snd_springen = _SoundOpen($snd_dir & "Springen.wav" , "springen")

    [/autoit] [autoit][/autoit] [autoit]

    Load_Level(InputBox("Map","Welche map möchten sie spielen (map1)") & ".ini")

    [/autoit] [autoit][/autoit] [autoit]

    While IrrRun()

    [/autoit] [autoit][/autoit] [autoit]

    ;If _IsPressed(01) Then $ccd += 5
    ;If _IsPressed(02) Then $ccd -= 5

    [/autoit] [autoit][/autoit] [autoit]

    zeichne_particle()

    [/autoit] [autoit][/autoit] [autoit]

    SetText($textbox,"Player Box: " & Int($player_x / 40) & " - " & Int($player_y / 40) & " Münzen: " & $Coins_collected)

    [/autoit] [autoit][/autoit] [autoit]

    Objekte_bewegen()

    [/autoit] [autoit][/autoit] [autoit]

    Gegner_bewegen()

    [/autoit] [autoit][/autoit] [autoit]

    Spieler_bewegen()
    _Camera ()

    [/autoit] [autoit][/autoit] [autoit]

    Physik_objekte()

    [/autoit] [autoit][/autoit] [autoit]

    herzen()

    [/autoit] [autoit][/autoit] [autoit]

    Coins()

    [/autoit] [autoit][/autoit] [autoit]

    CheckNextLevel()

    [/autoit] [autoit][/autoit] [autoit]

    CheckPunkt()

    [/autoit] [autoit][/autoit] [autoit]

    Schalter_Tueren()

    [/autoit] [autoit][/autoit] [autoit]

    BeginScene(True,true, 255, 100, 100, 100 )

    [/autoit] [autoit][/autoit] [autoit]

    SceneDraw()

    [/autoit] [autoit][/autoit] [autoit]

    GuiDraw()

    [/autoit] [autoit][/autoit] [autoit]

    EndScene()

    [/autoit] [autoit][/autoit] [autoit]

    Wend

    [/autoit] [autoit][/autoit] [autoit]

    Func Objekte_bewegen()

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($moving_objects_speed) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    If _Punkte_Distance($moving_objects_pos[$i][0], $moving_objects_pos[$i][1], $moving_objects_pos_mm[$i][0],$moving_objects_pos_mm[$i][1]) < 0.9*Abs($moving_objects_speed[$i]) Or _
    _Punkte_Distance($moving_objects_pos[$i][0], $moving_objects_pos[$i][1], $moving_objects_pos_mm[$i][2],$moving_objects_pos_mm[$i][3]) < 0.9*Abs($moving_objects_speed[$i]) Then $moving_objects_speed[$i] = -$moving_objects_speed[$i]

    [/autoit] [autoit][/autoit] [autoit]

    $moving_objects_pos[$i][0] += $moving_objects_vec[$i][0] * $moving_objects_speed[$i]
    $moving_objects_pos[$i][1] += $moving_objects_vec[$i][1] * $moving_objects_speed[$i]

    [/autoit] [autoit][/autoit] [autoit]

    SetPosition($objekt[$i], $moving_objects_pos[$i][0], $moving_objects_pos[$i][1] + 20, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Gegner_bewegen()

    [/autoit] [autoit][/autoit] [autoit]

    Local $gegner_p[4][2]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($gegner_speed) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    Local $x = GetPosition($gegner[$i], "X")
    Local $y = GetPosition($gegner[$i], "Y")
    Local $z = GetPosition($gegner[$i], "Z")

    [/autoit] [autoit][/autoit] [autoit]

    If $gegner_status[$i] = "Alive" Then

    [/autoit] [autoit][/autoit] [autoit]

    Switch $gegner_type[$i]
    Case "Pilz"

    [/autoit] [autoit][/autoit] [autoit]

    $gegner_p[0][0] = $gegner_pos[$i][0] - 1
    $gegner_p[0][1] = $gegner_pos[$i][1]
    $gegner_p[1][0] = $gegner_pos[$i][0] - 1
    $gegner_p[1][1] = $gegner_pos[$i][1] + 39
    $gegner_p[2][0] = $gegner_pos[$i][0] + 39
    $gegner_p[2][1] = $gegner_pos[$i][1] + 39
    $gegner_p[3][0] = $gegner_pos[$i][0] + 39
    $gegner_p[3][1] = $gegner_pos[$i][1]

    [/autoit] [autoit][/autoit] [autoit]

    If $gegner_speed[$i] < 0 Then ; horizontale Gegner Bewegung

    [/autoit] [autoit][/autoit] [autoit]

    If Int(($gegner_p[0][0]+$gegner_speed[$i]) / 40) > 0 And _
    Int(($gegner_p[1][0]+$gegner_speed[$i]) / 40) > 0 And _
    Int(($gegner_p[1][1]-2) / 40) > 0 Then

    [/autoit] [autoit][/autoit] [autoit]

    If $map_blocks[Int(($gegner_p[0][0]+$gegner_speed[$i]) / 40)][Int($gegner_p[0][1] / 40)] = False And _
    $map_blocks[Int(($gegner_p[1][0]+$gegner_speed[$i]) / 40)][Int($gegner_p[1][1] / 40)] = False Then

    [/autoit] [autoit][/autoit] [autoit]

    $gegner_pos[$i][0] += $gegner_speed[$i]
    Else
    $gegner_speed[$i] = -$gegner_speed[$i]
    EndIf
    Else
    $gegner_speed[$i] = -$gegner_speed[$i]
    EndIf
    Else
    If Int(($gegner_p[2][0]+$gegner_speed[$i]) / 40) < 255 And _
    Int(($gegner_p[3][0]+$gegner_speed[$i]) / 40) < 255 And _
    Int(($gegner_p[1][1]-2) / 40) > 0 Then

    [/autoit] [autoit][/autoit] [autoit]

    If $map_blocks[Int(($gegner_p[2][0]+$gegner_speed[$i]) / 40)][Int($gegner_p[2][1] / 40)] = False And _
    $map_blocks[Int(($gegner_p[3][0]+$gegner_speed[$i]) / 40)][Int($gegner_p[3][1] / 40)] = False Then

    [/autoit] [autoit][/autoit] [autoit]

    $gegner_pos[$i][0] += $gegner_speed[$i]
    Else
    $gegner_speed[$i] = -$gegner_speed[$i]
    EndIf
    Else
    $gegner_speed[$i] = -$gegner_speed[$i]
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If Int(($gegner_p[1][1]-2) / 40) > 0 Then ; vertikale Gegner Bewegung
    If $map_blocks[Int(($gegner_p[0][0]+$gegner_speed[$i]) / 40)][Int(($gegner_p[0][1]-2) / 40)] = False And _
    $map_blocks[Int(($gegner_p[3][0]+$gegner_speed[$i]) / 40)][Int(($gegner_p[3][1]-2) / 40)] = False Then
    $gegner_pos[$i][1] -= 2
    EndIf
    ElseIf $gegner_p[1][1] < -100 Then
    $gegner_status[$i] = "Dead"
    SetVisible($gegner[$i],0)
    Else
    $gegner_pos[$i][1] -= 4
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    SetPosition($gegner[$i], $gegner_pos[$i][0], $gegner_pos[$i][1] + 20, 0)
    SetRotationByAxis($gegner[$i], "Y", $gegner_rotation[$i])

    [/autoit] [autoit][/autoit] [autoit]

    Case "Fly"

    $gegner_pos[$i][0] = Sin ($gegner_variablen[$i][2] * $pi_div_180) * 40 + $gegner_variablen[$i][0] ;errechnet x
    $gegner_pos[$i][1] = Cos ($gegner_variablen[$i][2] * $pi_div_180) * 40 + $gegner_variablen[$i][1] ;errechnet y
    SetPosition($gegner[$i], $gegner_pos[$i][0], $gegner_pos[$i][1] + 15, 0)
    $gegner_variablen[$i][2] += $gegner_speed[$i]
    Case "Shooter"
    ;ToolTip(Int(($gegner_variablen[$i][0]+$gegner_speed[$i]) / 40) & @LF & Int($gegner_variablen[$i][1] / 40))
    If $gegner_variablen[$i][2] = 0 Then
    $gegner_variablen[$i][2] = -1
    ;SetVisible($gegner[$i],1)
    If $player_x < $gegner_variablen[$i][0]+20 Then
    $gegner_speed[$i] = -Abs($gegner_speed[$i])
    Else
    $gegner_speed[$i] = Abs($gegner_speed[$i])
    EndIf
    $gegner_pos[$i][0] = $gegner_variablen[$i][0]
    $gegner_pos[$i][1] = $gegner_variablen[$i][1]
    ElseIf $gegner_variablen[$i][2] > 0 Then
    $gegner_variablen[$i][2] -= 1
    Else
    If Int(($gegner_pos[$i][0]+$gegner_speed[$i]) / 40) > 0 And Int(($gegner_pos[$i][0]+$gegner_speed[$i]) / 40) < 255 Then
    If $map_blocks[Int(($gegner_pos[$i][0]+$gegner_speed[$i]) / 40)][Int($gegner_pos[$i][1] / 40)] = False And _
    $map_blocks[Int(($gegner_pos[$i][0]+$gegner_speed[$i]+40) / 40)][Int($gegner_pos[$i][1] / 40)] = False Then
    $gegner_pos[$i][0] += $gegner_speed[$i]
    Else
    If Int(($gegner_pos[$i][0]+$gegner_speed[$i]) / 40) = $gegner_variablen[$i][0]/40 And Int(($gegner_pos[$i][1]) / 40) = $gegner_variablen[$i][1]/40 Or _
    Int(($gegner_pos[$i][0]+$gegner_speed[$i]+40) / 40) = $gegner_variablen[$i][0]/40 And Int(($gegner_pos[$i][1]) / 40) = $gegner_variablen[$i][1]/40 Then
    $gegner_pos[$i][0] += $gegner_speed[$i]
    Else
    $gegner_variablen[$i][2] = 100
    particle_add_effect($gegner_pos[$i][0],$gegner_pos[$i][1]+20, 10, 60, 0, 2)
    particle_add_effect($gegner_pos[$i][0],$gegner_pos[$i][1]+20, 6, 30, 0, 1)
    $gegner_pos[$i][0] = $gegner_variablen[$i][0]
    $gegner_pos[$i][1] = $gegner_variablen[$i][1]
    EndIf
    ;SetVisible($gegner[$i],0)
    EndIf
    Else
    $gegner_variablen[$i][2] = 100
    particle_add_effect($gegner_pos[$i][0],$gegner_pos[$i][1]+20, 10, 60, 0, 2)
    particle_add_effect($gegner_pos[$i][0],$gegner_pos[$i][1]+20, 6, 30, 0, 1)
    $gegner_pos[$i][0] = $gegner_variablen[$i][0]
    $gegner_pos[$i][1] = $gegner_variablen[$i][1]
    ;SetVisible($gegner[$i],0)
    EndIf
    EndIf
    SetPosition($gegner[$i],$gegner_pos[$i][0],$gegner_pos[$i][1]+10,0)
    SetRotationByAxis($gegner[$i], "Y", GetRotation($gegner[$i], "Y")+2)
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    If _kollision($player_x - 5,$player_y + 36,$player_x + 5,$player_y + 1, $gegner_pos[$i][0],$gegner_pos[$i][1],$gegner_pos[$i][0] + 40,$gegner_pos[$i][1] + 40) Then
    If $player_y - 30 > $gegner_pos[$i][1] Then
    If $gegner_type[$i] <> "shooter" Then
    $gegner_status[$i] = "Dead"

    [/autoit] [autoit][/autoit] [autoit]

    $jump_p = 100

    [/autoit] [autoit][/autoit] [autoit]

    particle_add_effect($gegner_pos[$i][0],$gegner_pos[$i][1]+10, 10, 60, 0, 2)
    particle_add_effect($gegner_pos[$i][0],$gegner_pos[$i][1]+10, 6, 30, 0, 1)
    SetVisible($gegner[$i],0)

    [/autoit] [autoit][/autoit] [autoit]

    _SoundPlay($snd_kill)
    Else
    $jump_p = 100

    [/autoit] [autoit][/autoit] [autoit]

    $gegner_variablen[$i][2] = 100
    particle_add_effect($gegner_pos[$i][0],$gegner_pos[$i][1]+20, 10, 60, 0, 2)
    particle_add_effect($gegner_pos[$i][0],$gegner_pos[$i][1]+20, 6, 30, 0, 1)
    $gegner_pos[$i][0] = $gegner_variablen[$i][0]
    $gegner_pos[$i][1] = $gegner_variablen[$i][1]

    [/autoit] [autoit][/autoit] [autoit]

    _SoundPlay($snd_kill)
    EndIf
    Else
    reset_game()
    EndIf
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Spieler_bewegen()

    [/autoit] [autoit][/autoit] [autoit]

    If $player_y > 5 Then

    [/autoit] [autoit][/autoit] [autoit]

    Local $bewegung_x, $bewegung_y, $bewegung_x_o, $bewegung_y_o, $l_o = False, $r_o = False,$u_o = False
    Local $player_points_x[4], $player_points_y[4]
    Local $map_points_x[4], $map_points_y[4]
    Local $objekte_seiten[4]

    [/autoit] [autoit][/autoit] [autoit]

    ;If _IsPressed(41) Then $player_x += 40
    ;If _IsPressed(57) Then $player_y += 40
    ;If _IsPressed(44) Then $player_x -= 40
    ;If _IsPressed(53) Then $player_y -= 40

    [/autoit] [autoit][/autoit] [autoit]

    $aKeyboardState = _WinAPI_GetKeyboardState()

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 30 To 40 Step 1 ; keyboard state bewegung

    [/autoit] [autoit][/autoit] [autoit]

    If BitAND($aKeyboardState[$i], 0xF0) = 128 Then

    [/autoit] [autoit][/autoit] [autoit]

    Switch $i

    [/autoit] [autoit][/autoit] [autoit]

    Case $k_left
    $bewegung_x += 4
    Case $k_right
    $bewegung_x -= 4
    Case $k_fore
    If $Player_can_jump = 1 Then
    _SoundPlay($snd_springen)
    $jump_p = 100
    EndIf
    Case $k_jump
    If $Player_can_jump = 1 Then
    _SoundPlay($snd_springen)
    $jump_p = 100
    EndIf
    EndSwitch
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Local $x_dist = 4, $y_dist = 5

    [/autoit] [autoit][/autoit] [autoit]

    $player_points_x[0] = $Player_x - 5 ; oberer linker Punkt
    $player_points_y[0] = $Player_y + 36; oberer linker Punkt
    $player_points_x[1] = $Player_x + 5 ; oberer rechter Punkt
    $player_points_y[1] = $Player_y + 36; oberer rechter Punkt
    $player_points_x[2] = $Player_x - 5; unterer linker Punkt
    $player_points_y[2] = $Player_y + 1; unterer linker Punkt
    $player_points_x[3] = $Player_x + 5; unterer rechter Punkt
    $player_points_y[3] = $Player_y + 1; unterer rechter Punkt

    [/autoit] [autoit][/autoit] [autoit]

    Local $kolli = True
    Local $kolli_pl = True
    Local $bewegung_ges[2] = [0,$bewegung_y_o + $jump_p / 20]

    [/autoit] [autoit][/autoit] [autoit]

    ;Kollision mit bewegten Objekten

    [/autoit] [autoit][/autoit] [autoit]

    For $movobj = 0 To UBound($moving_objects_speed) - 1 Step 1
    If _Kollision_Punkt($player_points_x[2], $player_points_y[2] + $bewegung_ges[1], _
    $moving_objects_pos[$movobj][0], $moving_objects_pos[$movobj][1] ,$moving_objects_pos[$movobj][0], $moving_objects_pos[$movobj][1] + 40) Or _
    _Kollision_Punkt($player_points_x[3], $player_points_y[3] + $bewegung_ges[1], _
    $moving_objects_pos[$movobj][0], $moving_objects_pos[$movobj][1] ,$moving_objects_pos[$movobj][0] + 40, $moving_objects_pos[$movobj][1] + 40) Then
    ;$kolli = False
    $kolli_pl = False
    $bewegung_x_o = $moving_objects_speed[$movobj] * $moving_objects_vec[$movobj][0]
    $bewegung_y_o = $moving_objects_speed[$movobj] * $moving_objects_vec[$movobj][1]
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $bewegung_ges[0] = $bewegung_x_o + $bewegung_x
    $bewegung_ges[1] = $bewegung_y_o + $jump_p / 20

    [/autoit] [autoit][/autoit] [autoit]

    Local $x_was

    [/autoit] [autoit][/autoit] [autoit]

    ;Horizontale Kollision

    [/autoit] [autoit][/autoit] [autoit]

    If Abs($bewegung_ges[0]) > 0 Then ; Wenn sich der Spieler überhaupt bewegt
    If ($player_points_x[0] + $bewegung_ges[0]) > 0 And $player_points_y[0] > 0 And ($player_points_x[0] + $bewegung_ges[0]) < 255*40 And $player_points_y[0] < 10*40 And _
    ($player_points_x[1] + $bewegung_ges[0]) > 0 And $player_points_y[1] > 0 And ($player_points_x[1] + $bewegung_ges[0]) < 255*40 And $player_points_y[1] < 10*40 And _
    ($player_points_x[2] + $bewegung_ges[0]) > 0 And $player_points_y[2] > 0 And ($player_points_x[2] + $bewegung_ges[0]) < 255*40 And $player_points_y[2] < 10*40 And _
    ($player_points_x[3] + $bewegung_ges[0]) > 0 And $player_points_y[3] > 0 And ($player_points_x[3] + $bewegung_ges[0]) < 255*40 And $player_points_y[3] < 10*40 Then

    [/autoit] [autoit][/autoit] [autoit]

    If $map_blocks[Int(($player_points_x[0] + $bewegung_ges[0]) / 40)][Int($player_points_y[0] / 40)] = False And _
    $map_blocks[Int(($player_points_x[1] + $bewegung_ges[0]) / 40)][Int($player_points_y[1] / 40)] = False And _
    $map_blocks[Int(($player_points_x[2] + $bewegung_ges[0]) / 40)][Int($player_points_y[2] / 40)] = False And _
    $map_blocks[Int(($player_points_x[3] + $bewegung_ges[0]) / 40)][Int($player_points_y[3] / 40)] = False Then

    $Player_x += $bewegung_ges[0]
    $x_was = $bewegung_ges[0]

    [/autoit] [autoit][/autoit] [autoit]

    If $bewegung_ges[0] > 0 Then
    $Player_look_dir = 0
    Else
    $Player_look_dir = 180
    EndIf
    If $Spieler_ani <> $EMAT_RUN Then
    $Spieler_ani = $EMAT_RUN
    SetMD2Animation( $Player_Node, $EMAT_RUN)
    EndIf
    EndIf
    EndIf
    Else
    If $Spieler_ani <> $EMAT_STAND Then
    $Spieler_ani = $EMAT_STAND
    SetMD2Animation( $Player_Node, $EMAT_STAND)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $Player_look_dir <> $Player_dir Then ; Die Richtung in der der Spieler guckt der Richtugn des Laufens anpassen
    If $Player_dir < $Player_look_dir Then
    $Player_dir += 10
    Else
    $Player_dir -= 10
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Vertikale Kollision

    [/autoit] [autoit][/autoit] [autoit]

    If ($player_points_x[0] + $x_was) > 0 And ($player_points_y[0] + $bewegung_ges[1]) > 0 And ($player_points_x[0] + $x_was) < 255*40 And ($player_points_y[0] + $bewegung_ges[1]) < 10*40 And _
    ($player_points_x[1] + $x_was) > 0 And ($player_points_y[1] + $bewegung_ges[1]) > 0 And ($player_points_x[1] + $x_was) < 255*40 And ($player_points_y[1] + $bewegung_ges[1]) < 10*40 And _
    ($player_points_x[2] + $x_was) > 0 And ($player_points_y[2] + $bewegung_ges[1]) > 0 And ($player_points_x[2] + $x_was) < 255*40 And ($player_points_y[2] + $bewegung_ges[1]) < 10*40 And _
    ($player_points_x[3] + $x_was) > 0 And ($player_points_y[3] + $bewegung_ges[1]) > 0 And ($player_points_x[3] + $x_was) < 255*40 And ($player_points_y[3] + $bewegung_ges[1]) < 10*40 Then

    [/autoit] [autoit][/autoit] [autoit]

    For $breakblock = 0 To UBound($BreakableBlock) - 1 Step 1 ; Prüft Kollision von unten mit einem Zerbrechlichem Objekt

    [/autoit] [autoit][/autoit] [autoit]

    If Not $BreakableBlock[$breakblock][3] Then

    [/autoit] [autoit][/autoit] [autoit]

    ;_Punkte_Distance($x1, $y1, $x2, $y2)
    If _Kollision_Punkt($player_points_x[0] + $x_was, $player_points_y[0] + $bewegung_ges[1]+5, $BreakableBlock[$breakblock][0]*40,$BreakableBlock[$breakblock][1]*40,$BreakableBlock[$breakblock][0]*40+40,$BreakableBlock[$breakblock][1]*40+40) Or _
    _Kollision_Punkt($player_points_x[1] + $x_was, $player_points_y[1] + $bewegung_ges[1]+5, $BreakableBlock[$breakblock][0]*40,$BreakableBlock[$breakblock][1]*40,$BreakableBlock[$breakblock][0]*40+40,$BreakableBlock[$breakblock][1]*40+40) Then

    [/autoit] [autoit][/autoit] [autoit]

    $map_blocks[$BreakableBlock[$breakblock][0]][$BreakableBlock[$breakblock][1]] = False
    Setvisible($BreakableBlock[$breakblock][2],0)

    [/autoit] [autoit][/autoit] [autoit]

    $BreakableBlock[$breakblock][3] = True
    _SoundPlay($snd_break)

    [/autoit] [autoit][/autoit] [autoit]

    $jump_p = -4

    [/autoit] [autoit][/autoit] [autoit]

    particle_add_effect($BreakableBlock[$breakblock][0]*40,$BreakableBlock[$breakblock][1]*40+20, 10, 60, 0, 2)
    particle_add_effect($BreakableBlock[$breakblock][0]*40,$BreakableBlock[$breakblock][1]*40+20, 6, 30, 0, 1)
    EndIf
    EndIf
    Next
    If $bewegung_ges[1] < 0 Then ; Wenn sich der Spieler nach oben bewegt
    If $map_blocks[Int(($player_points_x[2] + $x_was) / 40)][Int(($player_points_y[2] + $bewegung_ges[1]) / 40)] = False And _
    $map_blocks[Int(($player_points_x[3] + $x_was) / 40)][Int(($player_points_y[3] + $bewegung_ges[1]) / 40)] = False Then

    For $phybox = 0 To UBound($Box) - 1 Step 1

    If _Kollision_Punkt($player_points_x[2] + $x_was, $player_points_y[2] + $bewegung_ges[1], $Box[$phybox][0],$Box[$phybox][1]-20,$Box[$phybox][0]+40,$Box[$phybox][1]+20) Or _
    _Kollision_Punkt($player_points_x[3] + $x_was, $player_points_y[3] + $bewegung_ges[1], $Box[$phybox][0],$Box[$phybox][1]-20,$Box[$phybox][0]+40,$Box[$phybox][1]+20) Then
    $kolli = False
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If $kolli And $kolli_pl Then
    $jump_p = limit($jump_p-4,-100,100)
    $Player_y += $bewegung_ges[1]
    $Player_can_jump = 0
    ElseIf $kolli_pl = False Then
    $Player_y += $bewegung_y_o
    $Player_can_jump = 1
    $jump_p = -4
    Else
    $Player_can_jump = 1
    $jump_p = -4
    EndIf
    ElseIf $bewegung_ges[1] < 0 Then
    $Player_can_jump = 1
    $jump_p = -4
    ;If $map_blocks[Int(($player_points_x[2] + $x_was) / 40)][Int(($player_points_y[2] + $bewegung_ges[1]) / 40)] = False And _
    ;$map_blocks[Int(($player_points_x[3] + $x_was) / 40)][Int(($player_points_y[3] + $bewegung_ges[1]) / 40)] = False Then $Player_y -= 10
    EndIf
    Else ; Wenn sich der Spieler nach unten bewegt
    If $map_blocks[Int(($player_points_x[0] + $x_was) / 40)][Int(($player_points_y[0] + $bewegung_ges[1]) / 40)] = False And _
    $map_blocks[Int(($player_points_x[1] + $x_was) / 40)][Int(($player_points_y[1] + $bewegung_ges[1]) / 40)] = False Then
    If $kolli_pl Then
    $jump_p = limit($jump_p-4,-100,100)
    $Player_y += $bewegung_ges[1]
    $Player_can_jump = 0
    Else
    $Player_y += $bewegung_y_o
    $Player_can_jump = 1
    $jump_p = -4
    EndIf
    Else
    $jump_p = limit($jump_p-4,-100,-4)
    $Player_can_jump = 0
    EndIf
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else
    $Player_y += $jump_p / 20
    If $Player_y < -100 Then
    _SoundPlay($snd_runterfallen)
    reset_game()
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return 1

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Physik_objekte()

    [/autoit] [autoit][/autoit] [autoit]

    Local $not = False

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($Box_fallen) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    If $Box[$i][1] - 20 > 0 Then

    [/autoit] [autoit][/autoit] [autoit]

    If $Box[$i][0] < $player_x And $Box[$i][0] + 40 > $player_x Then
    If $Box[$i][1] + 20 > $player_y + $jump_p / 20 And $Box[$i][1] - 20 < $player_y + $jump_p / 20 Then
    $u = True
    $jump_p = -4
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If _kollision($player_x - 5, $player_y + 1, $player_x + 5, $player_y +36, $Box[$i][0], $Box[$i][1] - 20,$Box[$i][0] + 40,$Box[$i][1] + 20) Then

    [/autoit] [autoit][/autoit] [autoit]

    If $Box[$i][0] + 20 < $player_x Then
    If $map_blocks[Int($Box[$i][0] / 40)][Int(($Box[$i][1] - 20 + 5) / 40)] = False And $map_blocks[Int($Box[$i][0] / 40)][Int(($Box[$i][1] + 20 - 5) / 40)] = False Then
    For $e = 0 To UBound($Box_fallen) - 1 Step 1
    If $i <> $e Then
    If $Box[$i][0] > $Box[$e][0] And $Box[$i][0] < $Box[$e][0] + 40 Then
    If $Box[$i][1] + 5 > $Box[$e][1] And $Box[$i][1] + 5 < $Box[$e][1] + 40 Then
    If $Box[$i][1] + 35 > $Box[$e][1] And $Box[$i][1] + 35 < $Box[$e][1] + 40 Then
    $not = True
    EndIf
    EndIf
    EndIf
    EndIf
    Next
    If $not = False Then $Box[$i][0] -= 4
    EndIf
    Else
    If $map_blocks[Int(($Box[$i][0] + 40) / 40)][Int(($Box[$i][1] - 20 + 5) / 40)] = False And $map_blocks[Int(($Box[$i][0] + 40) / 40)][Int(($Box[$i][1] + 20 - 5) / 40)] = False Then
    For $e = 0 To UBound($Box_fallen) - 1 Step 1
    If $i <> $e Then
    If $Box[$i][0] + 40 > $Box[$e][0] And $Box[$i][0] + 40 < $Box[$e][0] + 40 Then
    If $Box[$i][1] + 5 > $Box[$e][1] And $Box[$i][1] + 5 < $Box[$e][1] + 40 Then
    If $Box[$i][1] + 35 > $Box[$e][1] And $Box[$i][1] + 35 < $Box[$e][1] + 40 Then
    $not = True
    EndIf
    EndIf
    EndIf
    EndIf
    Next
    If $not = False Then $Box[$i][0] += 4
    EndIf
    EndIf
    SetPosition($Box_node[$i], $Box[$i][0], $Box[$i][1], 0)
    ;SetPosition($light_save, $Box[$i][0], $Box[$i][1], 0)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $map_blocks[Int(($Box[$i][0] + 1) / 40)][Int(($Box[$i][1] - 20 + $Box_fallen[$i] / 5) / 40)] = True Or $map_blocks[Int(($Box[$i][0] + 39) / 40)][Int(($Box[$i][1] - 20 + $Box_fallen[$i] / 5) / 40)] = True Then
    ;ToolTip("unten")
    $Box_fallen[$i] = -1
    Else
    $not = False
    For $e = 0 To UBound($Box_fallen) - 1 Step 1
    If $e <> $i Then
    If $Box[$i][1] > $Box[$e][1] And $Box[$i][1] < $Box[$e][1] + 40 Then
    If $Box[$i][0] + 5 > $Box[$e][0] And $Box[$i][0] + 5 < $Box[$e][0] + 40 Then
    $not = True
    ElseIf $Box[$i][0] + 35 > $Box[$e][0] And $Box[$i][0] + 35 < $Box[$e][0] + 40 Then
    $not = True
    EndIf
    EndIf
    EndIf
    Next
    If $not = False Then
    $Box_fallen[$i] = limit($Box_fallen[$i] - 1,-25,0)
    $Box[$i][1] += $Box_fallen[$i] / 5
    SetPosition($Box_node[$i], $Box[$i][0], $Box[$i][1], 0)
    ;SetPosition($light_save, $Box[$i][0], $Box[$i][1], 0)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else
    $Box[$i][1] += $Box_fallen[$i] / 5
    SetPosition($Box_node[$i], $Box[$i][0], $Box[$i][1], 0)

    [/autoit] [autoit][/autoit] [autoit]

    If $Box[$i][1] - 20 < -100 Then
    SetVisible($Box_node[$i],0)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func herzen()

    [/autoit] [autoit][/autoit] [autoit]

    If $Leben[0] <> $Leben[1] Then

    [/autoit] [autoit][/autoit] [autoit]

    $Leben[1] = $Leben[0]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To $Leben[0] Step 1
    SetVisible($herz_node[$i],1)
    Next
    For $i = $Leben[0] To $leben_max - 1 Step 1
    SetVisible($herz_node[$i],0)
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Coins()

    [/autoit] [autoit][/autoit] [autoit]

    $Coins_rotation += 2

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($Coin) - 1 Step 1
    If Abs($player_x/40-$Coin[$i][1]) < 13 Then
    If $Coin[$i][3] = 1 Then

    [/autoit] [autoit][/autoit] [autoit]

    SetRotationbyAxis($Coin[$i][0],"Y",$Coins_rotation)

    [/autoit] [autoit][/autoit] [autoit]

    If _Punkte_Distance($player_x, $player_y, $Coin[$i][1]*40+20, $Coin[$i][2]*40) < 40 Then

    [/autoit] [autoit][/autoit] [autoit]

    $Coin[$i][3] = 2

    [/autoit] [autoit][/autoit] [autoit]

    _SoundPlay($snd_kill)

    [/autoit] [autoit][/autoit] [autoit]

    $Coins_collected += 1
    If $Coins_collected = 50 Then
    $Coins_collected = 0
    $Leben[0] += 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    EndIf
    If $Coin[$i][3] = 2 And GetPosition($Coin[$i][0], "Y") < 1000 Then
    SetPosition($Coin[$i][0], $Coin[$i][1]*40, GetPosition($Coin[$i][0], "Y") + 10,0)
    ElseIf $Coin[$i][3] <> 2 And $Coin[$i][3] <> 1 Then
    $Coin[$i][3] = 3
    SetVisible($Coin[$i][0],0)
    EndIf
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func CheckNextLevel()

    [/autoit] [autoit][/autoit] [autoit]

    If _kollision($player_x - 5, $player_y + 1, $player_x + 5, $player_y +36, $ziel_punkt[0],$ziel_punkt[1],$ziel_punkt[0] + 40,$ziel_punkt[1] + 40) Then

    [/autoit] [autoit][/autoit] [autoit]

    beenden()
    ;ClearMap()
    ;Load_Level($ziel_punkt[2])

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func CheckPunkt()

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($save_point) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    If _kollision($player_x - 5, $player_y + 1, $player_x + 5, $player_y +36, $save_points[$i][0],$save_points[$i][1],$save_points[$i][0] + 40,$save_points[$i][1] + 40) Then
    If $spawn_punkt[0] <> $save_points[$i][0] + 20 Or $spawn_punkt[1] <> $save_points[$i][1] Then
    $spawn_punkt[0] = $save_points[$i][0] + 20
    $spawn_punkt[1] = $save_points[$i][1]
    SetPosition($light_save,$spawn_punkt[0] - 20,$spawn_punkt[1] + 20,0)

    [/autoit] [autoit][/autoit] [autoit]

    _SoundPlay($snd_checkpoint)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func ClearMap()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Schalter_Tueren()

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($Tuer_Status) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    If _kollision($player_x - 5, $player_y + 1, $player_x + 5, $player_y +36, $Schalter[$i][0],$Schalter[$i][1],$Schalter[$i][0] + 40,$Schalter[$i][1] + 40) Then
    If $Tuer_Status[$i] = False Then
    SetMD2Animation($Schalter_Node[$i], $EMAT_STAND)
    $Tuer_Status[$i] = True
    _SoundPlay($snd_schalter)
    EndIf
    EndIf
    If $Tuer_Status[$i] = True Then
    If $Tuer_move[$i] < 40 Then
    $Tuer_move[$i] += 1
    SetPosition($Tuer_Node[$i], $Tuer[$i][0], $Tuer[$i][1] - $Tuer_move[$i], 0)
    Else
    $map_blocks[$Tuer[$i][0] / 40][$Tuer[$i][1] / 40] = False
    SetVisible($Tuer_Node[$i], 0)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Kollision($x1,$y1,$x2,$y2, $x3,$y3,$x4,$y4)

    [/autoit] [autoit][/autoit] [autoit]

    Local $points_ob1[4][2], $points_ob2[4][2], $kollision = False

    [/autoit] [autoit][/autoit] [autoit]

    #Region Alle Punkte des Objekts

    [/autoit] [autoit][/autoit] [autoit]

    $points_ob1[0][0] = $x1
    $points_ob1[0][1] = $y1
    $points_ob1[1][0] = $x2
    $points_ob1[1][1] = $y1
    $points_ob1[2][0] = $x2
    $points_ob1[2][1] = $y2
    $points_ob1[3][0] = $x1
    $points_ob1[3][1] = $y2

    [/autoit] [autoit][/autoit] [autoit]

    $points_ob2[0][0] = $x3
    $points_ob2[0][1] = $y3
    $points_ob2[1][0] = $x4
    $points_ob2[1][1] = $y3
    $points_ob2[2][0] = $x4
    $points_ob2[2][1] = $y4
    $points_ob2[3][0] = $x3
    $points_ob2[3][1] = $y4

    [/autoit] [autoit][/autoit] [autoit]

    #EndRegion

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To 3 Step 1 ; geht alle 4 punkte durch

    [/autoit] [autoit][/autoit] [autoit]

    If $points_ob1[$i][0] > $points_ob2[0][0] And $points_ob1[$i][0] < $points_ob2[2][0] Then
    If $points_ob1[$i][1] > $points_ob2[0][1] And $points_ob1[$i][1] < $points_ob2[2][1] Then
    $kollision = True
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    Return $kollision

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Kollision_Punkt($xi,$yi, $x1,$y1,$x2,$y2)

    [/autoit] [autoit][/autoit] [autoit]

    If $x1 < $xi And $xi < $x2 Then
    If $y1 < $yi And $yi < $y2 Then
    Return True
    Else
    Return False
    EndIf
    Else
    Return False
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Camera ()

    [/autoit] [autoit][/autoit] [autoit]

    If $player_x > $camera_x + 50 Then
    $camera_x += limit($player_x - $camera_x - 50,-10,10)
    ElseIf $player_x < $camera_x - 50 Then
    $camera_x -= limit($camera_x - 50 - $player_x,-10,10)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $player_y > $camera_y + 50 Then
    $camera_y += limit($player_y - $camera_y - 50,-10,10)
    ElseIf $player_y < $camera_y - 50 Then
    $camera_y -= limit($camera_y - 50 - $player_y,-10,10)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    SetPosition($Light ,$Player_x, 500, -200)
    SetPosition($Player_Node, $Player_x - 20, $Player_y + 24, $Player_z)
    SetRotationByAxis($Player_Node, "Y", $Player_dir)
    SetPosition($Camera, $camera_x, $camera_y + $camera_y_hight + $ccd, $camera_z)
    SetTarget($Camera, $camera_x, $camera_y , $Player_z)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Load_Level($map)

    [/autoit] [autoit][/autoit] [autoit]

    $Leben[0] = 5

    [/autoit] [autoit][/autoit] [autoit]

    Local $ini_map = @scriptdir & "\" & $map

    [/autoit] [autoit][/autoit] [autoit]

    Local $Level_Ini = IniReadSection($ini_map,"Start-Ziel")

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($Level_Ini) Then

    [/autoit] [autoit][/autoit] [autoit]

    If $Level_Ini[0][0] = 5 Then

    [/autoit] [autoit][/autoit] [autoit]

    $spawn_punkt[0] = Number($Level_Ini[1][1])*40+20
    $spawn_punkt[1] = Number($Level_Ini[2][1])*40
    $ziel_punkt[0] = Number($Level_Ini[3][1])*40+20
    $ziel_punkt[1] = Number($Level_Ini[4][1])*40+40
    $ziel_punkt[2] = $Level_Ini[5][1]

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $Player_x = $spawn_punkt[0]
    $Player_y = $spawn_punkt[1]
    $Player_z = 0
    $Player_dir = 90
    $Player_look_dir = 90

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $Level_Ini = IniReadSection($ini_map,"Rasen")

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($level_ini) Then
    For $i = 0 To ($Level_Ini[0][0] / 3) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $Box_Node[$i + 1]
    ReDim $Box_Coords[$i + 1][2]

    [/autoit] [autoit][/autoit] [autoit]

    $Box_Coords[$i][0] = $Level_Ini[$i * 3 + 1][1]
    $Box_Coords[$i][1] = $Level_Ini[$i * 3 + 2][1]

    [/autoit] [autoit][/autoit] [autoit]

    $map_blocks[$Box_Coords[$i][0]][$Box_Coords[$i][1]] = True

    [/autoit] [autoit][/autoit] [autoit]

    $Box_Node[$i] = AddMeshSceneNode($Box_Mesh)

    [/autoit] [autoit][/autoit] [autoit]

    SetMaterialTexture($Box_Node[$i], 0, $Grass_Texture)

    [/autoit] [autoit][/autoit] [autoit]

    SetPosition($Box_Node[$i], $Box_Coords[$i][0] * 40, $Box_Coords[$i][1] * 40 + 20, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $Level_Ini = IniReadSection($ini_map,"Stein")

    [/autoit] [autoit][/autoit] [autoit]

    If Not @error Then
    For $i = 0 To ($Level_Ini[0][0] / 3) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $Box_Node[$i + 1]
    ReDim $Box_Coords[$i + 1][2]

    [/autoit] [autoit][/autoit] [autoit]

    $Box_Coords[$i][0] = $Level_Ini[$i * 3 + 1][1]
    $Box_Coords[$i][1] = $Level_Ini[$i * 3 + 2][1]

    [/autoit] [autoit][/autoit] [autoit]

    $map_blocks[$Box_Coords[$i][0]][$Box_Coords[$i][1]] = True

    [/autoit] [autoit][/autoit] [autoit]

    $Box_Node[$i] = AddMeshSceneNode($Box_Mesh)

    [/autoit] [autoit][/autoit] [autoit]

    SetMaterialTexture($Box_Node[$i], 0, $Stein_Texture)

    [/autoit] [autoit][/autoit] [autoit]

    SetPosition($Box_Node[$i], $Box_Coords[$i][0] * 40, $Box_Coords[$i][1] * 40 + 20, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $Level_Ini = IniReadSection($ini_map,"Block")

    [/autoit] [autoit][/autoit] [autoit]

    If Not @error Then
    For $i = 0 To ($Level_Ini[0][0] / 3) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $Box_Node[$i + 1]
    ReDim $Box_Coords[$i + 1][2]

    [/autoit] [autoit][/autoit] [autoit]

    $Box_Coords[$i][0] = $Level_Ini[$i * 3 + 1][1]
    $Box_Coords[$i][1] = $Level_Ini[$i * 3 + 2][1]

    [/autoit] [autoit][/autoit] [autoit]

    $map_blocks[$Box_Coords[$i][0]][$Box_Coords[$i][1]] = True

    [/autoit] [autoit][/autoit] [autoit]

    $Box_Node[$i] = AddMeshSceneNode($Box_Mesh)

    [/autoit] [autoit][/autoit] [autoit]

    SetMaterialTexture($Box_Node[$i], 0, $Block_Texture)

    [/autoit] [autoit][/autoit] [autoit]

    SetPosition($Box_Node[$i], $Box_Coords[$i][0] * 40, $Box_Coords[$i][1] * 40 + 20, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $Level_Ini = IniReadSection($ini_map,"Moving Objects")

    [/autoit] [autoit][/autoit] [autoit]

    Local $vec[2]

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($Level_Ini) Then

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To ($Level_Ini[0][0] / 5) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $moving_objects_pos[$i + 1][2]
    ReDim $moving_objects_pos_mm[$i + 1][4]
    ReDim $moving_objects_speed[$i + 1]
    ReDim $moving_objects_vec[$i + 1][2]
    ReDim $objekt[$i + 1]

    [/autoit] [autoit][/autoit] [autoit]

    $objekt[$i] = AddMeshSceneNode($Plattform_Mesh)
    SetMaterialTexture($objekt[$i], 0, $Plattform_Texture)

    [/autoit] [autoit][/autoit] [autoit]

    $moving_objects_pos_mm[$i][0] = $Level_Ini[$i * 5 + 1][1] * 40 ; start x-punkt
    $moving_objects_pos_mm[$i][1] = $Level_Ini[$i * 5 + 2][1] * 40 ; start y-punkt
    $moving_objects_pos_mm[$i][2] = $Level_Ini[$i * 5 + 3][1] * 40 ; end x-punkt
    $moving_objects_pos_mm[$i][3] = $Level_Ini[$i * 5 + 4][1] * 40 ; end y-punkt

    [/autoit] [autoit][/autoit] [autoit]

    $vec = _punkte_zu_vektor($moving_objects_pos_mm[$i][0],$moving_objects_pos_mm[$i][1],$moving_objects_pos_mm[$i][2],$moving_objects_pos_mm[$i][3])

    [/autoit] [autoit][/autoit] [autoit]

    $moving_objects_vec[$i][0] = $vec[0]
    $moving_objects_vec[$i][1] = $vec[1]

    [/autoit] [autoit][/autoit] [autoit]

    $moving_objects_speed[$i] = $Level_Ini[$i * 5 + 5][1] ; geschwindigkeit

    [/autoit] [autoit][/autoit] [autoit]

    $moving_objects_pos[$i][0] = $Level_Ini[$i * 5 + 1][1] * 40 ; startpunkt der plattform x-punkt
    $moving_objects_pos[$i][1] = $Level_Ini[$i * 5 + 2][1] * 40 ; startpunkt der plattform y-punkt

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $Level_Ini = IniReadSection($ini_map,"Gegner")

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($Level_Ini) Then

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To ($Level_Ini[0][0] / 6) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $gegner_pos[$i + 1][2]
    ReDim $gegner_variablen[$i + 1][4]
    ReDim $gegner_speed[$i + 1]
    ReDim $gegner[$i + 1]
    ReDim $gegner_type[$i + 1]
    ReDim $gegner_rotation[$i + 1]
    ReDim $gegner_status[$i + 1]

    [/autoit] [autoit][/autoit] [autoit]

    $gegner_status[$i] = "Alive"

    [/autoit] [autoit][/autoit] [autoit]

    $gegner_type[$i] = $Level_Ini[$i * 6 + 6][1] ; gegner type

    [/autoit] [autoit][/autoit] [autoit]

    $gegner_variablen[$i][0] = $Level_Ini[$i * 6 + 1][1] * 40 ; start x-punkt
    $gegner_variablen[$i][1] = $Level_Ini[$i * 6 + 2][1] * 40 ; start y-punkt
    $gegner_variablen[$i][2] = $Level_Ini[$i * 6 + 3][1] * 40 ; end x-punkt
    $gegner_variablen[$i][3] = $Level_Ini[$i * 6 + 4][1] * 40 ; end y-punkt

    [/autoit] [autoit][/autoit] [autoit]

    $gegner_speed[$i] = $Level_Ini[$i * 6 + 5][1] ; geschwindigkeit

    [/autoit] [autoit][/autoit] [autoit]

    $gegner_pos[$i][0] = $gegner_variablen[$i][0] ; startpunkt der plattform x-punkt
    $gegner_pos[$i][1] = $gegner_variablen[$i][1] ; startpunkt der plattform y-punkt

    [/autoit] [autoit][/autoit] [autoit]

    Switch $gegner_type[$i]
    Case "Pilz"
    $gegner[$i] = AddAnimatedMeshSceneNode($Gegner_Mesh)
    SetMaterialTexture($gegner[$i], 0, $Gegner_Tex)
    SetMD2Animation($gegner[$i], $EMAT_RUN)
    SetAnimationSpeed($gegner[$i], 10 )
    SetLoopMode($gegner[$i], 1)
    SetScale($gegner[$i], 0.5, 0.5, 0.5)
    Case "Fly"
    $gegner[$i] = AddAnimatedMeshSceneNode($Gegner_Mesh2)
    SetMaterialTexture($gegner[$i], 0, $Gegner_Tex2)
    Case "Shooter"
    $gegner[$i] = AddAnimatedMeshSceneNode($Gegner_Mesh4)
    SetMaterialTexture($gegner[$i], 0, $Gegner_Tex4)
    SetPosition($gegner[$i],$gegner_pos[$i][0],$gegner_pos[$i][1]+10,0)
    ;SetVisible($gegner_variablen[$i][3],0)
    $gegner_variablen[$i][2] = 0
    $gegner_variablen[$i][3] = AddAnimatedMeshSceneNode($Gegner_Mesh3)
    SetPosition($gegner_variablen[$i][3],$gegner_pos[$i][0],$gegner_pos[$i][1]+20,0)
    SetMaterialTexture($gegner_variablen[$i][3], 0, $Gegner_Tex3)
    $map_blocks[$gegner_variablen[$i][0]/40][$gegner_variablen[$i][1]/40] = True
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $Level_Ini = IniReadSection($ini_map,"Save Points")

    [/autoit] [autoit][/autoit] [autoit]

    SetMaterialTexture($light_save, 0, $light_tex)
    SetMaterialType($light_save, $EMT_TRANSPARENT_ADD_COLOR)
    SetMaterialFlag($light_save, $EMF_LIGHTING, 0)
    SetPosition($light_save,$spawn_punkt[0] - 20,$spawn_punkt[1] + 20,0)

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($Level_Ini) Then

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To ($Level_Ini[0][0] / 2) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $save_points[$i + 1][2]
    ReDim $save_point[$i + 1]

    [/autoit] [autoit][/autoit] [autoit]

    $save_points[$i][0] = $Level_Ini[$i * 2 + 1][1] * 40
    $save_points[$i][1] = $Level_Ini[$i * 2 + 2][1] * 40

    [/autoit] [autoit][/autoit] [autoit]

    $save_point[$i] = AddMeshSceneNode($save_point_mesh)
    SetMaterialTexture($save_point[$i], 0, $save_point_tex)
    SetPosition($save_point[$i] , $Level_Ini[$i * 2 + 1][1] * 40, $Level_Ini[$i * 2 + 2][1] * 40,20)

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $Level_Ini = IniReadSection($ini_map,"Physik Box")

    [/autoit] [autoit][/autoit] [autoit]

    Local $physik_box_tex = GetTexture($mdl_dir & "physik box.jpg")

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($Level_Ini) Then

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To ($Level_Ini[0][0] / 2) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $Box[$i + 1][2]
    ReDim $Box_Node[$i + 1]
    ReDim $Box_reset[$i + 1][2]
    ReDim $Box_fallen[$i + 1]

    [/autoit] [autoit][/autoit] [autoit]

    $Box[$i][0] = $Level_Ini[$i * 2 + 1][1] * 40
    $Box[$i][1] = $Level_Ini[$i * 2 + 2][1] * 40 + 20
    $Box_reset[$i][0] = $Level_Ini[$i * 2 + 1][1] * 40
    $Box_reset[$i][1] = $Level_Ini[$i * 2 + 2][1] * 40 + 20

    [/autoit] [autoit][/autoit] [autoit]

    $Box_node[$i] = AddMeshSceneNode($Box_Mesh)
    SetMaterialTexture($Box_node[$i], 0, $physik_box_tex)
    SetPosition($Box_node[$i] , $Level_Ini[$i * 2 + 1][1] * 40, $Level_Ini[$i * 2 + 2][1] * 40 + 20,0)

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $Level_Ini = IniReadSection($ini_map,"Tueren Schalter")

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($Level_Ini) Then

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To ($Level_Ini[0][0] / 4) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $Tuer[$i + 1][2]
    ReDim $Schalter[$i + 1][2]
    ReDim $Tuer_Status[$i + 1]
    ReDim $Tuer_node[$i + 1]
    ReDim $Tuer_move[$i + 1]
    ReDim $Schalter_node[$i + 1]
    ReDim $Schalter_node2[$i + 1]

    [/autoit] [autoit][/autoit] [autoit]

    $Tuer[$i][0] = $Level_Ini[$i * 4 + 1][1] * 40
    $Tuer[$i][1] = $Level_Ini[$i * 4 + 2][1] * 40
    $Schalter[$i][0] = $Level_Ini[$i * 4 + 3][1] * 40
    $Schalter[$i][1] = $Level_Ini[$i * 4 + 4][1] * 40

    [/autoit] [autoit][/autoit] [autoit]

    $Tuer_Status[$i] = False

    [/autoit] [autoit][/autoit] [autoit]

    $map_blocks[$Tuer[$i][0] / 40][$Tuer[$i][1] / 40] = True

    [/autoit] [autoit][/autoit] [autoit]

    $Tuer_node[$i] = AddMeshSceneNode($Tuer_mesh)
    SetPosition($Tuer_node[$i] , $Tuer[$i][0], $Tuer[$i][1] + 1,0)
    SetMaterialTexture($Tuer_node[$i], 0, $Tuer_tex)

    [/autoit] [autoit][/autoit] [autoit]

    $Schalter_node[$i] = AddAnimatedMeshSceneNode($Schalter_mesh1)
    SetLoopMode($Schalter_node[$i], 0)
    SetMaterialTexture($Schalter_node[$i], 0, $Schalter_tex1)
    SetPosition($Schalter_node[$i] , $Schalter[$i][0], $Schalter[$i][1] + 0,0)

    [/autoit] [autoit][/autoit] [autoit]

    $Schalter_node2[$i] = AddAnimatedMeshSceneNode($Schalter_mesh2)
    SetLoopMode($Schalter_node2[$i], 0)
    SetMaterialTexture($Schalter_node2[$i], 0, $Schalter_tex2)
    SetMaterialFlag($Schalter_node2[$i], $EMF_LIGHTING, 0)
    ;SetMaterialType($Schalter_node2[$i], $EMT_TRANSPARENT_ADD_COLOR)
    SetPosition($Schalter_node2[$i] , $Schalter[$i][0], $Schalter[$i][1] + 0,0)

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $Level_Ini = IniReadSection($ini_map,"BreakableBlock")

    [/autoit] [autoit][/autoit] [autoit]

    If Not @error Then
    For $i = 0 To ($Level_Ini[0][0] / 3) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $Box_Coords[$i + 1][2]
    ReDim $BreakableBlock[$i + 1][4]

    [/autoit] [autoit][/autoit] [autoit]

    $Box_Coords[$i][0] = $Level_Ini[$i * 3 + 1][1]
    $Box_Coords[$i][1] = $Level_Ini[$i * 3 + 2][1]

    [/autoit] [autoit][/autoit] [autoit]

    $BreakableBlock[$i][0] = $Level_Ini[$i * 3 + 1][1]
    $BreakableBlock[$i][1] = $Level_Ini[$i * 3 + 2][1]

    [/autoit] [autoit][/autoit] [autoit]

    $map_blocks[$Box_Coords[$i][0]][$Box_Coords[$i][1]] = True

    [/autoit] [autoit][/autoit] [autoit]

    $BreakableBlock[$i][2] = AddMeshSceneNode($Box_Mesh)

    [/autoit] [autoit][/autoit] [autoit]

    SetMaterialTexture($BreakableBlock[$i][2], 0, $BreakableBlock_Texture)
    SetPosition($BreakableBlock[$i][2], $Box_Coords[$i][0] * 40, $Box_Coords[$i][1] * 40 + 20, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $Level_Ini = IniReadSection($ini_map,"Coin")

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($level_ini) Then

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To ($Level_Ini[0][0] / 2) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $Coin[$i + 1][4]

    [/autoit] [autoit][/autoit] [autoit]

    $Coin[$i][1] = $Level_Ini[$i * 2 + 1][1]
    $Coin[$i][2] = $Level_Ini[$i * 2 + 2][1]
    $Coin[$i][3] = 1

    [/autoit] [autoit][/autoit] [autoit]

    $map_objekte[$Coin[$i][1]][$Coin[$i][2]] = $CCoin

    [/autoit] [autoit][/autoit] [autoit]

    $Coin[$i][0] = AddMeshSceneNode($Coin_Mesh)

    [/autoit] [autoit][/autoit] [autoit]

    SetMaterialTexture($Coin[$i][0], 0, $Coin_Texture)
    SetPosition($Coin[$i][0], $Coin[$i][1] * 40, $Coin[$i][2] * 40 + 20, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func reset_game()

    [/autoit] [autoit][/autoit] [autoit]

    $Leben[0] -= 1
    If $Leben[0] = -1 Then beenden()

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($moving_objects_speed) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    $moving_objects_pos[$i][0] = $moving_objects_pos_mm[$i][0]
    $moving_objects_pos[$i][1] = $moving_objects_pos_mm[$i][1]

    [/autoit] [autoit][/autoit] [autoit]

    $moving_objects_speed[$i] = Abs($moving_objects_speed[$i])

    [/autoit] [autoit][/autoit] [autoit]

    Next
    For $i = 0 To UBound($gegner_speed) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    $gegner_pos[$i][0] = $gegner_variablen[$i][0]
    $gegner_pos[$i][1] = $gegner_variablen[$i][1]
    SetVisible($gegner[$i],1)
    $gegner_status[$i] = "Alive"
    Next
    For $i = 0 To UBound($Box_fallen) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    $Box[$i][0] = $Box_reset[$i][0]
    $Box[$i][1] = $Box_reset[$i][1]

    [/autoit] [autoit][/autoit] [autoit]

    SetVisible($Box_node[$i],1)
    SetPosition($Box_node[$i], $Box[$i][0], $Box[$i][1], 0)

    [/autoit] [autoit][/autoit] [autoit]

    Next
    For $i = 0 To UBound($Tuer_move) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    $Tuer_Status[$i] = False
    $Tuer_move[$i] = 0
    SetVisible($Tuer_Node[$i],1)
    SetPosition($Tuer_Node[$i], $Tuer[$i][0], $Tuer[$i][1] - $Tuer_move[$i], 0)
    $map_blocks[$Tuer[$i][0] / 40][$Tuer[$i][1] / 40] = True

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    $Player_x = $spawn_punkt[0]
    $Player_y = $spawn_punkt[1]
    $Player_z = 0
    $Player_dir = 90
    $Player_look_dir = 90

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func aufloesung()

    [/autoit] [autoit][/autoit] [autoit]

    If $width = 640 Then
    $width = @DesktopWidth
    $height = @DesktopHeight

    [/autoit] [autoit][/autoit] [autoit]

    GUIDelete($hwnd)

    [/autoit] [autoit][/autoit] [autoit]

    CreateDevice($EDT_DIRECT3D9, $width, $height, 32, 1, 1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    $hwnd = GUICreate($title, $width, $height)
    GUISetOnEvent($GUI_EVENT_CLOSE, "beenden")

    [/autoit] [autoit][/autoit] [autoit]

    CreateDeviceOnWindow($hwnd, $EDT_DIRECT3D9, 0, 0, $width, $height, 32, 0, 1)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    $width = 640
    $width = 400
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func limit($var, $min, $max)
    If $var < $min Then
    Return $min
    ElseIf $var > $max Then
    Return $max
    Else
    Return $var
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_GetKeyboardState($iFlag = 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aDllRet, $lpKeyState = DllStructCreate("byte[256]")

    [/autoit] [autoit][/autoit] [autoit]

    $aDllRet = DllCall("User32.dll", "int", "GetKeyboardState", "ptr", DllStructGetPtr($lpKeyState))

    [/autoit] [autoit][/autoit] [autoit]

    If @error Then Return SetError(@error, 0, 0)
    If $aDllRet[0] = 0 Then
    Return SetError(1, 0, 0)
    Else
    Switch $iFlag
    Case 0
    Local $aReturn[256]
    For $i = 1 To 256
    $aReturn[$i - 1] = DllStructGetData($lpKeyState, 1, $i)
    Next
    Return $aReturn
    Case Else
    Return DllStructGetData($lpKeyState, 1)
    EndSwitch
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_WinAPI_GetKeyboardState

    [/autoit] [autoit][/autoit] [autoit]

    Func beenden()

    [/autoit] [autoit][/autoit] [autoit]

    _SoundClose($snd_break)
    _SoundClose($snd_checkpoint)
    _SoundClose($snd_kill)
    _SoundClose($snd_lose)
    _SoundClose($snd_runterfallen)
    _SoundClose($snd_schalter)
    _SoundClose($snd_springen)

    [/autoit] [autoit][/autoit] [autoit]

    Exit
    EndFunc

    [/autoit]


    Editor:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GDIPlus.au3>
    #include <WindowsConstants.au3>
    #include <Sound.au3>
    #include <Misc.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)
    Opt('GuiOnEventMode', 1)
    Opt('MouseCoordMode', 0)

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $felder_x = 255, $felder_y = 10
    Global Const $width = 1280, $height = 100
    Global Const $feld_x = $width / $felder_x, $feld_y = $height / $felder_y
    Local $hindernisse[$felder_x][$felder_y];
    Local $obj[$felder_x][$felder_y];

    [/autoit] [autoit][/autoit] [autoit]

    Global $file

    [/autoit] [autoit][/autoit] [autoit]

    Global $aktuellesobjekt[2] = [1,0]

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $devmode = False

    [/autoit] [autoit][/autoit] [autoit]

    _create_Workspace()

    [/autoit] [autoit][/autoit] [autoit]

    Global $draw_lines

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $hDwmApiDll = DllOpen("dwmapi.dll")

    [/autoit] [autoit][/autoit] [autoit]

    ;If @OSVersion = "WIN_VISTA" Or @OSVersion = "WIN_7" Then
    ;If _IsAeroEnable() = 0 Then _EnableDisableAero(False) ; Aero Deaktivierung
    ;EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $mouse_pos[2], $mouse_pos_a[2]

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGUI = GUICreate("Editor", $width, $height+40)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")

    [/autoit] [autoit][/autoit] [autoit]

    Global $hWnd = WinGetHandle("Editor")

    [/autoit] [autoit][/autoit] [autoit]

    Global $GUI_Buttons[UBound($Objekte)]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($Objekte)-1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    $GUI_Buttons[$i] = GUICtrlCreateButton(BinaryToString($Objekte[$i]),10+($i-1)*100,110,90,20)
    GUICtrlSetOnEvent ($GUI_Buttons[$i], "SetItem")
    Next

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup ()

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hWnd) ;create graphic
    Global $Bitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphic) ;create bitmap
    Global $Buffer = _GDIPlus_ImageGetGraphicsContext($Bitmap) ;create buffer
    _GDIPlus_GraphicsSetSmoothingMode($Buffer, 4) ;Antialiasing
    _GDIPlus_GraphicsClear($Buffer,0xFFFFFFFF) ;clear buffer

    [/autoit] [autoit][/autoit] [autoit]

    Global $Brush = _GDIPlus_BrushCreateSolid(0xFFABCDEF)

    [/autoit] [autoit][/autoit] [autoit]

    Local $msg

    [/autoit] [autoit][/autoit] [autoit]

    While True

    [/autoit] [autoit][/autoit] [autoit]

    If WinActive("Editor") Then

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsClear($Buffer,0xFFFFFFFF)

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed(53) Then save_map()
    If _IsPressed("4C") Then load_map()
    If _IsPressed("4E") Then erease_map()

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed(01) Then

    [/autoit] [autoit][/autoit] [autoit]

    $mouse_pos = _mouse_feld_pos()

    [/autoit] [autoit][/autoit] [autoit]

    If Not @error Then

    [/autoit] [autoit][/autoit] [autoit]

    If $mouse_pos[0] <> $mouse_pos_a[0] Or $mouse_pos[1] <> $mouse_pos_a[1] Then

    [/autoit] [autoit][/autoit] [autoit]

    If $hindernisse[$mouse_pos[0]][$mouse_pos[1]] = 1 And $aktuellesobjekt[1] = 0 Then

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDelete($Objekte_CurValves,$obj[$mouse_pos[0]][$mouse_pos[1]])
    _ArrayDelete($Draw_Lines,$obj[$mouse_pos[0]][$mouse_pos[1]])

    [/autoit] [autoit][/autoit] [autoit]

    Local $comp = $obj[$mouse_pos[0]][$mouse_pos[1]]

    [/autoit] [autoit][/autoit] [autoit]

    For $x = 0 To $felder_x - 1 Step 1
    For $y = 0 To $felder_y - 1 Step 1
    If $obj[$x][$y] = $comp Then
    $obj[$x][$y] = ""
    $hindernisse[$x][$y] = 0
    EndIf
    If $obj[$x][$y] > $comp Then
    $obj[$x][$y] -= 1
    EndIf
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $hindernisse[$mouse_pos[0]][$mouse_pos[1]] = 0 Then

    [/autoit] [autoit][/autoit] [autoit]

    $hindernisse[$mouse_pos[0]][$mouse_pos[1]] = 1

    [/autoit] [autoit][/autoit] [autoit]

    ;Erweiterung des Objekte Arrays

    [/autoit] [autoit][/autoit] [autoit]

    If $aktuellesobjekt[1] = 0 Then
    If IsArray($Objekte_CurValves) Then
    ReDim $Objekte_CurValves[UBound($Objekte_CurValves)+1][$Objekte_MaxParameter+1]
    Else
    Dim $Objekte_CurValves[UBound($Objekte_CurValves)+1][$Objekte_MaxParameter+1]
    EndIf
    If IsArray($draw_lines) Then
    ReDim $draw_lines[UBound($Objekte_CurValves)][$Objekte_MaxTeile*2]
    Else
    Dim $draw_lines[UBound($Objekte_CurValves)][$Objekte_MaxTeile*2]
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $obj[$mouse_pos[0]][$mouse_pos[1]] = UBound($Objekte_CurValves)-1

    [/autoit] [autoit][/autoit] [autoit]

    $Objekte_CurValves[UBound($Objekte_CurValves)-1][0] = $aktuellesobjekt[0]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $Objekte_Parameter[$aktuellesobjekt[0]-1][0] Step 1 ; Geht alle Parameter des Objektes durch

    [/autoit] [autoit][/autoit] [autoit]

    If $Objekte_UsesTeile[$aktuellesobjekt[0]-1][$i] = Binary($aktuellesobjekt[1]+1) Then ; Wenn der Parameter zu dem teil gehört

    [/autoit] [autoit][/autoit] [autoit]

    Switch $Objekte_SetValves[$aktuellesobjekt[0]-1][$i-1]
    Case $setvalve_x
    $Objekte_CurValves[UBound($Objekte_CurValves)-1][$i] = $mouse_pos[0]
    $draw_lines[UBound($Objekte_CurValves)-1][$aktuellesobjekt[1]*2] = $mouse_pos[0]
    Case $setvalve_y
    $Objekte_CurValves[UBound($Objekte_CurValves)-1][$i] = $mouse_pos[1]
    $draw_lines[UBound($Objekte_CurValves)-1][$aktuellesobjekt[1]*2+1] = $mouse_pos[1]
    Case $setvalve_zahl
    $Objekte_CurValves[UBound($Objekte_CurValves)-1][$i] = InputBox("",$Objekte_TextInfos[$aktuellesobjekt[0]-1][$i-1])
    Case Else
    $Objekte_CurValves[UBound($Objekte_CurValves)-1][$i] = $Objekte_SetValves[$aktuellesobjekt[0]-1][$i-1]
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    $aktuellesobjekt[1] += 1
    If $aktuellesobjekt[1] = $Objekte_UsesTeile[$aktuellesobjekt[0]-1][0] Then $aktuellesobjekt[1] = 0

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $mouse_pos_a = $mouse_pos

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    $mouse_pos_a[0] = -1
    $mouse_pos_a[1] = -1

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _zeichnen()

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawImageRect($hGraphic, $Bitmap,0,0, $width, $height)
    ;Do
    ;Until _IsPressed(27)

    [/autoit] [autoit][/autoit] [autoit]

    ;Sleep(200)

    [/autoit] [autoit][/autoit] [autoit]

    Else
    Sleep(100)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func SetItem()

    For $i = 0 To UBound($objekte) - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    If @GUI_CtrlId = $gui_buttons[$i] Then $aktuellesobjekt[0] = $i

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Create_Workspace()

    [/autoit] [autoit][/autoit] [autoit]

    Global $Objekte = IniReadSectionNames("objekte.ini")
    If @error Then MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Wahrscheinlich keine INI Datei vorhanden.")

    [/autoit] [autoit][/autoit] [autoit]

    Global $Objekte_Parameter[1][1]
    Global $Objekte_SetValves[1][1]
    Global $Objekte_CurValves
    Global $Objekte_UsesTeile[1][1]
    Global $Objekte_HowtoDraw[$Objekte[0]][2] ; Wie die Objekt in Editor dargestellt werden sollen
    Global $Objekte_TextInfos[1][1]

    [/autoit] [autoit][/autoit] [autoit]

    Global $Objekte_MaxParameter
    Global $Objekte_MaxTeile

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $setvalve_x = Binary(1), $setvalve_y = Binary(2), $setvalve_zahl = Binary(3)

    [/autoit] [autoit][/autoit] [autoit]

    Local $num_para

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $Objekte[0] Step 1

    [/autoit] [autoit][/autoit] [autoit]

    $num_para = IniRead("objekte.ini",$Objekte[$i],"Parameter",1)

    [/autoit] [autoit][/autoit] [autoit]

    If $Objekte_MaxParameter < $num_para Then $Objekte_MaxParameter = $num_para

    [/autoit] [autoit][/autoit] [autoit]

    $Objekte_HowtoDraw[$i-1][0] = IniRead("objekte.ini",$Objekte[$i],"color",1)
    $Objekte_HowtoDraw[$i-1][1] = IniRead("objekte.ini",$Objekte[$i],"verbunden",1)

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $Objekte_Parameter[$i][$Objekte_MaxParameter+1]
    ReDim $Objekte_SetValves[$i][$Objekte_MaxParameter]
    ReDim $Objekte_UsesTeile[$i][$Objekte_MaxParameter+1]
    ReDim $Objekte_TextInfos[$i][$Objekte_MaxParameter]

    [/autoit] [autoit][/autoit] [autoit]

    $Objekte_Parameter[$i-1][0] = $num_para

    [/autoit] [autoit][/autoit] [autoit]

    For $j = 0 To $num_para - 1 Step 1

    [/autoit] [autoit][/autoit] [autoit]

    $Objekte_Parameter[$i-1][$j+1] = IniRead("objekte.ini",$Objekte[$i],$j+1,1) ; Speicher Namen der Eigenschaften

    [/autoit] [autoit][/autoit] [autoit]

    Switch IniRead("objekte.ini",$Objekte[$i],$Objekte_Parameter[$i-1][$j+1],1) ; Welche Werte sollen die Paremeter zugewiesen bekommen?

    [/autoit] [autoit][/autoit] [autoit]

    Case "mausx"
    $Objekte_SetValves[$i-1][$j] = $setvalve_x
    Case "mausy"
    $Objekte_SetValves[$i-1][$j] = $setvalve_y
    Case "input"
    $Objekte_SetValves[$i-1][$j] = $setvalve_zahl
    $Objekte_TextInfos[$i-1][$j] = IniRead("objekte.ini",$Objekte[$i],"text"& $j+1,1)
    Case Else
    $Objekte_SetValves[$i-1][$j] = IniRead("objekte.ini",$Objekte[$i],$Objekte_Parameter[$i-1][$j+1],1)

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    $Objekte_UsesTeile[$i-1][$j+1] = Binary(Number(IniRead("objekte.ini",$Objekte[$i],$Objekte_Parameter[$i-1][$j+1] & "_gehoert_zu_objekt",1)))

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    $Objekte_UsesTeile[$i-1][0] = Number(IniRead("objekte.ini",$Objekte[$i],"Teile",1))
    If $Objekte_MaxTeile < $Objekte_UsesTeile[$i-1][0] Then $Objekte_MaxTeile = $Objekte_UsesTeile[$i-1][0]

    [/autoit] [autoit][/autoit] [autoit]

    $Objekte[$i] = StringToBinary($Objekte[$i]) ; Binary für schnellere Zugriffszeiten
    Next

    [/autoit] [autoit][/autoit] [autoit]

    IF $devmode Then

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($Objekte)
    _ArrayDisplay($objekte_parameter)
    _ArrayDisplay($Objekte_SetValves)
    _ArrayDisplay($Objekte_CurValves)
    _ArrayDisplay($Objekte_UsesTeile)
    _ArrayDisplay($Objekte_HowtoDraw)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _mouse_feld_pos()

    [/autoit] [autoit][/autoit] [autoit]

    ;ToolTip("Doing2")

    [/autoit] [autoit][/autoit] [autoit]

    Local $pos[2]

    [/autoit] [autoit][/autoit] [autoit]

    $pos[0] = Int((MouseGetPos(0) - $feld_x/2) / $feld_x)
    $pos[1] = $felder_y - 1 - Int((MouseGetPos(1) -25) / $feld_y)

    [/autoit] [autoit][/autoit] [autoit]

    If $pos[0] >= 0 And $pos[1] >= 0 And $pos[0] < $felder_x And $pos[1] < $felder_y Then
    Return $pos
    Else
    SetError(1)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _zeichnen()

    [/autoit] [autoit][/autoit] [autoit]

    For $x = 0 To $felder_x - 1 Step 1
    For $y = 0 To $felder_y - 1 Step 1
    If $hindernisse[$x][$y] = 1 Then
    _GDIPlus_BrushSetSolidColor($Brush,$Objekte_HowtoDraw[$Objekte_CurValves[$obj[$x][$y]][0]-1][0])
    _GDIPlus_GraphicsFillRect($Buffer,$x * $feld_x, ($felder_y - 1 - $y) * $feld_y, $feld_x, $feld_y, $brush)
    EndIf
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($draw_lines) - 1 Step 1
    If $Objekte_HowtoDraw[$Objekte_CurValves[$i][0]-1][1] = 1 Then
    _GDIPlus_GraphicsDrawLine($Buffer,$draw_lines[$i][0] * $feld_x + $feld_x, ($felder_y - 1 - $draw_lines[$i][1]) * $feld_y + $feld_y / 2, $draw_lines[$i][2] * $feld_x, ($felder_y - 1 - $draw_lines[$i][3]) * $feld_y + $feld_y / 2)
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func save_map()

    [/autoit] [autoit][/autoit] [autoit]

    Local $k, $m , $h, $save_name

    [/autoit] [autoit][/autoit] [autoit]

    If $file = "" Then $file = InputBox("Map","unter welchem namen möchten sie die Map speichern? (map1)") & ".ini"

    [/autoit] [autoit][/autoit] [autoit]

    $save_name = @ScriptDir & "\" & $file

    [/autoit] [autoit][/autoit] [autoit]

    If FileExists($save_name) Then

    [/autoit] [autoit][/autoit] [autoit]

    SwitchMsgBox(3,"Speichern","Die Map: Map1 existiert bereits wollen sie diese ersetzen")
    Case 2
    Return 0
    Case 7
    $save_name = FileSaveDialog("Speichern",@ScriptDir,"Maps (*.ini)") & ".ini"
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;-- Ini löschen und für neues Schreiben vorbereiten ------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($objekte) - 1 Step 1
    IniDelete($save_name,BinaryToString($objekte[$i]))
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Local $zaehler[UBound($objekte)]

    [/autoit] [autoit][/autoit] [autoit]

    ;_ArrayDisplay($Objekte_parameter)

    [/autoit] [autoit][/autoit] [autoit]

    For $objekt = 0 To UBound($Objekte_CurValves) - 1 Step 1 ; Geht alle Objekte durch
    ;MsgBox(0,"",UBound($Objekte_CurValves) - 1)
    ;MsgBox (0,"",$Objekte_parameter[$Objekte_CurValves[$objekt][0]][0])
    ;_ArrayDisplay($Objekte_parameter)

    [/autoit] [autoit][/autoit] [autoit]

    Local $Type = $Objekte_CurValves[$objekt][0]

    [/autoit] [autoit][/autoit] [autoit]

    $zaehler[$type] += 1

    [/autoit] [autoit][/autoit] [autoit]

    For $parameter = 1 To $Objekte_parameter[$Type-1][0] Step 1 ; Geht alle Parameter des jeweiligen Objektes durch

    [/autoit] [autoit][/autoit] [autoit]

    ;ToolTip("Klasse: " & BinaryToString($objekte[$objekt]) & @LF & _
    ;"Wert: " & $Objekte_parameter[$Objekte_CurValves[$objekt][0]][$parameter] & @LF & _
    ;"Variable: " & $Objekte_CurValves[$objekt][$parameter])
    ;MsgBox(0,"",$Objekte_CurValves[$objekt][$parameter])
    IniWrite($save_name,BinaryToString($objekte[$Type]),$Objekte_parameter[$Type-1][$parameter] & $zaehler[$type],$Objekte_CurValves[$objekt][$parameter])
    ;IniWrite($save_name,BinaryToString($objekte[$objekt]),$Objekte_parameter[$Objekte_CurValves[$objekt][0]][$parameter],$Objekte_CurValves[$objekt][$parameter])

    [/autoit] [autoit][/autoit] [autoit]

    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"","Die Map wurde erfolgreich gespeichert!")

    [/autoit] [autoit][/autoit] [autoit]

    Return 1

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func load_map()

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($Objekte_CurValves) Then erease_map()

    [/autoit] [autoit][/autoit] [autoit]

    $file = InputBox("Map","Welche map möchten sie öffnen (map1)") & ".ini"

    [/autoit] [autoit][/autoit] [autoit]

    Local $Level, $var

    [/autoit] [autoit][/autoit] [autoit]

    For $objekt = 1 To $Objekte[0] Step 1

    [/autoit] [autoit][/autoit] [autoit]

    Local $Sektion = IniReadSection(@scriptdir & "\" & $file,BinaryToString($Objekte[$objekt]))

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($Sektion) Then ; Wenn die Sektion existiert
    For $i = 1 To $Sektion[0][0] Step $objekte_parameter[$objekt-1][0]

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($Objekte_CurValves) Then
    ReDim $Objekte_CurValves[UBound($Objekte_CurValves)+1][$Objekte_MaxParameter+1]
    Else
    Dim $Objekte_CurValves[1][$Objekte_MaxParameter+1]
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $Objekte_CurValves[UBound($Objekte_CurValves)-1][0] = $objekt

    [/autoit] [autoit][/autoit] [autoit]

    For $parameter = 0 To $objekte_parameter[$objekt-1][0] - 1 Step 1 ; Gebt alle Parameter eines Objektes durch

    [/autoit] [autoit][/autoit] [autoit]

    $Objekte_CurValves[UBound($Objekte_CurValves)-1][$parameter + 1] = $Sektion[$i+$parameter][1]
    If $Objekte_SetValves[$objekt-1][$parameter] = $setvalve_x Then $var = $Sektion[$i+$parameter][1]
    If $Objekte_SetValves[$objekt-1][$parameter] = $setvalve_y Then
    $obj[$var][$Sektion[$i+$parameter][1]]= UBound($Objekte_CurValves)-1
    $hindernisse[$var][$Sektion[$i+$parameter][1]] = 1
    EndIf
    Next
    Next
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If $devmode Then _ArrayDisplay($Objekte_CurValves)

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"","Die Map wurde erfolgreich geladen")

    [/autoit] [autoit][/autoit] [autoit]

    Return 1

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func erease_map()

    [/autoit] [autoit][/autoit] [autoit]

    SwitchMsgBox(3,"Löschen","Wollen sie wirklich die gesamte Map löschen?")
    Case 2
    Return 0
    Case 7
    Return 0
    Case 6

    [/autoit] [autoit][/autoit] [autoit]

    For $x = 0 To $felder_x - 1 Step 1
    For $y = 0 To $felder_y - 1 Step 1
    $hindernisse[$x][$y] = 0
    $obj[$x][$y] = ""
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Dim $draw_lines[1][1]
    Dim $Objekte_CurValves[1][1]

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDelete($Objekte_CurValves,0)
    _ArrayDelete($draw_lines,0)

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_GetKeyboardState($iFlag = 0)
    Local $aDllRet, $lpKeyState = DllStructCreate("byte[256]")
    $aDllRet = DllCall("User32.dll", "int", "GetKeyboardState", "ptr", DllStructGetPtr($lpKeyState))
    If @error Then Return SetError(@error, 0, 0)
    If $aDllRet[0] = 0 Then
    Return SetError(1, 0, 0)
    Else
    Switch $iFlag
    Case 0
    Local $aReturn[256]
    For $i = 1 To 256
    $aReturn[$i - 1] = DllStructGetData($lpKeyState, 1, $i)
    Next
    Return $aReturn
    Case Else
    Return DllStructGetData($lpKeyState, 1)
    EndSwitch
    EndIf
    EndFunc ;==>_WinAPI_GetKeyboardState

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_BrushSetSolidColor($hBrush, $iARGB = 0xFF000000)
    Local $aResult

    [/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_GraphicsDrawStringColor($hGraphics, $sString, $nX, $nY, $sFont = "Arial", $nSize = 10, $iFormat = 0, $iBrush = 0xFF000000)
    Local $hBrush, $iError, $hFamily, $hFont, $hFormat, $aInfo, $tLayout, $bResult

    [/autoit] [autoit][/autoit] [autoit]

    $hBrush = _GDIPlus_BrushCreateSolid($iBrush)
    $hFormat = _GDIPlus_StringFormatCreate($iFormat)
    $hFamily = _GDIPlus_FontFamilyCreate($sFont)
    $hFont = _GDIPlus_FontCreate($hFamily, $nSize)
    $tLayout = _GDIPlus_RectFCreate($nX, $nY, 0, 0)
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sString, $hFont, $tLayout, $hFormat)
    $bResult = _GDIPlus_GraphicsDrawStringEx($hGraphics, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
    $iError = @error
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)
    Return SetError($iError, 0, $bResult)
    EndFunc ; ==> String in Farbe zeichnen

    [/autoit] [autoit][/autoit] [autoit]

    Func _EnableDisableAero($bEnable = True) ;True/False
    Local $aDll = DllCall($hDwmApiDll, "int", "DwmEnableComposition", "int", $bEnable)
    If @error Then Return SetError(@error, 0, 0)
    Return $aDll[0]
    EndFunc ;==>_EnableDisableAero

    [/autoit] [autoit][/autoit] [autoit]

    Func _IsAeroEnable()
    Local $asDll = DllCall($hDwmApiDll, "int", "DwmIsCompositionEnabled", "str", "")
    If @error Then Return SetError(@error, 0, 0)
    Return StringReplace(StringReplace(Asc($asDll[1]), "1", True), "0", False)
    EndFunc ;==>_IsAeroEnable

    [/autoit] [autoit][/autoit] [autoit]

    Func _beenden()
    _GDIPlus_GraphicsDispose ($hGraphic)
    _GDIPlus_BitmapDispose($Bitmap)
    _GDIPlus_GraphicsDispose($Buffer)
    ;_GDIPlus_BrushDispose($hBrush)
    _GDIPlus_Shutdown ()

    [/autoit] [autoit][/autoit] [autoit]

    ;DllClose ($dll)

    [/autoit] [autoit][/autoit] [autoit]

    DllClose($hDwmApiDll)

    [/autoit] [autoit][/autoit] [autoit]

    Exit
    EndFunc; ==> beenden und speicher wieder frei geben

    [/autoit]

    Ich hoffe euch gefällt das Spiel ;)

    Hier noch die Downloades:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Hier noch die EXE da es bei einigen zu fehlern kommt:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    Spiel + Editor exe.rar 794,4 kB – 611 Downloads
  • *Mausklick* ohne Klickbefehl in Windoof auszuführen via hooking

    • moritz1243
    • 12. August 2009 um 22:17

    was hast du schon selber hinbekommen schick doch mal dein script.

  • Super Mario Jump n Run

    • moritz1243
    • 8. August 2009 um 19:23

    Den gleichen Fehler habe ich bei Windows 7 da komm nur ein weißer Hintergrund. Liegt das vielleicht an Aero?

  • PC Lock

    • moritz1243
    • 5. August 2009 um 13:08

    Hallo zusammen,

    ich habe hier ein Programm mit dem man den Pc sperren kann.

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=Icon.ico
    #AutoIt3Wrapper_outfile=Pc Lock.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_Res_Description=Security Programm
    #AutoIt3Wrapper_Res_Fileversion=0.6
    #AutoIt3Wrapper_Res_LegalCopyright=Moritz
    #AutoIt3Wrapper_Res_Field=Author|Moritz
    #AutoIt3Wrapper_Res_Field=Orginaldateiname|Pc Lock.exe
    #AutoIt3Wrapper_Res_Field=Produktname|Pc Lock
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit] [autoit][/autoit] [autoit]

    #include <WindowsConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <GDIPlus.au3>
    #include <ButtonConstants.au3>
    #include <ScreenCapture.au3>
    #include <Misc.au3>
    #include <Sound.au3>

    [/autoit] [autoit][/autoit] [autoit]

    AutoItSetOption ( "TrayMenuMode",1 )
    Opt("TrayMenuMode",1)

    [/autoit] [autoit][/autoit] [autoit]

    $tray_optionen = TrayCreateItem("Einstellungen")
    TrayCreateItem("")
    $tray_exit = TrayCreateItem("Beenden")
    TrayCreateItem("")

    [/autoit] [autoit][/autoit] [autoit]

    TraySetState()

    [/autoit] [autoit][/autoit] [autoit]

    Const $Width = 1280
    Const $Height = 800
    Const $version = "v0.6"
    Global $text = "# Bitte Code eingeben #"
    Global $fehler = 0
    Global $fehler_sd = -1
    Global $buffer
    Global $screen
    Global $pic1,$pic2,$pic3,$pic4,$pic5,$pic6
    Global $hgraphic
    Global $bitmap
    Global $state
    Global $text
    Global $pin,$s,$taskkill,$doors,$shutdown,$alarm,$alarm_num,$hotkey
    Global $richtig, $falsch, $door ,$alarm_s

    [/autoit] [autoit][/autoit] [autoit]

    $richtig = ""
    $falsch = ""
    $door = ""
    $dll = DllOpen("user32.dll")

    [/autoit] [autoit][/autoit] [autoit]

    If Not FileExists ("bin\not.not") Then _optionen ()

    [/autoit] [autoit][/autoit] [autoit]

    Func _optionen ()

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate ("Pc Lock " & $version,320,110)
    GuiSetIcon("shell32.dll",48)
    GUISetBkColor (0x444444)

    [/autoit] [autoit][/autoit] [autoit]

    $ok = GUICtrlCreateButton ("OK",270,10,40,20)

    $tab = GUICtrlCreateTab(10, 10, 300, 90)

    $tab0 = GUICtrlCreateTabItem("Main")
    GUICtrlCreateLabel ("PW:",20,45,20,20)
    $PW = GUICtrlCreateInput ("",50,40,80,20)
    $do = GUICtrlCreateCheckbox ("Tür",20,70)
    $ast = GUICtrlCreateCheckbox ("Autostart",200,70)
    GUICtrlCreateLabel ("Hotkey:",80,75)
    $hk = GUICtrlCreateCombo ("F1", 120,70,60,20)
    GUICtrlSetData(-1,"F2|F3|F4|F5|F6|F7|F8|F9|F10|F11","F1")

    $tab1 = GUICtrlCreateTabItem("Sound")
    $sound = GUICtrlCreateCheckbox ("Sound",20,40)
    $al = GUICtrlCreateCheckbox ("Alarm",80,40)
    $an = GUICtrlCreateCombo ("Alarm1", 130,40,60,20)
    GUICtrlSetData(-1,"Alarm2|Alarm3","Alarm1")
    $test_al = GUICtrlCreateButton ("Test",200,40,20,20,$BS_ICON)
    GUICtrlSetImage (-1, "shell32.dll",277,0)

    $tab2 = GUICtrlCreateTabItem("Aktionen")
    $tk = GUICtrlCreateCheckbox ("Taskkill",20,40)
    $sd = GUICtrlCreateCheckbox ("Shutdown",80,40)
    GUICtrlCreateLabel ("Versuche: ",210,45)
    $tries = GUICtrlCreateInput ("",265,40,35,20)
    GuiCtrlCreateUpDown(-1)

    GUICtrlCreateTabItem("")

    GUISetState ()

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetState ($sound,IniRead ("bin\config.ini","Buttons","ton",""))
    GUICtrlSetState ($tk,IniRead ("bin\config.ini","Buttons","taskkill",""))
    GUICtrlSetState ($do,IniRead ("bin\config.ini","Buttons","türen",""))
    GUICtrlSetState ($ast,IniRead ("bin\config.ini","Buttons","autostart",""))
    GUICtrlSetState ($sd,IniRead ("bin\config.ini","Buttons","Ausschalten",""))
    GUICtrlSetState ($al,IniRead ("bin\config.ini","Buttons","alarm",""))
    GUICtrlSetData ($hk,IniRead ("bin\config.ini","Buttons","hotkey","F1"))
    GUICtrlSetData ($pw,BinaryToString (IniRead ("bin\config.ini","Buttons","pw","")))
    GUICtrlSetData ($an,"","")
    GUICtrlSetData ($an,"Alarm1|Alarm2|Alarm3",IniRead ("bin\config.ini","Buttons","alarm ton",""))
    GUICtrlSetData ($tries,IniRead ("bin\config.ini","Buttons","versuche",""))

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Then Exit
    If $msg = $ok Then ExitLoop
    If $msg = $test_al Then SoundPlay ("sound\" & GUICtrlRead ($an) & ".wav",0)
    If _IsPressed ("0D",$dll) Then ExitLoop
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    $pin = GUICtrlRead ($PW)
    $s = GUICtrlRead ($sound)
    $taskkill = GUICtrlRead ($tk)
    $doors = GUICtrlRead ($do)
    $autostart = GUICtrlRead ($ast)
    $shutdown = GUICtrlRead ($sd)
    $alarm = GUICtrlRead ($al)
    $alarm_num = GUICtrlRead ($an)
    $hotkey = GUICtrlRead ($hk)
    If GUICtrlRead ($tries) <> "" Then $fehler_sd = GUICtrlRead ($tries)

    [/autoit] [autoit][/autoit] [autoit]

    IniWrite ("bin\config.ini","Buttons","Ton",$s)
    IniWrite ("bin\config.ini","Buttons","Hotkey",$hotkey)
    IniWrite ("bin\config.ini","Buttons","Taskkill",$taskkill)
    IniWrite ("bin\config.ini","Buttons","Türen",$doors)
    IniWrite ("bin\config.ini","Buttons","autostart",$autostart)
    IniWrite ("bin\config.ini","Buttons","Ausschalten",$shutdown)
    IniWrite ("bin\config.ini","Buttons","Alarm",$alarm)
    IniWrite ("bin\config.ini","Buttons","Alarm Ton",$alarm_num)
    IniWrite ("bin\config.ini","Buttons","Versuche",$fehler_sd)
    IniWrite ("bin\config.ini","Buttons","PW",Binary($pin))

    [/autoit] [autoit][/autoit] [autoit]

    GUIDelete ()

    [/autoit] [autoit][/autoit] [autoit]

    If $autostart = 1 Then
    FileCreateShortcut(FileGetShortName("pc lock.exe",1),@StartupDir & "\pc lock.lnk",@WindowsDir,"/e,c:\", "Dies ist ein Explorerlink")
    FileWrite ("bin\not.not","Not")
    EndIf
    If $autostart <> 1 Then
    FileDelete (@StartupDir & "\pc lock.lnk")
    FileDelete ("bin\not.not")
    EndIf
    _hotkey_set ($hotkey)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _hotkey_set ($hotkey)
    HotKeySet ("{F1}")
    HotKeySet ("{F2}")
    HotKeySet ("{F3}")
    HotKeySet ("{F4}")
    HotKeySet ("{F5}")
    HotKeySet ("{F6}")
    HotKeySet ("{F7}")
    HotKeySet ("{F8}")
    HotKeySet ("{F9}")
    HotKeySet ("{F10}")
    HotKeySet ("{F11}")

    If $hotkey = "F1" Then HotKeySet ("{F1}","_lock")
    If $hotkey = "F2" Then HotKeySet ("{F2}","_lock")
    If $hotkey = "F3" Then HotKeySet ("{F3}","_lock")
    If $hotkey = "F4" Then HotKeySet ("{F4}","_lock")
    If $hotkey = "F5" Then HotKeySet ("{F5}","_lock")
    If $hotkey = "F6" Then HotKeySet ("{F6}","_lock")
    If $hotkey = "F7" Then HotKeySet ("{F7}","_lock")
    If $hotkey = "F8" Then HotKeySet ("{F8}","_lock")
    If $hotkey = "F9" Then HotKeySet ("{F9}","_lock")
    If $hotkey = "F10" Then HotKeySet ("{F10}","_lock")
    If $hotkey = "F11" Then HotKeySet ("{F11}","_lock")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    If $s = 1 Then
    $richtig = _SoundOpen("sound\richtig.wav")
    $falsch = _SoundOpen("sound\falsch.wav")
    $door = _SoundOpen("sound\door_move.wav")
    EndIf
    If $alarm = 1 Then $alarm_s = _SoundOpen("sound\" & $alarm_num & ".wav")

    [/autoit] [autoit][/autoit] [autoit]

    Sleep (100)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep (20)
    $tray = TrayGetMsg()
    If $tray = $tray_optionen Then _optionen ()
    If $tray = $tray_exit Then _beenden ()
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _lock ()

    HotKeySet("{Enter}", "_pw_compaire")
    HotKeySet ("{Left}", "_nichts" )
    HotKeySet ("{Right}", "_nichts" )
    HotKeySet ("{Up}", "_nichts" )
    HotKeySet ("{Down}", "_nichts" )
    HotKeySet ("{Space}", "_nichts" )
    HotKeySet ("{Delete}", "_nichts" )
    HotKeySet ("{Backspace}", "_pw_del_let" )
    HotKeySet ("{F1}")
    HotKeySet ("{F2}")
    HotKeySet ("{F3}")
    HotKeySet ("{F4}")
    HotKeySet ("{F5}")
    HotKeySet ("{F6}")
    HotKeySet ("{F7}")
    HotKeySet ("{F8}")
    HotKeySet ("{F9}")
    HotKeySet ("{F10}")
    HotKeySet ("{F11}")

    $hBitmap = _ScreenCapture_Capture ("",0,0,-1,-1,False)

    $hGUI = GUICreate("Locker", $Width, $Height,0,0, $WS_POPUP, $WS_EX_TOPMOST)
    $hWnd = WinGetHandle("Locker")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState ()

    [/autoit] [autoit][/autoit] [autoit]

    ;Resourcen laden
    _GDIPlus_Startup ()

    [/autoit] [autoit][/autoit] [autoit]

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hWnd) ;create graphic
    $Bitmap = _GDIPlus_BitmapCreateFromGraphics($Width, $Height, $hGraphic) ;create bitmap
    $Buffer = _GDIPlus_ImageGetGraphicsContext($Bitmap) ;create buffer
    _GDIPlus_GraphicsSetSmoothingMode($Buffer, 4) ;Antialiasing
    _GDIPlus_GraphicsClear($Buffer,0xFFFFFFFF) ;clear buffer

    [/autoit] [autoit][/autoit] [autoit]

    $pic1 = _GDIPlus_BitmapCreateFromFile("texturen\door_oben.gif")
    $pic2 = _GDIPlus_BitmapCreateFromFile("texturen\door_unten.gif")
    $pic3 = _GDIPlus_BitmapCreateFromFile("texturen\door.gif")
    $pic4 = _GDIPlus_BitmapCreateFromFile("texturen\door2_links.gif")
    $pic5 = _GDIPlus_BitmapCreateFromFile("texturen\door2_rechts.gif")
    $pic6 = _GDIPlus_BitmapCreateFromFile("texturen\door2.gif")
    $screen = _GDIPlus_BitmapCreateFromHBITMAP ($hBitmap)

    If $doors = 1 Then _close ()

    While $state <> 2

    $tray = TrayGetMsg()
    If $tray = $tray_optionen Then _optionen ()
    If $tray = $tray_exit Then _beenden ()

    _tastature ()

    If WinExists ("Windows Task-Manager") Then WinKill ("Windows Task-Manager")
    WinSetOnTop("Locker", "", 1)

    If $alarm = 2 Then _SoundPlay ($alarm_s)

    _GDIPlus_GraphicsClear($Buffer,0xFF00FF00)
    If $doors = 1 Then _GDIPlus_GraphicsDrawImageRectRect($Buffer, $pic3,0,0,1280,800,0,0, $Width, $Height)
    If $doors = 4 Then _GDIPlus_GraphicsDrawImageRectRect($Buffer, $screen,0,0,1280,800,0,0, $Width, $Height)
    _GDIPlus_GraphicsDrawString ($Buffer,$text,500,470,"Arial",18)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $Bitmap, 0, 0, $Width, $Height)
    WEnd

    GUIDelete ()
    $state = 0
    $text = "# Bitte Code eingeben #"
    $fehler = 0

    HotKeySet("{Enter}")
    HotKeySet ("{Left}")
    HotKeySet ("{Right}")
    HotKeySet ("{Up}")
    HotKeySet ("{Down}")
    HotKeySet ("{Space}")
    HotKeySet ("{Delete}")
    HotKeySet ("{Backspace}")

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _open ()
    _SoundPlay($door, 0)
    Local $i = 0

    [/autoit] [autoit][/autoit] [autoit]

    While $i < $Height * 2 / 3

    _GDIPlus_GraphicsClear($Buffer,0xFF00FF00)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawImageRectRect($Buffer, $screen,0,0,1280,800,0,0, $Width, $Height)
    _GDIPlus_GraphicsDrawImageRectRect($Buffer, $pic1,0,0,1280,800,0,$i * -1, $Width, $Height)
    _GDIPlus_GraphicsDrawImageRectRect($Buffer, $pic2,0,0,1280,800,0,$i, $Width, $Height)

    _GDIPlus_GraphicsDrawImageRect($hGraphic, $Bitmap, 0, 0, $Width, $Height)

    $i = $i + 4

    Sleep (10)
    WEnd
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _close ()
    _SoundPlay($door, 0)
    Local $i = 0

    [/autoit] [autoit][/autoit] [autoit]

    While $i < $Height * 2/3

    _GDIPlus_GraphicsClear($Buffer,0xFF00FF00)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawImageRectRect($Buffer, $screen,0,0,1280,800,0,0, $Width, $Height)
    _GDIPlus_GraphicsDrawImageRectRect($Buffer, $pic1,0,0,1280,800,0,$Height * 2/3 * -1 + $i, $Width, $Height)
    _GDIPlus_GraphicsDrawImageRectRect($Buffer, $pic2,0,0,1280,800,0,$Height * 2/3 - $i, $Width, $Height)

    _GDIPlus_GraphicsDrawImageRect($hGraphic, $Bitmap, 0, 0, $Width, $Height)

    $i = $i + 4

    Sleep (10)
    WEnd

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _tastature ()
    For $a = 48 To 90
    If _IsPressed(Hex($a),$dll) Then
    Do
    Until Not _IsPressed(Hex($a),$dll)
    If $text = "# Bitte Code eingeben #" Or $text = "# Falsches Passwort #" Then $text = ""
    $text = $text & StringLower(Chr($a))
    EndIf
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _pw_compaire ()
    If $text = $pin Then
    _SoundPlay($richtig, 1)
    If $doors = 1 Then _open ()
    _hotkey_set ($hotkey)
    $state = 2
    EndIf

    If $pin = "" Then
    _SoundPlay($richtig, 1)
    _hotkey_set ($hotkey)
    If $doors = 1 Then _open ()
    $state = 2
    EndIf

    If $text <> $pin Then
    _SoundPlay($falsch, 0)
    $text = "# Falsches Passwort #"
    $fehler = $fehler + 1
    EndIf
    If $fehler = $fehler_sd And $taskkill = 1 Then _taskkill_all ()
    If $fehler = $fehler_sd And $shutdown = 1 Then Shutdown (4)
    If $fehler = $fehler_sd And $alarm = 1 Then $alarm = 2

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _pw_del_let ()
    $text = StringTrimRight ($text,1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _taskkill_all ()
    Local $var = WinList()

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 to $var[0][0]
    If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    If $var[$i][0] <> "Program Manager" Then WinKill ($var[$i][0])
    EndIf
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _nichts ()
    Return
    EndFunc

    Func _beenden ()
    _GDIPlus_ImageDispose ($pic1)
    _GDIPlus_ImageDispose ($pic2)
    _GDIPlus_ImageDispose ($pic3)
    _GDIPlus_ImageDispose ($pic4)
    _GDIPlus_ImageDispose ($pic5)
    _GDIPlus_ImageDispose ($pic6)
    _GDIPlus_ImageDispose ($screen)
    _GDIPlus_GraphicsDispose ($hGraphic)
    _GDIPlus_BitmapDispose($Bitmap)
    _GDIPlus_GraphicsDispose($Buffer)
    _GDIPlus_Shutdown ()
    _SoundClose($alarm_s)
    _SoundClose($richtig)
    _SoundClose($falsch)
    _SoundClose($door)
    Exit
    EndFunc

    [/autoit]

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™