Ну если h - это 4-ре байта, то всё гуд
Просто... l2phx выкидывает ошибку на русс офф, когда пытаемся просмотреть пакет BuyList. Обработка идёт в цикле (от кол-ва итемов в листе) и как я понимаю происходит выход за цикл.
з.ы. можно ещё и multisell листов нормальную обрабатку сделать. Вот пример с русс оффа(часть скрипта):
delphi Код:
if pck[1] = #$D0 then
begin
fle := TStringList.Create;
fle.add('<?xml version=''1.0'' encoding=''utf-8''?>');
fle.add('<list>');
Position := 2;
MultisellListID := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
MultisellSize := ReadD(Position);
i := 0;
while (i < MultisellSize) do
begin
fle.add('<item>');
EntryID := ReadD(Position);
Fake := ReadC(Position);
Fake := ReadH(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
ProductionSize := ReadH(Position);
IngredientSize := ReadH(Position);
ProdID := 0;
while (ProdID < ProductionSize) do
begin
ItemID := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadH(Position);
Count := ReadD(Position);
Fake := ReadH(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
fle.add('<production id="'+IntToStr(ItemID)+'" count="'+IntToStr(Count)+'"/>');
Inc(ProdID);
end;
IngrID := 0;
while (IngrID < IngredientSize) do
begin
ItemID := ReadD(Position);
Fake := ReadH(Position);
Count := ReadD(Position);
Fake := ReadH(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
Fake := ReadD(Position);
fle.add('<ingredient id="'+IntToStr(ItemID)+'" count="'+IntToStr(Count)+'"/>');
Inc(IngrID);
end;
fle.add('</item>');
Inc(i);
end;
fle.add('</list>');
fle.SaveToFile('MultiSell/'+IntToStr(MultisellListID)+'.xml');
fle.Free;
end;
Добавлено через 7 минут
А если были бы желающие - я не прочь сделать чё-нить вроде l2wh.com + hIngame.
Собирать базу русс оффа (дропа, координат мобов, buy и multisell листов ну и прочую хрень). А-ля hInGame, чтобы игроки могли иметь хоть какую-то пользу, а остальным - аналог l2wh.com (сбор данных).