Скриптинг  Форум посвещенный созданию скриптов для L2PacketHack  
	 
	
	
	
	
		
		 
	
	
	
	
	 
 
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			29.05.2008, 19:29
			
							
		 
		
			 
			#1  
			
		 
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				 
				Скрипт на заточку 
			 
			 
			
		
		
		
		Автоматизация заточки предметов до необходимого уровня by NLObP
Возможности скрипта
--------------------
+ Панель управления;
+ Затачиваем по очереди все предметы с ItemID пока не переломаем
  или не заточим. Один предмет всегда остаётся.
Необходимо затариться оружием, заточками и валерьянкой. 
Name='NLObP'; //Вписать сюда имя чара 
//установить константу в зависимости от типа игры (С4 или Интерлюд) 
interlude=true; //Interlude - true, C4 - false 
 
Внимание! 
Из комбобокса обязательно надо выбрать вещь, чтобы скрипт узнал 
ID и количество, только потом ставить напротив галочку. 
Галочки снимать не надо, если кончились заточки/вещи - можно сразу идти 
покупать и продолжать заточку. 
В инвентаре должно быть не менее двух одинаковых затачиваемых вещей, степень заточки значения не имеет  
Скрипт распространяется как есть, и я не несу ответственности за то, что ВЫ натворили у себя, его используя.
by NLObP 
для С4 и Интерлюдии можно взять здесь  
для Грации можно взять здесь  
by Breadfan 
скрипт переделанный под камаель (с автопокупкой). 
by Shadow 
Скрипт заточки предметов с их закупкой при необходимости
Этот скрипт помогает в рутине, когда разрешено пользователям 100% точить до большой величины, скажем до +200, ручками то замучаешься точить. 
 
PS: скрипты - это облегчение рутинной работы человека.  
		
	
		
		
			
			
			
				
					Миниатюры 
					
				 
			
		
			
			
			
			
			
				
					Вложения 
					
					
	 
	breadfan_enchant.rar  (5.9 Кб, 4257 просмотров) 
 
	 
	credo_enchant.rar  (2.7 Кб, 2374 просмотров) 
 
	 
	enchant_by_NLObP_01.zip  (7.4 Кб, 2891 просмотров) 
 
	 
	enchant_by_NLObP_02.zip  (71.6 Кб, 1487 просмотров) 
 
	 
	enchant_by_NLObP_03.zip  (71.8 Кб, 1290 просмотров) 
 
	 
	enchant_by_NLObP_04.zip  (73.3 Кб, 1621 просмотров) 
 
	 
	enchant_by_NLObP_06.zip  (9.4 Кб, 1288 просмотров) 
 
	 
	enchant_by_NLObP_07.zip  (9.4 Кб, 1597 просмотров) 
 
	 
	enchant_by_NLObP_08.rar  (6.3 Кб, 1887 просмотров) 
 
	 
	enchant_by_NLObP_09.rar  (6.3 Кб, 5571 просмотров) 
 
	 
	shadow_enchant.rar  (9.6 Кб, 3698 просмотров) 
 
					
				 
			
			
			
			
			 
		
		
		
		
		
		
		
		
		
		
		
						
 
				
				Последний раз редактировалось NLObP, 31.08.2009 в 01:20 .
				
				 
			
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	
		
			
				
					За это сообщение NLObP нажился 114 спасибками от: 
				
				
				
			 
			 4erteg , 
4iter , 
8tomat8 , 
abyabar , 
Agat , 
Alan , 
AlexStar , 
Alta1r , 
AoWpwnz , 
aSeSSoR , 
BEJIEC , 
bestar , 
BimSkaLaBim , 
BioDread , 
BOTt , 
Breadfan , 
BuKbI4 , 
C0derxWarr1or , 
cadaver , 
catchy , 
ChiterEPT , 
coffee , 
Comedylife , 
CriticalError , 
Crypto , 
Dagon , 
DarthShelL , 
DARTY , 
David , 
DeadForz , 
dfackk , 
dmitrix , 
Doberman , 
dyh9l , 
dynda2000 , 
eGoIST , 
Elfinit , 
ERASE , 
esk71 , 
Fer123 , 
Fvbkm , 
Ga6pueL , 
GanGsta0 , 
GANsss , 
givemexxx , 
Gray314 , 
Green , 
Grinch , 
Gurg , 
HooleeCheeter , 
Hwoarang , 
idkfa , 
Imperial2008 , 
Irritant , 
iSee , 
jiroo , 
KPOT^^ , 
KrasX , 
LamerOK , 
LeroI , 
leto , 
Leviy , 
lodek , 
LostQ , 
LoveCoderX , 
lPomalSveNl , 
maxstro , 
Meth0d , 
micoach , 
MONDBLITZ , 
Necrolity , 
Nerevar , 
Niksan , 
nneett , 
Op4er , 
Paulo , 
Pinko , 
Piter , 
Pitkin , 
Porcupine , 
Porshesh , 
Random-al , 
ReaGeN , 
ReiN , 
Ribnadzor , 
RinZo , 
RODMAN91 , 
rubela , 
saidbek , 
SELLER , 
Sergey , 
SexGuru , 
Shadow , 
Siberia , 
skaner , 
someonce1 , 
Source , 
TAMBIK , 
Tanuxa , 
tiranosaur , 
Tos , 
Tzio 7 , 
vahes , 
VanTG , 
VasQ , 
winer , 
WOLf! , 
Xelat , 
YssurTiger , 
zotrussia , 
Виталий , 
Витя , 
Р0ма , 
®ennie™   
		 
	
  
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			17.08.2008, 00:57
			
							
		 
		
			 
			#51  
			
		 
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		Shadow , выложи скрипт целиком, в первый свой пост, где скрипт основной, или в конец темы. Тяжело разобраться, где и что должно быть из кусков.
		
	
		
		
		
		
		
		
			
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	
		
			
				
					За это сообщение NLObP нажился спасибкой от: 
				
				
				
			 
			 
		 
	
  
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			17.08.2008, 01:14
			
							
		 
		
			 
			#52  
			
		 
	
 
	
			
            
			
			Новичок
			
			
		
			
				
			
			
			
				 
				Регистрация: 06.08.2008
				
				
				
					Сообщений: 27
				
				 
	Сказал Спасибо: 8
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				 
				SE v3.7 
			 
			 
			
		
		
		
		Выкладываю полную версию с таймерами на закупку.
	delphi Код:
	//############################################################################## 
program  Enchant;
//============================================================================== 
//Константы 
const 
  Name='Char' ; //Вписать сюда имя чара 
  //установить константу в зависимости от типа игры (С4 или Интерлюд) 
  interlude=true ; //Interlude - true, C4 - false 
  //*** 
  max =100 ;     //количество слотов в инвентаре чара 
  kID=1023000 ; //смещение C6 
  RoyID=8228 ;   // Shop ID 31228 
  WinnieID=8229 ;// Change ID 31229 
  Buffer=8231 ;
  DanSing=8232 ;
//------------------------------------------------------------------------------ 
//Список переменных 
var 
  Item, scrl, Cnt: 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, InBase, CanChange, CanBuy: boolean ;
  timer, Shops, Change: TTimer;
  BuyDelay, ScriptDelay: integer ;
  ItemCount, CurEnchLvl: integer ;
//------------------------------------------------------------------------------ 
// Buy Var 
  RoyOID, WinnieOID: integer ;
  Adena, CoL, EmptySlots, CoLChangeCount, ShopMode: integer ;
  ItemListID, ItemEntryID, BuyItemCount, ItemPrice: integer ;
  ScrollListID, ScrollEntryID, BuyScrollCount, ScrollPrice: integer ;
  ItemName, ScrollName: string ;
  NeedToBuy, NeedToChange: boolean ;
  MyX, MyY, MyZ, MyOID, ObjectID: integer ;       //Статы 
//------------------------------------------------------------------------------ 
//Вспомогательная 
  SocialID : integer ;
  ItemsName, StringList : TStringList ;  //названия предметов, имена продавцов 
//============================================================================== 
//Form 
//------------------------------------------------------------------------------ 
  FormMain : TForm;
  Splitter1 : TSplitter;
  Splitter2 : TSplitter;
  Stats : TMemo;
  Msg : TMemo;
  Panel1 : TPanel;
  GroupBox2 : TGroupBox;
  Label1 : TLabel;
  Label2 : TLabel;
  Label3 : TLabel;
  Label4 : TLabel;
  Label12 : TLabel;
  Label13 : TLabel;
  LabelBD : TLabel;
  ButtonStartEnchant: TButton;
  ButtonStopEnchant : TButton;
  ButtonBuyItems    : TButton;
  ButtonChangeAdena : TButton;
  ButtonBuyScroll   : TButton;
  ButtonChangeWindow: TButton;
  CheckBoxItem : TCheckBox;
  ComboBoxItem : TComboBox;
  CheckBoxScroll : TCheckBox;
  ComboBoxScroll : TComboBox;
  CheckAutoBuy   : TCheckBox;
  CheckAutoChange: TCheckBox;
  EditItemVal : TEdit;
  EditScrollVal : TEdit;
  EditScrollOID : TEdit;
  EditItemOID : TEdit;
  Edit1 : TEdit;
  Edit2 : TEdit;
  EditScriptDelay: TEdit;
  EditBuyDelay   : TEdit;
  EditKeepItems  : TEdit;
  ShowAdena      : TEdit;
  ShowCoL        : TEdit;
  StartTime, EndTime: TDateTime ;
