Hallo,
ich bin momentan dabei für einen Altis Server einen Launcher zu erstellen. Soweit läuft auch alles. Nur würde ich die ein oder andere Sache gern anders geregelt haben, komme da selbst aber leider nicht mehr wirklich weiter.
Und Zwar sieht der komplette Code momentan so aus:
Habe unsere Domain aber entfernt)(
Spoiler anzeigen
Launcher sieht momentan so aus (Nix weltbewegendes, aber für die Bedürfnisse noch ausreichend):
Wenn irgendwo Fehler sind würde ich mich auch über Verbesserungsvorschläge freuen. Ist mein erster Versuch und ich muss da halt noch etwas mehr rein finden.
Ich habe da jedoch paar Probleme...
1. Bei Label2 sollte, wenn man Update oder Download drückt normal die kb von kb mit der Progressbar mitgehen. Tut es aber nicht.
2. Bei Label1 hätte ich es gerne anders gelöst. Und zwar würde ich wollen, das er schon mit der version.txt auf dem Webspace vergleicht und bei Bedarf halt sagt das eine Neue Version verfügbar ist. Dann kann man ja über Update die neue Launcherdateien runterladen. Wenn das fertig ist soll er bei Label1 die neue Version hinschreiben, welche der neue Launcher hat. Was halt auch super wäre, wenn die RaR-Datei auch gleich im Ordner des Launchers entpackt wird und dann mit der neuen Version neustartet.
3. Was noch ein nettes Feature wäre, eine Serverstatusanzeige. Also ob der Webspace online ist. Das Ganze am besten mit einem grünen bzw. roten Symbol für offline angezeigt.
Der Server geht nämlich in paar Tagen in die Closed Alpha und da würde der Launcher einiges einfacher machen. Würde mich deshalb echt freuen, wenn mir da einer etwas unter die Arme greifen könnte mit dem Code. Auch wenn es geht etwas genauer, damit ich auch eventuelle Fehler leichter sehe.
Was ich auch komisch finde. Wenn man die .pbo datei über den Launcher runterlädt und in den MPMissionsCache Order reinpackt. Muss man die Mission beim joinen des Server trotzdem runterladen???
Normal soll das ja dadurch abgenommen werden.
Wenn man die Datei direkt ohne Launcher runterlädt und einfügt, dann muss man die mission nicht noch runterladen? Ich blick da echt nicht ganz durch...
Gruß Tecko
ich bin momentan dabei für einen Altis Server einen Launcher zu erstellen. Soweit läuft auch alles. Nur würde ich die ein oder andere Sache gern anders geregelt haben, komme da selbst aber leider nicht mehr wirklich weiter.
Und Zwar sieht der komplette Code momentan so aus:
Habe unsere Domain aber entfernt)(
VB.NET-Quellcode
- Imports System.IO
- Imports System.Text
- Imports System.Net
- Public Class TerranTitansLauncher
- Friend WithEvents MyWebClient As New Net.WebClient
- Dim client As New Net.WebClient
- Private Sub DownloadProgress(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs)
- Me.ProgressBar1.Value = e.ProgressPercentage
- End Sub
- Private Sub MyWebClient_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles MyWebClient.DownloadProgressChanged
- ProgressBar1.Value = e.ProgressPercentage
- Dim totalbytes As Long = e.TotalBytesToReceive / 1024
- Dim bytes As Long = e.BytesReceived / 1024
- ToString()
- Label2.Text = bytes.ToString & " kb von " & totalbytes.ToString & " kb"
- If ProgressBar1.Value = 100 Then
- Label2.Text = ("Fertig")
- MsgBox("Dein Download war Erfolgreich!")
- End If
- End Sub
- Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
- Dim iox As New IO.StreamReader(My.Application.Info.DirectoryPath & "\data\version.txt", System.Text.Encoding.Default)
- Dim ot As String = iox.ReadToEnd
- iox.Close()
- 'Launchername
- My.MyProject.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\TerranTitansLauncher", "Version", "1.0.0")
- 'hier bitte euren Link/Pfad angeben zur version.txt
- Me.client.DownloadFile("http://launcher.domain.de/version/version.txt", My.MyProject.Application.Info.DirectoryPath & "\data\version.txt")
- Me.TextBox1.Text = My.MyProject.Computer.FileSystem.ReadAllText(My.MyProject.Application.Info.DirectoryPath & "\data\pfad.txt")
- Me.TextBox2.Text = My.MyProject.Computer.FileSystem.ReadAllText(My.MyProject.Application.Info.DirectoryPath & "\data\para.txt")
- Dim streamreader1 As System.IO.StreamReader = New System.IO.StreamReader(My.MyProject.Application.Info.DirectoryPath & "\data\version.txt", System.Text.Encoding.Default)
- Dim str1 As String = streamreader1.ReadToEnd()
- streamreader1.Close()
- 'Launchername
- If ot = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TerranTitansLauncher", "version", "1.0.0") Then
- Else
- MsgBox("Update Verfügbar")
- End If
- End Sub
- Private Sub Form1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
- If (e.Button = Windows.Forms.MouseButtons.Left) Then
- Me.Capture = False
- Me.WndProc(Message.Create(Me.Handle, &HA1, CType(&H2, IntPtr), IntPtr.Zero))
- Else : End If
- End Sub
- Private Sub TerranTitansLauncher_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- PictureBox1.Parent = Me
- PictureBox1.BackColor = Color.Transparent
- PictureBox2.Parent = Me
- PictureBox2.BackColor = Color.Transparent
- PictureBox3.Parent = Me
- PictureBox3.BackColor = Color.Transparent
- PictureBox4.Parent = Me
- PictureBox4.BackColor = Color.Transparent
- PictureBox5.Parent = Me
- PictureBox5.BackColor = Color.Transparent
- PictureBox6.Parent = Me
- PictureBox6.BackColor = Color.Transparent
- PictureBox7.Parent = Me
- PictureBox7.BackColor = Color.Transparent
- End Sub
- Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
- Application.Exit()
- End Sub
- Private Sub PictureBox1_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseEnter
- PictureBox1.BackgroundImage = My.Resources.X
- End Sub
- Private Sub PictureBox1_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
- PictureBox1.BackgroundImage = Nothing
- End Sub
- Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
- Me.WindowState = FormWindowState.Minimized
- End Sub
- Private Sub PictureBox2_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.MouseEnter
- PictureBox2.BackgroundImage = My.Resources.Minimieren
- End Sub
- Private Sub PictureBox2_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.MouseLeave
- PictureBox2.BackgroundImage = Nothing
- End Sub
- Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click
- 'Modpack/s und IP einfügen
- 'Staret das spiel und lässt auf den server connecten
- Process.Start(Me.TextBox1.Text & "\arma3battleye.exe ", " 0 1 -connect=serverip " & TextBox2.Text)
- End Sub
- Private Sub PictureBox3_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.MouseEnter
- PictureBox3.BackgroundImage = My.Resources.Spielen
- End Sub
- Private Sub PictureBox3_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.MouseLeave
- PictureBox3.BackgroundImage = Nothing
- End Sub
- Private Sub PictureBox4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.Click
- 'Speichert Pfad und Startparameter in einer Textdatei
- My.Computer.FileSystem.WriteAllText(My.MyProject.Application.Info.DirectoryPath & "\data\pfad.txt", TextBox1.Text, False)
- My.Computer.FileSystem.WriteAllText(My.MyProject.Application.Info.DirectoryPath & "\data\para.txt", TextBox2.Text, False)
- End Sub
- Private Sub PictureBox4_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.MouseEnter
- PictureBox4.BackgroundImage = My.Resources.Speichern
- End Sub
- Private Sub PictureBox4_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.MouseLeave
- PictureBox4.BackgroundImage = Nothing
- End Sub
- Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.Click
- 'Sorgt dafür das man Pfad suchen kann
- Dim FolderBrowser As New FolderBrowserDialog
- FolderBrowser.Description = "Bitte wähle deinen Pfad zu Arma 3..."
- FolderBrowser.ShowNewFolderButton = True
- FolderBrowser.RootFolder = System.Environment.SpecialFolder.Desktop
- FolderBrowser.SelectedPath = My.Computer.FileSystem.SpecialDirectories.Desktop
- If FolderBrowser.ShowDialog = Windows.Forms.DialogResult.OK Then
- Me.TextBox1.Text = FolderBrowser.SelectedPath
- End If
- End Sub
- Private Sub PictureBox5_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.MouseEnter
- PictureBox5.BackgroundImage = My.Resources.Suchen
- End Sub
- Private Sub PictureBox5_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.MouseLeave
- PictureBox5.BackgroundImage = Nothing
- End Sub
- Private Sub PictureBox6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox6.Click
- 'Fragt auf Webspace die version ab und wenn es Änderungen gab lädt er die neue version des Launchers runter
- 'Lässt bei Änderungen am Launcher eine neue Version downloaden
- Dim iox As New IO.StreamReader(My.Application.Info.DirectoryPath & "\data\version.txt", System.Text.Encoding.Default)
- Dim ot As String = iox.ReadToEnd
- iox.Close()
- If ot = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TerranTitansLauncher", "version", "1.0.0") Then
- MsgBox("Der Launcher ist auf dem neuesten Stand!")
- Else
- 'Link/Pfad zum Launcher.rar
- SendMessage(ProgressBar1.Handle, 1040, 2, 0)
- Timer1.Start()
- client.DownloadFileAsync(New System.Uri("http://launcher.domain.de/update/TerranTitansLauncher.rar"), My.Application.Info.DirectoryPath & "\TerranTitansLauncher.rar")
- AddHandler client.DownloadProgressChanged, AddressOf DownloadProgress
- End If
- End Sub
- Private Sub PictureBox6_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox6.MouseEnter
- PictureBox6.BackgroundImage = My.Resources.Update
- End Sub
- Private Sub PictureBox6_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox6.MouseLeave
- PictureBox6.BackgroundImage = Nothing
- End Sub
- Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
- Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click
- 'Modpack Downloaden.Link/Pfad zu Modpack/Missionpbo File
- SendMessage(ProgressBar1.Handle, 1040, 2, 0)
- Timer1.Start()
- client.DownloadFileAsync(New System.Uri("http://launcher.domain.de/update/Altis_Life.Altis.pbo"), My.Application.Info.DirectoryPath & "\mission\Altis_Life.Atlis.pbo")
- AddHandler client.DownloadProgressChanged, AddressOf DownloadProgress
- End Sub
- Private Sub PictureBox7_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.MouseEnter
- PictureBox7.BackgroundImage = My.Resources.Download
- End Sub
- Private Sub PictureBox7_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.MouseLeave
- PictureBox7.BackgroundImage = Nothing
- End Sub
- Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
- ProgressBar1.Increment(1)
- End Sub
- Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
- Label1.Text = IO.File.ReadAllText("version.txt")
- End Sub
- End Class
Launcher sieht momentan so aus (Nix weltbewegendes, aber für die Bedürfnisse noch ausreichend):
Wenn irgendwo Fehler sind würde ich mich auch über Verbesserungsvorschläge freuen. Ist mein erster Versuch und ich muss da halt noch etwas mehr rein finden.
Ich habe da jedoch paar Probleme...
1. Bei Label2 sollte, wenn man Update oder Download drückt normal die kb von kb mit der Progressbar mitgehen. Tut es aber nicht.
2. Bei Label1 hätte ich es gerne anders gelöst. Und zwar würde ich wollen, das er schon mit der version.txt auf dem Webspace vergleicht und bei Bedarf halt sagt das eine Neue Version verfügbar ist. Dann kann man ja über Update die neue Launcherdateien runterladen. Wenn das fertig ist soll er bei Label1 die neue Version hinschreiben, welche der neue Launcher hat. Was halt auch super wäre, wenn die RaR-Datei auch gleich im Ordner des Launchers entpackt wird und dann mit der neuen Version neustartet.
3. Was noch ein nettes Feature wäre, eine Serverstatusanzeige. Also ob der Webspace online ist. Das Ganze am besten mit einem grünen bzw. roten Symbol für offline angezeigt.
Der Server geht nämlich in paar Tagen in die Closed Alpha und da würde der Launcher einiges einfacher machen. Würde mich deshalb echt freuen, wenn mir da einer etwas unter die Arme greifen könnte mit dem Code. Auch wenn es geht etwas genauer, damit ich auch eventuelle Fehler leichter sehe.
Was ich auch komisch finde. Wenn man die .pbo datei über den Launcher runterlädt und in den MPMissionsCache Order reinpackt. Muss man die Mission beim joinen des Server trotzdem runterladen???
Normal soll das ja dadurch abgenommen werden.
Wenn man die Datei direkt ohne Launcher runterlädt und einfügt, dann muss man die mission nicht noch runterladen? Ich blick da echt nicht ganz durch...
Gruß Tecko
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Tecko“ ()