Beispiel #1
0
        public static void KRoomInfo(Session right, PacketRead rs)
        {
            libcomservice.REQUEST.Room room = new libcomservice.REQUEST.Room();

            ushort m_usRoomID = rs.UShort();

            room.m_strRoomName   = rs.UnicodeString();
            room.m_bPublic       = rs.Bool();
            room.m_bGuild        = rs.Bool();
            room.m_strRoomPasswd = rs.UnicodeString();
            short m_usUsers = rs.Short();

            room.m_usMaxUsers     = rs.Get_Short();
            room.m_bPlaying       = rs.Bool();
            room.m_cGrade         = rs.Byte();
            room.m_cGameCategory  = rs.Byte();
            room.m_iGameMode      = rs.Int();
            room.m_iSubGameMode   = rs.Int();
            room.m_bRandomableMap = rs.Bool();
            room.m_iMapID         = rs.Int();
            room.m_iP2PVersion    = rs.Int();
            byte[] m_abSlotOpen = rs.Buffer_Array_Bytes(6);
            room.m_vecMonsterSlot = rs.Int();
            room.m_cDifficulty    = rs.Int();
            rs.Jump(17);

            ushort index_room = 0;

            for (ushort i = 1; i < GameServer.m_usMaxUsers; i++)
            {
                if (GameServer.List_Rooms.ContainsKey(i))
                {
                    continue;
                }
                index_room = i;
                break;
            }
            room.m_usRoomID = index_room;

            room.m_dwSlots[0].Active = true;
            room.m_dwSlots[0].usr    = right;
            room.m_dwSlots[0].Leader = true;
            room.m_dwSlots[0].Open   = false;
            room.m_dwSlots[0].Status = 0;
            room.m_dwSlots[0].AFK    = false;
            room.m_dwSlots[0].Team   = 0;

            for (int i = 1; i < room.m_usMaxUsers; i++)
            {
                room.m_dwSlots[i].Active = false;
                room.m_dwSlots[i].usr    = null;
                room.m_dwSlots[i].Leader = false;
                room.m_dwSlots[i].Open   = true;
                room.m_dwSlots[i].Status = 0;
                room.m_dwSlots[i].AFK    = false;
                room.m_dwSlots[i].Team   = 0;
            }
            right.PInfo.CurRoom = room;
        }
Beispiel #2
0
        public static void KRoomInfo(Session right, PacketWrite ks)
        {
            libcomservice.REQUEST.Room room = right.PInfo.CurRoom;

            ks.UShort(room.m_usRoomID);
            ks.UnicodeStr(room.m_strRoomName);
            ks.Bool(room.m_bPublic);
            ks.Bool(room.m_bGuild);
            ks.UnicodeStr(room.m_strRoomPasswd);
            ks.Short(room.m_usUsers());
            ks.Short(7);
            ks.Bool(room.m_bPlaying);
            ks.Byte(room.m_cGrade);
            ks.Byte(room.m_cGameCategory);
            ks.Int(room.m_iGameMode);
            ks.Int(room.m_iSubGameMode);
            ks.Bool(room.m_bRandomableMap);
            ks.Int(room.m_iMapID);
            ks.Int(room.m_iP2PVersion);
            for (short j = 0; j < room.m_usMaxUsers; j++)
            {
                ks.Bool(room.m_dwSlots[j].Open);
            }
            if (room.m_usMaxUsers == 4)
            {
                ks.Bool(false);
                ks.Bool(false);
            }
            ks.Int(room.m_vecMonsterSlot);
            ks.Int(room.m_cDifficulty);
            ks.HexArray("00 00 00 00 01");
            ks.WriteIP(GameServer.m_dwIP);
            ks.UShort(GameServer.m_usURelayServerPort);
            ks.WriteIP(GameServer.m_dwIP);
            ks.UShort(GameServer.m_usTRelayServerPort);
        }