Рейтинг темы:
  • 2 Голос(ов) - 5 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Работа над Goddess of Destruction (part 6)
Оффтоп
BoneBreaker Написал:А вместо CharInfo что идёт оО?

Engine - http://rghost.ru/51030918


CharInfo как был так и остался, он в клиенте называется CIPacket.
Mifesto Написал:CharInfo как был так и остался, он в клиенте называется CIPacket.

Хм, я думал он не используется больше.

Добавлено через 2 часа 7 минут
С CharInfo разобрался, не критует.

Такой вопрос, что сталось с ItemInfo?

Структуру нашёл, переделал, в лобби при выборе всё хорошо, в игре у оружия заточка сразу светится.

И еще, если не надет верхний доспех, то остальные части не отображаются.

из L2GameServerPacket
BoneBreaker Написал:Хм, я думал он не используется больше.

Добавлено через 2 часа 7 минут
С CharInfo разобрался, не критует.

Такой вопрос, что сталось с ItemInfo?

Структуру нашёл, переделал, в лобби при выборе всё хорошо, в игре у оружия заточка сразу светится.

И еще, если не надет верхний доспех, то остальные части не отображаются.

За отображение у персонажа отвечает ExUserInfoEquipSlot, за отображение у других персонажуй CharInfo, itemInfo всего лиш записывает инфу в пакеты такие как инвентарь, трэйд и тд.
Mifesto Написал:За отображение у персонажа отвечает ExUserInfoEquipSlot, за отображение у других персонажуй CharInfo, itemInfo всего лиш записывает инфу в пакеты такие как инвентарь, трэйд и тд.

ну даже если брать ExUserInfoEquipSlot.

Код:
_inv = new int[Inventory.PAPERDOLL_MAX][5];
        for(int PAPERDOLL_ID : Inventory.PAPERDOLL_ORDER)
        {
            _inv[PAPERDOLL_ID][0] = player.getInventory().getPaperdollObjectId(PAPERDOLL_ID);
            _inv[PAPERDOLL_ID][1] = player.getInventory().getPaperdollItemId(PAPERDOLL_ID);
            _inv[PAPERDOLL_ID][2] = player.getInventory().getPaperdollAugmentationId(PAPERDOLL_ID);
            _inv[PAPERDOLL_ID][3] = player.getInventory().getPaperdollAugmentationId(PAPERDOLL_ID);
            _inv[PAPERDOLL_ID][4] = player.getInventory().getVisualItemId(PAPERDOLL_ID);
        }

Код:
writeB(new byte[]{(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF});
            writeH(18);
            for(int[] inv : _inv)
            {
                writeD(inv[0]);
                writeD(inv[1]);
                writeH(inv[2]);
                writeH(inv[3]);
                writeD(inv[4]);
                writeH(18);
            }
            writeD(0x00);
            writeD(0x00);
            writeD(0x00);
            writeD(0x00);

Брошь и 6 камушков для порядка добавил.
очень интересно сформировали пакет=)

у меня получается так:


<part name="objectId" type="d"/>

<part name="size" type="h" id="0"/>
<part name="Неизвестно" type="c"/>
<part name="Неизвестно" type="c"/>
<part name="Неизвестно" type="c"/>
<part name="Неизвестно" type="c"/>
<part name="Неизвестно" type="c"/>

<for id="0">
<part name="block_size" type="h"/>
<part name="objectId" type="d"/>
<part name="itemId" type="d"/>
<part name="Неизвестно" type="d"/>
<part name="Неизвестно" type="d"/>
</for>


не знаю верные ли последние 2 D, так как разбираю пока просто протокол, без тестов, но зачем ставить размер блока в конец? Ведь размер блока перед записью идет.
Mifesto Написал:очень интересно сформировали пакет=)

у меня получается так:


<part name="objectId" type="d"/>

<part name="size" type="h" id="0"/>
<part name="Неизвестно" type="c"/>
<part name="Неизвестно" type="c"/>
<part name="Неизвестно" type="c"/>
<part name="Неизвестно" type="c"/>
<part name="Неизвестно" type="c"/>

<for id="0">
<part name="block_size" type="h"/>
<part name="objectId" type="d"/>
<part name="itemId" type="d"/>
<part name="Неизвестно" type="d"/>
<part name="Неизвестно" type="d"/>
</for>


не знаю верные ли последние 2 D, так как разбираю пока просто протокол, без тестов, но зачем ставить размер блока в конец? Ведь размер блока перед записью идет.

Ну про последние 2D, там в любом случае одна, по идее, - визуальный ID после обработки.

