private static void OnDataArrivalEvent(byte[] data) { lock (Locker) { try { var packet = new TeraPacket(data); Logger.Debug("Received packet '" + packet.ID.ToString() + "' from RealmServer"); switch (packet.ID) { case PacketHeaderEnum.PlayerCommingMessage: HandlePlayerComming(packet); break; case PacketHeaderEnum.KickPlayerMessage: String accountName = packet.Reader.ReadString(); WorldClient wClient = WorldServer.Clients.Find(x => x.Account != null && x.Account.Username == accountName); if (wClient != null) { wClient.Disconnect(); wClient.OnClose(); } else { AccountTable.UpdateLogged(accountName, false); } break; } } catch (Exception e) { Logger.Error("Can't read packet from server : " + e.ToString()); } } }
private void m_socket_OnDataArrivalEvent(byte[] data) { lock (Locker) { var packet = new TeraPacket(data); if (Server != null) { Logger.Info("Received packet '" + packet.ID.ToString() + "' from server '" + this.Server.ID); } else { Logger.Info("Received packet@'" + packet.ID.ToString() + "' from unknown server '"); } switch (packet.ID) { case PacketHeaderEnum.HelloKeyMessage: this.HandleHelloKey(packet); if (Server == null) { Kick(); } else { Server.State = ServerStateEnum.Online; } break; } } }
public DataPacket(int num, TeraPacket packet) { this.packet = packet; this.num = num; this.type = packet.type; this.size = packet.size; this.opCode = TeraPacketCreator.getOpCode(packet.opCode); }
public S_USER_STATUS(TeraPacket packet) : base(packet) { try { readUInt64(4, "id"); readByte(12, "status"); } catch { } }
public static void Send(TeraPacket packet) { try { Logger.Debug("Send packet '" + packet.ID.ToString() + "' to RealmServer"); socket.Send(packet.GetBytes); } catch (Exception e) { Logger.Error("Can't send packet to RealmServer : " + e.ToString()); } }
public C_CHECK_VERSION(TeraPacket packet) : base(packet) { try { int count = readUInt16(4, "count"); for (int i = 0; i < count; i++) { readInt32((ushort)(6 + 12 * i), "NowShift & NextShift");// 4 + 12 readInt32((ushort)(10 + 12 * i), "Unk1"); readInt32((ushort)(14 + 12 * i), "Unk2"); } } catch { } }
private void HandleHelloKey(TeraPacket packet) { string key = packet.Reader.ReadString(); GameServerModel gsm = GameServerTable.Cache.Find(x => x.Key.Equals(key)); if (gsm != null) { this.Server = gsm; Logger.Info("GameServer " + gsm.ID + " Online"); } else { Logger.Warn("Unknown key '" + key + "' received"); } }
public void Send(TeraPacket packet) { try { if (this.Server != null && this.Server.State != ServerStateEnum.Offline) { Logger.Debug("Send packet '" + packet.ID.ToString() + "' to server '" + Server.ID + "'"); this.m_socket.Send(packet.GetBytes); } } catch (Exception e) { Logger.Error("Can't send packet to world server " + this.Server.ID + " : " + e.ToString()); } }
public S_LOGIN(TeraPacket packet) : base(packet) { try { ushort start_name = readUInt16(4, "start name"); //4 ushort end_name = readUInt16(6, "end name"); //6 readUInt16(8, "visual len"); //8 readUInt32(10, "sex race class"); //10 readUInt32(14, "model"); //14 readUInt64(18, "player id"); //18 readUInt64(26, "unique id"); //26 readUInt16(61, "level"); //61 readString(start_name, "name", end_name); } catch { } }
public S_SPAWN_USER(TeraPacket packet) : base(packet) { try { ushort name_start = readUInt16(8, "name start"); ushort guild_start = readUInt16(10, "guild start"); ushort guild_rank_start = readUInt16(12, "guild rank start"); ushort guild_title_start = readUInt16(20, "guild title start"); readUInt64(34, "id"); //readUInt64(38, "unique id"); readString(name_start, "name"); readString(guild_start, "guild"); readString(guild_rank_start, "guild rank"); readString(guild_title_start, "guild title"); } catch { } }
private bool processRecv() { if (recvStream.Length < 4) { return(false); } ushort length = BitConverter.ToUInt16(recvStream, 0); if (recvStream.Length < length) { return(false); } var packet = new TeraPacket(getRecvData(length), TeraPacket.Type.Recv); lock (teraPackets) { teraPackets.Enqueue(packet); } return(true); }
void packetLog(TeraPacket p) { if (flagToPacketLog) { //Создать директорию и файл if (!Directory.Exists("logs")) { Directory.CreateDirectory("logs"); } if (!Directory.Exists("logs/packets")) { Directory.CreateDirectory("logs/packets"); } if (packetLogWriter == null) { packetLogWriter = new StreamWriter(String.Format("logs/packets/Tera_{0}.packet", DateTime.Now.ToString("MMM_dd_HH_mm_ss"))); } packetLogWriter.WriteLine("{0} {1}", DateTime.Now.ToString("HH:mm:ss"), p.ToString()); packetLogWriter.Flush(); } }
public S_EACH_SKILL_RESULT(TeraPacket packet) : base(packet) { try { readUInt32(4, "visualeffect+count"); //4 readUInt64(8, "attacker id"); //8 readUInt64(16, "target id"); //16 readUInt32(24, "creature model id"); //24 readUInt32(28, "skill id"); //28 //readUInt32("shift 1");//32 readUInt64(36, "attak id"); //36 //readUInt32("shift 2");//44 readUInt32(48, "damage"); //48 readUInt16(52, "type"); //52 readByte(54, "crit"); //54 readByte(55, "електровсплеск"); //55 readByte(56, "overturned 1"); //56 //Походу крит readByte(57, "overturned 2"); //57 } catch { } }
private static void HandlePlayerComming(TeraPacket packet) { string ticket = packet.Reader.ReadString(); Logger.Debug("New Ticket added whith key " + ticket); var account = new AccountModel() { ID = packet.Reader.ReadInt32(), Username = packet.Reader.ReadString(), Password = packet.Reader.ReadString(), Pseudo = packet.Reader.ReadString(), Question = packet.Reader.ReadString(), Reponse = packet.Reader.ReadString(), Level = packet.Reader.ReadInt32(), LastIP = packet.Reader.ReadString(), LastConnectionDate = new DateTime(packet.Reader.ReadInt64()), }; TicketController.RegisterTicket(new AccountTicket() { Ticket = ticket, Account = account, ExpireTime = 0 }); }
public S_DESPAWN_PROJECTILE(TeraPacket packet) : base(packet) { readUInt64(4, "id"); }
public PacketEventArgs(Connection c, TeraPacket p) { connection = c; packet = p; }
public S_DESPAWN_USER(TeraPacket packet) : base(packet) { readUInt64(4, "id"); }
public S_SPAWN_PROJECTILE(TeraPacket packet) : base(packet) { readUInt64(4, "id"); readUInt64(49, "player id"); }