Перейти к содержанию
Авторизация  
MrSunrise1992

Ошибка с Vip акис

Рекомендуемые сообщения

Всем Привет!

Добавил систему Вип(премиум) через админку даю прем без проблем..

 

Проблема в том что когда хочу купить прем через нпс гс кричит ошибку

Bad RequestBypassToServer:
net.sf.l2j.gameserver.model.actor.instance.L2VipManagerInstance cannot be cast
 to net.sf.l2j.gameserver.model.actor.instance.L2PcInstance

вот VipManager

package net.sf.l2j.gameserver.model.actor.instance;

import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.StringTokenizer;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2Object;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.engine.VIPEngine;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
import net.sf.l2j.commons.lang.StringUtil;

/**
 *
 * @author Jackass/Ted/fernandopm
 *
 */

public class L2VipManagerInstance extends L2NpcInstance
{

	public L2VipManagerInstance(int objectId, NpcTemplate template)
	{
		super(objectId, template);
	}

	@Override
	public String getHtmlPath(int npcId, int val)
	{
		return "data/html/vip/vipmanager.htm";
	}

	@Override
	public void showChatWindow(L2PcInstance player)
	{
		if (!Config.ENABLE_VIP_NPC)
		{
			showChatWindow(player, "data/html/vip/npcisdisabled.htm");
			return;
		}

		if (player.isGM())
			showChatWindow(player, "data/html/vip/adminmanage.htm");
		else
			showChatWindow(player, "data/html/vip/vipmanager.htm");
	}

	@Override
	public void onBypassFeedback(L2PcInstance player, String command)
	{
		StringTokenizer st = new StringTokenizer(command);
		String actualCommand = st.nextToken();

		if (actualCommand.equalsIgnoreCase("getVip"))
		{
			NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());

			if (!VIPEngine.getInstance().isVip(player))
			{
				if (player.getInventory().hasAtLeastOneItem(Config.VIP_NPC_ITEM))
				{
					addVips(player);
					player.destroyItem("_vip", Config.VIP_NPC_ITEM, 1, player, true);
					html.setFile("data/html/vip/vipmanager.htm");
					player.sendPacket(html);
				}
				else
				{
					html.setFile("data/html/vip/noenoughitems.htm");
					html.replace("%objectId%", String.valueOf(getObjectId()));
					player.sendPacket(html);
				}
			}
			else
			{
				html.setFile("data/html/vip/alreadyvip.htm");
				html.replace("%objectId%", String.valueOf(getObjectId()));
				player.sendPacket(html);
			}
		}
		else if (actualCommand.equalsIgnoreCase("checkVipTime"))
		{
			NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());

			if (VIPEngine.getInstance().isVip(player))
			{
				html.setFile("data/html/vip/checktime.htm");

				html.replace("%acquireDate%", convertToDate(VIPEngine.getInstance().getVipTime(player)));
				html.replace("%endDate%", convertToDate(VIPEngine.getInstance().getVipTime(player)) + Config.VIP_LIFE_TIME);
			}
			else
				html.setFile("data/html/vip/noenoughitems.htm");

			player.sendPacket(html);
		}
		else if (actualCommand.equalsIgnoreCase("cleantask"))
		{
			if (player.isGM())
				VIPEngine.getInstance().vipCleanUp();
			else
				player.sendMessage("You can't access this function.");
		}
		else if (actualCommand.equalsIgnoreCase("checklist"))
		{
			showAllVips(player);
		}

		else
			super.onBypassFeedback(player, actualCommand);

	}

	private static String convertToDate(long timeInMillis)
	{
		Date time = new Date(timeInMillis);
		SimpleDateFormat format = new SimpleDateFormat("MMM dd,yyyy HH:mm");

		return format.format(time);
	}

	/**
	 * Shows the html with a list of vips with or without timers
	 */
	private static void showAllVips(L2PcInstance activeChar)
	{
		Collection<L2PcInstance> players = L2World.getInstance().getPlayers();
		Collection<Integer> allVips = VIPEngine.getInstance().getAllVips();

		NpcHtmlMessage html = new NpcHtmlMessage(0);
		html.setFile("data/html/vip/viplist.htm");

		if (allVips.isEmpty())
		{
			html.replace("%users%", "No vip users found");
			html.replace("%totalvips%", "0");
			activeChar.sendPacket(html);
			return;
		}

		final StringBuilder reply = new StringBuilder(500 + allVips.size() * 200);

		String name, time, finishTime;

		for (L2PcInstance vips : players)
		{
			long vipTime = VIPEngine.getInstance().getVipTime(vips);

			if (allVips.contains(vips.getObjectId()))
			{
				name = vips.getName();
				Date timeDate = new Date(vipTime);
				Date finishDate = new Date(vipTime + Config.VIP_LIFE_TIME);
				SimpleDateFormat dateFormat = new SimpleDateFormat("MMM dd,yyyy HH:mm");
				time = dateFormat.format(timeDate);
				finishTime = dateFormat.format(finishDate);

				StringUtil.append(reply, "<tr><td>" + "Username: " +name+" Vip Start time: "+time+ " Finish time: " + finishTime + "</td></tr>");
			}
		}

		html.replace("%users%", reply.toString());
		html.replace("%totalvips%", String.valueOf(allVips.size()));
		activeChar.sendPacket(html);
	}

	private static void addVips(L2PcInstance activeChar)
	{
		String text;
		L2Object object = activeChar.getTarget();
		L2PcInstance target = (L2PcInstance) object;

		if (target == null)
			activeChar.sendMessage("Usage: //setvip and target someone.");

		if (VIPEngine.getInstance().isVip(target))
		{
			text = "The user is already a vip player";
			return;
		}


		VIPEngine.getInstance().addVip(target);
		if (Config.VIP_NAME_COLOR_CONFIG)
		{
			Integer colorName = Integer.decode("0x" + Config.VIPS_NAME_COLOR);
			Integer colorTitle = Integer.decode("0x" + Config.VIPS_TITLE_COLOR);
			activeChar.getAppearance().setNameColor(colorName);
			activeChar.getAppearance().setTitleColor(colorTitle);
		}

		if (Config.VIPS_SKILLS_CONFIG)
		{
			for (int skillid : Config.VIP_SKILLS.keySet())
			{
				L2Skill skill = SkillTable.getInstance().getInfo(skillid, Config.VIP_SKILLS.get(skillid));
				activeChar.addSkill(skill, false);
			}
		}

		if (Config.VIPS_HERO_AURA)
			activeChar.broadcastUserInfo();

		text = "The user " + activeChar.getName() + " has been added to vip list";

		activeChar.sendMessage(text);
	}
}

