PDA

Просмотр полной версии : [?] пакет с результатом Аугментации...


HooleeCheeter
13.10.2007, 17:16
какой он? и кто знает его синтаксис?

xkor
13.10.2007, 23:07
че такое аугментация???

HooleeCheeter
14.10.2007, 00:29
че такое аугментация???
фишка интерлюда, http://forum.reborn.ru/showthread.php?t=591413

NLObP
14.10.2007, 01:26
Вот что нашел

//InventoryUpdate
writeC(0x27);
writeH(_items.size());
for(L2ItemInstance temp : _items)
{
writeH(temp.getLastChange());
writeH(temp.getItem().getType1()); // item type1
writeD(temp.getObjectId());
writeD(temp.getItemId());
writeD(temp.getCount());
writeH(temp.getItem().getType2()); // item type2
writeH(temp.getCustomType1());
writeH(temp.isEquipped() ? 1 : 0);
int t = temp.getItem().getBodyPart();
writeD(t == L2Item.SLOT_FORMAL_WEAR ? L2Item.SLOT_FULL_ARMOR : t); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand
writeH(temp.getEnchantLevel()); // enchant level
writeH(temp.getCustomType2());
writeD(0); //augmentation id
writeD(temp.getLifeTimeRemaining()); // shadow weapon life time
}



//ItemList
{
writeC(0x1B);
writeH(_showWindow ? 1 : 0);

writeH(_items.length);
for(L2ItemInstance temp : _items)
{
writeH(temp.getItem().getType1()); // item type1
writeD(temp.getObjectId());
writeD(temp.getItemId());
writeD(temp.getCount());
writeH(temp.getItem().getType2()); // item type2
writeH(temp.getCustomType1()); // item type3
writeH(temp.isEquipped() ? 1 : 0);
writeD(temp.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand
writeH(temp.getEnchantLevel()); // enchant level
//race tickets
writeH(temp.getCustomType2()); // item type3
writeD(0); // augmentation id
writeD(temp.getLifeTimeRemaining()); // shadow weapon life time
}
}

Здесь скорее всего кроется ошибка работы скрипта заточки на Интерлюдии. Пакеты длинее на 8 байт - augmentation id и shadow weapon life time. HooleeCheeter, попробуй в скрипте поменять такими скорректированными подпрограммами.
//************************************************** ****************************
procedure CreateItemBase; //пакет 1B, Создает базу ObjectID по ItemID
var
i, ss, ww, j, ObjID, ItemID, lvl, ListCount: integer;
begin
ss:=1; //индекс в массиве скроллов
ww:=1; //индекс в массиве предметов
j:=4; //смещение для ListCount
ListCount:=ReadH(j); //количество итемов не должно превышать max!
if ListCount>max then ListCount:=max;
j:=8; //смещение для ObjectID
//Пробегаем по Инвентарю и сохраняем ObjectID соответствующие необходимым ItemID
for i:=1 to ListCount do begin
ObjID:=ReadD(j); //ObjectID
ItemID:=ReadD(j); //ItemID
j:=j+14;
Lvl:=ReadD(j); //Level
case ItemID of
scroll: begin
ScrlBase[ss]:=ObjID;
ss:=ss+1;
//Say('ColvoScrl='+IntToStr(ss));
end;
weapon: begin
WpnBase[1,ww]:=ObjID;
WpnBase[2,ww]:=lvl;
ww:=ww+1;
//Say('ColvoWpn='+IntToStr(ww));
end;
end;
// j:=j+2;
j:=j+10;
end;
ColvoWpn:=ww-1;
ColvoScrl:=ss-1;
Say('>ColvoWpn='+IntToStr(ColvoWpn)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl));
end;

