melron Posted November 8, 2016 Posted November 8, 2016 (edited) Hello guys, I want to share with you my buffer ( nothing special but i like ). The buffer is Tryskell on acis and i edited htmls and the instance too (Free rev). Added fighter/mage set (with configs) with buffs animation :not bad: And Manual buffs. Also, I am not 'pro' :dat: so... There may be some mistakes.. Download Changes: ### Eclipse Workspace Patch 1.0 #P aCis_gameserver Index: config/npcs.properties =================================================================== --- config/npcs.properties (revision 5) +++ config/npcs.properties (working copy) @@ -52,6 +52,12 @@ # The list of buffs, under a skillId,buffPrice,groupType format. BufferBuffs = 264,0,Songs;265,0,Songs;266,0,Songs;267,0,Songs;268,0,Songs;269,0,Songs;270,0,Songs;304,0,Songs;305,0,Songs;306,0,Songs;308,0,Songs;349,0,Songs;363,0,Songs;364,0,Songs;271,0,Dances;272,0,Dances;273,0,Dances;274,0,Dances;275,0,Dances;276,0,Dances;277,0,Dances;309,0,Dances;310,0,Dances;311,0,Dances;1002,0,Warcryer;1006,0,Warcryer;1007,0,Warcryer;1009,0,Warcryer;1308,0,Warcryer;1309,0,Warcryer;1310,0,Warcryer;1362,0,Warcryer;1390,0,Warcryer;1391,0,Warcryer;1413,0,Warcryer;1416,0,Overlord;1003,0,Overlord;1004,0,Overlord;1005,0,Overlord;1008,0,Overlord;1249,0,Overlord;1364,0,Overlord;1365,0,Overlord;1032,0,Prophet;1033,0,Prophet;1035,0,Prophet;1036,0,Prophet;1040,0,Prophet;1043,0,Prophet;1044,0,Prophet;1045,0,Prophet;1048,0,Prophet;1059,0,Shillen_Elder;1062,0,Prophet;1068,0,Prophet;1073,0,Elder;1077,0,Shillen_Elder;1078,0,Shillen_Elder;1085,0,Prophet;1086,0,Prophet;1087,0,Elder;1182,0,Elder;1189,0,Shillen_Elder;1191,0,Prophet;1204,0,Prophet;1242,0,Shillen_Elder;1243,0,Prophet;1259,0,Elder;1268,0,Shillen_Elder;1303,0,Shillen_Elder;1304,0,Elder;1352,0,Elder;1353,0,Elder;1354,0,Elder;1388,0,Shillen_Elder;1389,0,Shillen_Elder;1392,0,Prophet;1393,0,Elder;1397,0,Elder;1355,0,Elder;1356,0,Prophet;1357,0,Shillen_Elder;1363,0,Warcryer;1414,0,Overlord +#Set of fighter buffs +FighterSet = 1087,1243,1204,1068,1388,1040,1036,1035,1048,1045,1077,1242,1086,1043,1268,1036,1363,1240,1062,271,274,275,310,304,308,306,264,267,269,349,364,268,270,1416 + +#Set of Mage buffs +MageSet = 1087,1243,1204,1040,1036,1048,1045,1389,1062,1363,1085,1059,1303,1304,273,276,365,268,270,349,264,267,268,306,308,1416 + #============================================================= # Misc #============================================================= Index: java/net/sf/l2j/Config.java =================================================================== --- java/net/sf/l2j/Config.java (revision 5) +++ java/net/sf/l2j/Config.java (working copy) @@ -297,6 +297,10 @@ public static int CHAMPION_REWARD_QTY; /** Buffer */ + public static String FIGHTER_SET; + public static int[] FIGHTER_SET_LIST; + public static String MAGE_SET; + public static int[] MAGE_SET_LIST; public static int BUFFER_MAX_SCHEMES; public static int BUFFER_MAX_SKILLS; public static int BUFFER_STATIC_BUFF_COST; @@ -885,7 +889,19 @@ BUFFER_MAX_SKILLS = npcs.getProperty("BufferMaxSkillsPerScheme", 24); BUFFER_STATIC_BUFF_COST = npcs.getProperty("BufferStaticCostPerBuff", -1); BUFFER_BUFFS = npcs.getProperty("BufferBuffs"); + FIGHTER_SET = npcs.getProperty("FighterSet", "2375,3500,3501,3502,4422,4423,4424,4425,6648,6649,6650"); + MAGE_SET = npcs.getProperty("MageSet", "2375,3500,3501,3502,4422,4423,4424,4425,6648,6649,6650"); + + String[] FighterList = FIGHTER_SET.split(","); + FIGHTER_SET_LIST = new int[FighterList.length]; + for (int i = 0; i < FighterList.length; i++) + FIGHTER_SET_LIST[i] = Integer.parseInt(FighterList[i]); + String[] MageList = MAGE_SET.split(","); + MAGE_SET_LIST = new int[MageList.length]; + for (int i = 0; i < MageList.length; i++) + MAGE_SET_LIST[i] = Integer.parseInt(MageList[i]); + BUFFER_BUFFLIST = new HashMap<>(); for (String skillInfo : BUFFER_BUFFS.split(";")) { Index: java/net/sf/l2j/gameserver/model/actor/instance/L2BufferInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2BufferInstance.java (revision 5) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2BufferInstance.java (working copy) @@ -27,9 +27,11 @@ import net.sf.l2j.commons.lang.StringUtil; import net.sf.l2j.gameserver.datatables.BufferTable; import net.sf.l2j.gameserver.datatables.SkillTable; +import net.sf.l2j.gameserver.model.L2Skill; import net.sf.l2j.gameserver.model.actor.L2Character; import net.sf.l2j.gameserver.model.actor.L2Summon; import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; +import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; public class L2BufferInstance extends L2NpcInstance @@ -42,8 +44,11 @@ @Override public void onBypassFeedback(L2PcInstance player, String command) { StringTokenizer st = new StringTokenizer(command, " "); String currentCommand = st.nextToken(); + int buffid = 0; if (currentCommand.startsWith("menu")) { @@ -52,13 +57,29 @@ html.replace("%objectId%", getObjectId()); player.sendPacket(html); } + if (currentCommand.startsWith("chat")) + { + final NpcHtmlMessage html = new NpcHtmlMessage(0); + html.setFile(getHtmlPath(getNpcId(), Integer.parseInt(st.nextToken()))); + html.replace("%objectId%", getObjectId()); + player.sendPacket(html); + } else if (currentCommand.startsWith("cleanup")) { + L2Skill buff; + buff = SkillTable.getInstance().getInfo(1056, 1); + buff.getEffects(this, player); player.stopAllEffectsExceptThoseThatLastThroughDeath(); + player.broadcastPacket(new MagicSkillUse(this, player, 1056, 1, 5, 0)); final L2Summon summon = player.getPet(); if (summon != null) + { + buff.getEffects(this, summon); + summon.broadcastPacket(new MagicSkillUse(this, summon, 1056, 1, 5, 0)); summon.stopAllEffectsExceptThoseThatLastThroughDeath(); + } + final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile(getHtmlPath(getNpcId(), 0)); @@ -69,10 +90,17 @@ { player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); player.setCurrentCp(player.getMaxCp()); + L2Skill buff = SkillTable.getInstance().getInfo(1218, 1); + buff.getEffects(this, player); + player.broadcastPacket(new MagicSkillUse(this, player, 1218, 1, 5, 0)); final L2Summon summon = player.getPet(); if (summon != null) + { + buff.getEffects(this, player); + summon.broadcastPacket(new MagicSkillUse(this, summon, 1218, 1, 5, 0)); summon.setCurrentHpMp(summon.getMaxHp(), summon.getMaxMp()); + } final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile(getHtmlPath(getNpcId(), 0)); @@ -103,6 +131,53 @@ { showEditSchemeWindow(player, st.nextToken(), st.nextToken()); } + if (currentCommand.startsWith("getbuff")) + { + buffid = Integer.parseInt(st.nextToken()); + int nextWindow = Integer.parseInt(st.nextToken()); + if (buffid != 0) + { + L2Skill buff =SkillTable.getInstance().getInfo(buffid, SkillTable.getInstance().getMaxLevel(buffid)); + buff.getEffects(this, player); + player.broadcastPacket(new MagicSkillUse(this, player, buffid, SkillTable.getInstance().getMaxLevel(buffid), 0, 0)); + final NpcHtmlMessage html = new NpcHtmlMessage(0); + html.setFile(getHtmlPath(getNpcId(), nextWindow)); + html.replace("%objectId%", getObjectId()); + player.sendPacket(html); + } + } + else if (currentCommand.startsWith("fighterSet")) + { + int fighterSet[] = Config.FIGHTER_SET_LIST; + player.stopAllEffectsExceptThoseThatLastThroughDeath(); + L2Skill buff ; + for (int id: fighterSet) + { + buff = SkillTable.getInstance().getInfo(id, SkillTable.getInstance().getMaxLevel(id)); + buff.getEffects(this, player); + player.broadcastPacket(new MagicSkillUse(this, player, id, buff.getLevel(), 0, 0)); + } + final NpcHtmlMessage html = new NpcHtmlMessage(0); + html.setFile(getHtmlPath(getNpcId(), 0)); + html.replace("%objectId%", getObjectId()); + player.sendPacket(html); + } + else if (currentCommand.startsWith("mageSet")) + { + int mageSet[] = Config.MAGE_SET_LIST; + player.stopAllEffectsExceptThoseThatLastThroughDeath(); + L2Skill buff ; + for (int id: mageSet) + { + buff = SkillTable.getInstance().getInfo(id, SkillTable.getInstance().getMaxLevel(id)); + buff.getEffects(this, player); + player.broadcastPacket(new MagicSkillUse(this, player, id, buff.getLevel(), 0, 0)); + } + final NpcHtmlMessage html = new NpcHtmlMessage(0); + html.setFile(getHtmlPath(getNpcId(), 0)); + html.replace("%objectId%", getObjectId()); + player.sendPacket(html); + } else if (currentCommand.startsWith("skill")) { final String groupType = st.nextToken(); @@ -226,7 +301,7 @@ final Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes == null || schemes.isEmpty()) - sb.append("<font color=\"LEVEL\">You haven't defined any scheme, please go to 'Manage my schemes' and create at least one valid scheme.</font>"); + sb.append("<center><font color=\"LEVEL\">You haven't defined any scheme</font></center>"); else { for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet()) @@ -254,12 +329,14 @@ final Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes == null || schemes.isEmpty()) - sb.append("<font color=\"LEVEL\">You haven't created any scheme.</font>"); + sb.append("<center><font color=\"3399CC\">You haven't created any scheme.</font></center>"); else { - sb.append("<table>"); + sb.append("<table bgcolor=000000 width =300>"); for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet()) - StringUtil.append(sb, "<tr><td width=140>", scheme.getKey(), " (", scheme.getValue().size(), " skill(s))</td><td width=60><button value=\"Clear\" action=\"bypass -h npc_%objectId%_clearscheme ", scheme.getKey(), "\" width=55 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"></td><td width=60><button value=\"Drop\" action=\"bypass -h npc_%objectId%_deletescheme ", scheme.getKey(), "\" width=55 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"></td></tr>"); + StringUtil.append(sb, "<tr><td width=140><font color=\"3399CC\">", scheme.getKey(), " (", scheme.getValue().size(), " skill(s))</font></td><td width=60><button value=\"Clear\" action=\"bypass -h npc_%objectId%_clearscheme ", scheme.getKey(), "\" width=75 height=15 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\"></td><td width=60><button value=\"Drop\" action=\"bypass -h npc_%objectId%_deletescheme ", scheme.getKey(), "\" width=75 height=15 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\"></td></tr>"); sb.append("</table>"); } @@ -311,17 +388,17 @@ { final Map<String, ArrayList<Integer>> schemes = BufferTable.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes == null || schemes.isEmpty()) - return "Please create at least one scheme."; + return "<table bgcolor=000000 width =300><tr><td align=center width=300><font color=\"3399CC\">Please create at least one scheme.</font></td></tr></table>"; final StringBuilder sb = new StringBuilder(200); - sb.append("<table>"); + sb.append("<table bgcolor=000000 width =300>"); for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet()) { if (schemeName.equalsIgnoreCase(scheme.getKey())) - StringUtil.append(sb, "<tr><td width=200>", scheme.getKey(), " (<font color=\"LEVEL\">", scheme.getValue().size(), "</font> / ", Config.BUFFER_MAX_SKILLS, " skill(s))</td></tr>"); + StringUtil.append(sb, "<tr><td align=center width=300>", scheme.getKey(), " (<font color=\"LEVEL\">", scheme.getValue().size(), "</font> / ", Config.BUFFER_MAX_SKILLS, " skill(s))</td></tr>"); else - StringUtil.append(sb, "<tr><td width=200><a action=\"bypass -h npc_%objectId%_editschemes none ", scheme.getKey(), "\">", scheme.getKey(), " (", scheme.getValue().size(), " / ", Config.BUFFER_MAX_SKILLS, " skill(s))</a></td></tr>"); + StringUtil.append(sb, "<tr><td align=center width=300><font color=\"3399CC\"><a action=\"bypass -h npc_%objectId%_editschemes none ", scheme.getKey(), "\">", scheme.getKey(), " (", scheme.getValue().size(), " / ", Config.BUFFER_MAX_SKILLS, " skill(s))</a></font></td></tr>"); } sb.append("</table>"); @@ -394,7 +471,7 @@ { final List<Integer> skills = BufferTable.getInstance().getScheme(player.getObjectId(), schemeName); if (skills.isEmpty()) - return "That scheme is empty."; + return "<font color=\"3399CC\">That scheme is empty.</font>"; final StringBuilder sb = new StringBuilder(500); sb.append("<table>"); Edited November 29, 2017 by melron 2 Quote
melron Posted November 8, 2016 Author Posted November 8, 2016 thanks for share. :) Ur welcome :) Quote
melron Posted November 8, 2016 Author Posted November 8, 2016 Thanks for share..nice one +1 Thank you my friend! Quote
Versus Posted November 8, 2016 Posted November 8, 2016 (edited) With a quick glance, when you do this: buff = SkillTable.getInstance().getInfo(id, SkillTable.getInstance().getMaxLevel(id)); MagicSkillUse mgc = new MagicSkillUse(this, player, id, buff.getLevel(), 0, 0); SkillTable.getInstance().getInfo(id, buff.getLevel()).getEffects(this, player); player.broadcastPacket(mgc); you do 1 unnecessary call, change the getEffects() call to: buff.getEffects(this, player); or even better: buff = SkillTable.getInstance().getInfo(id, SkillTable.getInstance().getMaxLevel(id)); buff.getEffects(this, player); player.broadcastPacket(new MagicSkillUse(this, player, id, buff.getLevel(), 0, 0)); Edited November 8, 2016 by Versus Quote
melron Posted November 9, 2016 Author Posted November 9, 2016 (edited) With a quick glance, when you do this: buff = SkillTable.getInstance().getInfo(id, SkillTable.getInstance().getMaxLevel(id)); MagicSkillUse mgc = new MagicSkillUse(this, player, id, buff.getLevel(), 0, 0); SkillTable.getInstance().getInfo(id, buff.getLevel()).getEffects(this, player); player.broadcastPacket(mgc); you do 1 unnecessary call, change the getEffects() call to: buff.getEffects(this, player); or even better: buff = SkillTable.getInstance().getInfo(id, SkillTable.getInstance().getMaxLevel(id)); buff.getEffects(this, player); player.broadcastPacket(new MagicSkillUse(this, player, id, buff.getLevel(), 0, 0)); Thans for your hint! Edited! Edited November 9, 2016 by ⏇Melron⏇℠Abs Quote
melron Posted November 9, 2016 Author Posted November 9, 2016 Nice one dude. Thanks for sharing. Thanks! Quote
Red-Hair-Shanks Posted November 9, 2016 Posted November 9, 2016 [gr] apo ta kalutera shares pou exoun ginei to teleutaio kairo kai einai mia buffer..gl man Quote
melron Posted November 9, 2016 Author Posted November 9, 2016 [gr] apo ta kalutera shares pou exoun ginei to teleutaio kairo kai einai mia buffer.. gl man [gr] Ευχαριστώ πολύ φίλε μου! Thanks! Quote
SweeTs Posted November 9, 2016 Posted November 9, 2016 Buffs with MANUAL description, so old school :D Quote
melron Posted November 9, 2016 Author Posted November 9, 2016 (edited) Buffs with MANUAL description, so old school :D Hah, there are many players arround who cant understand the buff just with the icon... Sounds !@# but is still usefull this way (my opinion)... :D Edited November 9, 2016 by ⏇Melron⏇℠Abs 1 Quote
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.