PDA

Просмотр полной версии : Грация Эпилог - Unknown Пакеты


LiS
10.07.2010, 12:20
Доброго времени суток!

Версия пакетхака 3.5.13.122.
Сервер - Грация Эпилог (поставили сравнительно недавно, до этого был хеллбаунд)

Настройки пакетхака:
http://coderx.ru/attachment.php?attachmentid=1324&stc=1&d=1278745775http://coderx.ru/attachment.php?attachmentid=1325&stc=1&d=1278745775http://coderx.ru/attachment.php?attachmentid=1326&stc=1&d=1278745775

Перехват работает нормально, только есть несколько проблем:
1. В боте "Бот - локомотив от Alexus версия : 0.5.2 (бета)" персонаж перестал поднимать дроп (после перехода с ХБ на Грацию Эпилог).
2. Стали приходить Unknown пакеты:
- FEBC (после выбора чара в окне выбора персонажей) [FE BC 00 55 AB 01 10 00];
- FE70 [FE 70 00 A2 11 00 00 08 00 00 00 04 00 00 00 14 47 41 4D 49 4E 47 53 54 41 54 45 53 48 4F 52 54 43 55 54 00 0C 47 41 4D 49 4E 47 53 54 41 54 45 00 53 00 00 00 3B 00 00 00 43 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 3C 00 00 00 42 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 3E 00 00 00 4A 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 3F 00 00 00 4E 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 40 00 00 00 54 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 41 00 00 00 48 00 00 00 12 00 00 00 10 00 00 00 01 00 00 00 42 00 00 00 56 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 43 00 00 00 52 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 44 00 00 00 4B 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 4E 00 00 00 4D 00 00 00 12 00 00 00 10 00 00 00 01 00 00 00 46 00 00 00 4D 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 47 00 00 00 4F 00 00 00 12 00 00 00 10 00 00 00 01 00 00 00 48 00 00 00 50 00 00 00 12 00 00 00 10 00 00 00 01 00 00 00 49 00 00 00 55 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 4A 00 00 00 52 00 00 00 12 00 00 00 10 00 00 00 01 00 00 00 4B 00 00 00 53 00 00 00 12 00 00 00 10 00 00 00 01 00 00 00 4C 00 00 00 58 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 4D 00 00 00 49 00 00 00 12 00 00 00 10 00 00 00 01 00 00 00 4F 00 00 00 BE 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 50 00 00 00 45 00 00 00 12 00 00 00 10 00 00 00 01 00 00 00 51 00 00 00 4C 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 21 00 00 00 12 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 22 00 00 00 12 ....... очень длинный пакет ]
- FEBE [FE BE 00 55 AB 01 10 00 00 00 00]
3. Клиент отправляет Unknown пакеты:
- A6 (Тип: 0xA6 (Unknown) Размер: 1+2) [A6 ]


Подскажите, что необходимо сделать, чтобы вылечить эти проблемы? :)

J-Fobos
10.07.2010, 14:19
Для грации эрилог никто не делает Packets*.ini, а если кто и сделал, то не спешит делится с остальными :)
В ини файле пакетов нету, а значит программа не знает как их читать и называет Unknown.

LiS
10.07.2010, 15:22
Угу, понятно.

Перешел на пакетхак 3.5.33.164.

Теперь другой вопрос:

Есть у меня в скрипте такие места:

(1)
var
ItemBase: array[1..4,1..maxitems] of integer; //все предметы в инвентаре

(2)
procedure CreateItemBase;
var
i : integer;
begin
for i:=1 to maxitems do begin
//очищаем масив
ItemBase[1,i]:=0; //OID
ItemBase[2,i]:=0; //ID
ItemBase[3,i]:=0; //кол-во
ItemBase[4,i]:=0; //isEquipped
end;
...
end;

(3)
procedure Free;
begin
//ItemBase:=nil;
...
end;

