Jump to content
  • 0

[help]when char becomes castle lord don't take cirlet


Question

4 answers to this question

Recommended Posts

  • 0
Posted

I got this at l2jfree pack, Interlude.

CrownManager.getInstance().checkCrowns(clan);

 

Check that. And see if it's needed to recode.

  • 0
Posted

I got this at l2jfree pack, Interlude.

CrownManager.getInstance().checkCrowns(clan);

 

Check that. And see if it's needed to recode.

where is it in? what java file?

  • 0
Posted

Index: /Server/GameServer/java/net/sf/l2j/gameserver/model/L2Clan.java
===================================================================
--- /Server/GameServer/java/net/sf/l2j/gameserver/model/L2Clan.java (revision 26)
+++ /Server/GameServer/java/net/sf/l2j/gameserver/model/L2Clan.java (revision 40)
@@ -34,4 +34,5 @@
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.instancemanager.CastleManager;
+import net.sf.l2j.gameserver.instancemanager.CrownManager;
import net.sf.l2j.gameserver.instancemanager.SiegeManager;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
@@ -263,4 +264,7 @@
     	broadcastToOnlineMembers(sm);
     	sm = null;
+    	
+    	CrownManager.getInstance().checkCrowns(exLeader);
+    	CrownManager.getInstance().checkCrowns(newLeader);
	}
	/**
Index: /Server/GameServer/java/net/sf/l2j/gameserver/model/entity/Castle.java
===================================================================
--- /Server/GameServer/java/net/sf/l2j/gameserver/model/entity/Castle.java (revision 2)
+++ /Server/GameServer/java/net/sf/l2j/gameserver/model/entity/Castle.java (revision 40)
@@ -38,4 +38,5 @@
import net.sf.l2j.gameserver.instancemanager.CastleManager;
import net.sf.l2j.gameserver.instancemanager.CastleManorManager;
+import net.sf.l2j.gameserver.instancemanager.CrownManager;
import net.sf.l2j.gameserver.instancemanager.CastleManorManager.CropProcure;
import net.sf.l2j.gameserver.instancemanager.CastleManorManager.SeedProduction;
@@ -278,4 +279,5 @@
				oldOwner.setHasCastle(0);												// Unset has castle flag for old owner
         		new Announcements().announceToAll(oldOwner.getName() + " has lost " + getName() + " castle!");
+        		CrownManager.getInstance().checkCrowns(oldOwner);                       // Delete old crowns
			}
	    }
@@ -617,5 +619,5 @@
     		    new Announcements().announceToAll(clan.getName() + " has taken " + getName() + " castle!");
     		    clan.broadcastToOnlineMembers(new PledgeShowInfoUpdate(clan));
-
+    		    CrownManager.getInstance().checkCrowns(clan);                                           // Give Crowns To New Owner
     		    ThreadPoolManager.getInstance().scheduleGeneral(new CastleUpdater(clan, 1), 3600000);	// Schedule owner tasks to start running
             }

 

make new file CrownManager.java in instancemanager folder and place :

/*
* 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 net.sf.l2j.gameserver.instancemanager;

import net.sf.l2j.gameserver.datatables.CrownTable;
import net.sf.l2j.gameserver.model.L2Clan;
import net.sf.l2j.gameserver.model.L2ClanMember;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.entity.Castle;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
* @author evill33t
* Reworked by NB4L1
*/
public class CrownManager
{
private static final Log	_log	= LogFactory.getLog(CrownManager.class.getName());
private static CrownManager	_instance;

public static final CrownManager getInstance()
{
	if (_instance == null)
		_instance = new CrownManager();
	return _instance;
}

public CrownManager()
{
	_log.info("CrownManager: initialized");
}

public void checkCrowns(L2Clan clan)
{
	if (clan == null)
		return;

	for (L2ClanMember member : clan.getMembers())
	{
		if (member != null && member.isOnline() && member.getPlayerInstance() != null)
		{
			checkCrowns(member.getPlayerInstance());
		}
	}
}

public void checkCrowns(L2PcInstance activeChar)
{
	if (activeChar == null)
		return;

	boolean isLeader = false;
	int crownId = -1;

	L2Clan activeCharClan = activeChar.getClan();
	//L2EMU_EDIT_BEGIN
	L2ClanMember activeCharClanLeader;
	if (activeCharClan != null)
		activeCharClanLeader = activeChar.getClan().getLeader();
	else
		activeCharClanLeader = null;
	//L2EMU_EDIT_END
	if (activeCharClan != null)
	{
		Castle activeCharCastle = CastleManager.getInstance().getCastleByOwner(activeCharClan);

		if (activeCharCastle != null)
		{
			crownId = CrownTable.getCrownId(activeCharCastle.getCastleId());
		}

		//L2EMU_EDIT
		if (activeCharClanLeader != null && activeCharClanLeader.getObjectId() == activeChar.getObjectId())
		//L2EMU_EDIT
		{
			isLeader = true;
		}
	}

	if (crownId > 0)
	{
		if (isLeader && activeChar.getInventory().getItemByItemId(6841) == null)
		{
			activeChar.addItem("Crown", 6841, 1, activeChar, true);
			activeChar.getInventory().updateDatabase();
		}

		if (activeChar.getInventory().getItemByItemId(crownId) == null)
		{
			activeChar.addItem("Crown", crownId, 1, activeChar, true);
			activeChar.getInventory().updateDatabase();
		}
	}

	boolean alreadyFoundCirclet = false;
	boolean alreadyFoundCrown = false;
	for (L2ItemInstance item : activeChar.getInventory().getItems())
	{
		if (CrownTable.getCrownList().contains(item.getItemId()))
		{
			if (crownId > 0)
			{
				if (item.getItemId() == crownId)
				{
					if (!alreadyFoundCirclet)
					{
						alreadyFoundCirclet = true;
						continue;
					}
				}
				else if (item.getItemId() == 6841 && isLeader)
				{
					if (!alreadyFoundCrown)
					{
						alreadyFoundCrown = true;
						continue;
					}
				}
			}

			activeChar.destroyItem("Removing Crown", item, activeChar, true);
			activeChar.getInventory().updateDatabase();
		}
	}
}
}

 