//------------------------------------------------------------------------------ 
//============================================================================== 
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 (NLObP v.0.7) - Shadow Edition v3.7' ;
    Result.Left         := 175 ;
    Result.Top          := 175 ;
    Result.Width        := 700 ;
    Result.Height       := 300 ;
    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    := 593 ;
    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     := 445 ;
    Stats.Top      := 0 ;
    Stats.Width    := 230 ;
    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       := True ;
    Stats.ScrollBars     := ssVertical;
    //...................................... 
    //...................................... 
    //Msg 
    Msg := TMemo.Create ( Result) ;
    Msg.Parent  := Result;
    Msg.Left     := 0 ;
    Msg.Top      := 106 ;
    Msg.Width    := 573 ;
    Msg.Height   := 115 ;
    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       := True ;
    Msg.ScrollBars     := ssVertical;
    //...................................... 
    //...................................... 
    //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     := 'Enchant PH Script - SE v3.7' ;
    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     := 167 ;
    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;
    //...................................... 
    //...................................... 
    //LabelBuyDelay 
    LabelBD := TLabel.Create ( Result) ;
    LabelBD.Parent  := GroupBox2;
    LabelBD.Left     := 159 ;
    LabelBD.Top      := 98 ;
    LabelBD.Width    := 58 ;
    LabelBD.Height   := 13 ;
    LabelBD.Visible  := TRUE ;
    LabelBD.Tag      := 0 ;
    LabelBD.Enabled   := TRUE ;
    LabelBD.Hint      := 'Задержки в скрипте' ;
    LabelBD.ShowHint  := True ;
    LabelBD.Caption      := 'Delays:' ;
    LabelBD.Transparent  := TRUE ;
    LabelBD.WordWrap     := FALSE ;
    LabelBD.Alignment    := taLeftJustify;
    LabelBD.Layout       := tlTop;
    LabelBD.AutoSize     := TRUE ;
    LabelBD.Align        := alNone;
    LabelBD.Font .Name    := 'Tahoma' ;
    LabelBD.Font .Size    := 8 ;
    LabelBD.Font .Color   := clWindowText;
    LabelBD.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        := '16' ;
    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     := 197 ;
    Edit2.Top      := 67 ;
    Edit2.Width    := 63 ;
    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 ;
    //...................................... 
    //...................................... 
    //Items to Keep 
    EditKeepItems := TEdit.Create ( Result) ;
    EditKeepItems.Parent  := GroupBox2;
    EditKeepItems.Left       := 118 ;
    EditKeepItems.Top        := 95 ;
    EditKeepItems.Width      := 32 ;
    EditKeepItems.Height     := 21 ;
    EditKeepItems.Visible    := True ;
    EditKeepItems.Tag        := 0 ;
    EditKeepItems.Enabled    := True ;
    EditKeepItems.Hint       := 'Сколько предметов оставлять' ;
    EditKeepItems.ShowHint   := True ;
    EditKeepItems.Text       := '5' ;
    EditKeepItems.Font .Name  := 'Tahoma' ;
    EditKeepItems.Font .Size  := 8 ;
    EditKeepItems.Font .Color := clWindowText;
    EditKeepItems.Color      := clWindow;
    EditKeepItems.TabOrder   := 5 ;
    EditKeepItems.TabStop    := True ;
    EditKeepItems.ReadOnly   := False ;
    EditKeepItems.MaxLength  := 4 ;
    EditKeepItems.AutoSize   := False ;
    //...................................... 
    //...................................... 
    //Script Delay 
    EditScriptDelay := TEdit.Create ( Result) ;
    EditScriptDelay.Parent  := GroupBox2;
    EditScriptDelay.Left       := 197 ;
    EditScriptDelay.Top        := 95 ;
    EditScriptDelay.Width      := 32 ;
    EditScriptDelay.Height     := 21 ;
    EditScriptDelay.Visible    := True ;
    EditScriptDelay.Tag        := 0 ;
    EditScriptDelay.Enabled    := True ;
    EditScriptDelay.Hint       := 'Основная задержка скрипта' ;
    EditScriptDelay.ShowHint   := True ;
    EditScriptDelay.Text       := '795' ;
    EditScriptDelay.Font .Name  := 'Tahoma' ;
    EditScriptDelay.Font .Size  := 8 ;
    EditScriptDelay.Font .Color := clWindowText;
    EditScriptDelay.Color      := clWindow;
    EditScriptDelay.TabOrder   := 5 ;
    EditScriptDelay.TabStop    := True ;
    EditScriptDelay.ReadOnly   := False ;
    EditScriptDelay.MaxLength  := 4 ;
    EditScriptDelay.AutoSize   := False ;
    //...................................... 
    //...................................... 
    //Buy Delay 
    EditBuyDelay := TEdit.Create ( Result) ;
    EditBuyDelay.Parent  := GroupBox2;
    EditBuyDelay.Left       := 229 ;
    EditBuyDelay.Top        := 95 ;
    EditBuyDelay.Width      := 31 ;
    EditBuyDelay.Height     := 21 ;
    EditBuyDelay.Visible    := True ;
    EditBuyDelay.Tag        := 0 ;
    EditBuyDelay.Enabled    := True ;
    EditBuyDelay.Hint       := 'Задержка при закупке' ;
    EditBuyDelay.ShowHint   := True ;
    EditBuyDelay.Text       := '195' ;
    EditBuyDelay.Font .Name  := 'Tahoma' ;
    EditBuyDelay.Font .Size  := 8 ;
    EditBuyDelay.Font .Color := clWindowText;
    EditBuyDelay.Color      := clWindow;
    EditBuyDelay.TabOrder   := 5 ;
    EditBuyDelay.TabStop    := True ;
    EditBuyDelay.ReadOnly   := False ;
    EditBuyDelay.MaxLength  := 4 ;
    EditBuyDelay.AutoSize   := False ;
    //...................................... 
    //...................................... 
    //Show Adena 
    ShowAdena := TEdit.Create ( Result) ;
    ShowAdena.Parent     := GroupBox2;
    ShowAdena.Left       := 176 ;
    ShowAdena.Top        := 123 ;
    ShowAdena.Width      := 45 ;
    ShowAdena.Height     := 21 ;
    ShowAdena.Visible    := TRUE ;
    ShowAdena.Tag        := 0 ;
    ShowAdena.Enabled    := TRUE ;
    ShowAdena.Hint       := 'Адены' ;
    ShowAdena.ShowHint   := TRUE ;
    ShowAdena.Text       := 'Адены' ;
    ShowAdena.Font .Name  := 'Tahoma' ;
    ShowAdena.Font .Size  := 8 ;
//    ShowAdena.Align     := Right; 
    ShowAdena.Font .Color := clWindowText;
    ShowAdena.Color      := clWindow;
