Hey,
vielen Dank :D Das war glaub ich eine der ersten Antworten die mich ermutigt und geholfen haben. Vielen Dank soweit :D
vielen Dank :D Das war glaub ich eine der ersten Antworten die mich ermutigt und geholfen haben. Vielen Dank soweit :D
Programmier mal bitte nen clientless einlogger :DQuote:
Die Basis ist nicht schwer.
Danach kommen aber Sachen, wie ServerTime-Sync, MagicCRCCube's, ...
Als kleine Hilfe gebe ich dir mal die HandShakePacketRecv-Funktion, sowie eine kleine Liste der als erstes versendeten Packets:
- PhasePacket 2Bytes (D: Enters the HandShake Phase)
- [n] HandShakePackets
- PhasePacket 2Bytes (D: Enters the AuthPhase, Only valid for AccountServers)
- [Connection to this Server closed! Connect to CharacterServer...]
Regards timCode:#pragma pack(push) #pragma pack(1) enum PacketID { // General packets kHandShakePacket = 255, ... } typedef struct { uint8_t m_packetID; uint32_t m_unknown; uint32_t m_x; uint32_t m_y; } TPacketHandShake; #pragma pack(pop) ... void NetworkStream::RecvHandShakePacket() { TPacketHandShake packet; if(!ReadPacketData(&packet, sizeof(TPacketHandShake))) return; DEBUG_PRINTF("HANDSHAKE RECV %u %d\n", (unsigned int)packet.m_x, (int)packet.m_y); SyncServerTime(packet.m_x + packet.m_y); ResetPingTimeVector(); packet.m_x += 2 * packet.m_y; packet.m_y = 0; DEBUG_PRINTF("HANDSHAKE SEND %u\n", (unsigned int)(2 * packet.m_x + packet.m_y)); AppendPacket(&packet, sizeof(TPacketHandShake), false); }