Jump to content
  • 0

Toggle Skills After Death


Question

Recommended Posts

  • 0
Posted

Hi, you need a source code to modify that, no idea what pack you're using, but search in methods that called after/along with Die.java server packet.

  • 0
Posted

Hello I am using l2jfrozen pack and this is the DIe.java of it , so what do I have to change?

 

/*
 * 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 2, 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, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 *
 * http://www.gnu.org/copyleft/gpl.html
 */
package com.l2jfrozen.gameserver.network.serverpackets;

import com.l2jfrozen.gameserver.datatables.AccessLevel;
import com.l2jfrozen.gameserver.datatables.sql.AccessLevels;
import com.l2jfrozen.gameserver.managers.CastleManager;
import com.l2jfrozen.gameserver.managers.FortManager;
import com.l2jfrozen.gameserver.model.L2Attackable;
import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.L2SiegeClan;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.entity.event.CTF;
import com.l2jfrozen.gameserver.model.entity.event.DM;
import com.l2jfrozen.gameserver.model.entity.event.TvT;
import com.l2jfrozen.gameserver.model.entity.siege.Castle;
import com.l2jfrozen.gameserver.model.entity.siege.Fort;
import com.l2jfrozen.gameserver.model.zone.type.L2MultiFunctionZone;

/**
 * sample 0b 952a1048 objectId 00000000 00000000 00000000 00000000 00000000 00000000 format dddddd rev 377 format
 * ddddddd rev 417
 * 
 * @version $Revision: 1.3.3 $ $Date: 2009/04/29 00:46:18 $
 */
public class Die extends L2GameServerPacket
{
	private static final String _S__0B_DIE = "[S] 06 Die";
	private int _charObjId;
	private boolean _fake;
	private boolean _sweepable;
	private boolean _canTeleport;
	private AccessLevel _access = AccessLevels.getInstance()._userAccessLevel;
	private com.l2jfrozen.gameserver.model.L2Clan _clan;
	L2Character _activeChar;

	/**
	 * @param cha 
	 */
	public Die(L2Character cha)
	{
		_activeChar = cha;
		if(cha instanceof L2PcInstance)
		{
			L2PcInstance player = (L2PcInstance) cha;
			_access = player.getAccessLevel();
			_clan = player.getClan();
			_canTeleport = !((TvT.is_started() && player._inEventTvT)
							|| (DM.is_started() && player._inEventDM)
							|| (CTF.is_started() && player._inEventCTF)
							|| player.isInFunEvent()
							|| player.isPendingRevive()
							|| (player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && L2MultiFunctionZone.revive));
		}
		_charObjId = cha.getObjectId();
		_fake = !cha.isDead();
		if(cha instanceof L2Attackable)
		{
			_sweepable = ((L2Attackable) cha).isSweepActive();
		}

	}

	@Override
	protected final void writeImpl()
	{
		if(_fake)
			return;

		writeC(0x06);

		writeD(_charObjId);
		// NOTE:
		// 6d 00 00 00 00 - to nearest village	
		// 6d 01 00 00 00 - to hide away
		// 6d 02 00 00 00 - to castle
		// 6d 03 00 00 00 - to siege HQ
		// sweepable
		// 6d 04 00 00 00 - FIXED

		writeD(_canTeleport ? 0x01 : 0);   // 6d 00 00 00 00 - to nearest village

		if(_canTeleport && _clan != null)
		{
			L2SiegeClan siegeClan = null;
			Boolean isInDefense = false;
			Castle castle = CastleManager.getInstance().getCastle(_activeChar);
			Fort fort = FortManager.getInstance().getFort(_activeChar);

			if(castle != null && castle.getSiege().getIsInProgress())
			{
				//siege in progress
				siegeClan = castle.getSiege().getAttackerClan(_clan);
				if(siegeClan == null && castle.getSiege().checkIsDefender(_clan))
				{
					isInDefense = true;
				}
			}
			else if(fort != null && fort.getSiege().getIsInProgress())
			{
				//siege in progress
				siegeClan = fort.getSiege().getAttackerClan(_clan);
				if(siegeClan == null && fort.getSiege().checkIsDefender(_clan))
				{
					isInDefense = true;
				}
			}

			writeD(_clan.getHasHideout() > 0 ? 0x01 : 0x00); // 6d 01 00 00 00 - to hide away
			writeD(_clan.getHasCastle() > 0 || _clan.getHasFort() > 0 || isInDefense ? 0x01 : 0x00); // 6d 02 00 00 00 - to castle
			writeD(siegeClan != null && !isInDefense && siegeClan.getFlag().size() > 0 ? 0x01 : 0x00); // 6d 03 00 00 00 - to siege HQ
		}
		else
		{
			writeD(0x00); // 6d 01 00 00 00 - to hide away
			writeD(0x00); // 6d 02 00 00 00 - to castle
			writeD(0x00); // 6d 03 00 00 00 - to siege HQ
		}

		writeD(_sweepable ? 0x01 : 0x00); // sweepable  (blue glow)
		writeD(_access.allowFixedRes() ? 0x01 : 0x00); // 6d 04 00 00 00 - to FIXED
	}

	/* (non-Javadoc)
	 * @see com.l2jfrozen.gameserver.serverpackets.ServerBasePacket#getType()
	 */
	@Override
	public String getType()
	{
		return _S__0B_DIE;
	}
}

 

  • 0
Posted

so About the 8k lines I got you the "title" of it.. also at the Pcinstance those are the best matches I could get also at l2 character and continues javas I chose those who made more sence but dont really thing is something from those either..

 

59d2580a530ef_.thumb.png.2f4266043fa03ad58160cc60a09574b4.png

  • 0
