Fixed restoring experience gain prohibition.

This commit is contained in:
MobiusDevelopment 2020-01-13 21:03:30 +00:00
parent fa2f3d7646
commit de47fedd21
51 changed files with 544 additions and 272 deletions

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -193,6 +193,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -209,6 +211,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.holders.MovieHolder;
@ -13691,6 +13695,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -607,6 +607,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -210,6 +212,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13698,6 +13702,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -195,6 +195,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -211,6 +213,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13701,6 +13705,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -210,6 +212,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13660,6 +13664,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -210,6 +212,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13646,6 +13650,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -210,6 +212,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13649,6 +13653,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -210,6 +212,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13655,6 +13659,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -195,6 +195,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -211,6 +213,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13611,6 +13615,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -613,6 +613,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.updateSymbolSealSkills();
player.broadcastUserInfo();

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.playable.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getActiveChar()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
public TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && (playable.getActingPlayer().isDead()))
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -188,6 +188,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.entity.TvTEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.playable.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaRemove;
@ -200,6 +202,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerProfes
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fish;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder;
@ -14441,4 +14445,23 @@ public class PlayerInstance extends Playable
vars.set(GAME_POINTS_VAR, Math.max(points, 0));
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
}

View File

@ -617,6 +617,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
// Prevent relogin in game gfx.
player.sendPacket(new ValidateLocation(player));

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.playable.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getActiveChar()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
public TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && (playable.getActingPlayer().isDead()))
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -192,6 +192,8 @@ import org.l2jmobius.gameserver.model.entity.NevitSystem;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.entity.TvTEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.playable.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaRemove;
@ -204,6 +206,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerProfes
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fish;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder;
@ -14536,4 +14540,23 @@ public class PlayerInstance extends Playable
vars.set(GAME_POINTS_VAR, Math.max(points, 0));
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
}

View File

@ -615,6 +615,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
// Prevent relogin in game gfx.
player.sendPacket(new ValidateLocation(player));

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -210,6 +212,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13540,6 +13544,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -596,6 +596,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -210,6 +212,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13547,6 +13551,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -596,6 +596,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -210,6 +212,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13532,6 +13536,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -598,6 +598,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -197,6 +197,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -213,6 +215,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder;
@ -13574,6 +13578,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -598,6 +598,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -197,6 +197,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -213,6 +215,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder;
@ -13574,6 +13578,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -598,6 +598,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -198,6 +198,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -214,6 +216,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder;
@ -13464,6 +13468,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -599,6 +599,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))

View File

@ -17,12 +17,7 @@
package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/**
* @author xban1x
@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (!player.getVariables().getBoolean("EXPOFF", false))
{
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
player.disableExpGain();
player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled.");
}
@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
player.enableExpGain();
player.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled.");
}
@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true;
}
private TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && playable.getActingPlayer().isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override
public String[] getVoicedCommandList()
{

View File

@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@ -210,6 +212,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
@ -13556,6 +13560,25 @@ public class PlayerInstance extends Playable
vars.storeMe();
}
private TerminateReturn onExperienceReceived()
{
if (isDead())
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
public void disableExpGain()
{
addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
}
public void enableExpGain()
{
removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
}
/**
* Gets the last commission infos.
* @return the last commission infos

View File

@ -595,6 +595,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false);
}
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))