/* * 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 . */ 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("Pet Manager:
" + "You can rent a wyvern or strider for adena.
My prices:" + "" + "" + "" + "" + "" + "" + "
Ride
WyvernStrider
30 sec/1800 adena30 sec/900 adena
1 min/7200 adena1 min/3600 adena
10 min/720000 adena10 min/360000 adena
30 min/6480000 adena30 min/3240000 adena
" + ""); 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; } }