Exemple #1
0
        private void ParseServerWorldMessage()
        {
#if DEBUG_PROXY
            Trace.WriteLine("[DEBUG] Proxy [ParseServerWorldMessage]");
#endif
            clientOutMessage.Reset();
            Array.Copy(serverInMessage.Buffer, clientOutMessage.Buffer, serverInMessage.Size);
            clientOutMessage.Size = serverInMessage.Size;

            serverInMessage.ReadPosition = 2;

            if (Adler.Generate(serverInMessage) != serverInMessage.ReadChecksum())
            {
                throw new Exception("Wrong checksum.");
            }

            Xtea.Decrypt(serverInMessage, xteaKey);
            serverInMessage.Size         = serverInMessage.ReadInternalHead() + 8;
            serverInMessage.ReadPosition = 8;

            client.ProtocolWorld.ParseServerMessage(serverInMessage);

            SendToClient(clientOutMessage);
        }