Jump to content

Question

Posted (edited)

Been wondering if there is a way to make arena/pvp zone check for clan/ally members.

Meaning that I want to make it so you need ctrl to hit clan/ally members in arena/pvp zone because right now you can hit em straight away.

If there is something you can share with me would be grateful.

 

Or just a simple way to make a flag zone keep pvp flag because u simply unflag after u hit somebody inside it.

Using acis latest rev :thankyou:

Edited by whatisup

3 answers to this question

Recommended Posts

  • 0
Posted

updatePvpStatus, add your zone check and return, so it won't flag anew / won't be added to the task.

 

Matter of moving clan/ally check before the zone. Open Player.java and search for isCtrlPressed, check and understand the code and then do appropriate moves.

  • 0
Posted (edited)

So it works like this.

But when I remove the pvpzone it stops working (people unflag when they hit inside the zone).

And I can't seem to make it work.

 

I don't want it to be pvpzone because of the hit clan without ctrl.

It's the one or the other pretty much.

 

package net.sf.l2j.gameserver.model.zone.type;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.enums.ZoneId;
import net.sf.l2j.gameserver.model.actor.Creature;
import net.sf.l2j.gameserver.model.actor.Player;
import net.sf.l2j.gameserver.model.zone.ZoneType;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.taskmanager.PvpFlagTaskManager;

/**
 * A zone extending {@link ZoneType}, used for jail behavior. It is impossible to summon friends and use shops inside it.
 */
public class ChaoticZone extends ZoneType
{
	public ChaoticZone(int id)
	{
		super(id);
	}
	
	@Override
	protected void onEnter(Creature character)
	{
		if (character instanceof Player)
		{
			character.setInsideZone(ZoneId.CHAOTICZONE, true);
			character.setInsideZone(ZoneId.PVP, true);
			((Player) character).sendPacket(SystemMessageId.ENTERED_COMBAT_ZONE);
			
			final Player activeChar = (Player) character;
		
		// Set pvp flag
		if (activeChar.getPvpFlag() == 0)
			activeChar.updatePvPFlag(1);
		}
		return;
	}
	
	@Override
	protected void onExit(Creature character)
	{
		if (character instanceof Player)
		{
			character.setInsideZone(ZoneId.CHAOTICZONE, false);
			character.setInsideZone(ZoneId.PVP, false);
			
			final Player activeChar = (Player) character;
			((Player) character).sendPacket(SystemMessageId.LEFT_COMBAT_ZONE);
			activeChar.exitOnNoLandingZone();
			
			PvpFlagTaskManager.getInstance().add(activeChar, Config.PVP_PVP_TIME);
			
			// Set pvp flag
			if (activeChar.getPvpFlag() == 0)
				activeChar.updatePvPFlag(1);
		}
		return;
	}
}

 

Thank you for your time.

Edited by whatisup
  • 0
Posted

I already told you what to do, there are 2 methods in Player, updatePvpStatus.

 

The pvp check logic, onEnter, is wrong, as if you enter flagged, you get unflag after a while.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...