GameLauncher

  • Hallo Leute ;D

    Ich schreibe gerade einen Game Lauchner :

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Fileversion=0.3.5.1
    #AutoIt3Wrapper_Res_LegalCopyright=© by Goldy
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ; =======================================================================
    ; Game Launcher
    ; Made by Goldy
    ; © 2010
    ; =======================================================================
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <ProgressConstants.au3>
    ;==================== Code Anfang (Design)====================
    #Region ### START Koda GUI section ### Form=d:\koda\forms\minikallauncherwichtig.kxf
    $Form1_1 = GUICreate("Local KalLauncher V0.3.5", 450, 400, 400, 279)
    $Exit = GUICtrlCreateButton("Exit", 340, 312, 73, 25)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Start = GUICtrlCreateButton("Start", 21, 312, 73, 25)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Credits = GUICtrlCreateButton("Credits", 260, 312, 73, 25)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Option = GUICtrlCreateButton("Option", 100, 312, 73, 25)
    GUICtrLSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Website = GUICtrLCreateButton("Website", 180, 312, 73 ,25)
    GUICtrLSetFont(-1, 12 ,400, 0, "MS Sans Serif")
    $Your = GUICtrlCreateEdit("", 16, 128, 400, 169)
    GUISetState()
    $config1 = IniRead(@ScriptDir & '\config.ini', "Config", "WebsiteButton", "Nicht Gefunden")
    $config2 = IniRead(@ScriptDir & '\config.ini', "Config", "VersionClient", "Nicht Gefunden")
    $config3 = IniRead(@ScriptDir & '\config.ini', "Config", "VersionWeb", "Nicht Gefunden")
    $config4 = IniRead(@ScriptDir & '\config.ini', "Config", "Download", "Nicht Gefunden")
    $Pic1 = GUICtrlCreatePic(@ScriptDir & "\logo.jpg", 40, 8, 353, 97)
    GUISetState(@SW_SHOW)
    $sText = FileRead(@ScriptDir & '\notice.txt')
    If @error Or Not $sText Then
    MsgBox(0, "Error", "Can not open notice.txt.")
    EndIf
    GUICtrlSetData($Your, $sText)
    GUISetState(@SW_SHOW)
    $Progress2 = GUICtrlCreateProgress( 22, 360, 390, 17)
    GUISetState(@SW_SHOW)

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

    #EndRegion ### END Koda GUI section ###
    ;==================== Code Ende(Design)====================
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Exit
    Exit
    Case $Credits
    _credits()
    Case $Start
    Shellexecute("engine.exe", "/load /config debug")
    If Not @error Then Exit
    Case $Option
    ShellExecute("engine.exe", "/setup")
    Case $Website
    ShellExecute ($config1)
    EndSwitch
    WEnd
    ;======Funktionen=======
    Func _credits()
    MsgBox(64, "Credits", "Idea: Goldy" & @CRLF & "Design: Goldy" & @CRLF & "Version 0.3.5" & @CRLF & "©2010 by Goldy")

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

    EndFunc

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

    Dieser Code funktioniert einwandfrei.

    Nun wollte ich noch eine Update Funktion machen dafür habe ich in der GUI

    Das hinzugefügt :

    Spoiler anzeigen
    [autoit]

    $Progress2 = GUICtrlCreateProgress( 22, 360, 390, 17)
    GUISetState(@SW_SHOW)

    [/autoit]


    Ich möchte nun das wenn man angibt :

    Version=http://internet.de/version.ini

    Die Datei mit dem Eintrag in dem Ordner Version verglichen wird.
    Ist die Version im Ordner Kleiner als auf dem Server soll geladen werden
    was im angegeben Ornder ist

    Download=http://internet.de/files/dateiien

    Ist die Version auf dem Server kleiner als die in dem Ornder soll nichts gemacht werden.


    Das diese Sachen aus der einer .ini ausgelesen werden habe ich ja schon.

    Nur weis ich halt nicht wie ich es nun mache
    das Version verglichen wird und
    halt geladen wird aber nur halt dann wenn im Ornder eine kleinere also z.B. V1
    und auf dem server z.B. V2 ist.

    Der Progressbalken soll halt den "Fortschritt" des Downlods anzeigen.

    Ich hoffe man versteht was ich meine.


    Mit freundlichen Grüßen

    Goldy

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]
  • autoBert das hier brauche ich oder :


    Spoiler anzeigen
    [autoit]


    Func _Update()
    IniWrite($sLiz, "Update", "Date", 0) ;damit manuell auf jeden Fall geprüft wird
    _CheckUpdate()
    EndFunc ;==>_Update

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

    Func _CheckUpdate()
    Local $tLastCeck = IniRead($sLiz, "Update", "Date", 0)
    Local $tDiff = _DateDiff('d', "2010/01/01 00:00:00", _NowCalc())
    Local $hFile, $sVar, $iPos, $sVerNr, $sDL_Url, $sDL_Url2
    If $tLastCeck < $tDiff Then
    IniWrite($sLiz, "Update", "Date", $tDiff) ;damit am heutigen Tag nicht mehr geprüft wird
    ToolTip("AutoIt lesen", @DesktopWidth / 2, @DesktopHeight / 2, "Prüfe auf Update ")
    IniWrite($sLiz, "Update", "Status", "Source checken")
    $sVar = _INetGetSource($sUpdateUrl)
    If Not @error Then
    $sVerNr = _StringBetween($sVar, '<title>[Beispiel] NeMP3-P (MP3-Player) Version ', ' - Skripte -')
    If IsArray($sVerNr) Then $sVerNr = $sVerNr[0]
    ;consolewrite($sVerNr & @CRLF)
    If $sVerNr <> $sProgVer Then
    ToolTip("Update von " & $sProgVer & " auf " & $sVerNr, @DesktopWidth / 2, @DesktopHeight / 2, "Prüfe auf Update ")
    $sDL_Url = _StringBetween($sVar, "hat folgende Dateien", 'heruntergeladen') ;dies muss noch exakter werden funktioniert aber
    If IsArray($sDL_Url) Then
    ; _ArrayDisplay($sDL_Url, "Anhänge")
    $sDL_Url = $sDL_Url[1]
    EndIf
    $sDL_Url2 = _StringBetween($sDL_Url, 'href="', '&amp;s=')
    If IsArray($sDL_Url2) Then
    ;_ArrayDisplay($sDL_Url2, "Ref")
    $sDL_Url = $sDL_Url2[1]
    $sDL_Url = StringReplace($sDL_Url, "&amp;", "&")
    EndIf
    ;consolewrite($sDL_Url & @CRLF)
    $iSize = InetGetSize("http://www.autoit.de/" & $sDL_Url)
    If $iSize <> 0 Then ;sollte immer der Fall sein
    $hDown = InetGet("http://www.autoit.de/" & $sDL_Url, @ScriptDir & "\NeMP3.Exe", 1, 1)
    IniWrite($sLiz, "Update", "Status", "Update läuft")
    ToolTip("gestartet", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    AdlibRegister("_CheckDone", 1000)
    Else
    ToolTip("fehlerhaft", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    Sleep(2000)
    IniWrite($sLiz, "Update", "Status", "fehlgeschlagen")
    EndIf
    Else
    ToolTip("kein Update notwendig", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    Sleep(2000)
    EndIf
    Else
    ToolTip("keine Verbidnung" & @CRLF & "probieren Sie es später" & @CRLF & "noch eimal!", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    Sleep(2000)
    EndIf
    EndIf
    ToolTip("")
    EndFunc ;==>_CheckUpdate

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

    Func _CheckDone()
    Local $aData = InetGetInfo($hDown) ; Hole alle Informationen.
    Local $iProz = Round($aData[0] / $iSize * 100, 0)
    ;;consolewrite($iProz & @CRLF)
    ToolTip($iProz, @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    If Not $aData[2] Then Return
    If $aData[3] Then
    If FileMove(@ScriptDir & "\NeMP3.Exe", @ScriptDir & "\NeMP3-P.Exe", 1) Then
    IniDelete($sLiz, "Update", "Status")
    ToolTip("erfolgreich", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    Sleep(2000)
    Else
    ;von Hand kopieren
    EndIf
    Else
    ToolTip("fehlerhaft", @DesktopWidth / 2, @DesktopHeight / 2, "Update ")
    Sleep(2000)
    IniWrite($sLiz, "Update", "Status", "fehlgeschlagen")
    EndIf
    AdlibUnRegister("_CheckDone")
    ToolTip("")
    EndFunc ;==>_CheckDone

    [/autoit]

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]
  • Hallo Goldy,

    entscheidend dafür das nur einmal pro Tag geprüft wird sind diese Zeilen:

    [autoit]

    Func _CheckUpdate()
    Local $tLastCeck = IniRead($sLiz, "Update", "Date", 0)
    Local $tDiff = _DateDiff('d', "2010/01/01 00:00:00", _NowCalc())
    Local $hFile, $sVar, $iPos, $sVerNr, $sDL_Url, $sDL_Url2
    If $tLastCeck < $tDiff Then
    IniWrite($sLiz, "Update", "Date", $tDiff) ;damit am heutigen Tag nicht mehr geprüft wird
    ...
    EndFunc

    [/autoit]

    die Routine prüft den Unterschied der Tage zu einem gewissen Stichtag (bei mir der 1.1.2010) falls der neue Check einen kleineren Wert (als der in die INI eingtragene) ergibt wird weiter gemacht und die aktuelle Differenz eingetragen, die weitere Prüfung vergleicht dann die Versiopnnr (aber das kannstn du warscheins nicht 1:1 übernehmen,

    Edit: natürlich muss _CheckUpdate() beim Programmstart oder einer prägnanten Stelle im Skript aufgerfen werden. Damit die Routine manuell (über Menü) immer funktioniert wird sie auf diesen Event so aufgerufen:

    [autoit]

    Func _Update()
    IniWrite($sLiz, "Update", "Date", 0) ;damit manuell auf jeden Fall geprüft wird
    _CheckUpdate()
    EndFunc ;==>_Update

    [/autoit]


    mfg autoBert

    Einmal editiert, zuletzt von autoBert (11. September 2010 um 03:37)