//    ShowAdena.BorderStyle:= 0; 
    ShowAdena.TabOrder   := 5 ;
    ShowAdena.TabStop    := True ;
    ShowAdena.ReadOnly   := True ;
    ShowAdena.MaxLength  := 10 ;
    ShowAdena.AutoSize   := False ;
    //...................................... 
    //...................................... 
    //Show Adena 
    ShowCoL := TEdit.Create ( Result) ;
    ShowCoL.Parent     := GroupBox2;
    ShowCoL.Left       := 221 ;
    ShowCoL.Top        := 123 ;
    ShowCoL.Width      := 39 ;
    ShowCoL.Height     := 21 ;
    ShowCoL.Visible    := TRUE ;
    ShowCoL.Tag        := 0 ;
    ShowCoL.Enabled    := TRUE ;
    ShowCoL.Hint       := 'Coins of Luck' ;
    ShowCoL.ShowHint   := TRUE ;
    ShowCoL.Text       := 'CoLs' ;
    ShowCoL.Font .Name  := 'Tahoma' ;
    ShowCoL.Font .Size  := 8 ;
    ShowCoL.Font .Color := clWindowText;
    ShowCoL.Color      := clWindow;
    ShowCoL.TabOrder   := 5 ;
    ShowCoL.TabStop    := True ;
    ShowCoL.ReadOnly   := True ;
    ShowCoL.MaxLength  := 10 ;
    ShowCoL.AutoSize   := False ;
    //...................................... 
    //...................................... 
    //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     := 88 ;
    ComboBoxItem.Top      := 16 ;
    ComboBoxItem.Width    := 172 ;
    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   := False ;
    ButtonStartEnchant.Hint      := 'Выберите предмет и заточку' ;
    ButtonStartEnchant.ShowHint  := True ;
    ButtonStartEnchant.Caption     := 'Начать' ;
    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     := 'Остановить' ;
    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;
    //...................................... 
    //...................................... 
    //ButtonBuyItems 
    ButtonBuyItems := TButton.Create ( Result) ;
    ButtonBuyItems.Parent  := GroupBox2;
    ButtonBuyItems.Left     := 265 ;
    ButtonBuyItems.Top      := 95 ;
    ButtonBuyItems.Width    := 150 ;
    ButtonBuyItems.Height   := 25 ;
    ButtonBuyItems.Visible  := TRUE ;
    ButtonBuyItems.Tag      := 0 ;
    ButtonBuyItems.Enabled   := False ;
    ButtonBuyItems.Hint      := 'Закупка предметов' ;
    ButtonBuyItems.ShowHint  := False ;
    ButtonBuyItems.Caption     := 'Закупка' ;
    ButtonBuyItems.Font .Name   := 'Tahoma' ;
    ButtonBuyItems.Font .Size   := 8 ;
    ButtonBuyItems.Font .Color  := clWindowText;
    ButtonBuyItems.Font .CharSet  := 1 ;
    ButtonBuyItems.TabOrder      := 3 ;
    ButtonBuyItems.TabStop       := TRUE ;
    ButtonBuyItems.Cancel        := FALSE ;
    ButtonBuyItems.ModalResult   := 0 ;
    ButtonBuyItems.OnClick      := @ButtonBuyItems_Click;
    //...................................... 
    //...................................... 
    ButtonBuyScroll := TButton.Create ( Result) ;
    ButtonBuyScroll.Parent  := GroupBox2;
    ButtonBuyScroll.Left     := 91 ;
    ButtonBuyScroll.Top      := 95 ;
    ButtonBuyScroll.Width    := 25 ;
    ButtonBuyScroll.Height   := 25 ;
    ButtonBuyScroll.Visible  := TRUE ;
    ButtonBuyScroll.Tag      := 0 ;
    ButtonBuyScroll.Enabled   := TRUE ;
    ButtonBuyScroll.Hint      := '' ;
    ButtonBuyScroll.ShowHint  := False ;
    ButtonBuyScroll.Caption     := 'S' ;
    ButtonBuyScroll.Font .Name   := 'Tahoma' ;
    ButtonBuyScroll.Font .Size   := 8 ;
    ButtonBuyScroll.Font .Color  := clWindowText;
    ButtonBuyScroll.Font .CharSet  := 1 ;
    ButtonBuyScroll.TabOrder      := 3 ;
    ButtonBuyScroll.TabStop       := TRUE ;
    ButtonBuyScroll.Cancel        := FALSE ;
    ButtonBuyScroll.ModalResult   := 0 ;
    ButtonBuyScroll.OnClick      := @ButtonBuyScroll_Click;
    //...................................... 
    //...................................... 
    ButtonChangeWindow := TButton.Create ( Result) ;
    ButtonChangeWindow.Parent  := GroupBox2;
    ButtonChangeWindow.Left     := 91 ;
    ButtonChangeWindow.Top      := 123 ;
    ButtonChangeWindow.Width    := 25 ;
    ButtonChangeWindow.Height   := 25 ;
    ButtonChangeWindow.Visible  := TRUE ;
    ButtonChangeWindow.Tag      := 0 ;
    ButtonChangeWindow.Enabled   := TRUE ;
    ButtonChangeWindow.Hint      := '' ;
    ButtonChangeWindow.ShowHint  := False ;
    ButtonChangeWindow.Caption     := 'W' ;
    ButtonChangeWindow.Font .Name   := 'Tahoma' ;
    ButtonChangeWindow.Font .Size   := 8 ;
    ButtonChangeWindow.Font .Color  := clWindowText;
    ButtonChangeWindow.Font .CharSet  := 1 ;
    ButtonChangeWindow.TabOrder      := 3 ;
    ButtonChangeWindow.TabStop       := TRUE ;
    ButtonChangeWindow.Cancel        := FALSE ;
    ButtonChangeWindow.ModalResult   := 0 ;
    ButtonChangeWindow.OnClick      := @ButtonChangeWindow_Click;
    //...................................... 
    //...................................... 
    //ButtonChangeAdena 
    ButtonChangeAdena := TButton.Create ( Result) ;
    ButtonChangeAdena.Parent  := GroupBox2;
    ButtonChangeAdena.Left     := 265 ;
    ButtonChangeAdena.Top      := 123 ;
    ButtonChangeAdena.Width    := 150 ;
    ButtonChangeAdena.Height   := 25 ;
    ButtonChangeAdena.Visible  := TRUE ;
    ButtonChangeAdena.Tag      := 0 ;
    ButtonChangeAdena.Enabled   := True ;
    ButtonChangeAdena.Hint      := '' ;
    ButtonChangeAdena.ShowHint  := FALSE ;
    ButtonChangeAdena.Caption     := 'Обменять CoL на Адены' ;
    ButtonChangeAdena.Font .Name   := 'Tahoma' ;
    ButtonChangeAdena.Font .Size   := 8 ;
    ButtonChangeAdena.Font .Color  := clWindowText;
    ButtonChangeAdena.Font .CharSet  := 1 ;
    ButtonChangeAdena.TabOrder      := 3 ;
    ButtonChangeAdena.TabStop       := TRUE ;
    ButtonChangeAdena.Cancel        := FALSE ;
    ButtonChangeAdena.ModalResult   := 0 ;
    ButtonChangeAdena.OnClick      := @ButtonChangeAdena_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       := 88 ;
    ComboBoxScroll.Top        := 40 ;
    ComboBoxScroll.Width      := 172 ;
    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;
    //...................................... 
    //...................................... 
    //CheckAutoBuy 
    CheckAutoBuy := TCheckBox.Create ( Result) ;
    CheckAutoBuy.Parent  := GroupBox2;
    CheckAutoBuy.Left     := 419 ;
    CheckAutoBuy.Top      := 95 ;
    CheckAutoBuy.Width    := 23 ;
    CheckAutoBuy.Height   := 23 ;
    CheckAutoBuy.Visible  := TRUE ;
    CheckAutoBuy.Tag      := 0 ;
    CheckAutoBuy.Enabled   := TRUE ;
    CheckAutoBuy.Hint      := 'Автоматизировать закупку' ;
    CheckAutoBuy.ShowHint  := TRUE ;
    CheckAutoBuy.Caption     := 'AB' ;
    CheckAutoBuy.Font .Name   := 'Tahoma' ;
    CheckAutoBuy.Font .Size   := 5 ;
    CheckAutoBuy.Font .Color  := clWindowText;
    CheckAutoBuy.Color        := clBtnFace;
    CheckAutoBuy.TabOrder     := 4 ;
    CheckAutoBuy.TabStop      := TRUE ;
    CheckAutoBuy.Checked      := True ;
    CheckAutoBuy.AllowGrayed  := FALSE ;
    CheckAutoBuy.State        := cbChecked;
    CheckAutoBuy.OnClick      := @CheckAutoBuy_Click;
    //...................................... 
    //...................................... 
    //CheckAutoChange 
    CheckAutoChange := TCheckBox.Create ( Result) ;
    CheckAutoChange.Parent  := GroupBox2;
    CheckAutoChange.Left     := 419 ;
    CheckAutoChange.Top      := 123 ;
    CheckAutoChange.Width    := 23 ;
    CheckAutoChange.Height   := 23 ;
    CheckAutoChange.Visible  := TRUE ;
    CheckAutoChange.Tag      := 0 ;
    CheckAutoChange.Enabled   := TRUE ;
    CheckAutoChange.Hint      := 'Автоматизировать обмен' ;
    CheckAutoChange.ShowHint  := TRUE ;
    CheckAutoChange.Caption     := 'AC' ;
    CheckAutoChange.Font .Name   := 'Tahoma' ;
    CheckAutoChange.Font .Size   := 5 ;
    CheckAutoChange.Font .Color  := clWindowText;
    CheckAutoChange.Color        := clBtnFace;
    CheckAutoChange.TabOrder     := 4 ;
    CheckAutoChange.TabStop      := TRUE ;
    CheckAutoChange.Checked      := True ;
    CheckAutoChange.AllowGrayed  := FALSE ;
    CheckAutoChange.State        := cbChecked;
    CheckAutoChange.OnClick      := @CheckAutoChange_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 ( 'Информация о заточке' ) ;
  stats.Lines .Add ( 'Системная Информация' ) ;
  Result.Show ;
end ;
//------------------------------------------------------------------------------ 
//============================================================================== 
//****************************************************************************** 
procedure  Init; //Вызывается при включении скрипта 
var 
  i:integer ;
begin 
  FormMain:=Create_FormMain;
  //Enchant:=false; 
  CurEnchLvl:=0 ;
  BuyDelay:=StrToInt ( EditBuyDelay.Text ) ;
//.............................................................................. 
  timer:=TTimer.Create ( nil ) ;
  timer.OnTimer :=@OnTimer;
  timer.Enabled :=False ;
  timer.Interval :=( StrToInt ( EditScriptDelay.Text ) ) ; //время задержки 
//.............................................................................. 
  Shops:=TTimer.Create ( nil ) ;
  Shops.OnTimer :=@Shoping;
  Shops.Enabled :=False ;
  Shops.Interval :=BuyDelay; //время задержки 
//.............................................................................. 
  Change:=TTimer.Create ( nil ) ;
  Change.OnTimer :=@OnChange;
  Change.Enabled :=False ;
  Change.Interval :=BuyDelay; //время задержки 
//.............................................................................. 
  StartTime:=time ;
//  stats.Lines.Add('Время '+TimeToStr(StartTime)); 
  ButtonBuyItems.Enabled :=False ;
  NeedToChange:=False ;
  ready:=False ;
  add:=False ;
  //Пакет RequestItemList 
  buf:=hstr( '0F' ) ;
  SendToServerEx( Name) ;
//  ShopMode:=2; 
  StringList:=TStringList .Create ;
  ItemsName:=TStringList .Create ;
  RoyOID:=1209014944 ;
  WinnieOID:=1209014946 ;
  MaxEnchLvl:=( StrToInt ( Edit1.Text ) ) ;
  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 ;
