//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);
        }
示例#2
0
        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
        }
示例#3
0
        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
        }
示例#4
0
        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);
                }
            }
        }
示例#5
0
        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);
        }
示例#6
0
        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
        }
示例#7
0
        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);
        }
示例#8
0
        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);
        }
示例#9
0
        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);
        }
示例#10
0
        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);
        }
示例#11
0
        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);
            }
        }
示例#12
0
        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);
        }
示例#14
0
        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);
        }
示例#15
0
 protected void Send(EzClient client, EzPacket packet)
 {
     Server.Send(client, packet);
 }
示例#16
0
        // 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);
        }
示例#17
0
 public override void Handle(EzClient client, EzPacket packet)
 {
 }
示例#18
0
        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);
        }
示例#19
0
 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();
 }
示例#20
0
 protected virtual void OnClientConnected(EzClient client)
 {
 }
示例#21
0
        public void Send(EzClient client, byte id, IBuffer data)
        {
            EzPacket packet = new EzPacket(id, data);

            Send(client, packet);
        }
示例#22
0
 public void Send(EzClient client, EzPacket packet)
 {
     _logger.LogOutgoingPacket(client, packet);
     client.Send(packet);
 }
示例#23
0
        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);
        }
示例#24
0
        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 = 가방 열림,목록
        }
示例#26
0
 public void Dispose()
 {
     client.Disconnect();
     client = null;
 }
示例#27
0
 public abstract void Handle(EzClient client, EzPacket packet);
示例#28
0
        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);
        }
示例#29
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);
        }
示例#30
0
 protected void Send(EzClient client, byte id, IBuffer data)
 {
     Server.Send(client, id, data);
 }