Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Нид хелп

-

Боты, скрипты и прочий софт для Lineage 2

- Весь софт по Lineage 2 и все, что связано с ботоводством, скриптописанием и брутом - в этом разделе

Ответ
 
Опции темы
Старый 31.10.2009, 14:49   #1
 Разведчик
Аватар для Alximik45
 
Alximik45 никому не известный тип
Регистрация: 16.10.2009
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Нид хелп

Всем привет, сразу к теме. На сервере точки стоят очень дешего, но шанс не очень. Точить руками долго и нудно, подскажите какого нибудь бота который сам мог бы точить до определенного числа. Заранее спасибо.
  Ответить с цитированием
Старый 31.10.2009, 14:57   #2
Заблокирован
 Старший сержант
Аватар для GraNIT
 
GraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауру
Регистрация: 27.07.2009
Сообщений: 237
Популярность: 578
Сказал(а) спасибо: 593
Поблагодарили 329 раз(а) в 147 сообщениях
Отправить сообщение для GraNIT с помощью ICQ Отправить сообщение для GraNIT с помощью Skype™
 
По умолчанию Re: Нид хелп

Варианты:
1. Скрипт на автозаточку...
2. Баг на заточку...
  Ответить с цитированием
Старый 31.10.2009, 15:30   #3
 Пехотинец
Аватар для ka3ant1p
 
ka3ant1p скоро будет известенka3ant1p скоро будет известенka3ant1p скоро будет известен
Регистрация: 17.10.2009
Сообщений: 61
Популярность: 210
Сказал(а) спасибо: 5
Поблагодарили 100 раз(а) в 24 сообщениях
 
По умолчанию Re: Нид хелп

Цитата:
Сообщение от granit2008Посмотреть сообщение
Варианты:
1. Скрипт на автозаточку...
2. Баг на заточку...

зы ссылу не давай на это)) Пусть учатся использовать такую ссылку
________________
ВОТ ССЫЛКА НА САМЫЕ ПОЛЕЗНЫЕ ТЕМЫ ФОРУМА, И ВСЕ ЧТО ВАМ НУЖНО
  Ответить с цитированием
Старый 31.10.2009, 16:31   #4
 Разведчик
Аватар для Alximik45
 
Alximik45 никому не известный тип
Регистрация: 16.10.2009
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Нид хелп

Да, я нешел скрипт для л2phx но дело в том что когда я точу 3 вещи на +1 у меня l2phx их не видит. он вообще пакеты не ловит. настроено вро де бы на интерлюд.... обьясните пож)
  Ответить с цитированием
Старый 31.10.2009, 17:26   #5
 Пехотинец
Аватар для ka3ant1p
 
ka3ant1p скоро будет известенka3ant1p скоро будет известенka3ant1p скоро будет известен
Регистрация: 17.10.2009
Сообщений: 61
Популярность: 210
Сказал(а) спасибо: 5
Поблагодарили 100 раз(а) в 24 сообщениях
 
По умолчанию Re: Нид хелп

Цитата:
Сообщение от Alximik45Посмотреть сообщение
Да, я нешел скрипт для л2phx но дело в том что когда я точу 3 вещи на +1 у меня l2phx их не видит. он вообще пакеты не ловит. настроено вро де бы на интерлюд.... обьясните пож)

Используй другие скрипты на точку, более простые, без панели управления, к примеру такой:
Автор тамбик, взято с coderx.ru
Код:
// хроники Interlude
//  проверялось с использованием l2phx.3.5.26.148
// в пати чат пишем уровень заточки
// можно менять в процесе работы скрипта
// заточить один раз чтоб запомнить чем и что точить
// можно точить для запоминания несколько предметов соответствующие
// применяемому skrol
//  СТАРТ нажать соцдействие ДА
//  СТОП нажать соцдействие  НЕТ
//  дальше скрипт сам точит до указаного уровня заточки
//  все предметы одинаковые с первыми  заточеными
//  т.е если вы заточили несколько разных предметов
// одного класса армор или веапон они будут точиться
// точит первый предмет до максима потом второй и т.д
//  есть возможность для закупки skrol для этого
// поговорить с нпс и купить  skrol столько ===сколько надо докупать
// скрипт должен запомнить 
// нпс должен быть выделен
// cообщения вкл  приветствие \ hello ... . выкл победа \ victory 
// АВТОР ==>>>> TAMBIK
  program Enchant_gracia;
   const
   myname='pamparampampam'; //<<== пишем свой НИК
   max=390;//<<== колличество ячеек в рюкзаке
   xxx=20;//<<== колличество skrol при котором будет закупка 
  
     var
    BaseItems:array[1..max,1..9] of integer;
    BaseID:array[1..max] of integer;
    Timer01: TTimer;
    Timer02: TTimer;
    Timer03: TTimer;
    Action,BypassToServer,MultiSell:string; 
    autoskrol:Boolean;
    autoMsg:Boolean;
    flag,start:Boolean;
    mytext:string; 
    ListSize,ItemEnch:word; 
    textID,itemID:integer;
    enchantObjectID:integer;
    enchantID,skrolObjectID:integer; 
    ItemOID,objectOID: integer;  
    sumskrol,sumitemID: integer;
    x,y,ii:integer;
    a,i:integer; 
    maxlvl: integer;
    GetiD:integer;
    skrolID,skrolObj:integer;
  
//-----------------------------------------
procedure SendMsg2(msg:string);
begin 
  if autoMsg  then begin
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS('');
  WriteS(msg);
  SendToClientEx(myname);
end;
end;
//===========================================
procedure Resultmaxlvl;
var
  i:integer;
begin
    i:=2;
    mytext:=ReadS(i);
    textID:=ReadD(i);
 if (textID=3)  then begin
     maxlvl:=StrToInt(mytext);
SendMsg2( 'установлен Уровень Заточки : '+IntToStr(maxlvl)+'' ); 
  pck:='';
 exit;
end;
end;
//..................................... 
procedure ItemList;
var
  i, j, k: integer;
  count:integer; 
 begin
    j:=4; //пропускаем дo ListSize
  ListSize:=ReadH(j); 
  for i:=1 to ListSize do
  if (i<=ListSize) then begin
      BaseItems[i,1]:=ReadH(j);  //ItemType1- 1:одето броня. 0:бижа. 4:в рюкзаке
      BaseItems[i,2]:=ReadD(j);  //ObjectID
      BaseItems[i,3]:=ReadD(j);  //ItemID
      BaseItems[i,4]:=ReadD(j);  // count: 1интерлюд
      BaseItems[i,5]:=ReadH(j);  //  
      BaseItems[i,6]:=ReadH(j);  //  
      BaseItems[i,7]:=ReadH(j);//
      BaseItems[i,8]:=ReadD(j);// 
      BaseItems[i,9]:=ReadH(j);//-EnchantLevel: 
              // 36 интерлюд
               inc(j,10); 
  end else for k:=1 to 9 do BaseItems[i,k]:=0; // забиваем нулями
   if  (start=false) then begin
       ItemOID:=Getitem(enchantObjectID,2,3);//находим по ObjectID предмет с ItemID
       if  (ItemOID>0) then addIDtoarray(ItemOID);// добавим ID предмета в базу
               end;
 if (skrolID>0)  then begin
     sumskrol:=Getsumitem(skrolID,3,4);// счет скоко свитков
     SendMsg2 (' ====== skrol  :  '+IntToStr(sumskrol)+'  Ш Т ');
      skrolObj:=Getitem(skrolID,3,2);//находим  ObjectID skrol
 if (sumskrol=xxx) and (autoskrol=true) then   begin 
        SendMsg2 ('        _ З А К У П К А    S K R O L _ ');
       SendMsg2 ('____________________________________ ');
          start:=false;
           Timer02.enabled:=false;
              a:=1; 
              Timer01.enabled:=true;
                end;
 if start and (sumskrol>0) then Timer02.enabled:=true;
      if (sumskrol=0) then  begin
       SendMsg2 ('........ НЕДОСТАТОЧНО  SKROL........  ');
         SendMsg2 ('___ О С Т А Н О В Л Е Н О ___ ');
          Timer02.enabled:=false;
   end;
end;
end;
//-----------------------------------------
procedure OnTimer01(Sender: TObject);
 begin
case a of 
 1:begin
   buf:=Action;
   SendToServerEx(myname);
    inc(a);
 SendMsg2( '............... Action ...............' ); 
   end;
 2:begin
   buf:=BypassToServer;
   SendToServerEx(myname);
   inc(a); 
 SendMsg2( '..........BypassToServer..........' );
   end;
 3:begin
   buf:= MultiSell;
   SendToServerEx(myname);
    a:=0; 
 SendMsg2( '.............MultiSell...............' );
 Timer01.enabled:=false;
    start:=true;
    Timer02.enabled:=true;
 SendMsg2( '...... КУПИЛИ  SKROL ......' );
   end;
 end;
end;
//=============================
procedure EnchantResult;
  begin
  deleteBase;
  end;
//=============================
procedure InventoryUpdate;
var
 Id,ObjId:integer;
begin
    ObjId:=ReadD(8); 
    Id:=ReadD(12); 
SendMsg2 ('удален предмет Id: '+IntToStr(Id)+' ObjectID: '+IntToStr(ObjId)+' ');
    deleteBase;
end;
//=============================
procedure deleteBase;
var
  i,j,k:integer;  
 begin
 //   SendMsg2( ' ^_ cleaner Base _^ ' );
    for i:=1 to max do
 if (BaseItems[i,2]=enchantID) then begin
      BaseItems[i,1]:=0;
      BaseItems[i,2]:=0; //ObjectID  
      BaseItems[i,3]:=0;  //ItemID
      BaseItems[i,4]:=0;  
      BaseItems[i,5]:=0; 
      BaseItems[i,6]:=0; 
      BaseItems[i,7]:=0;
      BaseItems[i,8]:=0;
      BaseItems[i,9]:=0;
               inc(j,10);  
 end else for k:=1 to 9 do BaseItems[i,k]:=0; // забиваем нулями
end;
//===========================================
//              СЧИТАЕМ ПРЕДМЕТЫ
//    НАХОДИМ ObjectID  и ID ПРЕДМЕТа
//===========================
//счет скоко свитков и находим  ObjectID, ItemID  предметa
function Getitem(Obj,up,down:integer): integer; 
var 
  i: integer;
begin
 Result:= 0; //В начале у нас 0
  for i:=1 to max do
    if (BaseItems[i,up]=Obj) then begin
      Result:=BaseItems[i,down];
   end;
end;
//счет скоко всего предметов
//===========================
function Getsumitem(Obj,up,down:integer): integer; 
var 
  i: integer;
begin
 Result:= 0; //В начале у нас 0
  for i:=1 to max do
    if (BaseItems[i,up]=Obj) then begin
      Result:=Result+BaseItems[i,down];
   end;