//.............................................................................. 
//****************************************************************************** 
//============================================================================== 
//Обработчики событий для элементов управления на форме 
//.............................................................................. 
//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 ];
   if  ( EmptySlots>0 )  then  begin 
   ItemIDBase( InBase) ;
    ButtonBuyItems.Enabled :=True ;
    ButtonBuyItems.Caption :=( ( ComboBoxItem.Text ) +': ' +IntToStr ( EmptySlots) +'шт.' ) ;
    stats.Lines .Add ( ' >' +IntToStr ( Adena-( ItemPrice*EmptySlots) ) ) ;
    end 
   else  begin 
    ButtonBuyItems.Caption :=( 'Инвентарь полон' ) ;
    stats.Lines .Add ( ' >' +IntToStr ( Adena-( ItemPrice*EmptySlots) ) ) ;
   end ;
    //проверка 
//    EditItemOID.Text:=Inttostr(ItemID); 
//    EditItemVal.text:=IntToStr(ItemOID); 
    ComboBoxItem.Enabled :=false ; //выключаем 
   if  ( ItemID>0 )  and  ( ScrollID>0 )  and  CheckBoxScroll.Checked  then  begin 
     ButtonStartEnchant.Enabled :=True ;
     ButtonStartEnchant.ShowHint :=True ;
    end ;
  end  else  begin 
    ItemID:=0 ;               //отмена 
    ItemOID:=0 ;
    ComboBoxItem.Enabled :=true ;  //включаем 
    ButtonBuyItems.Caption :=( 'Закупка' ) ;
    ButtonBuyItems.Enabled :=False ;
    ButtonStartEnchant.Enabled :=False ;
    ButtonStartEnchant.ShowHint :=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 
var 
  ScrollToBuy: integer ;
begin 
  if  CheckBoxScroll.Checked 
  then  begin 
    ScrollOID:=ItemBase[1 ,ComboBoxScroll.ItemIndex +1 ];
    ScrollID:=ItemBase[2 ,ComboBoxScroll.ItemIndex +1 ];
    ItemIDBase( InBase) ;
    ScrollToBuy:=Trunc ( Adena/ScrollPrice) ;
    stats.Lines .Add ( 'Автозакупка свитков включена' ) ;
    stats.Lines .Add ( ( ScrollName) +': ' +IntToStr ( trunc ( ScrollPrice/1000 ) ) +'к А.' ) ;
    stats.Lines .Add ( 'Аден хватит на ' +IntToStr ( ScrollToBuy) +' свитков' ) ;
//  проверка 
//    EditScrollOID.Text:=Inttostr(ScrollID); 
//    EditScrollVal.text:=IntToStr(ScrollOID); 
    ComboBoxScroll.Enabled :=false ; //выключаем 
    if  ( ItemID>0 )  and  ( ScrollID>0 )  and  CheckBoxItem.Checked  then  begin 
     ButtonStartEnchant.Enabled :=True ;
     ButtonStartEnchant.ShowHint :=True ;
    end ;
  end  else  begin 
    ScrollID:=0 ;               //отмена 
    ScrollOID:=0 ;
    ComboBoxScroll.Enabled :=true ;  //включаем 
    ButtonStartEnchant.Enabled :=False ;
    ButtonStartEnchant.ShowHint :=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) ;
  ButtonBuyItems.Enabled :=False ;
  ButtonBuyItems.Caption :=( 'Закупка' ) ;
  ButtonChangeAdena.Enabled :=False ;
  ButtonChangeAdena.Caption :=( 'Обмен' ) ;
  msg.Lines .Add ( 'Команда Старт!' ) ;
  if  ( StrToInt ( EditScrollOID.Text ) <3 )  and  InBase then  BuyScroll;
  ButtonStartEnchant.Enabled :=False ;
  ButtonStartEnchant.ShowHint :=False ;
  CheckAutoBuy.Enabled :=False ;
  CheckAutoChange.Enabled :=False ;
  EditBuyDelay.Enabled :=False ;
  EditScriptDelay.Enabled :=False ;
  EditKeepItems.Enabled :=False ;
  timer.enabled :=true ;
end ;
//.............................................................................. 
//ButtonStopEnchant 
procedure  ButtonStopEnchant_Click( Sender: TButton) ;
//Event : OnClick 
begin 
  msg.Lines .Add ( 'Команда Стоп!' ) ;
  timer.Enabled :=False ;
  Shops.Enabled :=False ;
  Change.Enabled :=False ;
  NeedToBuy:=False ;
  NeedToChange:=False ;
  ready:=false ;
  buf:=hstr( '0F' ) ;
  SendToServerEx( Name) ;
  CheckAutoBuy.Enabled :=True ;
  CheckAutoChange.Enabled :=True ;
  EditBuyDelay.Enabled :=True ;
  EditScriptDelay.Enabled :=True ;
  AdenaCounter( CoLChangeCount, CanChange, CanBuy) ;
  if  CheckBoxItem.Checked  then  begin 
   if  ( EmptySlots>0 )  then  begin 
    ButtonBuyItems.Enabled :=True ;
    ButtonBuyItems.Caption :=( ( ComboBoxItem.Text ) +': ' +IntToStr ( EmptySlots) +'шт.' ) ;
    end 
   else  begin 
    ButtonBuyItems.Enabled :=False ;
    ButtonBuyItems.Caption :=( 'Инвентарь полон' ) ;
   end ;
  end  else  begin 
   ButtonBuyItems.Enabled :=False ;
   ButtonBuyItems.Caption :=( 'Закупка' ) ;
  end ;
  if  not  CanChange then  begin 
   ButtonChangeAdena.Enabled :=False ;
   ButtonChangeAdena.Caption :=( 'Максимум Аден' ) ;
  end  else  begin 
   ButtonChangeAdena.Enabled :=True ;
   ButtonChangeAdena.Caption :=( 'Обменять ' +IntToStr ( CoLChangeCount*100 ) +' CoL' ) ;
  end ;
  ButtonStartEnchant.Enabled :=True ;
  ButtonStartEnchant.ShowHint :=True ;
  ButtonChangeAdena.Enabled :=True ;
  EditKeepItems.Enabled :=True ;
//  ButtonChangeAdena.Caption:=('Обмен'); 
end ;
//.............................................................................. 
//CheckAutoBuy 
procedure  CheckAutoBuy_Click( Sender: TCheckBox) ;
//Event : OnClick 
var 
  i: integer ;
begin 
  if  CheckAutoBuy.Checked  then  begin 
  end ;
end ;
//.............................................................................. 
//CheckAutoChange 
procedure  CheckAutoChange_Click( Sender: TCheckBox) ;
//Event : OnClick 
var 
  i: integer ;
begin 
  if  CheckAutoChange.Checked  then  begin 
 //  Shops.Enabled:=True; 
  end ;
end ;
//.............................................................................. 
//ButtonBuyItems 
procedure  ButtonBuyItems_Click( Sender: TButton) ;
//Event : OnClick 
begin 
  stats.Lines .Add ( 'Закупка ' +( ItemName) ) ;
  timer.enabled :=false ;
  ready:=False ;
  BuyItems( EmptySlots) ;
//  ready:=True; 
end ;
//.............................................................................. 
//ButtonBuyScroll 
procedure  ButtonBuyScroll_Click( Sender: TButton) ;
//Event : OnClick 
var 
  Cnt, IoA, IoACount: integer ;
begin 
  IoA:=( trunc ( 2000000000 /ItemPrice) ) ;
  IoACount:=( trunc ( EmptySlots/IoA) ) ;
  stats.Lines .Add ( 'IoA: ' +IntToStr ( IoA) ) ;
  stats.Lines .Add ( 'IoA Count: ' +IntToStr ( IoACount) ) ;
 //for Cnt:=1 to IoACount do begin 
 //stats.Lines.Add('Начало: '+IntToStr(Cnt)); 
  CoLChange;
  stats.Lines .Add ( 'Был обмен' ) ;
  delay( 100 ) ;
//  TargetAttacker('Roy', RoyOID); 
  RequestByPassToServer( 'menu_select?ask=-303&reply=' +IntToStr ( ItemListID) ) ;
  stats.Lines .Add ( 'Ждем открытия диалога' ) ;
  delay( 500 ) ; // Ждем открытия диалога 
  for  Cnt:=1  to  IoA do  begin 
   RequestMultiSellItem( ItemListID, ItemEntryID, BuyItemCount) ;
   delay( BuyDelay) ;
  end ;
 //end; 
// stats.Lines.Add('Click'); 
// ItemIDBase(InBase); 
// if InBase then BuyScroll; 
end ;
//.............................................................................. 
//ButtonChangeWindow 
procedure  ButtonChangeWindow_Click( Sender: TButton) ;
//Event : OnClick 
var 
  C, IoA: integer ;
begin 
// NeedToChange:=True; 
// Shops.Enabled:=True; 
end ;
//.............................................................................. 
//ButtonChangeAdena 
procedure  ButtonChangeAdena_Click( Sender: TButton) ;
//Event : OnClick 
begin 
  timer.enabled :=false ;
  ready:=False ;
  AdenaCounter( CoLChangeCount, CanChange, CanBuy) ;
  if  CanChange then  CoLChange;
  AdenaCounter( CoLChangeCount, CanChange, CanBuy) ;
  if  not  CanChange then  begin 
   ButtonChangeAdena.Enabled :=False ;
   ButtonChangeAdena.Caption :=( 'Максимум Аден' ) ;
  end ;
