Jump to content

[share]increase your multisell secutiry


Recommended Posts

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

Link to comment
Share on other sites

  • 2 weeks later...

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 6 months later...
  • 2 months later...
  • 7 months later...
  • 3 months later...

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • rename the l2.bin into l2.exe
    • L2LIVE.PRO- Dynamic Mid-rates Essence Seven Signs GRAND OPENING - July 5, 20:00 GMT+3 (EEST) TEST SERVER IS OPEN - COME AND CHECK IT OUT TODAY! Join our community and be part of it at: https://www.l2live.pro https://discord.gg/k3NMgR4Dmu   Server description * EXP/SP: Dynamic (x1- x100 based on your level, *before* Sayha and EXP buffs * Adena: x50 / Item Drop: x10 / Fishing EXP increased / Attribute EXP increased * Simplified gameplay to stay in the loop while not spending hours and hours farming * Starter Pack containing very useful items for beginners * MP replenishing potions with auto-consumption * No overpowered donations L2LIVE shop * All spellbook coupons, pet spellbook coupons and master books are sold via Game Assistant * Additionally you can buy SP pouches, enchanted talismans, pet training guides and various other consumables for Adena and L-Coin * More items such as cloaks, more talismans, agathions, belts, pendants, enchantment scrolls of various grades, evolution stones, etc will be added! Shop server as a shortcut, and all retail-like ways of earning items are still here! L-Coins * Drops with small change and in random amounts from Lv60+ monsters  * All raidbosses drop random amount of L-Coin Pouches generating up to 420 Lcoin per unit. **Grand Olympiad and Events** * Grand Olympiad is held week day * Format is 1v1, unlimited weekly fights  * Heroes are declared weekly at Sunday * There are three automated events - TvT, CTF and Deathmatch, running at evenings * Orc Fortress, Battle with Balok, Keber Hunter, Archievements Box, Daily Gift Calendar provisional events are active too Custom user commands * .offlineplay command, your character will keep playing till death or server restart * .offlineshop command, keeps your shop sitting until all items are purchased * .apon / .apoff - enable/disable HP/MP autoconsume And lots of other small improvements are waiting for you!   Join our community and be part of it at: https://www.l2live.pro https://discord.gg/k3NMgR4Dmu
    • I can use this folder system for High Five offline server?   The folder does not have a l2.exe file.   Thank you very much if anyone can help me.   https://drive.google.com/file/d/13kU-g_4JJ-sP-kg2F7pqkUOVKmQdubFm/view
  • Topics

×
×
  • Create New...