Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem]Patcher


Rekomendowane odpowiedzi

Opublikowano

Witam dziś w nocy z nudów zabrałem się do stworzenia patchera w vb (do tej pory nie miałem z tym do czynienia) niby wyszystko ładnie tylko wywala błąd podczas aktualizacji pliku. Znając życie jest to pewnie mały błąd, którego ja nie mogę zauważyć :D

A i żeby nie było że złodziej czy coś to część z update nie jest mojego autorstwa xD

Jeśli jest potrzeba mogę przesłać cały projekt.

 

błąd:

 


System.InvalidCastException was unhandled
 Message=Conversion from string "MCOZ¨  ž  L?  {p§ŇEJő Ža¤ě}," to type 'Double' is not valid.
 Source=Microsoft.VisualBasic
 StackTrace:
   at Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)
   at Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value)
   at WindowsApplication1.Form1.Button1_Click(Object sender, EventArgs e) in C:\Users\Wubson\Desktop\Autopather by wubson\Autopather by Wubson\Autopather by Wubson\Form1.vb:line 36
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
   at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
   at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
   at WindowsApplication1.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
 InnerException: System.FormatException
   Message=Input string was not in a correct format.
   Source=Microsoft.VisualBasic
   StackTrace:
		at Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat)
		at Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)
   InnerException:

 

 

Skrypt:

 

Imports System.Net

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
	Shell("metin2.exe", 1) 'Odpalenie gry
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
	WebBrowser1.Navigate("http://192.166.219.81/registermini.php")
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
	Shell("ustawienia.exe", 1) 'Odpalenie ustawień
End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
	Shell("Aktualizacja patchera.exe", 1) 'Odpalenie aktualizacji patchera
End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
	Me.Close()
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
	'plik
	TextBox1.Text = "Sprawdzanie plik ..."
	Dim info As IO.FileInfo = New IO.FileInfo("pack/locale_pl.eix") ' tu pobiera wage pliku, ktora przechowuje w zmiennej plik1, pozniej mozesz to zmienic
	Dim plik1 As Integer = info.Length
	Dim ftpplik1 As New WebClient
	Dim wagaftpplik1 As String = ftpplik1.DownloadString("http://192.166.219.81/download/Metin/pack/locale_pl.eix") ' tu podstawiasz swoj adres do pliku na dedyku czy co tam masz
	If plik1 = wagaftpplik1 Then
		TextBox1.Text = "Plik plik.exe jest ok" ' jesli waga pliku ze zmiennej plik1 zgadza sie z waga w zmiennej wagaftpplik1 wyswietla info i idzie dalej
	Else
		My.Computer.FileSystem.DeleteFile("pack/locale_pl.eix") ' usuwa plik.exe jeśli waga się nie zgadza
		My.Computer.Network.DownloadFile("http://192.166.219.81/download/Metin/pack/locale_pl.eix", "pack/locale_pl.eix") 'pliku zostaje pobrany z serwera
		TextBox1.Text = "został zaktualizowany"
	End If
End Sub
End Class

 

Opublikowano

Dam ci podpowiedź, nie łatwiej jest zrobić na sumie CRC? Sprawdzasz czy suma zgadza się z sumą pliku na serwerze. Tego na serwerze nie musi przeliczać tylko wgraj tam plik .txt z wartością tej sumy daj mu prawa do odczytu aby program mógł sobie tą wartość sprawdzić w programie ("wartość crc pliku" = "wartośc crc na serwie").

Gość Pan Szymek
Opublikowano

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'plik
TextBox1.Text = "Sprawdzanie plik ..."
Dim info As IO.FileInfo = New IO.FileInfo("pack/locale_pl.eix") ' tu pobiera wage pliku, ktora przechowuje w zmiennej plik1, pozniej mozesz to zmienic
Dim plik1 As Integer = info.Length
Dim ftpplik1 As New WebClient
Dim wagaftpplik1 As String = ftpplik1.DownloadString("http://192.166.219.81/download/Metin/pack/locale_pl.eix") ' tu podstawiasz swoj adres do pliku na dedyku czy co tam masz
If plik1 = wagaftpplik1 Then
TextBox1.Text = "Plik plik.exe jest ok" ' jesli waga pliku ze zmiennej plik1 zgadza sie z waga w zmiennej wagaftpplik1 wyswietla info i idzie dalej
Else
My.Computer.FileSystem.DeleteFile("pack/locale_pl.eix") ' usuwa plik.exe jeśli waga się nie zgadza
My.Computer.Network.DownloadFile("http://192.166.219.81/download/Metin/pack/locale_pl.eix", "pack/locale_pl.eix") 'pliku zostaje pobrany z serwera
TextBox1.Text = "został zaktualizowany"
End If
End Sub

To tragedia, po co tyle zmiennych, a poza tym to nie ma prawa działać.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'plik
TextBox1.Text = "Sprawdzanie plik ..."
Dim wagaftpplik1 As String = New Webclient().DownloadString("http://192.166.219.81/download/Metin/pack/locale_pl.eix") ' to jest błąd
If New IO.FileInfo("pack/locale_pl.eix").Length = wagaftpplik1 Then
TextBox1.Text = "Plik plik.exe jest ok" 
Else
My.Computer.FileSystem.DeleteFile("pack/locale_pl.eix")
My.Computer.Network.DownloadFile("http://192.166.219.81/download/Metin/pack/locale_pl.eix", "pack/locale_pl.eix")
TextBox1.Text = "został zaktualizowany"
End If
End Sub

Gość Pan Szymek
Opublikowano

Szymon... tylko, że to akurat działa lamo.(nie mówię o całym kodzie)

Dim w As String = New WebClient().DownloadString("http://qbot.eu/pliki/QBot_0.15.zip")
MessageBox.Show(w)

Sprawdź co przechowuje zmienna w, błąd jest dlatego, że coś takiego jest rzutowane na double.

Opublikowano

Chyba za wcześnie się zabrałem za robienie patchera... Będzie musiało mnie zadowolić ściągania plików bez sprawdzania czy są takie same. Dziękuje za pomoc wszystkim :)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...