//ButtonStopEnchant_Click; 
end ;
//.............................................................................. 
//******************* 
procedure  FormStatus;
begin 
 AdenaCounter( CoLChangeCount, CanChange, CanBuy) ;
 ItemIDBase( InBase) ;
 if  timer.enabled  then  begin 
  ButtonStartEnchant.Enabled :=False ;
  ButtonStopEnchant.Enabled :=True ;
  ButtonBuyItems.Enabled :=False ;
  ButtonChangeAdena.Enabled :=False ;
  ButtonBuyScroll.Enabled :=False ;
  ButtonChangeWindow.Enabled :=False ;
//  ButtonChangeAdena.Caption:=('Максимум Аден'); 
  CheckAutoBuy.Enabled :=False ;
  CheckAutoChange.Enabled :=False ;
  EditBuyDelay.Enabled :=False ;
  EditScriptDelay.Enabled :=False ;
  EditKeepItems.Enabled :=False ;
 end  else  begin 
  ButtonStartEnchant.Enabled :=True ;
  ButtonStopEnchant.Enabled :=True ;
  ButtonBuyItems.Enabled :=True ;
  ButtonChangeAdena.Enabled :=True ;
  ButtonBuyScroll.Enabled :=True ;
  ButtonChangeWindow.Enabled :=True ;
//  ButtonChangeAdena.Caption:=('Максимум Аден'); 
  CheckAutoBuy.Enabled :=True ;
  CheckAutoChange.Enabled :=True ;
  EditBuyDelay.Enabled :=True ;
  EditScriptDelay.Enabled :=True ;
  EditKeepItems.Enabled :=True ;
 end ;
end ;
//...................................... 
procedure  Edit1_Exit( Sender: TEdit) ;
//Event : OnExit 
begin 
// 
end ;
//======================== Procedures ========================================== 
//.............................................................................. 
procedure  Say( msg:string ) ;
begin 
  buf:=hstr( '4A 00 00 00 00' ) ;
  WriteD( 2 ) ;
  WriteS( Name) ;
  WriteS( msg) ;
  SendToClientEx( Name) ;
end ;
//...................................... 
//****************************************************************************** 
//21=RequestBypassToServer:s(Cmd) 
procedure  RequestByPassToServer( cmd:string ) ;
begin 
  buf:=#$21 ;
  WriteS( cmd) ;
  SendToServerEx( Name) ;
end ;
//...................................... 
//****************************************************************************** 
procedure  RequestMultiSellItem( ListId, EntryID, Count:integer ) ;
begin 
  msg.Lines .Add ( 'Покупаем ListID:' +IntToStr ( ListID) +' EntryID:' +IntToStr ( EntryID) +' в кол-ве:' +IntToStr ( count) ) ;
  buf:=#$A7;
  WriteD( ListID) ;
  WriteD( EntryId) ;
  WriteD( Count) ;
  SendToServerEx( Name) ;
end ;
//****************************************************************************** 
//04=Action:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ)b(ShiftFlag) 
procedure  Target( ObjectID: Integer ) ;
begin 
  buf:=#$04 ;
  WriteD( ObjectID) ;
  WriteD( MyX) ;
  WriteD( MyY) ;
  WriteD( MyZ) ;
  WriteC( 00 ) ;
  SendToServerEx( Name) ;
end ;
//****************************************************************************** 
procedure  TargetAttacker( Cat: string ; AttackerOID: Integer ) ;
var 
 Roy, Winnie: string ;
begin 
timer.enabled :=false ;
 if  ( Cat='Roy' )  then  begin 
  if  ( AttackerOID>0 )  then  begin 
   msg.Lines .Add ( ( Cat) +' ObjectID=' +IntToStr ( AttackerOID) +' Player=' +IntToStr ( MyOID) ) ;
   Target( RoyOID) ;
   delay( 500 ) ;
   Target( RoyOID) ;
   delay( 500 ) ;
  end  else  begin 
   stats.Lines .Add ( 'OID ' +( Cat) +' еще не найден' ) ;
  end ;
 end ;
 if  ( Cat='Winnie' )  then  begin 
  if  ( AttackerOID>0 )  then  begin 
   msg.Lines .Add ( ( Cat) +' ObjectID=' +IntToStr ( AttackerOID) +' Player=' +IntToStr ( MyOID) ) ;
   Target( WinnieOID) ;
   delay( 500 ) ;
   Target( WinnieOID) ;
   delay( 500 ) ;
  end  else  begin 
   stats.Lines .Add ( 'OID ' +( Cat) +' еще не найден' ) ;
  end ;
 end ;
end ;
//****************************************************************************** 
//2F=RequestMagicSkillUse:dMagicID)d(CtrlPressed)b(ShiftPressed) 
procedure  MagicSkillUse( MagicID: integer ) ;
begin 
  buf:=#$2F;
  WriteD( MagicID) ;
  WriteD( 00 ) ;
  WriteC( 00 ) ;
  SendToServerEx( Name) ;
end ;
//****************************************************************************** 
//........................ Base of Item ID (List, Entry) ....................... 
procedure  ItemIDBase( var  InBase: boolean ) ;
begin 
//*** Scroll Base *** 
 if  ScrollID=955  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=1 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Enchant Weapon (Grade D)' ) ;
  ScrollPrice:=50000 ;
  InBase:=True ;
 end ;
 if  ScrollID=956  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=3 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Enchant Armor (Grade D)' ) ;
  ScrollPrice:=6000 ;
  InBase:=True ;
 end ;
 if  ScrollID=951  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=5 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Enchant Weapon (Grade C)' ) ;
  ScrollPrice:=110000 ;
  InBase:=True ;
 end ;
 if  ScrollID=952  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=7 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Enchant Armor (Grade C)' ) ;
  ScrollPrice:=15000 ;
  InBase:=True ;
 end ;
 if  ScrollID=947  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=9 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Enchant Weapon (Grade B)' ) ;
  ScrollPrice:=500000 ;
  InBase:=True ;
 end ;
 if  ScrollID=948  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=11 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Enchant Armor (Grade B)' ) ;
  ScrollPrice:=80000 ;
  InBase:=True ;
 end ;
 if  ScrollID=729  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=13 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Enchant Weapon (Grade A)' ) ;
  ScrollPrice:=5000000 ;
  InBase:=True ;
 end ;
 if  ScrollID=730  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=15 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Enchant Armor (Grade A)' ) ;
  ScrollPrice:=500000 ;
  InBase:=True ;
 end ;
 if  ScrollID=959  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=17 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Enchant Weapon (Grade S)' ) ;
  ScrollPrice:=10000000 ;
  InBase:=True ;
 end ;
 if  ScrollID=960  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=19 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Enchant Armor (Grade S)' ) ;
  ScrollPrice:=1000000 ;
  InBase:=True ;
 end ;
 if  ScrollID=6575  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=21 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Blessed Enchant Weapon (Grade D)' ) ;
  ScrollPrice:=500000 ;
  InBase:=True ;
 end ;
 if  ScrollID=6576  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=23 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Blessed Enchant Armor (Grade D)' ) ;
  ScrollPrice:=60000 ;
  InBase:=True ;
 end ;
if  ScrollID=6573  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=25 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Blessed Enchant Weapon (Grade C)' ) ;
  ScrollPrice:=2000000 ;
  InBase:=True ;
 end ;
 if  ScrollID=6574  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=27 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Blessed Enchant Armor (Grade C)' ) ;
  ScrollPrice:=300000 ;
  InBase:=True ;
 end ;
if  ScrollID=6571  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=29 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Blessed Enchant Weapon (Grade B)' ) ;
  ScrollPrice:=5000000 ;
  InBase:=True ;
 end ;
 if  ScrollID=6572  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=31 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Blessed Enchant Armor (Grade B)' ) ;
  ScrollPrice:=800000 ;
  InBase:=True ;
 end ;
if  ScrollID=6569  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=33 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Blessed Enchant Weapon (Grade A)' ) ;
  ScrollPrice:=50000000 ;
  InBase:=True ;
 end ;
 if  ScrollID=6570  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=35 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Blessed Enchant Armor (Grade A)' ) ;
  ScrollPrice:=5000000 ;
  InBase:=True ;
 end ;
if  ScrollID=6577  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=37 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Blessed Enchant Weapon (Grade S)' ) ;
  ScrollPrice:=100000000 ;
  InBase:=True ;
 end ;
 if  ScrollID=6578  then  begin 
  ScrollListID:=559 ;
  ScrollEntryID:=39 ;
  BuyScrollCount:=1 ;
  ScrollName:=( 'Blessed Enchant Armor (Grade S)' ) ;
  ScrollPrice:=10000000 ;
  InBase:=True ;
 end ;
//### Item Base ### 
//*** Stuff *** 
 if  ItemID=4707  then  begin 
  ItemListID:=576 ;
  ItemEntryID:=3 ;
  BuyItemCount:=100 ;
  ItemName:=( 'Coin of Luck' ) ;
  ItemPrice:=1000000 ;
 end ;
//*** End of Base *** 
 if  InBase=false  then  begin 
  stats.Lines .Add ( 'Неизвестный: ' +IntToStr ( ItemID) ) ;
  stats.Lines .Add ( 'Неизвестный: ' +IntToStr ( ScrollID) ) ;
 end ;
end ;
//.............................................................................. 
//****************************************************************************** 
procedure  BuyScroll;
begin 
 if  InBase then  begin 
//  if not ScrollWindowOpened then begin 
   RequestByPassToServer( 'menu_select?ask=-303&reply=559' ) ;
   delay( 500 ) ; // Ждем открытия диалога 
