Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 05:00

  • Please register to post and access all features, it's quick, easy and FREE!


VB 2010 Hexadezimaler Savegame Editor - Frage

Discussion on VB 2010 Hexadezimaler Savegame Editor - Frage within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2011
Posts: 8
Received Thanks: 0
VB 2010 Hexadezimaler Savegame Editor - Frage

hi, community,

ich habe eine variable SHaxx als string, die folgendermassen sein könnte:

"080000080000080000200000200000"

das möchte ich als hexadezimalwert, so wie es da steht, an das offset (0x20290) einer datei überschreiben.

hier wird die datei geöffnet
Quote:
Private Sub Böffnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Böffnen.Click
öffnen.Filter = "Nur Spieldateien (*E1T.)|*.E1T"
öffnen.FilterIndex = 1

If öffnen.ShowDialog() = Windows.Forms.DialogResult.OK Then

Dim message As String = öffnen.FileName
MsgBox("die datei wurde als " + message + " geöffnet")
Filename.Text = message

End If
End Sub
hier gespeichert:
Quote:
Private Sub BExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BExport.Click

Dim file As System.IO.StreamWriter

file = My.Computer.FileSystem.OpenTextFileWriter(öffnen.F ileName, True)


file.WriteLine(GlobalVariables.SHaxx)
file.Close()


SaveFileDialog1.Filter = "Nur Spieldateien (*E1T.)|*.E1T"
SaveFileDialog1.Title = "Dump a Savegame File"
If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then

MsgBox("Haxx0red")
End If
End Sub
wie speichere ich die datei korrekt, so dass die offsets im hexadezimalsystem überschrieben werden?
ich glaube das rot muss überartbeitet werden.

Edit: btw welche referenz muss ich lesen, um zu kapieren wie das funktioniert?

lg suchoo



suchoo is offline  
Old 10/19/2018, 23:55   #2
 
elite*gold: 0
Join Date: Jun 2009
Posts: 922
Received Thanks: 206
Als aller aller erstes: Warum VB2010?
Der beste Zeitpunkt auf etwas zeitgemäßes umzusteigen ist am besten schon gestern gewesen.
Lad dir Visual Studio Community runter und steig am besten auf C# 6.0 mit .net Framework 4.6 um.
Mit VB wirst du auf dauer nicht glücklich, da geb ich dir Brief und Siegel drauf.


Solltest du das in Erwägung ziehen, kann ich dir einen Lösungsansatz geben:

Es sei gesagt, dein String mit den Daten als Zeichen ist ganz großer unfung. Daten als HexString zu speichern ist ziemlich bad practice und sollte unter keinen Umständen gemacht werden. In Zukunft solltest du in hinblick auf Speicherverbrauch und Performance binäre Daten immer in einem Bytearray ablegen. Außerdem kann auch keine einzige Funktion im .net Framework mit einem String der Daten in Hexadezimaler Form enthält, etwas anfangen.

Deshalb ist an dieser Stelle Schritt 1, aus dem String ein Bytearray zu erzeugen. Am einfachsten dürfte dies mit Linq gehen:

Code:
String hexData = "080000080000080000200000200000";
byte[] data = Enumerable.Range(0, hexData.Length)//Generiert Zahlen 0 -30
	.Where(x => x % 2 == 0) //Mit den Zahlen 0, 2, 4, 6, 8...
	.Select(x => Convert.ToByte(hexData.Substring(x, 2), 16))//Nimm 2 Zeichen an dieser Position und wandle in ein byte um
	.ToArray();//Als Array zurückgeben
Als nächstes öffnest du deine Datei, damit du einen Stream hast, den du lesen und beschreiben kannst. Dabei nicht vergessen, als dritten Parameter FileAccess.ReadWrite anzugeben, damit du auch Schreibrechte auf die Datei hast.

Code:
FileStream fs = File.Open(@"C:\dein\pfad\zur\date.E1T", System.IO.FileMode.Open, FileAccess.ReadWrite);
Da es die meisten Dateisysteme nicht erlauben mitten in eine Datei zu schreiben, musst du erstmal die ersten 0x20290 Bytes auslesen, um dieser nachher wieder schreiben zu können.

Code:
byte[] firstFileBytes = new byte[0x20290]; //Bytearray initialisieren
fs.Read(firstFileBytes, 0, firstFileBytes.Length);//Aus der Datei ins Bytearray lesen
fs.Position = 0; //Die Position im Stream wieder auf Anfang setzen
Als nächstes hängst du an die ausgelesenen Bytes, deine zu schreibenden Bytes. Dies macht man ebenfalls am einfachsten mit Linq

Code:
byte[] newFirstFileBytes = firstFileBytes.Concat(data).ToArray();
Und zuletzt einfach die neuen Daten in die Datei schreiben und nicht vergessen den Stream ordentlich zu schließen.

Code:
fs.Write(newFirstFileBytes, 0, newFirstFileBytes.Length);
fs.Dispose();

Natürlich gibts hier und da noch möglichkeiten, das ein wenig performanter zu gestalten, aber für den Anfang sollte das die Lösung sein, mit der man mit den wenigsten Zeilen zum gewünschten Ergebnis kommt.

edit: Natürlich kannst du dir auch die Dokumentation von meinen Befehlen ansehen, dort ist meistens neben C# auch der korrekte VB Befehl aufgelistet. Ich denke meine Befehle lassen sich auch mehr oder weniger einfach nach VB migrieren


SCORNI is offline  
Old 10/20/2018, 14:21   #3
 
elite*gold: 0
Join Date: Dec 2011
Posts: 8
Received Thanks: 0
Danke für die antwort, das ist sehr ausführlich, besser als ich dschte

suchoo is offline  
Old 01/12/2019, 01:39   #4
 
elite*gold: 0
Join Date: Dec 2011
Posts: 8
Received Thanks: 0
das ist die csv datei:

das ist das formular
https://imgur.com/a/VW5N8O3
das ist mein jämmerlicher versuch einen savegameeditor für magic the gathering von 1997 sealed deck tournament zu schreiben
das ist eine solche spieldatei


könnte mir jemand helfen, wie das richtig funktionieren kann, bitte?
suchoo is offline  
Reply



« HttpWebRequest - SSL funktioniert nicht | - »

Similar Threads
Fragen zum Diablo 3 SE Savegame Editor
12/10/2015 - Diablo 3 Main - Discussions / Questions - 11 Replies
Hallo Jung´s Habe mir ein Savegame Editor besorgt. Den Diablo3 SE Ich versuche seit Tagen mein Savegame zu bearbeiten. Was aber nicht geht. 1. Savegame auf USB ziehen. 2.Öffne Diablo3 SE ( Am PC ) 3.Gehe auf File gehe Load From Deice. Kommt die Meldung. No dives found insert your usb , and run the application as admin ?? Verstehe das nicht. Habe schon fast alles versucht. Mein freund Google bringt mich auch nicht nicht weiter.
[Request] DB Editor / Client Editor / PK2 Editor.
08/30/2013 - SRO PServer Ask the Experts - 3 Replies
Would like to make some Updates on the Server and need some peoples to make em. - Add me on Skype : Saint.sinner8 ( will be rewarded )
Savegame editor ?
01/01/2008 - General Gaming Discussion - 0 Replies
Did you ear about a savegame editor ? ( like in DiabloII with Jamela and other...)
brauche dungeon siege 2 savegame editor
10/04/2005 - General Gaming Discussion - 2 Replies
siehe topic ^^



All times are GMT +1. The time now is 05:00.


Powered by vBulletin®
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2019 elitepvpers All Rights Reserved.