One more clan issue fixed.

Contributed by rocknowx.
This commit is contained in:
MobiusDev 2015-11-26 20:27:01 +00:00
parent 20e11faffc
commit faf7e56f47
4 changed files with 32 additions and 24 deletions

View File

@ -544,6 +544,19 @@ public class L2Clan implements IIdentifiable, INamable
return result;
}
public int getPowerGradeParty(int grade)
{
int result = 0;
for (L2ClanMember temp : _members.values())
{
if (temp.getPowerGrade() == grade)
{
result++;
}
}
return result;
}
/**
* @param pledgeType the Id of the pledge type.
* @return the maximum number of members allowed for a given {@code pledgeType}.
@ -1736,20 +1749,17 @@ public class L2Clan implements IIdentifiable, INamable
public static class RankPrivs
{
private final int _rankId;
private final int _party;// TODO find out what this stuff means and implement it
private final EnumIntBitmask<ClanPrivilege> _rankPrivs;
public RankPrivs(int rank, int party, int privs)
public RankPrivs(int rank, int privs)
{
_rankId = rank;
_party = party;
_rankPrivs = new EnumIntBitmask<>(ClanPrivilege.class, privs);
}
public RankPrivs(int rank, int party, EnumIntBitmask<ClanPrivilege> rankPrivs)
public RankPrivs(int rank, EnumIntBitmask<ClanPrivilege> rankPrivs)
{
_rankId = rank;
_party = party;
_rankPrivs = rankPrivs;
}
@ -1758,11 +1768,6 @@ public class L2Clan implements IIdentifiable, INamable
return _rankId;
}
public int getParty()
{
return _party;
}
public EnumIntBitmask<ClanPrivilege> getPrivs()
{
return _rankPrivs;
@ -2005,7 +2010,7 @@ public class L2Clan implements IIdentifiable, INamable
{
for (int i = 1; i < 10; i++)
{
_privs.put(i, new RankPrivs(i, 0, new EnumIntBitmask<>(ClanPrivilege.class, false)));
_privs.put(i, new RankPrivs(i, new EnumIntBitmask<>(ClanPrivilege.class, false)));
}
}
@ -2058,7 +2063,7 @@ public class L2Clan implements IIdentifiable, INamable
}
else
{
_privs.put(rank, new RankPrivs(rank, 0, privs));
_privs.put(rank, new RankPrivs(rank, privs));
try (Connection con = ConnectionFactory.getInstance().getConnection();
PreparedStatement ps = con.prepareStatement("INSERT INTO clan_privs (clan_id,rank,party,privs) VALUES (?,?,?,?)"))

View File

@ -19,7 +19,6 @@
package com.l2jserver.gameserver.network.clientpackets;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.L2Clan.RankPrivs;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.serverpackets.PledgePowerGradeList;
@ -40,12 +39,11 @@ public final class RequestPledgePowerGradeList extends L2GameClientPacket
@Override
protected void runImpl()
{
L2PcInstance player = getClient().getActiveChar();
L2Clan clan = player.getClan();
final L2PcInstance player = getClient().getActiveChar();
final L2Clan clan = player.getClan();
if (clan != null)
{
RankPrivs[] privs = clan.getAllRankPrivs();
player.sendPacket(new PledgePowerGradeList(privs));
player.sendPacket(new PledgePowerGradeList(clan));
}
}

View File

@ -81,7 +81,11 @@ public final class RequestPledgeSetMemberPowerGrade extends L2GameClientPacket
}
member.setPowerGrade(_powerGrade);
member.getPlayerInstance().sendPacket(new PledgeReceiveUpdatePower(member.getClan().getRankPrivs(_powerGrade).getBitmask()));
L2PcInstance player = member.getPlayerInstance();
if (player != null)
{
player.sendPacket(new PledgeReceiveUpdatePower(member.getClan().getRankPrivs(_powerGrade).getBitmask()));
}
clan.broadcastToOnlineMembers(new PledgeReceiveMemberInfo(member));
}

View File

@ -18,15 +18,16 @@
*/
package com.l2jserver.gameserver.network.serverpackets;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.L2Clan.RankPrivs;
public class PledgePowerGradeList extends L2GameServerPacket
{
private final RankPrivs[] _privs;
private final L2Clan _clan;
public PledgePowerGradeList(RankPrivs[] privs)
public PledgePowerGradeList(L2Clan clan)
{
_privs = privs;
_clan = clan;
}
@Override
@ -34,11 +35,11 @@ public class PledgePowerGradeList extends L2GameServerPacket
{
writeC(0xFE);
writeH(0x3D);
writeD(_privs.length);
for (RankPrivs temp : _privs)
writeD(_clan.getAllRankPrivs().length);
for (RankPrivs temp : _clan.getAllRankPrivs())
{
writeD(temp.getRank());
writeD(temp.getParty());
writeD(_clan.getPowerGradeParty(temp.getRank()));
}
}
}