147 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (C) 2004-2015 L2J DataPack
 | 
						|
 * 
 | 
						|
 * This file is part of L2J DataPack.
 | 
						|
 * 
 | 
						|
 * L2J DataPack 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 3 of the License, or
 | 
						|
 * (at your option) any later version.
 | 
						|
 * 
 | 
						|
 * L2J DataPack 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, see <http://www.gnu.org/licenses/>.
 | 
						|
 */
 | 
						|
package handlers.bypasshandlers;
 | 
						|
 | 
						|
import java.util.StringTokenizer;
 | 
						|
 | 
						|
import com.l2jserver.Config;
 | 
						|
import com.l2jserver.gameserver.handler.IBypassHandler;
 | 
						|
import com.l2jserver.gameserver.model.actor.L2Character;
 | 
						|
import com.l2jserver.gameserver.model.actor.L2Npc;
 | 
						|
import com.l2jserver.gameserver.model.actor.instance.L2MerchantInstance;
 | 
						|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 | 
						|
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
 | 
						|
import com.l2jserver.gameserver.network.serverpackets.SetupGauge;
 | 
						|
 | 
						|
public class RentPet implements IBypassHandler
 | 
						|
{
 | 
						|
	private static final String[] COMMANDS =
 | 
						|
	{
 | 
						|
		"RentPet"
 | 
						|
	};
 | 
						|
	
 | 
						|
	@Override
 | 
						|
	public boolean useBypass(String command, L2PcInstance activeChar, L2Character target)
 | 
						|
	{
 | 
						|
		if (!(target instanceof L2MerchantInstance))
 | 
						|
		{
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
		
 | 
						|
		if (!Config.ALLOW_RENTPET)
 | 
						|
		{
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
		
 | 
						|
		if (!Config.LIST_PET_RENT_NPC.contains(target.getId()))
 | 
						|
		{
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
		
 | 
						|
		try
 | 
						|
		{
 | 
						|
			StringTokenizer st = new StringTokenizer(command, " ");
 | 
						|
			st.nextToken();
 | 
						|
			
 | 
						|
			if (st.countTokens() < 1)
 | 
						|
			{
 | 
						|
				final NpcHtmlMessage msg = new NpcHtmlMessage(((L2Npc) target).getObjectId());
 | 
						|
				msg.setHtml("<html><body>Pet Manager:<br>" + "You can rent a wyvern or strider for adena.<br>My prices:<br1>" + "<table border=0><tr><td>Ride</td></tr>" + "<tr><td>Wyvern</td><td>Strider</td></tr>" + "<tr><td><a action=\"bypass -h npc_%objectId%_RentPet 1\">30 sec/1800 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 11\">30 sec/900 adena</a></td></tr>" + "<tr><td><a action=\"bypass -h npc_%objectId%_RentPet 2\">1 min/7200 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 12\">1 min/3600 adena</a></td></tr>" + "<tr><td><a action=\"bypass -h npc_%objectId%_RentPet 3\">10 min/720000 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 13\">10 min/360000 adena</a></td></tr>" + "<tr><td><a action=\"bypass -h npc_%objectId%_RentPet 4\">30 min/6480000 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 14\">30 min/3240000 adena</a></td></tr>" + "</table>" + "</body></html>");
 | 
						|
				msg.replace("%objectId%", String.valueOf(((L2Npc) target).getObjectId()));
 | 
						|
				activeChar.sendPacket(msg);
 | 
						|
			}
 | 
						|
			else
 | 
						|
			{
 | 
						|
				tryRentPet(activeChar, Integer.parseInt(st.nextToken()));
 | 
						|
			}
 | 
						|
			
 | 
						|
			return true;
 | 
						|
		}
 | 
						|
		catch (Exception e)
 | 
						|
		{
 | 
						|
			_log.info("Exception in " + getClass().getSimpleName());
 | 
						|
		}
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
	
 | 
						|
	public static final void tryRentPet(L2PcInstance player, int val)
 | 
						|
	{
 | 
						|
		if ((player == null) || player.hasSummon() || player.isMounted() || player.isRentedPet() || player.isTransformed() || player.isCursedWeaponEquipped())
 | 
						|
		{
 | 
						|
			return;
 | 
						|
		}
 | 
						|
		if (!player.disarmWeapons())
 | 
						|
		{
 | 
						|
			return;
 | 
						|
		}
 | 
						|
		
 | 
						|
		int petId;
 | 
						|
		double price = 1;
 | 
						|
		int cost[] =
 | 
						|
		{
 | 
						|
			1800,
 | 
						|
			7200,
 | 
						|
			720000,
 | 
						|
			6480000
 | 
						|
		};
 | 
						|
		int ridetime[] =
 | 
						|
		{
 | 
						|
			30,
 | 
						|
			60,
 | 
						|
			600,
 | 
						|
			1800
 | 
						|
		};
 | 
						|
		
 | 
						|
		if (val > 10)
 | 
						|
		{
 | 
						|
			petId = 12526;
 | 
						|
			val -= 10;
 | 
						|
			price /= 2;
 | 
						|
		}
 | 
						|
		else
 | 
						|
		{
 | 
						|
			petId = 12621;
 | 
						|
		}
 | 
						|
		
 | 
						|
		if ((val < 1) || (val > 4))
 | 
						|
		{
 | 
						|
			return;
 | 
						|
		}
 | 
						|
		
 | 
						|
		price *= cost[val - 1];
 | 
						|
		int time = ridetime[val - 1];
 | 
						|
		
 | 
						|
		if (!player.reduceAdena("Rent", (long) price, player.getLastFolkNPC(), true))
 | 
						|
		{
 | 
						|
			return;
 | 
						|
		}
 | 
						|
		
 | 
						|
		player.mount(petId, 0, false);
 | 
						|
		SetupGauge sg = new SetupGauge(3, time * 1000);
 | 
						|
		player.sendPacket(sg);
 | 
						|
		player.startRentPet(time);
 | 
						|
	}
 | 
						|
	
 | 
						|
	@Override
 | 
						|
	public String[] getBypassList()
 | 
						|
	{
 | 
						|
		return COMMANDS;
 | 
						|
	}
 | 
						|
}
 |