Преглед изворни кода

Unhardcode Manor Manager bypasses to DP. Update required.

_DS_ пре 15 година
родитељ
комит
e01feba34b

+ 11 - 116
L2_GameServer/java/com/l2jserver/gameserver/model/actor/instance/L2ManorManagerInstance.java

@@ -14,20 +14,7 @@
  */
 package com.l2jserver.gameserver.model.actor.instance;
 
-import java.util.StringTokenizer;
-
-import com.l2jserver.gameserver.instancemanager.CastleManager;
 import com.l2jserver.gameserver.instancemanager.CastleManorManager;
-import com.l2jserver.gameserver.network.SystemMessageId;
-import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
-import com.l2jserver.gameserver.network.serverpackets.BuyListSeed;
-import com.l2jserver.gameserver.network.serverpackets.ExShowCropInfo;
-import com.l2jserver.gameserver.network.serverpackets.ExShowManorDefaultInfo;
-import com.l2jserver.gameserver.network.serverpackets.ExShowProcureCropDetail;
-import com.l2jserver.gameserver.network.serverpackets.ExShowSeedInfo;
-import com.l2jserver.gameserver.network.serverpackets.ExShowSellCropList;
-import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
-import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
 
 public class L2ManorManagerInstance extends L2MerchantInstance
@@ -38,115 +25,23 @@ public class L2ManorManagerInstance extends L2MerchantInstance
 		setInstanceType(InstanceType.L2ManorManagerInstance);
 	}
 
-	@Override
-	public void onBypassFeedback(L2PcInstance player, String command) 
-	{
-		// BypassValidation Exploit plug.
-		if (player.getLastFolkNPC() == null || player.getLastFolkNPC().getObjectId() != getObjectId())
-			return;
-
-		if (command.startsWith("manor_menu_select")) 
-		{
-			if (CastleManorManager.getInstance().isUnderMaintenance()) 
-			{
-				player.sendPacket(ActionFailed.STATIC_PACKET);
-				player.sendPacket(new SystemMessage(SystemMessageId.THE_MANOR_SYSTEM_IS_CURRENTLY_UNDER_MAINTENANCE));
-				return;
-			}
-
-			String params = command.substring(command.indexOf("?")+1);
-			StringTokenizer st = new StringTokenizer(params, "&");
-			int ask = Integer.parseInt(st.nextToken().split("=")[1]);
-			int state = Integer.parseInt(st.nextToken().split("=")[1]);
-			int time = Integer.parseInt(st.nextToken().split("=")[1]);
-
-			int castleId;
-			if (state == -1) // info for current manor
-				castleId = getCastle().getCastleId();
-			else 			 // info for requested manor
-				castleId = state;
-
-			switch (ask)
-			{
-				case 1: // Seed purchase
-					if (castleId != getCastle().getCastleId())
-						player.sendPacket(new SystemMessage(SystemMessageId.HERE_YOU_CAN_BUY_ONLY_SEEDS_OF_S1_MANOR));
-					else
-						player.sendPacket(new BuyListSeed(player.getAdena(), castleId, getCastle().getSeedProduction(CastleManorManager.PERIOD_CURRENT)));
-					break;
-				case 2: // Crop sales
-					player.sendPacket(new ExShowSellCropList(player, castleId, getCastle().getCropProcure(CastleManorManager.PERIOD_CURRENT)));
-					break;
-				case 3: // Current seeds (Manor info)
-					if (time == 1 && !CastleManager.getInstance().getCastleById(castleId).isNextPeriodApproved())
-						player.sendPacket(new ExShowSeedInfo(castleId, null));
-					else
-						player.sendPacket(new ExShowSeedInfo(castleId, CastleManager.getInstance().getCastleById(castleId).getSeedProduction(time)));
-					break;
-				case 4: // Current crops (Manor info)
-					if (time == 1 && !CastleManager.getInstance().getCastleById(castleId).isNextPeriodApproved())
-						player.sendPacket(new ExShowCropInfo(castleId, null));
-					else
-						player.sendPacket(new ExShowCropInfo(castleId, CastleManager.getInstance().getCastleById(castleId).getCropProcure(time)));
-					break;
-				case 5: // Basic info (Manor info)
-					player.sendPacket(new ExShowManorDefaultInfo());
-					break;
-				case 6: // Buy harvester
-					showBuyWindow(player, Integer.parseInt("3" + getNpcId()));
-					break;
-				case 9: // Edit sales (Crop sales)
-					player.sendPacket(new ExShowProcureCropDetail(state));
-					break;
-			}
-		}
-		else if (command.startsWith("help"))
-		{
-			StringTokenizer st = new StringTokenizer(command, " ");
-			st.nextToken(); // discard first
-			String filename = "manor_client_help00" + st.nextToken() + ".htm";
-			showChatWindow(player, filename);
-		}
-		else
-			super.onBypassFeedback(player, command);
-	}
-
-	public String getHtmlPath ()
-	{
-		return "data/html/manormanager/";
-	}
-
-	@Override
-	public String getHtmlPath(int npcId, int val)
-	{
-		return "data/html/manormanager/manager.htm";
-	}
-	
 	@Override
 	public void showChatWindow(L2PcInstance player)
 	{
 		if (CastleManorManager.getInstance().isDisabled())
 		{
-			NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
-			html.setFile(player.getHtmlPrefix(), "data/html/npcdefault.htm");
-			html.replace("%objectId%", String.valueOf(getObjectId()));
-			html.replace("%npcname%", getName());
-			player.sendPacket(html);
+			showChatWindow(player, "data/html/npcdefault.htm");
+			return;
 		}
-		else if (!player.isGM() && getCastle() != null && getCastle().getCastleId() > 0 && player.getClan() != null && getCastle().getOwnerId() == player.getClanId() && player.isClanLeader())
-			showChatWindow(player, "manager-lord.htm");
-		else
-			showChatWindow(player, "manager.htm");
-	}
 