//************************************************** ****************************
procedure UpdateItemBase; //пакет 27, Создает базу ObjectID по ItemID
var
i, ii, j, ss, ww, ObjID, ItemID, Lvl, ListCount, UpdType: integer;
begin
ListCount:=ReadH(2); //количество итемов
//Пробегаем по Инвентарю и сохраняем пары ObjectID - Lvl
j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
// Say('Апдейт базы!');
for i:=1 to ListCount do begin
UpdType:=ReadH(j);
j:=j+2;
ObjID:=ReadD(j);
ItemID:=ReadD(j);
j:=j+14;
Lvl:=ReadH(j);
// Say('Предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID));
case UpdType of
1:case ItemID of
weapon: begin
ColvoWpn:=ColvoWpn+1;
//Say('Добавили предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(weapon));
for ii:=1 to max do
if WpnBase[1,ii]=0 then begin WpnBase[1,ii]:=ObjID; WpnBase[2,ii]:=lvl; end;
end;
scroll: begin
ss:=ss+1;
//Say('Добавили скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(scroll));
for ii:=1 to max do
if ScrlBase[ii]=0 then ScrlBase[ii]:=ObjID;
end;
end;
2:case ItemID of
weapon:
for ii:=1 to max do
if WpnBase[1,ii]=ObjID then WpnBase[2,ii]:=lvl;
scroll:
//Say('Внимание! Изменения в скролле!?');
end;
//удален
3:case ItemID of
weapon: begin
ColvoWpn:=ColvoWpn-1;
for ii:=1 to max do
if WpnBase[1,ii]=ObjID then begin WpnBase[1,ii]:=0; WpnBase[2,ii]:=0; end;
//Say('Удаляем предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(weapon));
end;
scroll: begin
ColvoScrl:=ColvoScrl-1;
for ii:=1 to max do
if ScrlBase[ii]=ObjID then ScrlBase[ii]:=0;
//Say('Удаляем скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(scroll));
end;
end;
end;
// j:=j+2; //следующее смещение для действия с предметом 1-добавлен 2-изменен 3-удален
j:=j+10;
end;
Say('>>ColvoWpn='+IntToStr(ColvoWpn)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl));
end;

HooleeCheeter
14.10.2007, 02:58
шя стало писать что 1 оружие (даже когда я купил 20), а количество скроллов пишет без последнего разряда, т.е. вместо 240 - 24 =/
даже не так... она пишет кол-во занятых слотов :shock:

Добавлено спустя 52 минуты 18 секунд:
ЗАРАБОТАЛО! :Yahoo!: NLoBp большуший риспегт!

NLObP
14.10.2007, 03:02
Я рад. Поздравляю! :wink:
Ты заменил новыми процедурами?

HooleeCheeter
14.10.2007, 12:56
Я рад. Поздравляю! :wink:
Ты заменил новыми процедурами?
ога, именно в них проблема была, как ты и говорил )

Добавлено спустя 45 минут 1 секунду:
NLoBp, не мог бы ты переделать этот скрипт под авто аугментацию?

пакетно это выглядит вот так :

D0 29 00 20 4A 08 10 - в окошко вставляется девайс
D0 2A 00 20 4A 08 10 8A 49 08 10 - вставляется LifeStone
D0 2B 00 20 4A 08 10 8A 49 08 10 92 4A 08 10 14 00 00 00 - за ним идут D гемстоуны в количестве 20 штук
D0 2C 00 20 4A 08 10 8A 49 08 10 92 4A 08 10 14 00 00 00 - и потверждающий пакет - нажатие кнопки "Augment"

было бы замечательно, если бы скрипт делал так, чтобы ввел ItemID девайса, потом по соц. действию YES он в базе находил LifeStone и GemStone'ы , и подсатвлял их. и на NO - снятие аугмента если не понравился, (2 пакета D0 2D 00 D6 B7 03 10 и D0 2E 00 D6 B7 03 10 где в конце ItemID).

зы: в скрпте на автоточку неудобно что когда он проходит полный цикл и переламывает все вещи, приходица перезапускать клиент чтобы опять запустить цикл =/ видимо на Procedure Init , надо сбрасывать какоето значение.

NLObP
14.10.2007, 18:08
NLoBp, не мог бы ты переделать этот скрипт под авто аугментацию?
Я попробую, но мне олаживать негде.

зы: в скрпте на автоточку неудобно что когда он проходит полный цикл и переламывает все вещи, приходица перезапускать клиент чтобы опять запустить цикл =/ видимо на Procedure Init , надо сбрасывать какоето значение.
Отключаешь, включаешь скрипт. Закрываешь, открываешь инвентарь. Скрипт готов к работе.
У меня такого не было. Кончались предметы, скрипт останавливался. Я креатил заточки, мечи и снова давил Yes.

HooleeCheeter
16.10.2007, 18:33
ну скрипт я переделал, Аугментирует 1 нажатием кнопки ) сейчас разбираюсь как выключить там таймер.
NLObP, если надумаешь поставить ICQ , то велкам - 335551699

Витя
05.11.2008, 11:23
выложите плиз скрипт на авто Аугментирацию

NLObP
05.11.2008, 11:38
выложите плиз скрипт на авто Аугментирацию

Посмотри здесь (http://coderx.ru/showthread.php?t=533)