Проверка на расу

Die

Прославленный
Местный
Старожил I степени
Сообщения
426
Розыгрыши
0
Решения
1
Репутация
578
Реакции
131
Баллы
1 438
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
jts
Пока изучаю jts далее, появился вопрос... Т.к jts используют pts (загрузку), многие моменты изменились... Сейчас хочу сделать проверку в поиске группы(MatchingRooms), сделал проверку вот тут:
player.getPlayerTemplateComponent().getPlayerRace() == channel.getGroupLeader().getPlayerTemplateComponent().getPlayerRace()

Код:
package org.mmocore.gameserver.network.lineage.clientpackets;

import org.mmocore.gameserver.manager.MatchingRoomManager;
import org.mmocore.gameserver.model.team.CommandChannel;
import org.mmocore.gameserver.model.team.Party;
import org.mmocore.gameserver.model.team.matching.CCMatchingRoom;
import org.mmocore.gameserver.model.team.matching.MatchingRoom;
import org.mmocore.gameserver.network.lineage.components.SystemMsg;
import org.mmocore.gameserver.network.lineage.serverpackets.ListPartyWaiting;
import org.mmocore.gameserver.object.Player;

public class RequestPartyMatchConfig extends L2GameClientPacket
{
    private int _page;
    private int _region;
    private int _allLevels;
 
    /**
     * Format: ddd
     */
    @Override
    protected void readImpl()
    {
        _page = readD();
        _region = readD(); // 0 to 15, or -1
        _allLevels = readD(); // 1 -> all levels, 0 -> only levels matching my level
    }
 
    @Override
    protected void runImpl()
    {
        final Player player = getClient().getActiveChar();
        if (player == null)
        {
            return;
        }
     
        final Party party = player.getParty();
        final CommandChannel channel = party != null ? party.getCommandChannel() : null;
     
        if (channel != null && channel.getGroupLeader() == player)
        {
            if (channel.getMatchingRoom() == null)
            {
                final CCMatchingRoom room = new CCMatchingRoom(player, 1, player.getLevel(), 50, party.getLootDistribution(), player.getName());
                channel.setMatchingRoom(room);
            }
        }
        else if (channel != null && !channel.getParties().contains(party))
        {
            player.sendPacket(SystemMsg.THE_COMMAND_CHANNEL_AFFILIATED_PARTYS_PARTY_MEMBER_CANNOT_USE_THE_MATCHING_SCREEN);
        }
        else if (party != null && !party.isLeader(player))
        {
            final MatchingRoom room = player.getMatchingRoom();
            if (room != null && room.getType() == MatchingRoom.PARTY_MATCHING)
            {
                player.setMatchingRoomWindowOpened(true);
                player.sendPacket(room.infoRoomPacket(), room.membersPacket(player));
            }
            else
            {
                player.sendPacket(SystemMsg.THE_LIST_OF_PARTY_ROOMS_CAN_ONLY_BE_VIEWED_BY_A_PERSON_WHO_IS_NOT_PART_OF_A_PARTY);
            }
         
        }
        else
        {
            if (party == null && player.getPlayerTemplateComponent().getPlayerRace() == channel.getGroupLeader().getPlayerTemplateComponent().getPlayerRace())
            {
                MatchingRoomManager.getInstance().addToWaitingList(player);
            }
         
            player.sendPacket(new ListPartyWaiting(_region, _allLevels == 1, _page, player));
        }
    }
}
1573381265472-png.28040

Требуется убрать из списка - отсюда. Возможно кто-то подскажет куда писать? или возможно я что-то не так прописал в проверке?
 
Сдается нужно править сервер пакет "ListPartyWating"
 
Сдается нужно править сервер пакет "ListPartyWating"
Код:
package org.mmocore.gameserver.network.lineage.serverpackets;

import org.mmocore.gameserver.manager.MatchingRoomManager;
import org.mmocore.gameserver.model.team.matching.MatchingRoom;
import org.mmocore.gameserver.network.lineage.components.GameServerPacket;
import org.mmocore.gameserver.object.Player;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * Format:(c) dddddds
 */
public class ListPartyWaiting extends GameServerPacket
{
    private final Collection<MatchingRoom> rooms;
    private final int fullSize;
    
    public ListPartyWaiting(final int region, final boolean allLevels, final int page, final Player activeChar)
    {
        final int first = (page - 1) * 64;
        final int firstNot = page * 64;
        rooms = new ArrayList<>();
        
        int i = 0;
        final List<MatchingRoom> temp = MatchingRoomManager.getInstance().getMatchingRooms(MatchingRoom.PARTY_MATCHING, region, allLevels, activeChar);
        fullSize = temp.size();
        for (final MatchingRoom room : temp)
        {
            if (i < first || i >= firstNot)
            {
                continue;
            }
            rooms.add(room);
            i++;
        }
    }
    
    @Override
    protected final void writeData()
    {
        writeD(fullSize);
        writeD(rooms.size());
        
        for (final MatchingRoom room : rooms)
        {
            writeD(room.getId()); // room id
            writeS(room.getTopic()); // room name
            writeD(room.getLocationId());
            writeD(room.getMinLevel()); // min level
            writeD(room.getMaxLevel()); // max level
            writeD(room.getMaxMembersSize()); // max members coun
            writeS(room.getGroupLeader() == null ? "None" : room.getGroupLeader().getName());
            
            final Collection<Player> players = room.getPlayers();
            writeD(players.size()); // members count
            for (final Player player : players)
            {
                writeD(player.getPlayerClassComponent().getClassId().getId());
                writeS(player.getName());
            }
        }
    }
}
Я пробовал тут править, но как тут прописать проверку - ума не приложу...
 
в вашем случае MatchingRoomManager.getInstance().getMatchingRooms(MatchingRoom.PARTY_MATCHING, region, allLevels, activeChar)
и там смотреть. как для activeChar создается список
 
  • Мне нравится
Реакции: Die
в вашем случае MatchingRoomManager.getInstance().getMatchingRooms(MatchingRoom.PARTY_MATCHING, region, allLevels, activeChar)
и там смотреть. как для activeChar создается список
Не проверял) но исправил в ListPartyWating, пришлось пошаманить с проверкой на расу, просто ставил до этого не в то место) спасибо за помощь! тему клоуз
 
Назад
Сверху Снизу