I am using this core buffer and I have it setup really nice, but there is only 1 thing bugging me with it. When you use 1 of the preset buffs it opens up a random html afterwards. Is there a line I can add some where in this code below that doesn't reopen the html for preset buffs? I don't want it to close after each single buff is picked tho if thats possible.
public class L2NpcBufferInstance extends L2Npc
{
private static final Logger _log = Logger.getLogger(L2NpcBufferInstance.class.getName());
private static final Map<Integer, Integer> pageVal = new HashMap<>();
/**
* Instantiates a new l2 npc buffer instance.
* @param objectId the object id
* @param template the template
*/
public L2NpcBufferInstance(int objectId, L2NpcTemplate template)
{
super(objectId, template);
setInstanceType(InstanceType.L2NpcBufferInstance);
}
@Override
public void showChatWindow(L2PcInstance player, int val)
{
if (player == null)
{
return;
}
String htmContent = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/html/mods/NpcBuffer.htm");
if (val > 0)
{
htmContent = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/html/mods/NpcBuffer-" + val + ".htm");
}
if (htmContent != null)
{
final NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(getObjectId());
npcHtmlMessage.setHtml(htmContent);
npcHtmlMessage.replace("%objectId%", String.valueOf(getObjectId()));
player.sendPacket(npcHtmlMessage);
}
player.sendPacket(ActionFailed.STATIC_PACKET);
}
@Override
public void onBypassFeedback(L2PcInstance player, String command)
{
// BypassValidation Exploit plug.
if ((player == null) || (player.getLastFolkNPC() == null) || (player.getLastFolkNPC().getObjectId() != getObjectId()))
{
return;
}
L2Character target = player;
if (command.startsWith("Pet"))
{
if (!player.hasSummon()) // TODO: Should be hasPet() ?
{
player.sendPacket(SystemMessageId.DONT_HAVE_PET);
showChatWindow(player, 0); // 0 = main window
return;
}
target = player.getSummon();
}
int npcId = getId();
if (command.startsWith("Chat"))
{
int val = Integer.parseInt(command.substring(5));
pageVal.put(player.getObjectId(), val);
showChatWindow(player, val);
}
else if (command.startsWith("Buff") || command.startsWith("PetBuff"))
{
String[] buffGroupArray = command.substring(command.indexOf("Buff") + 5).split(" ");
for (String buffGroupList : buffGroupArray)
{
if (buffGroupList == null)
{
_log.warning("NPC Buffer Warning: npcId = " + npcId + " has no buffGroup set in the bypass for the buff selected.");
return;
}
int buffGroup = Integer.parseInt(buffGroupList);
final NpcBufferData npcBuffGroupInfo = NpcBufferTable.getInstance().getSkillInfo(npcId, buffGroup);
if (npcBuffGroupInfo == null)
{
_log.warning("NPC Buffer Warning: npcId = " + npcId + " Location: " + getX() + ", " + getY() + ", " + getZ() + " Player: " + player.getName() + " has tried to use skill group (" + buffGroup + ") not assigned to the NPC Buffer!");
return;
}
if (npcBuffGroupInfo.getFee().getId() != 0)
{
L2ItemInstance itemInstance = player.getInventory().getItemByItemId(npcBuffGroupInfo.getFee().getId());
if ((itemInstance == null) || (!itemInstance.isStackable() && (player.getInventory().getInventoryItemCount(npcBuffGroupInfo.getFee().getId(), -1) < npcBuffGroupInfo.getFee().getCount())))
{
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL);
player.sendPacket(sm);
continue;
}
if (itemInstance.isStackable())
{
if (!player.destroyItemByItemId("Npc Buffer", npcBuffGroupInfo.getFee().getId(), npcBuffGroupInfo.getFee().getCount(), player.getTarget(), true))
{
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL);
player.sendPacket(sm);
continue;
}
}
else
{
for (int i = 0; i < npcBuffGroupInfo.getFee().getCount(); ++i)
{
player.destroyItemByItemId("Npc Buffer", npcBuffGroupInfo.getFee().getId(), 1, player.getTarget(), true);
}
}
}
final Skill skill = SkillData.getInstance().getSkill(npcBuffGroupInfo.getSkill().getSkillId(), npcBuffGroupInfo.getSkill().getSkillLvl());
if (skill != null)
{
skill.applyEffects(player, target);
}
}
showChatWindow(player, pageVal.get(player.getObjectId()));
}
else if (command.startsWith("Heal") || command.startsWith("PetHeal"))
{
if (!target.isInCombat() && !AttackStanceTaskManager.getInstance().hasAttackStanceTask(target))
{
String[] healArray = command.substring(command.indexOf("Heal") + 5).split(" ");
for (String healType : healArray)
{
if (healType.equalsIgnoreCase("HP"))
{
target.setCurrentHp(target.getMaxHp());
}
else if (healType.equalsIgnoreCase("MP"))
{
target.setCurrentMp(target.getMaxMp());
}
else if (healType.equalsIgnoreCase("CP"))
{
target.setCurrentCp(target.getMaxCp());
}
}
}
showChatWindow(player, pageVal.get(player.getObjectId()));
}
else if (command.startsWith("RemoveBuffs") || command.startsWith("PetRemoveBuffs"))
{
target.stopAllEffectsExceptThoseThatLastThroughDeath();
showChatWindow(player, pageVal.get(player.getObjectId()));
}
else
{
super.onBypassFeedback(player, command);
}
}
}
Telegram Bot TOP Search Promotion | SEO Optimization for Bots |
SMMTG.PRO
We promote Telegram bots to the TOP of search results — by keywords, topics, and countries.
What’s included:
• Promotion to the TOP of Telegram search
• Bot optimization for Telegram algorithms
• Competitor analysis and keyword selection
• Testing and securing stable ranking
Delivery time:
2–3 days per bot
Pricing:
Starts from $40 per bot
(final cost depends on competition level and target country)
We work with 50+ countries:
Russia • Ukraine • USA • Israel • Uzbekistan • Turkey • China • Thailand • Europe • India
Training is also available:
Telegram bot SEO optimization
Techniques & insights for reaching TOP search positions
Real-world cases and recommendations
Contact:
Telegram — t.me/smmtg_link
Our SMM panel: SMMTG.PRO
Question
brett16
I am using this core buffer and I have it setup really nice, but there is only 1 thing bugging me with it. When you use 1 of the preset buffs it opens up a random html afterwards. Is there a line I can add some where in this code below that doesn't reopen the html for preset buffs? I don't want it to close after each single buff is picked tho if thats possible.
public class L2NpcBufferInstance extends L2Npc { private static final Logger _log = Logger.getLogger(L2NpcBufferInstance.class.getName()); private static final Map<Integer, Integer> pageVal = new HashMap<>(); /** * Instantiates a new l2 npc buffer instance. * @param objectId the object id * @param template the template */ public L2NpcBufferInstance(int objectId, L2NpcTemplate template) { super(objectId, template); setInstanceType(InstanceType.L2NpcBufferInstance); } @Override public void showChatWindow(L2PcInstance player, int val) { if (player == null) { return; } String htmContent = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/html/mods/NpcBuffer.htm"); if (val > 0) { htmContent = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/html/mods/NpcBuffer-" + val + ".htm"); } if (htmContent != null) { final NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(getObjectId()); npcHtmlMessage.setHtml(htmContent); npcHtmlMessage.replace("%objectId%", String.valueOf(getObjectId())); player.sendPacket(npcHtmlMessage); } player.sendPacket(ActionFailed.STATIC_PACKET); } @Override public void onBypassFeedback(L2PcInstance player, String command) { // BypassValidation Exploit plug. if ((player == null) || (player.getLastFolkNPC() == null) || (player.getLastFolkNPC().getObjectId() != getObjectId())) { return; } L2Character target = player; if (command.startsWith("Pet")) { if (!player.hasSummon()) // TODO: Should be hasPet() ? { player.sendPacket(SystemMessageId.DONT_HAVE_PET); showChatWindow(player, 0); // 0 = main window return; } target = player.getSummon(); } int npcId = getId(); if (command.startsWith("Chat")) { int val = Integer.parseInt(command.substring(5)); pageVal.put(player.getObjectId(), val); showChatWindow(player, val); } else if (command.startsWith("Buff") || command.startsWith("PetBuff")) { String[] buffGroupArray = command.substring(command.indexOf("Buff") + 5).split(" "); for (String buffGroupList : buffGroupArray) { if (buffGroupList == null) { _log.warning("NPC Buffer Warning: npcId = " + npcId + " has no buffGroup set in the bypass for the buff selected."); return; } int buffGroup = Integer.parseInt(buffGroupList); final NpcBufferData npcBuffGroupInfo = NpcBufferTable.getInstance().getSkillInfo(npcId, buffGroup); if (npcBuffGroupInfo == null) { _log.warning("NPC Buffer Warning: npcId = " + npcId + " Location: " + getX() + ", " + getY() + ", " + getZ() + " Player: " + player.getName() + " has tried to use skill group (" + buffGroup + ") not assigned to the NPC Buffer!"); return; } if (npcBuffGroupInfo.getFee().getId() != 0) { L2ItemInstance itemInstance = player.getInventory().getItemByItemId(npcBuffGroupInfo.getFee().getId()); if ((itemInstance == null) || (!itemInstance.isStackable() && (player.getInventory().getInventoryItemCount(npcBuffGroupInfo.getFee().getId(), -1) < npcBuffGroupInfo.getFee().getCount()))) { SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL); player.sendPacket(sm); continue; } if (itemInstance.isStackable()) { if (!player.destroyItemByItemId("Npc Buffer", npcBuffGroupInfo.getFee().getId(), npcBuffGroupInfo.getFee().getCount(), player.getTarget(), true)) { SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL); player.sendPacket(sm); continue; } } else { for (int i = 0; i < npcBuffGroupInfo.getFee().getCount(); ++i) { player.destroyItemByItemId("Npc Buffer", npcBuffGroupInfo.getFee().getId(), 1, player.getTarget(), true); } } } final Skill skill = SkillData.getInstance().getSkill(npcBuffGroupInfo.getSkill().getSkillId(), npcBuffGroupInfo.getSkill().getSkillLvl()); if (skill != null) { skill.applyEffects(player, target); } } showChatWindow(player, pageVal.get(player.getObjectId())); } else if (command.startsWith("Heal") || command.startsWith("PetHeal")) { if (!target.isInCombat() && !AttackStanceTaskManager.getInstance().hasAttackStanceTask(target)) { String[] healArray = command.substring(command.indexOf("Heal") + 5).split(" "); for (String healType : healArray) { if (healType.equalsIgnoreCase("HP")) { target.setCurrentHp(target.getMaxHp()); } else if (healType.equalsIgnoreCase("MP")) { target.setCurrentMp(target.getMaxMp()); } else if (healType.equalsIgnoreCase("CP")) { target.setCurrentCp(target.getMaxCp()); } } } showChatWindow(player, pageVal.get(player.getObjectId())); } else if (command.startsWith("RemoveBuffs") || command.startsWith("PetRemoveBuffs")) { target.stopAllEffectsExceptThoseThatLastThroughDeath(); showChatWindow(player, pageVal.get(player.getObjectId())); } else { super.onBypassFeedback(player, command); } } }8 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now