Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Augmentation (https://forum.zone-game.info/showthread.php?t=23787)

Archiel 22.10.2012 22:57

Augmentation
 
Исходники:
L2j based.

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

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

Примечание:
В логах всё ок, процесс аугментации работает отлично, статы присваиваются.
log:
Свернуть ↑Развернуть ↓

Так же об успешной работе алгоритма свидетельствует заполняемая таблица item_attributes.sql

FullMetal 23.10.2012 08:19

Re: Augmentation
 
Не совсем ясна суть проблемы - вы сделали аугментацию БРОНИ? Если так, то что у вас не работает? Броня не светится (как пушка)? Такого не будет. Или у вас при выборе шмотки не пишет какие статы добавило от аугмента? Подробнее, если можно.

Archiel 23.10.2012 12:38

Re: Augmentation
 
Да, я сделал аугментацию брони. При этом на ней в игре не отображаются добавленные статы.

Ashe 23.10.2012 12:42

Re: Augmentation
 
Цитата:

Сообщение от Archiel (Сообщение 238509)
Да, я сделал аугментацию брони. При этом на ней в игре не отображаются добавленные статы.

А должны?! Ведь у оружия они отображаются потому что так реализовано в клиенте. Вы клиент правили?

Archiel 23.10.2012 12:57

Re: Augmentation
 
Цитата:

Сообщение от Ashe (Сообщение 238511)
А должны?! Ведь у оружия они отображаются потому что так реализовано в клиенте. Вы клиент правили?

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

Добавлено через 1 минуту
А в клиенте, по крайней мере в *.dat файлах, указываются только комбинации эффектов, файл optiondata_client-e.dat.

FullMetal 24.10.2012 07:34

Re: Augmentation
 
Цитата:

Сообщение от Ashe (Сообщение 238511)
А должны?! Ведь у оружия они отображаются потому что так реализовано в клиенте. Вы клиент правили?

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

Archiel 24.10.2012 09:13

Re: Augmentation
 
Цитата:

Сообщение от FullMetal (Сообщение 238757)
На овероподобных отображается аугмент брони без редактрирования клиента.

А можно линк на любые шаровые исходники, где это реализовано?

Gaikotsu 24.10.2012 13:22

Re: Augmentation
 
возможно стоит покопать в серверных пакетах, отсылающих информацию о предметах клиенту - там для той же брони к примеру может значение ауги не слаться, ну точнее будет слаться ее отсутствие.

Archiel 24.10.2012 13:24

Re: Augmentation
 
Цитата:

Сообщение от Gaikotsu (Сообщение 238836)
возможно стоит покопать в серверных пакетах, отсылающих информацию о предметах клиенту - там для той же брони к примеру может значение ауги не слаться, ну точнее будет слаться ее отсутствие.

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

Добавлено через 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:
Свернуть ↑Развернуть ↓


Текущее время: 20:12. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot