Показать сообщение отдельно
Старый 25.12.2007, 11:44   #7
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: Помогите плз))

Цитата:
Сообщение от anGe1
Цитата:
Сообщение от NLObP
Посмотри в этой теме.
Всё нашёл))Все гуд ток он для С4 а на С6 не пашет кто может сделать для С6 :DDD
Вот для интерлюда, надо заменить процедуры. Внимательно их посмотри. Отличие в двух местах.
Код:
//Автоматизация заточки предметов до необходимого уровня by NLObP
//Затачиваем поочереди все предметы с Weapon ID пока не переломаем или не заточим
//******************************************************************************
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;
        end;
        weapon: begin
            WpnBase[1,ww]:=ObjID;
            WpnBase[2,ww]:=lvl;
            ww:=ww+1;
        end;
     end;
     //отличие здесь!!!
     //j:=j+2; //для С4
     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-удален
  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);
    case UpdType of
      1:case ItemID of
          weapon: begin
            ColvoWpn:=ColvoWpn+1;
            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;
            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:
      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;
          end;
          scroll: begin
             ColvoScrl:=ColvoScrl-1;
             for ii:=1 to max do
              if ScrlBase[ii]=ObjID then ScrlBase[ii]:=0;
          end;
      end;
    end;
    //отличие здесь!!!
    //j:=j+2; //для С4
    j:=j+10; //для ИЛ.  следующее смещение для действия с предметом 1-добавлен 2-изменен 3-удален
  end;
  Say('>>ColvoWpn='+IntToStr(ColvoWpn)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl));
end;
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием