Ir para conteúdo
  • Cadastre-se
  • 0

Limite de level em set Buff


sergiommjr

Pergunta

bom dia galera tudo certo bom estou configurando um server e nele tem um npc buff que ja veio na rev ele e configurado por um arquivo java que irei postar ai em baixo eu estou querendo fazer uma modificação dele porem como sei o minimo do minimo de java kkkk não consegui fazer a modificação

a modificação consite em fazer que apenas players com level inferior a 40 consiga usar o botao " SET BUFF" que no caso ele faz um buff altomatico mudando de acordo com a classe do player.

eu realmente tentei e tentei e não consegui devido ao meu baixo conhecimento de java e etc garanto que estou tentando aprender mais de momento não consegui fazer o que eu desejo entao se alguem puder ajudar eu ficaria grato

/*
 * This program 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.
 *
 * This program 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://l2jeternity.com/>.
 */
package services;

import static l2e.commons.util.Util.formatAdena;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import gnu.trove.list.array.TIntArrayList;
import l2e.gameserver.data.parser.SkillsParser;
import l2e.gameserver.database.DatabaseFactory;
import l2e.gameserver.instancemanager.QuestManager;
import l2e.gameserver.model.actor.Npc;
import l2e.gameserver.model.actor.Player;
import l2e.gameserver.model.actor.Summon;
import l2e.gameserver.model.actor.instance.CubicInstance;
import l2e.gameserver.model.actor.instance.PetInstance;
import l2e.gameserver.model.actor.instance.ServitorInstance;
import l2e.gameserver.model.actor.stat.PcStat;
import l2e.gameserver.model.actor.stat.SummonStat;
import l2e.gameserver.model.actor.status.PcStatus;
import l2e.gameserver.model.actor.status.SummonStatus;
import l2e.gameserver.model.olympiad.OlympiadManager;
import l2e.gameserver.model.quest.Quest;
import l2e.gameserver.model.quest.QuestState;
import l2e.gameserver.model.skills.Skill;
import l2e.gameserver.model.skills.SkillType;
import l2e.gameserver.network.SystemMessageId;
import l2e.gameserver.network.serverpackets.ActionFail;
import l2e.gameserver.network.serverpackets.NpcHtmlMessage;
import l2e.gameserver.network.serverpackets.SetSummonRemainTime;
import l2e.gameserver.network.serverpackets.SetupGauge;

public class PremiumBuffer extends Quest
{
	private static final boolean DEBUG = false;

	private static void print(Exception e)
	{
		_log.warning(">>>" + e.toString() + "<<<");
		if (DEBUG)
		{
			e.printStackTrace();
		}
	}

	private static final String QUEST_LOADING_INFO = "PremiumBuffer";
	private static final int NPC_ID = 65535;

	private static final String TITLE_NAME = "Shiela";
	private static final boolean SMART_WINDOW = true;
	private static final boolean ENABLE_VIP_BUFFER = false;
	private static final boolean ONLY_FOR_VIP = false;
	private static final boolean ENABLE_BUFF_SECTION = true;
	private static final boolean ENABLE_SCHEME_SYSTEM = true;
	private static final boolean ENABLE_HEAL = true;
	private static final boolean ENABLE_BUFFS = true;
	private static final boolean ENABLE_RESIST = true;
	private static final boolean ENABLE_SONGS = true;
	private static final boolean ENABLE_DANCES = true;
	private static final boolean ENABLE_CHANTS = true;
	private static final boolean ENABLE_OTHERS = false;
	private static final boolean ENABLE_SPECIAL = false;
	private static final boolean ENABLE_CUBIC = false;
	private static final boolean ENABLE_BUFF_REMOVE = true;
	private static final boolean ENABLE_BUFF_SET = true;
	private static final boolean BUFF_WITH_KARMA = false;
	private static final boolean FREE_BUFFS = false;
	private static final boolean TIME_OUT = true;
	private static final int TIME_OUT_TIME = 10;
	private static final int MIN_LEVEL = 5;
	private static final int BUFF_REMOVE_PRICE = 110000;
	private static final int HEAL_PRICE = 110000;
	private static final int BUFF_PRICE = 40000;
	private static final int RESIST_PRICE = 40000;
	private static final int SONG_PRICE = 40000;
	private static final int DANCE_PRICE = 40000;
	private static final int CHANT_PRICE = 15000;
	private static final int OTHERS_PRICE = 40000;
	private static final int SPECIAL_PRICE = 40000;
	private static final int CUBIC_PRICE = 40000;
	private static final int BUFF_SET_PRICE = 1500000;
	private static final int SCHEME_BUFF_PRICE = 6500000;
	private static final int SCHEMES_PER_PLAYER = 3;
	private static final int CONSUMABLE_ID = 57;
	private static final int MAX_SCHEME_BUFFS = 24;
	private static final int MAX_SCHEME_DANCES = 12;

	private static final String SET_FIGHTER = "Fighter";
	private static final String SET_MAGE = "Mage";
	private static final String SET_ALL = "All";
	private static final String SET_NONE = "None";

