Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

SAMP Keybinder mit Patchserver


  • Please log in to reply
23 replies to this topic
Bruttosozialprodukt
  • Members
  • 457 posts
  • Last active: Oct 18 2015 08:47 AM
  • Joined: 20 Oct 2012

Ich habs einfach mal kompiliert und ausgeführt. Funktioniert einwandfrei. ;)



GYJohn
  • Members
  • 20 posts
  • Last active: Oct 01 2016 11:53 AM
  • Joined: 28 Sep 2014

Wuhu!!

Sehr geil geht!!

 

Nur es kommt kein Text wenns geupdatet wurde.

Kann man da iwas machen? Oder ein Ladebalken wär natürlich noch geiler :D 

Aber sehr geil dass es geht!

Vielen dank!



Bruttosozialprodukt
  • Members
  • 457 posts
  • Last active: Oct 18 2015 08:47 AM
  • Joined: 20 Oct 2012

Die Nachricht kann nur kommen, wenn du das Trayicon nciht deaktiviert hast. Also entweder diese Zeile entfernen: #NoTrayIcon

oder TrayTip durch MsgBox ersetzen.

 

Ein Beispiel mit Fortschrittsbalken kann ich dir gleich auch geben. Hat aber eher wenig sinn, da das Update weniger als ne Sekunde braucht.



Bruttosozialprodukt
  • Members
  • 457 posts
  • Last active: Oct 18 2015 08:47 AM
  • Joined: 20 Oct 2012

Hier mit Fortschrittsbalken für den Download:

myVersion := "1.0" ;die version dieses scripts
If %1%
    FileDelete, %1% ;Lösche die alte version, wenn gerade geupdated wurde
Update(myVersion) ;versionsprüfung und ggf updaten

MsgBox,, Du hast jetzt die neuste Version.

;hier dann code für die keybindings und dein restlicher code
;...

Update(myVersion) {
    Static patchHost := "http://gyjohn.net/dl/"
    HttpObj := ComObjCreate("WinHttp.WinHttpRequest.5.1")
    url := patchHost "patchcheck.php"
    HttpObj.Open("POST", url)
    HttpObj.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0")
    
    HttpObj.Send(myVersion)
    newFile := HttpObj.ResponseText ;der dateiname der neuen version, falls es eie neue gibt
    If InStr(newFile,".exe") { ;wenn wir den namen einer exe datei bekommen haben
        DownloadFile(patchHost newFile, newFile)
        Run, %newFile% "%A_ScriptFullPath%" ;neue version starten und den pfad zur alter übergeben, sodass die alte gelöscht werden kann
        ExitApp ;alte version beenden
    }
}
DownloadFile(UrlToFile, SaveFileAs, Overwrite := True, UseProgressBar := True) {
      If (!Overwrite && FileExist(SaveFileAs))
          Return
      If (UseProgressBar) {
            HttpObj := ComObjCreate("WinHttp.WinHttpRequest.5.1")
            HttpObj.Open("HEAD", UrlToFile)
            HttpObj.Send()
            FinalSize := HttpObj.GetResponseHeader("Content-Length")
            Progress, H80, , Downloading..., %SaveFileAs%
            SetTimer, __UpdateProgressBar, 10
      }
      
      HttpObj.Open("GET", UrlToFile) ;neue version in den ram laden:
      HttpObj.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0")
      HttpObj.Send()
      ADODBObj := ComObjCreate("ADODB.Stream") ;neue version aus dem ram aud die festplatte laden:
      ADODBObj.Type := 1
      ADODBObj.Open()
      ADODBObj.Write(HttpObj.ResponseBody)
      ADODBObj.SaveToFile(A_ScriptDir "\" SaveFileAs, 2)
      ADODBObj.Close()
      Sleep, 800
      If (UseProgressBar) {
          Progress, Off
          SetTimer, __UpdateProgressBar, Off
      }
    Return
    
      __UpdateProgressBar:
            CurrentSize := FileOpen(SaveFileAs, "r").Length ;FileGetSize wouldn't return reliable results
            CurrentSizeTick := A_TickCount
            Speed := Round((CurrentSize/1024-LastSize/1024)/((CurrentSizeTick-LastSizeTick)/1000)) . " Kb/s"
            LastSizeTick := CurrentSizeTick
            LastSize := FileOpen(SaveFileAs, "r").Length
            PercentDone := Round(CurrentSize/FinalSize*100)
            Progress, %PercentDone%, %PercentDone%`% Done, Downloading...  (%Speed%), Downloading %SaveFileAs% (%PercentDone%`%)
      Return
}

Da der download aber bei mir so ca 1/6 Sekunde dauert, wäre er bei mir sofort voll...



GYJohn
  • Members
  • 20 posts
  • Last active: Oct 01 2016 11:53 AM
  • Joined: 28 Sep 2014
Bei mir dauert ee immerhin fast 1 1/2 Sekunden..^^

Muss ich mir mal wenn ich Zeit hab anschauen ob dass auch geht.

Ansnsten einfach das NoTrayIcon entfernen und dann kommt ne Nachricht?


Hätte noch soviele Fragen zu Autohotkey allgemein.. Aber kann man ja wohl schlechr hier alles schreiben^^


Vielen Dank!
Hast mir sehr geholfen :)

Bruttosozialprodukt
  • Members
  • 457 posts
  • Last active: Oct 18 2015 08:47 AM
  • Joined: 20 Oct 2012

Jop, wenn du das #NoTrayIcon entfernst, dann kommt unten rechts in der Taskleiste die Benachrichtigung.

 

Zu den anderen Fragen machst du lieber neue Themen auf, denn hier wird außer mir wohl niemand anderes mehr antworten und ich hab im Moment echt kaum Zeit..



GYJohn
  • Members
  • 20 posts
  • Last active: Oct 01 2016 11:53 AM
  • Joined: 28 Sep 2014
Alles klar.

Danke fürn Patcher. Ist das dein Script?
Falls ich mal ein TuT drüber machen will.

_ahk_
  • Members
  • 16 posts
  • Last active: Apr 14 2015 07:22 PM
  • Joined: 03 Nov 2013

http://forum.sa-mp.d...06568db8ee604a7

Falls es noch benötigt wird.



Bruttosozialprodukt
  • Members
  • 457 posts
  • Last active: Oct 18 2015 08:47 AM
  • Joined: 20 Oct 2012

Alles klar.

Danke fürn Patcher. Ist das dein Script?
Falls ich mal ein TuT drüber machen will.

Sorry, hatte die Frage irgendwie überlesen. Ja den Code habe ich komplett selber geschrieben. Den Download-Teil mit der Fortschrittsbalken habe ich hier vor einiger Zeit mal vorgestellt: http://www.autohotke...h-progress-bar/

Das Script was ich dir geschrieben habe, hat aber eine leicht verbesserte und angepasste Version davon bekommen.

 

Code den ich hier im Forum veröffentliche darf jeder gerne verwenden wie er wo möchte. Ich freue mich natürlich immer, wenn man mich dann auch irgendwo kurz erwähnt, aber Pflicht ist das natürlich nicht. ;)

 

@_ahk_ Downloads mit UrlDownloadToFile funktionieren auf einigen Hostern nicht, da ein User-Agent header erwartet wird. Ich glaube bplaced.net war ein bekanntes Beispiel dafür. Außerdem ist das Downloaden auf die Festplatte, Auslesen und anschließende Löschen von Textdateien ziemlich ineffizient. Von dem Ausführen Temporär erstellter Scripts will ich gar nicht erst anfangen...