Party Matching Room.
Contributed by gigilo1968.
This commit is contained in:
parent
f2c81a5e84
commit
6d9c159b91
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the L2J Mobius project.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.l2jmobius.gameserver.enums;
|
||||||
|
|
||||||
|
public enum PartyMatchingRoomLevelType
|
||||||
|
{
|
||||||
|
MY_LEVEL_RANGE,
|
||||||
|
ALL
|
||||||
|
}
|
@ -25,6 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.base.ClassId;
|
import com.l2jmobius.gameserver.model.base.ClassId;
|
||||||
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
||||||
@ -87,12 +88,12 @@ public class MatchingRoomManager
|
|||||||
return _rooms.get(MatchingRoomType.PARTY);
|
return _rooms.get(MatchingRoomType.PARTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MatchingRoom> getPartyMathchingRooms(int location, int level)
|
public List<MatchingRoom> getPartyMathchingRooms(int location, PartyMatchingRoomLevelType type, int requestorLevel)
|
||||||
{
|
{
|
||||||
//@formatter:off
|
//@formatter:off
|
||||||
return _rooms.getOrDefault(MatchingRoomType.PARTY, Collections.emptyMap()).values().stream()
|
return _rooms.getOrDefault(MatchingRoomType.PARTY, Collections.emptyMap()).values().stream()
|
||||||
.filter(r -> (location < 0) || (r.getLocation() == location))
|
.filter(room -> (location < 0) || (room.getLocation() == location))
|
||||||
.filter(r -> (r.getMinLvl() <= level) && (r.getMaxLvl() >= level))
|
.filter(room -> (type == PartyMatchingRoomLevelType.ALL) || ((room.getMinLvl() >= requestorLevel) && (room.getMaxLvl() <= requestorLevel)))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
}
|
}
|
||||||
|
@ -126,6 +126,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
_members.add(leader);
|
_members.add(leader);
|
||||||
_partyLvl = leader.getLevel();
|
_partyLvl = leader.getLevel();
|
||||||
_distributionType = partyDistributionType;
|
_distributionType = partyDistributionType;
|
||||||
|
L2World.getInstance().incrementParty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -393,6 +394,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
}, PARTY_POSITION_BROADCAST_INTERVAL.toMillis() / 2, PARTY_POSITION_BROADCAST_INTERVAL.toMillis());
|
}, PARTY_POSITION_BROADCAST_INTERVAL.toMillis() / 2, PARTY_POSITION_BROADCAST_INTERVAL.toMillis());
|
||||||
}
|
}
|
||||||
applyTacticalSigns(player, false);
|
applyTacticalSigns(player, false);
|
||||||
|
L2World.getInstance().incrementPartyMember();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Integer, L2Character> getTacticalSigns()
|
private Map<Integer, L2Character> getTacticalSigns()
|
||||||
@ -553,6 +555,8 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
broadcastPacket(msg);
|
broadcastPacket(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
L2World.getInstance().decrementPartyMember();
|
||||||
|
|
||||||
// UI update.
|
// UI update.
|
||||||
player.sendPacket(PartySmallWindowDeleteAll.STATIC_PACKET);
|
player.sendPacket(PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||||
player.setParty(null);
|
player.setParty(null);
|
||||||
@ -632,6 +636,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
L2World.getInstance().decrementParty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,6 +21,7 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
@ -94,6 +95,9 @@ public final class L2World
|
|||||||
/** Map with the pets instances and their owner ID. */
|
/** Map with the pets instances and their owner ID. */
|
||||||
private final Map<Integer, L2PetInstance> _petsInstance = new ConcurrentHashMap<>();
|
private final Map<Integer, L2PetInstance> _petsInstance = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
private final AtomicInteger _partyNumber = new AtomicInteger();
|
||||||
|
private final AtomicInteger _memberInPartyNumber = new AtomicInteger();
|
||||||
|
|
||||||
private final L2WorldRegion[][][] _worldRegions = new L2WorldRegion[REGIONS_X + 1][REGIONS_Y + 1][REGIONS_Z + 1];
|
private final L2WorldRegion[][][] _worldRegions = new L2WorldRegion[REGIONS_X + 1][REGIONS_Y + 1][REGIONS_Z + 1];
|
||||||
|
|
||||||
/** Constructor of L2World. */
|
/** Constructor of L2World. */
|
||||||
@ -813,6 +817,36 @@ public final class L2World
|
|||||||
_log.info(getClass().getSimpleName() + ": All visible NPC's deleted.");
|
_log.info(getClass().getSimpleName() + ": All visible NPC's deleted.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void incrementParty()
|
||||||
|
{
|
||||||
|
_partyNumber.incrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decrementParty()
|
||||||
|
{
|
||||||
|
_partyNumber.decrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void incrementPartyMember()
|
||||||
|
{
|
||||||
|
_memberInPartyNumber.incrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decrementPartyMember()
|
||||||
|
{
|
||||||
|
_memberInPartyNumber.decrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPartyCount()
|
||||||
|
{
|
||||||
|
return _partyNumber.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPartyMemberCount()
|
||||||
|
{
|
||||||
|
return _memberInPartyNumber.get();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the current instance of L2World
|
* @return the current instance of L2World
|
||||||
*/
|
*/
|
||||||
|
@ -18,6 +18,7 @@ package com.l2jmobius.gameserver.model.matching;
|
|||||||
|
|
||||||
import com.l2jmobius.gameserver.enums.MatchingMemberType;
|
import com.l2jmobius.gameserver.enums.MatchingMemberType;
|
||||||
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.enums.UserInfoType;
|
import com.l2jmobius.gameserver.enums.UserInfoType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
import com.l2jmobius.gameserver.model.L2Party;
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
@ -43,7 +44,8 @@ public final class PartyMatchingRoom extends MatchingRoom
|
|||||||
protected void onRoomCreation(L2PcInstance player)
|
protected void onRoomCreation(L2PcInstance player)
|
||||||
{
|
{
|
||||||
player.broadcastUserInfo(UserInfoType.CLAN);
|
player.broadcastUserInfo(UserInfoType.CLAN);
|
||||||
player.sendPacket(new ListPartyWaiting(player.getLevel(), -1, 1));
|
player.sendPacket(new ListPartyWaiting(PartyMatchingRoomLevelType.ALL, -1, 1, player.getLevel()));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_HAVE_CREATED_A_PARTY_ROOM);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -33,6 +33,7 @@ public class RequestDismissPartyRoom implements IClientIncomingPacket
|
|||||||
public boolean read(L2GameClient client, PacketReader packet)
|
public boolean read(L2GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_roomid = packet.readD();
|
_roomid = packet.readD();
|
||||||
|
packet.readD();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package com.l2jmobius.gameserver.network.clientpackets;
|
package com.l2jmobius.gameserver.network.clientpackets;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketReader;
|
import com.l2jmobius.commons.network.PacketReader;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
import com.l2jmobius.gameserver.model.L2CommandChannel;
|
import com.l2jmobius.gameserver.model.L2CommandChannel;
|
||||||
import com.l2jmobius.gameserver.model.L2Party;
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
@ -28,14 +29,15 @@ import com.l2jmobius.gameserver.network.serverpackets.ListPartyWaiting;
|
|||||||
|
|
||||||
public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private int _page, _location, _level;
|
private int _page, _location;
|
||||||
|
private PartyMatchingRoomLevelType _type;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(L2GameClient client, PacketReader packet)
|
public boolean read(L2GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_page = packet.readD();
|
_page = packet.readD();
|
||||||
_location = packet.readD();
|
_location = packet.readD();
|
||||||
_level = packet.readD();
|
_type = packet.readD() == 0 ? PartyMatchingRoomLevelType.MY_LEVEL_RANGE : PartyMatchingRoomLevelType.ALL;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,8 +72,7 @@ public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
MatchingRoomManager.getInstance().addToWaitingList(activeChar);
|
MatchingRoomManager.getInstance().addToWaitingList(activeChar);
|
||||||
activeChar.sendPacket(new ListPartyWaiting(_level, _location, _page));
|
activeChar.sendPacket(new ListPartyWaiting(_type, _location, _page, activeChar.getLevel()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ public class RequestPartyMatchList implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_roomId <= 0)
|
if ((_roomId <= 0) && (activeChar.getMatchingRoom() == null))
|
||||||
{
|
{
|
||||||
final PartyMatchingRoom room = new PartyMatchingRoom(_roomTitle, _lootType, _minLevel, _maxLevel, _maxMembers, activeChar);
|
final PartyMatchingRoom room = new PartyMatchingRoom(_roomTitle, _lootType, _minLevel, _maxLevel, _maxMembers, activeChar);
|
||||||
activeChar.setMatchingRoom(room);
|
activeChar.setMatchingRoom(room);
|
||||||
|
@ -20,6 +20,7 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketWriter;
|
import com.l2jmobius.commons.network.PacketWriter;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
||||||
@ -35,9 +36,9 @@ public class ListPartyWaiting implements IClientOutgoingPacket
|
|||||||
|
|
||||||
private static final int NUM_PER_PAGE = 64;
|
private static final int NUM_PER_PAGE = 64;
|
||||||
|
|
||||||
public ListPartyWaiting(int level, int location, int page)
|
public ListPartyWaiting(PartyMatchingRoomLevelType type, int location, int page, int requestorLevel)
|
||||||
{
|
{
|
||||||
final List<MatchingRoom> rooms = MatchingRoomManager.getInstance().getPartyMathchingRooms(location, level);
|
final List<MatchingRoom> rooms = MatchingRoomManager.getInstance().getPartyMathchingRooms(location, type, requestorLevel);
|
||||||
|
|
||||||
_size = rooms.size();
|
_size = rooms.size();
|
||||||
final int startIndex = (page - 1) * NUM_PER_PAGE;
|
final int startIndex = (page - 1) * NUM_PER_PAGE;
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the L2J Mobius project.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.l2jmobius.gameserver.enums;
|
||||||
|
|
||||||
|
public enum PartyMatchingRoomLevelType
|
||||||
|
{
|
||||||
|
MY_LEVEL_RANGE,
|
||||||
|
ALL
|
||||||
|
}
|
@ -25,6 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.base.ClassId;
|
import com.l2jmobius.gameserver.model.base.ClassId;
|
||||||
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
||||||
@ -87,12 +88,12 @@ public class MatchingRoomManager
|
|||||||
return _rooms.get(MatchingRoomType.PARTY);
|
return _rooms.get(MatchingRoomType.PARTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MatchingRoom> getPartyMathchingRooms(int location, int level)
|
public List<MatchingRoom> getPartyMathchingRooms(int location, PartyMatchingRoomLevelType type, int requestorLevel)
|
||||||
{
|
{
|
||||||
//@formatter:off
|
//@formatter:off
|
||||||
return _rooms.getOrDefault(MatchingRoomType.PARTY, Collections.emptyMap()).values().stream()
|
return _rooms.getOrDefault(MatchingRoomType.PARTY, Collections.emptyMap()).values().stream()
|
||||||
.filter(r -> (location < 0) || (r.getLocation() == location))
|
.filter(room -> (location < 0) || (room.getLocation() == location))
|
||||||
.filter(r -> (r.getMinLvl() <= level) && (r.getMaxLvl() >= level))
|
.filter(room -> (type == PartyMatchingRoomLevelType.ALL) || ((room.getMinLvl() >= requestorLevel) && (room.getMaxLvl() <= requestorLevel)))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
}
|
}
|
||||||
|
@ -126,6 +126,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
_members.add(leader);
|
_members.add(leader);
|
||||||
_partyLvl = leader.getLevel();
|
_partyLvl = leader.getLevel();
|
||||||
_distributionType = partyDistributionType;
|
_distributionType = partyDistributionType;
|
||||||
|
L2World.getInstance().incrementParty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -393,6 +394,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
}, PARTY_POSITION_BROADCAST_INTERVAL.toMillis() / 2, PARTY_POSITION_BROADCAST_INTERVAL.toMillis());
|
}, PARTY_POSITION_BROADCAST_INTERVAL.toMillis() / 2, PARTY_POSITION_BROADCAST_INTERVAL.toMillis());
|
||||||
}
|
}
|
||||||
applyTacticalSigns(player, false);
|
applyTacticalSigns(player, false);
|
||||||
|
L2World.getInstance().incrementPartyMember();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Integer, L2Character> getTacticalSigns()
|
private Map<Integer, L2Character> getTacticalSigns()
|
||||||
@ -553,6 +555,8 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
broadcastPacket(msg);
|
broadcastPacket(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
L2World.getInstance().decrementPartyMember();
|
||||||
|
|
||||||
// UI update.
|
// UI update.
|
||||||
player.sendPacket(PartySmallWindowDeleteAll.STATIC_PACKET);
|
player.sendPacket(PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||||
player.setParty(null);
|
player.setParty(null);
|
||||||
@ -632,6 +636,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
L2World.getInstance().decrementParty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,6 +21,7 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
@ -94,6 +95,9 @@ public final class L2World
|
|||||||
/** Map with the pets instances and their owner ID. */
|
/** Map with the pets instances and their owner ID. */
|
||||||
private final Map<Integer, L2PetInstance> _petsInstance = new ConcurrentHashMap<>();
|
private final Map<Integer, L2PetInstance> _petsInstance = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
private final AtomicInteger _partyNumber = new AtomicInteger();
|
||||||
|
private final AtomicInteger _memberInPartyNumber = new AtomicInteger();
|
||||||
|
|
||||||
private final L2WorldRegion[][][] _worldRegions = new L2WorldRegion[REGIONS_X + 1][REGIONS_Y + 1][REGIONS_Z + 1];
|
private final L2WorldRegion[][][] _worldRegions = new L2WorldRegion[REGIONS_X + 1][REGIONS_Y + 1][REGIONS_Z + 1];
|
||||||
|
|
||||||
/** Constructor of L2World. */
|
/** Constructor of L2World. */
|
||||||
@ -813,6 +817,36 @@ public final class L2World
|
|||||||
_log.info(getClass().getSimpleName() + ": All visible NPC's deleted.");
|
_log.info(getClass().getSimpleName() + ": All visible NPC's deleted.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void incrementParty()
|
||||||
|
{
|
||||||
|
_partyNumber.incrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decrementParty()
|
||||||
|
{
|
||||||
|
_partyNumber.decrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void incrementPartyMember()
|
||||||
|
{
|
||||||
|
_memberInPartyNumber.incrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decrementPartyMember()
|
||||||
|
{
|
||||||
|
_memberInPartyNumber.decrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPartyCount()
|
||||||
|
{
|
||||||
|
return _partyNumber.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPartyMemberCount()
|
||||||
|
{
|
||||||
|
return _memberInPartyNumber.get();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the current instance of L2World
|
* @return the current instance of L2World
|
||||||
*/
|
*/
|
||||||
|
@ -18,6 +18,7 @@ package com.l2jmobius.gameserver.model.matching;
|
|||||||
|
|
||||||
import com.l2jmobius.gameserver.enums.MatchingMemberType;
|
import com.l2jmobius.gameserver.enums.MatchingMemberType;
|
||||||
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.enums.UserInfoType;
|
import com.l2jmobius.gameserver.enums.UserInfoType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
import com.l2jmobius.gameserver.model.L2Party;
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
@ -43,7 +44,8 @@ public final class PartyMatchingRoom extends MatchingRoom
|
|||||||
protected void onRoomCreation(L2PcInstance player)
|
protected void onRoomCreation(L2PcInstance player)
|
||||||
{
|
{
|
||||||
player.broadcastUserInfo(UserInfoType.CLAN);
|
player.broadcastUserInfo(UserInfoType.CLAN);
|
||||||
player.sendPacket(new ListPartyWaiting(player.getLevel(), -1, 1));
|
player.sendPacket(new ListPartyWaiting(PartyMatchingRoomLevelType.ALL, -1, 1, player.getLevel()));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_HAVE_CREATED_A_PARTY_ROOM);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -33,6 +33,7 @@ public class RequestDismissPartyRoom implements IClientIncomingPacket
|
|||||||
public boolean read(L2GameClient client, PacketReader packet)
|
public boolean read(L2GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_roomid = packet.readD();
|
_roomid = packet.readD();
|
||||||
|
packet.readD();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package com.l2jmobius.gameserver.network.clientpackets;
|
package com.l2jmobius.gameserver.network.clientpackets;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketReader;
|
import com.l2jmobius.commons.network.PacketReader;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
import com.l2jmobius.gameserver.model.L2CommandChannel;
|
import com.l2jmobius.gameserver.model.L2CommandChannel;
|
||||||
import com.l2jmobius.gameserver.model.L2Party;
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
@ -28,14 +29,15 @@ import com.l2jmobius.gameserver.network.serverpackets.ListPartyWaiting;
|
|||||||
|
|
||||||
public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private int _page, _location, _level;
|
private int _page, _location;
|
||||||
|
private PartyMatchingRoomLevelType _type;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(L2GameClient client, PacketReader packet)
|
public boolean read(L2GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_page = packet.readD();
|
_page = packet.readD();
|
||||||
_location = packet.readD();
|
_location = packet.readD();
|
||||||
_level = packet.readD();
|
_type = packet.readD() == 0 ? PartyMatchingRoomLevelType.MY_LEVEL_RANGE : PartyMatchingRoomLevelType.ALL;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,8 +72,7 @@ public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
MatchingRoomManager.getInstance().addToWaitingList(activeChar);
|
MatchingRoomManager.getInstance().addToWaitingList(activeChar);
|
||||||
activeChar.sendPacket(new ListPartyWaiting(_level, _location, _page));
|
activeChar.sendPacket(new ListPartyWaiting(_type, _location, _page, activeChar.getLevel()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ public class RequestPartyMatchList implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_roomId <= 0)
|
if ((_roomId <= 0) && (activeChar.getMatchingRoom() == null))
|
||||||
{
|
{
|
||||||
final PartyMatchingRoom room = new PartyMatchingRoom(_roomTitle, _lootType, _minLevel, _maxLevel, _maxMembers, activeChar);
|
final PartyMatchingRoom room = new PartyMatchingRoom(_roomTitle, _lootType, _minLevel, _maxLevel, _maxMembers, activeChar);
|
||||||
activeChar.setMatchingRoom(room);
|
activeChar.setMatchingRoom(room);
|
||||||
|
@ -20,6 +20,7 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketWriter;
|
import com.l2jmobius.commons.network.PacketWriter;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
||||||
@ -35,9 +36,9 @@ public class ListPartyWaiting implements IClientOutgoingPacket
|
|||||||
|
|
||||||
private static final int NUM_PER_PAGE = 64;
|
private static final int NUM_PER_PAGE = 64;
|
||||||
|
|
||||||
public ListPartyWaiting(int level, int location, int page)
|
public ListPartyWaiting(PartyMatchingRoomLevelType type, int location, int page, int requestorLevel)
|
||||||
{
|
{
|
||||||
final List<MatchingRoom> rooms = MatchingRoomManager.getInstance().getPartyMathchingRooms(location, level);
|
final List<MatchingRoom> rooms = MatchingRoomManager.getInstance().getPartyMathchingRooms(location, type, requestorLevel);
|
||||||
|
|
||||||
_size = rooms.size();
|
_size = rooms.size();
|
||||||
final int startIndex = (page - 1) * NUM_PER_PAGE;
|
final int startIndex = (page - 1) * NUM_PER_PAGE;
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the L2J Mobius project.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.l2jmobius.gameserver.enums;
|
||||||
|
|
||||||
|
public enum PartyMatchingRoomLevelType
|
||||||
|
{
|
||||||
|
MY_LEVEL_RANGE,
|
||||||
|
ALL
|
||||||
|
}
|
@ -25,6 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.base.ClassId;
|
import com.l2jmobius.gameserver.model.base.ClassId;
|
||||||
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
||||||
@ -87,12 +88,12 @@ public class MatchingRoomManager
|
|||||||
return _rooms.get(MatchingRoomType.PARTY);
|
return _rooms.get(MatchingRoomType.PARTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MatchingRoom> getPartyMathchingRooms(int location, int level)
|
public List<MatchingRoom> getPartyMathchingRooms(int location, PartyMatchingRoomLevelType type, int requestorLevel)
|
||||||
{
|
{
|
||||||
//@formatter:off
|
//@formatter:off
|
||||||
return _rooms.getOrDefault(MatchingRoomType.PARTY, Collections.emptyMap()).values().stream()
|
return _rooms.getOrDefault(MatchingRoomType.PARTY, Collections.emptyMap()).values().stream()
|
||||||
.filter(r -> (location < 0) || (r.getLocation() == location))
|
.filter(room -> (location < 0) || (room.getLocation() == location))
|
||||||
.filter(r -> (r.getMinLvl() <= level) && (r.getMaxLvl() >= level))
|
.filter(room -> (type == PartyMatchingRoomLevelType.ALL) || ((room.getMinLvl() >= requestorLevel) && (room.getMaxLvl() <= requestorLevel)))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
}
|
}
|
||||||
|
@ -126,6 +126,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
_members.add(leader);
|
_members.add(leader);
|
||||||
_partyLvl = leader.getLevel();
|
_partyLvl = leader.getLevel();
|
||||||
_distributionType = partyDistributionType;
|
_distributionType = partyDistributionType;
|
||||||
|
L2World.getInstance().incrementParty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -393,6 +394,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
}, PARTY_POSITION_BROADCAST_INTERVAL.toMillis() / 2, PARTY_POSITION_BROADCAST_INTERVAL.toMillis());
|
}, PARTY_POSITION_BROADCAST_INTERVAL.toMillis() / 2, PARTY_POSITION_BROADCAST_INTERVAL.toMillis());
|
||||||
}
|
}
|
||||||
applyTacticalSigns(player, false);
|
applyTacticalSigns(player, false);
|
||||||
|
L2World.getInstance().incrementPartyMember();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Integer, L2Character> getTacticalSigns()
|
private Map<Integer, L2Character> getTacticalSigns()
|
||||||
@ -553,6 +555,8 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
broadcastPacket(msg);
|
broadcastPacket(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
L2World.getInstance().decrementPartyMember();
|
||||||
|
|
||||||
// UI update.
|
// UI update.
|
||||||
player.sendPacket(PartySmallWindowDeleteAll.STATIC_PACKET);
|
player.sendPacket(PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||||
player.setParty(null);
|
player.setParty(null);
|
||||||
@ -632,6 +636,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
L2World.getInstance().decrementParty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,6 +21,7 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
@ -94,6 +95,9 @@ public final class L2World
|
|||||||
/** Map with the pets instances and their owner ID. */
|
/** Map with the pets instances and their owner ID. */
|
||||||
private final Map<Integer, L2PetInstance> _petsInstance = new ConcurrentHashMap<>();
|
private final Map<Integer, L2PetInstance> _petsInstance = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
private final AtomicInteger _partyNumber = new AtomicInteger();
|
||||||
|
private final AtomicInteger _memberInPartyNumber = new AtomicInteger();
|
||||||
|
|
||||||
private final L2WorldRegion[][][] _worldRegions = new L2WorldRegion[REGIONS_X + 1][REGIONS_Y + 1][REGIONS_Z + 1];
|
private final L2WorldRegion[][][] _worldRegions = new L2WorldRegion[REGIONS_X + 1][REGIONS_Y + 1][REGIONS_Z + 1];
|
||||||
|
|
||||||
/** Constructor of L2World. */
|
/** Constructor of L2World. */
|
||||||
@ -813,6 +817,36 @@ public final class L2World
|
|||||||
_log.info(getClass().getSimpleName() + ": All visible NPC's deleted.");
|
_log.info(getClass().getSimpleName() + ": All visible NPC's deleted.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void incrementParty()
|
||||||
|
{
|
||||||
|
_partyNumber.incrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decrementParty()
|
||||||
|
{
|
||||||
|
_partyNumber.decrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void incrementPartyMember()
|
||||||
|
{
|
||||||
|
_memberInPartyNumber.incrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decrementPartyMember()
|
||||||
|
{
|
||||||
|
_memberInPartyNumber.decrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPartyCount()
|
||||||
|
{
|
||||||
|
return _partyNumber.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPartyMemberCount()
|
||||||
|
{
|
||||||
|
return _memberInPartyNumber.get();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the current instance of L2World
|
* @return the current instance of L2World
|
||||||
*/
|
*/
|
||||||
|
@ -18,6 +18,7 @@ package com.l2jmobius.gameserver.model.matching;
|
|||||||
|
|
||||||
import com.l2jmobius.gameserver.enums.MatchingMemberType;
|
import com.l2jmobius.gameserver.enums.MatchingMemberType;
|
||||||
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.enums.UserInfoType;
|
import com.l2jmobius.gameserver.enums.UserInfoType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
import com.l2jmobius.gameserver.model.L2Party;
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
@ -43,7 +44,8 @@ public final class PartyMatchingRoom extends MatchingRoom
|
|||||||
protected void onRoomCreation(L2PcInstance player)
|
protected void onRoomCreation(L2PcInstance player)
|
||||||
{
|
{
|
||||||
player.broadcastUserInfo(UserInfoType.CLAN);
|
player.broadcastUserInfo(UserInfoType.CLAN);
|
||||||
player.sendPacket(new ListPartyWaiting(player.getLevel(), -1, 1));
|
player.sendPacket(new ListPartyWaiting(PartyMatchingRoomLevelType.ALL, -1, 1, player.getLevel()));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_HAVE_CREATED_A_PARTY_ROOM);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -33,6 +33,7 @@ public class RequestDismissPartyRoom implements IClientIncomingPacket
|
|||||||
public boolean read(L2GameClient client, PacketReader packet)
|
public boolean read(L2GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_roomid = packet.readD();
|
_roomid = packet.readD();
|
||||||
|
packet.readD();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package com.l2jmobius.gameserver.network.clientpackets;
|
package com.l2jmobius.gameserver.network.clientpackets;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketReader;
|
import com.l2jmobius.commons.network.PacketReader;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
import com.l2jmobius.gameserver.model.L2CommandChannel;
|
import com.l2jmobius.gameserver.model.L2CommandChannel;
|
||||||
import com.l2jmobius.gameserver.model.L2Party;
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
@ -28,14 +29,15 @@ import com.l2jmobius.gameserver.network.serverpackets.ListPartyWaiting;
|
|||||||
|
|
||||||
public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private int _page, _location, _level;
|
private int _page, _location;
|
||||||
|
private PartyMatchingRoomLevelType _type;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(L2GameClient client, PacketReader packet)
|
public boolean read(L2GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_page = packet.readD();
|
_page = packet.readD();
|
||||||
_location = packet.readD();
|
_location = packet.readD();
|
||||||
_level = packet.readD();
|
_type = packet.readD() == 0 ? PartyMatchingRoomLevelType.MY_LEVEL_RANGE : PartyMatchingRoomLevelType.ALL;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,8 +72,7 @@ public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
MatchingRoomManager.getInstance().addToWaitingList(activeChar);
|
MatchingRoomManager.getInstance().addToWaitingList(activeChar);
|
||||||
activeChar.sendPacket(new ListPartyWaiting(_level, _location, _page));
|
activeChar.sendPacket(new ListPartyWaiting(_type, _location, _page, activeChar.getLevel()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ public class RequestPartyMatchList implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_roomId <= 0)
|
if ((_roomId <= 0) && (activeChar.getMatchingRoom() == null))
|
||||||
{
|
{
|
||||||
final PartyMatchingRoom room = new PartyMatchingRoom(_roomTitle, _lootType, _minLevel, _maxLevel, _maxMembers, activeChar);
|
final PartyMatchingRoom room = new PartyMatchingRoom(_roomTitle, _lootType, _minLevel, _maxLevel, _maxMembers, activeChar);
|
||||||
activeChar.setMatchingRoom(room);
|
activeChar.setMatchingRoom(room);
|
||||||
|
@ -20,7 +20,9 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketWriter;
|
import com.l2jmobius.commons.network.PacketWriter;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
|
import com.l2jmobius.gameserver.model.L2World;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
||||||
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
@ -35,9 +37,9 @@ public class ListPartyWaiting implements IClientOutgoingPacket
|
|||||||
|
|
||||||
private static final int NUM_PER_PAGE = 64;
|
private static final int NUM_PER_PAGE = 64;
|
||||||
|
|
||||||
public ListPartyWaiting(int level, int location, int page)
|
public ListPartyWaiting(PartyMatchingRoomLevelType type, int location, int page, int requestorLevel)
|
||||||
{
|
{
|
||||||
final List<MatchingRoom> rooms = MatchingRoomManager.getInstance().getPartyMathchingRooms(location, level);
|
final List<MatchingRoom> rooms = MatchingRoomManager.getInstance().getPartyMathchingRooms(location, type, requestorLevel);
|
||||||
|
|
||||||
_size = rooms.size();
|
_size = rooms.size();
|
||||||
final int startIndex = (page - 1) * NUM_PER_PAGE;
|
final int startIndex = (page - 1) * NUM_PER_PAGE;
|
||||||
@ -75,8 +77,8 @@ public class ListPartyWaiting implements IClientOutgoingPacket
|
|||||||
packet.writeS(member.getName());
|
packet.writeS(member.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
packet.writeD(0);
|
packet.writeD(L2World.getInstance().getPartyCount()); // Helios
|
||||||
packet.writeD(0);
|
packet.writeD(L2World.getInstance().getPartyMemberCount()); // Helios
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the L2J Mobius project.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.l2jmobius.gameserver.enums;
|
||||||
|
|
||||||
|
public enum PartyMatchingRoomLevelType
|
||||||
|
{
|
||||||
|
MY_LEVEL_RANGE,
|
||||||
|
ALL
|
||||||
|
}
|
@ -25,6 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.base.ClassId;
|
import com.l2jmobius.gameserver.model.base.ClassId;
|
||||||
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
||||||
@ -87,12 +88,12 @@ public class MatchingRoomManager
|
|||||||
return _rooms.get(MatchingRoomType.PARTY);
|
return _rooms.get(MatchingRoomType.PARTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MatchingRoom> getPartyMathchingRooms(int location, int level)
|
public List<MatchingRoom> getPartyMathchingRooms(int location, PartyMatchingRoomLevelType type, int requestorLevel)
|
||||||
{
|
{
|
||||||
//@formatter:off
|
//@formatter:off
|
||||||
return _rooms.getOrDefault(MatchingRoomType.PARTY, Collections.emptyMap()).values().stream()
|
return _rooms.getOrDefault(MatchingRoomType.PARTY, Collections.emptyMap()).values().stream()
|
||||||
.filter(r -> (location < 0) || (r.getLocation() == location))
|
.filter(room -> (location < 0) || (room.getLocation() == location))
|
||||||
.filter(r -> (r.getMinLvl() <= level) && (r.getMaxLvl() >= level))
|
.filter(room -> (type == PartyMatchingRoomLevelType.ALL) || ((room.getMinLvl() >= requestorLevel) && (room.getMaxLvl() <= requestorLevel)))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
}
|
}
|
||||||
|
@ -126,6 +126,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
_members.add(leader);
|
_members.add(leader);
|
||||||
_partyLvl = leader.getLevel();
|
_partyLvl = leader.getLevel();
|
||||||
_distributionType = partyDistributionType;
|
_distributionType = partyDistributionType;
|
||||||
|
L2World.getInstance().incrementParty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -393,6 +394,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
}, PARTY_POSITION_BROADCAST_INTERVAL.toMillis() / 2, PARTY_POSITION_BROADCAST_INTERVAL.toMillis());
|
}, PARTY_POSITION_BROADCAST_INTERVAL.toMillis() / 2, PARTY_POSITION_BROADCAST_INTERVAL.toMillis());
|
||||||
}
|
}
|
||||||
applyTacticalSigns(player, false);
|
applyTacticalSigns(player, false);
|
||||||
|
L2World.getInstance().incrementPartyMember();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Integer, L2Character> getTacticalSigns()
|
private Map<Integer, L2Character> getTacticalSigns()
|
||||||
@ -553,6 +555,8 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
broadcastPacket(msg);
|
broadcastPacket(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
L2World.getInstance().decrementPartyMember();
|
||||||
|
|
||||||
// UI update.
|
// UI update.
|
||||||
player.sendPacket(PartySmallWindowDeleteAll.STATIC_PACKET);
|
player.sendPacket(PartySmallWindowDeleteAll.STATIC_PACKET);
|
||||||
player.setParty(null);
|
player.setParty(null);
|
||||||
@ -632,6 +636,7 @@ public class L2Party extends AbstractPlayerGroup
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
L2World.getInstance().decrementParty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,6 +21,7 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
@ -94,6 +95,9 @@ public final class L2World
|
|||||||
/** Map with the pets instances and their owner ID. */
|
/** Map with the pets instances and their owner ID. */
|
||||||
private final Map<Integer, L2PetInstance> _petsInstance = new ConcurrentHashMap<>();
|
private final Map<Integer, L2PetInstance> _petsInstance = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
private final AtomicInteger _partyNumber = new AtomicInteger();
|
||||||
|
private final AtomicInteger _memberInPartyNumber = new AtomicInteger();
|
||||||
|
|
||||||
private final L2WorldRegion[][][] _worldRegions = new L2WorldRegion[REGIONS_X + 1][REGIONS_Y + 1][REGIONS_Z + 1];
|
private final L2WorldRegion[][][] _worldRegions = new L2WorldRegion[REGIONS_X + 1][REGIONS_Y + 1][REGIONS_Z + 1];
|
||||||
|
|
||||||
/** Constructor of L2World. */
|
/** Constructor of L2World. */
|
||||||
@ -813,6 +817,36 @@ public final class L2World
|
|||||||
_log.info(getClass().getSimpleName() + ": All visible NPC's deleted.");
|
_log.info(getClass().getSimpleName() + ": All visible NPC's deleted.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void incrementParty()
|
||||||
|
{
|
||||||
|
_partyNumber.incrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decrementParty()
|
||||||
|
{
|
||||||
|
_partyNumber.decrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void incrementPartyMember()
|
||||||
|
{
|
||||||
|
_memberInPartyNumber.incrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decrementPartyMember()
|
||||||
|
{
|
||||||
|
_memberInPartyNumber.decrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPartyCount()
|
||||||
|
{
|
||||||
|
return _partyNumber.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPartyMemberCount()
|
||||||
|
{
|
||||||
|
return _memberInPartyNumber.get();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the current instance of L2World
|
* @return the current instance of L2World
|
||||||
*/
|
*/
|
||||||
|
@ -18,6 +18,7 @@ package com.l2jmobius.gameserver.model.matching;
|
|||||||
|
|
||||||
import com.l2jmobius.gameserver.enums.MatchingMemberType;
|
import com.l2jmobius.gameserver.enums.MatchingMemberType;
|
||||||
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
import com.l2jmobius.gameserver.enums.MatchingRoomType;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.enums.UserInfoType;
|
import com.l2jmobius.gameserver.enums.UserInfoType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
import com.l2jmobius.gameserver.model.L2Party;
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
@ -43,7 +44,8 @@ public final class PartyMatchingRoom extends MatchingRoom
|
|||||||
protected void onRoomCreation(L2PcInstance player)
|
protected void onRoomCreation(L2PcInstance player)
|
||||||
{
|
{
|
||||||
player.broadcastUserInfo(UserInfoType.CLAN);
|
player.broadcastUserInfo(UserInfoType.CLAN);
|
||||||
player.sendPacket(new ListPartyWaiting(player.getLevel(), -1, 1));
|
player.sendPacket(new ListPartyWaiting(PartyMatchingRoomLevelType.ALL, -1, 1, player.getLevel()));
|
||||||
|
player.sendPacket(SystemMessageId.YOU_HAVE_CREATED_A_PARTY_ROOM);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -33,6 +33,7 @@ public class RequestDismissPartyRoom implements IClientIncomingPacket
|
|||||||
public boolean read(L2GameClient client, PacketReader packet)
|
public boolean read(L2GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_roomid = packet.readD();
|
_roomid = packet.readD();
|
||||||
|
packet.readD();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package com.l2jmobius.gameserver.network.clientpackets;
|
package com.l2jmobius.gameserver.network.clientpackets;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketReader;
|
import com.l2jmobius.commons.network.PacketReader;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
import com.l2jmobius.gameserver.model.L2CommandChannel;
|
import com.l2jmobius.gameserver.model.L2CommandChannel;
|
||||||
import com.l2jmobius.gameserver.model.L2Party;
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
@ -28,14 +29,15 @@ import com.l2jmobius.gameserver.network.serverpackets.ListPartyWaiting;
|
|||||||
|
|
||||||
public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private int _page, _location, _level;
|
private int _page, _location;
|
||||||
|
private PartyMatchingRoomLevelType _type;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(L2GameClient client, PacketReader packet)
|
public boolean read(L2GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_page = packet.readD();
|
_page = packet.readD();
|
||||||
_location = packet.readD();
|
_location = packet.readD();
|
||||||
_level = packet.readD();
|
_type = packet.readD() == 0 ? PartyMatchingRoomLevelType.MY_LEVEL_RANGE : PartyMatchingRoomLevelType.ALL;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,8 +72,7 @@ public final class RequestPartyMatchConfig implements IClientIncomingPacket
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
MatchingRoomManager.getInstance().addToWaitingList(activeChar);
|
MatchingRoomManager.getInstance().addToWaitingList(activeChar);
|
||||||
activeChar.sendPacket(new ListPartyWaiting(_level, _location, _page));
|
activeChar.sendPacket(new ListPartyWaiting(_type, _location, _page, activeChar.getLevel()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ public class RequestPartyMatchList implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_roomId <= 0)
|
if ((_roomId <= 0) && (activeChar.getMatchingRoom() == null))
|
||||||
{
|
{
|
||||||
final PartyMatchingRoom room = new PartyMatchingRoom(_roomTitle, _lootType, _minLevel, _maxLevel, _maxMembers, activeChar);
|
final PartyMatchingRoom room = new PartyMatchingRoom(_roomTitle, _lootType, _minLevel, _maxLevel, _maxMembers, activeChar);
|
||||||
activeChar.setMatchingRoom(room);
|
activeChar.setMatchingRoom(room);
|
||||||
|
@ -20,7 +20,9 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketWriter;
|
import com.l2jmobius.commons.network.PacketWriter;
|
||||||
|
import com.l2jmobius.gameserver.enums.PartyMatchingRoomLevelType;
|
||||||
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
import com.l2jmobius.gameserver.instancemanager.MatchingRoomManager;
|
||||||
|
import com.l2jmobius.gameserver.model.L2World;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
import com.l2jmobius.gameserver.model.matching.MatchingRoom;
|
||||||
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
@ -35,9 +37,9 @@ public class ListPartyWaiting implements IClientOutgoingPacket
|
|||||||
|
|
||||||
private static final int NUM_PER_PAGE = 64;
|
private static final int NUM_PER_PAGE = 64;
|
||||||
|
|
||||||
public ListPartyWaiting(int level, int location, int page)
|
public ListPartyWaiting(PartyMatchingRoomLevelType type, int location, int page, int requestorLevel)
|
||||||
{
|
{
|
||||||
final List<MatchingRoom> rooms = MatchingRoomManager.getInstance().getPartyMathchingRooms(location, level);
|
final List<MatchingRoom> rooms = MatchingRoomManager.getInstance().getPartyMathchingRooms(location, type, requestorLevel);
|
||||||
|
|
||||||
_size = rooms.size();
|
_size = rooms.size();
|
||||||
final int startIndex = (page - 1) * NUM_PER_PAGE;
|
final int startIndex = (page - 1) * NUM_PER_PAGE;
|
||||||
@ -75,8 +77,8 @@ public class ListPartyWaiting implements IClientOutgoingPacket
|
|||||||
packet.writeS(member.getName());
|
packet.writeS(member.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
packet.writeD(0);
|
packet.writeD(L2World.getInstance().getPartyCount()); // Helios
|
||||||
packet.writeD(0);
|
packet.writeD(L2World.getInstance().getPartyMemberCount()); // Helios
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user