diff --git a/src/main/java/com/l2jserver/datapack/custom/service/base/CustomServiceScript.java b/src/main/java/com/l2jserver/datapack/custom/service/base/CustomServiceScript.java
index 2c9d6d27ad99035f9e6f3347ec3f8fe6382adcb1..bdc0d38333e5a339865c1fb157e6c3ac936da1fa 100644
--- a/src/main/java/com/l2jserver/datapack/custom/service/base/CustomServiceScript.java
+++ b/src/main/java/com/l2jserver/datapack/custom/service/base/CustomServiceScript.java
@@ -90,18 +90,17 @@ public abstract class CustomServiceScript extends AbstractNpcAI {
 		return HTMLTemplateParser.fromCache(htmlPath, player, placeholders, IncludeFunc.INSTANCE, IfFunc.INSTANCE, ForeachFunc.INSTANCE, ExistsFunc.INSTANCE, IfChildrenFunc.INSTANCE, ChildrenCountFunc.INSTANCE);
 	}
 	
-	protected final boolean isInsideAnyZoneOf(L2Character character, ZoneId first, ZoneId... more) {
-		if (character.isInsideZone(first)) {
-			return true;
+	protected final boolean isInsideAnyZoneOf(L2Character character, ZoneId... zones) {
+		if (zones == null) {
+			return false;
 		}
 		
-		if (more != null) {
-			for (ZoneId zone : more) {
-				if (character.isInsideZone(zone)) {
-					return true;
-				}
+		for (ZoneId zone : zones) {
+			if (character.isInsideZone(zone)) {
+				return true;
 			}
 		}
+		
 		return false;
 	}
 	
@@ -150,20 +149,6 @@ public abstract class CustomServiceScript extends AbstractNpcAI {
 	}
 	
 	public final void executeCommand(L2PcInstance player, L2Npc npc, String commandString) {
-		if (isInsideAnyZoneOf(player, ZoneId.PVP, ZoneId.SIEGE, ZoneId.WATER, ZoneId.JAIL, ZoneId.DANGER_AREA)) {
-			player.sendMessage("The service cannot be used here.");
-			return;
-		} else if ((player.getEventStatus() != null) || (player.getBlockCheckerArena() != -1) || player.isOnEvent() || player.isInOlympiadMode()) {
-			player.sendMessage("The service cannot be used in events.");
-			return;
-		} else if (player.isInDuel() || (player.getPvpFlag() == 1)) {
-			player.sendMessage("The service cannot be used in duel or pvp.");
-			return;
-		} else if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player)) {
-			player.sendMessage("The service cannot be used while in combat.");
-			return;
-		}
-		
 		if ((commandString == null) || commandString.isEmpty()) {
 			commandString = "html main";
 		}
diff --git a/src/main/java/com/l2jserver/datapack/custom/service/buffer/BufferService.java b/src/main/java/com/l2jserver/datapack/custom/service/buffer/BufferService.java
index 14faec5607a665105e484a72fd71cdba0b10f0b2..d9fbafacafbceb6c3922641a84f5b9c1eaaef4f4 100644
--- a/src/main/java/com/l2jserver/datapack/custom/service/buffer/BufferService.java
+++ b/src/main/java/com/l2jserver/datapack/custom/service/buffer/BufferService.java
@@ -40,10 +40,16 @@ import com.l2jserver.gameserver.config.Configuration;
 import com.l2jserver.gameserver.handler.BypassHandler;
 import com.l2jserver.gameserver.handler.ItemHandler;
 import com.l2jserver.gameserver.handler.VoicedCommandHandler;
+import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.L2Playable;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.entity.TvTEvent;
 import com.l2jserver.gameserver.model.skills.BuffInfo;
+import com.l2jserver.gameserver.model.zone.ZoneId;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
+import com.l2jserver.gameserver.taskmanager.AttackStanceTaskManager;
 
 /**
  * Buffer Service.
@@ -483,7 +489,7 @@ public final class BufferService extends CustomServiceScript {
 	public boolean executeHtmlCommand(L2PcInstance player, L2Npc npc, CommandProcessor command) {
 		AbstractBuffer buffer = BufferServiceRepository.getInstance().getConfig().determineBuffer(npc, player);
 		if (buffer == null) {
-			player.sendMessage("No authorization!");
+			player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_NOT_FOUND).addString("Buffer"));
 			return false;
 		}
 		
@@ -509,9 +515,37 @@ public final class BufferService extends CustomServiceScript {
 	
 	@Override
 	public boolean executeActionCommand(L2PcInstance player, L2Npc npc, CommandProcessor command) {
-		AbstractBuffer buffer = BufferServiceRepository.getInstance().getConfig().determineBuffer(npc, player);
-		if (buffer == null) {
-			player.sendMessage("No authorization!");
+		SystemMessage abortSysMsg = null;
+		AbstractBuffer buffer = null;
+		
+		if (isInsideAnyZoneOf(player, Configuration.bufferService().getForbidInZones())) {
+			abortSysMsg = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
+			abortSysMsg.addString("Buffer");
+		} else if (Configuration.bufferService().getForbidInEvents() && ((player.getEventStatus() != null) || (player.getBlockCheckerArena() != -1) || player.isOnEvent() || player.isInOlympiadMode() || TvTEvent.isPlayerParticipant(player.getObjectId()))) {
+			abortSysMsg = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
+			abortSysMsg.addString("Buffer");
+		} else if (Configuration.bufferService().getForbidInDuell() && player.isInDuel()) {
+			abortSysMsg = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
+			abortSysMsg.addString("Buffer");
+		} else if (Configuration.bufferService().getForbidInFight() && AttackStanceTaskManager.getInstance().hasAttackStanceTask(player)) {
+			abortSysMsg = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
+			abortSysMsg.addString("Buffer");
+		} else if (Configuration.bufferService().getForbidInPvp() && (player.getPvpFlag() == 1)) {
+			abortSysMsg = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
+			abortSysMsg.addString("Buffer");
+		} else if (Configuration.bufferService().getForbidForChaoticPlayers() && player.getKarma() > 0) {
+			abortSysMsg = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
+			abortSysMsg.addString("Buffer");
+		} else {
+			buffer = BufferServiceRepository.getInstance().getConfig().determineBuffer(npc, player);
+			if (buffer == null) {
+				abortSysMsg = SystemMessage.getSystemMessage(SystemMessageId.S1_NOT_FOUND);
+				abortSysMsg.addString("Buffer");
+			}
+		}
+		
+		if (abortSysMsg != null) {
+			player.sendPacket(abortSysMsg);
 			return false;
 		}