end;
//=================================
//добавляем в базу ID предмета
procedure addIDtoarray(ItemOID:integer);
 begin
  SendMsg2( '------------------------------------- ' );
 SendMsg2 ('    добавить  в базу  ID  предмета    ');
   flag:=false; 
   for ii:=1 to max do 
 if  (BaseID[ii]=ItemOID) then begin // текущий ID уже есть в массиве,
     flag := true;
     sumitemID:=Getsumitem(ItemOID,3,4);//счет скоко предметов
     SendMsg2 (' предмет в базе  есть с ID : '+IntToStr(ItemOID)+'  шт  : '+IntToStr(sumitemID)+' ');
     SendMsg2( '------------------------------------- ' );
     Break;  // прерываем дальнейший перебор массива.
     end;
 if (flag = false) then begin
         for ii:=1 to max do 
     if (BaseID[ii]=0) then begin // добавим ID  в массив,
     BaseID[ii]:=ItemOID;
    SendMsg2 ('  добавлен в базу  предмет с ID : '+IntToStr(ItemOID)+' ');
  sumitemID:=Getsumitem(ItemOID,3,4);//счет скоко предметов
   SendMsg2 (' предметов c ID  : '+IntToStr(ItemOID)+' -:- '+IntToStr(sumitemID)+'  шт ');
  SendMsg2( '------------------------------------- ' );
 Break;  // прерываем дальнейший перебор массива.
 end;
end;
end;
//=============================
procedure ChooseInventory;
begin
  if (0 < GetiD)  then begin
       objectOID:=0;
       objectOID:=GetObjectID(GetiD);//находим по ItemID  предмет с ObjectID
  if (objectOID=0) then begin
      for ii:=1 to max do 
  if  (BaseID[ii]=GetiD) then begin
       BaseID[ii]:=0;
       SendMsg2 ('предметов c ID : '+IntToStr(GetiD)+' для заточки НЕТ !!!! ');
        SendMsg2 ('  ..... ПОИСК ______ ПРЕДМЕТА..... ');
          GetiD:=GetItemID(itemID);//находим в базе ItemID предмет для Заточки
  if (GetiD>0) then objectOID:=GetObjectID(GetiD);//находим по ItemID  предмет с ObjectID
  if (GetiD=0) then  SendMsg2 ('___НЕТ ПРЕДМЕТОВ ДЛЯ ЗАТОЧКИ___ ');
 Break;  // прерываем дальнейший перебор массива.
  end;
  end;
end;
end;
//=================================
//  GetiD:=GetItemID(itemID);//находим в базе ItemID предмет для Заточки
//находим ItemID предмета для Заточки в базе ItemID
function GetItemID(itemID:integer) : integer;
 begin
    Result:= 0;
 //   itemID:=0;
   for ii:=1 to max do 
 if (BaseID[ii]<>0) then begin
    itemID:=BaseID[ii];
    Result:=BaseID[ii];
   SendMsg2 ('  ID предмета для Заточки='+IntToStr(itemID)+' ');
   SendMsg2( '------------------------------------- ' ); 
      Break;  // прерываем дальнейший перебор массива.
   end;
end;
//=================================
// objectOID:=GetObjectID(GetiD);//находим по ItemID  предмет с ObjectID
//находим enchantID предмета по  ItemID для заточки
function GetObjectID(GetiD:integer) : integer;
var
  i:integer;
begin
 SendMsg2( '_______________________________' );
  SendMsg2(' находим по ID : '+IntToStr(GetiD)+' предмет для заточки ' );
  SendMsg2('_______________________________' );
  enchantID:= 0;
  ItemEnch:=0;  
  Result:= 0;
     for i:=1 to max do
 if   (BaseItems[i,3]=GetiD) and (BaseItems[i,9]< maxlvl) then begin
     Result:=BaseItems[i,2];
     ItemEnch:=BaseItems[i,9];
     enchantID:=BaseItems[i,2];
 SendMsg2('   .....найден предмет для заточки ..... ');
 SendMsg2('   предмет c ID  : '+IntToStr(GetiD)+' и ObjectID : '+IntToStr(enchantID)+' ');
 SendMsg2('   заточен до : '+IntToStr(ItemEnch)+'' );
 SendMsg2('_______________________________' );
         if (Result > 0) then  startselectEnch;
  Break;  // прерываем дальнейший перебор массива.
           exit;
   end;
end;
//===================================
 procedure OnTimer02(Sender: TObject);
begin
 if (skrolObj=0) then SendMsg2( ' ненайден skrol ObjectID !' );
  if  (skrolObj>0) then begin
  buf:=#$14;
  WriteD(skrolObj);
  WriteD(0);
  SendToServerEx(myname);
  Timer02.enabled:=false;
   end;
end;
//--------------------------
 procedure startselectEnch;
 begin

 Timer03.enabled:=true;
 end;
 procedure OnTimer03(Sender: TObject);
 begin 
   buf:=#$58;
   WriteD(enchantID);
   SendToServerEx(myname);
   Timer03.enabled:=false;
  SendMsg2( '  точим предмет ID  '+IntToStr(GetiD)+'  ObjectID: '+IntToStr(enchantID)+' ' );
 SendMsg2( '  точим предмет  до : '+IntToStr(maxlvl)+' ' );
 SendMsg2( '_______________________________' );
 end;
//-----------------------------------------
procedure Init;
begin
   a:=0; 
   flag:=false;
   GetiD:=0;
   sumskrol:=0;
   objectOID:=0;
   maxlvl:=0;
   itemID:=0;
   enchantID:=0;
   ItemEnch:=0;
   start:=false;
   autoMsg:=true;
   autoskrol:=false;
   skrolObjectID:=0;
   enchantObjectID:=0;

 Timer01:=TTimer.Create(nil);
 Timer01.OnTimer:=@OnTimer01;
 Timer01.enabled:=false;
 Timer01.interval:=2000; //<<== время между  разговором

 Timer02:=TTimer.Create(nil);
 Timer02.OnTimer:=@OnTimer02;
 Timer02.enabled:=false;
 Timer02.interval:=100; //<<== время выбора скролл
 
   Timer03:=TTimer.Create(nil);
   Timer03.OnTimer:=@OnTimer03;
   Timer03.enabled:=false;
   Timer03.interval:=500; //<<== время между заточкой  

 SendMsg2( 'в пати чат пишем уровень заточки' );
 SendMsg2( '    заточить предмет ! ! !' );
 SendMsg2( '  СТАРТ  соцдействие  ДА ' );
 SendMsg2( '  СТОП   соцдействие  НЕТ' );
 SendMsg2( '  В К Л  сообщения   соцдействие - приветствие \ hello  ' );
 SendMsg2( '  ВЫКЛ  сообщения   соцдействие - победа \ victory   ' );
 for ii:=1 to max do 
  BaseID[ii]:=0;
 end;
procedure Free;
begin

  Timer01.free;
  Timer02.free;
  Timer03.free;
end;
//=========================
procedure RequestActionUse; 
begin
case ReadD(2) of
  02:begin// Greeting 
          autoMsg:=true;
        pck:='';
     exit;     
     end;
  03:begin//
          autoMsg:=false;
        pck:='';
     exit;     
     end;
  06:begin
   if (maxlvl=0) then SendMsg2( ' НЕ ЗАДАН УРОВЕНЬ ЗАТОЧКИ !' );
   if (ItemOID=0) then SendMsg2( 'ненайден ID предмета! заточите еще раз !' );  
   if (maxlvl>0) and (ItemOID>0) then  begin
    GetiD:=GetItemID(itemID);//находим в базе ItemID предмета для Заточки
    start:=true;
    Timer02.enabled:=true;
     SendMsg2( '  !  !  !  П О Е Х А Л И   !  !  !' );
      pck:='';
     exit;     
     end;
      end;
  05:begin
     start:=false;
     enchantID:=0;
     ItemEnch:=0;
     Timer03.enabled:=false;
     Timer02.enabled:=false;
     Timer01.enabled:=false;
      SendMsg2( '         ! ! !   С Т О П   ! ! ! ' );
       SendMsg2 ('___ О С Т А Н О В Л Е Н О ___ ');
    pck:='';
    exit;     
   end;
end;
end;