нтмл файл

<html>
<title>Vip Manager</title>
<body>
<center>
<img src="L2UI_CH3.herotower_deco" width=256 height=32>
</center>
<center>
<img src="L2UI_CH3.herotower_deco" width=256 height=32>
<button value="Add vip" action="bypass -h npc_%objectId%_getVip" width=94 height=21 fore="L2UI_ch3.BigButton" back="L2UI_ch3.BigButton_down">
<button value="Check my vip status" action="bypass -h npc_%objectId%_checkVipTime" width=94 height=21 fore="L2UI_ch3.BigButton" back="L2UI_ch3.BigButton_down">
<img src="L2UI_CH3.herotower_deco" width=256 height=32>
</center>
</body>
</html>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ругается, потому что в таргете у тебя нпц, а код пытается использовать твой таргет как игрока (L2PcInstance)

L2Object object = activeChar.getTarget();
L2PcInstance target = (L2PcInstance) object;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Ругается, потому что в таргете у тебя нпц, а код пытается использовать твой таргет как игрока (L2PcInstance)

L2Object object = activeChar.getTarget();
L2PcInstance target = (L2PcInstance) object;

а как сделать правильно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а как сделать правильно?

private static void addVips(L2PcInstance activeChar)
	{
		VIPEngine.getInstance().addVip(activeChar);
		if (Config.VIP_NAME_COLOR_CONFIG)
		{
			Integer colorName = Integer.decode("0x" + Config.VIPS_NAME_COLOR);
			Integer colorTitle = Integer.decode("0x" + Config.VIPS_TITLE_COLOR);
			activeChar.getAppearance().setNameColor(colorName);
			activeChar.getAppearance().setTitleColor(colorTitle);
		}

		if (Config.VIPS_SKILLS_CONFIG)
		{
			for (int skillid : Config.VIP_SKILLS.keySet())
			{
				L2Skill skill = SkillTable.getInstance().getInfo(skillid, Config.VIP_SKILLS.get(skillid));
				activeChar.addSkill(skill, false);
			}
		}

		if (Config.VIPS_HERO_AURA)
			activeChar.broadcastUserInfo();

		activeChar.sendMessage("Вы получили VIP-статус!");
	}
Изменено пользователем Calyps0
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
private static void addVips(L2PcInstance activeChar)
	{
		VIPEngine.getInstance().addVip(activeChar);
		if (Config.VIP_NAME_COLOR_CONFIG)
		{
			Integer colorName = Integer.decode("0x" + Config.VIPS_NAME_COLOR);
			Integer colorTitle = Integer.decode("0x" + Config.VIPS_TITLE_COLOR);
			activeChar.getAppearance().setNameColor(colorName);
			activeChar.getAppearance().setTitleColor(colorTitle);
		}

		if (Config.VIPS_SKILLS_CONFIG)
		{
			for (int skillid : Config.VIP_SKILLS.keySet())
			{
				L2Skill skill = SkillTable.getInstance().getInfo(skillid, Config.VIP_SKILLS.get(skillid));
				activeChar.addSkill(skill, false);
			}
		}

		if (Config.VIPS_HERO_AURA)
			activeChar.broadcastUserInfo();

		activeChar.sendMessage("Вы получили VIP-статус!");
	}

работает, статус получил но не удаляет итем и не добавляет в базу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

работает, статус получил но не удаляет итем и не добавляет в базу

все поправил, спасибо все работает!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...