-	@Override
-	public void showChatWindow(L2PcInstance player, String filename)
-	{
-		NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
-		html.setFile(player.getHtmlPrefix(), getHtmlPath() + filename);
-		html.replace("%objectId%", String.valueOf(getObjectId()));
-		html.replace("%npcId%", String.valueOf(getNpcId()));
-		html.replace("%npcname%", getName());
-		player.sendPacket(html);
+		if (!player.isGM()
+				&& getCastle() != null
+				&& getCastle().getCastleId() > 0
+				&& player.getClan() != null
+				&& getCastle().getOwnerId() == player.getClanId()
+				&& player.isClanLeader())
+			showChatWindow(player, "data/html/manormanager/manager-lord.htm");
+		else
+			showChatWindow(player, "data/html/manormanager/manager.htm");
 	}
 }

+ 6 - 10
L2_GameServer/java/com/l2jserver/gameserver/network/clientpackets/RequestBypassToServer.java

@@ -23,15 +23,15 @@ import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.communitybbs.CommunityBoard;
 import com.l2jserver.gameserver.datatables.AdminCommandAccessRights;
 import com.l2jserver.gameserver.handler.AdminCommandHandler;
+import com.l2jserver.gameserver.handler.BypassHandler;
 import com.l2jserver.gameserver.handler.IAdminCommandHandler;
+import com.l2jserver.gameserver.handler.IBypassHandler;
 import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
 import com.l2jserver.gameserver.handler.VoicedCommandHandler;
 import com.l2jserver.gameserver.model.L2CharPosition;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2CastleChamberlainInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2ManorManagerInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2MerchantSummonInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.entity.Hero;
@@ -165,15 +165,11 @@ public final class RequestBypassToServer extends L2GameClientPacket
 				catch (NumberFormatException nfe) {}
 			}
 			// Navigate through Manor windows
-			else if (_command.startsWith("manor_menu_select?"))
+			else if (_command.startsWith("manor_menu_select"))
 			{
-				/*if(!activeChar.validateBypass(_command))
-					return;*/
-				
-				L2Object object = activeChar.getLastFolkNPC();
-				if ((object instanceof L2ManorManagerInstance || object instanceof L2CastleChamberlainInstance) 
-						&& activeChar.isInsideRadius(object, L2Npc.INTERACTION_DISTANCE, false, false))
-					((L2Npc) object).onBypassFeedback(activeChar, _command);
+				final IBypassHandler manor = BypassHandler.getInstance().getBypassHandler("manor_menu_select");
+				if (manor != null)
+					manor.useBypass(_command, activeChar, null);
 			}
 			else if (_command.startsWith("bbs_"))
 			{