Jump to content
  • 0

Heal npc and doors


Question

Posted (edited)

Hello how to fix this bug? Players can heal clan doors and u see which range is

 

Photo prnt.sc

 

		RequestMagicSkillUse.java	

if ((skill.getSkillType() == SkillType.HEAL || skill.getSkillType() == SkillType.HEAL_PERCENT || skill.getSkillType() == SkillType.HEAL_STATIC) && activeChar.getTarget() instanceof L2DoorInstance)
			{
				return;
			}

EDITED: Forgot to add skill name: Greater Battle Heal id: 1218

Edited by l2fire

Recommended Posts

  • 0
Posted

I fixed this on, but when i try to heal player that's fine but in gs console i get warning:

 

warn no skill found with id 1218 and level 33 !!

warn no skill found with id 1218 and level 33 !!

 

  • 0
Posted (edited)
5 hours ago, l2fire said:

And GS show warning about skills just after code when i add in RequestMagicSKillUse.java

You should put the check in the proper lines. Heal.java HealPercent.java in the right place. 

I'm not sure, but I think frozen already have config for this.. Dunno. Search on your configs.

Edited by 'Baggos'
  • 0
Posted
9 hours ago, 'Baggos' said:

You should put the check in the proper lines. Heal.java HealPercent.java in the right place. 

I'm not sure, but I think frozen already have config for this.. Dunno. Search on your configs.

Maybe you can help me ?

 

Its Heal.java

 

/*
 * L2jFrozen Project - www.l2jfrozen.com 
 * 
 * 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.handler.skillhandlers;

import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.handler.ISkillHandler;
import com.l2jfrozen.gameserver.handler.SkillHandler;
import com.l2jfrozen.gameserver.managers.GrandBossManager;
import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.L2Object;
import com.l2jfrozen.gameserver.model.L2Skill;
import com.l2jfrozen.gameserver.model.L2Skill.SkillType;
import com.l2jfrozen.gameserver.model.actor.instance.L2DoorInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.StatusUpdate;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
import com.l2jfrozen.gameserver.skills.Stats;

/**
 * This class ...
 * @version $Revision: 1.1.2.2.2.4 $ $Date: 2005/04/06 16:13:48 $
 */

public class Heal implements ISkillHandler
{
	// all the items ids that this handler knowns
	// private static Logger LOGGER = Logger.getLogger(Heal.class);
	
	/*
	 * (non-Javadoc)
	 * @see com.l2jfrozen.gameserver.handler.IItemHandler#useItem(com.l2jfrozen.gameserver.model.L2PcInstance, com.l2jfrozen.gameserver.model.L2ItemInstance)
	 */
	private static final SkillType[] SKILL_IDS =
	{
		SkillType.HEAL,
		SkillType.HEAL_PERCENT,
		SkillType.HEAL_STATIC
	};
	
