Пример #1
0
        public void UsersList(Session s, PacketRead r)
        {
            PacketWrite pw = new PacketWrite();

            pw.Int(GameServer.UsersList.Count);
            for (int i = 0; i < GameServer.UsersList.Count; i++)
            {
                pw.Int(GameServer.UsersList[i].PInfo.m_dwUserUID);//id
                pw.UnicodeStr(GameServer.UsersList[i].PInfo.m_strLogin);
                pw.Byte((byte)11);
                pw.HexArray("00 13 00 00 00 00 00");
            }
            s.SendPacket(PacketCompress.HalfCompress(pw.Get_Packet()), 51);
        }
Пример #2
0
        public void ListRooms(Session p, PacketRead r)
        {
            try
            {
                byte RoomType = r.Byte();
                byte RoomMode = r.Byte();

                int RoomsCount = 0;
                foreach (ushort i in GameServer.List_Rooms.Keys)
                {
                    if (p.PInfo.m_dwChannelUID == 6)
                    {
                        if (RoomMode != GameServer.List_Rooms[i].m_iGameMode)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (GameServer.List_Rooms[i].m_cGameCategory != 0)
                        {
                            continue;
                        }
                    }
                    if (RoomType == 1)
                    {
                        if (GameServer.List_Rooms[i].m_bPlaying == true || GameServer.List_Rooms[i].m_abTotalSlotsOpen() == 0)
                        {
                            continue;
                        }
                    }
                    RoomsCount += 1;
                }

                PacketWrite pw = new PacketWrite();
                pw.Int(RoomsCount);

                foreach (ushort RoomPosition in GameServer.List_Rooms.Keys)
                {
                    if (p.PInfo.m_dwChannelUID == 6)
                    {
                        if (RoomMode != GameServer.List_Rooms[RoomPosition].m_iGameMode)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (GameServer.List_Rooms[RoomPosition].m_cGameCategory != 0)
                        {
                            continue;
                        }
                    }

                    if (RoomType == 1)
                    {
                        if (GameServer.List_Rooms[RoomPosition].m_bPlaying == true || GameServer.List_Rooms[RoomPosition].m_abTotalSlotsOpen() == 0)
                        {
                            continue;
                        }
                    }

                    pw.UShort(GameServer.List_Rooms[RoomPosition].m_usRoomID);
                    pw.UnicodeStr(GameServer.List_Rooms[RoomPosition].m_strRoomName);

                    if (GameServer.List_Rooms[RoomPosition].m_strRoomPasswd.Length > 0)
                    {
                        pw.Bool(false);
                    }
                    else
                    {
                        pw.Bool(true);
                    }

                    pw.Byte(0);
                    pw.UnicodeStr(GameServer.List_Rooms[RoomPosition].m_strRoomPasswd);
                    pw.Short((short)(GameServer.List_Rooms[RoomPosition].m_abTotalSlotsOpen() + 1));
                    pw.Short(GameServer.List_Rooms[RoomPosition].m_usUsers());
                    pw.Bool(GameServer.List_Rooms[RoomPosition].m_bPlaying);
                    pw.HexArray("6F 0C CC FA 0B 08 00 00 00 20 63 00 00 F5 00 00 00 03 00 00 00 00");
                    pw.Short(0);
                    pw.Short(GameServer.List_Rooms[RoomPosition].m_usUsers());
                    for (int x = 0; x < GameServer.List_Rooms[RoomPosition].m_usMaxUsers; x++)
                    {
                        if (GameServer.List_Rooms[RoomPosition].m_dwSlots[x].Active)
                        {
                            pw.UnicodeStr(GameServer.List_Rooms[RoomPosition].m_dwSlots[x].usr.PInfo.m_strNickName);
                            pw.Byte(11);
                        }
                    }
                    pw.HexArray("00 00 00 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 04 42 00 52 00 00 00 00 00 07 00 00 00 00 FF FF FF FF");
                }
                p.SendPacket(PacketCompress.HalfCompress(pw.Get_Packet()), 49);
            }
            catch
            {
                PacketWrite pw = new PacketWrite();
                pw.Int(0);
                p.SendPacket(PacketCompress.HalfCompress(pw.Get_Packet()), 49);
            }
        }