//HEX:11-00-0D-00-00-00-00- 01-16-00-43-01-00-00-00-00-00-00-00-40 //HEX:11-00-0D-00-00-00-00- 00-15-00-46-01-00-00-00-00-00-00-00-3B //HEX:11-00-0D-00-00-00-00- 02-17-00-4A-01-00-00-00-00-00-00-00-36 public override void Handle(EzClient client, EzPacket received) { byte a = received.Data.ReadByte(); byte b = received.Data.ReadByte(); byte c = received.Data.ReadByte(); byte d = received.Data.ReadByte(); byte e = received.Data.ReadByte(); byte f = received.Data.ReadByte(); byte g = received.Data.ReadByte(); byte h = received.Data.ReadByte(); byte i = received.Data.ReadByte(); byte j = received.Data.ReadByte(); byte k = received.Data.ReadByte(); byte l = received.Data.ReadByte(); byte m = received.Data.ReadByte(); _logger.Debug("a:{0} b:{1} c:{2} d:{3} e:{4} f:{5} g:{6} h:{7} i:{8} j:{9} k:{10} l:{11} m:{12}", a, b, c, d, e, f, g, h, i, j, k, l, m); }
private void OnSessionResponse(Response <Session> result, EzClient client, EzPacket packet) { _logger.Debug("Client ({0}) entered world (SessionKey: {1})", client.Identity, result.Result.Key); client.Session = result.Result; Channel channel = Server.GetChannel(client.Mode, client.Session.ChannelId); channel.Join(client); IBuffer response = EzServer.Buffer.Provide(); response.WriteByte(1); response.WriteByte(0); response.WriteByte(7); //0A? response.WriteByte(0); response.WriteByte((byte)client.Mode); // Mode 0=RubyMix 1=STREET MIX 2=CLUB MIX response.WriteByte(0); response.WriteByte((byte)client.Session.ChannelId); //1-xCH / 0=1ch 1=2ch 2=3ch 3=4ch response.WriteByte(0); Send(client, 1, response); IBuffer characterList = LobbyCharacterListPacket.Create(channel); Send(channel.GetLobbyClients(), 2, characterList); IBuffer announceRoomPacket = RoomPacket.CreateAnnounceRoomPacket(channel); Send(client.Channel.GetLobbyClients(), 13, announceRoomPacket); IBuffer applyInventoryPacket = InventoryPacket.ShowInventoryPacket(client.Inventory); Send(client, 0x21, applyInventoryPacket); IBuffer djPointsPacket = SongPacket.CreateDjPointsPacket(); Send(client, 0x2B, djPointsPacket); //43 IBuffer settings = SettingsPacket.Create(client.Setting, client.Mode); Send(client, 0x2D, settings); //45 }
public override int Id => 0x0F;//15 public override void Handle(EzClient client, EzPacket packet) { Game game = new Game(); game.Name = client.Room.Info.Name; game.GroupType = client.Room.Info.GameGroupType; game.Type = client.Room.Info.GameType; if (!Database.InsertGame(game)) { // Oh uh } foreach (EzClient c in client.Room.GetClients()) { c.Player.Playing = true; c.Game = game; } //Song info IBuffer buffer = EzServer.Buffer.Provide(); //General BYTE / Float buffer.WriteByte(1); //Level buffer.WriteFloat(1.6f); //MeasureScale //JudgmentDelta BYTE buffer.WriteByte(8); //Kool buffer.WriteByte(24); //Cool buffer.WriteByte(60); //Good buffer.WriteByte(76); //Miss //GaugeUpDownRate Float buffer.WriteFloat(0.2f); //Cool buffer.WriteFloat(0.1f); //Good buffer.WriteFloat(-1.8f); //Miss buffer.WriteFloat(-4.8f); //Fail buffer.WriteByte(0); // buffer.WriteByte((byte)client.Room.Info.SelectedSong); //Disc Num 205 buffer.WriteByte((byte)client.Room.Info.Difficulty); //Select difficulty 0=EZ 1=NM 2=HD 3=SHD buffer.WriteByte(1); Send(client.Room, 0x17, buffer); //23 }
private void Svr_ReceivedPacket(object sender, ReceivedPacketEventArgs e) { EzClient client = Clients.GetClient(e.Socket); EzPacket packet = client.Read(e.Data); if (packet != null) { if (_handlers.ContainsKey(packet.Id)) { _logger.LogIncomingPacket(client, packet); packet.Data.SetPositionStart(); _handlers[packet.Id].Handle(client, packet); } else { _logger.LogUnknownOutgoingPacket(client, packet); } } }
public override void Handle(EzClient client, EzPacket packet) { ModeType mode = (ModeType)packet.Data.ReadByte(); _logger.Debug("Selected Mode: {0}", mode); client.Session.Mode = mode; IBuffer response = EzServer.Buffer.Provide(); List <ServerPoint> worldServers = Server.WorldServerPoints; response.WriteByte(0); response.WriteByte((byte)worldServers.Count); foreach (ServerPoint worldServer in worldServers) { response.WriteByte((byte)worldServer.Id); response.WriteInt16(0); // TODO: Implement Server Load } Send(client, 10, response); }
public override void Handle(EzClient client, EzPacket packet) { packet.Data.ReadByte(); int selectedServer = packet.Data.ReadByte(); _logger.Debug("Selected Server: {0}", selectedServer); Channel selecteChannel = _loginServer.Channels[selectedServer]; client.Channel = selecteChannel; IBuffer response = EzServer.Buffer.Provide(); response.WriteInt16(selecteChannel.Port, Endianness.Big); //World Server Port response.WriteString(selecteChannel.IpAddress.ToString()); // World Server Ip response.WriteByte(0); response.WriteByte(0); response.WriteByte(0x7); Send(client, 7, response); // TODO - client with disconnect now - we need to keep the object around till it pops up in worldserver or remove it after timeout }
public static IBuffer Create(List <EzClient> clients) { short count = (short)clients.Count; IBuffer buffer = EzServer.Buffer.Provide(); buffer.WriteInt16((short)clients.Count, Endianness.Big); for (short i = 0; i < count; i++) { EzClient client = clients[i]; Score score = client.Score; buffer.WriteInt16(i, Endianness.Big); buffer.WriteByte(score.StageClear ? (byte)0 : (byte)1); buffer.WriteInt16((short)score.MaxCombo, Endianness.Big); buffer.WriteInt16((short)score.Kool, Endianness.Big); buffer.WriteInt16((short)score.Cool, Endianness.Big); buffer.WriteInt16((short)score.Good, Endianness.Big); buffer.WriteInt16((short)score.Miss, Endianness.Big); buffer.WriteInt16((short)score.Fail, Endianness.Big); buffer.WriteByte(0); buffer.WriteByte((byte)score.ComboType); buffer.WriteInt32(score.TotalScore, Endianness.Big); buffer.WriteInt16(0, Endianness.Big); //+ EXP buffer.WriteByte((byte)score.Rank); buffer.WriteInt16(0, Endianness.Big); // + Coin Increase [MAX:9999] buffer.WriteByte(0); // 1 = Level Up [HP Points +1 / DJ Points +1] increase buffer.WriteInt16((short)score.TotalNotes, Endianness.Big); buffer.WriteByte(0); buffer.WriteByte(5); buffer.WriteInt16(0); //EXP +% buffer.WriteInt16(0); //Coin +% buffer.WriteByte(client.Character.Level); buffer.WriteInt32(client.Character.Exp); buffer.WriteInt32(Character.ExpForNextLevel(client.Character)); buffer.WriteInt32(score.TotalScore, Endianness.Big); // Best Score buffer.WriteByte(1); //Song completion EXR increase buffer.WriteByte((byte)client.Character.GetExr(client.Mode)); } return(buffer); }
public override void Handle(EzClient client, EzPacket packet) { ModeType mode = (ModeType)packet.Data.ReadByte(); _logger.Debug("Selected Mode: {0}", mode); client.Mode = mode; IBuffer response = EzServer.Buffer.Provide(); List <Channel> channels = _loginServer.Channels; response.WriteByte(0); response.WriteByte(channels.Count); // Active Channels int i = 0; foreach (Channel channel in channels) { response.WriteByte(channel.Id); // Channel ID response.WriteInt16(channel.Load, Endianness.Big); // Load Indicator } Send(client, 10, response); }
public override void Handle(EzClient client, EzPacket received) { //HEX:2C-00-08-00-00-00-00- 00-00-00-00-01-00-00-00 IBuffer response = EzServer.Buffer.Provide(); response.WriteByte(0x00); response.WriteByte(0x00); response.WriteByte(0x00); response.WriteByte(0x00); response.WriteByte(0x01); response.WriteByte(0x00); response.WriteByte(0x00); response.WriteByte(0x00); response.WriteByte(0x00); response.WriteByte(0x00); response.WriteByte(0x00); response.WriteByte(0x00); Send(client, 0x2c, response); }
public override void Handle(EzClient client, EzPacket packet) { byte unknown = packet.Data.ReadByte(); byte sourceSlot = packet.Data.ReadByte(); int itemId = packet.Data.ReadInt16(Endianness.Big); byte destinationSlot = packet.Data.ReadByte(); InventoryItem source = client.Inventory.GetItem(sourceSlot); InventoryItem destination = client.Inventory.GetItem(destinationSlot); if (source == null) { _logger.Error("Source item could not be found"); return; } if (!client.Inventory.Move(sourceSlot, destinationSlot)) { _logger.Error("Couldn't move item {0}, destination is occupied", source.Item.Name); return; } if (!Database.UpdateInventoryItem(source)) { _logger.Error("Couldn't save source item to database {0}", source.Item.Name); return; } if (destination != null && !Database.UpdateInventoryItem(destination)) { _logger.Error("Couldn't save destination item to database {0}", source.Item.Name); return; } _logger.Debug("Move ItemId {0} from slot {1} to {2}", itemId, sourceSlot, destinationSlot); IBuffer showInventoryPacket = InventoryPacket.ShowInventoryPacket(client.Inventory); Send(client, 0x1E, showInventoryPacket); }
public override int Id => 8; //뒤로 가기 public override void Handle(EzClient client, EzPacket packet) { if (client.Player.Playing) { client.Player.Playing = false; client.Player.Ready = false; } else { IBuffer response = EzServer.Buffer.Provide(); response.WriteByte(1); response.WriteByte(0); response.WriteByte(7); response.WriteByte(0); response.WriteByte((byte)client.Session.ChannelId); //1-xCH / 0=1ch 1=2ch 2=3ch 3=4ch Send(client, 5, response); if (client.Room != null) { Room room = client.Room; room.Leave(client); IBuffer roomCharacterPacket = RoomPacket.CreateCharacterPacket(room); Send(room, 10, roomCharacterPacket); _logger.Debug("Character {0} left room {1}", client.Character.Name, room.Info.Name); } else { _logger.Error("Character {0} left NULL room", client.Character.Name); } IBuffer announceRoomPacket = RoomPacket.CreateAnnounceRoomPacket(client.Channel); Send(client.Channel.GetLobbyClients(), 13, announceRoomPacket); IBuffer characterList = LobbyCharacterListPacket.Create(client.Channel); Send(client.Channel.GetLobbyClients(), 2, characterList); } }
public override void Handle(EzClient client, EzPacket packet) { packet.Data.ReadInt16(); packet.Data.ReadInt32(); string roomPassword = packet.Data.ReadString(4); packet.Data.ReadInt32(); packet.Data.ReadInt32(); packet.Data.ReadByte(); packet.Data.ReadByte(); byte roomGameSeats = packet.Data.ReadByte(); byte roomConsumerMode = packet.Data.ReadByte(); byte roomRestrictedSongs = packet.Data.ReadByte(); packet.Data.ReadByte(); packet.Data.ReadByte(); packet.Data.ReadByte(); packet.Data.ReadByte(); string roomTitle = packet.Data.ReadString(20); _logger.Debug("Title: {0}", roomTitle); _logger.Debug("Password: {0}", roomPassword); _logger.Debug("Seats: {0}", roomGameSeats); _logger.Debug("Consumer Mode: {0}", roomConsumerMode); _logger.Debug("Restricted Songs: {0}", roomRestrictedSongs); IBuffer response = EzServer.Buffer.Provide(); response.WriteByte(1); response.WriteByte(0); response.WriteByte(7); response.WriteByte(0); response.WriteByte(7); Send(client, 10, response); }
public override void Handle(EzClient client, EzPacket packet) { byte unknown = packet.Data.ReadByte(); short itemId = packet.Data.ReadInt16(Endianness.Big); byte itemSlot = packet.Data.ReadByte(); InventoryItem inventoryItem = client.Inventory.GetItem(itemSlot); if (inventoryItem == null) { _logger.Error("Item could not be found"); return; } if (inventoryItem.Item.Id != itemId) { _logger.Error("InventoryItem Id {0} does not match clients {1}", inventoryItem.Item.Id, itemId); return; } if (!client.Inventory.RemoveItem(inventoryItem)) { _logger.Error("Could not remove item {0} from bag", inventoryItem.Item.Name); return; } if (!Database.DeleteInventoryItem(inventoryItem.Id)) { _logger.Error("Could not deleye item {0} from database", inventoryItem.Item.Name); return; } _logger.Debug("Deleted Item {0} from slot {1}", inventoryItem.Item.Name, inventoryItem.Slot); IBuffer showInventoryPacket = InventoryPacket.ShowInventoryPacket(client.Inventory); Send(client, 0x1E, showInventoryPacket); }
public static IBuffer CreateCharacterPacket(Room room) { IBuffer buffer = EzServer.Buffer.Provide(); buffer.WriteByte(2); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); for (int i = 0; i < Room.MaxSlots; i++) { EzClient client = room.GetClient(i); if (client != null) { WriteCharacter(buffer, i, client); } else { buffer.WriteByte(0xFF); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteBytes(EmptySlot); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); } } return(buffer); }
protected void Send(EzClient client, EzPacket packet) { Server.Send(client, packet); }
// 06-00-15-00-00-00-00- 00-00- 00-6A- 00-00-01- 00-00-00-00- 00-00-00-00-00-00-00-00-01-00 // 6A ? // 01 Room number //HEX:06-00-15-00-00-00-00- 00-00- 00-67- 00-00-03 -00-00-00-00 -00-00-00-00-00-00-00-00-01-00 //ASCII:. . . . . . . . . . g . . . s d d d . . . . . . . . . . //HEX:06-00-15-00-00-00-00- 00- 01- 00-67 -00-00-00- 73-64-64-64- 00-00-00-00-00-00-00-00-01-00 // 06-00-15-00-00-00-00- 00-01-00-67- 00-00-00-71-77-65-00-00-00-00-00-00-00-00-00-01-00 // 06-00-15-00-00-00-00- 00-00-00-67- 00-00-01-00-00-00-00-00-00-00-00-00-00-00-00-01-00 // 12 = exit room TODO // 11 = join room public override void Handle(EzClient client, EzPacket packet) { byte quickStart = packet.Data.ReadByte(); byte passwordProtected = packet.Data.ReadByte(); byte unknown0 = packet.Data.ReadByte(); byte channel = packet.Data.ReadByte(); // Channel + 100, 0 Indexed byte unknown1 = packet.Data.ReadByte(); byte unknown2 = packet.Data.ReadByte(); byte roomNumber = packet.Data.ReadByte(); string password = packet.Data.ReadFixedString(4, Utils.KoreanEncoding); _logger.Debug("Channel: {0}, Password {1}, Room#:{2}, QuickStart:{3}, PwProtected:{4}", channel - 100 + 1, password, roomNumber, quickStart, passwordProtected); Room room; if (quickStart > 0) { room = client.Channel.GetQuickRoom(); if (room == null) { _logger.Debug("No QuickStart Room found"); IBuffer joinErrorPacket = RoomPacket.CreateJoinErrorPacket(); Send(client, 8, joinErrorPacket); return; } } else { room = client.Channel.GetRoom(roomNumber); } if (room == null) { _logger.Error("Invalid room"); IBuffer joinErrorPacket = RoomPacket.CreateJoinErrorPacket(); Send(client, 8, joinErrorPacket); return; } if (passwordProtected > 0 && room.Info.Password != password) { _logger.Error("Invalid password ({0}) for room with password ({1})", password, room.Info.Password); IBuffer joinErrorPacket = RoomPacket.CreateJoinErrorPacket(); Send(client, 8, joinErrorPacket); return; } room.Join(client); IBuffer joinRoomPacket = RoomPacket.CreateJoinRoomPacket(room, client); Send(client, 8, joinRoomPacket); IBuffer roomCharacterPacket = RoomPacket.CreateCharacterPacket(room); Send(room, 10, roomCharacterPacket); IBuffer announceJoinPacket = RoomPacket.AnnounceJoin(client); Send(room, 11, announceJoinPacket); IBuffer announceRoomPacket = RoomPacket.CreateAnnounceRoomPacket(client.Channel); Send(client.Channel.GetLobbyClients(), 13, announceRoomPacket); IBuffer characterList = LobbyCharacterListPacket.Create(client.Channel); Send(client.Channel.GetLobbyClients(), 2, characterList); _logger.Debug("Character {0} joined room {1}", client.Character.Name, room.Info.Name); }
public override void Handle(EzClient client, EzPacket packet) { }
public override void Handle(EzClient client, EzPacket packet) { // // ASCII:. . . . . . . a s d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . // HEX:26-00-28-00-00-00-00- 61-73-64-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 string characterName = packet.Data.ReadFixedString(14, Utils.KoreanEncoding); _logger.Debug("Add Character: {0}", characterName); IBuffer buffer = EzServer.Buffer.Provide(); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); buffer.WriteByte(1); // Send(client, 0x26, buffer); // Send(client, 0x30, buffer); // Send(client, 0x31, buffer); // discon Send(client, 0x32, buffer); // Send(client, 0x33, buffer); Send(client, 0x30, buffer); }
public EzLogPacket(EzClient client, EzPacket ezPacket, EzLogPacketType packetType) : base(ezPacket.Id, EzServer.Buffer.Provide(ezPacket.Data.GetAllBytes())) { PacketType = packetType; TimeStamp = DateTime.UtcNow; Buffer = ezPacket.ToData(); }
protected virtual void OnClientConnected(EzClient client) { }
public void Send(EzClient client, byte id, IBuffer data) { EzPacket packet = new EzPacket(id, data); Send(client, packet); }
public void Send(EzClient client, EzPacket packet) { _logger.LogOutgoingPacket(client, packet); client.Send(packet); }
public override void Handle(EzClient client, EzPacket packet) { byte[] paramSession = packet.Data.ReadBytes(17); byte[] paramSessionDecrypt = Utils.DecryptParameter(paramSession, Utils.KeySessionParameter); string session = Utils.ParameterToString(paramSessionDecrypt); _logger.Debug("Client {0} Entered World (Session:{2})", client.Identity, session); // TODO - find client with session IBuffer player = EzServer.Buffer.Provide(); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0); player.WriteCString("news"); player.WriteByte(0x27); player.WriteCString("news"); player.WriteByte(0x0e); player.WriteByte(0x0f); player.WriteByte(0x10); player.WriteByte(0x13); player.WriteByte(0x14); player.WriteByte(0x15); player.WriteByte(0x16); player.WriteByte(0x24); player.WriteByte(0x0d); player.WriteByte(0x0a); player.WriteByte(0x0c); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0x85); player.WriteByte(0); player.WriteByte(0x89); player.WriteByte(0); player.WriteByte(0x8d); player.WriteByte(0); player.WriteByte(0x94); player.WriteByte(0x63); // Level player.WriteByte(0); player.WriteByte(0x7c); player.WriteByte(0); player.WriteByte(0x04); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0x27); player.WriteByte(0x10); player.WriteByte(0x0d); player.WriteByte(0x0e); player.WriteByte(0x0f); player.WriteByte(0x10); player.WriteByte(0x13); player.WriteByte(0x14); player.WriteByte(0x15); player.WriteByte(0x16); player.WriteByte(0x24); player.WriteByte(0x0d); player.WriteByte(0x0a); player.WriteByte(0x0c); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0x02); player.WriteByte(0xb5); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0x09); player.WriteByte(0xc4); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0x27); player.WriteByte(0x10); player.WriteByte(0); player.WriteByte(0); player.WriteByte(0x27); player.WriteByte(0x10); player.WriteByte(0x0d); player.WriteByte(0x0e); player.WriteByte(0x0f); player.WriteByte(0x10); player.WriteByte(0x13); player.WriteByte(0x14); player.WriteByte(0x15); player.WriteByte(0x16); player.WriteByte(0x24); player.WriteByte(0x0d); player.WriteByte(0x0a); player.WriteByte(0x0c); player.WriteByte(0); Send(client, 1, player); }
public override int Id => 0x12; //18 public override void Handle(EzClient client, EzPacket packet) { Score score = new Score(); score.AccountId = client.Account.Id; score.GameId = client.Game.Id; score.SongId = client.Room.Info.SelectedSong; score.Created = DateTime.Now; score.Difficulty = client.Room.Info.Difficulty; score.FadeEffect = client.Room.Info.FadeEffect; score.NoteEffect = client.Room.Info.NoteEffect; score.Slot = client.Player.Slot; score.Team = client.Player.Team; byte unknown0 = packet.Data.ReadByte(); score.StageClear = packet.Data.ReadByte() == 0; short unknown1 = packet.Data.ReadInt16(Endianness.Big); score.MaxCombo = packet.Data.ReadInt16(Endianness.Big); score.Kool = packet.Data.ReadInt16(Endianness.Big); score.Cool = packet.Data.ReadInt16(Endianness.Big); score.Good = packet.Data.ReadInt16(Endianness.Big); score.Miss = packet.Data.ReadInt16(Endianness.Big); score.Fail = packet.Data.ReadInt16(Endianness.Big); short unknown2 = packet.Data.ReadInt16(Endianness.Big); score.RawScore = packet.Data.ReadInt32(Endianness.Big); score.TotalNotes = packet.Data.ReadInt16(Endianness.Big); score.Rank = (ScoreRankType)packet.Data.ReadByte(); byte unknown3 = packet.Data.ReadByte(); score.ComboType = Score.GetComboType(score); _logger.Debug("StageClear: {0}", score.StageClear); _logger.Debug("MaxCombo: {0}", score.MaxCombo); _logger.Debug("Kool: {0}", score.Kool); _logger.Debug("Cool: {0}", score.Cool); _logger.Debug("Good: {0}", score.Good); _logger.Debug("Miss: {0}", score.Miss); _logger.Debug("Fail: {0}", score.Fail); _logger.Debug("RawScore: {0}", score.RawScore); _logger.Debug("TotalScore: {0}", score.TotalScore); _logger.Debug("Rank: {0}", score.Rank); _logger.Debug("Total Notes: {0}", score.TotalNotes); _logger.Debug("Unknown0: {0}", unknown0); _logger.Debug("Unknown1: {0}", unknown1); _logger.Debug("Unknown2: {0}", unknown2); _logger.Debug("Unknown3: {0}", unknown3); client.Player.Playing = false; client.Score = score; /* * //Play check * IBuffer player4 = EzServer.Buffer.Provide(); * player4.WriteByte(0); * * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(100); * * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(6); //MAX COMBO * * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(7); //SCORE * * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(0); //? * * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(0); //? * * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(0); //? * * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(0); * player4.WriteByte(0); //? * Send(client, 0x19, player4); */ if (!Database.InsertScore(score)) { _logger.Error("Could't save score for: {0}", client.Character.Name); } if (!client.Room.Finished()) { // Last player finish will be responsible for going back to room. // TODO let the server check periodically incase the last person disconnectes. return; } List <EzClient> clients = client.Room.GetClients(); IBuffer scorePacket = ScorePacket.Create(clients); Send(client.Room, 0x1B, scorePacket); //27 Task.Delay(TimeSpan.FromSeconds(10)).ContinueWith(t => { // Display Room after 10 seconds IBuffer buffer = EzServer.Buffer.Provide(); buffer.WriteByte(0); Send(client.Room, 0x1C, buffer); //28 }); }
public override int Id => 0x19;//25 = 내가방 버튼 public override void Handle(EzClient client, EzPacket packet) { IBuffer showInventoryPacket = InventoryPacket.ShowInventoryPacket(client.Inventory); Send(client, 0x24, showInventoryPacket);//36 = 가방 열림,목록 }
public void Dispose() { client.Disconnect(); client = null; }
public abstract void Handle(EzClient client, EzPacket packet);
public static void WriteCharacter(IBuffer buffer, int index, EzClient client) { Character character = client.Character; Inventory inventory = client.Inventory; buffer.WriteByte((byte)index); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(client.Player.Ready ? (byte)1 : (byte)0); // Ready buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte((byte)client.Player.Team); //TEAM 1=RED 2=BLUE buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteFixedString(character.Name, 16, Utils.KoreanEncoding); buffer.WriteByte(0); // String Termination buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte((byte)character.Sex); buffer.WriteByte(0); buffer.WriteByte(character.Level); buffer.WriteByte(0); // Exr buffer.WriteInt16((short)character.RubyExr); //Ruby Mix Exr buffer.WriteInt16((short)character.StreetExr); //Street Mix Exr buffer.WriteInt16((short)character.ClubExr); //Club Mix Exr buffer.WriteInt16((short)character.GetExr(client.Mode)); //My Exr buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); //Information buffer.WriteInt32(0); //Ruby Mix buffer.WriteInt32(0); //Street Mix buffer.WriteInt32(0); //Club Mix buffer.WriteInt16(character.MaxCombo); //Max Combo //Record buffer.WriteInt32(character.RubyWins); //Ruby Wins buffer.WriteInt32(character.StreetWins); //Street Wins buffer.WriteInt32(character.ClubWins); //Club Wins buffer.WriteInt32(character.RubyLoses); //Ruby Lose buffer.WriteInt32(character.StreetLoses); //Street Lose buffer.WriteInt32(character.ClubLoses); //Club Lose //Premium buffer.WriteByte(0); //1 buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0x64); // HP 100 buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteInt16((short)inventory.GetAvatarId()); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteInt16((short)inventory.GetSkinId()); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteInt16((short)inventory.GetNoteId()); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); buffer.WriteByte(0); }
public override void Handle(EzClient client, EzPacket packet) { byte[] paramOne = packet.Data.ReadBytes(17); byte[] paramOneDecrypt = Utils.DecryptParameter(paramOne, Utils.KeyFirstParameter); string one = Utils.ParameterToString(paramOneDecrypt); _logger.Debug("Client {0} Entered World (SessionKey:{1})", client.Identity, one); //01 00 08 00 00 00 00 // ID = 1 Size =0x08 = 8 // //01 00 10 00 01 00 07 00 Data size = 8 IBuffer response = EzServer.Buffer.Provide(); response.WriteByte(1); response.WriteByte(0); response.WriteByte(0x10); response.WriteByte(0); response.WriteByte(1); response.WriteByte(0); response.WriteByte(7); response.WriteByte(0); Send(client, 1, response); //21 00 01 00 00 00 00 // ID = 0x21 = 33; Size = 1; // //00 Data size =1 IBuffer response1 = EzServer.Buffer.Provide(); response.WriteByte(0); Send(client, 33, response1); IBuffer response2 = EzServer.Buffer.Provide(); response2.WriteByte(0); response2.WriteByte(1); response2.WriteByte(0); response2.WriteByte(3); response2.WriteByte(0X65); response2.WriteByte(0X7A); response2.WriteByte(0X63); response2.WriteByte(0X72); response2.WriteByte(0X62); response2.WriteByte(0X65); response2.WriteByte(0X65); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(1); response2.WriteByte(1); response2.WriteByte(0X0D); response2.WriteByte(0); response2.WriteByte(0X10); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(7); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(1); response2.WriteByte(1); response2.WriteByte(1); response2.WriteByte(1); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(0); response2.WriteByte(7); response2.WriteByte(2); Send(client, 2, response2); }
protected void Send(EzClient client, byte id, IBuffer data) { Server.Send(client, id, data); }