From 30e94e6c94d7be9044ba3b03da84d8094c04e2e9 Mon Sep 17 00:00:00 2001 From: erlandys56 <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 25 Jan 2015 19:19:13 +0000 Subject: [PATCH] - Implemented adena distribution engine. - Cleaned not used variable. --- .../network/L2GamePacketHandler.java | 7 +- .../clientpackets/RequestDivideAdena.java | 68 +++++++++++++++++++ .../RequestDivideAdenaCancel.java | 58 ++++++++++++++++ .../RequestDivideAdenaStart.java | 63 +++++++++++++++++ .../SendChangeAttributeTargetItem.java | 2 +- .../serverpackets/ExChangeAttributeInfo.java | 4 +- .../serverpackets/ExDivideAdenaCancel.java | 36 ++++++++++ .../serverpackets/ExDivideAdenaDone.java | 50 ++++++++++++++ .../serverpackets/ExDivideAdenaStart.java | 36 ++++++++++ 9 files changed, 316 insertions(+), 8 deletions(-) create mode 100644 trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdena.java create mode 100644 trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdenaCancel.java create mode 100644 trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdenaStart.java create mode 100644 trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaCancel.java create mode 100644 trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaDone.java create mode 100644 trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaStart.java diff --git a/trunk/java/com/l2jserver/gameserver/network/L2GamePacketHandler.java b/trunk/java/com/l2jserver/gameserver/network/L2GamePacketHandler.java index 22826cfef8..93d0edf9f1 100644 --- a/trunk/java/com/l2jserver/gameserver/network/L2GamePacketHandler.java +++ b/trunk/java/com/l2jserver/gameserver/network/L2GamePacketHandler.java @@ -72,7 +72,6 @@ public final class L2GamePacketHandler implements IPacketHandler, { return null; } - int opcode = buf.get() & 0xFF; ReceivablePacket msg = null; @@ -1561,13 +1560,13 @@ public final class L2GamePacketHandler implements IPacketHandler, // msg = new RequestCardReward(); break; case 0xE6: - // msg = new RequestDivideAdenaStart(); + msg = new RequestDivideAdenaStart(); break; case 0xE7: - // msg = new RequestDivideAdenaCancel(); + msg = new RequestDivideAdenaCancel(); break; case 0xE8: - // msg = new RequestDivideAdena(); + msg = new RequestDivideAdena(); break; case 0xE9: msg = new RequestAcquireAbilityList(); diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdena.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdena.java new file mode 100644 index 0000000000..5b3149533f --- /dev/null +++ b/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdena.java @@ -0,0 +1,68 @@ +/* + * 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 . + */ +package com.l2jserver.gameserver.network.clientpackets; + +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.network.SystemMessageId; +import com.l2jserver.gameserver.network.serverpackets.ExDivideAdenaDone; + +/** + * @author Erlandys + */ +public class RequestDivideAdena extends L2GameClientPacket +{ + long _count; + + @Override + protected void readImpl() + { + readD(); + _count = readQ(); + } + + @Override + protected void runImpl() + { + final L2PcInstance activeChar = getClient().getActiveChar(); + if (activeChar == null) + { + return; + } + long count = activeChar.getAdena(); + if (_count > count) + { + activeChar.sendPacket(SystemMessageId.YOU_CANNOT_PROCEED_AS_THERE_IS_INSUFFICIENT_ADENA); + return; + } + int membersCount = activeChar.getParty().getMemberCount(); + long dividedCount = (long) Math.floor(_count / membersCount); + activeChar.reduceAdena("AdenaDistribution", membersCount * dividedCount, null, false); + for (L2PcInstance player : activeChar.getParty().getMembers()) + { + player.addAdena("AdenaDistribution", dividedCount, null, player.getObjectId() != activeChar.getObjectId()); + } + activeChar.sendPacket(new ExDivideAdenaDone(membersCount, _count, dividedCount, activeChar.getName())); + } + + @Override + public String getType() + { + return getClass().getSimpleName(); + } +} diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdenaCancel.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdenaCancel.java new file mode 100644 index 0000000000..38270518f4 --- /dev/null +++ b/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdenaCancel.java @@ -0,0 +1,58 @@ +/* + * 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 . + */ +package com.l2jserver.gameserver.network.clientpackets; + +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.network.SystemMessageId; +import com.l2jserver.gameserver.network.serverpackets.ExDivideAdenaCancel; + +/** + * @author Erlandys + */ +public class RequestDivideAdenaCancel extends L2GameClientPacket +{ + int _cancel; + + @Override + protected void readImpl() + { + _cancel = readC(); + } + + @Override + protected void runImpl() + { + final L2PcInstance activeChar = getClient().getActiveChar(); + if (activeChar == null) + { + return; + } + if (_cancel == 0) + { + activeChar.sendPacket(SystemMessageId.ADENA_DISTRIBUTION_HAS_BEEN_CANCELLED); + activeChar.sendPacket(new ExDivideAdenaCancel()); + } + } + + @Override + public String getType() + { + return getClass().getSimpleName(); + } +} diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdenaStart.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdenaStart.java new file mode 100644 index 0000000000..efd0360c42 --- /dev/null +++ b/trunk/java/com/l2jserver/gameserver/network/clientpackets/RequestDivideAdenaStart.java @@ -0,0 +1,63 @@ +/* + * 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 . + */ +package com.l2jserver.gameserver.network.clientpackets; + +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.network.SystemMessageId; +import com.l2jserver.gameserver.network.serverpackets.ExDivideAdenaStart; + +/** + * @author Erlandys + */ +public class RequestDivideAdenaStart extends L2GameClientPacket +{ + @Override + protected void readImpl() + { + + } + + @Override + protected void runImpl() + { + final L2PcInstance activeChar = getClient().getActiveChar(); + if (activeChar == null) + { + return; + } + if (activeChar.getParty() == null) + { + activeChar.sendPacket(SystemMessageId.YOU_CANNOT_PROCEED_AS_YOU_ARE_NOT_IN_AN_ALLIANCE_OR_PARTY); + return; + } + if (activeChar.getParty().getLeaderObjectId() != activeChar.getObjectId()) + { + activeChar.sendPacket(SystemMessageId.YOU_CANNOT_PROCEED_AS_YOU_ARE_NOT_A_PARTY_LEADER); + return; + } + activeChar.sendPacket(SystemMessageId.ADENA_DISTRIBUTION_HAS_STARTED); + activeChar.sendPacket(new ExDivideAdenaStart()); + } + + @Override + public String getType() + { + return getClass().getSimpleName(); + } +} diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/SendChangeAttributeTargetItem.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/SendChangeAttributeTargetItem.java index e2219e36fa..f0bf1c1fe7 100644 --- a/trunk/java/com/l2jserver/gameserver/network/clientpackets/SendChangeAttributeTargetItem.java +++ b/trunk/java/com/l2jserver/gameserver/network/clientpackets/SendChangeAttributeTargetItem.java @@ -48,7 +48,7 @@ public class SendChangeAttributeTargetItem extends L2GameClientPacket { return; } - player.sendPacket(new ExChangeAttributeInfo(_elementOID, _itemOID, item.getAttackElementType())); + player.sendPacket(new ExChangeAttributeInfo(_elementOID, item.getAttackElementType())); } @Override diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExChangeAttributeInfo.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExChangeAttributeInfo.java index 316908a66a..254272c1dd 100644 --- a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExChangeAttributeInfo.java +++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExChangeAttributeInfo.java @@ -19,13 +19,11 @@ package com.l2jserver.gameserver.network.serverpackets; */ public class ExChangeAttributeInfo extends L2GameServerPacket { - private final int itemOID; private final int attributeOID; private final int attributes; - public ExChangeAttributeInfo(int _attributeOID, int _itemOID, int _attribute) + public ExChangeAttributeInfo(int _attributeOID, int _attribute) { - itemOID = _itemOID; attributeOID = _attributeOID; switch (_attribute) { diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaCancel.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaCancel.java new file mode 100644 index 0000000000..fc4b4c4573 --- /dev/null +++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaCancel.java @@ -0,0 +1,36 @@ +/* + * 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 . + */ +package com.l2jserver.gameserver.network.serverpackets; + +/** + * @author Erlandys + */ +public class ExDivideAdenaCancel extends L2GameServerPacket +{ + public ExDivideAdenaCancel() + { + } + + @Override + protected final void writeImpl() + { + writeC(0xFE); + writeH(0x15C); + } +} diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaDone.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaDone.java new file mode 100644 index 0000000000..b59c4351bf --- /dev/null +++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaDone.java @@ -0,0 +1,50 @@ +/* + * 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 . + */ +package com.l2jserver.gameserver.network.serverpackets; + +/** + * @author Erlandys + */ +public class ExDivideAdenaDone extends L2GameServerPacket +{ + int _friendsCount; + long _count, _dividedCount; + String _name; + + public ExDivideAdenaDone(int friendsCount, long count, long dividedCount, String name) + { + _friendsCount = friendsCount; + _count = count; + _dividedCount = dividedCount; + _name = name; + } + + @Override + protected final void writeImpl() + { + writeC(0xFE); + writeH(0x15D); + writeC(0x01); // Always 1 + writeC(0x00); // Always 0 + writeD(_friendsCount); // Friends count + writeQ(_dividedCount); // Divided count + writeQ(_count); // Whole count + writeS(_name); // Giver name + } +} diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaStart.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaStart.java new file mode 100644 index 0000000000..c79e366e72 --- /dev/null +++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/ExDivideAdenaStart.java @@ -0,0 +1,36 @@ +/* + * 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 . + */ +package com.l2jserver.gameserver.network.serverpackets; + +/** + * @author Erlandys + */ +public class ExDivideAdenaStart extends L2GameServerPacket +{ + public ExDivideAdenaStart() + { + } + + @Override + protected final void writeImpl() + { + writeC(0xFE); + writeH(0x15B); + } +}