WhiteFace Posted June 30, 2009 Share Posted June 30, 2009 Hello all,Here little addition to the multisell security. Each multisell template now have automatically generated during bypass parsing list of valid NPC IDs. Later in MultisellChoose packet current target checked and NPC ID searched in list. Also checking interaction distance. NPC list cleared on //reload multisell, so if you change html and remove multisell somewhere - do //reload multisell after //reload html. No more "mammons everywhere and everytime", no more "by anything you want everywhere from GM Shop" (if exist on server). DP Part: Index: data/scripts/custom/5001_NewbieCoupons/__init__.py =================================================================== --- data/scripts/custom/5001_NewbieCoupons/__init__.py (revision 6340) +++ data/scripts/custom/5001_NewbieCoupons/__init__.py (working copy) @@ -68,12 +68,12 @@ return "30598-6.htm" #you're not eligible to get a coupon (level caps, pkkills or didnt change class yet) elif event == "newbie_show_weapon" : if 6 <= level <= 39 and not pkkills and occupation_level == 0 : - L2Multisell.getInstance().separateAndSend(WEAPON_MULTISELL, player, False, 0.0); + L2Multisell.getInstance().separateAndSend(WEAPON_MULTISELL, player, npc.getNpcId(), False, 0.0); else : return "30598-7.htm" #you're not eligible to use warehouse elif event == "newbie_show_armor" : if 6 <= level <= 39 and not pkkills and occupation_level > 0 : - L2Multisell.getInstance().separateAndSend(ACCESORIES_MULTISELL, player, False, 0.0); + L2Multisell.getInstance().separateAndSend(ACCESORIES_MULTISELL, player, npc.getNpcId(), False, 0.0); else : return "30598-8.htm" #you're not eligible to use warehouse the code: Index: java/net/sf/l2j/gameserver/network/clientpackets/MultiSellChoose.java =================================================================== --- java/net/sf/l2j/gameserver/network/clientpackets/MultiSellChoose.java (revision 3236) +++ java/net/sf/l2j/gameserver/network/clientpackets/MultiSellChoose.java (working copy) @@ -23,6 +23,7 @@ import net.sf.l2j.gameserver.model.L2Augmentation; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.L2Multisell; +import net.sf.l2j.gameserver.model.L2Object; import net.sf.l2j.gameserver.model.L2Multisell.MultiSellEntry; import net.sf.l2j.gameserver.model.L2Multisell.MultiSellIngredient; import net.sf.l2j.gameserver.model.L2Multisell.MultiSellListContainer; @@ -39,6 +40,8 @@ import net.sf.l2j.gameserver.templates.item.L2Item; import net.sf.l2j.gameserver.templates.item.L2Weapon; +import static net.sf.l2j.gameserver.model.actor.L2Npc.INTERACTION_DISTANCE; + public class MultiSellChoose extends L2GameClientPacket { private static final String _C__A7_MULTISELLCHOOSE = "[C] A7 MultiSellChoose"; @@ -109,7 +112,14 @@ MultiSellListContainer list = L2Multisell.getInstance().getList(_listId); if (list == null) return; - + + L2Object target = player.getTarget(); + if (!player.isGM() && (target == null + || !(target instanceof L2Npc) + || !list.checkNpcId(((L2Npc)target).getNpcId()) + || !player.isInsideRadius(target, INTERACTION_DISTANCE, true, false))) + return; + for (MultiSellEntry entry : list.getEntries()) { if (entry.getEntryId() == _entryId) Index: java/net/sf/l2j/gameserver/model/actor/instance/L2BlacksmithInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2BlacksmithInstance.java (revision 3236) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2BlacksmithInstance.java (working copy) @@ -34,7 +34,7 @@ if (command.startsWith("multisell")) { int listId = Integer.parseInt(command.substring(9).trim()); - L2Multisell.getInstance().separateAndSend(listId, player, false, getCastle().getTaxRate()); + L2Multisell.getInstance().separateAndSend(listId, player, getNpcId(), false, getCastle().getTaxRate()); } super.onBypassFeedback(player,command); } Index: java/net/sf/l2j/gameserver/model/actor/instance/L2MerchantInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2MerchantInstance.java (revision 3236) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2MerchantInstance.java (working copy) @@ -183,14 +183,14 @@ if (st.countTokens() < 1) return; int val = Integer.parseInt(st.nextToken()); - L2Multisell.getInstance().separateAndSend(val, player, false, getCastle().getTaxRate()); + L2Multisell.getInstance().separateAndSend(val, player, getNpcId(), false, getCastle().getTaxRate()); } else if (actualCommand.equalsIgnoreCase("Exc_Multisell")) { if (st.countTokens() < 1) return; int val = Integer.parseInt(st.nextToken()); - L2Multisell.getInstance().separateAndSend(val, player, true, getCastle().getTaxRate()); + L2Multisell.getInstance().separateAndSend(val, player, getNpcId(), true, getCastle().getTaxRate()); } else { Index: java/net/sf/l2j/gameserver/model/actor/instance/L2OlympiadManagerInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2OlympiadManagerInstance.java (revision 3236) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2OlympiadManagerInstance.java (working copy) @@ -137,10 +137,10 @@ } break; case 7: - L2Multisell.getInstance().separateAndSend(102, player, false, getCastle().getTaxRate()); + L2Multisell.getInstance().separateAndSend(102, player, getNpcId(), false, getCastle().getTaxRate()); break; case 9: - L2Multisell.getInstance().separateAndSend(103, player, false, getCastle().getTaxRate()); + L2Multisell.getInstance().separateAndSend(103, player, getNpcId(), false, getCastle().getTaxRate()); break; case 8: int point = Olympiad.getInstance().getNoblePoints(player.getObjectId()); Index: java/net/sf/l2j/gameserver/model/actor/L2Npc.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/L2Npc.java (revision 3236) +++ java/net/sf/l2j/gameserver/model/actor/L2Npc.java (working copy) @@ -1206,11 +1206,13 @@ } else if (command.startsWith("multisell")) { - L2Multisell.getInstance().separateAndSend(Integer.parseInt(command.substring(9).trim()), player, false, getCastle().getTaxRate()); + int listId = Integer.parseInt(command.substring(9).trim()); + L2Multisell.getInstance().separateAndSend(listId, player, getNpcId(), false, getCastle().getTaxRate()); } else if (command.startsWith("exc_multisell")) { - L2Multisell.getInstance().separateAndSend(Integer.parseInt(command.substring(13).trim()), player, true, getCastle().getTaxRate()); + int listId = Integer.parseInt(command.substring(13).trim()); + L2Multisell.getInstance().separateAndSend(listId, player, getNpcId(), true, getCastle().getTaxRate()); } else if (command.startsWith("Augment")) { Index: java/net/sf/l2j/gameserver/model/L2Multisell.java =================================================================== --- java/net/sf/l2j/gameserver/model/L2Multisell.java (revision 3236) +++ java/net/sf/l2j/gameserver/model/L2Multisell.java (working copy) @@ -101,7 +101,7 @@ * * @see net.sf.l2j.gameserver.serverpackets.ServerBasePacket#runImpl() */ - private MultiSellListContainer generateMultiSell(int listId, boolean inventoryOnly, L2PcInstance player, double taxRate) + private MultiSellListContainer generateMultiSell(int listId, boolean inventoryOnly, L2PcInstance player, int npcId, double taxRate) { MultiSellListContainer listTemplate = L2Multisell.getInstance().getList(listId); MultiSellListContainer list = new MultiSellListContainer(); @@ -109,6 +109,8 @@ return list; list = L2Multisell.getInstance().new MultiSellListContainer(); list.setListId(listId); + if (npcId != 0 && !listTemplate.checkNpcId(npcId)) + listTemplate.addNpcId(npcId); if (inventoryOnly) { @@ -261,9 +263,9 @@ return newEntry; } - public void separateAndSend(int listId, L2PcInstance player, boolean inventoryOnly, double taxRate) + public void separateAndSend(int listId, L2PcInstance player, int npcId, boolean inventoryOnly, double taxRate) { - MultiSellListContainer list = generateMultiSell(listId, inventoryOnly, player, taxRate); + MultiSellListContainer list = generateMultiSell(listId, inventoryOnly, player, npcId, taxRate); MultiSellListContainer temp = new MultiSellListContainer(); int page = 1; @@ -551,6 +553,7 @@ private int _listId; private boolean _applyTaxes = false; private boolean _maintainEnchantment = false; + private List<Integer> _npcIds; List<MultiSellEntry> _entriesC; @@ -577,6 +580,11 @@ _maintainEnchantment = maintainEnchantment; } + public void addNpcId(int objId) + { + _npcIds.add(objId); + } + /** * @return Returns the listId. */ @@ -595,6 +603,21 @@ return _maintainEnchantment; } + public boolean checkNpcId(int npcId) + { + if (_npcIds == null) + { + synchronized (this) + { + if (_npcIds == null) + _npcIds = new FastList<Integer>(); + } + return false; + } + + return _npcIds.contains(npcId); + } + public void addEntry(MultiSellEntry e) { _entriesC.add(e); credits:_DS_ Enjoy IF YOU FIND ANY ERRORS PLEASE POST HERE THANKS Quote Link to comment Share on other sites More sharing options...
xardas Posted July 9, 2009 Share Posted July 9, 2009 man pls ..... from all the people here no one told me where the .... can i find those java files .... where i have to add all those things ... someone told me that in the core files ... where si that :| .... i have eclips to edit java files but , again , where are those files???????? ..pls help me i se here only java share. Quote Link to comment Share on other sites More sharing options...
Łighto™ Posted July 9, 2009 Share Posted July 9, 2009 Check this guide ~> http://www.maxcheaters.com/forum/index.php?topic=44325.0 It might help you. All you need to do is learn how to compile and some basics about java and then you will be able to apply the patches to your core About the last one check here ~> http://www.l2jserver.com/wiki/How_to_Apply_a_Patch Quote Link to comment Share on other sites More sharing options...
chadme Posted July 15, 2009 Share Posted July 15, 2009 dont spam locoxx Nice share BTW ^^ Quote Link to comment Share on other sites More sharing options...
Over12 Posted February 11, 2010 Share Posted February 11, 2010 very work! Quote Link to comment Share on other sites More sharing options...
popld Posted February 15, 2010 Share Posted February 15, 2010 is that for Interlude too? Quote Link to comment Share on other sites More sharing options...
CrazyDeagle Posted February 15, 2010 Share Posted February 15, 2010 Nice code thanks you More protection :D i like it Quote Link to comment Share on other sites More sharing options...
Αντώνης Posted April 26, 2010 Share Posted April 26, 2010 Useful. Keep it up man, keep going on java shares :P VERY USEFUL 2010 shares about multisell ... Quote Link to comment Share on other sites More sharing options...
+cs.tribal Posted April 27, 2010 Share Posted April 27, 2010 Good! I'll use it to be safe! I hope i wont have any problems! Quote Link to comment Share on other sites More sharing options...
wakowako Posted April 27, 2010 Share Posted April 27, 2010 Lol this is already implemented in l2j.. stop spaming and check the thread date. Quote Link to comment Share on other sites More sharing options...
PwnedTheGod™ Posted April 27, 2010 Share Posted April 27, 2010 Isn't possible with Flood Protector???I think it's easier than do all this... Anyways good job,keep sharin'!!! Quote Link to comment Share on other sites More sharing options...
AcroMan Posted November 30, 2010 Share Posted November 30, 2010 Looks very promising. Quote Link to comment Share on other sites More sharing options...
Akira63 Posted December 1, 2010 Share Posted December 1, 2010 nice job ! Quote Link to comment Share on other sites More sharing options...
ImmortalKiller Posted December 1, 2010 Share Posted December 1, 2010 Thanks man for share.Good job! Quote Link to comment Share on other sites More sharing options...
JoeTribbiani Posted March 3, 2011 Share Posted March 3, 2011 ohhh need this, haven't posts Quote Link to comment Share on other sites More sharing options...
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.