	/*
	 * (non-Javadoc)
	 * @see com.l2jfrozen.gameserver.handler.IItemHandler#useItem(com.l2jfrozen.gameserver.model.L2PcInstance, com.l2jfrozen.gameserver.model.L2ItemInstance)
	 */
	@Override
	public void useSkill(final L2Character activeChar, final L2Skill skill, final L2Object[] targets)
	{
		L2PcInstance player = null;
		if (activeChar instanceof L2PcInstance)
			player = (L2PcInstance) activeChar;
		
		final boolean bss = activeChar.checkBss();
		final boolean sps = activeChar.checkSps();
		
		// check for other effects
		try
		{
			ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(SkillType.BUFF);
			
			if (handler != null)
				handler.useSkill(activeChar, skill, targets);
			
			handler = null;
		}
		catch (final Exception e)
		{
			if (Config.ENABLE_ALL_EXCEPTIONS)
				e.printStackTrace();
		}
		
		L2Character target = null;
		
		for (final L2Object target2 : targets)
		{
			target = (L2Character) target2;
			
			if (target == null || target.isDead() || target.isInvul())
				continue;
			
			// Avoid players heal inside Baium lair from outside
			if ((activeChar.isInsideZone(12007) || target.isInsideZone(12007)) && ((GrandBossManager.getInstance().getZone(player) == null && GrandBossManager.getInstance().getZone(target) != null) || (GrandBossManager.getInstance().getZone(target) == null && GrandBossManager.getInstance().getZone(activeChar) != null)))
			{
				continue;
			}
			
			// We should not heal walls and door
			if (target instanceof L2DoorInstance)
				continue;
			
			// We should not heal siege flags
			if (target instanceof L2NpcInstance && ((L2NpcInstance) target).getNpcId() == 35062)
			{
				activeChar.getActingPlayer().sendMessage("You cannot heal siege flags!");
				continue;
			}
		
			// Player holding a cursed weapon can't be healed and can't heal
			if (target != activeChar)
			{
				if (target instanceof L2PcInstance && ((L2PcInstance) target).isCursedWeaponEquiped())
					continue;
				else if (player != null && player.isCursedWeaponEquiped())
					continue;
			}
			
			double hp = skill.getPower();
			
			if (skill.getSkillType() == SkillType.HEAL_PERCENT)
			{
				hp = target.getMaxHp() * hp / 100.0;
			}
			else
			{
				if (bss)
				{
					hp *= 1.5;
				}
				else if (sps)
				{
					hp *= 1.3;
				}
			}
			
			if (skill.getSkillType() == SkillType.HEAL_STATIC)
				hp = skill.getPower();
			else if (skill.getSkillType() != SkillType.HEAL_PERCENT)
				hp *= target.calcStat(Stats.HEAL_EFFECTIVNESS, 100, null, null) / 100;
			
			target.setCurrentHp(hp + target.getCurrentHp());
			target.setLastHealAmount((int) hp);
			StatusUpdate su = new StatusUpdate(target.getObjectId());
			su.addAttribute(StatusUpdate.CUR_HP, (int) target.getCurrentHp());
			target.sendPacket(su);
			su = null;
			
			if (target instanceof L2PcInstance)
			{
				if (skill.getId() == 4051)
				{
					SystemMessage sm = new SystemMessage(SystemMessageId.REJUVENATING_HP);
					target.sendPacket(sm);
					sm = null;
				}
				else
				{
					if (activeChar instanceof L2PcInstance && activeChar != target)
					{
						SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_RESTORED_BY_S1);
						sm.addString(activeChar.getName());
						sm.addNumber((int) hp);
						target.sendPacket(sm);
						sm = null;
					}
					else
					{
						SystemMessage sm = new SystemMessage(SystemMessageId.S1_HP_RESTORED);
						sm.addNumber((int) hp);
						target.sendPacket(sm);
						sm = null;
					}
				}
			}
			target = null;
		}
	}
	
	@Override
	public SkillType[] getSkillIds()
	{
		return SKILL_IDS;
	}
}

 

  • 0
Posted
2 hours ago, l2fire said:

// We should not heal walls and door

if (target instanceof L2DoorInstance)

   continue;

What help you need.. You have there Door check example, just do the same but use L2RaidBossInstance..

  • 0
Posted (edited)

You can disable it from Heal & HealPercent.java, you will be able to use the heal skill, but without HP result on bosses, door, etc.

As I understand, you don't want even the effect from heal on npcs/doors etc. So, L2jfrozen have already config for bosses(raid/grand). Open L2Character.java and search for L2RaidBossInstance.

Just put in there target instanceof L2MonsterInstance || target instanceof L2NpcInstance || target instanceof L2DoorInstance

 

So, the players will be not able to use the skill type heal/heal percent.

 

If this won't work.. Then, as Sweets said, on heal and healpercent.java you have the example for L2DoorInstance, do the same for bosses and monsters.

Edited by 'Baggos'
  • 0
Posted
7 hours ago, SweeTs said:

What help you need.. You have there Door check example, just do the same but use L2RaidBossInstance..

I said fixed this. Players cant heal npc , doors any any . But when player try to heal another player ingame or self GS console shows 

warn no skill found with id 1218 and level 33 !!
  • 0
Posted

If you want to completely block the skill usage, put the check in RequestMagicSkillUse.

About error if that happened after your edit, simply revert it, you did something wrong. Also, you should post what and where did you add/edit. 

  • 0
Posted (edited)
8 hours ago, l2fire said:

I said fixed this. Players cant heal npc , doors any any . But when player try to heal another player ingame or self GS console shows 