//   ScrollWindowOpened:=True; 
//   LabelBD.Caption:='Scroll'; 
//  end; 
//  if ScrollWindowOpened then begin 
   delay( BuyDelay) ;
   RequestMultiSellItem( ScrollListID, ScrollEntryID, BuyScrollCount) ;
   delay( BuyDelay) ;
//   ScrollWindowOpened:=True; 
//  end; 
 end ;
end ;
//****************************************************************************** 
procedure  BuyItems( EmptySlots: integer ) ;
var 
  Cnt, IoA: integer ;
begin 
 if  InBase then  begin 
  AdenaCounter( CoLChangeCount, CanChange, CanBuy) ;
  CoLChange;
  TargetAttacker( 'Roy' , RoyOID) ;
  AdenaCounter( CoLChangeCount, CanChange, CanBuy) ;
  IoA:=( trunc ( Adena/ItemPrice) ) ;
  RequestByPassToServer( 'menu_select?ask=-303&reply=' +IntToStr ( ItemListID) ) ;
  delay( 500 ) ; // Ждем открытия диалога 
  if  ( IoA>EmptySlots)  then  begin 
   for  Cnt:=1  to  EmptySlots do  begin 
    RequestMultiSellItem( ItemListID, ItemEntryID, BuyItemCount) ;
    delay( BuyDelay) ;
   end ;
  end  else  begin 
   for  Cnt:=1  to  IoA do  begin 
    RequestMultiSellItem( ItemListID, ItemEntryID, BuyItemCount) ;
    delay( BuyDelay) ;
   end ;
  end ;
 end ;
end ;
//****************************************************************************** 
procedure  AutoBuy;
var 
  Cnt, IoA, IoACount: integer ;
begin 
 AdenaCounter( CoLChangeCount, CanChange, CanBuy) ;
  IoA:=( trunc ( Adena/ItemPrice) ) ;
  IoACount:=( trunc ( EmptySlots/IoA) ) ;
  stats.Lines .Add ( 'IoA: ' +IntToStr ( IoA) ) ;
  delay( 100 ) ;
  TargetAttacker( 'Roy' , RoyOID) ;
  RequestByPassToServer( 'menu_select?ask=-303&reply=' +IntToStr ( ItemListID) ) ;
//  stats.Lines.Add('Ждем открытия диалога'); 
  delay( 500 ) ; // Ждем открытия диалога 
  for  Cnt:=1  to  IoA do  begin 
   RequestMultiSellItem( ItemListID, ItemEntryID, BuyItemCount) ;
   delay( BuyDelay) ;
  end ;
  CurEnchLvl:=0 ;
  Edit2.text :=IntToStr ( CurEnchLvl) ;
  EditBuyDelay.Enabled :=False ;
end ;
//****************************************************************************** 
procedure  AdenaCounter( var  CoLChangeCount: integer ; var  CanChange, CanBuy: boolean ) ;
begin 
  if  ( Adena>=2000000000 )  then  CanChange:=False ;
  if  ( Adena<=1900000000 )  then  begin 
   CoLChangeCount:=( 20 -Trunc ( ( Adena/1000000 ) /100 ) ) ;
   CanChange:=True ;
  end ;
  if  ( ( Adena-( ItemPrice*EmptySlots) ) >1 )  then  CanBuy:=True ;
end ;
//****************************************************************************** 
procedure  CoLChange;
var 
  ALID, AEID, ACnt: integer ;
  Cnt, CoLChangeCount: integer ;
begin 
 TargetAttacker( 'Winnie' , WinnieOID) ;
 delay( 50 ) ;
 AdenaCounter( CoLChangeCount, CanChange, CanBuy) ;
 ALID:=576 ;
 AEID:=3 ;
 ACnt:=100 ;
 if  CanChange then  begin 
  ButtonChangeAdena.Enabled :=False ;
  ButtonChangeAdena.Caption :=( 'Обмениваем ' +IntToStr ( CoLChangeCount*100 ) +' CoL' ) ;
//Вызов диалога обмена 
  RequestByPassToServer( 'menu_select?ask=-303&reply=576' ) ;
  delay( 500 ) ; //Ждем открытия диалога 
  for  Cnt:=1  to  CoLChangeCount do  begin 
   RequestMultiSellItem( ALID, AEID, ACnt) ;
   delay( BuyDelay) ;
  end ;
 end ;
 delay( 50 ) ;
 TargetAttacker( 'Roy' , RoyOID) ;
end ;
//****************************************************************************** 
//.............................................................................. 
// Закупка 
procedure  Shoping( Sender: TObject ) ;
begin 
 timer.Enabled :=False ;
 Change.Enabled :=False ;
  if  NeedToBuy then  exit ; //если еще не обменяли предыдущую вещь, то выходим сразу 
  if  ( RoyOID=0 )  then  begin      //(RoyOID=0) or 
    Shops.Enabled :=False ; //останавливаем торговлю 
    stats.Lines .Add ( 'Не определены OID! Требуется отбежать подальше и вернуться.' ) ;
    exit ; //выходим 
  end ;
  AdenaCounter( CoLChangeCount, CanChange, CanBuy) ;
  if  ( Adena<ItemPrice)  then  begin 
   Shops.Enabled :=False ; //останавливаем торговлю 
   stats.Lines .Add ( 'Не хватает денег.' ) ;
   NeedToChange:=True ;
//   Shops.Enabled:=True; 
   exit ;
  end ;
  if  ( EmptySlots<=2 )  then  begin  //проверка на выход из массива 
   Shops.Enabled :=False ; //останавливаем торговлю 
   TargetAttacker( 'Roy' , RoyOID) ; //таргет 
   msg.Lines .Add ( 'Всё закупили!' ) ;
   CurEnchLvl:=0 ;
   Edit2.text :=IntToStr ( CurEnchLvl) ;
   EditBuyDelay.Enabled :=False ;
   timer.Enabled :=True ;
  end 
   else 
  begin 
   msg.Lines .Add ( 'Цель Roy >' ) ;
   TargetAttacker( 'Roy' , RoyOID) ; //таргет 
   msg.Lines .Add ( 'Готовы обменять: ' +IntToStr ( EmptySlots-2 ) ) ;
   NeedToBuy:=True ; //готовы обменивать 
 end ;
end ;
//.............................................................................. 
//.............................................................................. 
// Обмен 
procedure  OnChange( Sender: TObject ) ;
begin 
 timer.Enabled :=False ;
 Shops.Enabled :=False ;
  if  NeedToChange then  exit ; //если еще не обменяли предыдущую вещь, то выходим сразу 
  if  ( WinnieOID=0 )  then  begin      //(RoyOID=0) or 
    Change.Enabled :=False ; //останавливаем торговлю 
    stats.Lines .Add ( 'Не определены OID! Требуется отбежать подальше и вернуться.' ) ;
    exit ; //выходим 
  end ;
  AdenaCounter( CoLChangeCount, CanChange, CanBuy) ;
  if  ( Adena>=2000000000 )  then  begin  //проверка на выход из массива 
   Change.Enabled :=False ; //останавливаем торговлю 
   TargetAttacker( 'Roy' , RoyOID) ; //таргет 
   msg.Lines .Add ( 'Всё обменяли!' ) ;
   timer.Enabled :=True ;
  end 
   else 
  begin 
   msg.Lines .Add ( 'Цель Winnie >' ) ;
   TargetAttacker( 'Winnie' , WinnieOID) ; //таргет 
   msg.Lines .Add ( 'Готовы обменять: ' +IntToStr ( ColChangeCount) ) ;
   NeedToChange:=True ; //готовы обменивать 
  end ;
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! 
  EmptySlots:=( max-ListCount) ;
  stats.Lines .Add ( 'Свободно слотов: ' +IntToStr ( EmptySlots) ) ;
  //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)); 
    if  itemBase[2 ,i]=57  then  begin 
      Adena:=itemBase[3 ,i];
      if  ( Adena>1000 )  then  ShowAdena.Text :=( IntToStr ( trunc ( Adena/1000 ) ) +'k' ) ;
      if  ( Adena>1000000 )  then  ShowAdena.Text :=( IntToStr ( trunc ( Adena/1000000 ) ) +'m' ) ;
     // if (Adena>1000000000) then ShowAdena.Text:=(IntToStr(trunc(Adena/10000000))+'g'); 
    end ;
    if  itemBase[2 ,i]=4037  then  begin 
      CoL:= itemBase[3 ,i];
      if  ( CoL>1000 )  then  ShowCoL.Text :=( IntToStr ( trunc ( CoL/1000 ) ) +'k' ) ;
      if  ( CoL>10000000 )  then  ShowCoL.Text :=( IntToStr ( trunc ( CoL/1000000 ) ) +'m' ) ;
    end ;
  end ;
  AdenaCounter( CoLChangeCount, CanChange, CanBuy) ;
  if  not  CanChange then  ButtonChangeAdena.Enabled :=False ;
  if  CanChange then  ButtonChangeAdena.Caption :=( 'Обменять ' +IntToStr ( CoLChangeCount*100 ) +' CoL' ) ;
  //вносим изменения в чекбоксы 
  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 ;
 stats.Lines .Add ( 'Roy OID: ' +IntToStr ( RoyOID) ) ;
 stats.Lines .Add ( 'Winnie OID: ' +IntToStr ( WinnieOID) ) ;
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 ) ; //количество итемов 
//  EmptySlots:=(max-ListCount); 
  msg.Lines .Add ( 'Свободно слотов: ' +IntToStr ( EmptySlots) ) ;
  //Пробегаем по Инвентарю и сохраняем пары 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 
         dec ( EmptySlots) ;
         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]) +' кол-во=' +IntToStr ( ItemBase[3 ,i]) +' ItemLVL=' +IntToStr ( ItemBase[4 ,i]) ) ;
             if  ItemID=57  then  begin 
               Adena:=ItemCount;
               if  ( Adena>1000 )  then  ShowAdena.Text :=( IntToStr ( trunc ( Adena/1000 ) ) +'k' ) ;
               if  ( Adena>1000000 )  then  ShowAdena.Text :=( IntToStr ( trunc ( Adena/1000000 ) ) +'m' ) ;
             //  if (Adena>1000000000) then ShowAdena.Text:=(IntToStr(trunc(Adena/10000000))+'g'); 
             end ;
             if  ItemID=4037  then  begin 
               CoL:=ItemCount;
               if  ( CoL>1000 )  then  ShowCoL.Text :=( IntToStr ( trunc ( CoL/1000 ) ) +'k' ) ;
               if  ( CoL>10000000 )  then  ShowCoL.Text :=( IntToStr ( trunc ( CoL/1000000 ) ) +'m' ) ;
             end ;
             add:=true ;
           end ;
         end ;
      end ;
      //изменен 
      2 : begin 
         for  i:=1  to  max  do  begin 
           if  ItemBase[1 ,i]=ItemOID then  begin 
             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]) +' кол-во=' +IntToStr ( ItemBase[3 ,i]) +' ItemLVL=' +IntToStr ( ItemBase[4 ,i]) ) ;
             if  ItemID=57  then  begin 
               Adena:=ItemCount;
               if  ( Adena>1000 )  then  ShowAdena.Text :=( IntToStr ( trunc ( Adena/1000 ) ) +'k' ) ;
               if  ( Adena>1000000 )  then  ShowAdena.Text :=( IntToStr ( trunc ( Adena/1000000 ) ) +'m' ) ;
              // if (Adena>1000000000) then ShowAdena.Text:=(IntToStr(trunc(Adena/10000000))+'g'); 
             end ;
             if  ItemID=4037  then  begin 
               CoL:=ItemCount;
               if  ( CoL>1000 )  then  ShowCoL.Text :=( IntToStr ( trunc ( CoL/1000 ) ) +'k' ) ;
               if  ( CoL>10000000 )  then  ShowCoL.Text :=( IntToStr ( trunc ( CoL/1000000 ) ) +'m' ) ;
             end ;
           end ;
         end ;
      end ;
      //удален 
      3 : begin 
         inc ( EmptySlots) ;
         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]) +' кол-во=' +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 ;
