139 lines
5.4 KiB
C#
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());
|
|
}
|
|
}
|
|
}
|
|
}
|