예제 #1
0
        public static void Handle_ChangeMap(ClientConnection Client, PacketReader reader, byte last)
        {
            Account    User         = Client.CurrentAccount;
            NormalRoom room         = Rooms.GetRoom(User.CurrentRoomId);
            bool       isRoomMaster = User.RoomPos == room.RoomMasterIndex;

            if (isRoomMaster)
            {
                int mapid = reader.ReadLEInt32();
                if (!MapHolder.MapInfos.TryGetValue(mapid, out MapInfo mapinfo))
                {
                    Console.WriteLine("Unknown mapid: {0}", mapid);
                    return;
                }
                //room.MapNum = mapid;
                room.setMapNum(mapid);
                room.RuleType = mapinfo.RuleType;
                foreach (var RoomPlayer in room.PlayerList())
                {
                    RoomPlayer.Connection.SendAsync(new GameRoom_Hex("FF6405F70300000000000000000000", last));
                    RoomPlayer.Connection.SendAsync(new GameRoom_ChangeMap_FF6605(RoomPlayer, mapid, last));
                    RoomPlayer.Connection.SendAsync(new GameRoom_ChangeMap_FFEA02(RoomPlayer, mapid, last));
                }
            }
        }
예제 #2
0
 public SendPlayerHP(NormalRoom room, byte last)
 {
     ns.Write((byte)0xFF);
     ns.Write((short)0x476);
     ns.Write(room.PlayerCount());
     foreach (Account User in room.PlayerList().OrderBy(p => p.RoomPos))
     {
         User.GetMyLevel();
         User.HP    = 100 + User.HealthPoint + User.Level * 2;
         User.MaxHP = User.HP;
         ns.Write((int)User.RoomPos);
         ns.Write(User.HP);
     }
     ns.Write(last);
 }