public override void ReceivedPacket(NetworkClient client, AgentServerPacket packet) { Logger.Info("Received opcode: " + (Opcodes)packet.Opcode + " (" + packet.Opcode.ToHex() + ")"); var account = (Account)client.Tag; switch ((Opcodes)packet.Opcode) { case Opcodes.Hello: { var unk0 = packet.Data.ReadUInt32(); account.ClientInstance = packet.Data.ReadUInt32(); account.Id = packet.Data.ReadUInt32(); var charId = (UInt32)Database.ExecuteScalar <Int64>( "SELECT characterid FROM clientinstances " + "WHERE accountid=" + account.Id + " AND clientinst=" + account.ClientInstance); account.Character = new Character(charId); account.Character.LoadDetailsFromDatabase(Database); new ConanStream() .WriteUInt32(0x00050000) .Send(client); new ConanStream() .WriteUInt16(0x0014) .WriteArrayPrependLengthUInt16(new ConanStream() .WriteUInt32(account.ClientInstance) .WriteUInt32(0x00000000) .WriteString(account.Character.Name.Length > 0 ? account.Character.Name : "Character" + account.ClientInstance)) .Send(client); // "<localized category=20000 token=\"welcome_message\">" SendSystemMessage(client, Settings.WelcomeString); SendSystemMessage(client, Statics.BuildInfo.Replace("\n", "<br />")); new ConanStream() .WriteUInt16(0x003c) .WriteArrayPrependLengthUInt16(new ConanStream() .WriteByte(0x04) .WriteUInt32(0x0000232a) .WriteString("~Trial") .WriteUInt32(0x00008044) .WriteUInt16(0x0000)) .Send(client); break; } default: { Logger.Info("Unknown packet: " + packet); break; } } }
private bool ReadMessage(ICollection<IScsMessage> messages) { if (_stream == null || _stream.Length == 0) return false; _stream.Position = 0; var packet = new AgentServerPacket(_stream); if (packet.Length != UInt16.MaxValue) { messages.Add(packet); Functions.TrimStream(ref _stream); return true; } _backBuffer = _stream.ToArray(); return false; }
private bool ReadMessage(ICollection <IScsMessage> messages) { if (_stream == null || _stream.Length == 0) { return(false); } _stream.Position = 0; var packet = new AgentServerPacket(_stream); if (packet.Length != UInt16.MaxValue) { messages.Add(packet); Functions.TrimStream(ref _stream); return(true); } _backBuffer = _stream.ToArray(); return(false); }