warn no skill found with id 1218 and level 33 !!

Read my quote.. You have 3 Options to block the heal:

  1. RequestMagicSkillUse | In check for Ctrl button, you can block the skill type.
  2. L2Character.java | Search for L2RaidBossInstance and you will understand what you have to do.
  3. Heal/HealPercent.java | Easy way to block the skill type, but players can cast the heal on mobs/doors(without any HP result ofc).

For me, work on already check in L2Character.java file.

 

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


  • Posts

    • Yes, I have no problem going that route either. I've already done business with a couple of people and always paid. Thank you for your concern and for protecting the community from scammers. cheers. K
    • For many Elden Ring players, especially those short on time or seeking a specific build, buying items online has become a practical and time-saving solution. However, as someone who’s made that choice multiple times, I know firsthand that not all sellers are legitimate—and the risk of losing your money, or worse, getting banned, is real. Through trial and error, and countless hours in the community, I’ve discovered five proven methods to help players like you find authentic Elden Ring items to buy—safely, efficiently, and without risking your account. Here’s how to make sure you’re getting exactly what you need, the right way. 1. Choose Platforms That Guarantee Elden Ring Items Without Ban The number one concern when you buy Elden Ring items is avoiding account penalties. I've personally used platforms that explicitly promote delivery methods aligned with FromSoftware’s guidelines—like safe in-game drops, no cheats, and no modded content. Look for sellers or marketplaces that guarantee you’ll receive elden ring items without ban risk. If that promise isn’t clear or backed by community trust, move on. One time, I made the mistake of buying from an unverified Discord seller—within a week, I saw strange behavior on my account and had to delete my save file. Lesson learned: stick with professional services that know what they’re doing. 2. Rely on Established Marketplaces with Verified Reviews Always look for buyer feedback and real user ratings. Reputable platforms will have a track record of successful transactions and transparent customer experiences. I tend to avoid any site or seller that hides feedback or has a generic, incomplete website. The platforms I trust most let users post detailed reviews and show proof of item delivery—usually with timestamps and screenshots. That added layer of transparency gave me peace of mind the first time I placed an order, and it’s been part of my decision-making ever since. 3. Start with a Small Order to Test Reliability If you’re uncertain, try a small purchase first. This was my approach when I first decided to buy Elden Ring items. I ordered just a few smithing stones to upgrade a secondary weapon and see how the process worked. The seller delivered in under 10 minutes, and the transaction went smoothly. That small step helped build trust, and I gradually scaled up future purchases for full armor sets and talismans. It’s the smartest way to gauge service quality without taking a big risk up front.  [url=https://www.u4gm.com/elden-ring-items][img]https://i.pinimg.com/736x/9d/7d/d4/9d7dd41fc381c64fe9b93e5c11584513.jpg [/img][/url]   4. Confirm Safe Delivery Methods (No Bots or Cheats) Authentic sellers will provide clear instructions on how the item delivery will happen—usually through password-protected multiplayer sessions where they drop items directly to your character. That’s how I’ve received every safe delivery so far. If a seller talks about instant “mailing,” bots, or strange back-end tools, that’s a red flag. Those methods are often tied to bans or corrupted saves. Look for sellers who mention manual delivery, cooperative drops, or private session coordination—these methods are the standard for getting elden ring items without ban issues. 5. Ask for Live Support or Communication Options Good sellers are responsive, offer live chat, or message confirmations. I once had a situation where I accidentally gave the wrong character name for delivery. Thanks to a quick reply from customer support, they corrected it instantly. If a seller isn’t responsive or has no support at all, that’s a sign they may disappear after you’ve paid. A platform with clear customer service builds trust and shows professionalism—especially helpful if you’re new to the process.   There’s nothing wrong with wanting to buy Elden Ring items to save time or explore new builds. I’ve done it several times, and when done correctly, it can genuinely enhance the game without ruining the experience. But your safety comes first. By following these five proven methods, you can make sure the items you receive are legitimate, safe, and won’t get your account flagged. Always prioritize platforms that clearly offer elden ring items without ban risk, and when in doubt—start small, ask questions, and trust your instincts. How to Earn Fast: Buy Elden Ring Items Safely – No Risk of Ban
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock