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);
}
}
}
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
you are right. thats because i was so confused by some servers, in which u could either download an old client like c6 or the classic client and you could play on that server on both. So when i took the decision to start my own server i wanted it to be on the classic client and while i was searching i couldnt find any information about it. Sorry for the confusion i caused.
You are contradicting yourself!
In your first message you clearly state "I want to create a GF server on the latest client". What this means is you want a GF server that is working/running on the latest client. You didn't say "not exactly like GF". You explicitly stated that the server would be GF and the client will be whichever new client you could find. You never asked for servers either, as evident from the following excerpt: "to link Gracia Final Pack to that client". You asked how to do it, and more specifically: "Do I just get a clean install and edit ini in the client", which brought me to the conclusion that you were completely oblivious and/or delusional, hense my EXTENSIVE and ON-POINT response, if I say so myself.
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.
Link to comment
Share on other sites
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.