ZSZC Login-Packet

  • Hi,
    hab mal eine Frage, also ich versuche gerade Packets an ZSZC zu senden, ersteinmal die leichten Sachen (Party erstellen, hinsetzen/aufstehen, laufen usw, also bin noch ziemlich am Anfang^^) und das klappt auch, jedoch habe ich bei 2 Sachen Probleme.
    1. Wie kann ich das Packet rausfinden, das gesendet wird, wenn man seine ID & PW eingegeben hat und dann auf Connect drückt? Ich benutze phConnector + Analyzer aber da wird kein C->S Packet angezeigt..
    2. Ich wollte nun auch mal versuchen, einen Char automatisch nach dem Einloggen auszuwählen, jedoch enthält das Packet mittendrin entweder 0500, 0600 oder 0700 (das ist immer verschieden, kommt drauf an ob der Char an der 1., 2. oder 3. Stelle ist). Wenn ich selber ein Char auswähle, dann wird mir das im Alanyzer angezeigt, aber ich weiß nicht genau wie ich das nun prüfen soll, damit ich die Funktion in VB.NET einsetzen kann..vom iBot (ist zwar normales SRO aber ist ja auch egal^^) weiß ich, dass er einen Char erst auswählen kann, wenn man sich davor eingeloggt hat und diesen Char benutzt, also der prüft ja irgendwie obs nun z.B. 0500 oder 0600 ist..ich hab bis jetzt nur Packets gesendet, aber keine geprüft die vom Server kommen.


    Wäre sehr dankbar wenn mir jemand helfen könnte!

  • 1. Müsste eigentlich angezeigt werden. Bei rSRO gehts jedenfalls ^^
    2. Verstehe ich nicht genau ^^


    MfG Kuh :>


    BTW: Ich kann dir auch über ICQ helfen. PM mit Nummer (bei Interesse)

  • Char auswählen:


    Code
    1. C->S (0x7001)
    2. [Word]NameLength
    3. [String]Name


    Vielen vielen Dank!! Hab gerade mit einem Converter verschiedene Längen von Namen durchprobiert und genau das wird auch im Analyzer später angezeigt. Also wenn mein Char "Blubb16" heißt, dann sind es ja 7 Zeichen. Und im Analyzer wird dann 0700+Charname angezeigt. Hat es also nichts mit der Position des Chars zu tun?

  • zu deiner 1. Frage:


    Code
    1. Client Loginauth
    2. Opcode 0x6102
    3. 12 locale
    4. 05 00 username len
    5. 12 23 34 45 56 username
    6. 05 00 password len
    7. 12 23 34 45 56 password
    8. 96 00 server id


    Bei isro ist dieses paket verschlüsselt, ich weiß nicht wie es bei ZSZC ist.

  • Also ich habe gestern mit kuhkuh geschrieben und er sagte dass vom Server ein Packet gesendet wird in der ID & PW enthalten sind und dieses soll ich an den Server senden. Das Packet, wenn ich auf Connect drücke sieht so aus:

    Code
    1. (6102) 04 0700 + Acc-ID + 0600 + Acc-PW + 0100


    Also 04 dann 0700 = ID-Länge (7 Zeichen) + AccID + 0600 = PW-Länge (6 Zeichen) + Acc-PW + 0100 = ServerID


    Also wenn ich es sende, dann kommt die Meldung mit "..server is full. please try again later..usw" aber warum kommt die Meldung davor mit "Requesting user confirmation" nicht?


    BTW: Wo habt ihr eigentlich alle den Packetaufbau her? Wäre natürlich super, wenn man sowas hätte..^^


  • Weil das "Requesting user confirmation" durch den klick auf connect ausgelöst wird, ist also nur clientseitig relevant und hat nichts mit einem packet zu tun.
    Ich hab das wiki von jMerlin mir mal runtergeladen, da sind einge packets erklärt, die meisten opcodes sind natürlich falsch und einige packets auch, vor allem die spawn packets.
    http://ul.to/o7lymv
    Ist ein Archiv mit html files.

  • OK, also das Senden des Packets zum Einloggen klappt zwar, aber nach knapp 5min kommt die Meldung "Server is full. Please try again later." nicht mehr, und im Analyzer wird auch nicht mehr angezeigt, dass das Packet gesendet wird. Auch wenn ich dann selber versuche auf den Connect-Button zu drücken passiert nichts mehr, erst wenn ich ZSZC wieder neustarte..das Senden mache ich in einer While-Schleife mit einem 2sec Sleep, solange bis der Char eingeloggt ist..An was könnte das denn liegen? Was noch komisch ist, als keine Rückmeldung mehr vom Server kam, bekam ich die ganze Zeit bei Mozilla "Website kann nicht angezeigt werden" und das so lange, bis ZSZC geschloßen wurde..

  • Hi nochmal, also ich wollte kein neues Thema erstellen, da es eigentlich auch hier rein passt. Also ich hab eine neue Frage: Sagen wir mal ich starte SRO und sende alle 5sec das Packet in der die ID & PW steht (also um mich halt einzuloggen). Jedoch ist der Server voll, da müsste ja dann ein S->C-Packet kommen, in dem steht, dass der Server voll ist. Meine Frage ist nun, wie prüfe ich die Packets die vom Server kommen am besten? Ich habe noch eine Source von einem Analyzer und da werden in einem Timer alle Packets die gesendet/ankommen in eine ListBox eingefügt. Es gibt dort auch die Funktionen Ignore und Listen...jedoch wäre das ja denke ich mal ein bisschen blöd, wenn ich nach dem Senden des Packets zum Login jedesmal alle Einträge der ListBox durchgehen muss..außerdem würde es doch später Probleme geben, da dieses Packet ja dann immer noch eingetragen ist, auch wenn ich dann eingeloggt bin...also was wäre die beste Möglichkeit sofort die Antwort vom Server zu prüfen? Hoffe ich habe mich verständlich ausgedrückt^^

  • Du bekommst die Packete doch vom Server über einen Socket. Der Socket erhält ein byte Array in dem das Packet enthalten ist. Dann holst du dir von dem Packet den Opcode und kannst spezifisch auf das Packet reagieren.

  • Ich weiß nicht ob der AutoIt Code dir hilft.


    Dort empfängt er halt die Sachem vom Server wandelt diese um und ändert diese auch direkt.
    In der Switch-schleife prüft er dann wenn eine Aktion ausgeführt worden ist.

  • In Autoit gibt es "AdlibRegister" sogesehen wir eine While schleife die alle sagen wir 2sekunden die Funktion aufruft :)


    Alle 2 Sekunden ist ein wenig happig :>
    Dann fehlen dir ja zwischendurch immermal so 10 packets ^^
    Ich denke, das Intervall wird kleiner sein.


  • Alle 2 Sekunden ist ein wenig happig :>
    Dann fehlen dir ja zwischendurch immermal so 10 packets ^^
    Ich denke, das Intervall wird kleiner sein.


    Das mit sagen wir alle 2sekunden , war ein beispiel :)
    Bei mir ist das in einer halben sekunden.
    Also 300 ^^