Clan packet rework.
Contributed by rocknowx.
This commit is contained in:
@@ -65,6 +65,7 @@ import com.l2jserver.gameserver.network.serverpackets.ExSubPledgeSkillAdd;
|
|||||||
import com.l2jserver.gameserver.network.serverpackets.ItemList;
|
import com.l2jserver.gameserver.network.serverpackets.ItemList;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PledgeReceiveSubPledgeCreated;
|
import com.l2jserver.gameserver.network.serverpackets.PledgeReceiveSubPledgeCreated;
|
||||||
|
import com.l2jserver.gameserver.network.serverpackets.PledgeReceiveUpdatePower;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PledgeShowInfoUpdate;
|
import com.l2jserver.gameserver.network.serverpackets.PledgeShowInfoUpdate;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListAll;
|
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListAll;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListDeleteAll;
|
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListDeleteAll;
|
||||||
@@ -1863,7 +1864,7 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
}
|
}
|
||||||
if (_leader.getObjectId() == leaderId)
|
if (_leader.getObjectId() == leaderId)
|
||||||
{
|
{
|
||||||
player.sendMessage("Leader is not correct");
|
player.sendPacket(SystemMessageId.ONLY_THE_CLAN_LEADER_CAN_CREATE_A_CLAN_ACADEMY);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2048,12 +2049,12 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
if (cm.getPlayerInstance() != null)
|
if (cm.getPlayerInstance() != null)
|
||||||
{
|
{
|
||||||
cm.getPlayerInstance().getClanPrivileges().setBitmask(privs);
|
cm.getPlayerInstance().getClanPrivileges().setBitmask(privs);
|
||||||
|
cm.getPlayerInstance().sendPacket(new PledgeReceiveUpdatePower(privs));
|
||||||
cm.getPlayerInstance().sendPacket(new UserInfo(cm.getPlayerInstance()));
|
cm.getPlayerInstance().sendPacket(new UserInfo(cm.getPlayerInstance()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
broadcastClanStatus();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2076,6 +2077,20 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateRankPrivs(int rank, int privs)
|
||||||
|
{
|
||||||
|
if (_privs.get(rank) != null)
|
||||||
|
{
|
||||||
|
for (L2ClanMember cm : getMembers())
|
||||||
|
{
|
||||||
|
if (cm.isOnline() && (cm.getPowerGrade() == rank) && (cm.getPlayerInstance() != null))
|
||||||
|
{
|
||||||
|
cm.getPlayerInstance().sendPacket(new PledgeReceiveUpdatePower(privs));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return all RankPrivs.
|
* @return all RankPrivs.
|
||||||
*/
|
*/
|
||||||
|
@@ -163,7 +163,7 @@ public class EnterWorld extends L2GameClientPacket
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int instanceId = InstanceManager.getInstance().getPlayerInstance(activeChar.getObjectId());
|
final int instanceId = InstanceManager.getInstance().getPlayerInstance(activeChar.getObjectId());
|
||||||
if (instanceId > 0)
|
if (instanceId > 0)
|
||||||
{
|
{
|
||||||
InstanceManager.getInstance().getInstance(instanceId).removePlayer(activeChar.getObjectId());
|
InstanceManager.getInstance().getInstance(instanceId).removePlayer(activeChar.getObjectId());
|
||||||
@@ -277,9 +277,8 @@ public class EnterWorld extends L2GameClientPacket
|
|||||||
if (activeChar.getClan() != null)
|
if (activeChar.getClan() != null)
|
||||||
{
|
{
|
||||||
final L2Clan clan = activeChar.getClan();
|
final L2Clan clan = activeChar.getClan();
|
||||||
clan.broadcastToOnlineMembers(new PledgeShowMemberListUpdate(activeChar));
|
activeChar.sendPacket(new PledgeShowMemberListUpdate(activeChar));
|
||||||
sendPacket(new PledgeShowMemberListAll(clan));
|
sendPacket(new PledgeShowMemberListAll(clan));
|
||||||
clan.broadcastToOnlineMembers(new ExPledgeCount(clan));
|
|
||||||
activeChar.sendPacket(new PledgeSkillList(clan));
|
activeChar.sendPacket(new PledgeSkillList(clan));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -727,6 +726,7 @@ public class EnterWorld extends L2GameClientPacket
|
|||||||
msg.addString(activeChar.getName());
|
msg.addString(activeChar.getName());
|
||||||
clan.broadcastToOtherOnlineMembers(msg, activeChar);
|
clan.broadcastToOtherOnlineMembers(msg, activeChar);
|
||||||
clan.broadcastToOtherOnlineMembers(new PledgeShowMemberListUpdate(activeChar), activeChar);
|
clan.broadcastToOtherOnlineMembers(new PledgeShowMemberListUpdate(activeChar), activeChar);
|
||||||
|
clan.broadcastToOnlineMembers(new ExPledgeCount(clan));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -22,7 +22,6 @@ import com.l2jserver.gameserver.model.L2Clan;
|
|||||||
import com.l2jserver.gameserver.model.L2ClanMember;
|
import com.l2jserver.gameserver.model.L2ClanMember;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PledgeReceiveMemberInfo;
|
import com.l2jserver.gameserver.network.serverpackets.PledgeReceiveMemberInfo;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PledgeSkillList;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format: (ch) dS
|
* Format: (ch) dS
|
||||||
@@ -64,8 +63,6 @@ public final class RequestPledgeMemberInfo extends L2GameClientPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
activeChar.sendPacket(new PledgeReceiveMemberInfo(member));
|
activeChar.sendPacket(new PledgeReceiveMemberInfo(member));
|
||||||
activeChar.sendPacket(new PledgeSkillList(clan));
|
|
||||||
activeChar.broadcastUserInfo();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -18,7 +18,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.gameserver.network.clientpackets;
|
package com.l2jserver.gameserver.network.clientpackets;
|
||||||
|
|
||||||
import com.l2jserver.gameserver.model.ClanPrivilege;
|
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.ManagePledgePower;
|
import com.l2jserver.gameserver.network.serverpackets.ManagePledgePower;
|
||||||
|
|
||||||
@@ -49,33 +48,20 @@ public final class RequestPledgePower extends L2GameClientPacket
|
|||||||
protected void runImpl()
|
protected void runImpl()
|
||||||
{
|
{
|
||||||
final L2PcInstance player = getClient().getActiveChar();
|
final L2PcInstance player = getClient().getActiveChar();
|
||||||
if (player == null)
|
if ((player == null) || !player.isClanLeader())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_action == 2)
|
if (_action == 2)
|
||||||
{
|
{
|
||||||
if (player.isClanLeader())
|
|
||||||
{
|
|
||||||
if (_rank == 9)
|
|
||||||
{
|
|
||||||
// The rights below cannot be bestowed upon Academy members:
|
|
||||||
// Join a clan or be dismissed
|
|
||||||
// Title management, crest management, master management, level management,
|
|
||||||
// bulletin board administration
|
|
||||||
// Clan war, right to dismiss, set functions
|
|
||||||
// Auction, manage taxes, attack/defend registration, mercenary management
|
|
||||||
// => Leaves only CP_CL_VIEW_WAREHOUSE, CP_CH_OPEN_DOOR, CP_CS_OPEN_DOOR?
|
|
||||||
_privs &= ClanPrivilege.CL_VIEW_WAREHOUSE.getBitmask() | ClanPrivilege.CH_OPEN_DOOR.getBitmask() | ClanPrivilege.CS_OPEN_DOOR.getBitmask();
|
|
||||||
}
|
|
||||||
player.getClan().setRankPrivs(_rank, _privs);
|
player.getClan().setRankPrivs(_rank, _privs);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.sendPacket(new ManagePledgePower(getClient().getActiveChar().getClan(), _action, _rank));
|
player.getClan().updateRankPrivs(_rank, player.getClan().getRankPrivs(_rank).getBitmask());
|
||||||
}
|
}
|
||||||
|
player.sendPacket(new ManagePledgePower(player.getClan(), _action, _rank));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -22,6 +22,8 @@ import com.l2jserver.gameserver.model.ClanPrivilege;
|
|||||||
import com.l2jserver.gameserver.model.L2Clan;
|
import com.l2jserver.gameserver.model.L2Clan;
|
||||||
import com.l2jserver.gameserver.model.L2ClanMember;
|
import com.l2jserver.gameserver.model.L2ClanMember;
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jserver.gameserver.network.serverpackets.PledgeReceiveMemberInfo;
|
||||||
|
import com.l2jserver.gameserver.network.serverpackets.PledgeReceiveUpdatePower;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format: (ch) Sd
|
* Format: (ch) Sd
|
||||||
@@ -79,7 +81,8 @@ public final class RequestPledgeSetMemberPowerGrade extends L2GameClientPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
member.setPowerGrade(_powerGrade);
|
member.setPowerGrade(_powerGrade);
|
||||||
clan.broadcastClanStatus();
|
member.getPlayerInstance().sendPacket(new PledgeReceiveUpdatePower(member.getClan().getRankPrivs(_powerGrade).getBitmask()));
|
||||||
|
clan.broadcastToOnlineMembers(new PledgeReceiveMemberInfo(member));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -22,7 +22,6 @@ import com.l2jserver.gameserver.model.L2Clan;
|
|||||||
|
|
||||||
public class ManagePledgePower extends L2GameServerPacket
|
public class ManagePledgePower extends L2GameServerPacket
|
||||||
{
|
{
|
||||||
|
|
||||||
private final int _action;
|
private final int _action;
|
||||||
private final L2Clan _clan;
|
private final L2Clan _clan;
|
||||||
private final int _rank;
|
private final int _rank;
|
||||||
@@ -36,13 +35,10 @@ public class ManagePledgePower extends L2GameServerPacket
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final void writeImpl()
|
protected final void writeImpl()
|
||||||
{
|
|
||||||
if (_action == 1)
|
|
||||||
{
|
{
|
||||||
writeC(0x2A);
|
writeC(0x2A);
|
||||||
writeD(_rank);
|
writeD(_rank);
|
||||||
writeD(_action);
|
writeD(_action);
|
||||||
writeD(_clan.getRankPrivs(_rank).getBitmask());
|
writeD(_clan.getRankPrivs(_rank).getBitmask());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2004-2015 L2J Server
|
||||||
|
*
|
||||||
|
* This file is part of L2J Server.
|
||||||
|
*
|
||||||
|
* L2J Server 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.
|
||||||
|
*
|
||||||
|
* L2J Server 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.l2jserver.gameserver.network.serverpackets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public class PledgeReceiveUpdatePower extends L2GameServerPacket
|
||||||
|
{
|
||||||
|
private final int _level;
|
||||||
|
|
||||||
|
public PledgeReceiveUpdatePower(int level)
|
||||||
|
{
|
||||||
|
_level = level;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected final void writeImpl()
|
||||||
|
{
|
||||||
|
writeC(0xFE);
|
||||||
|
writeH(0x43);
|
||||||
|
writeD(_level);
|
||||||
|
}
|
||||||
|
}
|
@@ -24,45 +24,71 @@ import com.l2jserver.Config;
|
|||||||
import com.l2jserver.gameserver.model.L2Clan;
|
import com.l2jserver.gameserver.model.L2Clan;
|
||||||
import com.l2jserver.gameserver.model.L2Clan.SubPledge;
|
import com.l2jserver.gameserver.model.L2Clan.SubPledge;
|
||||||
import com.l2jserver.gameserver.model.L2ClanMember;
|
import com.l2jserver.gameserver.model.L2ClanMember;
|
||||||
import com.l2jserver.gameserver.model.L2World;
|
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
|
||||||
public class PledgeShowMemberListAll extends L2GameServerPacket
|
public class PledgeShowMemberListAll extends L2GameServerPacket
|
||||||
{
|
{
|
||||||
private final L2Clan _clan;
|
private final L2Clan _clan;
|
||||||
|
private final SubPledge _subPledge;
|
||||||
private final Collection<L2ClanMember> _members;
|
private final Collection<L2ClanMember> _members;
|
||||||
private int _pledgeType;
|
private int _pledgeType;
|
||||||
|
|
||||||
public PledgeShowMemberListAll(L2Clan clan)
|
public PledgeShowMemberListAll(L2Clan clan)
|
||||||
{
|
{
|
||||||
_clan = clan;
|
_clan = clan;
|
||||||
|
_subPledge = null;
|
||||||
|
_members = _clan.getMembers();
|
||||||
|
}
|
||||||
|
|
||||||
|
public PledgeShowMemberListAll(L2Clan clan, SubPledge subPledge)
|
||||||
|
{
|
||||||
|
_clan = clan;
|
||||||
|
_subPledge = subPledge;
|
||||||
_members = _clan.getMembers();
|
_members = _clan.getMembers();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final void writeImpl()
|
protected final void writeImpl()
|
||||||
|
{
|
||||||
|
if (_subPledge == null)
|
||||||
{
|
{
|
||||||
// write main Clan
|
// write main Clan
|
||||||
writePledge(null, _clan.getLeaderName());
|
writePledge(null, _clan.getName(), _clan.getLeaderName());
|
||||||
|
|
||||||
for (SubPledge subPledge : _clan.getAllSubPledges())
|
for (SubPledge subPledge : _clan.getAllSubPledges())
|
||||||
{
|
{
|
||||||
L2PcInstance pLeader = L2World.getInstance().getPlayer(subPledge.getLeaderId());
|
getClient().sendPacket(new PledgeShowMemberListAll(_clan, subPledge));
|
||||||
writePledge(subPledge, (pLeader == null ? "" : pLeader.getName()));
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
writePledge(_subPledge, _subPledge.getName(), getLeaderName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writePledge(SubPledge pledge, String name)
|
private void writePledge(SubPledge pledge, String name, String ldname)
|
||||||
{
|
{
|
||||||
final int pledgeId = (pledge == null ? 0x00 : pledge.getId());
|
_pledgeType = (pledge == null ? 0x00 : pledge.getId());
|
||||||
writeC(0x5a);
|
writeC(0x5a);
|
||||||
|
|
||||||
writeD(pledge == null ? 0 : 1);
|
String _name = "";
|
||||||
|
for (SubPledge subPledge : _clan.getAllSubPledges())
|
||||||
|
{
|
||||||
|
_name = subPledge.getName();
|
||||||
|
}
|
||||||
|
if ((_name == "") || (_name == name))
|
||||||
|
{
|
||||||
|
writeD(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
writeD(1);
|
||||||
|
}
|
||||||
writeD(_clan.getId());
|
writeD(_clan.getId());
|
||||||
writeD(Config.SERVER_ID);
|
writeD(Config.SERVER_ID);
|
||||||
writeD(pledgeId);
|
writeD(_pledgeType);
|
||||||
writeS(_clan.getName());
|
writeS(name);
|
||||||
writeS(_clan.getLeaderName());
|
writeS(ldname);
|
||||||
|
|
||||||
writeD(_clan.getCrestId()); // crest id .. is used again
|
writeD(_clan.getCrestId()); // crest id .. is used again
|
||||||
writeD(_clan.getLevel());
|
writeD(_clan.getLevel());
|
||||||
@@ -103,6 +129,25 @@ public class PledgeShowMemberListAll extends L2GameServerPacket
|
|||||||
}
|
}
|
||||||
writeD(m.isOnline() ? m.getObjectId() : 0); // objectId = online 0 = offline
|
writeD(m.isOnline() ? m.getObjectId() : 0); // objectId = online 0 = offline
|
||||||
writeD(m.getSponsor() != 0 ? 1 : 0);
|
writeD(m.getSponsor() != 0 ? 1 : 0);
|
||||||
|
writeC(0x00);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getLeaderName()
|
||||||
|
{
|
||||||
|
int LeaderId = _subPledge.getLeaderId();
|
||||||
|
if ((_subPledge.getId() == L2Clan.SUBUNIT_ACADEMY) || (LeaderId == 0))
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
else if (_clan.getClanMember(LeaderId) == null)
|
||||||
|
{
|
||||||
|
_log.warning("SubPledgeLeader: " + LeaderId + " is missing from clan: " + _clan.getName() + "[" + _clan.getId() + "]");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return _clan.getClanMember(LeaderId).getName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -98,5 +98,6 @@ public final class PledgeShowMemberListUpdate extends L2GameServerPacket
|
|||||||
writeD(0);
|
writeD(0);
|
||||||
}
|
}
|
||||||
writeD(_hasSponsor);
|
writeD(_hasSponsor);
|
||||||
|
writeC(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user