Multisell 4002

KateKate7912

who lost her mind
Пользователь
Разработчик
За знание датапака
За знание ядра
За веру и верность форуму
Медаль за активность на Форуме
Сообщения
1 131
Розыгрыши
0
Репутация
941
Реакции
576
Баллы
0
Здравствуйте!
Подскажите пожалуйста что тут происходит?

Нашла вызов мультисела у Маммона и хотела подправить.

Сам вызов: <a action="bypass -h npc_%objectId%_Multisell 4002">Удалить особые эффекты с оружия</a>

Но сейчас я в недоумении, такого мультисела просто нет в Дата-паке.

Где же его искать?
 
Он вполне может генерироваться динамически.
 
Он вполне может генерироваться динамически.

То что он генерируется автоматически я уже поняла в классе ядра.
Спасибо Вам! Но не могли бы Вы подсказать как подправить данный мультисел, а точней ингредиенты и т.п в нем.
 
То что он генерируется автоматически я уже поняла в классе ядра.
Спасибо Вам! Но не могли бы Вы подсказать как подправить данный мультисел, а точней ингредиенты и т.п в нем.
Очевидно, что править эту самую генерацию. Сколько информации дали, настолько и получили подробный ответ)
 
Ох уж этот некстген:
Код:
       // 4002 - Remove SA
        list = new MultiSellListContainer();
        list.setListId(4002);
        list.setShowAll(false);
        list.setKeepEnchant(true);
        list.setNoTax(true);
        generateSARemove(list);
        entries.put(list.getListId(), list);
Код:
   private void generateSARemove(final MultiSellListContainer list)
    {
        int entId = 1;
        final int[][] weapons = ItemTable.getInstance().getWeaponEx();
        for(int i = 0; i < weapons.length; i++)
        {
            final int[] item = weapons[i];
            if(item == null)
                continue;
            final L2Item itm = ItemTable.getInstance().getTemplate(i);
            final int price = getSARemovePrice(itm);

            if(item[ItemTable.WEX_SA1] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_SA1], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(i, 1));
                list.addEntry(e1);
            }
            if(item[ItemTable.WEX_SA2] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_SA2], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(i, 1));
                list.addEntry(e1);
            }
            if(item[ItemTable.WEX_SA3] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_SA3], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(i, 1));
                list.addEntry(e1);
            }
            if(item[ItemTable.WEX_RARE_SA1] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_RARE_SA1], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(item[ItemTable.WEX_RARE], 1));
                list.addEntry(e1);
            }
            if(item[ItemTable.WEX_RARE_SA2] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_RARE_SA2], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(item[ItemTable.WEX_RARE], 1));
                list.addEntry(e1);
            }
            if(item[ItemTable.WEX_RARE_SA3] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_RARE_SA3], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(item[ItemTable.WEX_RARE], 1));
                list.addEntry(e1);
            }
        }
    }
L2Multisell.java
 
Ох уж этот некстген:
Код:
       // 4002 - Remove SA
        list = new MultiSellListContainer();
        list.setListId(4002);
        list.setShowAll(false);
        list.setKeepEnchant(true);
        list.setNoTax(true);
        generateSARemove(list);
        entries.put(list.getListId(), list);
Код:
   private void generateSARemove(final MultiSellListContainer list)
    {
        int entId = 1;
        final int[][] weapons = ItemTable.getInstance().getWeaponEx();
        for(int i = 0; i < weapons.length; i++)
        {
            final int[] item = weapons[i];
            if(item == null)
                continue;
            final L2Item itm = ItemTable.getInstance().getTemplate(i);
            final int price = getSARemovePrice(itm);

            if(item[ItemTable.WEX_SA1] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_SA1], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(i, 1));
                list.addEntry(e1);
            }
            if(item[ItemTable.WEX_SA2] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_SA2], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(i, 1));
                list.addEntry(e1);
            }
            if(item[ItemTable.WEX_SA3] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_SA3], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(i, 1));
                list.addEntry(e1);
            }
            if(item[ItemTable.WEX_RARE_SA1] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_RARE_SA1], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(item[ItemTable.WEX_RARE], 1));
                list.addEntry(e1);
            }
            if(item[ItemTable.WEX_RARE_SA2] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_RARE_SA2], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(item[ItemTable.WEX_RARE], 1));
                list.addEntry(e1);
            }
            if(item[ItemTable.WEX_RARE_SA3] > 0)
            {
                final MultiSellEntry e1 = new MultiSellEntry(entId++);
                e1.addIngredient(new MultiSellIngredient(item[ItemTable.WEX_RARE_SA3], 1));
                if(price > 0)
                    e1.addIngredient(new MultiSellIngredient(5575, price));
                e1.addProduct(new MultiSellIngredient(item[ItemTable.WEX_RARE], 1));
                list.addEntry(e1);
            }
        }
    }
L2Multisell.java

А цены то как поменять?)
 
Очевидно, что править эту самую генерацию. Сколько информации дали, настолько и получили подробный ответ)

Ну в смысле?( В дата паке нет такого мультисела. Мне надо подправить в нем цены и т.п(.
В коде что дале выше я не понимаю как там цены правятся ведь их вообще не вижу( Сборка некстген, да.
 
final int price = getSARemovePrice(itm);

Код:
/**
    * @param base
    *            item
    * @return price in AA (can be 0)
    */
    private int getSARemovePrice(final L2Item i)
    {
        switch(i.getCrystalType())
        {
            case C:
                if(i.getCrystalCount() <= 706)
                    return 14550;
                else if(i.getCrystalCount() <= 884)
                    return 35700;
                else if(i.getCrystalCount() <= 1325)
                    return 45900;
                else
                    return 83250;
            case B:
                if(i.getCrystalCount() <= 892)
                    return 111000;
                return 169500;
            case A:
                return 210000;
            case S:
            case S80:
            case S84:
                return 250000; // FIXME: цифра с потолка
        }
        return 0;
    }
 
Подскажите пожалуйста, почему за икарус берет 285 вместо 399?


Код:
    private int[] getSaInsertPrice(final L2Item i)
    {
        switch (i.getCrystalType())
        {
            case C:
                if(i.getCrystalCount() <= 706)
                    return new int[] { 2131, 97, 97 * 3000 };
                else if(i.getCrystalCount() <= 884)
                    return new int[] { 2131, 238, 238 * 3000 };
                else if(i.getCrystalCount() <= 1325)
                    return new int[] { 2131, 306, 306 * 3000 };
                return new int[] { 2131, 555, 555 * 3000 };
            case B:
                if(i.getCrystalCount() <= 892)
                    return new int[] { 2132, 222, 222 * 10000 };
                return new int[] { 2132, 339, 339 * 10000 };
            case A:
                if(i.getCrystalCount() <= 1128)
                    return new int[] { 2133, 147, 0 };
                return new int[] { 2133, 157, 0 };
            case S:
                return new int[] { 2134, 82, 0 };
            case S80:
                if(i.getCrystalCount() <= 7050)
                    return new int[] { 2134, 285, 0 };
                return new int[] { 2134, 399, 0 };
            case S84:
                return new int[] { 2134, 623, 0 };
        }
        return null;
    }
 
Назад
Сверху Снизу