[HELP] Item Buffer Buff Target?
Posted: Fri Aug 07, 2009 4:55 am
If you want to receive support we need this info to help you properly.
» Find Revision
L2J Revision Number:3349
L2JDP Revision Number:6455
Ok Well I need help with my item buffer. I found a patch on the old forum: http://www.l2jserver.com/old-forum/thre ... adid=33319
So i applied it and it works had to fix a few problems but nothing major, anyway I wanna make a command in the buffer where if the targettype is target the players target if it is an l2pcinstance will be buffed.
Here is the Buffcommands.java
Here is where id decides the target type:
Problem is when i use the targettype player i get an error on gameserver load that says:
So i look in the log and it says:
Which doesn't really help but i figured someone would ask to see it, so i just decided to post it.
Anyway Ive talked to a few people about it and they have all been really helpful, but everything they have told me to try hasn't worked. If someone could please show me how accomplish buffing a players party members through the target type command that would be excellent.
Thanks,
DLV123
» Find Revision
L2J Revision Number:3349
L2JDP Revision Number:6455
Ok Well I need help with my item buffer. I found a patch on the old forum: http://www.l2jserver.com/old-forum/thre ... adid=33319
So i applied it and it works had to fix a few problems but nothing major, anyway I wanna make a command in the buffer where if the targettype is target the players target if it is an l2pcinstance will be buffed.
Here is the Buffcommands.java
Code: Select all
package handlers.buffercommandhandlers; import java.util.StringTokenizer; import javolution.text.TextBuilder;import javolution.util.FastList;import javolution.util.FastMap;import net.sf.l2j.Config;import net.sf.l2j.gameserver.datatables.BufferSkillsTable;import net.sf.l2j.gameserver.datatables.CharSchemesTable;import net.sf.l2j.gameserver.datatables.SkillTable;import net.sf.l2j.gameserver.handler.IBufferCommandHandler;import net.sf.l2j.gameserver.model.L2Skill.SkillTargetType;import net.sf.l2j.gameserver.model.actor.L2Character;import net.sf.l2j.gameserver.model.L2Skill;import net.sf.l2j.gameserver.model.olympiad.Olympiad;import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; /** * <b><font size=3>NPC Buffer instance handler</font></b><br> * <br> * This class contains some methods that can be sorted by different types and functions:<br><br> * * - Methods that overrides to superclass' (L2FolkInstance): * <li>onAction * <li>onBypassFeedback * <li>onActionShift * <br><br> * * - Methods to show html windows: * <li>showGiveBuffsWindow * <li>showManageSchemeWindow * <li>showEditSchemeWindow * <br></br> * * - Methods to get and build info (Strings, future html content) from character schemes, state, etc. * <li>getPlayerSchemeListFrame: Returns a table with player's schemes names * <li>getGroupSkillListFrame: Returns a table with skills available in the skill_group * <li>getPlayerSkillListFrame: Returns a table with skills already in player's scheme (scheme_key) * * <br> * <br> * @author House */ public class BufferCommands implements IBufferCommandHandler { private static final String PARENT_DIR = "data/html/mods/buffer/"; private static final String[] BUFFER_COMMANDS = { "item_menu", "item_support", "item_givebuffs", "item_editscheme", "item_skill", "item_skillselect", "item_skillunselect", "item_manageschemes", "item_createscheme", "item_deletescheme", "item_clearscheme", "item_heal", "item_debuff" }; public boolean useBufferCommand(String command, L2PcInstance player) { // initial menu StringTokenizer st = new StringTokenizer(command, " "); st.nextToken(); if (command.startsWith("item_menu")) { NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(PARENT_DIR+"menu.htm"); sendHtmlMessage(player, html); } // handles giving effects {support player, support pet, givebuffs} else if (command.startsWith("item_support")) { String targettype = st.nextToken(); showGiveBuffsWindow(player, targettype); } else if (command.startsWith("item_givebuffs")) { if(player.isInOlympiadMode() || Olympiad.getInstance().isRegistered(player)){ TextBuilder tb = new TextBuilder(); tb.append("<html><title>Buffer</title>"); tb.append("<body> Buffing at Olympiad is not allowed! </body></html>"); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(tb.toString()); sendHtmlMessage(player, html); } else { String targettype = st.nextToken(); String scheme_key = st.nextToken(); int cost = Integer.parseInt(st.nextToken()); if (cost == 0 || cost <= player.getInventory().getAdena()) { L2Character target = player; if (targettype.equalsIgnoreCase("pet")) target = player.getPet(); if (targettype.equalsIgnoreCase("player")) target = player.getTarget(player); if (target != null) { for (L2Skill sk : CharSchemesTable.getInstance().getScheme(player.getObjectId(), scheme_key)) { sk.getEffects(player, target); } player.reduceAdena("NPC Buffer", cost, null, true); } else { player.sendMessage("Incorrect Pet"); // go to main menu NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(PARENT_DIR+"menu.htm"); sendHtmlMessage(player, html); } } else { player.sendMessage("Not enough adena"); showGiveBuffsWindow(player, targettype); } } } // handles edit schemes {skillselect, skillunselect} else if (command.startsWith("item_editscheme")) { String skill_group = st.nextToken(); String scheme_key = null; try { scheme_key = st.nextToken(); } catch (Exception e) { // ignored... } showEditSchemeWindow(player, skill_group, scheme_key); } else if (command.startsWith("item_skill")) { String skill_group = st.nextToken(); String scheme_key = st.nextToken(); int skill_id = Integer.parseInt(st.nextToken()); int level = BufferSkillsTable.getInstance().getSkillLevelById(skill_id); if (command.startsWith("item_skillselect") && !scheme_key.equalsIgnoreCase("unselected")) { if (CharSchemesTable.getInstance().getScheme(player.getObjectId(), scheme_key).size()< Config.NPCBUFFER_MAX_SKILLS) CharSchemesTable.getInstance().getScheme(player.getObjectId(), scheme_key).add(SkillTable.getInstance().getInfo(skill_id, level)); else player.sendMessage("This scheme has reached maximun amount of buffs."); } else if (command.startsWith("item_skillunselect")) { CharSchemesTable.getInstance().getScheme(player.getObjectId(), scheme_key).remove(SkillTable.getInstance().getInfo(skill_id, level)); } showEditSchemeWindow(player, skill_group, scheme_key); } // manage schemes {create, delete, clear} else if (command.startsWith("item_manageschemes")) { showManageSchemeWindow(player); } // handles creation else if (command.startsWith("item_createscheme")) { String name = null; String name2 = null; try { name = st.nextToken(); try { name2 = st.nextToken(); } catch (Exception e){} } catch (Exception e){} if (name == null || name.length() > 14 || name2 != null) { player.sendMessage("Error: Scheme's name must contain up to 14 chars without any spaces"); showManageSchemeWindow(player); } else if (CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()) != null && CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).size() == Config.NPCBUFFER_MAX_SCHEMES) { player.sendMessage("Error: Maximun schemes amount reached, please delete one before creating a new one"); showManageSchemeWindow(player); } else if (CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()) != null && CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).containsKey(name)) { player.sendMessage("Error: Duplicate entry. Please use another name"); showManageSchemeWindow(player); } else { if (CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()) == null) CharSchemesTable.getInstance().getSchemesTable().put(player.getObjectId(), new FastMap<String, FastList<L2Skill>>(Config.NPCBUFFER_MAX_SCHEMES+1)); CharSchemesTable.getInstance().setScheme(player.getObjectId(), name.trim(), new FastList<L2Skill>(Config.NPCBUFFER_MAX_SKILLS+1)); showManageSchemeWindow(player); } } // handles deletion else if (command.startsWith("item_deletescheme")) { String name = st.nextToken(); if (CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()) != null && CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).containsKey(name)) { CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).remove(name); showManageSchemeWindow(player); } } // handles cleanning else if (command.startsWith("item_clearscheme")) { String name = st.nextToken(); if (CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()) != null && CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).containsKey(name)) { CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).get(name).clear(); showManageSchemeWindow(player); } } else if (command.startsWith("item_heal")) { player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); player.setCurrentCp(player.getMaxCp()); showMenu(player); } else if (command.startsWith("item_debuff")) { player.stopAllEffects(); showMenu(player); } return true; } private void sendHtmlMessage(L2PcInstance player, NpcHtmlMessage html) { player.sendPacket(html); } /** * Sends an html packet to player with Give Buffs menu info for player and pet, * depending on targettype parameter {player, pet} * * @param player * @param targettype */ private void showGiveBuffsWindow(L2PcInstance player, String targettype) { TextBuilder tb = new TextBuilder(); tb.append("<html><title>LII Kingdom</title>"); tb.append("<body>"); tb.append("<table width=230 align=center valign=top>"); tb.append("<tr>"); tb.append("<td align=left><font color=\"a9df94\">Magic Flute: Buff Menu</font></td>"); tb.append("</tr>"); tb.append("</table>"); tb.append("<img src=\"L2UI_CH3.ChatWnd.Chatting_system\" width=\"275\" height=\"3\"><br><body>"); tb.append("<body> Here are your defined schemes, just click on one to receive its effects<br>"); FastMap<String, FastList<L2Skill>> map = CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()); if (CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()) == null || CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).isEmpty()) tb.append("You have not defined any valid scheme, please go to Manage scheme and create at least one."); else { int cost; tb.append("<table>"); for (FastMap.Entry<String, FastList<L2Skill>> e = map.head(), end = map.tail(); (e = e.getNext()) != end;) { cost = getFee(e.getValue()); tb.append("<tr><td width=\"90\"><a action=\"bypass -h item_givebuffs "+targettype+" "+e.getKey()+" "+String.valueOf(cost)+"\">"+e.getKey()+"</a></td><td>Fee: "+String.valueOf(cost)+"</td></tr>"); } tb.append("</table>"); } tb.append("<br><br><a action=\"bypass -h item_menu\">Back</a>"); tb.append("</body></html>"); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(tb.toString()); sendHtmlMessage(player, html); } /** * Sends an html packet to player with Manage scheme menu info. This allows player * to create/delete/clear schemes * * @param player */ private void showManageSchemeWindow(L2PcInstance player) { TextBuilder tb = new TextBuilder(); tb.append("<html><title>LII Kingdom</title>"); tb.append("<body><table width=230 align=center valign=top>"); tb.append("<tr><td align=left><font color=a9df94>Magic Flute: Manage Schemes</font></td></tr></table>"); tb.append("<img src=L2UI_CH3.ChatWnd.Chatting_system width=275 height=3><br>"); tb.append("<body><br>"); if (CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()) == null || CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).isEmpty()) { tb.append("<font color=\"LEVEL\">You have not created a scheme. Before you can buff yourself you must first create a scheme.</font><br>"); } else { tb.append("Here is a list of your schemes. To delete one just click on drop button. To create, fill name box and press create. " +"Each scheme must have different name. Name must have up to 14 chars. Spaces (\" \") are not allowed. DO NOT click on Create until you have filled quick box<br>"); tb.append("<table>"); for (FastMap.Entry<String, FastList<L2Skill>> e = CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).head(), end = CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).tail(); (e = e.getNext()) != end;) { tb.append("<tr><td width=\"140\">"+e.getKey()+" ("+String.valueOf(CharSchemesTable.getInstance().getScheme(player.getObjectId(), e.getKey()).size())+" skill(s))</td>"); tb.append("<td width=\"75\"><button value=\"Clear\" action=\"bypass -h item_clearscheme "+e.getKey()+"\" width=75 height=24 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"); tb.append("<td width=\"75\"><button value=\"Drop\" action=\"bypass -h item_deletescheme "+e.getKey()+"\" width=75 height=24 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"); } } tb.append("<br><table width=240>"); tb.append("<tr><td><edit var=\"name\" width=120 height=15></td><td><button value=\"Create\" action=\"bypass -h item_createscheme $name\" width=75 height=24 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"); tb.append("</table>"); tb.append("<br><font color=\"LEVEL\">Max schemes per player: "+String.valueOf(Config.NPCBUFFER_MAX_SCHEMES)+"</font>"); tb.append("<br><br>"); tb.append("<button action=\"bypass -h item_menu\" value=\"Back\"width=75 height=24 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"); tb.append("</body></html>"); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(tb.toString()); sendHtmlMessage(player, html); } /** * This sends an html packet to player with Edit Scheme Menu info. This allows player to edit * each created scheme (add/delete skills) * * @param player * @param skill_group * @param scheme_key */ private void showEditSchemeWindow(L2PcInstance player, String skill_group, String scheme_key) { NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(PARENT_DIR+"schememenu.htm"); html.replace("%typesframe%", getTypesFrame(scheme_key)); if (skill_group.equalsIgnoreCase("unselected")) { html.replace("%schemelistframe%", getPlayerSchemeListFrame(player, skill_group, scheme_key)); html.replace("%skilllistframe%", getGroupSkillListFrame(player, null, null)); html.replace("%myschemeframe%", getPlayerSkillListFrame(player, null, null)); } else { html.replace("%schemelistframe%", getPlayerSchemeListFrame(player, skill_group, scheme_key)); html.replace("%skilllistframe%", getGroupSkillListFrame(player, skill_group, scheme_key)); html.replace("%myschemeframe%", getPlayerSkillListFrame(player, skill_group, scheme_key)); } sendHtmlMessage(player, html); } private void showMenu(L2PcInstance player) { NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(PARENT_DIR+"menu.htm"); sendHtmlMessage(player, html); } /** * Returns a table with info about player's scheme list.<br> * If player scheme list is null, it returns a warning message */ private String getPlayerSchemeListFrame(L2PcInstance player, String skill_group, String scheme_key) { if (CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()) == null || CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).isEmpty()) return "Please create at least one scheme"; else { if (skill_group == null) skill_group = "def"; if (scheme_key == null) scheme_key = "def"; TextBuilder tb = new TextBuilder(); tb.append("<table>"); int count = 0; for (FastMap.Entry<String, FastList<L2Skill>> e = CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).head(), end = CharSchemesTable.getInstance().getAllSchemes(player.getObjectId()).tail(); (e = e.getNext()) != end;) { if (count == 0) tb.append("<tr>"); tb.append("<td width=\"90\"><a action=\"bypass -h item_editscheme "+skill_group+" "+ e.getKey()+"\">"+e.getKey()+"</a></td>"); if (count == 3) { tb.append("</tr>"); count = 0; } count++; } if (!tb.toString().endsWith("</tr>")) tb.append("</tr>"); tb.append("</table>"); return tb.toString(); } } /** * * @param player * @param skill_group * @param scheme_key * @return a table with info about skills stored in each skill_group */ private String getGroupSkillListFrame(L2PcInstance player, String skill_group, String scheme_key) { if (skill_group == null || skill_group == "unselected") return " Please, select a valid group of skills"; else if (scheme_key == null || scheme_key == "unselected") return " Please, select a valid scheme"; TextBuilder tb = new TextBuilder(); tb.append("<table>"); int count = 0; for (L2Skill sk : BufferSkillsTable.getInstance().getSkillsByType(skill_group)) { if (CharSchemesTable.getInstance().getScheme(player.getObjectId(), scheme_key) != null && !CharSchemesTable.getInstance().getScheme(player.getObjectId(), scheme_key).isEmpty() && CharSchemesTable.getInstance().getSchemeContainsSkill(player.getObjectId(),scheme_key, sk.getId())) { continue; } if (count == 0) tb.append("<tr>"); tb.append("<td width=\"100\"><a action=\"bypass -h item_skillselect "+skill_group+" "+scheme_key+" "+String.valueOf(sk.getId())+"\">"+sk.getName()+" ("+String.valueOf(sk.getLevel())+")</a></td>"); if (count == 3) { tb.append("</tr>"); count = -1; } count++; } if (!tb.toString().endsWith("</tr>")) tb.append("</tr>"); tb.append("</table>"); return tb.toString(); } /** * * @param player * @param skill_group * @param scheme_key * @return a table with info about selected skills */ private String getPlayerSkillListFrame(L2PcInstance player, String skill_group, String scheme_key) { if (skill_group == null || skill_group=="unselected") return "<br>Please, select a valid group of skills"; else if (scheme_key == null || scheme_key=="unselected") return "<br>Please, select a valid scheme"; if (CharSchemesTable.getInstance().getScheme(player.getObjectId(), scheme_key) == null) return "Please choose your Scheme"; if (CharSchemesTable.getInstance().getScheme(player.getObjectId(), scheme_key).isEmpty()) return "Empty Scheme"; TextBuilder tb = new TextBuilder(); tb.append("Scheme: "+scheme_key+"<br>"); tb.append("<table>"); int count = 0; for (L2Skill sk : CharSchemesTable.getInstance().getScheme(player.getObjectId(), scheme_key)) { if (count == 0) tb.append("<tr>"); tb.append("<td><a action=\"bypass -h item_skillunselect "+skill_group+" "+scheme_key+" "+String.valueOf(sk.getId())+"\">"+sk.getName()+"</a></td>"); count++; if (count == 3) { tb.append("</tr>"); count = 0; } } if (!tb.toString().endsWith("<tr>")) tb.append("<tr>"); tb.append("</table>"); return tb.toString(); } /** * * @param scheme_key * @return an string with skill_groups table. */ private String getTypesFrame(String scheme_key) { TextBuilder tb = new TextBuilder(); tb.append("<table>"); int count = 0; if (scheme_key == null) scheme_key = "unselected"; for (String s : BufferSkillsTable.getInstance().getSkillsTypeList()) { if (count == 0) tb.append("<tr>"); tb.append("<td width=\"90\"><a action=\"bypass -h item_editscheme "+s+" "+scheme_key+"\">"+s+"</a></td>"); if (count == 2) { tb.append("</tr>"); count = -1; } count++; } if (!tb.toString().endsWith("</tr>")) tb.append("</tr>"); tb.append("</table>"); return tb.toString(); } /** * * @param list * @return fee for all skills contained in list. */ private int getFee(FastList<L2Skill> list) { int fee = 0; if (Config.NPCBUFFER_STATIC_BUFF_COST >= 0) return (list.size()* Config.NPCBUFFER_STATIC_BUFF_COST); else { for (L2Skill sk : list) { fee += BufferSkillsTable.getInstance().getSkillFee(sk.getId()); } return fee; } } /** * @see net.sf.l2j.gameserver.handler.IBufferCommandHandler#getBufferCommandList() */ public String[] getBufferCommandList() { return BUFFER_COMMANDS; }}
Code: Select all
L2Character target = player; if (targettype.equalsIgnoreCase("pet")) target = player.getPet(); if (targettype.equalsIgnoreCase("player")) target = player.getTarget(player);
Code: Select all
Loading Server Scripts----------1. ERROR in C:\L2J\SERVER\gameserver\data\scripts\handlers\buffercommandhandlers\BufferCommands.java (at line 108) target = player.getTarget(); ^^^^^^^^^^^^^^^^^^Type mismatch: cannot convert from L2Object to L2Character----------1 problem (1 error)Type mismatch: cannot convert from net.sf.l2j.gameserver.model.L2Object to net.sf.l2j.gameserver.model.actor.L2CharacterFailed executing script: C:\L2J\SERVER\gameserver\data\scripts\handlers\MasterHandler.java. See MasterHandler.java.error.log for details.
Code: Select all
Error on: C:\L2J\SERVER\gameserver\data\scripts\handlers\MasterHandler.java.error.logLine: -1 - Column: -1 compilation failed
Anyway Ive talked to a few people about it and they have all been really helpful, but everything they have told me to try hasn't worked. If someone could please show me how accomplish buffing a players party members through the target type command that would be excellent.
Thanks,
DLV123