Ан не, со свечением разобрался, это в ExUserInfo накосячил
это понятно, просто для аргументации если не ошибаюсь хватит и short, так же для заточки, вот можно Дшку и разделить так, а вообще буду потом эксперементировать... Сей час главное правильную работу UserInfo и NpcInfo разобрать, так как тут эти чертовы флаги.
С UserInfo я вроде доразобрался, а вот с Npc застопорился.

получилось как то так, но это бредятина

Код:
D - obj
C - unk
H - кол-во блоков
C
C
C
C
C
C - блок с титулом
C - isAtack
D unk
S - title
H - unk

H - block
D - npcId
D - x
D - y
D - z
D - h
D - unk
D - matkspd
D - patkspd
F
F
C - nameAbove
C - run
C - combat
C - dead
C - spawn

C - unk
C - unk
D - unk

D - hp
D - mp

C - unk

H - unk

А вот кстати с визуальным одеванием сета трабла неясна.
BoneBreaker Написал:С UserInfo я вроде доразобрался, а вот с Npc застопорился.

получилось как то так, но это бредятина

Код:
D - obj
C - unk
H - кол-во блоков
C
C
C
C
C
C - блок с титулом
C - isAtack
D unk
S - title
H - unk

H - block
D - npcId
D - x
D - y
D - z
D - h
D - unk
D - matkspd
D - patkspd
F
F
C - nameAbove
C - run
C - combat
C - dead
C - spawn

C - unk
C - unk
D - unk

D - hp
D - mp

C - unk

H - unk

А вот кстати с визуальным одеванием сета трабла неясна.

Пока то что мне удалось разобрать... Надеюсь поможет.
Код:
        writeEx(0x167);
        writeD(_npcObjId);
        writeC(0x00); // UNK
        writeH(37);
        writeB(new byte[]{(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF});
        writeC(7 + _title.length() * 2);
        writeC(_isAttackable ? 1 : 0);
        writeD(0x00); // UNK
        writeCutS(_title);
        writeH(0x00); // UNK

        if(_isLoading)
        {
            writeH(143);
            writeD(_npcId + 1000000); // npctype id c4
            writeD(_loc.x);
            writeD(_loc.y);
            writeD(_loc.z + Config.CLIENT_Z_SHIFT);
            writeD(_loc.h);
            writeD(0x00); //UNK
            writeD(_mAtkSpd);
            writeD(_pAtkSpd);
            writeF(_runSpdMul);
            writeF(_atkSpdMul);
            writeC(dead);
            writeC(running);
            writeC(isFlying ? 2 : 0); // C2
            writeC(isFlying ? 1 : 0); // C2
            // Неизвестный формат. Забываем длину пакета. START
            writeD(0x01); //UNK
            writeD(0x00); //UNK
            writeD(0x00); //UNK
            writeD(0x00); //UNK
            writeD(0x00); //UNK
            writeD(0x00); //UNK
            writeD(0x00); //UNK
            // Неизвестный формат. Забываем длину пакета. END
            writeD(_currentHP);
            writeD(_currentMP);
            writeD(_maxHP);
            writeD(_maxMP);
            // Далее идет еще 47 неизвестных байт.
        }

А что с одеванием сета не ясно?


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Работа над Goddess of Destruction (part 7) n3k0nation 459 172,932 03-21-2022, 04:21 PM
Последний пост: TieLay
  Помогите с Сервером L2Dream версии 439 для Lineage 2 Gracia Part 2 CAHTEX 4 3,358 10-01-2021, 02:40 PM
Последний пост: tenor
  Работа с камерой и Энтер чат FriendlyGhost 0 1,288 04-29-2018, 06:07 AM
Последний пост: FriendlyGhost
  Goddess of Destruction ( новая ветка от NcSoft ) Bacek 180 58,612 08-22-2017, 12:32 PM
Последний пост: BadStealth
  EmuRT Gracia part 2 ? knaif 3 1,603 02-08-2016, 01:19 PM
Последний пост: knaif
  Gracia Part 1 от l2emu исходы TFH 6 1,936 10-05-2015, 07:53 PM
Последний пост: G1ta0
  Ищу исходы L2-Dream gracia part 2 knaif 1 1,370 10-05-2015, 07:51 PM
Последний пост: G1ta0
  Оплачиваемая работа Grek1993 1 1,333 08-01-2015, 11:29 AM
Последний пост: ztaecz
  Работа с мультиселлом Evencelance 11 2,413 09-19-2014, 12:43 PM
Последний пост: Evencelance
  Работа над Goddess of Destruction (part 5) Ozzy 980 336,153 10-09-2013, 09:13 AM
Последний пост: Ashe

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


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