Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
12-21-2013, 10:38 PM
(Сообщение последний раз редактировалось: 12-21-2013, 11:27 PM Gaikotsu.)
неужели никто не знает? или просто не хочется делиться такой инфой?
Добавлено через 49 минут
уже не надо - сам выяснил методом тыка
EventTrigger 20140700
Сообщений: 2,267
Тем: 6
Зарегистрирован: Aug 2009
Репутация:
8,698
Gaikotsu Написал:неужели никто не знает? или просто не хочется делиться такой инфой?
Добавлено через 49 минут
уже не надо - сам выяснил методом тыка
EventTrigger 20140700
Не видел, так бы поделился естественно.
Сообщений: 220
Тем: 19
Зарегистрирован: Oct 2011
Репутация:
2,462
В Epeisodion сместились body_part:
Код: Array
(
[0] => 0
[1] => 1
[3] => 3
[4] => 4
[6] => 6
[7] => 7
[8] => 8
[9] => 9
[10] => 10
[12] => 12
[19] => 19
[20] => 27
[21] => 28
[22] => 29
[23] => 30
[24] => 31
[25] => 32
[26] => 33
[27] => 34
[28] => 35
)
Добавлены типы 20 (брошь) и 21 (камень).
hLaPEx, Evermore, hAuthD, L2on, ...
Сообщений: 220
Тем: 19
Зарегистрирован: Oct 2011
Репутация:
2,462
12-25-2013, 05:58 PM
(Сообщение последний раз редактировалось: 12-25-2013, 07:46 PM Hint.)
PartySmallWindowUpdate для Epeisodion (575):
[src=pascal]procedure TGameStream.PartySmallWindowUpdatePacket(Packet: TGamePacket);
var
C: TChar;
Flags: array [0..15] of Boolean;
I, H: Integer;
begin
with Packet do
begin
C.ObjectId := ReadD;
Party.Get(C.ObjectId, C);
H := ReadH; // Flags
for I := 0 to High(Flags) do Flags[I] := (H shr I) and 1 = 1;
if Flags[0] then C.CP := ReadD;
if Flags[1] then C.MaxCP := ReadD;
if Flags[2] then C.HP := ReadD;
if Flags[3] then C.MaxHP := ReadD;
if Flags[4] then C.MP := ReadD;
if Flags[5] then C.MaxMP := ReadD;
if Flags[6] then
begin
C.Level := ReadC;
IsValidLevel(C.Level);
end;
if Flags[7] then
begin
C.ClassId := ReadH;
IsValidClassId(C.ClassId);
end;
if Flags[8] then ReadC;
if Flags[9] then C.VitalityPoints := ReadD;
EndOfPacket;
Party.Add©;
end;
end;[/src]
hLaPEx, Evermore, hAuthD, L2on, ...
Сообщений: 406
Тем: 10
Зарегистрирован: Jun 2008
Репутация:
2,862
Hint Написал:PartySmallWindowUpdate для Epeisodion (575):
[src=pascal]procedure TGameStream.PartySmallWindowUpdatePacket(Packet: TGamePacket);
var
C: TChar;
Flags: array [0..15] of Boolean;
I, H: Integer;
begin
with Packet do
begin
C.ObjectId := ReadD;
Party.Get(C.ObjectId, C);
H := ReadH; // Flags
for I := 0 to High(Flags) do Flags[I] := (H shr I) and 1 = 1;
if Flags[0] then C.CP := ReadD;
if Flags[1] then C.MaxCP := ReadD;
if Flags[2] then C.HP := ReadD;
if Flags[3] then C.MaxHP := ReadD;
if Flags[4] then C.MP := ReadD;
if Flags[5] then C.MaxMP := ReadD;
if Flags[6] then
begin
C.Level := ReadC;
IsValidLevel(C.Level);
end;
if Flags[7] then
begin
C.ClassId := ReadC;
IsValidClassId(C.ClassId);
end;
if Flags[8] then ReadH;
if Flags[9] then C.VitalityPoints := ReadD;
EndOfPacket;
Party.Add©;
end;
end;[/src]
if Flags[7] then C.ClassId := ReadC; // не верно тут H
if Flags[8] then ReadH; // замена пати. не верно тут С
Человек просто обязан ошибаться, раз другие учатся на его ошибках .......
Сообщений: 220
Тем: 19
Зарегистрирован: Oct 2011
Репутация:
2,462
Хм, спасибо, исправлю. А я почему-то поставил C вместо H (уже не помню причины).
hLaPEx, Evermore, hAuthD, L2on, ...
Сообщений: 102
Тем: 6
Зарегистрирован: Jun 2012
Репутация:
116
До кучи, мини апдейт бонуксовского ExNpcInfo.
Насчёт формата полей не уверен
Код: writeD(_npcObjId);
writeC(0x00);
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);
writeH(143); // статичный блок
writeD(_npcId + 1000000);
writeD(_loc.x);
writeD(_loc.y);
writeD(_loc.z + Config.CLIENT_Z_SHIFT);
writeD(_loc.h);
writeD(0x00);
writeD(_mAtkSpd);
writeD(_pAtkSpd);
writeF(_runSpdMul);
writeF(_atkSpdMul);
writeC(incombat);//Чек Анимации При нападении
writeC(0x00);//UNK
writeC(0x00);//UNK
writeC(0x00);//UNK
writeC(_isNameAbove ? 1 : 0);//Визуализирует нпц.
writeC(0x00);//UNK
writeC(0x00);//UNK
writeC(_team.ordinal());// Team - red/blue/none
writeD(0x00); //UNK
writeD(0x00); //UNK
writeD(_transformId); //Предположительно
writeD(0x00); //UNK
writeD(0x00); //UNK
writeD(0x00);
writeD(_HP);
writeD(_MP);
writeD(_maxHP);
writeD(_maxMP);
writeD(0x00); //UNK
writeD(0x00); //UNK
writeH(0x00); //UNK
writeC(0x00); //UNK
writeD(_nameNpcString.getId());
writeD(_titleNpcString.getId());
writeD(_titleColor);
writeD(0x00); //меняет цвет ника оО
writeD(0x00); //UNK
writeD(0x00); //UNK
writeD(0x00); //UNK
writeD(0x00); //UNK
writeC(0x00); //UNK
writeC(12); //UNK
writeC(0); //UNK
writeC(0); //UNK
Если есть инфа по анкноун полям, буду рад выслушать.
Сообщений: 466
Тем: 10
Зарегистрирован: Dec 2012
Репутация:
398
12-27-2013, 11:32 PM
(Сообщение последний раз редактировалось: 12-28-2013, 10:56 AM Daan Raven.)
Вот опкоды, кусок дампа с пакетами и целый стринг-дамп в тхт - http://yadi.sk/d/7MLNu-fxF5F3N . (Отдельное спасибо мефисто или мифесто, авейкингу за то, что научили делать стринг дамп, и килрою за то, что подсказал, как узнать опкоды, хоть я и догадывался).
Открыть спойлер
off
P.S.: Научите кто-то разбираться в этих пакетах, их структуре. Или хотя бы тыкните носом куда смотреть и расскажите, как вы научились (желательно в подробностях).
Сообщений: 102
Тем: 6
Зарегистрирован: Jun 2012
Репутация:
116
GooD Написал:Вот опкоды, кусок дампа с пакетами и целый стринг-дамп в тхт - http://yadi.sk/d/7MLNu-fxF5F3N . (Отдельное спасибо мефисто, авейкингу за то, что научили делать стринг дамп, и килрою за то, что подсказал, как узнать опкоды, хоть я и догадывался).
Открыть спойлер
off
P.S.: Научите кто-то разбираться в этих пакетах, их структуре. Или хотя бы тыкните носом куда смотреть и расскажите, как вы научились (желательно в подробностях).
Благодарствую.
Одного не пойму, что это за магические цифры в подобных сеттингах.
Я так понимаю, это имеет какое-то отношение к тому, как отправляются новые пакеты?
Сообщений: 122
Тем: 6
Зарегистрирован: Sep 2013
Репутация:
112
12-28-2013, 09:33 AM
(Сообщение последний раз редактировалось: 12-28-2013, 10:55 AM VenomRaider.)
полный пакет CharacterSelectionInfo:
CharacterSelectionInfo
PHP код: <?php
<packet id="09" name="CharacterSelectionInfo">
<part name="size" type="d" id="0"/>
<part name="0x07" type="d"/>
<part name="cant create" type="c"/>
<part name="?" type="c"/>
<part name="?" type="d"/>
<part name="?" type="c"/>
<for id="0">
<part name="name" type="S"/>
<part name="charId" type="d"/>
<part name="login" type="S"/>
<part name="sessionId" type="d"/>
<part name="clanId" type="d"/>
<part name="?" type="d"/>
<part name="sex" type="d"/>
<part name="race" type="d"/>
<part name="classId" type="d"/>
<part name="active" type="d"/>
<part name="x" type="d"/>
<part name="y" type="d"/>
<part name="z" type="d"/>
<part name="cur_hp" type="D"/>
<part name="cur_mp" type="D"/>
<part name="sp" type="Q"/>
<part name="exp" type="Q"/>
<part name="?" type="D"/>
<part name="?" type="d"/>
<part name="level" type="d"/>
<part name="karma" type="d"/>
<part name="pk kills" type="d"/>
<part name="pvp kills" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="item_id-UNDER" type="d"/>
<part name="item_id-REAR" type="d"/>
<part name="item_id-LEAR" type="d"/>
<part name="item_id-NECK" type="d"/>
<part name="item_id-RFINGER" type="d"/>
<part name="item_id-LFINGER" type="d"/>
<part name="item_id-HEAD" type="d"/>
<part name="item_id-RHAND" type="d"/>
<part name="item_id-LHAND" type="d"/>
<part name="item_id-GLOVES" type="d"/>
<part name="item_id-CHEST" type="d"/>
<part name="item_id-LEGS" type="d"/>
<part name="item_id-FEET" type="d"/>
<part name="item_id-BACK" type="d"/>
<part name="item_id-LRHAND" type="d"/>
<part name="item_id-HAIR" type="d"/>
<part name="item_id-DHAIR" type="d"/>
<part name="item_id-RBRACELET" type="d"/>
<part name="item_id-LBRACELET" type="d"/>
<part name="item_id-DECO1" type="d"/>
<part name="item_id-DECO2" type="d"/>
<part name="item_id-DECO3" type="d"/>
<part name="item_id-DECO4" type="d"/>
<part name="item_id-DECO5" type="d"/>
<part name="item_id-DECO6" type="d"/>
<part name="item_id-BACK" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="?" type="h"/>
<part name="?" type="h"/>
<part name="?" type="h"/>
<part name="?" type="h"/>
<part name="?" type="h"/>
<part name="hair_style" type="d"/>
<part name="hair_color" type="d"/>
<part name="face" type="d"/>
<part name="maxHP" type="D"/>
<part name="maxMP" type="D"/>
<part name="deleteTimer" type="d"/>
<part name="classId" type="d"/>
<part name="active" type="d"/>
<part name="enchant" type="c"/>
<part name="aurgmentationId" type="d"/>
<part name="transformId" type="d"/>
<part name="npcId" type="d"/>
<part name="level" type="d"/>
<part name="?" type="d"/>
<part name="?" type="d"/>
<part name="maxHP" type="D"/>
<part name="currentHP" type="D"/>
<part name="vitality" type="d"/>
<part name="XP Bonus" type="d"/>
<part name="Vitality items allowed" type="d"/>
<part name="Active" type="d"/>
<part name="?" type="c"/>
<part name="?" type="c"/>
<part name="?" type="c"/>
</for>
</packet>
Добавлено через 1 час 22 минуты
дайте плиз структуру пакета ItemList
|