Так вот:
Если в (3) раскомментировать строку, то скрипт первый раз после компиляции работает нормально, потом выключаем скрипт, опять включаем и уже в (2) присваивание не отрабатывает корректно. Пробовал там и до и после присваивания выводить значения:
msg.Lines.Add(VarToStr(ItemBase[1,i]));
Пустые строки выводит.

Причем в пакетхаке 3.5.13.122 это нормально работало.
Как мне удалять массив, если :=nil не работает корректно?

J-Fobos
10.07.2010, 16:11
Дело в том что массив не требует удаления. Это переменная, а не объект. При выключение скрипта память освободится самостоятельно.

К тому же nil не удаление, это указатель, константа такая :)
Константа Nil - значение не присвоенного указателя.

Использование нулевого (Nil) указателя приводит к исключению.

Nil используется главным образом как замена параметра Указателя - это говорит программе, что параметру присвоено значение не указателя.

Указательные переменные не установлены на Nil, кроме как в специальных обстоятельствах, типа при создании нового объекта, который содержит указатели. Это потому, что Delphi инициализирует память, взятую для нового объекта с 0-ми. Нулевой (Nil) указатель - тот, который имеет значение 0.

LiS
10.07.2010, 16:18
Ок. Спасибо.

Еще вопрос:

Приходит пакет: FE1F [FE 1F 00 55 AB 01 10 01] (ExFishingEnd)

Согласно сигнатуре пакета (ExFishingEnd:h(subID)d(CharID)c(isWin)), здесь последний байт - это результат рыбалки: 0 - рыба сорвалась, 1 - рыба поймана.

Пишем:
msg.Lines.Add('Результат рыбалки: ' + VarToStr(ReadC(8)));

И при успешном результате (в клиенте рыбка поймана) у меня выводится:
"Результат рыбалки: 0"

Почему так?

P.S. И что значит subID?

alexteam
10.07.2010, 16:45
1. inttostr ?
2.
id = FE
subid = 1F00

J-Fobos
10.07.2010, 16:55
Есть 2-х айдишные пакеты и одноайдишные. Это связано с нехваткой одноайдиных пакетов. А subID это второй байт в 2-х айдишных пакетах.

По поводу пакета рыбалки: у меня в пакете FE 1F FE 1F 00 55 AB 01 10 01 ReadC(8)=1

зы: гы, опять опоздал с ответом, надо странички обновлять почаще :)

LiS
10.07.2010, 18:43
1. inttostr ?
2.
id = FE
subid = 1F00

на счет subID спасибо.
по поводу inttostr - какая разница? то же самое.

Добавлено через 1 минуту
Есть 2-х айдишные пакеты и одноайдишные. Это связано с нехваткой одноайдиных пакетов. А subID это второй байт в 2-х айдишных пакетах.

По поводу пакета рыбалки: у меня в пакете FE 1F FE 1F 00 55 AB 01 10 01 ReadC(8)=1

зы: гы, опять опоздал с ответом, надо странички обновлять почаще :)

да, на ХБ тоже самое было - 1 давало при успехе рыбалки.
а теперь вот, в самом пакете вижу, что 1 приходит, а ReadC(8) дает 0.
Причем ReadC(7) нормально читается. Бред...

alexteam
10.07.2010, 23:21
по поводу inttostr - какая разница? то же самое.
разница в присутствии проверки типа передаваемого параметра. и отсуствии в данном случе необходимости конвертировать в вариант перед вызовом функции. на что фастскрипту походу фиолетово.

при вызове этого readc промониторь что лежит в результате length(pck)
если ты пытаешься читать последний байт в пакете - возможно поможет костыль вида:

pck := pck + '!';
if ReadC(8) = 1 then showmessage('емана');
не забудь потом лишний символ с пцк убить. либо заранее пропустить пакет на клиент используя buf := pck; sendtoclient; и после обработки убить содержимое пцк.

LiS
13.07.2010, 14:24
не забудь потом лишний символ с пцк убить. либо заранее пропустить пакет на клиент используя buf := pck; sendtoclient; и после обработки убить содержимое пцк.