//.............................................................................. 
//****************************************************************************** 
procedure  UserInfo; //обновление данных о себе 
var 
  i: word ;
begin 
  MyOID:=ReadD( 18 ) ;
  MyX:=ReadD( 2 ) ;
  MyY:=ReadD( 6 ) ;
  MyZ:=ReadD( 10 ) ;
  i:=22 ;
  ReadS( i) ;
  if  interlude then  inc ( i, 48 )  else  inc ( i, 44 ) ;
end ;
//****************************************************************************** 
procedure  OnTimer( Sender: TObject ) ;
begin 
 EditItemVal.Text :=IntToStr ( SumItem( ItemID) ) ;
 EditScrollVal.Text :=IntToStr ( SumItem( ScrollID) ) ;
 if  ( Adena<=99000000 )  then  begin 
  stats.Lines .Add ( 'Деньги закончились! Меняем...' ) ;
  timer.Enabled :=False ;
  NeedToChange:=True ;
  Change.Enabled :=True ;
  exit ;
 end ;
 if  ( CurEnchLvl>=StrToInt ( Edit1.Text ) )  then  begin 
  stats.Lines .Add ( 'Sum ' +IntToStr ( SumItem( ItemID) ) +' lvl' +IntToStr ( CurEnchLvl) +' Ed' +( Edit1.Text ) ) ;
  timer.enabled :=false ;
  //Пакет RequestItemList 
  buf:=hstr( '0F' ) ;
  SendToServerEx( Name) ;
  delay( 50 ) ;
  stats.Lines .Add ( 'Достигнут требуемый уровень! Закупаем...' ) ;
  stats.Lines .Add ( 'Свободно слотов: ' +IntToStr ( EmptySlots) ) ;
  if  ( EmptySlots>0 )  then  begin 
   ButtonBuyItems.Enabled :=True ;
   ButtonBuyItems.Caption :=( ( ComboBoxItem.Text ) +': ' +IntToStr ( EmptySlots) +'шт.' ) ;
  end ;
{  if (SumItem(ItemID)>=10) and (CurEnchLvl>=StrToInt(Edit1.Text)) then begin
   stats.Lines.Add('Max '+IntToStr(MaxEnchLvl));
   stats.Lines.Add('Заточено 10шт '+IntToStr(MaxEnchLvl)+' уровня!');
   inc(MaxEnchLvl);
   stats.Lines.Add('Увеличиваем уровень: '+IntToStr(MaxEnchLvl));
   Edit1.Text:=(IntToStr(MaxEnchLvl));
  end; } 
  NeedToBuy:=True ;
  Shops.Enabled :=True ;
  exit ;
 end ;
 if  ( SumItem( ItemID) <=StrToInt ( EditKeepItems.Text ) )  then  begin 
  timer.enabled :=false ;
  buf:=hstr( '0F' ) ;
  SendToServerEx( Name) ;
  stats.Lines .Add ( 'Ограничение по поломкам - ' +IntToStr ( EditKeepItems.Text ) +'! Закупаем...' ) ;
  delay( 50 ) ;
  NeedToBuy:=True ;
  Shops.Enabled :=True ;
 end ;
 ScrollOID:=GetItem( ScrollID,0 ) ;
 if  ( ScrollOID<=3 )  then  begin 
  stats.Lines .Add ( 'Свитки закончились! Покупаем...' ) ;
  timer.enabled :=False ;
  //***** Закупка заточек * 
  BuyScroll;
  //*********************** 
  delay( 50 ) ;
  timer.enabled :=True ;
  //exit; 
 end ;
 UseItem( ScrollOID) ;
 msg.Lines .Add ( 'Задействовали скролл ScrollID=' +IntToStr ( scrollID) +' ScrollOID=' +IntToStr ( ScrollOID) ) ;
 ready:=true ; //готовы затачивать 
end ;
//============================================================================== 
// вызывается при приходе каждого пакета, если скрипт включен 
//****************************************************************************** 
Begin 
//**************************************************************************** 
 //не обрабатываем пустые пакеты 
 if  pck=''  then  exit ;
//**************************************************************************** 
 if  NeedToChange and  ( WinnieOID<>0 )  then  begin 
  if  ( ConnectName=Name)  and  FromServer then  begin 
   case  pck[1 ] of 
    #$0F: begin 
           msg.Lines .Add ( 'S>Пакет NpcHtmlMessage #$0F' ) ;
           msg.Lines .Add ( IntToStr ( ReadD( 4 ) ) ) ;
           if  ( ReadD( 2 ) =WinnieOID)  then  begin 
            //шлем запрос выбора пункта - продажа 
            //c21=RequestBypassToServer:s(Cmd) 
            delay( 350 ) ;
            RequestByPassToServer( 'menu_select?ask=-303&reply=576' ) ;
            msg.Lines .Add ( 'C>Пакет RequestBypassToServer' ) ;
           end ;
          end ;
//sD0=MultiSellList:d(listId)d(page_beg)d(page_end)d(onpage)d(entrycount)d(EntryId)b(?)w(prodcount)w(itemcount<)w(pItemId)d(?)w(ptype2)d(pcount)w(penchant)w(iItemId)w(itype2)d(icount)w(ienchant) 
    #$D0: begin 
           msg.Lines .Add ( 'S>Пакет MultiSellList #$D0' ) ;
           delay( 350 ) ;
           RequestMultiSellItem( 576 , 3 , 100 ) ;
           NeedToChange:=False ;
          end ;
   end ;
  end ;
 end ;
 if  NeedToBuy and  ( RoyOID<>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 ) =RoyOID)  then  begin 
            delay( 350 ) ;
            RequestByPassToServer( 'menu_select?ask=-303&reply=' +IntToStr ( ItemListID) ) ;
            msg.Lines .Add ( 'C>Пакет RequestBypassToServer ' +IntToStr ( ItemListID) ) ;
           end ;
          end ;
    //sD0=MultiSellList:d(listId)d(page_beg)d(page_end)d(onpage)d(entrycount)d(EntryId)b(?)w(prodcount)w(itemcount<)w(pItemId)d(?)w(ptype2)d(pcount)w(penchant)w(iItemId)w(itype2)d(icount)w(ienchant) 
    #$D0: begin 
           msg.Lines .Add ( 'S>Пакет MultiSellList #$D0' ) ;
           delay( 350 ) ;
           RequestMultiSellItem( ItemListID, ItemEntryID, ItemCount) ;
           NeedToBuy:=False ;
          end ;
   end ;
  end ;
 end ;
 //**************************************************************************** 
 if  FromServer then  case  pck[1 ] of 
 //**************************************************************************** 
  #$01 : begin       // MoveBackwardToLocation 
         if  ReadD( 2 )  = MyOID then  begin 
          MyX := ReadD( 18 ) ;
          MyY := ReadD( 22 ) ;
          MyZ := ReadD( 26 ) ;
         end ;
         //stats.Lines.Add('X'+IntToStr(MyX)+', Y'+IntToStr(MyY)+', Z'+IntToStr(MyZ)); 
        end ;
   //************************************************************************** 
   #$04 : begin  //пакет с инфой о моём чаре 
          //msg.Lines.Add('S>Пакет UserInfo #$04'); 
          UserInfo;
         end ;
   //************************************************************************** 
   //Пакет ItemList 
   #$1B: CreateItemBase; //создание базы предметов 
   //************************************************************************** 
   //если удалили предметы, стираем в базе предметов пары ObjectID - ItemID 
   #$27 : InventoryUpdate; //Обновление базы 
   //************************************************************************** 
   #$16 : begin 
          ObjectID:=( ReadD( 2 ) ) ;
          //stats.Lines.Add('S> OID '+IntToStr(ObjectID)+' ID '+IntToStr(ReadD(6)-kID)); 
          //        OID ReadD2      ID ReadD6 
          if  ( RoyID=ReadD( 6 ) -kID)  then  begin 
           RoyOID:=ObjectID;
           stats.Lines .Add ( 'Roy OID: ' +IntToStr ( RoyOID) ) ;
          end ;
          if  ( WinnieID=ReadD( 6 ) -kID)  then  begin 
           WinnieOID:=ObjectID;
           stats.Lines .Add ( 'Winnie OID: ' +IntToStr ( WinnieOID) ) ;
          end ;
         end ;
   //Пакет ChooseInventory 
   #$6F: if  ready then  begin  //and (readd(2)=itemid) 
          timer.enabled :=False ; //отключаем пока не найдем предмет для заточки 
          //***** Закупка заточек * 
          if  InBase then  BuyScroll;
          //ищем подходящий предмет для заточки 
          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  CurEnchLvl:=0 ; //начнем с начала 
  end ;