//=========
begin
 if pck='' then exit; 
 if FromServer and (pck[1]=#$81) then EnchantResult;
 if FromServer and (pck[1]=#$27) and (ReadH(4)=3) then InventoryUpdate;
 if FromServer and (pck[1]=#$1B) then ItemList;
 if FromServer and (pck[1]=#$6F) then begin
     skrolID:=ReadD(2);
  //   SendMsg2( ' skrol ID : '+IntToStr(skrolID)+'' ); 
        ChooseInventory;
        end;
 if FromClient and (pck[1]=#$04) then Action:=pck;
 if FromClient and (pck[1]=#$21) then begin
          autoskrol:=true;
         BypassToServer:=pck;
        SendMsg2( '-- АВТОЗАКУПКА    SKROL    ВКЛ ----' );
         end;
 if FromClient and (pck[1]=#$A7) then MultiSell:=pck;  
 if FromClient then 
  case pck[1] of
 #$38:Resultmaxlvl;
 #$1B:RequestActionUse;
        end;
begin
if  (start=false) and FromClient then 
    case pck[1] of
  #$14:begin
          skrolObjectID:=ReadD(2);
          end;
  #$58:begin
         ItemOID:=0;
       enchantObjectID:=ReadD(2);
    end;
 end;
end;
end.
________________
ВОТ ССЫЛКА НА САМЫЕ ПОЛЕЗНЫЕ ТЕМЫ ФОРУМА, И ВСЕ ЧТО ВАМ НУЖНО
  Ответить с цитированием
Пользователь сказал cпасибо:
Alximik45 (31.10.2009)
Старый 31.10.2009, 19:42   #6
 Разведчик
Аватар для Alximik45
 
Alximik45 никому не известный тип
Регистрация: 16.10.2009
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Нид хелп

Я точу арку S точками(как это очевидно) мне нужно заполнять какие то поля кроме ника и ячеек в инвентаре? как сделать скрипт я уже понял, но что в нем менять хз
  Ответить с цитированием
Старый 31.10.2009, 20:01   #7
 Пехотинец
Аватар для ka3ant1p
 
ka3ant1p скоро будет известенka3ant1p скоро будет известенka3ant1p скоро будет известен
Регистрация: 17.10.2009
Сообщений: 61
Популярность: 210
Сказал(а) спасибо: 5
Поблагодарили 100 раз(а) в 24 сообщениях
 
По умолчанию Re: Нид хелп

Цитата:
Сообщение от Alximik45Посмотреть сообщение
Я точу арку S точками(как это очевидно) мне нужно заполнять какие то поля кроме ника и ячеек в инвентаре? как сделать скрипт я уже понял, но что в нем менять хз

Вот все что нужно менять:
myname='pamparampampam'; //<<== пишем свой НИК
max=390;//<<== колличество ячеек в рюкзаке
xxx=20;//<<== колличество skrol при котором будет закупка
________________
ВОТ ССЫЛКА НА САМЫЕ ПОЛЕЗНЫЕ ТЕМЫ ФОРУМА, И ВСЕ ЧТО ВАМ НУЖНО
  Ответить с цитированием
Старый 31.10.2009, 20:09   #8
 Разведчик
Аватар для Alximik45
 
Alximik45 никому не известный тип
Регистрация: 16.10.2009
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Нид хелп

Я захожу в ла2, открываю л2phx открываю вкладку автоматизация-скрипты. Нажимаю новый скрипт, удаляю все что там есть, копирую тот что дал ты, ввожу свой ник и количество ячееек, нажимаю сохранить порядок, ставлю галочку у скрипта. открываю окно ла2, пишу в пати чат 10, нажимаю ентер. нажимаю ДА и он не точит. что я делаю не правильно?


А и еще я не ставил никаких килл гуардов или что там. мож из за этого?


Или в настройках что не правильно? вроде все как в том факе про l2phx но там есть настроки некоторые которых в туториале нет.

Последний раз редактировалось Alximik45; 31.10.2009 в 20:21.
  Ответить с цитированием
Старый 31.10.2009, 20:28   #9
 Пехотинец
Аватар для ka3ant1p
 
ka3ant1p скоро будет известенka3ant1p скоро будет известенka3ant1p скоро будет известен
Регистрация: 17.10.2009
Сообщений: 61
Популярность: 210
Сказал(а) спасибо: 5
Поблагодарили 100 раз(а) в 24 сообщениях
 
По умолчанию Re: Нид хелп

Цитата:
Сообщение от Alximik45Посмотреть сообщение
Я захожу в ла2, открываю л2phx открываю вкладку автоматизация-скрипты. Нажимаю новый скрипт, удаляю все что там есть, копирую тот что дал ты, ввожу свой ник и количество ячееек, нажимаю сохранить порядок, ставлю галочку у скрипта. открываю окно ла2, пишу в пати чат 10, нажимаю ентер. нажимаю ДА и он не точит. что я делаю не правильно?


А и еще я не ставил никаких килл гуардов или что там. мож из за этого?


Или в настройках что не правильно? вроде все как в том факе про l2phx но там есть настроки некоторые которых в туториале нет.

Пишеш в пати чат 10, нажимаеш енер, точиш руками 1 итем на 1, после чего нажимеш йес
________________
ВОТ ССЫЛКА НА САМЫЕ ПОЛЕЗНЫЕ ТЕМЫ ФОРУМА, И ВСЕ ЧТО ВАМ НУЖНО
  Ответить с цитированием
Старый 31.10.2009, 20:38   #10
 Разведчик
Аватар для Alximik45
 
Alximik45 никому не известный тип
Регистрация: 16.10.2009
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Нид хелп

я все так и делаю но при нажатии ес ничего не происходит. кроме конечно анимации


Блин в том сообщении забыл написать что точу итем на 1. тоесть все как ты написал. я думаю что то в настройках не ладно

И меня смущает то что внизу l2phx пишет Точ: Не будет использоватся

Последний раз редактировалось Alximik45; 31.10.2009 в 20:45.
  Ответить с цитированием
Старый 31.10.2009, 20:59   #11
 Пехотинец
Аватар для ka3ant1p
 
ka3ant1p скоро будет известенka3ant1p скоро будет известенka3ant1p скоро будет известен
Регистрация: 17.10.2009
Сообщений: 61
Популярность: 210
Сказал(а) спасибо: 5
Поблагодарили 100 раз(а) в 24 сообщениях
 
По умолчанию Re: Нид хелп

Цитата:
Сообщение от Alximik45Посмотреть сообщение
я все так и делаю но при нажатии ес ничего не происходит. кроме конечно анимации


Блин в том сообщении забыл написать что точу итем на 1. тоесть все как ты написал. я думаю что то в настройках не ладно

И меня смущает то что внизу l2phx пишет Точ: Не будет использоватся

Анимация? Ты сразу не мог написать что єто грация? Это скрипт для интерлюда, я щяс занят, позже найду на компе у себя найду скрипт для грации и скину
________________
ВОТ ССЫЛКА НА САМЫЕ ПОЛЕЗНЫЕ ТЕМЫ ФОРУМА, И ВСЕ ЧТО ВАМ НУЖНО
  Ответить с цитированием
Старый 31.10.2009, 21:03   #12
 Разведчик
Аватар для Alximik45
 
Alximik45 никому не известный тип
Регистрация: 16.10.2009
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Нид хелп

Какой грация? это интерлюд. при нажатии анимации YES он кивает головой. или я не то жму? xD


Можешь написать в асю, как у тебя время будет? 495829830

Последний раз редактировалось Alximik45; 31.10.2009 в 21:06.
  Ответить с цитированием
Старый 31.10.2009, 21:16   #13
 Пехотинец
Аватар для ka3ant1p
 
ka3ant1p скоро будет известенka3ant1p скоро будет известенka3ant1p скоро будет известен
Регистрация: 17.10.2009
Сообщений: 61
Популярность: 210
Сказал(а) спасибо: 5
Поблагодарили 100 раз(а) в 24 сообщениях
 
По умолчанию Re: Нид хелп

Цитата:
Сообщение от Alximik45Посмотреть сообщение
Какой грация? это интерлюд. при нажатии анимации YES он кивает головой. или я не то жму? xD


Можешь написать в асю, как у тебя время будет? 495829830

а ты про эту анимация)) Ну хз у меня все работает, ты пишешь максимальное количество слотов в инвентаре или сколько заполнено?
________________
ВОТ ССЫЛКА НА САМЫЕ ПОЛЕЗНЫЕ ТЕМЫ ФОРУМА, И ВСЕ ЧТО ВАМ НУЖНО
  Ответить с цитированием
Старый 31.10.2009, 21:35   #14
 Разведчик
Аватар для Alximik45
 
Alximik45 никому не известный тип
Регистрация: 16.10.2009
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Нид хелп

Максимальное.

Последний раз редактировалось Alximik45; 31.10.2009 в 21:55.
  Ответить с цитированием
Старый 31.10.2009, 21:55   #15
 Пехотинец
Аватар для ka3ant1p
 
ka3ant1p скоро будет известенka3ant1p скоро будет известенka3ant1p скоро будет известен
Регистрация: 17.10.2009
Сообщений: 61
Популярность: 210
Сказал(а) спасибо: 5
Поблагодарили 100 раз(а) в 24 сообщениях
 
По умолчанию Re: Нид хелп

Цитата:
Сообщение от Alximik45Посмотреть сообщение
Максимальное. Слушай может ты мне в тим вивере поможешь и заодно посмотришь настройки мож там что?

Ты считаеш мне нечем заняться кроме как учить тебя пользоваться скриптами? вот тебе еще пара скриптов, если не заработают, значит ровняй руки.
Код:
const
   nik='LOMALKA';
   Enchant=20;

var
   UseItem, EnchantItem: string;
   Count, CurrentEnch: integer;
   Timer01: TTimer;

procedure Init;
begin
   Timer01:=TTimer.Create(nil);
   Timer01.OnTimer:=@OnTimer01;
   Timer01.enabled:=false;
   Timer01.interval:=500;
end;

procedure OnTimer01(Sender: TObject);
begin
   buf:=UseItem;
   SendToServerEx(nik);
   buf:=EnchantItem;
   SendToServerEx(nik);
end;

procedure Free;
begin
  Timer01.free;
  count:=0;
  CurrentEnch:=0;
end;

begin
    if FromServer and (pck[1]=#$87) then case ReadD(2) of
       0: begin
          CurrentEnch:=CurrentEnch+1;
          if CurrentEnch=Enchant then Timer01.enabled:=false;
          end;
       2: CurrentEnch:=0;
       end;
    if FromClient and (pck[1]=#$19) then UseItem:=pck;
    if FromClient and (pck[1]=#$5F) then EnchantItem:=pck;
    if FromClient and (pck=#$34#$02#$00#$00#$00) then
       begin
          pck:='';
          Timer01.enabled:=not(Timer01.enabled);
       end;
end.
Код:
const
   myname='LOMALKA';    //<<== пишем свой НИК
   max=390;            //<<== колличество ячеек в рюкзаке
   enchantResult=10000;  //<<== на сколько точить
   encSafe=1000;         //<<== на сколько безопасно точить
var
  BaseItems:array[1..max,1..10] of integer;
  EncItems:array[1..10] of integer;
  Timer01,Timer02: TTimer;
  mytext:string; 
  x,textID,vsego:integer;
  enchantID,enchantObjectID:integer;
  ItemOID,objectOID,selectObjectID,itemID:integer;
  skrolObjectID,bskrolObjectID,skrolAmount,bskrolAmount,skrolID,bskrolID,skrolOID,bskrolOID:integer; 
  enchantLevel:word; 
  start,startenchant:Boolean;
//---
procedure SendMsg2(msg:string);
begin 
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS('');
  WriteS(msg);
  SendToClientEx(myname);
end;
//... 
procedure ItemList;
var
  i, j, k: integer;
  ListSize: integer;
 begin
   j:=4; //пропускаем дo ListSize
  ListSize:=ReadH(j); 
  for i:=1 to ListSize do
  if (i<=ListSize) then begin
      BaseItems[i,1]:=ReadH(j);  //ItemType1- 1:одето броня. 0:бижа. 4:в рюкзаке
      BaseItems[i,2]:=ReadD(j);  //ObjectID
      BaseItems[i,3]:=ReadD(j);  //ItemID
      BaseItems[i,4]:=ReadD(j);  //LocationSlot
      BaseItems[i,5]:=ReadD(j);  //  q Amount: 
               j:=j+4;           //  q Amount: 
      BaseItems[i,6]:=ReadH(j);  //ItemType2
      BaseItems[i,7]:=ReadH(j);  // CustomType1
      BaseItems[i,8]:=ReadH(j);  //isEquipped: 
      BaseItems[i,9]:=ReadD(j);  //BodyPart
      BaseItems[i,10]:=ReadH(j); //EnchantLevel
       //SendMsg2( ' List;  ItemID------- :  '+IntToStr(BaseItems[i,3])+'' );
        inc(j,30);// ФИНАЛ 
 end else for k:=1 to 10 do BaseItems[i,k]:=0;    // забиваем нулями
 if (0<ItemID) then objectOID:=GetObjectID(ItemID);//находим по ItemID  предмет с ObjectID
 end;
//===
//находим ItemID по ObjectID предмета
function GetItemID(enchantObjectID:integer) : integer;
var
  i : integer;
begin
  for i:=1 to max do
    if (BaseItems[i,2]=selectObjectID) then begin
        itemID:=BaseItems[i,3];
         SendMsg2 ('- ID предмета для Заточки:'+IntToStr(itemID)+' ');
        start:=true;
        exit;
    end;
end;
//===
//находим enchantID предмета по  ItemID для заточки
function GetObjectID(itemID:integer) : integer;
var
  i :integer;
  
begin
 enchantLevel:=0;
 vsego:=0;
 for i:=1 to max do
  if (BaseItems[i,3]=itemID) and (BaseItems[i,10]< enchantResult) then begin
   vsego:=vsego+1;
   EncItems[vsego]:=i;                   
   if (vsego = 1) then begin
    enchantLevel:=BaseItems[i,10];
    enchantID:=BaseItems[i,2];
   end;
   if (vsego > 1) and (BaseItems[i,10] < enchantLevel) then begin
    enchantLevel:=BaseItems[i,10];
    enchantID:=BaseItems[i,2];
   end;
  end;
        //SendMsg2( '- В Ы Б Р А Н предмет для Заточки');
        //SendMsg2( '- ObjID предмета='+IntToStr(enchantID)+' ');
        //SendMsg2( '- точим предмет до: '+IntToStr(enchantResult)+' ' ); 
        SendMsg2( '- предметов для заточки: '+IntToStr(vsego)+' ' );
        SendMsg2( '- минимально заточен на: '+IntToStr(enchantLevel)+' ' );
        x:=1;
    if startenchant then begin
     Timer01.enabled:=true;
    end else begin
     SendMsg2( '- cоцдействие ДА для старта' );
    end; 
end;
//===
procedure OnTimer01(Sender: TObject);
begin
case x of
1:begin
  buf:=#$19;
  if enchantLevel < encSafe then begin 
   WriteD(skrolObjectID); //простая заточка
  end else begin
   WriteD(bskrolObjectID);//блессед заточка
  end;
  WriteD(0);
  SendToServerEx(myname);
  inc(x);
  end;
2:begin
  buf:=hstr('D04C00');
  WriteD(enchantID);
  SendToServerEx(myname);
  Timer02.enabled:=true; 
   x:=0;
  Timer01.enabled:=false;
end;
end;
end;
//---
procedure OnTimer02(Sender: TObject);
begin
  buf:=#$5F;
  WriteD(enchantID);
  WriteD(0);
  SendToServerEx(myname);
  Timer02.enabled:=false;
 SendMsg2( '- Т О Ч И М предмет: '+IntToStr(enchantID)+' ' );
end;
//----------------------------------------------------------------------------------- start
procedure Init;
begin
   itemID:=0;
   enchantID:=0;
   enchantLevel:=0;
   start:=false;
   startenchant:=false;
   skrolObjectID:=0;
   bskrolObjectID:=0;
   enchantObjectID:=0;
 
   Timer01:=TTimer.Create(nil);
   Timer01.OnTimer:=@OnTimer01;
   Timer01.enabled:=false;
   Timer01.interval:=500; //<<== время выбора свитка и предмета

   Timer02:=TTimer.Create(nil);
   Timer02.OnTimer:=@OnTimer02;
   Timer02.enabled:=false;
   Timer02.interval:=2800; //<<== время между заточкой  
SendMsg2( '- ***** скрипт включился *****' );
SendMsg2( '- ник: '+myname+', ячеек инвентаря: '+IntToStr(max)+' ' );
SendMsg2( '- будем точить до '+IntToStr(enchantResult)+' ' );
SendMsg2( '- выберите обычную заточку ' );
 x:=0;
  end;
procedure Free;
begin
  Timer01.free;
  Timer02.free;
end;
//=========================
procedure RequestActionUse;
begin
case ReadD(2) of
  24:begin
     startenchant:=true;
          x:=1;
     Timer01.enabled:=true;
      SendMsg2( '- П О Е Х А Л И -' );
      SendMsg2( '- соцдействие НЕТ для остановки' );
     buf:=hstr('14');
     SendToServerEx(myname);
     pck:='';
     exit;     
    end;
  25:begin
     start:=false;
     startenchant:=false;
     Timer01.enabled:=false;
     Timer02.enabled:=false;
      SendMsg2( '- С Т О П -' );
      SendMsg2( '- cоцдействие ДА для старта' );
     pck:='';
     exit;     
    end;
end;
end;
//=========
begin
 if FromServer and (pck[1]=#$11) then ItemList; 
 if FromClient then 
  case pck[1] of
 #$56:RequestActionUse;
 #$19:if skrolObjectID = 0 then begin
       skrolObjectID:=ReadD(2);
        SendMsg2( '- ObjID обычного свитка: '+IntToStr(skrolObjectID)+'' );
        SendMsg2( '- выберите блессед заточку' );
       buf:=hstr('14');
       SendToServerEx(myname);
      end else if bskrolObjectID = 0 then begin
       bskrolObjectID:=ReadD(2);
        SendMsg2( '- ObjID блессед свитка: '+IntToStr(bskrolObjectID)+'' );
        SendMsg2( '- заточите нужный предмет' );
       buf:=hstr('14');
       SendToServerEx(myname);
      end;
 #$D0:if  ReadH(2)=76 then  begin
   selectObjectID:=ReadD(4);
   end;
 #$5F:begin
    enchantObjectID:=ReadD(2);
    ItemOID:=GetItemID(enchantObjectID);//находим по ObjectID предмет с ItemID
    end;
end;
end.
Код:
//Автоматизация заточки предметов до необходимого уровня by NLObP
//version 0.7 от 20.07.2008г.
program Enchant;
{********************************************************************************
Возможности скрипта:
--------------------
0.1
+ Панель управления;
+ Затачиваем по очереди все предметы с ItemID пока не переломаем
  или не заточим, один предмет всегда остаётся;
0.2
+ исправлен выбор названий предметов из инвентаря;
+ небольшая правка кода;
0.3
+ Проверено на theAbyss (все предметы инвентаря чара видит);
+ исправлена ошибка кода выбора скроллов;
+ исправлена ошибка подсчета суммы предметов;
0.4
+ специально для Miler проверено на La2Titan (затачивал Mantikore Skin Shirt до +7);
+ исправлена процедура InventoryUpdate;
+ изменена логика затачивания;
+ заготовка покупки заточек/вещей;
0.5
+ проверено на L2Fantasy;
+ добавлена проверка, если заточка сбрасывается в 0 без поломки вещи;
+ добавлен код, если надо точить одну вещь (опционально);
0.6
+ изменил выборку ItemId;
0.7
+ исправлено смещение в CreateItemBase для С4, спасибо Mulder

====================================================================
Работа скрипта проверялась на локальном Интерлюда сервере,
для С4 не проверялась и поддерживаться далее не будет.
====================================================================

Необходимо затариться оружием, заточками и валерьянкой.
Name='pamparampampam'; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false

Внимание!
Из комбобокса обязательно надо выбрать вещь, чтобы скрипт узнал
ID и количество, только потом ставить напротив галочку.
Галочки снимать не надо, если кончились заточки/вещи - можно сразу идти
покупать и продолжать заточку.

Скрипт распространяется как есть, и я не несу ответственности за то, что
ВЫ натворили у себя, его используя.

MyICQ 402988808
********************************************************************************}

//............................................
//Список констант
const
  Name='LOMALKA'; //Вписать сюда имя чара
  //установить константу в зависимости от типа игры (С4 или Интерлюд)
  interlude=true; //Interlude - true, C4 - false
  //-------------------------
  max=80;     //количество слотов в инвентаре чара

//............................................
//Список переменных
var
  Item, scrl:integer;
  ScrollID, ScrollOID:integer;  //ScrollID скролла заточки
  ItemID,ItemOID:integer;      //ItemID затачиваемого предмета
  MaxEnchLvl:integer;         //уровень заточки который требуется достичь
  ItemBase:  array[1..4,1..max] of integer; //ItemOID, ItemID, Kol-vo, ItemLvl
  ready, add : boolean;
  timer : TTimer;
  ItemCount, CurEnchLvl: integer;
  SocialID : integer; // вспомогательная
  ItemsName, StringList : TStringList;  //названия предметов, имена продавцов
  FormMain : TForm; //Создаваемая форма
  Splitter1 : TSplitter;
  Splitter2 : TSplitter;
  Stats : TMemo;
  Msg : TMemo;
  Panel1 : TPanel;
  GroupBox2 : TGroupBox;
  Label2 : TLabel;
  Label4 : TLabel;
  Label12 : TLabel;
  Label13 : TLabel;
  CheckBoxItem : TCheckBox;
  ComboBoxItem : TComboBox;
  ButtonStartEnchant : TButton;
  ButtonStopEnchant : TButton;
  CheckBoxScroll : TCheckBox;
  ComboBoxScroll : TComboBox;
  EditItemVal : TEdit;
  EditScrollVal : TEdit;
  EditScrollOID : TEdit;
  EditItemOID : TEdit;
  Label1 : TLabel;
  Label3 : TLabel;
  Edit1 : TEdit;
  Edit2 : TEdit;
//............................................
//*************************************
//Обработчики событий для элементов управления на форме
//......................................
//CheckBoxItem
procedure CheckBoxItem_Click(Sender: TCheckBox);
//Event : OnClick
begin
  if CheckBoxItem.Checked
  then begin
    ItemOID:=ItemBase[1,ComboBoxItem.ItemIndex+1];
    ItemID:=ItemBase[2,ComboBoxItem.ItemIndex+1];
    //проверка
//    EditItemOID.Text:=Inttostr(ItemID);
//    EditItemVal.text:=inttostr(ItemOID);

    ComboBoxItem.Enabled:=false; //выключаем
  end else begin
    ItemID:=0;               //отмена
    ItemOID:=0;
    ComboBoxItem.Enabled:=true;  //включаем
    //Пакет RequestItemList
    buf:=hstr('0F');
    SendToServerEx(Name);
  end;
end;
//......................................
//......................................
//ComboBoxItem
procedure ComboBoxItem_Click(Sender: TComboBox);
//Event : OnClick
begin
    ItemOID:=ItemBase[1,ComboBoxItem.ItemIndex+1];
    ItemID:=ItemBase[2,ComboBoxItem.ItemIndex+1];
//    ItemID:=ExtractIDValues(ComboBoxItem.Items.Strings[ComboBoxItem.ItemIndex]);
    EditItemOID.Text:=Inttostr(ItemID);
    EditItemVal.text:=inttostr(sumitem(ItemID));
end;
//......................................
//......................................
//CheckBoxScroll
procedure CheckBoxScroll_Click(Sender: TCheckBox);
//Event : OnClick
begin
  if CheckBoxScroll.Checked
  then begin
    ScrollOID:=ItemBase[1,ComboBoxScroll.ItemIndex+1];
    ScrollID:=ItemBase[2,ComboBoxScroll.ItemIndex+1];
    //проверка
//    EditScrollOID.Text:=Inttostr(ScrollID);
//    EditScrollVal.text:=inttostr(ScrollOID);
    ComboBoxScroll.Enabled:=false; //выключаем
  end else begin
    ScrollID:=0;               //отмена
    ScrollOID:=0;
    ComboBoxScroll.Enabled:=true;  //включаем
    //Пакет RequestItemList
    buf:=hstr('0F');
    SendToServerEx(Name);
  end;
end;
//......................................
//......................................
//ComboBoxScroll
procedure ComboBoxScroll_Click(Sender: TComboBox);
//Event : OnClick
begin
    ScrollOID:=ItemBase[1,ComboBoxScroll.ItemIndex+1];
    ScrollID:=ItemBase[2,ComboBoxScroll.ItemIndex+1];
//    ScrollID:=ExtractIDValues(ComboBoxScroll.Items.Strings[ComboBoxScroll.ItemIndex]);
    EditScrollOID.Text:=Inttostr(ScrollID);
    EditScrollVal.text:=inttostr(sumitem(ScrollID));
end;
//......................................
//......................................
//ButtonStartEnchant
procedure ButtonStartEnchant_Click(Sender: TButton);
//Event : OnClick
begin
  CurEnchLvl:=0;
  Edit2.text:=inttostr(CurEnchLvl);
  msg.Lines.Add('Команда Старт!!!');
  timer.enabled:=true;
end;
//......................................
//......................................
//ButtonStopEnchant
procedure ButtonStopEnchant_Click(Sender: TButton);
//Event : OnClick
begin
  msg.Lines.Add('Команда Стоп!!!');
  timer.enabled:=false;
  ready:=false;
end;
//......................................
//......................................
procedure Edit1_Exit(Sender: TEdit);
//Event : OnExit
begin
//  MyHPID:=ExtractIDValues(ComboBoxHPotion.Items.Strings[ComboBoxHPotion.ItemIndex]);
//  EditHPotionVal.Text:=Inttostr(FindItem(MyHPID));
//  EditHPotionOID.text:=inttostr(ItemBase2[1,1]);
end;
//......................................
//*************************************
procedure Free_FormMain;
//Освобождаем ресурсы ...
begin
  TRY
    if FormMain<>NIL then begin
       FormMain.Free;
       FormMain:=NIL;
    end;
  FINALLY
  END;
end; //Free_FormMain
//========================
//========================
function Create_FormMain : TForm;
//Создаем форму и соотв. компоненты на ней ...
Var
  Yes : boolean;
begin
  Yes := FALSE;
  Result := TForm.Create(nil);

  TRY
    //------------------------
    //Свойства формы
    Result.Caption     := 'Enchant by NLObP v.0.7';
    Result.Left        := 397;
    Result.Top         := 233;
    Result.Width       := 581;
    Result.Height      := 205;
    Result.FormStyle   := fsNormal;
    Result.Position    := poDesigned;
    Result.BorderStyle := bsSizeable;
    Result.BorderWidth := 0;
    Result.WindowState := wsNormal;
    Result.Color       := clBtnFace;
    Result.Font.Name   := 'Tahoma';
    Result.Font.Size   := 8;
    Result.Font.Color  := clWindowText;
    Result.Font.CharSet:= 1;
    //------------------------
    //......................................
    //Splitter1
    Splitter1 := TSplitter.Create(Result);
    Splitter1.Parent := Result;
    Splitter1.Align := alBottom;
    Splitter1.Color := clBtnFace;
    Splitter1.Left    := 0;
    Splitter1.Top     := 103;
    Splitter1.Width   := 573;
    Splitter1.Height  := 3;
    Splitter1.Visible := TRUE;
    Splitter1.Tag     := 0;
    //......................................
    //......................................
    //Splitter2
    Splitter2 := TSplitter.Create(Result);
    Splitter2.Parent := Result;
    Splitter2.Align := alRight;
    Splitter2.Color := clBtnFace;
    Splitter2.Left    := 442;
    Splitter2.Top     := 0;
    Splitter2.Width   := 1;
    Splitter2.Height  := 103;
    Splitter2.Visible := TRUE;
    Splitter2.Tag     := 0;
    //......................................
    //......................................
    //Stats
    Stats := TMemo.Create(Result);
    Stats.Parent := Result;
    Stats.Left    := 443;
    Stats.Top     := 0;
    Stats.Width   := 130;
    Stats.Height  := 103;
    Stats.Visible := TRUE;
    Stats.Tag     := 0;
    Stats.Enabled  := TRUE;
    Stats.Hint     := '';
    Stats.ShowHint := FALSE;
    Stats.Font.Name  := 'Tahoma';
    Stats.Font.Size  := 8;
    Stats.Font.Color := clWindowText;
    Stats.Color         := clWindow;
    Stats.TabOrder      := 0;
    Stats.TabStop       := TRUE;
    Stats.Align         := alRight;
    Stats.WordWrap      := TRUE;
    Stats.Alignment     := taLeftJustify;
    Stats.WantTabs      := FALSE;
    Stats.WantReturns   := TRUE;
    Stats.HideSelection := TRUE;
    Stats.MaxLength     := 0;
    Stats.OEMConvert    := FALSE;
    Stats.ReadOnly      := FALSE;
    Stats.ScrollBars    := ssNone;
    //......................................
    //......................................
    //Msg
    Msg := TMemo.Create(Result);
    Msg.Parent := Result;
    Msg.Left    := 0;
    Msg.Top     := 106;
    Msg.Width   := 573;
    Msg.Height  := 65;
    Msg.Visible := TRUE;
    Msg.Tag     := 0;
    Msg.Enabled  := TRUE;
    Msg.Hint     := '';
    Msg.ShowHint := FALSE;
    Msg.Font.Name  := 'Tahoma';
    Msg.Font.Size  := 8;
    Msg.Font.Color := clWindowText;
    Msg.Color         := clWindow;
    Msg.TabOrder      := 1;
    Msg.TabStop       := TRUE;
    Msg.Align         := alBottom;
    Msg.WordWrap      := TRUE;
    Msg.Alignment     := taLeftJustify;
    Msg.WantTabs      := FALSE;
    Msg.WantReturns   := TRUE;
    Msg.HideSelection := TRUE;
    Msg.MaxLength     := 0;
    Msg.OEMConvert    := FALSE;
    Msg.ReadOnly      := FALSE;
    Msg.ScrollBars    := ssNone;
    //......................................
    //......................................
    //Panel1
    Panel1 := TPanel.Create(Result);
    Panel1.Parent := Result;
    Panel1.Left    := 0;
    Panel1.Top     := 0;
    Panel1.Width   := 442;
    Panel1.Height  := 103;
    Panel1.Visible := TRUE;
    Panel1.Tag     := 0;
    Panel1.Enabled  := TRUE;
    Panel1.Hint     := '';
    Panel1.ShowHint := FALSE;
    Panel1.Caption    := '';
    Panel1.Align      := alClient;
    Panel1.Color      := clBtnFace;
    Panel1.Font.Name  := 'Tahoma';
    Panel1.Font.Size  := 8;
    Panel1.Font.Color := clWindowText;
    Panel1.Font.CharSet := 1;
    Panel1.BevelWidth   := 1;
    Panel1.BorderWidth  := 0;
    Panel1.BevelInner   := bvNone;
    Panel1.BevelOuter   := bvRaised;
    Panel1.TabOrder     := 2;
    Panel1.TabStop      := FALSE;
    Panel1.AutoSize     := FALSE;
    //......................................
    //......................................
    //GroupBox2
    GroupBox2 := TGroupBox.Create(Result);
    GroupBox2.Parent := Panel1;
    GroupBox2.Left    := 1;
    GroupBox2.Top     := 1;
    GroupBox2.Width   := 440;
    GroupBox2.Height  := 101;
    GroupBox2.Visible := TRUE;
    GroupBox2.Tag     := 0;
    GroupBox2.Enabled  := TRUE;
    GroupBox2.Hint     := '';
    GroupBox2.ShowHint := FALSE;
    GroupBox2.Caption    := 'Настройки';
    GroupBox2.Align      := alClient;
    GroupBox2.Color      := clBtnFace;
    GroupBox2.Font.Name  := 'Tahoma';
    GroupBox2.Font.Size  := 8;
    GroupBox2.Font.Color := clWindowText;
    GroupBox2.Font.CharSet := 1;
    GroupBox2.TabOrder     := 0;
    GroupBox2.TabStop      := FALSE;
    //......................................
    //......................................
    //Label1
    Label1 := TLabel.Create(Result);
    Label1.Parent := GroupBox2;
    Label1.Left    := 10;
    Label1.Top     := 70;
    Label1.Width   := 58;
    Label1.Height  := 13;
    Label1.Visible := TRUE;
    Label1.Tag     := 0;
    Label1.Enabled  := TRUE;
    Label1.Hint     := '';
    Label1.ShowHint := FALSE;
    Label1.Caption     := 'Уровень Макс.:';
    Label1.Transparent := TRUE;
    Label1.WordWrap    := FALSE;
    Label1.Alignment   := taLeftJustify;
    Label1.Layout      := tlTop;
    Label1.AutoSize    := TRUE;
    Label1.Align       := alNone;
    Label1.Font.Name   := 'Tahoma';
    Label1.Font.Size   := 8;
    Label1.Font.Color  := clWindowText;
    Label1.Color       := clBtnFace;
    //......................................
    //......................................
    //Label1
    Label3 := TLabel.Create(Result);
    Label3.Parent := GroupBox2;
    Label3.Left    := 170;
    Label3.Top     := 70;
    Label3.Width   := 58;
    Label3.Height  := 13;
    Label3.Visible := TRUE;
    Label3.Tag     := 0;
    Label3.Enabled  := TRUE;
    Label3.Hint     := '';
    Label3.ShowHint := FALSE;
    Label3.Caption     := 'Мин.:';
    Label3.Transparent := TRUE;
    Label3.WordWrap    := FALSE;
    Label3.Alignment   := taLeftJustify;
    Label3.Layout      := tlTop;
    Label3.AutoSize    := TRUE;
    Label3.Align       := alNone;
    Label3.Font.Name   := 'Tahoma';
    Label3.Font.Size   := 8;
    Label3.Font.Color  := clWindowText;
    Label3.Color       := clBtnFace;
    //......................................
    //......................................
    //Edit1
    Edit1 := TEdit.Create(Result);
    Edit1.Parent := GroupBox2;
    Edit1.Left    := 90;
    Edit1.Top     := 67;
    Edit1.Width   := 60;
    Edit1.Height  := 21;
    Edit1.Visible := TRUE;
    Edit1.Tag     := 0;
    Edit1.Enabled  := TRUE;
    Edit1.Hint     := 'Введи желаемый уровень заточки';
    Edit1.ShowHint := TRUE;
    Edit1.Text       := '65535';
    Edit1.Font.Name  := 'Tahoma';
    Edit1.Font.Size  := 8;
    Edit1.Font.Color := clWindowText;
    Edit1.Color        := clWindow;
    Edit1.TabOrder     := 5;
    Edit1.TabStop      := TRUE;
    Edit1.ReadOnly     := FALSE;
    Edit1.MaxLength    := 0;
    Edit1.AutoSize     := TRUE;
    Edit1.OnExit     := @Edit1_Exit;
    //......................................
    //......................................
    //Edit2
    Edit2 := TEdit.Create(Result);
    Edit2.Parent := GroupBox2;
    Edit2.Left    := 199;
    Edit2.Top     := 67;
    Edit2.Width   := 60;
    Edit2.Height  := 21;
    Edit2.Visible := TRUE;
    Edit2.Tag     := 0;
    Edit2.Enabled  := TRUE;
    Edit2.Hint     := 'Какого уровня смогли достичь';
    Edit2.ShowHint := TRUE;
    Edit2.Text       := '0';
    Edit2.Font.Name  := 'Tahoma';
    Edit2.Font.Size  := 8;
    Edit2.Font.Color := clWindowText;
    Edit2.Color        := clWindow;
    Edit2.TabOrder     := 5;
    Edit2.TabStop      := FALSE;
    Edit2.ReadOnly     := TRUE;
    Edit2.MaxLength    := 0;
    Edit2.AutoSize     := TRUE;
    //......................................
    //......................................
    //Label2
    Label2 := TLabel.Create(Result);
    Label2.Parent := GroupBox2;
    Label2.Left    := 416;
    Label2.Top     := 19;
    Label2.Width   := 18;
    Label2.Height  := 13;
    Label2.Visible := TRUE;
    Label2.Tag     := 0;
    Label2.Enabled  := TRUE;
    Label2.Hint     := '';
    Label2.ShowHint := FALSE;
    Label2.Caption     := 'шт.';
    Label2.Transparent := TRUE;
    Label2.WordWrap    := FALSE;
    Label2.Alignment   := taLeftJustify;
    Label2.Layout      := tlTop;
    Label2.AutoSize    := TRUE;
    Label2.Align       := alNone;
    Label2.Font.Name   := 'Tahoma';
    Label2.Font.Size   := 8;
    Label2.Font.Color  := clWindowText;
    Label2.Color       := clBtnFace;
    //......................................
    //......................................
    //Label4
    Label4 := TLabel.Create(Result);
    Label4.Parent := GroupBox2;
    Label4.Left    := 416;
    Label4.Top     := 43;
    Label4.Width   := 18;
    Label4.Height  := 13;
    Label4.Visible := TRUE;
    Label4.Tag     := 0;
    Label4.Enabled  := TRUE;
    Label4.Hint     := '';
    Label4.ShowHint := FALSE;
    Label4.Caption     := 'шт.';
    Label4.Transparent := TRUE;
    Label4.WordWrap    := FALSE;
    Label4.Alignment   := taLeftJustify;
    Label4.Layout      := tlTop;
    Label4.AutoSize    := TRUE;
    Label4.Align       := alNone;
    Label4.Font.Name   := 'Tahoma';
    Label4.Font.Size   := 8;
    Label4.Font.Color  := clWindowText;
    Label4.Color       := clBtnFace;
    //......................................
    //......................................
    //Label12
    Label12 := TLabel.Create(Result);
    Label12.Parent := GroupBox2;
    Label12.Left    := 273;
    Label12.Top     := 3;
    Label12.Width   := 33;
    Label12.Height  := 13;
    Label12.Visible := TRUE;
    Label12.Tag     := 0;
    Label12.Enabled  := TRUE;
    Label12.Hint     := '';
    Label12.ShowHint := FALSE;
    Label12.Caption     := 'ItemID';
    Label12.Transparent := TRUE;
    Label12.WordWrap    := FALSE;
    Label12.Alignment   := taLeftJustify;
    Label12.Layout      := tlTop;
    Label12.AutoSize    := TRUE;
    Label12.Align       := alNone;
    Label12.Font.Name   := 'Tahoma';
    Label12.Font.Size   := 8;
    Label12.Font.Color  := clWindowText;
    Label12.Color       := clBtnFace;
    //......................................
    //......................................
    //Label13
    Label13 := TLabel.Create(Result);
    Label13.Parent := GroupBox2;
    Label13.Left    := 349;
    Label13.Top     := 3;
    Label13.Width   := 35;
    Label13.Height  := 13;
    Label13.Visible := TRUE;
    Label13.Tag     := 0;
    Label13.Enabled  := TRUE;
    Label13.Hint     := '';
    Label13.ShowHint := FALSE;
    Label13.Caption     := 'Кол-во';
    Label13.Transparent := TRUE;
    Label13.WordWrap    := FALSE;
    Label13.Alignment   := taLeftJustify;
    Label13.Layout      := tlTop;
    Label13.AutoSize    := TRUE;
    Label13.Align       := alNone;
    Label13.Font.Name   := 'Tahoma';
    Label13.Font.Size   := 8;
    Label13.Font.Color  := clWindowText;
    Label13.Color       := clBtnFace;
    //......................................
    //......................................
    //CheckBoxItem
    CheckBoxItem := TCheckBox.Create(Result);
    CheckBoxItem.Parent := GroupBox2;
    CheckBoxItem.Left    := 18;
    CheckBoxItem.Top     := 18;
    CheckBoxItem.Width   := 66;
    CheckBoxItem.Height  := 17;
    CheckBoxItem.Visible := TRUE;
    CheckBoxItem.Tag     := 0;
    CheckBoxItem.Enabled  := TRUE;
    CheckBoxItem.Hint     := 'Поставить галочку если выбрали предмет';
    CheckBoxItem.ShowHint := TRUE;
    CheckBoxItem.Caption    := 'Предмет';
    CheckBoxItem.Font.Name  := 'Tahoma';
    CheckBoxItem.Font.Size  := 8;
    CheckBoxItem.Font.Color := clWindowText;
    CheckBoxItem.Color       := clBtnFace;
    CheckBoxItem.TabOrder    := 0;
    CheckBoxItem.TabStop     := TRUE;
    CheckBoxItem.Checked     := FALSE;
    CheckBoxItem.AllowGrayed := FALSE;
    CheckBoxItem.State       := cbUnchecked;
    CheckBoxItem.OnClick     := @CheckBoxItem_Click;
    //......................................
    //......................................
    //ComboBoxItem
    ComboBoxItem := TComboBox.Create(Result);
    ComboBoxItem.Parent := GroupBox2;
    ComboBoxItem.Left    := 90;
    ComboBoxItem.Top     := 16;
    ComboBoxItem.Width   := 169;
    ComboBoxItem.Height  := 21;
    ComboBoxItem.Visible := TRUE;
    ComboBoxItem.Tag     := 0;
    ComboBoxItem.Enabled  := TRUE;
    ComboBoxItem.Hint     := 'Выбери из списка затачиваемый предмет';
    ComboBoxItem.ShowHint := TRUE;
    ComboBoxItem.Text       := 'ComboBoxItem';
    ComboBoxItem.Font.Name  := 'Tahoma';
    ComboBoxItem.Font.Size  := 8;
    ComboBoxItem.Font.Color := clWindowText;
    ComboBoxItem.Color          := clWindow;
    ComboBoxItem.TabOrder       := 1;
    ComboBoxItem.TabStop        := TRUE;
    ComboBoxItem.ItemIndex          := -1;
    ComboBoxItem.Sorted         := FALSE;
    ComboBoxItem.ItemHeight     := 13;
    ComboBoxItem.OnClick     := @ComboBoxItem_Click;
    //......................................
    //......................................
    //ButtonStartEnchant
    ButtonStartEnchant := TButton.Create(Result);
    ButtonStartEnchant.Parent := GroupBox2;
    ButtonStartEnchant.Left    := 265;
    ButtonStartEnchant.Top     := 67;
    ButtonStartEnchant.Width   := 75;
    ButtonStartEnchant.Height  := 25;
    ButtonStartEnchant.Visible := TRUE;
    ButtonStartEnchant.Tag     := 0;
    ButtonStartEnchant.Enabled  := TRUE;
    ButtonStartEnchant.Hint     := '';
    ButtonStartEnchant.ShowHint := FALSE;
    ButtonStartEnchant.Caption    := 'Start';
    ButtonStartEnchant.Font.Name  := 'Tahoma';
    ButtonStartEnchant.Font.Size  := 8;
    ButtonStartEnchant.Font.Color := clWindowText;
    ButtonStartEnchant.Font.CharSet := 1;
    ButtonStartEnchant.TabOrder     := 2;
    ButtonStartEnchant.TabStop      := TRUE;
    ButtonStartEnchant.Cancel       := FALSE;
    ButtonStartEnchant.ModalResult  := 0;
    ButtonStartEnchant.OnClick     := @ButtonStartEnchant_Click;
    //......................................
    //......................................
    //ButtonStopEnchant
    ButtonStopEnchant := TButton.Create(Result);
    ButtonStopEnchant.Parent := GroupBox2;
    ButtonStopEnchant.Left    := 341;
    ButtonStopEnchant.Top     := 67;
    ButtonStopEnchant.Width   := 75;
    ButtonStopEnchant.Height  := 25;
    ButtonStopEnchant.Visible := TRUE;
    ButtonStopEnchant.Tag     := 0;
    ButtonStopEnchant.Enabled  := TRUE;
    ButtonStopEnchant.Hint     := '';
    ButtonStopEnchant.ShowHint := FALSE;
    ButtonStopEnchant.Caption    := 'Stop';
    ButtonStopEnchant.Font.Name  := 'Tahoma';
    ButtonStopEnchant.Font.Size  := 8;
    ButtonStopEnchant.Font.Color := clWindowText;
    ButtonStopEnchant.Font.CharSet := 1;
    ButtonStopEnchant.TabOrder     := 3;
    ButtonStopEnchant.TabStop      := TRUE;
    ButtonStopEnchant.Cancel       := FALSE;
    ButtonStopEnchant.ModalResult  := 0;
    ButtonStopEnchant.OnClick     := @ButtonStopEnchant_Click;
    //......................................
    //......................................
    //CheckBoxScroll
    CheckBoxScroll := TCheckBox.Create(Result);
    CheckBoxScroll.Parent := GroupBox2;
    CheckBoxScroll.Left    := 18;
    CheckBoxScroll.Top     := 41;
    CheckBoxScroll.Width   := 66;
    CheckBoxScroll.Height  := 23;
    CheckBoxScroll.Visible := TRUE;
    CheckBoxScroll.Tag     := 0;
    CheckBoxScroll.Enabled  := TRUE;
    CheckBoxScroll.Hint     := 'Поставить галочку если выбрали скролл заточки';
    CheckBoxScroll.ShowHint := TRUE;
    CheckBoxScroll.Caption    := 'Заточка';
    CheckBoxScroll.Font.Name  := 'Tahoma';
    CheckBoxScroll.Font.Size  := 8;
    CheckBoxScroll.Font.Color := clWindowText;
    CheckBoxScroll.Color       := clBtnFace;
    CheckBoxScroll.TabOrder    := 4;
    CheckBoxScroll.TabStop     := TRUE;
    CheckBoxScroll.Checked     := FALSE;
    CheckBoxScroll.AllowGrayed := FALSE;
    CheckBoxScroll.State       := cbUnchecked;
    CheckBoxScroll.OnClick     := @CheckBoxScroll_Click;
    //......................................
    //......................................
    //ComboBoxScroll
    ComboBoxScroll := TComboBox.Create(Result);
    ComboBoxScroll.Parent := GroupBox2;
    ComboBoxScroll.Left    := 90;
    ComboBoxScroll.Top     := 40;
    ComboBoxScroll.Width   := 169;
    ComboBoxScroll.Height  := 21;
    ComboBoxScroll.Visible := TRUE;
    ComboBoxScroll.Tag     := 0;
    ComboBoxScroll.Enabled  := TRUE;
    ComboBoxScroll.Hint     := 'Выбери из списка скролл заточки';
    ComboBoxScroll.ShowHint := TRUE;
    ComboBoxScroll.Text       := 'ComboBoxScroll';
    ComboBoxScroll.Font.Name  := 'Tahoma';
    ComboBoxScroll.Font.Size  := 8;
    ComboBoxScroll.Font.Color := clWindowText;
    ComboBoxScroll.Color          := clWindow;
    ComboBoxScroll.TabOrder       := 5;
    ComboBoxScroll.TabStop        := TRUE;
    ComboBoxScroll.ItemIndex          := -1;
    ComboBoxScroll.Sorted         := FALSE;
    ComboBoxScroll.ItemHeight     := 13;
    ComboBoxScroll.OnClick     := @ComboBoxScroll_Click;
    //......................................
    //......................................
    //EditItemVal
    EditItemVal := TEdit.Create(Result);
    EditItemVal.Parent := GroupBox2;
    EditItemVal.Left    := 341;
    EditItemVal.Top     := 16;
    EditItemVal.Width   := 72;
    EditItemVal.Height  := 21;
    EditItemVal.Visible := TRUE;
    EditItemVal.Tag     := 0;
    EditItemVal.Enabled  := TRUE;
    EditItemVal.Hint     := '';
    EditItemVal.ShowHint := FALSE;
    EditItemVal.Text       := '0';
    EditItemVal.Font.Name  := 'Tahoma';
    EditItemVal.Font.Size  := 8;
    EditItemVal.Font.Color := clWindowText;
    EditItemVal.Color        := clWindow;
    EditItemVal.TabOrder     := 6;
    EditItemVal.TabStop      := TRUE;
    EditItemVal.ReadOnly     := TRUE;
    EditItemVal.MaxLength    := 0;
    EditItemVal.AutoSize     := TRUE;
    //......................................
    //......................................
    //EditScrollVal
    EditScrollVal := TEdit.Create(Result);
    EditScrollVal.Parent := GroupBox2;
    EditScrollVal.Left    := 341;
    EditScrollVal.Top     := 40;
    EditScrollVal.Width   := 72;
    EditScrollVal.Height  := 21;
    EditScrollVal.Visible := TRUE;
    EditScrollVal.Tag     := 0;
    EditScrollVal.Enabled  := TRUE;
    EditScrollVal.Hint     := '';
    EditScrollVal.ShowHint := FALSE;
    EditScrollVal.Text       := '0';
    EditScrollVal.Font.Name  := 'Tahoma';
    EditScrollVal.Font.Size  := 8;
    EditScrollVal.Font.Color := clWindowText;
    EditScrollVal.Color        := clWindow;
    EditScrollVal.TabOrder     := 7;
    EditScrollVal.TabStop      := TRUE;
    EditScrollVal.ReadOnly     := TRUE;
    EditScrollVal.MaxLength    := 0;
    EditScrollVal.AutoSize     := TRUE;
    //......................................
    //......................................
    //EditScrollOID
    EditScrollOID := TEdit.Create(Result);
    EditScrollOID.Parent := GroupBox2;
    EditScrollOID.Left    := 263;
    EditScrollOID.Top     := 40;
    EditScrollOID.Width   := 72;
    EditScrollOID.Height  := 21;
    EditScrollOID.Visible := TRUE;
    EditScrollOID.Tag     := 0;
    EditScrollOID.Enabled  := TRUE;
    EditScrollOID.Hint     := '';
    EditScrollOID.ShowHint := FALSE;
    EditScrollOID.Text       := '0';
    EditScrollOID.Font.Name  := 'Tahoma';
    EditScrollOID.Font.Size  := 8;
    EditScrollOID.Font.Color := clWindowText;
    EditScrollOID.Color        := clWindow;
    EditScrollOID.TabOrder     := 8;
    EditScrollOID.TabStop      := TRUE;
    EditScrollOID.ReadOnly     := TRUE;
    EditScrollOID.MaxLength    := 0;
    EditScrollOID.AutoSize     := TRUE;
    //......................................
    //......................................
    //EditItemOID
    EditItemOID := TEdit.Create(Result);
    EditItemOID.Parent := GroupBox2;
    EditItemOID.Left    := 264;
    EditItemOID.Top     := 16;
    EditItemOID.Width   := 72;
    EditItemOID.Height  := 21;
    EditItemOID.Visible := TRUE;
    EditItemOID.Tag     := 0;
    EditItemOID.Enabled  := TRUE;
    EditItemOID.Hint     := '';
    EditItemOID.ShowHint := FALSE;
    EditItemOID.Text       := '0';
    EditItemOID.Font.Name  := 'Tahoma';
    EditItemOID.Font.Size  := 8;
    EditItemOID.Font.Color := clWindowText;
    EditItemOID.Color        := clWindow;
    EditItemOID.TabOrder     := 9;
    EditItemOID.TabStop      := TRUE;
    EditItemOID.ReadOnly     := TRUE;
    EditItemOID.MaxLength    := 0;
    EditItemOID.AutoSize     := TRUE;
    //......................................
    Yes := TRUE;
  FINALLY
    if not Yes then begin
       //Освобождаем ресурсы, если неудачно ...
       if Result<>NIL then begin
          Result.Free;
          Result:=NIL;
       end;
    end;
  END;
  msg.Lines.Add('Автоматизация заточки by NLObP!');
  Result.Show;
end; //Create_FormMain
//========================
//========================
procedure Init; //Вызывается при включении скрипта
var
  i:integer;
begin
  FormMain:=Create_FormMain;
  //Enchant:=false;
  CurEnchLvl:=0;
  timer:=TTimer.Create(nil);
  timer.OnTimer:=@OnTimer;
  timer.enabled:=false;
  timer.interval:=1000; //время задержки
  ready:=false;
  add:=false;
  //Пакет RequestItemList
  buf:=hstr('0F');
  SendToServerEx(Name);
  StringList:=TStringList.Create;
  ItemsName:=TStringList.Create;
  try
    ItemsName.LoadFromFile('itemsid.ini');
  except
    msg.Lines.Add('itemsid.ini не найден!');
    exit;
  end;
end;
//......................................
//******************************************************************************
procedure Free; //Вызывается при выключении скрипта
begin
//  ItemBase:=nil; //нельзя так делать с массивом
  timer.Free;
  StringList.Clear;
  ItemsName.Clear;
  //достаточно освободить форму
  Free_FormMain;
end;
//......................................
//******************************************************************************
procedure Say(msg:string);
begin
  buf:=hstr('4A 00 00 00 00');
  WriteD(2);
  WriteS(Name);
  WriteS(msg);
  SendToClientEx(Name);
end;
//......................................
//***************************************************************
procedure CreateItemBase; //пакет 1B, Создает базу ObjectID по ItemID
//1B=ItemListPacket:w(window)w(ListCount)w(itemType1)h(ObjectID)i(ItemID)d(count)w(itemType2)w(CustType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(CustType2)d(Augment)d(--)
var
  i, j, ListCount: integer;
begin
  for i:=1 to max do begin
    //очищаем масив
    ItemBase[1,i]:=0;     //OID
    ItemBase[2,i]:=0;    //ID
    ItemBase[3,i]:=0;   //kol-vo
    ItemBase[4,i]:=0;  //lvl
  end;
  j:=4; //смещение для ListCount
  ListCount:=ReadH(j); //количество итемов не должно превышать max!
  //if ListCount>maxitems then msg.Lines.Add('Внимание! Не все вещи влезли в массив. ListCount>Max='+IntToStr(ListCount)+'/'+IntToStr(maxitems));
  j:=8; //смещение для ObjectID
  //Пробегаем по Инвентарю и сохраняем ObjectID соответствующие необходимым ItemID
  for i:=1 to ListCount do begin
    itemBase[1,i]:=ReadD(j);    //OID
    itemBase[2,i]:=ReadD(j);   //ItemID
    itemBase[3,i]:=ReadD(j);  //кол-во
    inc(j,10);
    itemBase[4,i]:=ReadH(j);//EnchantLevel
//    msg.Lines.Add('i='+inttostr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
    if interlude then inc(j,12) else inc(j,4);
    //msg.Lines.Add('j='+inttostr(j));
  end;
  //вносим изменения в чекбоксы
  StringList.Clear;
  try
    for i:=1 to ListCount do begin
      try
        //StringList.Add(ItemsName[ItemBase[2,i]-1]); //записываем название вещей из инвентаря
        StringList.Add(ItemsName.Values[IntToStr(ItemBase[2,i])]); //записываем название вещей из инвентаря
      except;
        msg.Lines.Add('Пропускаем! Нет ItemID='+inttostr(ItemBase[2,i])+' в itemsid.ini');
      end
    end;
  except;
    msg.Lines.Add('ошибка в CreateItemBase->StringList.Add()');
    msg.Lines.Add(inttostr(ItemBase[2,i]));
    exit;
  end;
  if not CheckBoxItem.Checked then begin //наполняем комбобокс
    with ComboBoxItem do
    begin
      Items.Clear;
      Items.Assign(StringList);
      ItemIndex:=0;
    end;
  end;
  if not CheckBoxScroll.Checked then begin //наполняем комбобокс
    with ComboBoxScroll do
    begin
      Items.Clear;
      Items.Assign(StringList);
      ItemIndex:=0;
    end;
  end;
end;
//......................................
//******************************************************************************
//27=InventoryUpdate:w(count)w(1add2mod3remove)w(itemType1)d(ObjectID)i(ItemId)d(Count)w(itemType2)w(cusType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(cusType2)-(8)
procedure InventoryUpdate; //пакет 27, обновляет базу ObjectID по ItemID
var
  i, ii, j, ItemOID, ItemID, ItemCount, ListCount, UpdType, Itemlvl: integer;
  add : boolean;
begin
  add:=false;
  ListCount:=ReadH(2); //количество итемов
  //Пробегаем по Инвентарю и сохраняем пары ObjectID - lvl
  j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
  for ii:=1 to ListCount do begin
    UpdType:=ReadH(j);
    //inc(j,2);
    ReadH(j);               //ItemType1
    ItemOID:=ReadD(j);     //ObjectID
    ItemID:=ReadD(j);     //ItemID
    itemCount:=ReadD(j); //кол-во
    inc(j,10);
    Itemlvl:=ReadH(j);
    case UpdType of
      //добавлен
      1: begin
         for i:=1 to max do begin
           if (ItemBase[1,i]=0) and (add=false) then begin
             ItemBase[1,i]:=ItemOID;
             ItemBase[2,i]:=ItemID;
             ItemBase[3,i]:=ItemCount;
             ItemBase[4,i]:=Itemlvl;
             msg.Lines.Add('Добавили предмет!');
             msg.Lines.Add('i='+inttostr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
             add:=true;
           end;
         end;
      end;
      //изменен
      2: begin
         for i:=1 to max do begin
           if ItemBase[1,i]=ItemOID then begin
             ItemBase[3,i]:=ItemCount;
             ItemBase[4,i]:=Itemlvl;
             msg.Lines.Add('Изменяем параметры предмета!');
             msg.Lines.Add('i='+inttostr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
           end;
         end;
      end;
      //удален
      3: begin
         for i:=1 to max do begin
           if ItemBase[1,i]=ItemOID then begin
             msg.Lines.Add('Удаляем предмет!');
             msg.Lines.Add('i='+inttostr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
             ItemBase[1,i]:=0;
             ItemBase[2,i]:=0;
             ItemBase[3,i]:=0;
             ItemBase[4,i]:=0;
           end;
         end;
      end;
    end;
    if interlude then inc(j,10) else inc(j,2);
    //msg.Lines.Add('j='+inttostr(j));
  end;
end;
//......................................
//******************************************************************************
//находим в инвентаре предмет с ItemID и возвращаем его ObjectID
function GetItem(item:integer; lvl:integer) : integer;
var
  i : integer;
begin
  for i:=1 to max do begin
    //находим подходящий предмет по ItemID
    if (ItemBase[2,i]=item) and (ItemBase[4,i]=lvl) then begin
      //если нашли, то возвращаем ObjectID предмета
      result:=ItemBase[1,i]; // itemOID
      ItemCount:=ItemBase[3,i];
      //Itemlvl:=ItemBase[4,i];
      //msg.Lines.Add('<item='+inttostr(item)+' lvl='+inttostr(lvl)+'> i='+inttostr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
      exit;
    end;
  end;
  //ничего не нашли
  result:=0;
end;
//......................................
//******************************************************************************
procedure UseItem(ObjectID: integer);
begin
  buf:=#$14;
  WriteD(ObjectID);
  WriteD(0);
  SendToServerEx(Name);
end;
//......................................
//******************************************************************************
function SumItem(Item: integer):integer;
var
  sum, i : integer;
begin
  result:=0;
  //находим подходящий предмет по ItemID
  for i:=1 to max do begin
    if (ItemBase[2,i]=item) then begin
//      msg.Lines.Add('Нашли предмет ItemOID='+inttostr(ItemBase[1,i])+' ItemID='+inttostr(ItemBase[2,i])+' ItemCol='+inttostr(ItemBase[3,i])+' EnchantLvl='+inttostr(ItemBase[4,i]));
//      msg.Lines.Add('i='+inttostr(i));
      result:=result+ItemBase[3,i];
      //inc(result);
    end;
  end;
end;
//......................................
//******************************************************************************
procedure RequestEnchantItem(ObjectID: integer);
begin
  buf:=#$58;
  WriteD(ObjectID);
  SendToServerEx(Name);
  //*********** использовать чит с петом ************************
{  buf:=#$8B;
  WriteD(ObjectID);
  writed(1);
  SendToServerEx(Name);
}  //***********
end;
//......................................
{//***************************************************************
function ExtractIDValues(sData: string): integer;
var
  s: string;
  i,j: integer;
begin
  i:=0;
  s:=sData;
  i:=pos('=',s);
  if i>=0 then
    s:=copy(s,1,i-1);
  try
    result:=strtoint(s);
  except
    result:=0;
  end;
end;
//............................................}
//******************************************************************************
procedure OnTimer(Sender: TObject);
begin
  EditItemVal.text:=inttostr(sumitem(ItemID));
  EditScrollVal.text:=inttostr(sumitem(ScrollID));
  if (CurEnchLvl>=strtoint(Edit1.Text)) then begin
    msg.Lines.Add('Нечего точить! Прервано!');
    timer.enabled:=false;
    exit;
  end;
  if (sumitem(ItemID)<=1) then begin
//  if (sumitem(ItemID)<=0) then begin //если надо точить одну вещь
    msg.Lines.Add('Прервано!');
    timer.enabled:=false;
    exit;
  end;
  ScrollOID:=GetItem(ScrollID,0);
  if ScrollOID=0 then begin
    msg.Lines.Add('Нет заточки! Прервано!');
    timer.enabled:=false;
    exit;
  end;
  UseItem(ScrollOID);
  msg.Lines.Add('Задействовали скролл ScrollID='+IntToStr(scrollID)+' ScrollOID='+IntToStr(ScrollOID));
  ready:=true; //готовы затачивать
//    delay(1000);
//    RequestEnchantItem(Item);
//    delay(1000);
    //************************************************
//    msg.Lines.Add('Пробуем улучшить ItemID='+IntToStr(Item));
//  end;
end;
//......................................
//***************************************************************
// Вся торговля здесь!!!
//***************************************************************
{procedure OnTrade1(Sender: TObject);
begin
  case trade of
    //-------------------------------------------------
    //покупаем у Misc Trader  из массива TradeBuyItem1
    //-------------------------------------------------
    100: begin
      if ReadyToBuy then exit; //если еще купили предыдущую вещь, то выходим сразу
      //мы у фишермана, покупаем крючки
      if FishermanOID=0 then begin
        Trade1.enabled:=false; //останавливаем торговлю
        msg.Lines.Add('Не готовы к торговле, нет OID фишермана! Требуется отбежать подальше и вернуться.');
        exit; //выходим
      end;
      if TradeCount=TradeBuyItemCount then begin //проверка на выход из массива
        trade:=400;
        msg.Lines.Add('Всё купили!');
        msg.Lines.Add('Переход к обмену...');
        TradeCount:=0; //начнем сначала массива
      end else begin
        if FindItem(TradeBuyItem[TradeCount])<strtoint(EditLure.text) then begin
          TargetAttacker(FishermanOID); //фишермана в таргет
          msg.Lines.Add('Готовы купить:'+inttostr(TradeBuyItem[TradeCount]));
          ReadyToBuy:=true; //готовы продавать
          NeedBuy:=strtoint(EditLure.text)-colvoitm2; //докупаем до 50
          msg.Lines.Add('Требуется докупит крючков:'+inttostr(NeedBuy));
        end else msg.Lines.Add('Не надо покупать, уже есть:'+inttostr(colvoitm2));
        Trd:=TradeCount;
        inc(TradeCount);
        msg.Lines.Add('TradeCount/TradeBuyItemCount:'+inttostr(TradeCount)+'/'+inttostr(TradeBuyItemCount-1));
      end;
    //-------------------------------------------------
    //покупаем у Armor Trader  из массива TradeBuyItem2
    //-------------------------------------------------
    200: begin
      if ReadyToBuy then exit; //если еще купили предыдущую вещь, то выходим сразу
      //мы у фишермана, покупаем крючки
      if FishermanOID=0 then begin
        Trade1.enabled:=false; //останавливаем торговлю
        msg.Lines.Add('Не готовы к торговле, нет OID фишермана! Требуется отбежать подальше и вернуться.');
        exit; //выходим
      end;
      if TradeCount=TradeBuyItemCount then begin //проверка на выход из массива
        trade:=400;
        msg.Lines.Add('Всё купили!');
        msg.Lines.Add('Переход к обмену...');
        TradeCount:=0; //начнем сначала массива
      end else begin
        if FindItem(TradeBuyItem[TradeCount])<strtoint(EditLure.text) then begin
          TargetAttacker(FishermanOID); //фишермана в таргет
          msg.Lines.Add('Готовы купить:'+inttostr(TradeBuyItem[TradeCount]));
          ReadyToBuy:=true; //готовы продавать
          NeedBuy:=strtoint(EditLure.text)-colvoitm2; //докупаем до 50
          msg.Lines.Add('Требуется докупит крючков:'+inttostr(NeedBuy));
        end else msg.Lines.Add('Не надо покупать, уже есть:'+inttostr(colvoitm2));
        Trd:=TradeCount;
        inc(TradeCount);
        msg.Lines.Add('TradeCount/TradeBuyItemCount:'+inttostr(TradeCount)+'/'+inttostr(TradeBuyItemCount-1));
      end;
    end;
  end;
end;
}//......................................
//******************************************************************************
// вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
begin
  //****************************************************************************
  //не обрабатываем пустые пакеты
  if pck='' then exit;
  //****************************************************************************
  //покупка состоит из следующих шагов:
  //1. таргет  на продавце, пауза, снова таргет c04=Action, c04=Action
  //2. приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
  //3. шлем выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)
  //4. приходит s11=BuyList:d(Money)h(ListID)w(ListCount)w(ItemType1)h(ObjectID)i(ItemID)d(maxcnt)w(ItemType2)w(h)d(ItemBodyPart)
  //5. FindItem(ID) найдем OID, Count нужной вещи по ID
  //6. шлем c1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d(Count)
  //****************************************************************************
{  if ReadyToBuy and (FishermanOID<>0) then begin
    if (ConnectName=Name) and FromServer then begin
      case pck[1] of
        //после того как мы взяли в таргет продавца приходит этот пакет
        //s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
        #$0F: begin
          msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');
          if ReadD(2)=FishermanOID then begin
            //шлем запрос выбора пункта - продажа
            //c21=RequestBypassToServer:s(Cmd)
            delay(1000);
            RequestByPassToServer(getbuylist);
            msg.Lines.Add('C>Пакет RequestBypassToServer #$21 (sell)');
          end;
        end;
        //после выбора пункта - продажа, приходит этот пакет
        //s11=BuyList:d(Money)h(ListID)w(ListCount)w(ItemType1)h(ObjectID)i(ItemID)d(maxcnt)w(ItemType2)w(h)d(ItemBodyPart)
        #$11: begin
          msg.Lines.Add('S>Пакет BuyList #$11');
          ListID:=ReadD(6); //запоминаем, он все время разный
          msg.Lines.Add('ListID='+inttostr(ListID));
          //шлем запрос на продажу
          //1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d(Count)
          msg.Lines.Add('C>Пакет RequestBuyItem #$1F');
          //продадим первый из списка
          msg.Lines.Add('Item: ID:'+IntToStr(TradeBuyItem[Trd])+' Count:'+IntToStr(NeedBuy));
          delay(1000);
          RequestBuyItem(TradeBuyItem[Trd],NeedBuy);
          ReadyToBuy:=false;
        end;
      end;
    end;
  end;
}  //......................................
  //****************************************************************************
  if FromServer then
  case pck[1] of
     //......................................
    //Пакет ItemList
    #$1B: CreateItemBase; //создание базы предметов
     //......................................
    //если удалили предметы, стираем в базе предметов пары ObjectID - ItemID
    #$27: InventoryUpdate; //Обновление базы
     //......................................
    //Пакет ChooseInventory
    #$6F: if ready then begin //and (readd(2)=itemid)
      //ищем подходящий предмет для заточки
      timer.enabled:=false; //отключаем пока не найдем предмет для заточки
      repeat
        ItemOID:=GetItem(ItemID,CurEnchLvl);
        if ItemOID=0 then begin
          inc(CurEnchLvl);
          Edit2.text:=inttostr(CurEnchLvl);
        end;
      until ItemOID<>0;
      //************************************************
      msg.Lines.Add('Пробуем улучшить ItemID='+IntToStr(ItemID)+' ItemOID='+IntToStr(ItemOID));
      RequestEnchantItem(ItemOID);
      ready:=false;
      timer.enabled:=true; //пока в тесте отключаем (вкл. после заточки предмета)
    end;
    #$81: if readd(2)=0 then begin
          CurEnchLvl:=0; //начнем с начала
    end;
  end;
end.
itemsID ищи на форуме по поиску или на [Ссылки могут видеть только зарегистрированные пользователи. ] сайте
________________
ВОТ ССЫЛКА НА САМЫЕ ПОЛЕЗНЫЕ ТЕМЫ ФОРУМА, И ВСЕ ЧТО ВАМ НУЖНО
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Квест на баюма lokerdog58 Общение и обсуждение, архив Lineage 2 6 25.10.2009 18:22
ХЕЛП МИ ПЛЗ JIuTo Боты, скрипты и прочий софт для Lineage 2 0 22.10.2009 20:25
хелп Иг бот Vombet Заявки на настройку бота 1 19.09.2009 22:47
Хелп ми Arhan Rising Force Online 8 29.07.2008 07:15

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 04:52.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net