ага. суть ясна, а убить содержимое - это приравнять к nil?
или можно как-то правильно удалить лишний символ, который я добавлю?

alexteam
13.07.2010, 15:10
это приравнять к nil
pck := '';

afonbka
24.07.2010, 14:50
Обнови пакет хак до последней версии. в настройках выбери не kamael-hellbaund-gracia а GraciaFinal и будут пакеты не унковн а все как надо.

LiS
13.08.2010, 13:41
А какая на данный момент последняя, которая поймет пакеты эпилога?

Breadfan
13.08.2010, 13:51
да в файлах посмотри, там лежит именно последняя ..33.154 вроде....

LiS
13.08.2010, 14:58
Скачал 3.5.33.164.
Настройки для перехваченного соединения:
указал Kamael-Hellbound-Gracia
указал Gracia (off-server) (да и убирал эту галочку, тоже самое)

версия протокола:
T2 - Gracia Final - 12

Тоже самое:
UnknownFEBC
UnknownFE70
Unknown4A
UnknownA5

http://coderx.ru/attachment.php?attachmentid=1404&stc=1&d=1281693452

J-Fobos
13.08.2010, 15:02
Просто добавьте описание этих пакетов в ини файл.

LiS
13.08.2010, 15:07
Вот кстати пакет Protocol Version:

Тип: 0x0E (ProtocolVersion)
Размер: 265+2
Вермя прихода: 14:00:47:487
0002 d Version: 148 (0x00000094)
0006 - 260: пропускаем 260 байт(а)

Может на основе него, что-нить подскажете мне...

Добавлено через 1 минуту
Просто добавьте описание этих пакетов в ини файл.

А я откуда знаю, что это за пакеты? Как я добавлю их описание?

//J-Fobos: ини файла с пакетами к грации эпилог нету в общем доступе (пока что нету). Как и написал Breadfan - с исходников сервера можно узнать всю нужную информацию :)

Breadfan
13.08.2010, 15:16
Ну если прям очень-очень необходимо это - то можно исходники сервера эпилога скачать и из них выдернуть уже...из декомпиленого варианта - хз можно ли, не смотрел просто даже, но, по крайней мере, в исходниках проще рыться в поисках нужного.

LiS
13.08.2010, 17:20
Хех. где-ж их взять-то, исходники именно сборки с моего сервера...

//Breadfan: кхм, а чем пакеты из сборки слитой с инета будут отличаться от "твоего сервера", если большинство - нормально распознается ? ....А для чего вообще это все?) Любопытство "че ж там такое от меня прячется"?)
http://la2.100nt.ru/category/jserver/l2emu_source_code_gracia_epilogue.html

Дал спасибку, но все равно: спасибо большое.

Добавлено через 1 час 37 минут
Посмотрел я те исходники, нет там таких кодов... :(

А для чего вообще это все?) Любопытство 'че ж там такое от меня прячется'?)
То есть Вы считаете, если пакетхак не определил пакет, то он ничего не значит и не нужен?
//Breadfan: я за всех то говорить и не буду, но практически все пакеты типа FExx - довольно специфичны (например ExHeroList, ExAirShipInfo) - и в повседневной жизни - не используются. Есть некоторые исключения, типа пакета с инфой об аугменте, но в основном - и без них спокойно можно обойтись.

Добавлено через 16 минут
Ну ок. значит не буду забивать себе этим голову. Спасибо еще раз.
P.S. Просьба: пишите отдельные сообщения, а не комментируйте... А то вам даж спасибку не дашь )

mira
16.08.2010, 13:22
а че боты для фарма олимпа это был бы потолок)) мои боты кстате в топе проф сервера как раз) но такой интелект нереализуем,сам не всегда знаеш че когда юзать да и забанят сразу за такую наглость по айпи

vitlikbash
01.12.2010, 15:47
pck :='';

pck:= copy(pck,1, length(pck)-1));