have fun :D

Guest
This topic is now closed to further replies.


  • Posts

    • From Salvation onwards I think you need a patched nwindow.dll that allows such modifications, try to see if you get what you need here: https://drive.google.com/drive/u/1/folders/1LLbQFGf8KlR-O0Iv5umfF-pwZgrDh9bd
    • hello everyone! I am wanting to save the files (Ini. - Data - ) of the EP5 Client: Salvation... But they generate the error "corrupt files"... I tried several versions of L2FileEditor without good results. I need help! Thank you!
    • Opening December 6th at 19:00 (GMT +3)! Open Beta Test from November 30th!   https://l2soe.com/   🌟 Introducing L2 Saga of Eternia: A Revolution in Lineage 2 High Five! 🌟   Dear Lineage 2 enthusiasts, Prepare to witness the future of private servers! L2 Saga of Eternia is not just another High Five project—it’s a game-changing experience designed to compete with the giants of the Lineage 2 private server scene. Built for the community, by the community, we’re here to raise the bar in quality, innovation, and longevity. What Sets Us Apart? 💎 No Wipes, Ever Say goodbye to the fear of losing your progress. Our server is built to last and will never close. Stability and consistency are our promises to you. ⚔️ Weekly New Content Our dedicated development team ensures fresh challenges, events, and updates every week. From custom quests to exclusive features, there will always be something exciting to explore. 💰 No Pay-to-Win Skill and strategy matter most here. Enjoy a balanced gameplay environment where your achievements come from effort, not your wallet. 🌍 A Massive Community With 2000+ players expected, join a vibrant and active community of like-minded adventurers ready to conquer the world of Aden. 🏆 Fair and Competitive Gameplay Our systems are designed to promote healthy competition while avoiding abusive mechanics and exploits. 🔧 Professional Development From advanced bug fixes to carefully curated content, we pride ourselves on smooth performance, no lag, and unparalleled server quality. Key Features Chronicle: High Five with unique interface Rate: Dynamic x10 rates Class Balance: Carefully fine-tuned for a fair experience PvP Focused: PvP Ranking & aura display effect for 3 Top PvPers every week Custom Events: Seasonal and permanent events to keep you engaged Additional Features:   Custom Endgame Content: Introduce unique dungeons, raids, or zones unavailable in other servers. Player-Driven Economy: Implement a strong market system and avoid overinflated drops or rewards. Epic Siege Battles: Announce special large-scale sieges and PvP events. Incentives for Streamers and Clans: Attract influencers and big clans to boost server publicity. Roadmap Transparency: Share a public roadmap of planned updates to build trust and excitemen   Here you can read all the features: https://l2soe.com/features   Video preview: Join the Revolution! This is your chance to be part of something legendary. L2 Saga of Eternia is not just a server; it’s a movement to redefine what Lineage 2 can be. Whether you’re a seasoned veteran or a newcomer to the world of Aden, we invite you to experience Lineage 2 at its finest.   Official Launch Date: December 6th 2024 Website: https://l2soe.com/ Facebook: https://www.facebook.com/l2soe Discord: https://discord.com/invite/l2eternia   Let’s build the ultimate Lineage 2 experience together. See you in-game! 🎮
    • That's like a tutorial on how to run l2 on MacOS Xd but good job for the investigation. 
  • Topics

×
×
  • Create New...