End .
//##############################################################################  
 
 
  
		
	
		
		
		
		
		
		
			
				__________________ 
				Shadows anywhere...
			
		
		
		
		
		
		
		
						
 
				
				Последний раз редактировалось Shadow, 29.08.2008 в 20:54 .
				
				 
			
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	
		
			
				
					За это сообщение Shadow нажился 2 спасибками от: 
				
				
				
			 
			 
		 
	
  
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			17.08.2008, 02:20
			
							
		 
		
			 
			#53  
			
		 
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		А ты его проверял на корректность кода?
Ошибка в строке
	Код:
	 stats.Lines.Add('Ограничение по поломкам - '+IntToStr(EditKeepItems.Text)+'! Закупаем...'); 
 IntToStr не надо делать, там и так строка.
 
		
	
		
		
		
		
		
		
			
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	
		
			
				
					За это сообщение NLObP нажился спасибкой от: 
				
				
				
			 
			 
		 
	
  
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			17.08.2008, 02:53
			
							
		 
		
			 
			#54  
			
		 
	
 
	
			
            
			
			Новичок
			
			
		
			
				
			
			
			
				 
				Регистрация: 06.08.2008
				
				
				
					Сообщений: 27
				
				 
	Сказал Спасибо: 8
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		
	Цитата:
	
	
		
			
				
					Сообщение от 
NLObP 
					 
				 
				А ты его проверял на корректность кода?
Ошибка в строке
	Код:
	 stats.Lines.Add('Ограничение по поломкам - '+IntToStr(EditKeepItems.Text)+'! Закупаем...'); 
 IntToStr не надо делать, там и так строка.
 
			
		 
	 
	
 Это я тут уже вписал. В скрипте все исправлено.
 
		
	
		
		
		
		
		
		
			
				__________________ 
				Shadows anywhere...
			
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			17.08.2008, 14:20
			
							
		 
		
			 
			#55  
			
		 
	
 
	
			
            
			
			Новичок
			
			
		
			
			
			
				 
				Регистрация: 15.08.2008
				
				
				
					Сообщений: 1
				
				 
	Сказал Спасибо: 0
	
		
			
				Имеет 0 спасибок в 0 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		тоесть, этот скрипт закупает нам нужные вещи, и точит. Закончилось, закупает и точит. так?
		
	
		
		
		
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			17.08.2008, 19:07
			
							
		 
		
			 
			#56  
			
		 
	
 
	
			
            
			
			Новичок
			
			
		
			
				
			
			
			
				 
				Регистрация: 06.08.2008
				
				
				
					Сообщений: 27
				
				 
	Сказал Спасибо: 8
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		
	Цитата:
	
	
		
			
				
					Сообщение от 
cler 
					 
				 
				тоесть, этот скрипт закупает нам нужные вещи, и точит. Закончилось, закупает и точит. так?
			
		 
	 
	
 По сути так он и должен работать. Но он иногда останавливается. И закупает только то что есть в базе, тк нужно знать ListID и EntryID шмоки.
 
		
	
		
		
		
		
		
		
			
				__________________ 
				Shadows anywhere...
			
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			19.08.2008, 14:34
			
							
		 
		
			 
			#57  
			
		 
	
 
	
			
            
			
			Пользователь
			
			
		
			
			
			
				 
				Регистрация: 30.07.2008
				
				
				
					Сообщений: 52
				
				 
	Сказал Спасибо: 9
	
		
			
				Имеет 2 спасибок в 2 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		
	Цитата:
	
	
		
			
				
					Сообщение от 
Shadow 
					 
				 
				По сути так он и должен работать. Но он иногда останавливается. И закупает только то что есть в базе, тк нужно знать ListID и EntryID шмоки.
			
		 
	 
	
 А возможно добавить в скрипт возможность продавать кристаллы в определенном количестве по очереди пока они не кончаться?
 
		
	
		
		
		
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			23.08.2008, 16:57
			
							
		 
		
			 
			#58  
			
		 
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		Q:Как точить одну вещь?
A:В скрипте найди процедуру
	Код:
	procedure OnTimer(Sender: TObject);
begin
... 
 в ней найди
	Код:
	  if (sumitem(ItemID)<=1) then begin
//  if (sumitem(ItemID)<=0) then begin //если надо точить одну вещь 
 измени на
	Код:
	//  if (sumitem(ItemID)<=1) then begin
  if (sumitem(ItemID)<=0) then begin //если надо точить одну вещь 
 и сохрани. Станет точить только одну вещь.
 
		
	
		
		
		
		
		
		
			
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	
		
			
				
					За это сообщение NLObP нажился спасибкой от: 
				
				
				
			 
			 
		 
	
  
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			06.09.2008, 20:54
			
							
		 
		
			 
			#59  
			
		 
	
 
	
			
            
			
			Гость
			
			
		
			
			
								
		
	 
	
	
	
		
		
			
			
				 
				ХЛП 
			 
			 
			
		
		
		
		
	Цитата:
	
	
		
			
				NLObP, пасиба большое. Но возникла проблема. У меня не видно никакого оружия. =( Может это связано с ITem Id.ini в программе? ( Помогите, пожалуйста.
			
		 
	 
	
 Да это связанно с itemid.ini. Я так понимаю не вижно оружия ikarus итп веще которые не предусмотрены в чистом La2 а добавлены админами со сторонних сайтов. тч добавлять придется самому или просто на угад(как я) 
 
		
	
		
		
		
		
		
		
		
		
		
		
						
 
				
				Последний раз редактировалось NLObP, 06.09.2008 в 22:58 .
				
				 
			
		
		
	
	 
 
	
		
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
			14.09.2008, 19:15
			
							
		 
		
			 
			#60  
			
		 
	
 
	
			
            
			
			Пользователь
			
			
		
			
			
			
				 
				Регистрация: 30.07.2008
				
				
				
					Сообщений: 52
				
				 
	Сказал Спасибо: 9
	
		
			
				Имеет 2 спасибок в 2 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			 
			
		
		
		
		
	Цитата:
	
	
		
			
				
					Сообщение от 
NLObP 
					 
				 
				Цитата: 
Сообщение от Pitkin Посмотреть сообщение 
Есть ли возможность в скрипте сделать так,чтобы количество заточеных предметов оставалось не 1 шт а то скока мне нуна.Подскажите плиз чего нуна поддправить в срипете для этого 
Для этого нужна только удача.
			
		 
	 
	
 Питкин найди в скрипте вот такую страку if (sumitem(ItemID)<=1) then begin и меняй цифру и все
 
		
	
		
		
		
		
		
		
		
		
		
	
	 
 
	
		 
						
			
		
		
		
		 
	 
	
	
	
		
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
	 
 
 
	
		
			
				
					За это сообщение Витя нажился спасибкой от: 
				
				
				
			 
			 
		 
	
  
	 
	
		 	
	 
 
		
 
	
		
 
  
	Опции темы 
	
 
	
	
	
	
	
	
	 
	
 
	Опции просмотра 
	
 
	
	
	
	
	
	
		  Линейный вид  
		
		
	 
	
	
	
	 
	
	
 
	
		
	
		 
		Ваши права в разделе
	 
 
 
	
		
		Вы не можете  создавать темы
		Вы не можете  отвечать на сообщения
		Вы не можете  прикреплять файлы
		Вы не можете  редактировать сообщения
		 
		
		
		
		
		HTML код Выкл. 
	  
 
 
	 
	
		
	 
 
Часовой пояс GMT +4, время: 12:58 .
		 	
	 
 
	
	
	
	vBulletin style designed by 
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: 
zCarot 
	
 
 
 
 
 
 
 
  
 
 
 
Вы хотите чувствовать себя в безопасности? чоп  Белган обеспечит её!