Super Mario Jump n Run

  • Tja Vista halt .. sag ich nur zu selber schuld :P
    Bei mir läuft es super .. leider wenn man stirbt beendet sich das script sofort

  • Naja ich hab einmal xp sp2 und win vista sp1 aber bei beiden kann ich es nicht spielen auch wenn ich es enpacke ?(
    Aber wiso funst es bei einer helfte und bei der anderen helfte nicht ??

  • haste es mal über scite gestartet ?
    Und schau wie weit er kommt .. Lädt er die Leveldatei komplett ?

    Das sollte er vllt ein wenig anders gestallten
    da kann ich mir vorstellen das es deswegen so lange dauert ebi einigen..

    Leider liest er die datei jedes mal einzelnd ein IniRead <-- anstatt das file mit einmal einzulesen und in einem array die daten zu speichern oder in einer hash

  • hammer :) !! Einfach perfekt :) Mach weiter an diesem Projekt ! Bitte !!! :D Es ist einfach perfekt :)

  • joa eigenlich muss man jetzt noch

    1 : sound
    2 : nach dem tot wieder am start kommen oder (checkpoint were cool) :thumbup:
    3 : Mehr lvl da mann ja am ende stirbt :D

    Re : gummibär gute arbeit !!!

  • Ich habe einen Bug gefunden. Da ich nicht alle Posts durchgelesen habe kann es sein das das schon jemand entdeckt hat.
    Und zwar, wenn man der "große" Mario ist und ein Fragezeichen anspringt kommt eine Feuerblume, wenn man diese nicht gleich aufnimmt sonder erst durch einen Gegner
    verkleinert wird und man dann die Blume aufnimmt wird man zu einem Feuermario.
    Ich denke das ist nicht beabsichtigt :)
    Gruß Sven

  • geiles Spiel :D

    Ich komm aber an einer Stelle nicht weiter, wo muss ich hin wenn der Balken einen hochträgt? Nach rechts war glaubich nichts mehr und wenn man draufbleibt stirbt man weil man an die Decke gedrückt wird^^

  • joa eigenlich muss man jetzt noch

    1 : sound
    2 : nach dem tot wieder am start kommen oder (checkpoint were cool) :thumbup:
    3 : Mehr lvl da mann ja am ende stirbt :D

    Re : gummibär gute arbeit !!!

    Ich hab hier mal eine Version gebastelt ( nur kleinigkeiten geändert )
    Sound ist aber noch nicht ganz perfekt

    Als erste erstmal ein sleep in die schleife da die Cpu sonst gefickt wird

    Weiteres was mir aufgefallen ist das man durch mauern durschiessen kann ( 1 Fleischfressende pflanze wird getroffen )

    Ich denke mal ein kleiner Level Editor wäre schon nicht schlecht ..
    Vllt sollte man die levels noch ein wenig anders aufbauen
    Es werden ja eigentlich nur die positionsdaten gerbaucht wo wirklich was ist und nicht immer die lerren felder

    zb 1-1-1
    erstes feld ganz unten stein wo man drauf steht ( Boden
    2-1-1
    3-1-1
    3-6-24

    usw
    So müsste das script noch weniger daten einlesen

    als erstes sollte die CPU belastung gesenkt werden ein Mario game was sich eine von meinen 2 kernen komplett bedient ist einfach zu hoch


    Sind alles nur vorschläge

    Denke das Problem ist das die Gui jedes mal alles neu aufbauen muss

  • Also einen Leveleditor gibt es eigentlich schon...

    Dies ist natürlich NICHT die endgültige Version, da sie wirklich schlecht und langsam zu bedienen ist!
    Sondern nur schnell mal hinprogrammiert, um mir die Entwicklung des Games etwas zu vereinfachen.

    Zum Testen reichts mal aus ;)

    Spoiler anzeigen
    [autoit]

    #include <ScrollBarConstants.au3>
    #include <GuiScrollBars.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StructureConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GuiOnEventMode", 1)

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

    Global $iScroll = 0, $iItem = 0, $iLX = 0, $iLY = 0

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

    Global $hGui = GUICreate("Level Editor", 320 * 3 + 3, 640)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_EXIT")
    GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "_Settings")
    Global $hItem[60]
    Global $hDummyItem = GUICtrlCreateDummy()
    For $j = 0 To 2
    For $i = 0 To 18
    $hItem[$i + 18 * $j] = GUICtrlCreateCheckbox("", 10 + $i * 50, 270 + 50 * $j, 40, 40, BitOR($BS_PUSHLIKE, $BS_AUTORADIOBUTTON, $BS_ICON))
    _ItemSetIcon($hItem[$i + 18 * $j], $i + 19 * $j)
    GUICtrlSetOnEvent(-1, "_SetItem")
    Next
    Next

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

    GUICtrlCreateGroup("Settings Fragezeichen", 10, 430, 200, 80)
    Global $hFragezeichenSet1 = GUICtrlCreateInput("0", 20, 455, 40, 20)
    GUICtrlSetOnEvent(-1, "_SetParam")
    GUICtrlCreateLabel("Anzahl Münzen", 80, 458, 100, 20)
    Global $hFragezeichenSet2 = GUICtrlCreateCheckbox("Pilz", 20, 480, 180, 20)
    GUICtrlSetOnEvent(-1, "_SetParam")

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

    GUICtrlCreateGroup("Settings Rohr", 230, 430, 200, 80)
    Global $hRohrSet = GUICtrlCreateCheckbox("Pflanze", 240, 480, 180, 20)
    GUICtrlSetOnEvent(-1, "_SetParam")

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

    GUICtrlCreateGroup("Settings Aufzug", 450, 430, 200, 120)
    GUIStartGroup()
    Global $hAufzugSet1 = GUICtrlCreateRadio("Auf", 460, 455, 80, 20)
    GUICtrlSetOnEvent(-1, "_SetParam")
    Global $hAufzugSet2 = GUICtrlCreateRadio("Ab", 460, 480, 80, 20)
    GUICtrlSetOnEvent(-1, "_SetParam")
    GUIStartGroup()
    Global $hAufzugSet3 = GUICtrlCreateRadio("Links", 560, 455, 80, 20)
    GUICtrlSetOnEvent(-1, "_SetParam")
    Global $hAufzugSet4 = GUICtrlCreateRadio("Rechts", 560, 480, 80, 20)
    GUICtrlSetOnEvent(-1, "_SetParam")
    GUICtrlCreateRadio("Nichts", 560, 505, 80, 20)
    GUICtrlSetOnEvent(-1, "_Clear")

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

    Global $hLoad = GUICtrlCreateButton("Load", 800, 460, 100, 30)
    GUICtrlSetOnEvent(-1, "_Load")
    Global $hSave = GUICtrlCreateButton("Save", 800, 510, 100, 30)
    GUICtrlSetOnEvent(-1, "_Save")

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

    GUISetState(@SW_SHOW, $hGui)

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

    Global $hChild = GUICreate("Level Edit", 320 * 3, 250, 0, 0, BitOR($WS_CHILD, $WS_HSCROLL), $WS_EX_CLIENTEDGE, $hGui)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_EXIT")
    GUISetBkColor(0x0099FF)
    ;GUICtrlCreateLabel("",0,0,6740,240)
    ;GUICtrlSetBkColor(-1,0x0099FF)
    ;GUICtrlSetState(-1,$GUI_DISABLE)

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

    _GUIScrollBars_Init($hChild, 10, 0)
    _GUIScrollBars_ShowScrollBar($hChild, $SB_HORZ, True)
    _GUIScrollBars_ShowScrollBar($hChild, $SB_VERT, False)
    Local $tSCROLLINFO = DllStructCreate($tagSCROLLINFO)
    DllStructSetData($tSCROLLINFO, "fMask", BitOR($SIF_RANGE, $SIF_PAGE))
    DllStructSetData($tSCROLLINFO, "nMin", 0)
    DllStructSetData($tSCROLLINFO, "nMax", 6740)
    DllStructSetData($tSCROLLINFO, "nPage", 320 * 3)
    _GUIScrollBars_SetScrollInfo($hChild, $SB_HORZ, $tSCROLLINFO)

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

    Global $hStone[49][13], $aStone[400][13], $aStoneSettings[400][13][2]
    For $i = 1 To 337
    For $j = 1 To 12
    $aStone[$i][$j] = 0
    $aStoneSettings[$i][$j][0] = 0
    $aStoneSettings[$i][$j][1] = 0
    Next
    Next

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

    Global $hDummyStone = GUICtrlCreateDummy()
    For $i = 1 To 48
    For $j = 1 To 12
    $hStone[$i][$j] = GUICtrlCreateIcon(@ScriptDir & "\GFX.icl", 0, $i * 20 - 20, 240 - $j * 20, 19, 19)
    GUICtrlSetOnEvent(-1, "_SetStone")
    Next
    Next

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

    GUISetState(@SW_SHOW, $hChild)

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

    GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Clear()
    GUICtrlSetState($hAufzugSet1, $GUI_UNCHECKED)
    GUICtrlSetState($hAufzugSet2, $GUI_UNCHECKED)
    GUICtrlSetState($hAufzugSet3, $GUI_UNCHECKED)
    GUICtrlSetState($hAufzugSet4, $GUI_UNCHECKED)
    EndFunc ;==>_Clear

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

    Func _Load()
    Local $sLine, $aLine
    Local $hFile = FileOpenDialog("Open", @ScriptDir, "(*.lvl)")
    For $x = 1 To 337
    ToolTip("Loading " & Round($x * 100 / 337) & "%")
    For $y = 1 To 12
    $sLine = IniRead($hFile, "Stones", $x & "-" & $y, "0;0;0")
    ;ConsoleWrite($sLine)
    $aLine = StringSplit($sLine, ";", 2)
    $aStone[$x][$y] = $aLine[0]
    $aStoneSettings[$x][$y][0] = $aLine[1]
    $aStoneSettings[$x][$y][1] = $aLine[2]
    Next
    Next
    GUISetState(@SW_LOCK, $hGui)
    GUISetState(@SW_LOCK, $hChild)
    For $i = 1 To 48
    For $j = 1 To 12
    _ItemSetIcon($hStone[$i][$j], $aStone[$i + $iScroll][$j], -1)
    Next
    Next
    GUISetState(@SW_UNLOCK, $hChild)
    GUISetState(@SW_UNLOCK, $hGui)
    ToolTip("")
    EndFunc ;==>_Load

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

    Func _Save()
    Local $hFile = FileOpenDialog("Save", @ScriptDir, "(*.lvl)")
    For $x = 1 To 337
    ToolTip("Saving " & Round($x * 100 / 337) & "%")
    For $y = 1 To 12
    IniWrite($hFile, "Stones", $x & "-" & $y, $aStone[$x][$y] & ";" & $aStoneSettings[$x][$y][0] & ";" & $aStoneSettings[$x][$y][1])
    Next
    Next
    ToolTip("")
    ;Exit
    EndFunc ;==>_Save

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

    Func _SetParam()
    ConsoleWrite("SetN " & $iLX & " " & $iLY & @LF)
    Switch @GUI_CtrlId
    Case $hFragezeichenSet1, $hRohrSet
    $aStoneSettings[$iLX][$iLY][0] = GUICtrlRead(@GUI_CtrlId)
    Case $hFragezeichenSet2
    $aStoneSettings[$iLX][$iLY][1] = GUICtrlRead(@GUI_CtrlId)
    Case $hAufzugSet1, $hAufzugSet2, $hAufzugSet3, $hAufzugSet4
    $aStoneSettings[$iLX][$iLY][0] = 0
    $aStoneSettings[$iLX][$iLY][1] = 0
    If GUICtrlRead($hAufzugSet1) = 1 Then $aStoneSettings[$iLX][$iLY][1] = -2
    If GUICtrlRead($hAufzugSet2) = 1 Then $aStoneSettings[$iLX][$iLY][1] = 2
    If GUICtrlRead($hAufzugSet3) = 1 Then $aStoneSettings[$iLX][$iLY][0] = -2
    If GUICtrlRead($hAufzugSet4) = 1 Then $aStoneSettings[$iLX][$iLY][0] = 2
    EndSwitch
    EndFunc ;==>_SetParam

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

    Func _Settings()
    Local $info = GUIGetCursorInfo($hChild)
    Local $iIndex = $info[4] - $hDummyStone
    If $iIndex < 1 Or $iIndex > 576 Then Return
    GUICtrlSetState($hFragezeichenSet1, $GUI_DISABLE)
    GUICtrlSetState($hFragezeichenSet2, $GUI_DISABLE)
    GUICtrlSetState($hRohrSet, $GUI_DISABLE)
    GUICtrlSetState($hAufzugSet1, $GUI_DISABLE)
    GUICtrlSetState($hAufzugSet2, $GUI_DISABLE)
    GUICtrlSetState($hAufzugSet3, $GUI_DISABLE)
    GUICtrlSetState($hAufzugSet4, $GUI_DISABLE)
    Local $iY = Mod($iIndex, 12)
    Local $iX = Ceiling($iIndex / 12)
    If $iY = 0 Then $iY = 12
    $iLX = $iX + $iScroll
    $iLY = $iY
    Local $iItem = $aStone[$iX + $iScroll][$iY]
    Switch $iItem
    Case 6
    GUICtrlSetState($hFragezeichenSet1, $GUI_ENABLE)
    GUICtrlSetState($hFragezeichenSet2, $GUI_ENABLE)
    GUICtrlSetData($hFragezeichenSet1, $aStoneSettings[$iX + $iScroll][$iY][0])
    If $aStoneSettings[$iX + $iScroll][$iY][1] = 1 Then
    GUICtrlSetState($hFragezeichenSet2, $GUI_CHECKED)
    Else
    GUICtrlSetState($hFragezeichenSet2, $GUI_UNCHECKED)
    EndIf
    Case 8
    GUICtrlSetState($hRohrSet, $GUI_ENABLE)
    If $aStoneSettings[$iX + $iScroll][$iY][0] = 1 Then
    GUICtrlSetState($hRohrSet, $GUI_CHECKED)
    Else
    GUICtrlSetState($hRohrSet, $GUI_UNCHECKED)
    EndIf
    Case 38
    GUICtrlSetState($hAufzugSet1, $GUI_ENABLE)
    GUICtrlSetState($hAufzugSet2, $GUI_ENABLE)
    GUICtrlSetState($hAufzugSet3, $GUI_ENABLE)
    GUICtrlSetState($hAufzugSet4, $GUI_ENABLE)
    GUICtrlSetState($hAufzugSet3, $GUI_UNCHECKED)
    GUICtrlSetState($hAufzugSet4, $GUI_UNCHECKED)
    If $aStoneSettings[$iX + $iScroll][$iY][0] < 0 Then
    GUICtrlSetState($hAufzugSet3, $GUI_CHECKED)
    ElseIf $aStoneSettings[$iX + $iScroll][$iY][0] > 0 Then
    GUICtrlSetState($hAufzugSet4, $GUI_CHECKED)
    EndIf
    GUICtrlSetState($hAufzugSet1, $GUI_UNCHECKED)
    GUICtrlSetState($hAufzugSet2, $GUI_UNCHECKED)
    If $aStoneSettings[$iX + $iScroll][$iY][1] < 0 Then
    GUICtrlSetState($hAufzugSet1, $GUI_CHECKED)
    ElseIf $aStoneSettings[$iX + $iScroll][$iY][1] > 0 Then
    GUICtrlSetState($hAufzugSet2, $GUI_CHECKED)
    EndIf
    EndSwitch
    EndFunc ;==>_Settings

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

    Func _SetStone()
    GUICtrlSetState($hFragezeichenSet1, $GUI_DISABLE)
    GUICtrlSetState($hFragezeichenSet2, $GUI_DISABLE)
    GUICtrlSetState($hRohrSet, $GUI_DISABLE)
    GUICtrlSetState($hAufzugSet1, $GUI_DISABLE)
    GUICtrlSetState($hAufzugSet2, $GUI_DISABLE)
    GUICtrlSetState($hAufzugSet3, $GUI_DISABLE)
    GUICtrlSetState($hAufzugSet4, $GUI_DISABLE)
    Local $iIndex = @GUI_CtrlId - $hDummyStone
    Local $iY = Mod($iIndex, 12)
    Local $iX = Ceiling($iIndex / 12)
    If $iY = 0 Then $iY = 12
    $iLX = $iX + $iScroll
    $iLY = $iY
    If $aStone[$iX + $iScroll][$iY] <> $iItem Then _SetSettings($iX + $iScroll, $iY, $iItem)
    $aStone[$iX + $iScroll][$iY] = $iItem
    _ItemSetIcon(@GUI_CtrlId, $iItem, -1)
    Switch $iItem
    Case 6
    GUICtrlSetState($hFragezeichenSet1, $GUI_ENABLE)
    GUICtrlSetState($hFragezeichenSet2, $GUI_ENABLE)
    GUICtrlSetData($hFragezeichenSet1, $aStoneSettings[$iX + $iScroll][$iY][0])
    If $aStoneSettings[$iX + $iScroll][$iY][1] = 1 Then
    GUICtrlSetState($hFragezeichenSet2, $GUI_CHECKED)
    Else
    GUICtrlSetState($hFragezeichenSet2, $GUI_UNCHECKED)
    EndIf
    Case 8
    GUICtrlSetState($hRohrSet, $GUI_ENABLE)
    If $aStoneSettings[$iX + $iScroll][$iY][0] = 1 Then
    GUICtrlSetState($hRohrSet, $GUI_CHECKED)
    Else
    GUICtrlSetState($hRohrSet, $GUI_UNCHECKED)
    EndIf
    Case 38
    GUICtrlSetState($hAufzugSet1, $GUI_ENABLE)
    GUICtrlSetState($hAufzugSet2, $GUI_ENABLE)
    GUICtrlSetState($hAufzugSet3, $GUI_ENABLE)
    GUICtrlSetState($hAufzugSet4, $GUI_ENABLE)
    GUICtrlSetState($hAufzugSet3, $GUI_UNCHECKED)
    GUICtrlSetState($hAufzugSet4, $GUI_UNCHECKED)
    If $aStoneSettings[$iX + $iScroll][$iY][0] < 0 Then
    GUICtrlSetState($hAufzugSet3, $GUI_CHECKED)
    ElseIf $aStoneSettings[$iX + $iScroll][$iY][0] > 0 Then
    GUICtrlSetState($hAufzugSet4, $GUI_CHECKED)
    EndIf
    GUICtrlSetState($hAufzugSet1, $GUI_UNCHECKED)
    GUICtrlSetState($hAufzugSet2, $GUI_UNCHECKED)
    If $aStoneSettings[$iX + $iScroll][$iY][1] < 0 Then
    GUICtrlSetState($hAufzugSet1, $GUI_CHECKED)
    ElseIf $aStoneSettings[$iX + $iScroll][$iY][1] > 0 Then
    GUICtrlSetState($hAufzugSet2, $GUI_CHECKED)
    EndIf
    _ItemSetIcon(@GUI_CtrlId + 12, $iItem, -1)
    _ItemSetIcon(@GUI_CtrlId + 24, $iItem, -1)
    EndSwitch
    EndFunc ;==>_SetStone

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

    Func _SetSettings($iX, $iY, $iI)
    $aStoneSettings[$iX][$iY][0] = 0
    $aStoneSettings[$iX][$iY][1] = 0
    Switch $iI
    Case 6 ; Fragezeichen, (wird dann zu 6)
    $aStoneSettings[$iX][$iY][0] = 5
    $aStoneSettings[$iX][$iY][1] = 0
    Case 9 ; Rohr, 3 = Eingang
    $aStoneSettings[$iX][$iY][0] = 0
    $aStoneSettings[$iX][$iY][1] = 0
    Case 38
    $aStoneSettings[$iX][$iY][0] = -2
    $aStoneSettings[$iX][$iY][1] = 0
    EndSwitch
    EndFunc ;==>_SetSettings

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

    Func _SetItem()
    $iItem = @GUI_CtrlId - $hDummyItem - 1
    EndFunc ;==>_SetItem

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

    Func _ItemSetIcon($hCtrlID, $iIndex, $iOff = 0)
    Switch $iIndex
    Case 0
    GUICtrlSetImage($hCtrlID, @ScriptDir & "\GFX.icl", 0 + $iOff)
    Case 1 To 13
    GUICtrlSetImage($hCtrlID, @ScriptDir & "\GFX.icl", 43 + $iIndex + $iOff)
    Case 14 To 33
    GUICtrlSetImage($hCtrlID, @ScriptDir & "\GFX.icl", 68 + $iIndex + $iOff)
    Case 34 ; Geld
    GUICtrlSetImage($hCtrlID, @ScriptDir & "\GFX.icl", 44 + $iIndex + $iOff)
    Case 35 ; Watschelmann
    GUICtrlSetImage($hCtrlID, @ScriptDir & "\GFX.icl", 24 + $iIndex + $iOff)
    Case 36 ; Schildkröte
    GUICtrlSetImage($hCtrlID, @ScriptDir & "\GFX.icl", 26 + $iIndex + $iOff)
    Case 37
    GUICtrlSetImage($hCtrlID, @ScriptDir & "\GFX.icl", 28 + $iIndex + $iOff)
    Case 38
    GUICtrlSetImage($hCtrlID, @ScriptDir & "\GFX.icl", 34 + $iIndex + $iOff)
    Case Else
    If $iOff = 0 Then GUICtrlSetState($hCtrlID, $GUI_DISABLE)
    EndSwitch
    EndFunc ;==>_ItemSetIcon

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

    Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam)
    #forceref $Msg, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $index = -1, $xChar, $xPos
    Local $Min, $Max, $Page, $Pos, $TrackPos
    For $x = 0 To UBound($aSB_WindowInfo) - 1
    If $aSB_WindowInfo[$x][0] = $hWnd Then
    $index = $x
    $xChar = $aSB_WindowInfo[$index][2]
    ExitLoop
    EndIf
    Next
    If $index = -1 Then Return 0
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_HORZ)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    $xPos = DllStructGetData($tSCROLLINFO, "nPos")
    $Pos = $xPos
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")
    #forceref $Min, $Max
    Switch $nScrollCode
    Case $SB_LINELEFT ; user clicked left arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - 20)
    Case $SB_LINERIGHT ; user clicked right arrow
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + 20)
    Case $SB_PAGELEFT ; user clicked the scroll bar shaft left of the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)
    Case $SB_PAGERIGHT ; user clicked the scroll bar shaft right of the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)
    Case $SB_THUMBTRACK ; user dragged the scroll box
    DllStructSetData($tSCROLLINFO, "nPos", $TrackPos)
    EndSwitch
    $iScroll = Floor(DllStructGetData($tSCROLLINFO, "nPos") / 20)
    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")
    GUISetState(@SW_LOCK, $hGui)
    GUISetState(@SW_LOCK, $hChild)
    For $i = 1 To 48
    For $j = 1 To 12
    _ItemSetIcon($hStone[$i][$j], $aStone[$i + $iScroll][$j], -1)
    Next
    Next
    GUISetState(@SW_UNLOCK, $hChild)
    GUISetState(@SW_UNLOCK, $hGui)
    ;If ($Pos <> $xPos) Then _GUIScrollBars_ScrollWindow($hWnd, 1 * ($xPos - $Pos), 0)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_HSCROLL

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

    Func _EXIT()
    Exit
    EndFunc ;==>_EXIT

    [/autoit]

    lgE


    ps.: Die aktuelle Lösung der Levels als Ini-File ist auch nur eine Übergangslösung...
    Aber es wird sich am Game selber noch soviel ändern, daß sich zwangsläufig auch noch die Levels ändern... ^^

  • Files Gelöscht ( Neue Version 1 Post )

    4 Mal editiert, zuletzt von Gummibaer (11. August 2009 um 13:27)

  • ich hab nur ein sleep von 18 millisekunden drin .. der rest müsste nur etwas beschleunigt werden dann gleicht sich das wieder aus ..
    Vorteil so cpu wird nicht so misshandelt
    Wenn du den slepp nicht möchtest dann dukementiere ihn aus Zeile 99

    Beim leveleditor wenn du ihn dir anschaust siehst du auch das er es immer wieder neu aufbaut

    und der Leveleditor hat eukalyptus auch nur so schnell mal gepostet und schrieb auch
    Ich zitiere
    "schnell mal hinprogrammiert, um mir die Entwicklung des Games etwas zu vereinfachen."
    also er musste schnell funktionieren und nicht sein zweck erfüllen.

  • Hab eine neue Version (im ersten Post)

    Als wichtigstes hab ich die Geschwindigkeit optimiert.
    Jetzt läuft das Spiel auch dann flüssig, wenn viele Geldstücke, Aufzüge usw. im Level vorkommen...
    Auch ein Sleep zur Prozessorentlastung hab ich eingebaut, allerdings nur dann, wenn alle Berechnungen schon fertig sind.

    Weiters hab ich auch die Level-Struktur von Gummibaer übernommen :thumbup:

    Auf die Sounds verzichte ich vorerst noch, da ich befürchte, daß es im Script nocht zu viele Änderungen geben wird...
    Aber die Soundfiles gibt es schon mal - Thx Gummibaer!

    lgE

    Edit:
    Ach ja, nicht wundern, wenn man am Schluß nicht über die Fahne kommt, das ist noch nicht fertig :P