Silkroad Loginpacket - Stringübergabe

  • Hi,
    erstmal, ich wusste nicht genau was ich als Überschrift nehmen sollte, aber naja...^^
    Also ich versuche gerade das Loginpacket zu senden, jedoch versteh ich das mit der Stringübergabe nicht so ganz. Also der Aufbau des Packets ist ja:
    [cs]
    [Byte] Locale
    [Short] ID-Length
    [String] ID
    [Short] PW-Length
    [String] PW
    [Short] ServerID
    [/cs]
    Am Ende soll es dann z.B. so aussehen:
    [cs]
    ID = test
    PW = blubb
    Data = 28-04-00-74-65-73-74-05-00-62-6C-75-62-62-E0-00
    [/cs]
    Wie erstelle ich nun so einen Inhalt mit dem BitConverter?
    Ich kann es zwar so angeben, aber zufrieden bin ich damit überhaupt nicht:
    [cs]
    Dim data As Byte() = {&H28, 4, 0, &H74, &H65, &H73, &H74, 5, 0, &H62, &H6C, &H75, &H62, &H62, &HE, 0}
    'Ausgabe:
    Debug.Print(BitConverter.ToString(data))
    [/cs]
    Also das klappt, jedoch gebe ich da selbe die Länge ein, jedoch weiß ich nicht wie ich diese nun automatisch auslesen lasse und es dann der data-Variable übergebe..
    Bis jetzt habe ich den BitConverter nur benutzt um ein Packet aufzubauen, wo z.B. ein Skill ausgeführt wird, da muss ich jedoch einfach nur folgendes benutzen (Beispiel):
    [cs]
    Dim data As Byte() = {0, 0, 0, 0}
    Dim skillID As Int32 = 1234


    BitConverter.GetBytes(skillID).CopyTo(data, 0)
    'Ausgabe:
    Debug.Print(BitConverter.ToString(data))
    [/cs]
    Bei einem String klappt es jedoch nicht..

  • byte[] bTest = Encoding.GetEncodings(1251).GetBytes(String);


    Die Zahl 1251 kann variieren. Hängt halt von der Sprache des Strings ab.
    Bzw. dem Schriftstil. 1251 steht für Kyrill.
    Die ganzen anderen Nummern findest du hier: Klick


    Kuh :>


    BTW: Wenn du noch mehr fragen hast, dann kannst du mich auch jederzeit PM'en.