Здесь скорее всего кроется ошибка работы скрипта заточки на Интерлюдии. Пакеты длинее на 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;
шя стало писать что 1 оружие (даже когда я купил 20), а количество скроллов пишет без последнего разряда, т.е. вместо 240 - 24 =/
даже не так... она пишет кол-во занятых слотов :shock:
было бы замечательно, если бы скрипт делал так, чтобы ввел ItemID девайса, потом по соц. действию YES он в базе находил LifeStone и GemStone'ы , и подсатвлял их. и на NO - снятие аугмента если не понравился, (2 пакета D0 2D 00 D6 B7 03 10 и D0 2E 00 D6 B7 03 10 где в конце ItemID).
зы: в скрпте на автоточку неудобно что когда он проходит полный цикл и переламывает все вещи, приходица перезапускать клиент чтобы опять запустить цикл =/ видимо на Procedure Init , надо сбрасывать какоето значение.
NLoBp, не мог бы ты переделать этот скрипт под авто аугментацию?
Я попробую, но мне олаживать негде.
Цитата:
зы: в скрпте на автоточку неудобно что когда он проходит полный цикл и переламывает все вещи, приходица перезапускать клиент чтобы опять запустить цикл =/ видимо на Procedure Init , надо сбрасывать какоето значение.
Отключаешь, включаешь скрипт. Закрываешь, открываешь инвентарь. Скрипт готов к работе.
У меня такого не было. Кончались предметы, скрипт останавливался. Я креатил заточки, мечи и снова давил Yes.
ну скрипт я переделал, Аугментирует 1 нажатием кнопки ) сейчас разбираюсь как выключить там таймер. NLObP, если надумаешь поставить ICQ , то велкам - 335551699