	private String rebuildMainHtml(QuestState st)
	{
		String MAIN_HTML_MESSAGE = "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32>";
		String MESSAGE = "";
		int td = 0;
		final String[] TRS =
		{
			"<tr><td height=25>",
			"</td>",
			"<td height=25>",
			"</td></tr>"
		};

		final String bottonA, bottonB, bottonC;
		if (st.getInt("Pet-On-Off") == 1)
		{
			bottonA = "Auto Buff Pet";
			bottonB = "Heal My Pet";
			bottonC = "Remove Pet Buffs";
			MAIN_HTML_MESSAGE += "<button value=\"NOW Pet Options\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " buffpet 0 0 0\" width=135 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		else
		{
			bottonA = "Auto Buff";
			bottonB = "Heal";
			bottonC = "Remove Buffs";
			MAIN_HTML_MESSAGE += "<button value=\"NOW Char Options\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " buffpet 1 0 0\" width=135 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}

		if (ENABLE_BUFF_SECTION)
		{
			if (ENABLE_BUFFS)
			{
				if (td > 2)
				{
					td = 0;
				}
				MESSAGE += TRS[td] + "<button value=\"Buffs I\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_buffs 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
				td += 2;
			}
			if (ENABLE_BUFFS)
			{
				if (td > 2)
				{
					td = 0;
				}
				MESSAGE += TRS[td] + "<button value=\"Buffs II\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_kamael 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
				td += 2;
			}
			if (ENABLE_RESIST)
			{
				if (td > 2)
				{
					td = 0;
				}
				MESSAGE += TRS[td] + "<button value=\"Buffs III\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_resists 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
				td += 2;
			}
			if (ENABLE_SONGS)
			{
				if (td > 2)
				{
					td = 0;
				}
				MESSAGE += TRS[td] + "<button value=\"Songs\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_songs 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
				td += 2;
			}
			if (ENABLE_DANCES)
			{
				if (td > 2)
				{
					td = 0;
				}
				MESSAGE += TRS[td] + "<button value=\"Dances\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_dances 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
				td += 2;
			}
			if (ENABLE_CHANTS)
			{
				if (td > 2)
				{
					td = 0;
				}
				MESSAGE += TRS[td] + "<button value=\"Chants\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_chants 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
				td += 2;
			}
			if (ENABLE_SPECIAL)
			{
				if (td > 2)
				{
					td = 0;
				}
				MESSAGE += TRS[td] + "<button value=\"Special\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_special 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
				td += 2;
			}
			if (ENABLE_OTHERS)
			{
				if (td > 2)
				{
					td = 0;
				}
				MESSAGE += TRS[td] + "<button value=\"Others\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_others 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
				td += 2;
			}
		}

		if (ENABLE_CUBIC)
		{
			if (td > 2)
			{
				td = 0;
			}
			MESSAGE += TRS[td] + "<button value=\"Cubics\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_cubic 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
			td += 2;
		}

		if (MESSAGE.length() > 0)
		{
			MAIN_HTML_MESSAGE += "<BR1><table width=100% border=0 cellspacing=0 cellpadding=1><tr>" + "<td align=center><font color=696969>Buffs:</font> <font color=FFD700> 40.000 </font></td><td align=right></td></tr></table>" + "<BR1><table cellspacing=0 cellpadding=0>" + MESSAGE + "</table>";
			MESSAGE = "";
			td = 0;
		}

		if (ENABLE_BUFF_SET)
		{
			if (td > 2)
			{
				td = 0;
			}
			MESSAGE += TRS[td] + "<button value=\"" + bottonA + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " castBuffSet 0 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
			td += 2;
		}

		if (ENABLE_HEAL)
		{
			if (td > 2)
			{
				td = 0;
			}
			MESSAGE += TRS[td] + "<button value=\"" + bottonB + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " heal 0 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
			td += 2;
		}

		if (ENABLE_BUFF_REMOVE)
		{
			if (td > 2)
			{
				td = 0;
			}
			MESSAGE += TRS[td] + "<button value=\"" + bottonC + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " removeBuffs 0 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
			td += 2;
		}

		if (MESSAGE.length() > 0)
		{
			MAIN_HTML_MESSAGE += "<BR1><BR><table width=100% border=0 cellspacing=0 cellpadding=1><tr>" + "<td align=center><font color=696969>Preset: </font><font color=FFD700>110.000</font></td><td align=right><font color=LEVEL>" + "</font></td></tr></table>" + "<BR1><table cellspacing=0 cellpadding=0>" + MESSAGE + "</table>";
			MESSAGE = "";
			td = 0;
		}

		if (ENABLE_SCHEME_SYSTEM)
		{
			MAIN_HTML_MESSAGE += generateScheme(st);
		}

		if (st.getPlayer().isGM())
		{
			MAIN_HTML_MESSAGE += "<br><button value=\"GM Manage Buffs\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect manage_buffs 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		MAIN_HTML_MESSAGE += "<br><font color=303030>" + TITLE_NAME + "</font>" + "</center></body></html>";
		return MAIN_HTML_MESSAGE;
	}

	private String generateScheme(QuestState st)
	{
		final List<String> schemeName = new ArrayList<>();
		final List<String> schemeId = new ArrayList<>();
		String HTML = "";
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement rss = con.prepareStatement("SELECT * FROM premium_scheme_list WHERE player_id=?");
			rss.setInt(1, st.getPlayer().getObjectId());
			final ResultSet action = rss.executeQuery();
			while (action.next())
			{
				schemeName.add(action.getString("scheme_name"));
				schemeId.add(action.getString("id"));
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}
		HTML += "<BR><BR1><table width=100% border=0 cellspacing=0 cellpadding=1><tr>" + "<td align=center><font color=696969>Scheme:</font><font color=FFD700> 6.500.000 </font></td><td align=right><font color=LEVEL>" + "</font></TD></TR></table>" + "<BR1><table cellspacing=0 cellpadding=0>";
		if (schemeName.size() > 0)
		{
			String MESSAGE = "";
			int td = 0;
			final String[] TRS =
			{
				"<tr><td>",
				"</td>",
				"<td>",
				"</td></tr>"
			};
			for (int i = 0; i < schemeName.size(); ++i)
			{
				if (td > 2)
				{
					td = 0;
				}
				MESSAGE += TRS[td] + "<button value=\"" + schemeName.get(i) + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " cast " + schemeId.get(i) + " x x\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
				td += 2;
			}

			if (MESSAGE.length() > 0)
			{
				HTML += "<table>" + MESSAGE + "</table>";
			}
		}

		if (schemeName.size() < SCHEMES_PER_PLAYER)
		{
			HTML += "<BR1><table><tr><td><button value=\"Create\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " create_1 x x x\" width=85 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>";
		}
		else
		{
			HTML += "<BR1><table width=100><tr>";
		}

		if (schemeName.size() > 0)
		{
			HTML += "<td><button value=\"Edit\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_1 x x x\" width=85 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>" + "<td><button value=\"Delete\" action=\"bypass -h Quest " + QUEST_LOADING_INFO
				+ " delete_1 x x x\" width=85 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table>";
		}
		else
		{
			HTML += "</tr></table>";
		}
		return HTML;
	}

	private String reloadPanel(QuestState st)
	{
		return "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>" + "<font color=303030>" + TITLE_NAME + "</font><br>" + "<img src=\"L2UI.SquareGray\" width=250 height=1><br>" + "<table width=260 border=0 bgcolor=444444>"
			+ "<tr><td><br></td></tr>"
			+ "<tr><td align=center><font color=FFFFFF>This option can be seen by GMs only and it<br1>allow to update any changes made in the<br1>script. You can disable this option in<br1>the settings section within the Script.<br><font color=LEVEL>Do you want to update the SCRIPT?</font></font></td></tr>"
			+ "<tr><td></td></tr></table><br>" + "<img src=\"L2UI.SquareGray\" width=250 height=1><br><br>" + "<button value=\"Yes\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " reloadscript 1 0 0\" width=50 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
			+ "<button value=\"No\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " reloadscript 0 0 0\" width=50 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "</center></body></html>";
	}

	private String getItemNameHtml(QuestState st, int itemval)
	{
		return "&#" + itemval + ";";
	}

	private int getBuffCount(String scheme)
	{
		int count = 0;
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement rss = con.prepareStatement("SELECT buff_class FROM premium_scheme_contents WHERE scheme_id=?");
			rss.setString(1, scheme);
			final ResultSet action = rss.executeQuery();
			while (action.next())
			{
				++count;
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}
		return count;
	}

	private String getBuffType(int id)
	{
		String val = "none";
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement act = con.prepareStatement("SELECT buffType FROM premium_buff_list WHERE buffId=? LIMIT 1");
			act.setInt(1, id);
			final ResultSet rs = act.executeQuery();
			if (rs.next())
			{
				val = rs.getString("buffType");
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}
		return val;
	}

	private boolean isEnabled(int id, int level)
	{
		boolean val = false;
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement act = con.prepareStatement("SELECT canUse FROM premium_buff_list WHERE buffId=? AND buffLevel=? LIMIT 1");
			act.setInt(1, id);
			act.setInt(2, level);
			final ResultSet rs = act.executeQuery();
			if (rs.next())
			{
				if ("1".equals(rs.getString("canUse")))
				{
					val = true;
				}
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}
		return val;
	}

	private boolean isUsed(String scheme, int id, int level)
	{
		boolean used = false;
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement rss = con.prepareStatement("SELECT id FROM premium_scheme_contents WHERE scheme_id=? AND skill_id=? AND skill_level=? LIMIT 1");
			rss.setString(1, scheme);
			rss.setInt(2, id);
			rss.setInt(3, level);
			final ResultSet action = rss.executeQuery();
			if (action.next())
			{
				used = true;
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}
		return used;
	}

	private int getClassBuff(String id)
	{
		int val = 0;
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement getTipo = con.prepareStatement("SELECT buff_class FROM premium_buff_list WHERE buffId=?");
			getTipo.setString(1, id);
			final ResultSet gt = getTipo.executeQuery();
			if (gt.next())
			{
				val = gt.getInt("buff_class");
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}
		return val;
	}

	private String showText(QuestState st, String type, String text, boolean buttonEnabled, String buttonName, String location)
	{
		String MESSAGE = "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>";
		MESSAGE += "<font color=LEVEL>" + type + "</font><br>" + text + "<br>";
		if (buttonEnabled)
		{
			MESSAGE += "<button value=\"" + buttonName + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect " + location + " 0 0\" width=100 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		MESSAGE += "<font color=303030>" + TITLE_NAME + "</font></center></body></html>";
		st.playSound("ItemSound3.sys_shortage");
		return MESSAGE;
	}

	private String reloadConfig(QuestState st)
	{
		try
		{
			if (QuestManager.getInstance().reload(QUEST_LOADING_INFO))
			{
				st.getPlayer().sendMessage("The script and settings have been reloaded successfully.");
			}
			else
			{
				st.getPlayer().sendMessage("Script Reloaded Failed. you edited something wrong! :P, fix it and restart the server");
			}
		}
		catch (final Exception e)
		{
			st.getPlayer().sendMessage("Script Reloaded Failed. you edited something wrong! :P, fix it and restart the server");
			print(e);
		}
		return rebuildMainHtml(st);
	}

	private PremiumBuffer(int id, String name, String descr)
	{
		super(id, name, descr);
		addStartNpc(NPC_ID);
		addFirstTalkId(NPC_ID);
		addTalkId(NPC_ID);
	}

	private boolean isPetBuff(QuestState st)
	{
		return st.getInt("Pet-On-Off") != 0;
	}

	private String createScheme()
	{
		return "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><br>You MUST seprerate new words with a dot (.)<br><br>Scheme name: <edit var=\"name\" width=100><br><br>"
			+ "<button value=\"Create Scheme\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " create $name no_name x x\" width=200 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<br><button value=\"Back\" action=\"bypass -h Quest " + QUEST_LOADING_INFO
			+ " redirect main 0 0\" width=100 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<br><font color=303030>" + TITLE_NAME + "</font></center></body></html>";
	}

	private String deleteScheme(Player player)
	{
		String HTML = "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>Available schemes:<br><br>";
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement rss = con.prepareStatement("SELECT * FROM premium_scheme_list WHERE player_id=?");
			rss.setInt(1, player.getObjectId());
			final ResultSet action = rss.executeQuery();
			while (action.next())
			{
				HTML += "<button value=\"" + action.getString("scheme_name") + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " delete_c " + action.getString("id") + " " + action.getString("scheme_name") + " x\" width=200 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}
		HTML += "<br><button value=\"Back\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect main 0 0\" width=100 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<br><font color=303030>" + TITLE_NAME + "</font></center></body></html>";
		return HTML;
	}

	private String editScheme(Player player)
	{
		String HTML = "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>Select a scheme that you would like to manage:<br><br>";
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement rss = con.prepareStatement("SELECT * FROM premium_scheme_list WHERE player_id=?");
			rss.setInt(1, player.getObjectId());
			final ResultSet action = rss.executeQuery();
			while (action.next())
			{
				final String name = action.getString("scheme_name");
				final String id = action.getString("id");
				HTML += "<button value=\"" + name + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " manage_scheme_select " + id + " x x\" width=200 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}
		HTML += "<br><button value=\"Back\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect main 0 0\" width=100 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<br><font color=303030>" + TITLE_NAME + "</font></center></body></html>";
		return HTML;
	}

	private String getOptionList(String scheme)
	{
		final int bcount = getBuffCount(scheme);
		String HTML = "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>There are <font color=LEVEL>" + bcount + "</font> buffs in current scheme!<br><br>";
		if (bcount < (MAX_SCHEME_BUFFS + MAX_SCHEME_DANCES))
		{
			HTML += "<button value=\"Add buffs\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " manage_scheme_1 " + scheme + " 1 x\" width=200 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		if (bcount > 0)
		{
			HTML += "<button value=\"Remove buffs\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " manage_scheme_2 " + scheme + " 1 x\" width=200 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		HTML += "<br><button value=\"Back\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_1 0 0 0\" width=100 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<button value=\"Home\" action=\"bypass -h Quest " + QUEST_LOADING_INFO
			+ " redirect main 0 0\" width=100 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<br><font color=303030>" + TITLE_NAME + "</font></center></body></html>";
		return HTML;
	}

	private String buildHtml(String buffType)
	{
		String HTML_MESSAGE = "<html><head><title>" + TITLE_NAME + "</title></head><body><center><br>";

		final List<String> availableBuffs = new ArrayList<>();
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement getList = con.prepareStatement("SELECT buffId,buffLevel FROM premium_buff_list WHERE buffType=\"" + buffType + "\" AND canUse=1  ORDER BY Buff_Class ASC, id");
			final ResultSet rs = getList.executeQuery();
			while (rs.next())
			{
				final int bId = rs.getInt("buffId");
				final int bLevel = rs.getInt("buffLevel");
				String bName = SkillsParser.getInstance().getInfo(bId, bLevel).getNameEn();
				bName = bName.replace(" ", "+");
				availableBuffs.add(bName + "_" + bId + "_" + bLevel);
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}

		if (availableBuffs.size() == 0)
		{
			HTML_MESSAGE += "No buffs are available at this moment!";
		}
		else
		{
			if (FREE_BUFFS)
			{
				HTML_MESSAGE += "All buffs are for <font color=LEVEL>free</font>!";
			}
			else
			{
				int price = 0;
				switch (buffType)
				{
					case "buff":
						price = BUFF_PRICE;
						break;
					case "kamael":
						price = BUFF_PRICE;
						break;
					case "resist":
						price = RESIST_PRICE;
						break;
					case "song":
						price = SONG_PRICE;
						break;
					case "dance":
						price = DANCE_PRICE;
						break;
					case "chant":
						price = CHANT_PRICE;
						break;
					case "others":
						price = OTHERS_PRICE;
						break;
					case "special":
						price = SPECIAL_PRICE;
						break;
					case "cubic":
						price = CUBIC_PRICE;
						break;
					default:
						if (DEBUG)
						{
							throw new RuntimeException();
						}
				}
				HTML_MESSAGE += "All special buffs cost <font color=LEVEL>" + formatAdena(price) + "</font> adena!";
			}
			HTML_MESSAGE += "<BR1><table>";
			for (String buff : availableBuffs)
			{
				buff = buff.replace("_", " ");
				final String[] buffSplit = buff.split(" ");
				String name = buffSplit[0];
				final int id = Integer.parseInt(buffSplit[1]);
				final int level = Integer.parseInt(buffSplit[2]);
				name = name.replace("+", " ");
				HTML_MESSAGE += "<tr><td>" + getSkillIconHtml(id, level) + "</td><td><button value=\"" + name + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " giveBuffs " + id + " " + level + " " + buffType
					+ "\" width=190 height=32 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>";
			}
			HTML_MESSAGE += "</table>";
		}

		HTML_MESSAGE += "<br><button value=\"Back\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect main 0 0\" width=100 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<br><font color=303030>" + TITLE_NAME + "</font></center></body></html>";
		return HTML_MESSAGE;
	}

	private String generateQuery(int case1, int case2)
	{
		final StringBuilder qry = new StringBuilder();
		if (ENABLE_BUFFS)
		{
			if (case1 < MAX_SCHEME_BUFFS)
			{
				qry.append(",\"buff\"");
			}
		}
		if (ENABLE_BUFFS)
		{
			if (case1 < MAX_SCHEME_BUFFS)
			{
				qry.append(",\"kamael\"");
			}
		}
		if (ENABLE_RESIST)
		{
			if (case1 < MAX_SCHEME_BUFFS)
			{
				qry.append(",\"resist\"");
			}
		}
		if (ENABLE_SONGS)
		{
			if (case2 < MAX_SCHEME_DANCES)
			{
				qry.append(",\"song\"");
			}
		}
		if (ENABLE_DANCES)
		{
			if (case2 < MAX_SCHEME_DANCES)
			{
				qry.append(",\"dance\"");
			}
		}
		if (ENABLE_CHANTS)
		{
			if (case1 < MAX_SCHEME_BUFFS)
			{
				qry.append(",\"chant\"");
			}
		}
		if (ENABLE_OTHERS)
		{
			if (case1 < MAX_SCHEME_BUFFS)
			{
				qry.append(",\"others\"");
			}
		}
		if (ENABLE_SPECIAL)
		{
			if (case1 < MAX_SCHEME_BUFFS)
			{
				qry.append(",\"special\"");
			}
		}
		if (qry.length() > 0)
		{
			qry.deleteCharAt(0);
		}
		return qry.toString();
	}

	private String viewAllSchemeBuffs$getBuffCount(String scheme)
	{
		int count = 0;
		int D_S_Count = 0;
		int B_Count = 0;
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement rss = con.prepareStatement("SELECT buff_class FROM premium_scheme_contents WHERE scheme_id=?");
			rss.setString(1, scheme);
			final ResultSet action = rss.executeQuery();
			while (action.next())
			{
				++count;
				final int val = action.getInt("buff_class");
				if ((val == 1) || (val == 2))
				{
					++D_S_Count;
				}
				else
				{
					++B_Count;
				}
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}
		final String res = count + " " + B_Count + " " + D_S_Count;
		return res;
	}

	private String viewAllSchemeBuffs(String scheme, String page, String action)
	{
		final List<String> buffList = new ArrayList<>();
		String HTML_MESSAGE = "<html><head><title>" + TITLE_NAME + "</title></head><body><center><br>";
		final String[] eventSplit = viewAllSchemeBuffs$getBuffCount(scheme).split(" ");
		final int TOTAL_BUFF = Integer.parseInt(eventSplit[0]);
		final int BUFF_COUNT = Integer.parseInt(eventSplit[1]);
		final int DANCE_SONG = Integer.parseInt(eventSplit[2]);
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			if (action.equals("add"))
			{
				HTML_MESSAGE += "You can add <font color=LEVEL>" + (MAX_SCHEME_BUFFS - BUFF_COUNT) + "</font> Buffs and <font color=LEVEL>" + (MAX_SCHEME_DANCES - DANCE_SONG) + "</font> Dances more!";
				final String QUERY = "SELECT * FROM premium_buff_list WHERE buffType IN (" + generateQuery(BUFF_COUNT, DANCE_SONG) + ") AND canUse=1 ORDER BY Buff_Class ASC, id";
				final PreparedStatement getBuffCount = con.prepareStatement(QUERY);
				final ResultSet rss = getBuffCount.executeQuery();
				while (rss.next())
				{
					String name = SkillsParser.getInstance().getInfo(rss.getInt("buffId"), rss.getInt("buffLevel")).getNameEn();
					name = name.replace(" ", "+");
					buffList.add(name + "_" + rss.getInt("buffId") + "_" + rss.getInt("buffLevel"));
				}
			}
			else if (action.equals("remove"))
			{
				HTML_MESSAGE += "You have <font color=LEVEL>" + BUFF_COUNT + "</font> Buffs and <font color=LEVEL>" + DANCE_SONG + "</font> Dances";
				final String QUERY = "SELECT * FROM premium_scheme_contents WHERE scheme_id=? ORDER BY Buff_Class ASC, id";
				final PreparedStatement getBuffCount = con.prepareStatement(QUERY);
				getBuffCount.setString(1, scheme);
				final ResultSet rss = getBuffCount.executeQuery();
				while (rss.next())
				{
					String name = SkillsParser.getInstance().getInfo(rss.getInt("skill_id"), rss.getInt("skill_level")).getNameEn();
					name = name.replace(" ", "+");
					buffList.add(name + "_" + rss.getInt("skill_id") + "_" + rss.getInt("skill_level"));
				}
			}
			else if (DEBUG)
			{
				throw new RuntimeException();
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}

		HTML_MESSAGE += "<BR1><table border=0><tr>";
		final int buffsPerPage = 20;
		final String width, pageName;
		final int pc = ((buffList.size() - 1) / buffsPerPage) + 1;
		if (pc > 5)
		{
			width = "25";
			pageName = "P";
		}
		else
		{
			width = "50";
			pageName = "Page ";
		}
		for (int ii = 1; ii <= pc; ++ii)
		{
			if (ii == Integer.parseInt(page))
			{
				HTML_MESSAGE += "<td width=" + width + " align=center><font color=LEVEL>" + pageName + ii + "</font></td>";
			}
			else if (action.equals("add"))
			{
				HTML_MESSAGE += "<td width=" + width + ">" + "<button value=\"" + pageName + ii + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " manage_scheme_1 " + scheme + " " + ii + " x\" width=" + width + " height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>";
			}
			else if (action.equals("remove"))
			{
				HTML_MESSAGE += "<td width=" + width + ">" + "<button value=\"" + pageName + ii + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " manage_scheme_2 " + scheme + " " + ii + " x\" width=" + width + " height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>";
			}
			else if (DEBUG)
			{
				throw new RuntimeException();
			}
		}
		HTML_MESSAGE += "</tr></table>";

		final int limit = buffsPerPage * Integer.parseInt(page);
		final int start = limit - buffsPerPage;
		final int end = Math.min(limit, buffList.size());
		int k = 0;
		for (int i = start; i < end; ++i)
		{
			String value = buffList.get(i);
			value = value.replace("_", " ");
			final String[] extr = value.split(" ");
			String name = extr[0];
			name = name.replace("+", " ");
			final int id = Integer.parseInt(extr[1]);
			final int level = Integer.parseInt(extr[2]);
			/*--String page = extr[3];--*/
			if (action.equals("add"))
			{
				if (!isUsed(scheme, id, level))
				{
					if ((k % 2) != 0)
					{
						HTML_MESSAGE += "<BR1><table border=0 bgcolor=333333>";
					}
					else
					{
						HTML_MESSAGE += "<BR1><table border=0 bgcolor=292929>";
					}
					HTML_MESSAGE += "<tr><td width=35>" + getSkillIconHtml(id, level) + "</td><td fixwidth=170>" + name + "</td><td><button value=\"Add\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " add_buff " + scheme + "_" + id + "_" + level + " " + page + " " + TOTAL_BUFF
						+ "\" width=65 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>" + "</tr></table>";
					k += 1;
				}
			}
			else if (action.equals("remove"))
			{
				if ((k % 2) != 0)
				{
					HTML_MESSAGE += "<BR1><table border=0 bgcolor=333333>";
				}
				else
				{
					HTML_MESSAGE += "<BR1><table border=0 bgcolor=292929>";
				}
				HTML_MESSAGE += "<tr><td width=35>" + getSkillIconHtml(id, level) + "</td><td fixwidth=170>" + name + "</td><td><button value=\"Remove\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " remove_buff " + scheme + "_" + id + "_" + level + " " + page + " " + TOTAL_BUFF
					+ "\" width=65 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>" + "</table>";
				k += 1;
			}
		}
		HTML_MESSAGE += "<br><br><button value=\"Back\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " manage_scheme_select " + scheme + " x x\" width=100 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<button value=\"Home\" action=\"bypass -h Quest "
			+ QUEST_LOADING_INFO + " redirect main 0 0\" width=100 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<br><font color=303030>" + TITLE_NAME + "</font></center></body></html>";
		return HTML_MESSAGE;
	}

	private String viewAllBuffTypes()
	{
		String HTML_MESSAGE = "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>";
		HTML_MESSAGE += "<font color=LEVEL>[Buff management]</font><br>";
		if (ENABLE_BUFFS)
		{
			HTML_MESSAGE += "<button value=\"Buffs\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_premium_buff_list buff Buffs 1\" width=200 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		if (ENABLE_BUFFS)
		{
			HTML_MESSAGE += "<button value=\"Kamael\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_premium_buff_list kamael Kamael 1\" width=200 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		if (ENABLE_RESIST)
		{
			HTML_MESSAGE += "<button value=\"Resist Buffs\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_premium_buff_list resist Resists 1\" width=200 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		if (ENABLE_SONGS)
		{
			HTML_MESSAGE += "<button value=\"Songs\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_premium_buff_list song Songs 1\" width=200 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		if (ENABLE_DANCES)
		{
			HTML_MESSAGE += "<button value=\"Dances\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_premium_buff_list dance Dances 1\" width=200 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		if (ENABLE_CHANTS)
		{
			HTML_MESSAGE += "<button value=\"Chants\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_premium_buff_list chant Chants 1\" width=200 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		if (ENABLE_SPECIAL)
		{
			HTML_MESSAGE += "<button value=\"Special Buffs\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_premium_buff_list special Special_Buffs 1\" width=200 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		if (ENABLE_OTHERS)
		{
			HTML_MESSAGE += "<button value=\"Others Buffs\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_premium_buff_list others Others_Buffs 1\" width=200 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		if (ENABLE_CUBIC)
		{
			HTML_MESSAGE += "<button value=\"Cubics\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_premium_buff_list cubic cubic_Buffs 1\" width=200 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
		}
		if (ENABLE_BUFF_SET)
		{
			HTML_MESSAGE += "<button value=\"Buff Sets\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_premium_buff_list set Buff_Sets 1\" width=200 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"><br>";
		}
		HTML_MESSAGE += "<button value=\"Back\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect main 0 0\" width=100 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<br><font color=303030>" + TITLE_NAME + "</font></center></body></html>";
		return HTML_MESSAGE;
	}

	private String viewAllBuffs(String type, String typeName, String page)
	{
		final List<String> buffList = new ArrayList<>();
		String HTML_MESSAGE = "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>";
		typeName = typeName.replace("_", " ");
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement getBuffCount;
			if (type.equals("set"))
			{
				getBuffCount = con.prepareStatement("SELECT * FROM premium_buff_list WHERE buffType IN (" + generateQuery(0, 0) + ") AND canUse=1");
			}
			else
			{
				getBuffCount = con.prepareStatement("SELECT * FROM premium_buff_list WHERE buffType=?");
				getBuffCount.setString(1, type);
			}
			final ResultSet rss = getBuffCount.executeQuery();
			while (rss.next())
			{
				String name = SkillsParser.getInstance().getInfo(rss.getInt("buffId"), rss.getInt("buffLevel")).getNameEn();
				name = name.replace(" ", "+");
				final String usable = rss.getString("canUse");
				final String forClass = rss.getString("forClass");
				final String skill_id = rss.getString("buffId");
				final String skill_level = rss.getString("buffLevel");
				buffList.add(name + "_" + forClass + "_" + page + "_" + usable + "_" + skill_id + "_" + skill_level);
			}
		}
		catch (final SQLException e)
		{
			print(e);
		}
		Collections.sort(buffList);

		HTML_MESSAGE += "<font color=LEVEL>[Buff management - " + typeName + " - Page " + page + "]</font><br><table border=0><tr>";
		final int buffsPerPage;
		if (type.equals("set"))
		{
			buffsPerPage = 12;
		}
		else
		{
			buffsPerPage = 20;
		}
		final String width, pageName;
		final int pc = ((buffList.size() - 1) / buffsPerPage) + 1;
		if (pc > 5)
		{
			width = "25";
			pageName = "P";
		}
		else
		{
			width = "50";
			pageName = "Page ";
		}
		typeName = typeName.replace(" ", "_");
		for (int ii = 1; ii <= pc; ++ii)
		{
			if (ii == Integer.parseInt(page))
			{
				HTML_MESSAGE += "<td width=" + width + " align=center><font color=LEVEL>" + pageName + ii + "</font></td>";
			}
			else
			{
				HTML_MESSAGE += "<td width=" + width + "><button value=\"" + pageName + "" + ii + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " edit_premium_buff_list " + type + " " + typeName + " " + ii + "\" width=" + width
					+ " height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>";
			}
		}
		HTML_MESSAGE += "</tr></table><br>";

		final int limit = buffsPerPage * Integer.parseInt(page);
		final int start = limit - buffsPerPage;
		final int end = Math.min(limit, buffList.size());
		for (int i = start; i < end; ++i)
		{
			String value = buffList.get(i);
			value = value.replace("_", " ");
			final String[] extr = value.split(" ");
			String name = extr[0];
			name = name.replace("+", " ");
			final int forClass = Integer.parseInt(extr[1]);
			/* page = extr[2]; */
			final int usable = Integer.parseInt(extr[3]);
			final String skillPos = extr[4] + "_" + extr[5];
			if ((i % 2) != 0)
			{
				HTML_MESSAGE += "<BR1><table border=0 bgcolor=333333>";
			}
			else
			{
				HTML_MESSAGE += "<BR1><table border=0 bgcolor=292929>";
			}
			if (type.equals("set"))
			{
				String listOrder = null;
				if (forClass == 0)
				{
					listOrder = "List=\"" + SET_FIGHTER + ";" + SET_MAGE + ";" + SET_ALL + ";" + SET_NONE + ";\"";
				}
				else if (forClass == 1)
				{
					listOrder = "List=\"" + SET_MAGE + ";" + SET_FIGHTER + ";" + SET_ALL + ";" + SET_NONE + ";\"";
				}
				else if (forClass == 2)
				{
					listOrder = "List=\"" + SET_ALL + ";" + SET_FIGHTER + ";" + SET_MAGE + ";" + SET_NONE + ";\"";
				}
				else if (forClass == 3)
				{
					listOrder = "List=\"" + SET_NONE + ";" + SET_FIGHTER + ";" + SET_MAGE + ";" + SET_ALL + ";\"";
				}
				HTML_MESSAGE += "<tr><td fixwidth=145>" + name + "</td><td width=70><combobox var=\"newSet" + i + "\" width=70 " + listOrder + "></td>" + "<td width=50><button value=\"Update\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " changeBuffSet " + skillPos + " $newSet" + i + " "
					+ page + "\" width=50 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>";
			}
			else
			{
				HTML_MESSAGE += "<tr><td fixwidth=170>" + name + "</td><td width=80>";
				if (usable == 1)
				{
					HTML_MESSAGE += "<button value=\"Disable\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " editSelectedBuff " + skillPos + " 0-" + page + " " + type + "\" width=80 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>";
				}
				else if (usable == 0)
				{
					HTML_MESSAGE += "<button value=\"Enable\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " editSelectedBuff " + skillPos + " 1-" + page + " " + type + "\" width=80 height=22 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>";
				}
			}
			HTML_MESSAGE += "</table>";
		}
		HTML_MESSAGE += "<br><br><button value=\"Back\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect manage_buffs 0 0\" width=100 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<button value=\"Home\" action=\"bypass -h Quest " + QUEST_LOADING_INFO
			+ " redirect main 0 0\" width=100 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<br><font color=303030>" + TITLE_NAME + "</font></center></body></html>";
		return HTML_MESSAGE;
	}

	private void manageSelectedBuff(String buffPosId, String canUseBuff)
	{
		final String[] bpid = buffPosId.split("_");
		final String bId = bpid[0];
		final String bLvl = bpid[1];
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement upd = con.prepareStatement("UPDATE premium_buff_list SET canUse=? WHERE buffId=? AND buffLevel=? LIMIT 1");
			upd.setString(1, canUseBuff);
			upd.setString(2, bId);
			upd.setString(3, bLvl);
			upd.executeUpdate();
			upd.close();
		}
		catch (final SQLException e)
		{
			print(e);
		}
	}

	private String manageSelectedSet(String id, String newVal, String opt3)
	{
		final String[] bpid = id.split("_");
		final String bId = bpid[0];
		final String bLvl = bpid[1];
		try (Connection con = DatabaseFactory.getInstance().getConnection())
		{
			final PreparedStatement upd = con.prepareStatement("UPDATE premium_buff_list SET forClass=? WHERE buffId=? AND bufflevel=?");
			upd.setString(1, newVal);
			upd.setString(2, bId);
			upd.setString(3, bLvl);
			upd.executeUpdate();
			upd.close();
		}
		catch (final SQLException e)
		{
			print(e);
		}
		return viewAllBuffs("set", "Buff Sets", opt3);
	}

	private void addTimeout(QuestState st, int gaugeColor, int amount, int offset)
	{
		final int endtime = (int) ((System.currentTimeMillis() + (amount * 1000)) / 1000);
		st.set("blockUntilTime", String.valueOf(endtime));
		st.getPlayer().sendPacket(new SetupGauge(st.getPlayer(), gaugeColor, (amount * 1000) + offset));
	}

	private void heal(Player player, boolean isPet)
	{
		Summon target;
		if (!isPet)
		{
			final PcStatus pcStatus = player.getStatus();
			final PcStat pcStat = player.getStat();
			pcStatus.setCurrentHp(pcStat.getMaxHp());
			pcStatus.setCurrentMp(pcStat.getMaxMp());
			pcStatus.setCurrentCp(pcStat.getMaxCp());
		}
		else if (/* isPet && */(target = player.getSummon()) != null)
		{
			final SummonStatus petStatus = target.getStatus();
			final SummonStat petStat = target.getStat();
			petStatus.setCurrentHp(petStat.getMaxHp());
			petStatus.setCurrentMp(petStat.getMaxMp());
			if (target instanceof PetInstance)
			{
				final PetInstance pet = (PetInstance) target;
				pet.setCurrentFed(pet.getMaxFed());
				player.sendPacket(new SetSummonRemainTime(pet.getMaxFed(), pet.getCurrentFed()));
			}
			else if (target instanceof ServitorInstance)
			{
				final ServitorInstance summon = (ServitorInstance) target;
				summon.decTimeRemaining(summon.getTimeRemaining() - summon.getTotalLifeTime());
				player.sendPacket(new SetSummonRemainTime(summon.getTotalLifeTime(), summon.getTimeRemaining()));
			}
			else if (DEBUG)
			{
				throw new RuntimeException();
			}
		}
	}

	@Override
	public String onAdvEvent(String event, Npc npc, Player player)
	{
		if (DEBUG)
		{
			System.out.println(getScriptName() + "#onAdvEvent('" + event + "'," + (npc == null ? "NULL" : npc.getId() + npc.getName()) + "," + (player == null ? "NULL" : player.getName()) + ")");
		}
		final QuestState st = player.getQuestState(QUEST_LOADING_INFO);
		final String[] eventSplit = event.split(" ", 4);
		if (eventSplit.length != 4)
		{
			player.sendPacket(SystemMessageId.INCORRECT_NAME_TRY_AGAIN);
			return null;
		}
		final String eventParam0 = eventSplit[0];
		final String eventParam1 = eventSplit[1];
		String eventParam2 = eventSplit[2];
		final String eventParam3 = eventSplit[3];

		switch (eventParam0)
		{
			case "reloadscript":
				if (eventParam1.equals("1"))
				{
					return reloadConfig(st);
				}
				if (eventParam1.equals("0"))
				{
					return rebuildMainHtml(st);
				}
				if (DEBUG)
				{
					throw new RuntimeException();
				}
			case "redirect":
				switch (eventParam1)
				{
					case "main":
						return rebuildMainHtml(st);
					case "manage_buffs":
						return viewAllBuffTypes();
					case "view_buffs":
						return buildHtml("buff");
					case "view_kamael":
						return buildHtml("kamael");
					case "view_resists":
						return buildHtml("resist");
					case "view_songs":
						return buildHtml("song");
					case "view_dances":
						return buildHtml("dance");
					case "view_chants":
						return buildHtml("chant");
					case "view_others":
						return buildHtml("others");
					case "view_special":
						return buildHtml("special");
					case "view_cubic":
						return buildHtml("cubic");
					default:
						if (DEBUG)
						{
							throw new RuntimeException();
						}
				}
			case "buffpet":
				if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
				{
					st.set("Pet-On-Off", eventParam1);
					if (TIME_OUT)
					{
						addTimeout(st, 3, TIME_OUT_TIME / 2, 600);
					}
				}
				return rebuildMainHtml(st);
			case "create":
			{
				final String param = eventParam1.replaceAll("[ !" + "\"" + "#$%&'()*+,/:;<=>?@" + "\\[" + "\\\\" + "\\]" + "\\^" + "`{|}~]", "");
				if ((param.length() == 0) || param.equals("no_name"))
				{
					player.sendPacket(SystemMessageId.INCORRECT_NAME_TRY_AGAIN);
					return showText(st, "Info", "Please, enter the scheme name!", true, "Return", "main");
				}
				try (Connection con = DatabaseFactory.getInstance().getConnection())
				{
					final PreparedStatement ins = con.prepareStatement("INSERT INTO premium_scheme_list (player_id,scheme_name) VALUES (?,?)");
					ins.setInt(1, player.getObjectId());
					ins.setString(2, param);
					ins.executeUpdate();
					ins.close();
				}
				catch (final SQLException e)
				{
					print(e);
				}
				return rebuildMainHtml(st);
			}
			case "delete":
				try (Connection con = DatabaseFactory.getInstance().getConnection())
				{
					PreparedStatement rem;
					rem = con.prepareStatement("DELETE FROM premium_scheme_list WHERE id=? LIMIT 1");
					rem.setString(1, eventParam1);
					rem.executeUpdate();
					rem.close();
					rem = con.prepareStatement("DELETE FROM premium_scheme_contents WHERE scheme_id=?");
					rem.setString(1, eventParam1);
					rem.executeUpdate();
					rem.close();
				}
				catch (final SQLException e)
				{
					print(e);
				}
				return rebuildMainHtml(st);
			case "delete_c":
				return "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>Do you really want to delete '" + eventParam2 + "' scheme?<br><br>" + "<button value=\"Yes\" action=\"bypass -h Quest " + QUEST_LOADING_INFO
					+ " delete " + eventParam1 + " x x\" width=50 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<button value=\"No\" action=\"bypass -h Quest " + QUEST_LOADING_INFO
					+ " delete_1 x x x\" width=50 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + "<br><font color=303030>" + TITLE_NAME + "</font></center></body></html>";

			case "create_1":
				return createScheme();
			case "edit_1":
				return editScheme(player);
			case "delete_1":
				return deleteScheme(player);
			case "manage_scheme_1":
				return viewAllSchemeBuffs(eventParam1, eventParam2, "add");
			case "manage_scheme_2":
				return viewAllSchemeBuffs(eventParam1, eventParam2, "remove");
			case "manage_scheme_select":
				return getOptionList(eventParam1);
			case "remove_buff":
			{
				final String[] split = eventParam1.split("_");
				final String scheme = split[0];
				final String skill = split[1];
				final String level = split[2];
				try (Connection con = DatabaseFactory.getInstance().getConnection())
				{
					final PreparedStatement rem = con.prepareStatement("DELETE FROM premium_scheme_contents WHERE scheme_id=? AND skill_id=? AND skill_level=? LIMIT 1");
					rem.setString(1, scheme);
					rem.setString(2, skill);
					rem.setString(3, level);
					rem.executeUpdate();
				}
				catch (final SQLException e)
				{
					print(e);
				}
				final int temp = Integer.parseInt(eventParam3) - 1;
				final String HTML;
				if (temp <= 0)
				{
					HTML = getOptionList(scheme);
				}
				else
				{
					HTML = viewAllSchemeBuffs(scheme, eventParam2, "remove");
				}
				return HTML;
			}
			case "add_buff":
			{
				final String[] split = eventParam1.split("_");
				final String scheme = split[0];
				final String skill = split[1];
				final String level = split[2];
				final int idbuffclass = getClassBuff(skill);
				try (Connection con = DatabaseFactory.getInstance().getConnection())
				{
					final PreparedStatement ins = con.prepareStatement("INSERT INTO premium_scheme_contents (scheme_id,skill_id,skill_level,buff_class) VALUES (?,?,?,?)");
					ins.setString(1, scheme);
					ins.setString(2, skill);
					ins.setString(3, level);
					ins.setInt(4, idbuffclass);
					ins.executeUpdate();
					ins.close();
				}
				catch (final SQLException e)
				{
					print(e);
				}
				final int temp = Integer.parseInt(eventParam3) + 1;
				final String HTML;
				if (temp >= (MAX_SCHEME_BUFFS + MAX_SCHEME_DANCES))
				{
					HTML = getOptionList(scheme);
				}
				else
				{
					HTML = viewAllSchemeBuffs(scheme, eventParam2, "add");
				}
				return HTML;
			}
			case "edit_premium_buff_list":
				return viewAllBuffs(eventParam1, eventParam2, eventParam3);

			case "changeBuffSet":
				if (eventParam2.equals(SET_FIGHTER))
				{
					eventParam2 = "0";
				}
				else if (eventParam2.equals(SET_MAGE))
				{
					eventParam2 = "1";
				}
				else if (eventParam2.equals(SET_ALL))
				{
					eventParam2 = "2";
				}
				else if (eventParam2.equals(SET_NONE))
				{
					eventParam2 = "3";
				}
				else if (DEBUG)
				{
					throw new RuntimeException();
				}
				return manageSelectedSet(eventParam1, eventParam2, eventParam3);
			case "editSelectedBuff":
			{
				eventParam2 = eventParam2.replace("-", " ");
				final String[] split = eventParam2.split(" ");
				final String action = split[0];
				final String page = split[1];
				manageSelectedBuff(eventParam1, action);
				final String typeName;
				switch (eventParam3)
				{
					case "buff":
						typeName = "Buffs";
						break;
					case "kamael":
						typeName = "Kamael";
						break;
					case "resist":
						typeName = "Resists";
						break;
					case "song":
						typeName = "Songs";
						break;
					case "dance":
						typeName = "Dances";
						break;
					case "chant":
						typeName = "Chants";
						break;
					case "others":
						typeName = "Others_Buffs";
						break;
					case "special":
						typeName = "Special_Buffs";
						break;
					case "cubic":
						typeName = "Cubics";
						break;
					default:
						throw new RuntimeException();
				}
				return viewAllBuffs(eventParam3, typeName, page);
			}
			case "viewSelectedConfig":
				throw new RuntimeException();

			case "changeConfig":
				throw new RuntimeException();

			case "heal":
				if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
				{
					if (st.getQuestItemsCount(CONSUMABLE_ID) < HEAL_PRICE)
					{
						return showText(st, "Sorry", "You don't have the enough items:<br>You need: <font color=LEVEL>" + HEAL_PRICE + " " + getItemNameHtml(st, CONSUMABLE_ID) + "!", false, "0", "0");
					}
					final boolean getSummonbuff = isPetBuff(st);
					if (getSummonbuff)
					{
						if (player.getSummon() != null)
						{
							heal(player, getSummonbuff);
						}
						else
						{
							return showText(st, "Info", "You can't use the Pet's options.<br>Summon your pet first!", false, "Return", "main");
						}
					}
					else
					{
						heal(player, getSummonbuff);
					}
					st.takeItems(CONSUMABLE_ID, HEAL_PRICE);
					if (TIME_OUT)
					{
						addTimeout(st, 1, TIME_OUT_TIME / 2, 600);
					}
				}
				return SMART_WINDOW ? null : rebuildMainHtml(st);
			case "removeBuffs":
				if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
				{
					if (st.getQuestItemsCount(CONSUMABLE_ID) < BUFF_REMOVE_PRICE)
					{
						return showText(st, "Sorry", "You don't have the enough items:<br>You need: <font color=LEVEL>" + BUFF_REMOVE_PRICE + " " + getItemNameHtml(st, CONSUMABLE_ID) + "!", false, "0", "0");
					}
					final boolean getSummonbuff = isPetBuff(st);
					if (getSummonbuff)
					{
						if (player.getSummon() != null)
						{
							player.getSummon().stopAllEffects();
						}
						else
						{
							return showText(st, "Info", "You can't use the Pet's options.<br>Summon your pet first!", false, "Return", "main");
						}
					}
					else
					{
						player.stopAllEffects();
						if (player.getCubics() != null)
						{
							for (final CubicInstance cubic : player.getCubics().values())
							{
								cubic.stopAction();
								player.getCubics().remove(cubic);
							}
						}
					}
					st.takeItems(CONSUMABLE_ID, BUFF_REMOVE_PRICE);
					if (TIME_OUT)
					{
						addTimeout(st, 2, TIME_OUT_TIME / 2, 600);
					}
				}
				return SMART_WINDOW ? null : rebuildMainHtml(st);
			case "cast":
				if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
				{
					final TIntArrayList buffs = new TIntArrayList();
					final TIntArrayList levels = new TIntArrayList();
					try (Connection con = DatabaseFactory.getInstance().getConnection())
					{
						final PreparedStatement rss = con.prepareStatement("SELECT * FROM premium_scheme_contents WHERE scheme_id=? ORDER BY id");
						rss.setString(1, eventParam1);
						final ResultSet action = rss.executeQuery();
						while (action.next())
						{
							final int id = Integer.parseInt(action.getString("skill_id"));
							final int level = Integer.parseInt(action.getString("skill_level"));
							switch (getBuffType(id))
							{
								case "buff":
									if (ENABLE_BUFFS)
									{
										if (isEnabled(id, level))
										{
											buffs.add(id);
											levels.add(level);
										}
									}
									break;
								case "kamael":
									if (ENABLE_BUFFS)
									{
										if (isEnabled(id, level))
										{
											buffs.add(id);
											levels.add(level);
										}
									}
									break;
								case "resist":
									if (ENABLE_RESIST)
									{
										if (isEnabled(id, level))
										{
											buffs.add(id);
											levels.add(level);
										}
									}
									break;
								case "song":
									if (ENABLE_SONGS)
									{
										if (isEnabled(id, level))
										{
											buffs.add(id);
											levels.add(level);
										}
									}
									break;
								case "dance":
									if (ENABLE_DANCES)
									{
										if (isEnabled(id, level))
										{
											buffs.add(id);
											levels.add(level);
										}
									}
									break;
								case "chant":
									if (ENABLE_CHANTS)
									{
										if (isEnabled(id, level))
										{
											buffs.add(id);
											levels.add(level);
										}
									}
									break;
								case "others":
									if (ENABLE_OTHERS)
									{
										if (isEnabled(id, level))
										{
											buffs.add(id);
											levels.add(level);
										}
									}
									break;
								case "special":
									if (ENABLE_SPECIAL)
									{
										if (isEnabled(id, level))
										{
											buffs.add(id);
											levels.add(level);
										}
									}
									break;
								default:
									if (DEBUG)
									{
										throw new RuntimeException();
									}
							}
						}
					}
					catch (final SQLException e)
					{
						print(e);
					}

					if (buffs.size() == 0)
					{
						return viewAllSchemeBuffs(eventParam1, "1", "add");
					}
					if (!FREE_BUFFS)
					{
						if (st.getQuestItemsCount(CONSUMABLE_ID) < SCHEME_BUFF_PRICE)
						{
							return showText(st, "Sorry", "You don't have the enough items:<br>You need: <font color=LEVEL>" + SCHEME_BUFF_PRICE + " " + getItemNameHtml(st, CONSUMABLE_ID) + "!", false, "0", "0");
						}
					}

					final boolean getSummonbuff = isPetBuff(st);
					for (int i = 0; i < buffs.size(); ++i)
					{
						if (!getSummonbuff)
						{
							SkillsParser.getInstance().getInfo(buffs.get(i), levels.get(i)).getEffects(player, player, false);
						}
						else
						{
							if (player.getSummon() != null)
							{
								SkillsParser.getInstance().getInfo(buffs.get(i), levels.get(i)).getEffects(player.getSummon(), player.getSummon(), false);
							}
							else
							{
								return showText(st, "Info", "You can't use the Pet's options.<br>Summon your pet first!", false, "Return", "main");
							}
						}
					}
					st.takeItems(CONSUMABLE_ID, SCHEME_BUFF_PRICE);
					if (TIME_OUT)
					{
						addTimeout(st, 3, TIME_OUT_TIME, 600);
					}
				}
				return SMART_WINDOW ? null : rebuildMainHtml(st);
			case "giveBuffs":
			{
				final int cost;
				switch (eventParam3)
				{
					case "buff":
						cost = BUFF_PRICE;
						break;
					case "kamael":
						cost = BUFF_PRICE;
						break;
					case "resist":
						cost = RESIST_PRICE;
						break;
					case "song":
						cost = SONG_PRICE;
						break;
					case "dance":
						cost = DANCE_PRICE;
						break;
					case "chant":
						cost = CHANT_PRICE;
						break;
					case "others":
						cost = OTHERS_PRICE;
						break;
					case "special":
						cost = SPECIAL_PRICE;
						break;
					case "cubic":
						cost = CUBIC_PRICE;
						break;
					default:
						throw new RuntimeException();
				}

				if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
				{
					if (!FREE_BUFFS)
					{
						if (st.getQuestItemsCount(CONSUMABLE_ID) < cost)
						{
							return showText(st, "Sorry", "You don't have the enough items:<br>You need: <font color=LEVEL>" + cost + " " + getItemNameHtml(st, CONSUMABLE_ID) + "!", false, "0", "0");
						}
					}
					final Skill skill = SkillsParser.getInstance().getInfo(Integer.parseInt(eventParam1), Integer.parseInt(eventParam2));
					if (skill.getSkillType() == SkillType.SUMMON)
					{
						if (st.getQuestItemsCount(skill.getItemConsumeId()) < skill.getItemConsume())
						{
							return showText(st, "Sorry", "You don't have the enough items:<br>You need: <font color=LEVEL>" + skill.getItemConsume() + " " + getItemNameHtml(st, skill.getItemConsumeId()) + "!", false, "0", "0");
						}
					}
					final boolean getSummonbuff = isPetBuff(st);
					if (!getSummonbuff)
					{
						if (eventParam3.equals("cubic"))
						{
							if (player.getCubics() != null)
							{
								for (final CubicInstance cubic : player.getCubics().values())
								{
									cubic.stopAction();
									player.getCubics().remove(cubic);
								}
							}
							player.useMagic(SkillsParser.getInstance().getInfo(Integer.parseInt(eventParam1), Integer.parseInt(eventParam2)), false, false, true);
						}
						else
						{
							SkillsParser.getInstance().getInfo(Integer.parseInt(eventParam1), Integer.parseInt(eventParam2)).getEffects(player, player, false);
						}
					}
					else
					{
						if (eventParam3.equals("cubic"))
						{
							if (player.getCubics() != null)
							{
								for (final CubicInstance cubic : player.getCubics().values())
								{
									cubic.stopAction();
									player.getCubics().remove(cubic);
								}
							}
							player.useMagic(SkillsParser.getInstance().getInfo(Integer.parseInt(eventParam1), Integer.parseInt(eventParam2)), false, false, true);
						}
						else
						{
							if (player.getSummon() != null)
							{
								SkillsParser.getInstance().getInfo(Integer.parseInt(eventParam1), Integer.parseInt(eventParam2)).getEffects(player.getSummon(), player.getSummon(), false);
							}
							else
							{
								return showText(st, "Info", "You can't use the Pet's options.<br>Summon your pet first!", false, "Return", "main");
							}
						}
					}
					st.takeItems(CONSUMABLE_ID, cost);
					if (TIME_OUT)
					{
						addTimeout(st, 3, TIME_OUT_TIME / 10, 600);
					}
				}
				return SMART_WINDOW ? null : buildHtml(eventParam3);
			}
			case "castBuffSet":
				if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
				{
					if (!FREE_BUFFS)
					{
						if (st.getQuestItemsCount(CONSUMABLE_ID) < BUFF_SET_PRICE)
						{
							return showText(st, "Sorry", "You don't have the enough items:<br>You need: <font color=LEVEL>" + BUFF_SET_PRICE + " " + getItemNameHtml(st, CONSUMABLE_ID) + "!", false, "0", "0");
						}
					}
					final List<int[]> buff_sets = new ArrayList<>();
					final int player_class;
					if (player.isMageClass())
					{
						player_class = 1;
					}
					else
					{
						player_class = 0;
					}
					final boolean getSummonbuff = isPetBuff(st);
					if (!getSummonbuff)
					{
						try (Connection con = DatabaseFactory.getInstance().getConnection())
						{
							final PreparedStatement getSimilarNameCount = con.prepareStatement("SELECT buffId,buffLevel FROM premium_buff_list WHERE forClass IN (?,?) ORDER BY id ASC");
							getSimilarNameCount.setInt(1, player_class);
							getSimilarNameCount.setString(2, "2");
							final ResultSet rss = getSimilarNameCount.executeQuery();
							while (rss.next())
							{
								final int id = rss.getInt("buffId");
								final int lvl = rss.getInt("buffLevel");
								buff_sets.add(new int[]
								{
									id,
									lvl
								});
							}
						}
						catch (final SQLException e)
						{
							print(e);
						}
						for (final int[] i : buff_sets)
						{
							SkillsParser.getInstance().getInfo(i[0], i[1]).getEffects(player, player, false);
						}
					}
					else
					{
						if (player.getSummon() != null)
						{
							try (Connection con = DatabaseFactory.getInstance().getConnection())
							{
								final PreparedStatement getSimilarNameCount = con.prepareStatement("SELECT buffId,buffLevel FROM premium_buff_list WHERE forClass IN (?,?) ORDER BY id ASC");
								getSimilarNameCount.setString(1, "0");
								getSimilarNameCount.setString(2, "2");
								final ResultSet rss = getSimilarNameCount.executeQuery();
								while (rss.next())
								{
									final int id = rss.getInt("buffId");
									final int lvl = rss.getInt("buffLevel");
									buff_sets.add(new int[]
									{
										id,
										lvl
									});
								}
							}
							catch (final SQLException e)
							{
								print(e);
							}
							for (final int[] i : buff_sets)
							{
								SkillsParser.getInstance().getInfo(i[0], i[1]).getEffects(player.getSummon(), player.getSummon(), false);
							}
						}
						else
						{
							return showText(st, "Info", "You can't use the Pet's options.<br>Summon your pet first!", false, "Return", "main");
						}
					}
					st.takeItems(CONSUMABLE_ID, BUFF_SET_PRICE);
					if (TIME_OUT)
					{
						addTimeout(st, 3, TIME_OUT_TIME, 600);
					}
				}
				return SMART_WINDOW ? null : rebuildMainHtml(st);
		}
		return rebuildMainHtml(st);
	}

	@Override
	public String onFirstTalk(Npc npc, Player player)
	{
		QuestState st = player.getQuestState(QUEST_LOADING_INFO);
		if (st == null)
		{
			st = newQuestState(player);
		}
		if (player.isGM())
		{
			{
				return reloadPanel(st);
			}
		}
		else if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
		{
			if (ONLY_FOR_VIP)
			{
				if (ENABLE_VIP_BUFFER && player.hasPremiumBonus())
				{
					if (!BUFF_WITH_KARMA && (player.getKarma() > 0))
					{
						return showText(st, "Info", "You have too much <font color=FF0000>karma!</font><br>Come back,<br>when you don't have any karma!", false, "Return", "main");
					}
					else if (OlympiadManager.getInstance().isRegistered(player))
					{
						return showText(st, "Info", "You can't buff while you are <font color=FF0000>registred in games olympics!</font><br>Come back,<br>when you don't have registred in games olympics!", false, "Return", "main");
					}
					else if (player.getLevel() < MIN_LEVEL)
					{
						return showText(st, "Info", "Your level is too low!<br>You have to be at least level <font color=LEVEL>" + MIN_LEVEL + "</font>,<br>to use my services!", false, "Return", "main");
					}
					else if (player.isInCombat())
					{
						return showText(st, "Info", "You can't buff while you are attacking!<br>Stop your fight and try again!", false, "Return", "main");
					}
					else
					{
						return rebuildMainHtml(st);
					}
				}
			}
			else if (!ENABLE_VIP_BUFFER && !player.hasPremiumBonus())
			{
				return rebuildMainHtml(st);
			}
			else if (!BUFF_WITH_KARMA && (player.getKarma() > 0))
			{
				return showText(st, "Info", "You have too much <font color=FF0000>karma!</font><br>Come back,<br>when you don't have any karma!", false, "Return", "main");
			}
			else if (OlympiadManager.getInstance().isRegistered(player))
			{
				return showText(st, "Info", "You can't buff while you are <font color=FF0000>registred in games olympics!</font><br>Come back,<br>when you don't have registred in games olympics!", false, "Return", "main");
			}
			else if (player.getLevel() < MIN_LEVEL)
			{
				return showText(st, "Info", "Your level is too low!<br>You have to be at least level <font color=LEVEL>" + MIN_LEVEL + "</font>,<br>to use my services!", false, "Return", "main");
			}
			else if (player.isInCombat())
			{
				return showText(st, "Info", "You can't buff while you are attacking!<br>Stop your fight and try again!", false, "Return", "main");
			}
			else
			{
				return rebuildMainHtml(st);
			}
			return showText(st, "Sorry", "This buffer is only for VIP's!<br>Contact the administrator for more info!", false, "Return", "main");
		}
		else
		{
			return showText(st, "Sorry", "You have to wait a while!<br>if you wish to use my services!", false, "Return", "main");
		}
	}

	@Override
	public boolean showResult(Player player, String res)
	{
		if (SMART_WINDOW)
		{
			if ((player != null) && (res != null) && res.startsWith("<html>"))
			{
				final NpcHtmlMessage npcReply = new NpcHtmlMessage(5, 1); /* ! */
				npcReply.setHtml(player, res);
				player.sendPacket(npcReply);
				player.sendPacket(ActionFail.STATIC_PACKET);
				return false;
			}
		}
		return super.showResult(player, res);
	}

	private String getSkillIconHtml(int id, int level)
	{
		final String iconNumber = getSkillIconNumber(id, level);
		return "<button action=\"bypass -h Quest " + QUEST_LOADING_INFO + " description " + id + " " + level + " x\" width=32 height=32 back=\"Icon.skill" + iconNumber + "\" fore=\"Icon.skill" + iconNumber + "\">";
	}

	private String getSkillIconNumber(int id, int level)
	{
		String formato;
		if (id == 4)
		{
			formato = "0004";
		}
		else if ((id > 9) && (id < 100))
		{
			formato = "00" + id;
		}
		else if ((id > 99) && (id < 1000))
		{
			formato = "0" + id;
		}
		else if (id == 1517)
		{
			formato = "1536";
		}
		else if (id == 1518)
		{
			formato = "1537";
		}
		else if (id == 1547)
		{
			formato = "0065";
		}
		else if (id == 2076)
		{
			formato = "0195";
		}
		else if ((id > 4550) && (id < 4555))
		{
			formato = "5739";
		}
		else if ((id > 4698) && (id < 4701))
		{
			formato = "1331";
		}
		else if ((id > 4701) && (id < 4704))
		{
			formato = "1332";
		}
		else if (id == 6049)
		{
			formato = "0094";
		}
		else
		{
			formato = String.valueOf(id);
		}
		return formato;
	}

	static public void main(String[] args)
	{
		new PremiumBuffer(-1, QUEST_LOADING_INFO, "custom");
	}
}

 

asinaturaskull.jpg
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts recomendados


  • 0
2 horas atrás, coldplay disse:

tem certeza que esse código gera um botão chamado "SET BUFF"?

esse codigo gera todos os htmls do npc buff, a parte responsavel pelo botao do set buff é essa

 

if (ENABLE_BUFF_SET)
        {
            if (td > 2)
            {
                td = 0;
            }
            MESSAGE += TRS[td] + "<button value=\"" + bottonA + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " castBuffSet 0 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
            td += 2;
        }

asinaturaskull.jpg
Link para o comentário
Compartilhar em outros sites

  • 0

Se você sabe qual a parte do código responsável pela parte que quer alterar, basta adicionar a condição que precisa criar.

Então, o `if` que você informou passaria a ser:
 

 if (ENABLE_BUFF_SET && st.getPlayer().getStatus().getLevel() < 40)


Ou esse. Pelos exemplos do próprio NPC que você passou, parece ser o que sua rev está utilizando
 

 if (ENABLE_BUFF_SET && st.getPlayer().getLevel() < 40)

 

Editado por coldplay
Link para o comentário
Compartilhar em outros sites

  • 0
6 minutos atrás, coldplay disse:

Se você sabe qual a parte do código responsável pela parte que quer alterar, basta adicionar a condição que precisa criar.

Então, o `if` que você informou passaria a ser:
 

 if (ENABLE_BUFF_SET && st.getPlayer().getStatus().getLevel() < 40)


Ou esse. Pelos exemplos do próprio NPC que você passou, parece ser o que sua rev está utilizando
 

 if (ENABLE_BUFF_SET && st.getPlayer().getLevel() < 40)

obrigado pela ajuda o meu erro estava sendo justamente onde por o codigo, nao era nessa parte do botao que eu deveria por, ja que nessa parte é apenas a area responsavel pelo botao kkkkkkkkkkk

 

nas config eu adicionei

Citar

private static final int MAX_LEVEL_SET_BUFF = 40;

 

e nas case do set_buff eu adicionei assim

Citar

if (player.getLevel() > MAX_LEVEL_SET_BUFF)
                        {
                            return showText(st, "Info", "Your level is too low!<br>You have to be at least level <font color=LEVEL>" + MAX_LEVEL_SET_BUFF + "</font>,<br>to use my services!", false, "Return", "main");
                        }

ja testei e funcionou kkkkkkkk vlw meu irmao.

 

vou estar aqui postando o codigo total caso um dia alguem procure por isso

Citar

 

/*
 * This program 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.
 *
 * This program 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://l2jeternity.com/>.
 */
package services;

import static l2e.commons.util.Util.formatAdena;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import gnu.trove.list.array.TIntArrayList;
import l2e.gameserver.data.parser.SkillsParser;
import l2e.gameserver.database.DatabaseFactory;
import l2e.gameserver.instancemanager.QuestManager;
import l2e.gameserver.model.actor.Npc;
import l2e.gameserver.model.actor.Player;
import l2e.gameserver.model.actor.Summon;
import l2e.gameserver.model.actor.instance.CubicInstance;
import l2e.gameserver.model.actor.instance.PetInstance;
import l2e.gameserver.model.actor.instance.ServitorInstance;
import l2e.gameserver.model.actor.stat.PcStat;
import l2e.gameserver.model.actor.stat.SummonStat;
import l2e.gameserver.model.actor.status.PcStatus;
import l2e.gameserver.model.actor.status.SummonStatus;
import l2e.gameserver.model.olympiad.OlympiadManager;
import l2e.gameserver.model.quest.Quest;
import l2e.gameserver.model.quest.QuestState;
import l2e.gameserver.model.skills.Skill;
import l2e.gameserver.model.skills.SkillType;
import l2e.gameserver.network.SystemMessageId;
import l2e.gameserver.network.serverpackets.ActionFail;
import l2e.gameserver.network.serverpackets.NpcHtmlMessage;
import l2e.gameserver.network.serverpackets.SetSummonRemainTime;
import l2e.gameserver.network.serverpackets.SetupGauge;

public class PremiumBuffer extends Quest
{
    private static final boolean DEBUG = false;

    private static void print(Exception e)
    {
        _log.warning(">>>" + e.toString() + "<<<");
        if (DEBUG)
        {
            e.printStackTrace();
        }
    }

    private static final String QUEST_LOADING_INFO = "PremiumBuffer";
    private static final int NPC_ID = 65535;

    private static final String TITLE_NAME = "Shiela";
    private static final boolean SMART_WINDOW = true;
    private static final boolean ENABLE_VIP_BUFFER = false;
    private static final boolean ONLY_FOR_VIP = false;
    private static final boolean ENABLE_BUFF_SECTION = true;
    private static final boolean ENABLE_SCHEME_SYSTEM = true;
    private static final boolean ENABLE_HEAL = true;
    private static final boolean ENABLE_BUFFS = true;
    private static final boolean ENABLE_RESIST = true;
    private static final boolean ENABLE_SONGS = true;
    private static final boolean ENABLE_DANCES = true;
    private static final boolean ENABLE_CHANTS = true;
    private static final boolean ENABLE_OTHERS = false;
    private static final boolean ENABLE_SPECIAL = false;
    private static final boolean ENABLE_CUBIC = false;
    private static final boolean ENABLE_BUFF_REMOVE = true;
    private static final boolean ENABLE_BUFF_SET = true;
    private static final boolean BUFF_WITH_KARMA = false;
    private static final boolean FREE_BUFFS = false;
    private static final boolean TIME_OUT = true;
    private static final int TIME_OUT_TIME = 10;
    private static final int MIN_LEVEL = 5;
    private static final int MAX_LEVEL_SET_BUFF = 40;
    private static final int BUFF_REMOVE_PRICE = 110000;
    private static final int HEAL_PRICE = 110000;
    private static final int BUFF_PRICE = 40000;
    private static final int RESIST_PRICE = 40000;
    private static final int SONG_PRICE = 40000;
    private static final int DANCE_PRICE = 40000;
    private static final int CHANT_PRICE = 15000;
    private static final int OTHERS_PRICE = 40000;
    private static final int SPECIAL_PRICE = 40000;
    private static final int CUBIC_PRICE = 40000;
    private static final int BUFF_SET_PRICE = 0;
    private static final int SCHEME_BUFF_PRICE = 6500000;
    private static final int SCHEMES_PER_PLAYER = 3;
    private static final int CONSUMABLE_ID = 57;
    private static final int MAX_SCHEME_BUFFS = 24;
    private static final int MAX_SCHEME_DANCES = 12;

    private static final String SET_FIGHTER = "Fighter";
    private static final String SET_MAGE = "Mage";
    private static final String SET_ALL = "All";
    private static final String SET_NONE = "None";

    private String rebuildMainHtml(QuestState st)
    {
        String MAIN_HTML_MESSAGE = "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32>";
        String MESSAGE = "";
        int td = 0;
        final String[] TRS =
        {
            "<tr><td height=25>",
            "</td>",
            "<td height=25>",
            "</td></tr>"
        };

        final String bottonA, bottonB, bottonC;
        if (st.getInt("Pet-On-Off") == 1)
        {
            bottonA = "Auto Buff Pet";
            bottonB = "Heal My Pet";
            bottonC = "Remove Pet Buffs";
            MAIN_HTML_MESSAGE += "<button value=\"NOW Pet Options\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " buffpet 0 0 0\" width=135 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
        }
        else
        {
            bottonA = "Auto Buff";
            bottonB = "Heal";
            bottonC = "Remove Buffs";
            MAIN_HTML_MESSAGE += "<button value=\"NOW Char Options\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " buffpet 1 0 0\" width=135 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
        }

        if (ENABLE_BUFF_SECTION)
        {
            if (ENABLE_BUFFS)
            {
                if (td > 2)
                {
                    td = 0;
                }
                MESSAGE += TRS[td] + "<button value=\"Buffs I\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_buffs 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
                td += 2;
            }
            if (ENABLE_BUFFS)
            {
                if (td > 2)
                {
                    td = 0;
                }
                MESSAGE += TRS[td] + "<button value=\"Buffs II\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_kamael 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
                td += 2;
            }
            if (ENABLE_RESIST)
            {
                if (td > 2)
                {
                    td = 0;
                }
                MESSAGE += TRS[td] + "<button value=\"Buffs III\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_resists 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
                td += 2;
            }
            if (ENABLE_SONGS)
            {
                if (td > 2)
                {
                    td = 0;
                }
                MESSAGE += TRS[td] + "<button value=\"Songs\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_songs 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
                td += 2;
            }
            if (ENABLE_DANCES)
            {
                if (td > 2)
                {
                    td = 0;
                }
                MESSAGE += TRS[td] + "<button value=\"Dances\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_dances 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
                td += 2;
            }
            if (ENABLE_CHANTS)
            {
                if (td > 2)
                {
                    td = 0;
                }
                MESSAGE += TRS[td] + "<button value=\"Chants\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_chants 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
                td += 2;
            }
            if (ENABLE_SPECIAL)
            {
                if (td > 2)
                {
                    td = 0;
                }
                MESSAGE += TRS[td] + "<button value=\"Special\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_special 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
                td += 2;
            }
            if (ENABLE_OTHERS)
            {
                if (td > 2)
                {
                    td = 0;
                }
                MESSAGE += TRS[td] + "<button value=\"Others\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_others 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
                td += 2;
            }
        }

        if (ENABLE_CUBIC)
        {
            if (td > 2)
            {
                td = 0;
            }
            MESSAGE += TRS[td] + "<button value=\"Cubics\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect view_cubic 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
            td += 2;
        }

        if (MESSAGE.length() > 0)
        {
            MAIN_HTML_MESSAGE += "<BR1><table width=100% border=0 cellspacing=0 cellpadding=1><tr>" + "<td align=center><font color=696969>Buffs:</font> <font color=FFD700> 40.000 </font></td><td align=right></td></tr></table>" + "<BR1><table cellspacing=0 cellpadding=0>" + MESSAGE + "</table>";
            MESSAGE = "";
            td = 0;
        }

        if (ENABLE_BUFF_SET)
        {
            if (td > 2)
            {
                td = 0;
            }
            MESSAGE += TRS[td] + "<button value=\"" + bottonA + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " castBuffSet 0 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
            td += 2;
        }

        if (ENABLE_HEAL)
        {
            if (td > 2)
            {
                td = 0;
            }
            MESSAGE += TRS[td] + "<button value=\"" + bottonB + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " heal 0 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
            td += 2;
        }

        if (ENABLE_BUFF_REMOVE)
        {
            if (td > 2)
            {
                td = 0;
            }
            MESSAGE += TRS[td] + "<button value=\"" + bottonC + "\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " removeBuffs 0 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">" + TRS[td + 1];
            td += 2;
        }

        if (MESSAGE.length() > 0)
        {
            MAIN_HTML_MESSAGE += "<BR1><BR><table width=100% border=0 cellspacing=0 cellpadding=1><tr>" + "<td align=center><font color=696969>Preset: </font><font color=FFD700>110.000</font></td><td align=right><font color=LEVEL>" + "</font></td></tr></table>" + "<BR1><table cellspacing=0 cellpadding=0>" + MESSAGE + "</table>";
            MESSAGE = "";
            td = 0;
        }

        if (ENABLE_SCHEME_SYSTEM)
        {
            MAIN_HTML_MESSAGE += generateScheme(st);
        }

        if (st.getPlayer().isGM())
        {
            MAIN_HTML_MESSAGE += "<br><button value=\"GM Manage Buffs\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " redirect manage_buffs 0 0\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";
        }
        MAIN_HTML_MESSAGE += "<br><font color=303030>" + TITLE_NAME + "</font>" + "</center></body></html>

 

 

asinaturaskull.jpg
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Registre-se

    Faça parte da maior e  mais antigas comunidades sobre Lineage2 da América Latina.





  • Patrocinadores

  • Quem Está Navegando

    • Nenhum usuário registrado visualizando esta página.
  • Posts

    • Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?    
    • muchas gracias muy lindos NPC 🙂
    • relaxa jovem gafanhoto, testa as quests. e posTa os erros indesejaveis.  
    • Se alguém pudesse me ensinar como codificar as missões, eu ficaria feliz em fazer isso sozinho ou pelo menos ajudar. Eu realmente quero jogar em um servidor onde todas as quests funcionem bem e melhor ainda se você puder fazer quests customizadas!
    • mas no interlude, nem todas as quests de class,  vai mostrar onde tem que ir, ate o reborn nao mostrava quando era interlude, só mostrou depois que eles colocaram client classic pra rodar, e ficou melhor ainda quando virou hellbound em diante, mas ha sim alguma chance de modificar isso direto no script para fazer igualmente, só basta te um pouco de paciencia e persistencia exato
    • 408_PathToElvenwizard dá Orion eu tive que mexer tbm, até modifiquei e consegui deixar ela igual do Classic, com a seta e a marcação no mapa. (não retail IL) Dá pra importar py de várias revs, o foda é que não da regular as quest py através do debug em tempo real, pelo menos eu não consegui rsrs
    • Hasta el momento todas las QUESTS son completables si te guias con un tutorial de youtube. El problema es que tienen bugs de locacion y de subquests que no avanzan o no te marcan correctamente a donde ir en el mapa, cosa que en Retail si se ve como corresponde.
    • estranho, mas pelo menos a galera nunca reclamo das quests quando tinha aberto 5x, geral fez class primeira e segunda job, poucos que compraram a class
    • en RUSaCis-3.5 data pack, las Quests estan en formato .java y son diferentes a como estan redactadas en jOrion y jFrozen 1.5 (ProyectX) package net.sf.l2j.gameserver.scripting.quest; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.enums.Paperdoll; import net.sf.l2j.gameserver.enums.QuestStatus; import net.sf.l2j.gameserver.enums.actors.ClassId; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Npc; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.network.serverpackets.SocialAction; import net.sf.l2j.gameserver.scripting.QuestState; public class Q224_TestOfSagittarius extends SecondClassQuest { private static final String QUEST_NAME = "Q224_TestOfSagittarius"; // Items private static final int BERNARD_INTRODUCTION = 3294; private static final int HAMIL_LETTER_1 = 3295; private static final int HAMIL_LETTER_2 = 3296; private static final int HAMIL_LETTER_3 = 3297; private static final int HUNTER_RUNE_1 = 3298; private static final int HUNTER_RUNE_2 = 3299; private static final int TALISMAN_OF_KADESH = 3300; private static final int TALISMAN_OF_SNAKE = 3301; private static final int MITHRIL_CLIP = 3302; private static final int STAKATO_CHITIN = 3303; private static final int REINFORCED_BOWSTRING = 3304; private static final int MANASHEN_HORN = 3305; private static final int BLOOD_OF_LIZARDMAN = 3306; private static final int CRESCENT_MOON_BOW = 3028; private static final int WOODEN_ARROW = 17; // Rewards private static final int MARK_OF_SAGITTARIUS = 3293; // NPCs private static final int BERNARD = 30702; private static final int HAMIL = 30626; private static final int SIR_ARON_TANFORD = 30653; private static final int VOKIAN = 30514; private static final int GAUEN = 30717; // Monsters private static final int ANT = 20079; private static final int ANT_CAPTAIN = 20080; private static final int ANT_OVERSEER = 20081; private static final int ANT_RECRUIT = 20082; private static final int ANT_PATROL = 20084; private static final int ANT_GUARD = 20086; private static final int NOBLE_ANT = 20089; private static final int NOBLE_ANT_LEADER = 20090; private static final int BREKA_ORC_SHAMAN = 20269; private static final int BREKA_ORC_OVERLORD = 20270; private static final int MARSH_STAKATO_WORKER = 20230; private static final int MARSH_STAKATO_SOLDIER = 20232; private static final int MARSH_STAKATO_DRONE = 20234; private static final int MARSH_SPIDER = 20233; private static final int ROAD_SCAVENGER = 20551; private static final int MANASHEN_GARGOYLE = 20563; private static final int LETO_LIZARDMAN = 20577; private static final int LETO_LIZARDMAN_ARCHER = 20578; private static final int LETO_LIZARDMAN_SOLDIER = 20579; private static final int LETO_LIZARDMAN_WARRIOR = 20580; private static final int LETO_LIZARDMAN_SHAMAN = 20581; private static final int LETO_LIZARDMAN_OVERLORD = 20582; private static final int SERPENT_DEMON_KADESH = 27090; public Q224_TestOfSagittarius() { super(224, "Test Of Sagittarius"); setItemsIds(BERNARD_INTRODUCTION, HAMIL_LETTER_1, HAMIL_LETTER_2, HAMIL_LETTER_3, HUNTER_RUNE_1, HUNTER_RUNE_2, TALISMAN_OF_KADESH, TALISMAN_OF_SNAKE, MITHRIL_CLIP, STAKATO_CHITIN, REINFORCED_BOWSTRING, MANASHEN_HORN, BLOOD_OF_LIZARDMAN, CRESCENT_MOON_BOW); addQuestStart(BERNARD); addTalkId(BERNARD, HAMIL, SIR_ARON_TANFORD, VOKIAN, GAUEN); addMyDying(ANT, ANT_CAPTAIN, ANT_OVERSEER, ANT_RECRUIT, ANT_PATROL, ANT_GUARD, NOBLE_ANT, NOBLE_ANT_LEADER, BREKA_ORC_SHAMAN, BREKA_ORC_OVERLORD, MARSH_STAKATO_WORKER, MARSH_STAKATO_SOLDIER, MARSH_STAKATO_DRONE, MARSH_SPIDER, ROAD_SCAVENGER, MANASHEN_GARGOYLE, LETO_LIZARDMAN, LETO_LIZARDMAN_ARCHER, LETO_LIZARDMAN_SOLDIER, LETO_LIZARDMAN_WARRIOR, LETO_LIZARDMAN_SHAMAN, LETO_LIZARDMAN_OVERLORD, SERPENT_DEMON_KADESH); } @Override public String onAdvEvent(String event, Npc npc, Player player) { String htmltext = event; QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; // BERNARD if (event.equalsIgnoreCase("30702-04.htm")) { st.setState(QuestStatus.STARTED); st.setCond(1); playSound(player, SOUND_ACCEPT); giveItems(player, BERNARD_INTRODUCTION, 1); if (giveDimensionalDiamonds39(player)) htmltext = "30702-04a.htm"; } // HAMIL else if (event.equalsIgnoreCase("30626-03.htm")) { st.setCond(2); playSound(player, SOUND_MIDDLE); takeItems(player, BERNARD_INTRODUCTION, 1); giveItems(player, HAMIL_LETTER_1, 1); } else if (event.equalsIgnoreCase("30626-07.htm")) { st.setCond(5); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_1, 10); giveItems(player, HAMIL_LETTER_2, 1); } // SIR_ARON_TANFORD else if (event.equalsIgnoreCase("30653-02.htm")) { st.setCond(3); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_1, 1); } // VOKIAN else if (event.equalsIgnoreCase("30514-02.htm")) { st.setCond(6); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_2, 1); } return htmltext; } @Override public String onTalk(Npc npc, Player player) { String htmltext = getNoQuestMsg(); QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; switch (st.getState()) { case CREATED: if (player.getClassId() != ClassId.ROGUE && player.getClassId() != ClassId.ELVEN_SCOUT && player.getClassId() != ClassId.ASSASSIN) htmltext = "30702-02.htm"; else if (player.getStatus().getLevel() < 39) htmltext = "30702-01.htm"; else htmltext = "30702-03.htm"; break; case STARTED: int cond = st.getCond(); switch (npc.getNpcId()) { case BERNARD: htmltext = "30702-05.htm"; break; case HAMIL: if (cond == 1) htmltext = "30626-01.htm"; else if (cond == 2 || cond == 3) htmltext = "30626-04.htm"; else if (cond == 4) htmltext = "30626-05.htm"; else if (cond > 4 && cond < 8) htmltext = "30626-08.htm"; else if (cond == 8) { htmltext = "30626-09.htm"; st.setCond(9); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_2, 10); giveItems(player, HAMIL_LETTER_3, 1); } else if (cond > 8 && cond < 12) htmltext = "30626-10.htm"; else if (cond == 12) { htmltext = "30626-11.htm"; st.setCond(13); playSound(player, SOUND_MIDDLE); } else if (cond == 13) htmltext = "30626-12.htm"; else if (cond == 14) { htmltext = "30626-13.htm"; takeItems(player, BLOOD_OF_LIZARDMAN, -1); takeItems(player, CRESCENT_MOON_BOW, 1); takeItems(player, TALISMAN_OF_KADESH, 1); giveItems(player, MARK_OF_SAGITTARIUS, 1); rewardExpAndSp(player, 54726, 20250); player.broadcastPacket(new SocialAction(player, 3)); playSound(player, SOUND_FINISH); st.exitQuest(false); } break; case SIR_ARON_TANFORD: if (cond == 2) htmltext = "30653-01.htm"; else if (cond > 2) htmltext = "30653-03.htm"; break; case VOKIAN: if (cond == 5) htmltext = "30514-01.htm"; else if (cond == 6) htmltext = "30514-03.htm"; else if (cond == 7) { htmltext = "30514-04.htm"; st.setCond(8); playSound(player, SOUND_MIDDLE); takeItems(player, TALISMAN_OF_SNAKE, 1); } else if (cond > 7) htmltext = "30514-05.htm"; break; case GAUEN: if (cond == 9) { htmltext = "30717-01.htm"; st.setCond(10); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_3, 1); } else if (cond == 10) htmltext = "30717-03.htm"; else if (cond == 11) { htmltext = "30717-02.htm"; st.setCond(12); playSound(player, SOUND_MIDDLE); takeItems(player, MANASHEN_HORN, 1); takeItems(player, MITHRIL_CLIP, 1); takeItems(player, REINFORCED_BOWSTRING, 1); takeItems(player, STAKATO_CHITIN, 1); giveItems(player, CRESCENT_MOON_BOW, 1); giveItems(player, WOODEN_ARROW, 10); } else if (cond > 11) htmltext = "30717-04.htm"; break; } break; case COMPLETED: htmltext = getAlreadyCompletedMsg(); break; } return htmltext; } @Override public void onMyDying(Npc npc, Creature killer) { final Player player = killer.getActingPlayer(); final QuestState st = checkPlayerState(player, npc, QuestStatus.STARTED); if (st == null) return; switch (npc.getNpcId()) { case ANT: case ANT_CAPTAIN: case ANT_OVERSEER: case ANT_RECRUIT: case ANT_PATROL: case ANT_GUARD: case NOBLE_ANT: case NOBLE_ANT_LEADER: if (st.getCond() == 3 && dropItems(player, HUNTER_RUNE_1, 1, 10, 500000)) st.setCond(4); break; case BREKA_ORC_SHAMAN: case BREKA_ORC_OVERLORD: if (st.getCond() == 6 && dropItems(player, HUNTER_RUNE_2, 1, 10, 500000)) { st.setCond(7); giveItems(player, TALISMAN_OF_SNAKE, 1); } break; case MARSH_STAKATO_WORKER: case MARSH_STAKATO_SOLDIER: case MARSH_STAKATO_DRONE: if (st.getCond() == 10 && dropItems(player, STAKATO_CHITIN, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, REINFORCED_BOWSTRING)) st.setCond(11); break; case MARSH_SPIDER: if (st.getCond() == 10 && dropItems(player, REINFORCED_BOWSTRING, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case ROAD_SCAVENGER: if (st.getCond() == 10 && dropItems(player, MITHRIL_CLIP, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, REINFORCED_BOWSTRING, STAKATO_CHITIN)) st.setCond(11); break; case MANASHEN_GARGOYLE: if (st.getCond() == 10 && dropItems(player, MANASHEN_HORN, 1, 1, 100000) && player.getInventory().hasItems(REINFORCED_BOWSTRING, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case LETO_LIZARDMAN: case LETO_LIZARDMAN_ARCHER: case LETO_LIZARDMAN_SOLDIER: case LETO_LIZARDMAN_WARRIOR: case LETO_LIZARDMAN_SHAMAN: case LETO_LIZARDMAN_OVERLORD: if (st.getCond() == 13) { if (((player.getInventory().getItemCount(BLOOD_OF_LIZARDMAN) - 120) * 5) > Rnd.get(100)) { playSound(player, SOUND_BEFORE_BATTLE); takeItems(player, BLOOD_OF_LIZARDMAN, -1); addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } else dropItemsAlways(player, BLOOD_OF_LIZARDMAN, 1, 0); } break; case SERPENT_DEMON_KADESH: if (st.getCond() == 13) { if (player.getInventory().getItemIdFrom(Paperdoll.RHAND) == CRESCENT_MOON_BOW) { st.setCond(14); playSound(player, SOUND_MIDDLE); giveItems(player, TALISMAN_OF_KADESH, 1); } else addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } break; } } }  
×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.