Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Augmentation
#1
Исходники:
L2j based.

Что сделано:
Изменён алгоритм аугментации, бонусы, камни.

Что не получается:
Не отображается результат аугментации на шмотках. Только на оружии.

Примечание:
В логах всё ок, процесс аугментации работает отлично, статы присваиваются.
log
Так же об успешной работе алгоритма свидетельствует заполняемая таблица item_attributes.sql
Ответ
#2
Не совсем ясна суть проблемы - вы сделали аугментацию БРОНИ? Если так, то что у вас не работает? Броня не светится (как пушка)? Такого не будет. Или у вас при выборе шмотки не пишет какие статы добавило от аугмента? Подробнее, если можно.
Ответ
#3
Да, я сделал аугментацию брони. При этом на ней в игре не отображаются добавленные статы.
Ответ
#4
Archiel Написал:Да, я сделал аугментацию брони. При этом на ней в игре не отображаются добавленные статы.

А должны?! Ведь у оружия они отображаются потому что так реализовано в клиенте. Вы клиент правили?
Fortuna - non penis, in manus non recipe.
Ответ
#5
Ashe Написал:А должны?! Ведь у оружия они отображаются потому что так реализовано в клиенте. Вы клиент правили?

Ну есть же аугментация бижутерии, которая фактически является такой же составляющей брони, только в другом слоте.

Добавлено через 1 минуту
А в клиенте, по крайней мере в *.dat файлах, указываются только комбинации эффектов, файл optiondata_client-e.dat.
Ответ
#6
Ashe Написал:А должны?! Ведь у оружия они отображаются потому что так реализовано в клиенте. Вы клиент правили?

На овероподобных отображается аугмент брони без редактрирования клиента.
Ответ
#7
FullMetal Написал:На овероподобных отображается аугмент брони без редактрирования клиента.

А можно линк на любые шаровые исходники, где это реализовано?
Ответ
#8
возможно стоит покопать в серверных пакетах, отсылающих информацию о предметах клиенту - там для той же брони к примеру может значение ауги не слаться, ну точнее будет слаться ее отсутствие.
Ответ
#9
Gaikotsu Написал:возможно стоит покопать в серверных пакетах, отсылающих информацию о предметах клиенту - там для той же брони к примеру может значение ауги не слаться, ну точнее будет слаться ее отсутствие.

Да механику я понимаю, но я там уже всё перерыл, сейчас скину куски кода, которые вообще связаны с аугментацией.

Добавлено через 15 минут
В общем сам процесс вот каков:

1) AugmentationData.java
Тут всё просто, алгоритм рассчёта аугментации, начисление бонусов и т.п.
В конце концов рассчитывается просто
Код:
generateRandomAugmentation
там никаких условий связанных со шмотом нет, кроме:
1
Что само по себе просто меняет алгоритмы вычисления и возможные бонусы.


2) AbstractRefinePacket.java

Тут хранятся как раз условия при которых вообще можно запустить аугмент, хранятся камни, их ИД, уровни, гемы, которые используются при аугментации и т.п. Опять же, настройки влияют только на сам процесс аугментации.

3) Ну и, наконец, когда мы всё рассчитали, у нас идёт RequestRefine.java

1


Что я нашёл ещё, в сервер пакетах есть вот это:
CharSelectionInfo.java
Код:
writeD(charInfoPackage.getAugmentationId());

А ниже:
1

Добавлено через 22 минуты
Исходники

Добавлено через 1 час 51 минуту
Продебажил весь процесс аугментации, разницы между аугментом армора и оружия не увидел. В обоих случаях в итоге шлётся:
Код:
final int stat12 = 0x0000FFFF & aug.getAugmentationId();
        final int stat34 = aug.getAugmentationId() >> 16;
        activeChar.sendPacket(new ExVariationResult(stat12,stat34,1));

        InventoryUpdate iu = new InventoryUpdate();
        iu.addModifiedItem(targetItem);
        activeChar.sendPacket(iu);
И всё.

Добавлено через 1 час 53 минуты
Весь класс вот:
Код:
public class ExVariationResult extends L2GameServerPacket
{
    private static final String _S__FE_55_EXVARIATIONRESULT = "[S] FE:56 ExVariationResult";

    private int _stat12;
    private int _stat34;
    private int _unk3;

    public ExVariationResult(int unk1, int unk2, int unk3)
    {
        _stat12 = unk1;
        _stat34 = unk2;
        _unk3 = unk3;
    }

    /**
     * @see ru.l2open.util.network.BaseSendablePacket.ServerBasePacket#writeImpl()
     */
    @Override
    protected void writeImpl()
    {
        writeC(0xfe);
        writeH(0x56);
        writeD(_stat12);
        writeD(_stat34);
        writeD(_unk3);
    }

    /**
     * @see ru.l2open.gameserver.BasePacket#getType()
     */
    @Override
    public String getType()
    {
        return _S__FE_55_EXVARIATIONRESULT;
    }

}

Добавлено через 1 час 55 минут
А вот вторая часть, InventoryUpdate.java

1
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  model.L2 Augmentation Escuro 17 3,962 06-18-2013, 12:38 PM
Последний пост: OneThunder
  L2open, augmentation, Last Hero. FaintSmile 13 7,179 11-14-2010, 10:29 PM
Последний пост: serg5777

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)