Files
GoKart/trunk/KartExtreme/Net/KartClient.cs
Andrew 6d74d5b59e source
Created by: Andrew
2016-08-27 22:43:23 -04:00

139 lines
5.4 KiB
C#

using KartExtreme.IO;
using System;
using System.Net.Sockets;
using System.Text;
using KartExtreme.IO.Packet;
namespace KartExtreme.Net
{
public sealed class KartClient : Session
{
public KartClient(Socket socket)
: base(socket)
{
this.SendPatchData(Constants.Version, "http://kart.dn.nexoncdn.co.kr/patch");
/*
using (OutPacket outPacket = new OutPacket())
{
outPacket.WriteHexString("80 05 2B 28"); // NOTE: HEADER. DO NOT CHANGE. PROBABLY typeid() OF HANDLER?
// 8
outPacket.WriteShort(5002); // Note: Localisation.
// 10
outPacket.WriteShort(1); // NOTE: Service area/version.
// 12
outPacket.WriteShort(26); // NOTE: Subversion number? Current = 26. 25 = Incompatible with server, 27 = Close client.
// 14
outPacket.WriteString("http://kart.dn.nexoncdn.co.kr/patch");
// 18
// outPacket.WriteHexString("81 82 83 84 85 86 87 88");
// outPacket.WriteHexString("94 2E F9 A8 E1 4B 13 5D");
// outPacket.WriteHexString("01 02 03 04 05 06 07 08");
outPacket.WriteInt(0x11111111);
outPacket.WriteInt(0x22222222);
outPacket.WriteByte(0xE0);
outPacket.WriteHexString("03 00 09 03 00 00 03 00 00 00 00 00 83 A3 E5 47 00 00 15 00 0D 00 00 00 03 00 00 00 00 00 65");
// NOTE: Nothing more needed.
if (false)
{
outPacket.WriteHexString("80 05 2B 28"); // NOTE: HEADER. DO NOT CHANGE. PROBABLY typeid() OF HANDLER?
outPacket.WriteHexString("EA 00 03 00 95 0B");
outPacket.WriteString("");
// NOTE: Nothing more needed.
}
if (false)
{
outPacket.WriteHexString("80 05 2B 28 EA 03 03 00 95 0B");
outPacket.WriteString("");
// NOTE: Nothing more needed.
}
if (false)
{
// NOTE: Original (Korean KartRider).
outPacket.WriteHexString("80 05 2B 28");
outPacket.WriteHexString("EA 03 03 00 95 0B");
outPacket.WriteString("http://kart.dn.nexoncdn.co.kr/patch");
outPacket.WriteHexString("94 2E F9 A8 E1 4B 13 5D 76 03 00 09 03 00 00 03 00 00 00 00 00 83 A3 E5 47 00 00 15 00 0D 00 00 00 03 00 00 00 00 00 65");
}
this.Send(outPacket);
}
*/
}
public override void OnDisconnect()
{
Log.Inform("Lost connection from {0}.", this.Label);
Server.RemoveClient(this);
}
public override void OnPacket(InPacket inPacket)
{
try
{
//int typeId = inPacket.ReadInt();
//byte wdf = BitConverter.
Log.Hex("Received Packet ", inPacket.ToArray());
//Log.Inform("String val:" + Encoding.Unicode.GetString(inPacket.ToArray()));
byte typeId = inPacket.ReadByte();
byte a2 = inPacket.ReadByte();
byte a3 = inPacket.ReadByte();
byte a4 = inPacket.ReadByte();
int header = BitConverter.ToInt32(new byte[] { typeId, a2, a3, a4 }, 0);
switch (typeId)
{
case 0xBA:
using (OutPacket oPacket = new OutPacket())
{
oPacket.WriteInt(header + 1); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
oPacket.WriteInt(0); // header
Send(oPacket);
//WALAO!
}
break;
default:
break;
}
}
catch (SendPacketException)
{
Log.Error("Client was disconnected while sending packet");
Close();
}
catch (Exception e)
{
Log.Error("Exception during packet handling from {0}: {1}", this.Label, e.ToString());
}
}
}
}