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. name22

Beiträge von name22

  • MouseClick(x,y) Alternative?

    • name22
    • 4. April 2010 um 21:55

    Das ist nicht so lang und kompliziert wie du denkst.^^
    Im Prinzip sind diese RegWrite Befehle der Kern der Sache:
    z.B. Icon für Arbeitsplatz ändern ($Arbeitsplatz ist der Pfad zur .ico Datei und $var[1] der Benutzer):

    [autoit]

    RegWrite("HKEY_USERS\" & $var[1] & "\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon", "", "REG_SZ", $Arbeitsplatz)

    [/autoit]
  • MouseClick(x,y) Alternative?

    • name22
    • 4. April 2010 um 21:19

    So und weiter geht's :D
    Über die Forensuche habe ich schon mal das hier gefunden: DesktopSymbole
    Da das ganze über Registry Keys läuft musst du vielleicht mit irgendetwas in der Art EnvUpdate den Desktop aktualisieren.
    EnvUpdate entspricht glaube ich einer neuanmeldung des Benutzers, also nicht zu oft innerhalb einer bestimmten Zeitspanne verwenden. ;)
    Und was sagt uns das? Genau! Zuerst suchen, dann posten. :P

  • MouseClick(x,y) Alternative?

    • name22
    • 4. April 2010 um 21:08

    Für Aero gibt es Funktionen von GTASpider:

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ;
    ; Function Name: _EnableDisableAero()
    ; Description: Enables or Disables the Aero design from Vista to the default design.
    ; Parameter(s): $bEnable [BOOLEAN]: True enables the Aero, False disables it.
    ; Requirement(s): dwmapi.dll, Windows Vista
    ; Return Value(s): Returnvals of DLLCall
    ; Author(s): GtaSpider
    ;
    ;===============================================================================
    ;
    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

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

    ;===============================================================================
    ;
    ; Function Name: _IsAeroEnable
    ; Description: Checks if aero is enable
    ; Parameter(s): None
    ; Requirement(s): dwmapi.dll, Windows Vista
    ; Return Value(s): 0 If disabeld, 1 if enabled
    ; Author(s): GtaSpider
    ;
    ;===============================================================================
    ;

    [/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

    [/autoit]
  • Doodle Jump für Pc

    • name22
    • 4. April 2010 um 20:45

    Ich kenn mich ein wenig damit aus, vielleicht krieg ich ja irgendwas hin in der Art wie du es brauchst :S

  • GDI+ Spiel: "Targets"

    • name22
    • 4. April 2010 um 19:36

    Ich habe die maximale Zeichenlänge für den Spielernamen auf 6 gesetzt, das werde ich auch noch ändern. Das ist leider ein bisschen aufwendig, weil dann alle Koordinaten angepasst werden müssen. :S
    Eine Online Highscore Funktion wäre cool, einen Server hab ich zumindest schon. Leider weiß ich nicht wie ich Daten an ihn Senden kann ohne, dass jeder meine Server Passwörter etc. herauskriegt. Schließlich will ich ja weiterhin alles in Scriptform und nicht als exe bereitstellen (von den Decompilern will ich gar nicht erst anfangen :rolleyes: ).

  • Doodle Jump für Pc

    • name22
    • 4. April 2010 um 19:34

    Falls meine Funktion solche Probleme macht könnte man auch mit Matrizen arbeiten. Ich weiß allerdings nicht ob das Script dann Geschwindigkeit einbüßt.

  • Doodle Jump für Pc

    • name22
    • 4. April 2010 um 18:47

    Hmm komisch ?( , wenn du nichts dagegen hast schaue ich mir das mal an ;)

  • GDI+ Spiel: "Targets"

    • name22
    • 4. April 2010 um 18:45

    Habe einen kleinen Bug beseitigt, siehe oben ;)
    Außerdem werden jetzt die gespeicherten Scores erst absteigend sortiert, und dann im Hauptmenü angezeigt. :D
    Eine Version die auch anzeigt ob ein neuer Highscore erreicht wurde ist in Arbeit.

  • Animierte Button

    • name22
    • 4. April 2010 um 18:39

    Falls du runde Buttons benutzen willst hätte ich da eine Funktion um zu überprüfen um ein Punkt in einem Kreis ist. Ich weiß ist jetzt nicht wirklich was besonderes, aber vielleicht kannst du es ja gebrauchen. ;)

    Spoiler anzeigen
    [autoit]

    Func _PointIsInCircle($iX_Point, $iY_Point, $iX_Circle, $iY_Circle, $iRadius_Circle)
    $iDistPoints = _GetPointsDistance($iX_Point, $iY_Point, $iX_Circle, $iY_Circle)
    If ($iRadius_Circle > 0 And $iDistPoints < $iRadius_Circle) Or ($iRadius_Circle < 0 And $iDistPoints > $iRadius_Circle) Or $iDistPoints = 0 Then Return $iDistPoints
    Return -1
    EndFunc ;==>_PointIsInCircle

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

    Func _GetPointsDistance($iPointX1, $iPointY1, $iPointX2, $iPointY2)
    Return Sqrt(($iPointX1 - $iPointX2) ^ 2 + ($iPointY1 - $iPointY2) ^ 2)
    EndFunc ;==>_GetPointsDistance

    [/autoit]


    Syntax: _PointIsInCircle(X Punkt, Y Punkt, X Mittelpunkt Kreis, Y Mittelpunkt Kreis, Radius Kreis)

  • Doodle Jump für Pc

    • name22
    • 4. April 2010 um 18:34

    Also bei mir vergrößert sich beim Backflip nichts. Das einzige Problem ist, dass sich die Drehrichtung umkehrt wenn man die Blickrichtung wechselt.
    Wie wurde das mit dem Backflip eigentlich im Original gemacht? ?(

  • GDI+ Spiel: "Targets"

    • name22
    • 4. April 2010 um 07:27

    In diesem Spiel geht es darum, mit der Maus die herunterfallenden Zielscheiben möglichst weit in der Mitte "abzuschießen" bevor das Zeitlimit erreicht ist (kleinere Zielscheiben bringen mehr Punkte). Escape bringt euch zurück ins Hauptmenü.
    Es ist zwar noch nicht ganz fertig, aber hat immerhin schon:
    - Ein Menü
    - Eine Funktion die überprüft, ob ein Punkt innerhalb eines Kreises liegt ohne dabei imaginäre Rechtecke zu verwenden.
    - Eine Score Funktion.
    - Ein einigermaßen akzeptables Physics Engine (wenn auch ohne Kreiskollisionen).
    - Ein sich bewegendes Hintergrundbild.
    - Soundeffekte :rofl:
    - Brushs mit linearem Farbverlauf
    - Einige Funktionen die zwar im Script nicht benutzt werden, aber dennoch sehr nützlich sein können.


    Ich würde mich über Tipps für das Game Balancing und sonstige produktive Krtitik freuen :) .

    Edit: Dank eines kleinen Rechtschreibfehlers war die komplette Score Funktion außer Kraft gesetzt :rolleyes: Ist jetzt aber verbessert. Außerdem werden die Scores jetzt sortiert.
    Version 1.1 mit kleinen Extras, wie einer nützlichen Beep Funktion die einem die letzten Sekunden des Spiels einläutet, ist up. 8)
    Version 1.2 mit einem völlig neuen Menü Design ist da. (Die benötigte Schriftart im zip Archiv muss vorher installiert werden)
    Version 1.3 mit leichten Veränderungen und die Schriftart wird jetzt mit MemFont "includet" und muss nicht mehr installiert werden. ^^

    Version 1.0 (zip mit Script + benötigten Dateien im Anhang)

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <Misc.au3>
    #include <Sound.au3>
    #include <GDIPlus.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>

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

    If FileExists("Scores.ini") = 0 Then
    $hFile = FileOpen("Scores.ini", 1)
    FileWrite($hFile, "[ScoreTable]" & @CRLF)
    FileClose($hFile)
    EndIf

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

    $iGUIWidth = 400
    $iGUIHeight = 700

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

    $iScore = 0
    $sScores = ""
    $sUser = ""

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

    $Found = False
    $iTimelimit = 20000
    $iTime = $iTimelimit
    Global $Timer = 0

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

    $iX_Cloud1 = Random(-100, $iGUIWidth + 100, 1)
    $iX_Cloud2 = Random(-100, $iGUIWidth + 100, 1)
    $vX_Cloud1 = Round(Random(-0.5, 0.5), 2)
    $vX_Cloud2 = Round(Random(-0.5, 0.5), 2)
    $iY_Cloud1 = $iGUIHeight / 3
    $iY_Cloud2 = $iGUIHeight / 3 * 2

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

    Global $iX_Explosion = 0, $iY_Explosion = 0, $bExplosion = False
    Global $iX_IncDec = 0, $iY_IncDec = 0, $sIncDec = 0, $iTimerIncDec = 0

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

    Global $iHours, $iMins, $iSecs

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

    $Gravitation = 0.1
    $Reibung = 0.98
    $Reibung2 = 0.95

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

    $hGunSound = _SoundOpen(@ScriptDir & "\Gun.wav")
    $hBGMusic = _SoundOpen(@ScriptDir & "\BGMusic.mp3")

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

    $hWndUserName = GUICreate("Namen eingeben", 200, 55, -1, -1, $WS_CAPTION)
    $UserInput = GUICtrlCreateInput("Name", 0, 0, 200, 25, 0x0001)
    GUICtrlSetLimit(-1, 6)
    GUICtrlSetFont(-1, 12)
    $OKButton = GUICtrlCreateButton("OK", 0, 25, 200, 15)
    $ExitButton = GUICtrlCreateButton("Beenden", 0, 40, 200, 15)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $ExitButton
    Exit
    Case $OKButton, $UserInput
    $sUser = GUICtrlRead($UserInput)
    If StringReplace($sUser, " ", "") <> "" Then
    GUIDelete($hWndUserName)
    ExitLoop
    EndIf
    EndSwitch
    WEnd

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

    $hWnd = GUICreate("Targets", $iGUIWidth, $iGUIHeight, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
    GUISetCursor(3, 1)
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
    _GDIPlus_GraphicsClear($hGraphic)

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

    $Cloud1 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Wolke1.png")
    $Cloud2 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Wolke2.png")
    $hExplosion = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Explosion.png")

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

    $hBrushWhite = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
    $hBrushRed = _GDIPlus_BrushCreateSolid(0xFFFF0000)
    $hBrushGreen = _GDIPlus_BrushCreateSolid(0xFF00FF00)
    $hBrushBlue = _GDIPlus_BrushCreateSolid(0xFF0000FF)
    $hBrushYellow = _GDIPlus_BrushCreateSolid(0xFFFFFF00)
    $hBrushBlack = _GDIPlus_BrushCreateSolid(0xFF000000)
    $hBrushScore = _GDIPlus_BrushCreateLinear($iGUIWidth - 15, $iGUIHeight - 50, $iGUIWidth - 105, $iGUIHeight, 0xFFFF0000, 0xFF000000)
    $hBrushTime = _GDIPlus_BrushCreateLinear(0, $iGUIHeight - 50, 105, $iGUIHeight, 0xFFFF0000, 0xFF000000)
    $hBrushBG = _GDIPlus_BrushCreateLinear(0, 0, 0, $iGUIHeight, 0xFF7BCFF, 0xFF0057B5)
    $hBrushButtonGreen2 = _GDIPlus_BrushCreateLinear($iGUIWidth / 2 - 110, $iGUIHeight / 2 + 50, $iGUIWidth / 2 - 10, $iGUIHeight / 2 + 200, 0xFF86F586, 0xFF0F3704)
    $hBrushButtonRed = _GDIPlus_BrushCreateLinear($iGUIWidth / 2 + 10, $iGUIHeight / 2 + 50, $iGUIWidth / 2 + 110, $iGUIHeight / 2 + 200, 0xFFFFA4A8, 0xFF800000)
    $hBrushScoreTable = _GDIPlus_BrushCreateLinear(0, 0, 0, $iGUIHeight / 2 + 50, 0xFF00FF00, 0xFFFF0000)

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

    $hPenBlack1 = _GDIPlus_PenCreate(0xFF000000, 6)
    $hPenBlack2 = _GDIPlus_PenCreate(0xFF000000, 6)

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

    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Tahoma")
    $hFont = _GDIPlus_FontCreate($hFamily, 25, 1)
    $hFont2 = _GDIPlus_FontCreate($hFamily, 18, 1)
    $tLayoutScore = _GDIPlus_RectFCreate($iGUIWidth - 120, $iGUIHeight - 50, 0, 0)
    $tLayoutTime = _GDIPlus_RectFCreate(5, $iGUIHeight - 50, 0, 0)
    $tLayoutStart = _GDIPlus_RectFCreate($iGUIWidth / 2 - 102, $iGUIHeight / 2 + 85, 0, 0)
    $tLayoutExit = _GDIPlus_RectFCreate($iGUIWidth / 2 + 26, $iGUIHeight / 2 + 85, 0, 0)
    $tLayoutScoreTable = _GDIPlus_RectFCreate(20, 5, 0, $iGUIHeight / 2 - 20)

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

    Dim $aCircles[3][6]
    For $i = 0 To UBound($aCircles) - 1
    $aCircles[$i][0] = Random(70, 340, 1)
    $aCircles[$i][1] = -100
    $aCircles[$i][2] = Random(30, 60, 1)
    $aCircles[$i][3] = Random(-20, 20, 1)
    $aCircles[$i][4] = Random(-10, 0, 1)
    $aCircles[$i][5] = Round($aCircles[$i][2] / 5)
    Next

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

    GUIRegisterMsg($WM_PAINT, "WM_PAINT")
    HotKeySet("{ESC}", "_Menu")

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

    _Menu()

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

    Func _MainLoop()
    _SoundPlay($hBGMusic)
    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    _Exit()
    Case $GUI_EVENT_PRIMARYDOWN
    _SoundStop($hGunSound)
    _SoundPlay($hGunSound)
    $iX_IncDec = $nMsg[3] + 20
    $iY_IncDec = $nMsg[4] - 10
    For $i = 0 To UBound($aCircles) - 1
    $iDistFromMiddle = _PointIsInCircle($nMsg[3], $nMsg[4], $aCircles[$i][0] + $aCircles[$i][2] / 2, $aCircles[$i][1] + $aCircles[$i][2] / 2, $aCircles[$i][2] / 2)
    If $iDistFromMiddle <> -1 Then
    $bExplosion = True
    $iX_Explosion = $nMsg[3] - 10
    $iY_Explosion = $nMsg[4] - 10
    $Found = True
    $iTimerIncDec = TimerInit()
    Switch Round($iDistFromMiddle)
    Case 0 To $aCircles[$i][5] / 2
    Switch $aCircles[$i][2]
    Case 30 To 40
    $iScore += 20
    $sIncDec = 20
    Case 41 To 50
    $iScore += 15
    $sIncDec = 15
    Case 51 To 60
    $iScore += 10
    $sIncDec = 10
    Case 300
    $iScore += 100
    $sIncDec = 100
    EndSwitch
    Case $aCircles[$i][5] / 2 + 1 To $aCircles[$i][5] * 2 / 2
    Switch $aCircles[$i][2]
    Case 30 To 40
    $iScore += 16
    $sIncDec = 16
    Case 41 To 50
    $iScore += 12
    $sIncDec = 12
    Case 51 To 60
    $iScore += 8
    $sIncDec = 8
    Case 300
    $iScore += 80
    $sIncDec = 80
    EndSwitch
    Case $aCircles[$i][5] * 2 / 2 + 1 To $aCircles[$i][5] * 3 / 2
    Switch $aCircles[$i][2]
    Case 30 To 40
    $iScore += 8
    $sIncDec = 8
    Case 41 To 50
    $iScore += 6
    $sIncDec = 6
    Case 51 To 60
    $iScore += 4
    $sIncDec = 4
    Case 300
    $iScore += 70
    $sIncDec = 70
    EndSwitch
    Case $aCircles[$i][5] * 3 / 2 + 1 To $aCircles[$i][5] * 4 / 2
    Switch $aCircles[$i][2]
    Case 30 To 40
    $iScore += 4
    $sIncDec = 4
    Case 41 To 50
    $iScore += 3
    $sIncDec = 3
    Case 51 To 60
    $iScore += 2
    $sIncDec = 2
    Case 300
    $iScore += 60
    $sIncDec = 60
    EndSwitch
    Case $aCircles[$i][5] * 4 / 2 + 1 To $aCircles[$i][5] * 5 / 2 + 2
    Switch $aCircles[$i][2]
    Case 30 To 40
    $iScore += 3
    $sIncDec = 3
    Case 41 To 50
    $iScore += 2
    $sIncDec = 2
    Case 51 To 60
    $iScore += 1
    $sIncDec = 1
    Case 300
    $iScore += 50
    $sIncDec = 50
    EndSwitch
    EndSwitch
    $aCircles[$i][0] = 10
    $aCircles[$i][1] = $iGUIHeight + 200
    ExitLoop
    EndIf
    Next
    If $Found = False And $iScore > 0 Then
    $iScore -= 1
    $sIncDec = -1
    EndIf
    $Found = False
    EndSwitch
    $iTime = Round(TimerDiff($Timer))
    If $iTime >= $iTimelimit Then
    _Menu()
    EndIf
    If _SoundStatus($hBGMusic) = "stopped" Then
    _SoundPlay($hBGMusic)
    EndIf
    WEnd
    EndFunc ;==>_MainLoop

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

    Func _Menu()
    AdlibUnRegister()
    $Gravitation = 0.2
    If $iScore <> 0 Then
    While StringInStr($iScore, "0") = 1
    $iScore = StringTrimLeft($iScore, 1)
    WEnd
    FileWrite("Scores.ini", @CRLF & $sUser & "=" & $iScore)
    EndIf
    $aScores_Ini = IniReadSection("Scores.ini", "ScoreTable")
    _ArraySortNum($aScores_Ini)
    If Not @error Then
    $sScores = "Players | Scores" & @CRLF
    For $i = 1 To $aScores_Ini[0][0]
    $sScores &= @CRLF & $aScores_Ini[$i][0] & ": " & $aScores_Ini[$i][1]
    Next
    EndIf
    $iScore = 0
    For $i = 0 To UBound($aCircles) - 1
    $aCircles[$i][1] = $iGUIHeight + 200
    Next
    _ReDrawMenu()
    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    _Exit()
    Case $GUI_EVENT_RESTORE
    WM_PAINT()
    Case $GUI_EVENT_PRIMARYDOWN
    If _PointIsInCircle($nMsg[3], $nMsg[4], $iGUIWidth / 2 - 60, $iGUIHeight / 2 + 100, 50) <> -1 Then
    While _IsPressed("01")
    If _GDIPlus_PenGetWidth($hPenBlack1) <> 12 Then
    _GDIPlus_PenSetWidth($hPenBlack1, 12)
    _ReDrawMenu()
    EndIf
    Sleep(30)
    WEnd
    _GDIPlus_PenSetWidth($hPenBlack1, 6)
    _ReDrawMenu()
    Sleep(50)
    $Timer = TimerInit()
    AdlibRegister("_ReDraw", 30)
    _MainLoop()
    EndIf
    If _PointIsInCircle($nMsg[3], $nMsg[4], $iGUIWidth / 2 + 60, $iGUIHeight / 2 + 100, 50) <> -1 Then
    While _IsPressed("01")
    If _GDIPlus_PenGetWidth($hPenBlack2) <> 12 Then
    _GDIPlus_PenSetWidth($hPenBlack2, 12)
    _ReDrawMenu()
    EndIf
    Sleep(30)
    WEnd
    _GDIPlus_PenSetWidth($hPenBlack2, 6)
    _ReDrawMenu()
    Sleep(50)
    _Exit()
    EndIf
    EndSwitch
    WEnd
    EndFunc ;==>_Menu

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

    Func _Swap(ByRef $sItem1, ByRef $sItem2)
    $sTemp = $sItem1
    $sItem1 = $sItem2
    $sItem2 = $sTemp
    EndFunc ;==>_Swap

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

    Func _ReDrawMenu()
    _GDIPlus_GraphicsClear($hBuffer)
    _GDIPlus_GraphicsFillRect($hBuffer, 0, 0, $iGUIWidth, $iGUIHeight, $hBrushBG)
    _GDIPlus_GraphicsDrawEllipse($hBuffer, $iGUIWidth / 2 - 110, $iGUIHeight / 2 + 50, 100, 100, $hPenBlack1)
    _GDIPlus_GraphicsDrawEllipse($hBuffer, $iGUIWidth / 2 + 10, $iGUIHeight / 2 + 50, 100, 100, $hPenBlack2)
    _GDIPlus_GraphicsFillEllipse($hBuffer, $iGUIWidth / 2 - 110, $iGUIHeight / 2 + 50, 100, 100, $hBrushButtonGreen2)
    _GDIPlus_GraphicsFillEllipse($hBuffer, $iGUIWidth / 2 + 10, $iGUIHeight / 2 + 50, 100, 100, $hBrushButtonRed)
    _GDIPlus_GraphicsDrawStringEx($hBuffer, $sScores, $hFont2, $tLayoutScoreTable, $hFormat, $hBrushScoreTable)
    _GDIPlus_GraphicsDrawStringEx($hBuffer, "START", $hFont2, $tLayoutStart, $hFormat, $hBrushBlack)
    _GDIPlus_GraphicsDrawStringEx($hBuffer, "EXIT", $hFont2, $tLayoutExit, $hFormat, $hBrushBlack)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iGUIWidth, $iGUIHeight)
    EndFunc ;==>_ReDrawMenu

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

    Func _ReDraw()
    $Gravitation += 0.0001
    $iX_Cloud1 += $vX_Cloud1
    $iX_Cloud2 += $vX_Cloud2
    If $vX_Cloud1 > 0 And $iX_Cloud1 >= $iGUIWidth Then $iX_Cloud1 = -100
    If $vX_Cloud1 < 0 And $iX_Cloud1 <= -100 Then $iX_Cloud1 = $iGUIWidth
    If $vX_Cloud2 > 0 And $iX_Cloud2 >= $iGUIWidth Then $iX_Cloud2 = -100
    If $vX_Cloud2 < 0 And $iX_Cloud2 <= -100 Then $iX_Cloud2 = $iGUIWidth
    _GDIPlus_GraphicsClear($hBuffer)
    _GDIPlus_GraphicsFillRect($hBuffer, 0, 0, $iGUIWidth, $iGUIHeight, $hBrushBG)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $Cloud1, $iX_Cloud1, $iY_Cloud1, 100, 50)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $Cloud2, $iX_Cloud2, $iY_Cloud2, 100, 50)
    For $i = 0 To UBound($aCircles) - 1
    If $aCircles[$i][3] > 0 And $aCircles[$i][0] + $aCircles[$i][2] >= $iGUIWidth Then
    $aCircles[$i][3] *= -$Reibung2
    $aCircles[$i][4] *= $Reibung2
    EndIf
    If $aCircles[$i][4] > 0 And $aCircles[$i][1] - $aCircles[$i][2] >= $iGUIHeight Then
    $aCircles[$i][0] = Random(70, 340, 1)
    $aCircles[$i][1] = -100
    $aCircles[$i][2] = Random(30, 60, 1)
    $aCircles[$i][3] = Random(-20, 20, 1)
    $aCircles[$i][4] = Random(-10, 0, 1)
    $aCircles[$i][5] = Round($aCircles[$i][2] / 5)
    EndIf
    If $aCircles[$i][3] < 0 And $aCircles[$i][0] <= 0 Then
    $aCircles[$i][3] *= -$Reibung2
    $aCircles[$i][4] *= $Reibung2
    EndIf
    $aCircles[$i][0] += $aCircles[$i][3]
    $aCircles[$i][1] += $aCircles[$i][4]
    $aCircles[$i][4] += $Gravitation
    $aCircles[$i][3] *= $Reibung
    $aCircles[$i][4] *= $Reibung
    _GDIPlus_GraphicsFillEllipse($hBuffer, $aCircles[$i][0], $aCircles[$i][1], $aCircles[$i][2], $aCircles[$i][2], $hBrushWhite)
    _GDIPlus_GraphicsFillEllipse($hBuffer, $aCircles[$i][0] + $aCircles[$i][5] / 2, $aCircles[$i][1] + $aCircles[$i][5] / 2, $aCircles[$i][2] - $aCircles[$i][5], $aCircles[$i][2] - $aCircles[$i][5], $hBrushBlack)
    _GDIPlus_GraphicsFillEllipse($hBuffer, $aCircles[$i][0] + $aCircles[$i][5] * 2 / 2, $aCircles[$i][1] + $aCircles[$i][5] * 2 / 2, $aCircles[$i][2] - $aCircles[$i][5] * 2, $aCircles[$i][2] - $aCircles[$i][5] * 2, $hBrushBlue)
    _GDIPlus_GraphicsFillEllipse($hBuffer, $aCircles[$i][0] + $aCircles[$i][5] * 3 / 2, $aCircles[$i][1] + $aCircles[$i][5] * 3 / 2, $aCircles[$i][2] - $aCircles[$i][5] * 3, $aCircles[$i][2] - $aCircles[$i][5] * 3, $hBrushRed)
    _GDIPlus_GraphicsFillEllipse($hBuffer, $aCircles[$i][0] + $aCircles[$i][5] * 4 / 2, $aCircles[$i][1] + $aCircles[$i][5] * 4 / 2, $aCircles[$i][2] - $aCircles[$i][5] * 4, $aCircles[$i][2] - $aCircles[$i][5] * 4, $hBrushYellow)
    Next
    If $bExplosion = True Then
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $hExplosion, $iX_Explosion, $iY_Explosion, 25, 25)
    $bExplosion = False
    EndIf
    For $i = 1 To 5 - StringLen($iScore)
    $iScore = "0" & $iScore
    Next
    _TicksToTime($iTimelimit - $iTime, $iHours, $iMins, $iSecs)
    If StringLen($iMins) = 1 Then $iMins = "0" & $iMins
    If StringLen($iSecs) = 1 Then $iSecs = "0" & $iSecs
    _GDIPlus_GraphicsDrawStringEx($hBuffer, $iMins & ":" & $iSecs, $hFont, $tLayoutTime, $hFormat, $hBrushTime)
    _GDIPlus_GraphicsDrawStringEx($hBuffer, $iScore, $hFont, $tLayoutScore, $hFormat, $hBrushScore)
    $tLayoutIncDec = _GDIPlus_RectFCreate($iX_IncDec, $iY_IncDec, 0, 0)
    If $sIncDec > 0 Then _GDIPlus_GraphicsDrawStringEx($hBuffer, $sIncDec, $hFont, $tLayoutIncDec, $hFormat, $hBrushGreen)
    If $sIncDec < 0 Then _GDIPlus_GraphicsDrawStringEx($hBuffer, $sIncDec, $hFont, $tLayoutIncDec, $hFormat, $hBrushRed)
    If TimerDiff($iTimerIncDec) >= 1000 Then $sIncDec = 0
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iGUIWidth, $iGUIHeight)
    EndFunc ;==>_ReDraw

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

    Func _Exit()
    AdlibUnRegister()
    _SoundClose($hGunSound)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_ImageDispose($Cloud1)
    _GDIPlus_ImageDispose($Cloud2)
    _GDIPlus_ImageDispose($hExplosion)
    _GDIPlus_BrushDispose($hBrushBlack)
    _GDIPlus_BrushDispose($hBrushWhite)
    _GDIPlus_BrushDispose($hBrushRed)
    _GDIPlus_BrushDispose($hBrushGreen)
    _GDIPlus_BrushDispose($hBrushYellow)
    _GDIPlus_BrushDispose($hBrushBlue)
    _GDIPlus_BrushDispose($hBrushScore)
    _GDIPlus_BrushDispose($hBrushTime)
    _GDIPlus_BrushDispose($hBrushScoreTable)
    _GDIPlus_BrushDispose($hBrushButtonGreen2)
    _GDIPlus_BrushDispose($hBrushButtonRed)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontDispose($hFont2)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_Exit

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

    Func _ArraySortNum(ByRef $array); Von Oscar https://autoit.de/index.php?page…5912#post105912, Bearbeitet von ????
    Local $tmp,$tmp2
    For $i = 1 To UBound($array) - 2
    For $j = $i + 1 To UBound($array) - 1
    If Number($array[$j][1]) > Number($array[$i][1]) Then
    $tmp = $array[$i][0]
    $tmp2 = $array[$i][1]
    $array[$i][0] = $array[$j][0]
    $array[$i][1] = $array[$j][1]
    $array[$j][0] = $tmp
    $array[$j][1] = $tmp2
    EndIf
    Next
    Next
    EndFunc

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

    Func _GDIPlus_BrushCreateLinear($iX1, $iY1, $iX2, $iY2, $iARGB1 = 0xFF000000, $iARGB2 = 0xFFFFFFFF)
    Local $aResult, $Start, $End, $pStart, $pEnd
    $Start = DllStructCreate("int X;int Y")
    DllStructSetData($Start, "X", $iX1)
    DllStructSetData($Start, "Y", $iY1)
    $pStart = DllStructGetPtr($Start)
    $End = DllStructCreate("int X;int Y")
    DllStructSetData($End, "X", $iX2)
    DllStructSetData($End, "Y", $iY2)
    $pEnd = DllStructGetPtr($End)
    $aResult = DllCall($ghGDIPDll, "int", "GdipCreateLineBrushI", "ptr", $pStart, "ptr", $pEnd, "int", $iARGB1, "int", $iARGB2, "int", 0, "int*", 0)
    If @error Then Return 0
    Return SetError(0, $aResult[0], $aResult[6])
    EndFunc ;==>_GDIPlus_BrushCreateLinear

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

    Func _PointIsInCircle($iX_Point, $iY_Point, $iX_Circle, $iY_Circle, $iRadius_Circle)
    $iDistPoints = _GetPointsDistance($iX_Point, $iY_Point, $iX_Circle, $iY_Circle)
    If ($iRadius_Circle > 0 And $iDistPoints < $iRadius_Circle) Or ($iRadius_Circle < 0 And $iDistPoints > $iRadius_Circle) Or $iDistPoints = 0 Then Return $iDistPoints
    Return -1
    EndFunc ;==>_PointIsInCircle

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

    Func _CircleIsTouchingCircle($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2, $iRadius_Circle1, $iRadius_Circle2)
    $iDistCircles = _GetPointsDistance($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2)
    If $iDistCircles < $iRadius_Circle1 + $iRadius_Circle2 Then Return True
    Return False
    EndFunc ;==>_CircleIsTouchingCircle

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

    Func _CircleIsInCircle($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2, $iRadius_Circle1, $iRadius_Circle2)
    $iDistCircles = _GetPointsDistance($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2)
    If $iRadius_Circle1 > $iRadius_Circle2 And $iDistCircles <= $iRadius_Circle1 - $iRadius_Circle2 Then Return True
    If $iRadius_Circle1 < $iRadius_Circle2 And $iDistCircles <= $iRadius_Circle2 - $iRadius_Circle1 Then Return True
    Return False
    EndFunc ;==>_CircleIsInCircle

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

    Func _GetPointsDistance($iPointX1, $iPointY1, $iPointX2, $iPointY2)
    Return Sqrt(($iPointX1 - $iPointX2) ^ 2 + ($iPointY1 - $iPointY2) ^ 2)
    EndFunc ;==>_GetPointsDistance

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

    Func WM_PAINT()
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iGUIWidth, $iGUIHeight)
    EndFunc ;==>WM_PAINT

    [/autoit]

    Dateien

    Targets 1.1.zip 138,2 kB – 289 Downloads Targets 1.3.zip 233,59 kB – 356 Downloads
  • MouseMeter mit exakter Berechnung

    • name22
    • 3. April 2010 um 11:43

    Ich weiß, dann verwende ich eben einfach nur Floor. :P

  • Was ist hier falsch?

    • name22
    • 3. April 2010 um 10:51
    Zitat von m-obi

    er hat doch aber

    [autoit]

    HotKeySet ( "A" , "start" )

    [/autoit]


    Stimmt, dass stünde für Shift + a... Aber eigentlich müsste mein Vorschlag funktionieren. ?( Zumindest tut er das bei mir. :S

  • MouseMeter mit exakter Berechnung

    • name22
    • 3. April 2010 um 10:49
    Zitat

    Cool, allerdings gibt es (bei mir zumindest) einen klitzekleinen fehler:
    Die Meter Anzeige steigt immer etwas früher an als die Zentimeter anzeige,
    dabei sollten beide anzeigen gleich ansteigen.


    Das Problem dabei ist, dass Floor nicht auf eine bestimmte Anzzahl an Dezimalstellen runden bzw. "flooren" :D kann.
    Wenn ich Round verwende werden aus 0.05 Metern eben 0.1 Meter ;) Ich werde mich mal darum kümmern.

  • Was ist hier falsch?

    • name22
    • 3. April 2010 um 10:39
    Zitat

    Wozu sollen auch die geschweiften Klammern dienen? Probier mal ohne.


    Das hat er doch schon in seinem Script gemacht, und weil es dann nicht funktionierte hab ich das hier vorgeschlagen. :D

  • While in While oder andere Lösung?!

    • name22
    • 3. April 2010 um 01:47

    Also ich kann im 3ten Script (mit 1 While Schleife) in Zeile 8 keinen Fehler entdecken, was die Syntax betrifft. Außerdem ist das ja nicht das vollständige Script.

  • While in While oder andere Lösung?!

    • name22
    • 3. April 2010 um 01:41
    Zitat

    Also ich sehe nen fehler, hab ihn markiert:
    11140464800521777_codeblock_ 0


    ?( Was bitte soll das darstellen?

  • While in While oder andere Lösung?!

    • name22
    • 3. April 2010 um 01:35

    Wieso probierst du es nicht einfach, meinst du dein PC könnte in die Luft fliegen?
    Ich sehe da keinen Fehler also versuch es einfach!

  • While in While oder andere Lösung?!

    • name22
    • 3. April 2010 um 01:25

    Wozu dann die ganzen Schleifen? ?(
    Du brauchst doch dann im Prinzip nur eine. :huh:

  • While in While oder andere Lösung?!

    • name22
    • 3. April 2010 um 01:19

    Du hast immer noch nichts dazugelernt...
    Es geht nicht darum, dass du While Schleifen verwendest oder, dass sie ineinander stehen. Du verwendest Endlosschleifen (While 1).
    Benutze doch eine For Schleife, wenn du willst, dass etwas z.B. 5 mal gemacht wird.
    Wenn es um etwas anderes geht z.B. eine zeitliche Bedingung mache doch eine If Abfrage in die Schleife die ggf. ExitLoop aufruft.
    tkausl hat es von Anfang an verstanden, aber du tust das immer noch nicht. :thumbdown:

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™