Posted (edited)

maybe on l2character.java

try find

    public final void stopAllEffects()

and add this code

               

 if(effect.getSkill().isToggle()) continue;

after this

            if (effect != null)
            {

 

i not tested so it can not work :D

Edited by wongerlt
  • 0
Posted (edited)

even if this is the right place to add the check, check again what you just did. You removing the effect and then you checking if is toggle?

  • L2Character.java -> click the stopAllEffects() with your cursor in order to highlight it
  • In eclipse tools -> Refactor -> Change Method Signature
  • click on Add button . A default column will appear with : Object as 'type' , newParam as Name, null as Default Value. Edit them with 'boolean' as type , 'onDeath' as Name , 'false' as default value 
  • Click ok.
  • L2Character.java -> doDie() method, edit all stopAllEffects(false) with true argument only those are inside of "if (this instanceof L2PcInstance)" check
  • Edit the method stopAllEffects like this:
public final void stopAllEffects(boolean onDeath)
	{
		final L2Effect[] effects = getAllEffects();
		for (final L2Effect effect : effects)
		{
			if (effect != null)
			{
				if (onDeath && effect.getSkill().isToggle())
					continue;
				effect.exit(true);
			}
			else
			{
				synchronized (_effects)
				{
					_effects.remove(effect);
				}
			}
		}
		if (this instanceof L2PcInstance)
		{
			((L2PcInstance) this).updateAndBroadcastStatus(2);
		}
	}

 

If you just add a check in stopAllEffects() for toggle then even in subclass change/add/cancel or idk where this method is used you will keep all toggles ....

 

P.s 'Not tested'

Edited by melron
Guest
This topic is now closed to further replies.


  • Posts

    • Server owners, Top.MaxCheaters.com is now live and accepting Lineage 2 server listings. There is no voting, no rankings manipulation, and no paid advantages. Visibility is clean and equal, and early listings naturally appear at the top while the platform grows. If your server is active, it should already be listed. Submit here  https://Top.MaxCheaters.com This platform is part of the MaxCheaters.com network and is being built as a long-term reference point for the Lineage 2 community. — MaxCheaters.com Team
    • Someone knows if there is a free download in some place for get it?. Thanks!
    • NEWS Elysian Realms   LINEAGE 2 PRIVATE PUBLIC SERVER A complete, optimized, and feature-rich Lineage 2 experience — ready to launch, play, and scale.  OVERVIEW Elysian Realms is a high-quality Lineage 2 private public server pack, crafted for stability, balance, and long-term gameplay enjoyment. Every system is preconfigured and battle-tested, allowing server owners to focus on community and growth rather than constant fixes. Whether you aim for classic nostalgia or a modern custom experience, Elysian Realms adapts to your vision. STABLE & SECURE CORE Performance-focused and scalable core High uptime & low latency Bug-free, smooth gameplay Designed for long-term server stability Your players stay focused on the world — not server issues.  CUSTOM FEATURES WITHOUT COMPROMISE Authentic Lineage 2 feeling enhanced with smart QoL systems:  Interface & Visuals Unique UI tweaks Custom skins, armors, weapons, tattoos & cloaks Special camera effects on death Color Choose Player system Vitality 16+ special armor effects  Gameplay Systems Balanced skills & stats (fully tested) Unique Rebirth Manager (Doll Skills) Dolls items with custom skills Rune XP Bonus system (XP / SP / Drop boosts) Auto Pots system (.menu) Buff cancel (5 sec return)  PVE & FARMING CONTENT Expanded PvE zones Solo farm zones (Top / Mid / Low LS) Tyrannosaurus addons with top LS drops Party Farm Event Dungeon Manager Top Farm Items Manager Global Drop System Farm Protection (Captcha) Solo & Zerg protection system  PVP & COMPETITIVE EVENTS Flag Raid Zones (PvP zones) PvP Top Player events + rewards Special PvP & PK rankings (spawned in Giran) Tournament events (x3 / x5 / x9) TvT & CTF Random 1vs1 Event Hero Boss Event System Race of Wars (Unique Event) Elysian Ultimate Zones – God Zone RAIDS & WORLD CONTENT Raid HP announcements Special Gatekeeper: Farm Zones PvP Zones Raid Zones Event Zones Party Farms Random Locations Flagged Raid Zones (PvP enabled) AUTOMATION & SMART SYSTEMS Auto Farm (VIP) Auto Gold Bar system Auto NPC announcements (Giran Town) Auto login & online record announcements Auto Vote system with global rewards Auto Zones Timed Items Dungeon Unique. REWARDS, PROGRESSION & ECONOMY Achievement Manager Mission System (Cafe Points + Random Rewards) Capsule Boxes. Top Boxes system with configurable rewards Roll Dice System (Lucky Manager x2 rewards) Donate Manager (clean & transparent) Auction Manager (extended icon support)  FULLY DOCUMENTED & DEVELOPER FRIENDLY Complete server & client documentation  MULTIVERSE-READY CORE Supports C4-style to High Five gameplay Multi-language support Scalable rates Modular scripts & systems One core. Endless possibilities.  DESIGNED FOR Indie server owners & developers Event & GvG organizers Modders & hobbyists Fans of classic & custom Lineage 2 PROVEN & BATTLE-TESTED Previously online with 100+ active players All systems tested in live environment Balanced for both PvE & PvP longevity ELYSIAN REALMS PHILOSOPHY Elysian Realms isn’t just a server pack — it’s a complete Lineage 2 ecosystem built for players and creators alike. Ready to enter the Elysian World? Launch. Customize. Dominate.   https://www.l2elysian.com/
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..