Скриптинг  Форум посвещенный созданию скриптов для L2PacketHack  
	
	
	
	
	
	
	
	
	
	
	
	
		
		 
	
	
	
	
	 
 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#1  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				Скрипт на заточку 
			 
			Автоматизация заточки предметов до необходимого уровня by NLObP
Возможности скрипта
--------------------
+ Панель управления;
+ Затачиваем по очереди все предметы с ItemID пока не переломаем
  или не заточим. Один предмет всегда остаётся.
Необходимо затариться оружием, заточками и валерьянкой. 
Скрипт распространяется как есть, и я не несу ответственности за то, что ВЫ натворили у себя, его используя.
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™   
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#21  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				 
			
	Цитата:
	
	
		
			
				
					Сообщение от 
NeRv1k 
					Что делать ??? Запуска на С6 имя прописал
			
		 
	 
	
 Имя соединения и константа Name должны совпадать. Для начала добиться, чтобы нормально показывало имя чара.
	Цитата:
	
	
		
			
				
					Сообщение от 
NeRv1k 
					 Извените но я давно играю в Л2 И можно сказать давно знаю про ПНХ.. Но это 1 раз когда я ево скачял.... и в програмировании я не силен.. 
 Не могли бы вы мне поподробнее плз обяснить что я не так сделал 
P.S. Мне то и надо только что бы точить..
 
	 
	
 В "Список соединений:"  должно быть четко написано имя чара, которым ты зашел в клиент. Попробуй поставить/снять галочку "Обход смены XOR ключа". Попробуй пакетхак версии 3.2.0, если тоже самое, то врядли сам сделаешь. Надо разбираться с шифрацией трафика и компилировать новую newxor.dll
Добавлено через 1 минуту 
	Цитата:
	
	
		
			
				
					Сообщение от 
abyabar 
					NLObP   прив ! слушай а реально ли зделать так : я играю на сервере thecyberland.ru почти копия (основа) la2fantasy.net ! там есть монеты гг 1 монета 500кк ! и зделать так чтоб он покупал точки и когда кончались деньги он бы шёл менял гг на адены ! и шёл опять точил ! и так точил точил пока не заточит на ту точку которую указал  !
			
		 
	 
	
 Теоретически можно всё сделать. Только кто будет делать?! Если сам не сделаешь, то никто не сделает.
Добавлено через 3 часа 25 минут 
	Цитата:
	
	
		
			
				
					Сообщение от 
NeRv1k 
					СПС ! Запустил... Просто на другом чаре заходит а на эточето нет.... Но терь когда я выбераю предмет и точьку, ставлю галочьки и жму старт оно пишет : Прервано !
			
		 
	 
	
 Попробуй сделать всё, что написано в скрипте, перед запуском.
			
				Последний раз редактировалось NLObP, 03.08.2008 в 04:09 .
				Причина: Добавлено сообщение
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#22  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 29.04.2008
				
				
				
					Сообщений: 830
				
				 
	Сказал Спасибо: 80
	
		
			
				Имеет 230 спасибок в 169 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				 
			Может просто в рюкзаке лежит одна вещь затачиваемая, а по умолчанию скрипт будет работать только если затачиваемых вещей минимум две
Вот скрипт переделанный под камаель. Т.к. имеющаяся у меня версия пнх некорректно работает с именами соединений то пришлось убрать возможность работы с определенным подключением.В данном случае изменений минимум, заменены только лишь ИД пакетов и требуемые смещения.
	delphi Код:
	const 
  Name='' ; //Вписать сюда имя чара 
  //установить константу в зависимости от типа игры (С4 или Интерлюд) 
  interlude=true ; //Interlude - true, C4 - false 
  //------------------------- 
  max =300 ;     //количество слотов в инвентаре чара 
//............................................ 
//Список переменных 
var 
  Item, scrl:integer ;
  ScrollID, ScrollOID:integer ;  //ScrollID скролла заточки 
  ItemID,ItemOID:integer ;      //ItemID затачиваемого предмета 
  MaxEnchLvl:integer ;         //уровень заточки который требуется достичь 
  ItemBase:  array[1 ..4 ,1 ..max ] of  integer ; //ItemOID, ItemID, Kol-vo, ItemLvl 
  ready, add : boolean ;
  timer : TTimer;
  ItemCount, CurEnchLvl: integer ;
  SocialID : integer ; // вспомогательная 
  ItemsName, StringList : TStringList ;  //названия предметов, имена продавцов 
  FormMain : TForm; //Создаваемая форма 
  Splitter1 : TSplitter;
  Splitter2 : TSplitter;
  Stats : TMemo;
  Msg : TMemo;
  Panel1 : TPanel;
  GroupBox2 : TGroupBox;
  Label2 : TLabel;
  Label4 : TLabel;
  Label12 : TLabel;
  Label13 : TLabel;
  CheckBoxItem : TCheckBox;
  ComboBoxItem : TComboBox;
  ButtonStartEnchant : TButton;
  ButtonStopEnchant : TButton;
  CheckBoxScroll : TCheckBox;
  ComboBoxScroll : TComboBox;
  EditItemVal : TEdit;
  EditScrollVal : TEdit;
  EditScrollOID : TEdit;
  EditItemOID : TEdit;
  Label1 : TLabel;
  Label3 : TLabel;
  Edit1 : TEdit;
  Edit2 : TEdit;
//............................................ 
//************************************* 
//Обработчики событий для элементов управления на форме 
//...................................... 
//CheckBoxItem 
procedure  CheckBoxItem_Click( Sender: TCheckBox) ;
//Event : OnClick 
begin 
  if  CheckBoxItem.Checked 
  then  begin 
    ItemOID:=ItemBase[1 ,ComboBoxItem.ItemIndex +1 ];
    ItemID:=ItemBase[2 ,ComboBoxItem.ItemIndex +1 ];
    //проверка 
//    EditItemOID.Text:=Inttostr(ItemID); 
//    EditItemVal.text:=inttostr(ItemOID); 
    ComboBoxItem.Enabled :=false ; //выключаем 
  end  else  begin 
    ItemID:=0 ;               //отмена 
    ItemOID:=0 ;
    ComboBoxItem.Enabled :=true ;  //включаем 
    //Пакет RequestItemList 
    buf:=hstr( '0F' ) ;
    SendToServerEx( Name) ;
  end ;
end ;
//...................................... 
//...................................... 
//ComboBoxItem 
procedure  ComboBoxItem_Click( Sender: TComboBox) ;
//Event : OnClick 
begin 
    ItemOID:=ItemBase[1 ,ComboBoxItem.ItemIndex +1 ];
    ItemID:=ItemBase[2 ,ComboBoxItem.ItemIndex +1 ];
//    ItemID:=ExtractIDValues(ComboBoxItem.Items.Strings[ComboBoxItem.ItemIndex]); 
    EditItemOID.Text :=Inttostr ( ItemID) ;
    EditItemVal.text :=inttostr ( sumitem( ItemID) ) ;
end ;
//...................................... 
//...................................... 
//CheckBoxScroll 
procedure  CheckBoxScroll_Click( Sender: TCheckBox) ;
//Event : OnClick 
begin 
  if  CheckBoxScroll.Checked 
  then  begin 
    ScrollOID:=ItemBase[1 ,ComboBoxScroll.ItemIndex +1 ];
    ScrollID:=ItemBase[2 ,ComboBoxScroll.ItemIndex +1 ];
    //проверка 
//    EditScrollOID.Text:=Inttostr(ScrollID); 
//    EditScrollVal.text:=inttostr(ScrollOID); 
    ComboBoxScroll.Enabled :=false ; //выключаем 
  end  else  begin 
    ScrollID:=0 ;               //отмена 
    ScrollOID:=0 ;
    ComboBoxScroll.Enabled :=true ;  //включаем 
    //Пакет RequestItemList 
    buf:=hstr( '0F' ) ;
    SendToServerEx( Name) ;
  end ;
end ;
//...................................... 
//...................................... 
//ComboBoxScroll 
procedure  ComboBoxScroll_Click( Sender: TComboBox) ;
//Event : OnClick 
begin 
    ScrollOID:=ItemBase[1 ,ComboBoxScroll.ItemIndex +1 ];
    ScrollID:=ItemBase[2 ,ComboBoxScroll.ItemIndex +1 ];
//    ScrollID:=ExtractIDValues(ComboBoxScroll.Items.Strings[ComboBoxScroll.ItemIndex]); 
    EditScrollOID.Text :=Inttostr ( ScrollID) ;
    EditScrollVal.text :=inttostr ( sumitem( ScrollID) ) ;
end ;
//...................................... 
//...................................... 
//ButtonStartEnchant 
procedure  ButtonStartEnchant_Click( Sender: TButton) ;
//Event : OnClick 
begin 
  CurEnchLvl:=0 ;
  Edit2.text :=inttostr ( CurEnchLvl) ;
  msg.Lines .Add ( 'Команда Старт!!!' ) ;
  timer.enabled :=true ;
end ;
//...................................... 
//...................................... 
//ButtonStopEnchant 
procedure  ButtonStopEnchant_Click( Sender: TButton) ;
//Event : OnClick 
begin 
  msg.Lines .Add ( 'Команда Стоп!!!' ) ;
  timer.enabled :=false ;
  ready:=false ;
end ;
//...................................... 
//...................................... 
procedure  Edit1_Exit( Sender: TEdit) ;
//Event : OnExit 
begin 
//  MyHPID:=ExtractIDValues(ComboBoxHPotion.Items.Strings[ComboBoxHPotion.ItemIndex]); 
//  EditHPotionVal.Text:=Inttostr(FindItem(MyHPID)); 
//  EditHPotionOID.text:=inttostr(ItemBase2[1,1]); 
end ;
//...................................... 
//************************************* 
procedure  Free_FormMain;
//Освобождаем ресурсы ... 
begin 
  TRY 
    if  FormMain<>NIL then  begin 
       FormMain.Free ;
       FormMain:=NIL ;
    end ;
  FINALLY 
  END ;
end ; //Free_FormMain 
//======================== 
//======================== 
function  Create_FormMain : TForm;
//Создаем форму и соотв. компоненты на ней ... 
Var 
  Yes : boolean ;
begin 
  Yes := FALSE ;
  Result := TForm.Create ( nil ) ;
  TRY 
    //------------------------ 
    //Свойства формы 
    Result.Caption      := 'Enchant by NLObP v.0.6' ;
    Result.Left         := 397 ;
    Result.Top          := 233 ;
    Result.Width        := 581 ;
    Result.Height       := 205 ;
    Result.FormStyle    := fsNormal;
    Result.Position     := poDesigned;
    Result.BorderStyle  := bsSizeable;
    Result.BorderWidth  := 0 ;
    Result.WindowState  := wsNormal;
    Result.Color        := clBtnFace;
    Result.Font .Name    := 'Tahoma' ;
    Result.Font .Size    := 8 ;
    Result.Font .Color   := clWindowText;
    Result.Font .CharSet := 1 ;
    //------------------------ 
    //...................................... 
    //Splitter1 
    Splitter1 := TSplitter.Create ( Result) ;
    Splitter1.Parent  := Result;
    Splitter1.Align  := alBottom;
    Splitter1.Color  := clBtnFace;
    Splitter1.Left     := 0 ;
    Splitter1.Top      := 103 ;
    Splitter1.Width    := 573 ;
    Splitter1.Height   := 3 ;
    Splitter1.Visible  := TRUE ;
    Splitter1.Tag      := 0 ;
    //...................................... 
    //...................................... 
    //Splitter2 
    Splitter2 := TSplitter.Create ( Result) ;
    Splitter2.Parent  := Result;
    Splitter2.Align  := alRight;
    Splitter2.Color  := clBtnFace;
    Splitter2.Left     := 442 ;
    Splitter2.Top      := 0 ;
    Splitter2.Width    := 1 ;
    Splitter2.Height   := 103 ;
    Splitter2.Visible  := TRUE ;
    Splitter2.Tag      := 0 ;
    //...................................... 
    //...................................... 
    //Stats 
    Stats := TMemo.Create ( Result) ;
    Stats.Parent  := Result;
    Stats.Left     := 443 ;
    Stats.Top      := 0 ;
    Stats.Width    := 130 ;
    Stats.Height   := 103 ;
    Stats.Visible  := TRUE ;
    Stats.Tag      := 0 ;
    Stats.Enabled   := TRUE ;
    Stats.Hint      := '' ;
    Stats.ShowHint  := FALSE ;
    Stats.Font .Name   := 'Tahoma' ;
    Stats.Font .Size   := 8 ;
    Stats.Font .Color  := clWindowText;
    Stats.Color          := clWindow;
    Stats.TabOrder       := 0 ;
    Stats.TabStop        := TRUE ;
    Stats.Align          := alRight;
    Stats.WordWrap       := TRUE ;
    Stats.Alignment      := taLeftJustify;
    Stats.WantTabs       := FALSE ;
    Stats.WantReturns    := TRUE ;
    Stats.HideSelection  := TRUE ;
    Stats.MaxLength      := 0 ;
    Stats.OEMConvert     := FALSE ;
    Stats.ReadOnly       := FALSE ;
    Stats.ScrollBars     := ssNone;
    //...................................... 
    //...................................... 
    //Msg 
    Msg := TMemo.Create ( Result) ;
    Msg.Parent  := Result;
    Msg.Left     := 0 ;
    Msg.Top      := 106 ;
    Msg.Width    := 573 ;
    Msg.Height   := 65 ;
    Msg.Visible  := TRUE ;
    Msg.Tag      := 0 ;
    Msg.Enabled   := TRUE ;
    Msg.Hint      := '' ;
    Msg.ShowHint  := FALSE ;
    Msg.Font .Name   := 'Tahoma' ;
    Msg.Font .Size   := 8 ;
    Msg.Font .Color  := clWindowText;
    Msg.Color          := clWindow;
    Msg.TabOrder       := 1 ;
    Msg.TabStop        := TRUE ;
    Msg.Align          := alBottom;
    Msg.WordWrap       := TRUE ;
    Msg.Alignment      := taLeftJustify;
    Msg.WantTabs       := FALSE ;
    Msg.WantReturns    := TRUE ;
    Msg.HideSelection  := TRUE ;
    Msg.MaxLength      := 0 ;
    Msg.OEMConvert     := FALSE ;
    Msg.ReadOnly       := FALSE ;
    Msg.ScrollBars     := ssNone;
    //...................................... 
    //...................................... 
    //Panel1 
    Panel1 := TPanel.Create ( Result) ;
    Panel1.Parent  := Result;
    Panel1.Left     := 0 ;
    Panel1.Top      := 0 ;
    Panel1.Width    := 442 ;
    Panel1.Height   := 103 ;
    Panel1.Visible  := TRUE ;
    Panel1.Tag      := 0 ;
    Panel1.Enabled   := TRUE ;
    Panel1.Hint      := '' ;
    Panel1.ShowHint  := FALSE ;
    Panel1.Caption     := '' ;
    Panel1.Align       := alClient;
    Panel1.Color       := clBtnFace;
    Panel1.Font .Name   := 'Tahoma' ;
    Panel1.Font .Size   := 8 ;
    Panel1.Font .Color  := clWindowText;
    Panel1.Font .CharSet  := 1 ;
    Panel1.BevelWidth    := 1 ;
    Panel1.BorderWidth   := 0 ;
    Panel1.BevelInner    := bvNone;
    Panel1.BevelOuter    := bvRaised;
    Panel1.TabOrder      := 2 ;
    Panel1.TabStop       := FALSE ;
    Panel1.AutoSize      := FALSE ;
    //...................................... 
    //...................................... 
    //GroupBox2 
    GroupBox2 := TGroupBox.Create ( Result) ;
    GroupBox2.Parent  := Panel1;
    GroupBox2.Left     := 1 ;
    GroupBox2.Top      := 1 ;
    GroupBox2.Width    := 440 ;
    GroupBox2.Height   := 101 ;
    GroupBox2.Visible  := TRUE ;
    GroupBox2.Tag      := 0 ;
    GroupBox2.Enabled   := TRUE ;
    GroupBox2.Hint      := '' ;
    GroupBox2.ShowHint  := FALSE ;
    GroupBox2.Caption     := 'Настройки' ;
    GroupBox2.Align       := alClient;
    GroupBox2.Color       := clBtnFace;
    GroupBox2.Font .Name   := 'Tahoma' ;
    GroupBox2.Font .Size   := 8 ;
    GroupBox2.Font .Color  := clWindowText;
    GroupBox2.Font .CharSet  := 1 ;
    GroupBox2.TabOrder      := 0 ;
    GroupBox2.TabStop       := FALSE ;
    //...................................... 
    //...................................... 
    //Label1 
    Label1 := TLabel.Create ( Result) ;
    Label1.Parent  := GroupBox2;
    Label1.Left     := 10 ;
    Label1.Top      := 70 ;
    Label1.Width    := 58 ;
    Label1.Height   := 13 ;
    Label1.Visible  := TRUE ;
    Label1.Tag      := 0 ;
    Label1.Enabled   := TRUE ;
    Label1.Hint      := '' ;
    Label1.ShowHint  := FALSE ;
    Label1.Caption      := 'Уровень Макс.:' ;
    Label1.Transparent  := TRUE ;
    Label1.WordWrap     := FALSE ;
    Label1.Alignment    := taLeftJustify;
    Label1.Layout       := tlTop;
    Label1.AutoSize     := TRUE ;
    Label1.Align        := alNone;
    Label1.Font .Name    := 'Tahoma' ;
    Label1.Font .Size    := 8 ;
    Label1.Font .Color   := clWindowText;
    Label1.Color        := clBtnFace;
    //...................................... 
    //...................................... 
    //Label1 
    Label3 := TLabel.Create ( Result) ;
    Label3.Parent  := GroupBox2;
    Label3.Left     := 170 ;
    Label3.Top      := 70 ;
    Label3.Width    := 58 ;
    Label3.Height   := 13 ;
    Label3.Visible  := TRUE ;
    Label3.Tag      := 0 ;
    Label3.Enabled   := TRUE ;
    Label3.Hint      := '' ;
    Label3.ShowHint  := FALSE ;
    Label3.Caption      := 'Мин.:' ;
    Label3.Transparent  := TRUE ;
    Label3.WordWrap     := FALSE ;
    Label3.Alignment    := taLeftJustify;
    Label3.Layout       := tlTop;
    Label3.AutoSize     := TRUE ;
    Label3.Align        := alNone;
    Label3.Font .Name    := 'Tahoma' ;
    Label3.Font .Size    := 8 ;
    Label3.Font .Color   := clWindowText;
    Label3.Color        := clBtnFace;
    //...................................... 
    //...................................... 
    //Edit1 
    Edit1 := TEdit.Create ( Result) ;
    Edit1.Parent  := GroupBox2;
    Edit1.Left     := 90 ;
    Edit1.Top      := 67 ;
    Edit1.Width    := 60 ;
    Edit1.Height   := 21 ;
    Edit1.Visible  := TRUE ;
    Edit1.Tag      := 0 ;
    Edit1.Enabled   := TRUE ;
    Edit1.Hint      := 'Введи желаемый уровень заточки' ;
    Edit1.ShowHint  := TRUE ;
    Edit1.Text        := '65535' ;
    Edit1.Font .Name   := 'Tahoma' ;
    Edit1.Font .Size   := 8 ;
    Edit1.Font .Color  := clWindowText;
    Edit1.Color         := clWindow;
    Edit1.TabOrder      := 5 ;
    Edit1.TabStop       := TRUE ;
    Edit1.ReadOnly      := FALSE ;
    Edit1.MaxLength     := 0 ;
    Edit1.AutoSize      := TRUE ;
    Edit1.OnExit      := @Edit1_Exit;
    //...................................... 
    //...................................... 
    //Edit2 
    Edit2 := TEdit.Create ( Result) ;
    Edit2.Parent  := GroupBox2;
    Edit2.Left     := 199 ;
    Edit2.Top      := 67 ;
    Edit2.Width    := 60 ;
    Edit2.Height   := 21 ;
    Edit2.Visible  := TRUE ;
    Edit2.Tag      := 0 ;
    Edit2.Enabled   := TRUE ;
    Edit2.Hint      := 'Какого уровня смогли достичь' ;
    Edit2.ShowHint  := TRUE ;
    Edit2.Text        := '0' ;
    Edit2.Font .Name   := 'Tahoma' ;
    Edit2.Font .Size   := 8 ;
    Edit2.Font .Color  := clWindowText;
    Edit2.Color         := clWindow;
    Edit2.TabOrder      := 5 ;
    Edit2.TabStop       := FALSE ;
    Edit2.ReadOnly      := TRUE ;
    Edit2.MaxLength     := 0 ;
    Edit2.AutoSize      := TRUE ;
    //...................................... 
    //...................................... 
    //Label2 
    Label2 := TLabel.Create ( Result) ;
    Label2.Parent  := GroupBox2;
    Label2.Left     := 416 ;
    Label2.Top      := 19 ;
    Label2.Width    := 18 ;
    Label2.Height   := 13 ;
    Label2.Visible  := TRUE ;
    Label2.Tag      := 0 ;
    Label2.Enabled   := TRUE ;
    Label2.Hint      := '' ;
    Label2.ShowHint  := FALSE ;
    Label2.Caption      := 'шт.' ;
    Label2.Transparent  := TRUE ;
    Label2.WordWrap     := FALSE ;
    Label2.Alignment    := taLeftJustify;
    Label2.Layout       := tlTop;
    Label2.AutoSize     := TRUE ;
    Label2.Align        := alNone;
    Label2.Font .Name    := 'Tahoma' ;
    Label2.Font .Size    := 8 ;
    Label2.Font .Color   := clWindowText;
    Label2.Color        := clBtnFace;
    //...................................... 
    //...................................... 
    //Label4 
    Label4 := TLabel.Create ( Result) ;
    Label4.Parent  := GroupBox2;
    Label4.Left     := 416 ;
    Label4.Top      := 43 ;
    Label4.Width    := 18 ;
    Label4.Height   := 13 ;
    Label4.Visible  := TRUE ;
    Label4.Tag      := 0 ;
    Label4.Enabled   := TRUE ;
    Label4.Hint      := '' ;
    Label4.ShowHint  := FALSE ;
    Label4.Caption      := 'шт.' ;
    Label4.Transparent  := TRUE ;
    Label4.WordWrap     := FALSE ;
    Label4.Alignment    := taLeftJustify;
    Label4.Layout       := tlTop;
    Label4.AutoSize     := TRUE ;
    Label4.Align        := alNone;
    Label4.Font .Name    := 'Tahoma' ;
    Label4.Font .Size    := 8 ;
    Label4.Font .Color   := clWindowText;
    Label4.Color        := clBtnFace;
    //...................................... 
    //...................................... 
    //Label12 
    Label12 := TLabel.Create ( Result) ;
    Label12.Parent  := GroupBox2;
    Label12.Left     := 273 ;
    Label12.Top      := 3 ;
    Label12.Width    := 33 ;
    Label12.Height   := 13 ;
    Label12.Visible  := TRUE ;
    Label12.Tag      := 0 ;
    Label12.Enabled   := TRUE ;
    Label12.Hint      := '' ;
    Label12.ShowHint  := FALSE ;
    Label12.Caption      := 'ItemID' ;
    Label12.Transparent  := TRUE ;
    Label12.WordWrap     := FALSE ;
    Label12.Alignment    := taLeftJustify;
    Label12.Layout       := tlTop;
    Label12.AutoSize     := TRUE ;
    Label12.Align        := alNone;
    Label12.Font .Name    := 'Tahoma' ;
    Label12.Font .Size    := 8 ;
    Label12.Font .Color   := clWindowText;
    Label12.Color        := clBtnFace;
    //...................................... 
    //...................................... 
    //Label13 
    Label13 := TLabel.Create ( Result) ;
    Label13.Parent  := GroupBox2;
    Label13.Left     := 349 ;
    Label13.Top      := 3 ;
    Label13.Width    := 35 ;
    Label13.Height   := 13 ;
    Label13.Visible  := TRUE ;
    Label13.Tag      := 0 ;
    Label13.Enabled   := TRUE ;
    Label13.Hint      := '' ;
    Label13.ShowHint  := FALSE ;
    Label13.Caption      := 'Кол-во' ;
    Label13.Transparent  := TRUE ;
    Label13.WordWrap     := FALSE ;
    Label13.Alignment    := taLeftJustify;
    Label13.Layout       := tlTop;
    Label13.AutoSize     := TRUE ;
    Label13.Align        := alNone;
    Label13.Font .Name    := 'Tahoma' ;
    Label13.Font .Size    := 8 ;
    Label13.Font .Color   := clWindowText;
    Label13.Color        := clBtnFace;
    //...................................... 
    //...................................... 
    //CheckBoxItem 
    CheckBoxItem := TCheckBox.Create ( Result) ;
    CheckBoxItem.Parent  := GroupBox2;
    CheckBoxItem.Left     := 18 ;
    CheckBoxItem.Top      := 18 ;
    CheckBoxItem.Width    := 66 ;
    CheckBoxItem.Height   := 17 ;
    CheckBoxItem.Visible  := TRUE ;
    CheckBoxItem.Tag      := 0 ;
    CheckBoxItem.Enabled   := TRUE ;
    CheckBoxItem.Hint      := 'Поставить галочку если выбрали предмет' ;
    CheckBoxItem.ShowHint  := TRUE ;
    CheckBoxItem.Caption     := 'Предмет' ;
    CheckBoxItem.Font .Name   := 'Tahoma' ;
    CheckBoxItem.Font .Size   := 8 ;
    CheckBoxItem.Font .Color  := clWindowText;
    CheckBoxItem.Color        := clBtnFace;
    CheckBoxItem.TabOrder     := 0 ;
    CheckBoxItem.TabStop      := TRUE ;
    CheckBoxItem.Checked      := FALSE ;
    CheckBoxItem.AllowGrayed  := FALSE ;
    CheckBoxItem.State        := cbUnchecked;
    CheckBoxItem.OnClick      := @CheckBoxItem_Click;
    //...................................... 
    //...................................... 
    //ComboBoxItem 
    ComboBoxItem := TComboBox.Create ( Result) ;
    ComboBoxItem.Parent  := GroupBox2;
    ComboBoxItem.Left     := 90 ;
    ComboBoxItem.Top      := 16 ;
    ComboBoxItem.Width    := 169 ;
    ComboBoxItem.Height   := 21 ;
    ComboBoxItem.Visible  := TRUE ;
    ComboBoxItem.Tag      := 0 ;
    ComboBoxItem.Enabled   := TRUE ;
    ComboBoxItem.Hint      := 'Выбери из списка затачиваемый предмет' ;
    ComboBoxItem.ShowHint  := TRUE ;
    ComboBoxItem.Text        := 'ComboBoxItem' ;
    ComboBoxItem.Font .Name   := 'Tahoma' ;
    ComboBoxItem.Font .Size   := 8 ;
    ComboBoxItem.Font .Color  := clWindowText;
    ComboBoxItem.Color           := clWindow;
    ComboBoxItem.TabOrder        := 1 ;
    ComboBoxItem.TabStop         := TRUE ;
    ComboBoxItem.ItemIndex           := -1 ;
    ComboBoxItem.Sorted          := FALSE ;
    ComboBoxItem.ItemHeight      := 13 ;
    ComboBoxItem.OnClick      := @ComboBoxItem_Click;
    //...................................... 
    //...................................... 
    //ButtonStartEnchant 
    ButtonStartEnchant := TButton.Create ( Result) ;
    ButtonStartEnchant.Parent  := GroupBox2;
    ButtonStartEnchant.Left     := 265 ;
    ButtonStartEnchant.Top      := 67 ;
    ButtonStartEnchant.Width    := 75 ;
    ButtonStartEnchant.Height   := 25 ;
    ButtonStartEnchant.Visible  := TRUE ;
    ButtonStartEnchant.Tag      := 0 ;
    ButtonStartEnchant.Enabled   := TRUE ;
    ButtonStartEnchant.Hint      := '' ;
    ButtonStartEnchant.ShowHint  := FALSE ;
    ButtonStartEnchant.Caption     := 'Start' ;
    ButtonStartEnchant.Font .Name   := 'Tahoma' ;
    ButtonStartEnchant.Font .Size   := 8 ;
    ButtonStartEnchant.Font .Color  := clWindowText;
    ButtonStartEnchant.Font .CharSet  := 1 ;
    ButtonStartEnchant.TabOrder      := 2 ;
    ButtonStartEnchant.TabStop       := TRUE ;
    ButtonStartEnchant.Cancel        := FALSE ;
    ButtonStartEnchant.ModalResult   := 0 ;
    ButtonStartEnchant.OnClick      := @ButtonStartEnchant_Click;
    //...................................... 
    //...................................... 
    //ButtonStopEnchant 
    ButtonStopEnchant := TButton.Create ( Result) ;
    ButtonStopEnchant.Parent  := GroupBox2;
    ButtonStopEnchant.Left     := 341 ;
    ButtonStopEnchant.Top      := 67 ;
    ButtonStopEnchant.Width    := 75 ;
    ButtonStopEnchant.Height   := 25 ;
    ButtonStopEnchant.Visible  := TRUE ;
    ButtonStopEnchant.Tag      := 0 ;
    ButtonStopEnchant.Enabled   := TRUE ;
    ButtonStopEnchant.Hint      := '' ;
    ButtonStopEnchant.ShowHint  := FALSE ;
    ButtonStopEnchant.Caption     := 'Stop' ;
    ButtonStopEnchant.Font .Name   := 'Tahoma' ;
    ButtonStopEnchant.Font .Size   := 8 ;
    ButtonStopEnchant.Font .Color  := clWindowText;
    ButtonStopEnchant.Font .CharSet  := 1 ;
    ButtonStopEnchant.TabOrder      := 3 ;
    ButtonStopEnchant.TabStop       := TRUE ;
    ButtonStopEnchant.Cancel        := FALSE ;
    ButtonStopEnchant.ModalResult   := 0 ;
    ButtonStopEnchant.OnClick      := @ButtonStopEnchant_Click;
    //...................................... 
    //...................................... 
    //CheckBoxScroll 
    CheckBoxScroll := TCheckBox.Create ( Result) ;
    CheckBoxScroll.Parent  := GroupBox2;
    CheckBoxScroll.Left     := 18 ;
    CheckBoxScroll.Top      := 41 ;
    CheckBoxScroll.Width    := 66 ;
    CheckBoxScroll.Height   := 23 ;
    CheckBoxScroll.Visible  := TRUE ;
    CheckBoxScroll.Tag      := 0 ;
    CheckBoxScroll.Enabled   := TRUE ;
    CheckBoxScroll.Hint      := 'Поставить галочку если выбрали скролл заточки' ;
    CheckBoxScroll.ShowHint  := TRUE ;
    CheckBoxScroll.Caption     := 'Заточка' ;
    CheckBoxScroll.Font .Name   := 'Tahoma' ;
    CheckBoxScroll.Font .Size   := 8 ;
    CheckBoxScroll.Font .Color  := clWindowText;
    CheckBoxScroll.Color        := clBtnFace;
    CheckBoxScroll.TabOrder     := 4 ;
    CheckBoxScroll.TabStop      := TRUE ;
    CheckBoxScroll.Checked      := FALSE ;
    CheckBoxScroll.AllowGrayed  := FALSE ;
    CheckBoxScroll.State        := cbUnchecked;
    CheckBoxScroll.OnClick      := @CheckBoxScroll_Click;
    //...................................... 
    //...................................... 
    //ComboBoxScroll 
    ComboBoxScroll := TComboBox.Create ( Result) ;
    ComboBoxScroll.Parent  := GroupBox2;
    ComboBoxScroll.Left     := 90 ;
    ComboBoxScroll.Top      := 40 ;
    ComboBoxScroll.Width    := 169 ;
    ComboBoxScroll.Height   := 21 ;
    ComboBoxScroll.Visible  := TRUE ;
    ComboBoxScroll.Tag      := 0 ;
    ComboBoxScroll.Enabled   := TRUE ;
    ComboBoxScroll.Hint      := 'Выбери из списка скролл заточки' ;
    ComboBoxScroll.ShowHint  := TRUE ;
    ComboBoxScroll.Text        := 'ComboBoxScroll' ;
    ComboBoxScroll.Font .Name   := 'Tahoma' ;
    ComboBoxScroll.Font .Size   := 8 ;
    ComboBoxScroll.Font .Color  := clWindowText;
    ComboBoxScroll.Color           := clWindow;
    ComboBoxScroll.TabOrder        := 5 ;
    ComboBoxScroll.TabStop         := TRUE ;
    ComboBoxScroll.ItemIndex           := -1 ;
    ComboBoxScroll.Sorted          := FALSE ;
    ComboBoxScroll.ItemHeight      := 13 ;
    ComboBoxScroll.OnClick      := @ComboBoxScroll_Click;
    //...................................... 
    //...................................... 
    //EditItemVal 
    EditItemVal := TEdit.Create ( Result) ;
    EditItemVal.Parent  := GroupBox2;
    EditItemVal.Left     := 341 ;
    EditItemVal.Top      := 16 ;
    EditItemVal.Width    := 72 ;
    EditItemVal.Height   := 21 ;
    EditItemVal.Visible  := TRUE ;
    EditItemVal.Tag      := 0 ;
    EditItemVal.Enabled   := TRUE ;
    EditItemVal.Hint      := '' ;
    EditItemVal.ShowHint  := FALSE ;
    EditItemVal.Text        := '0' ;
    EditItemVal.Font .Name   := 'Tahoma' ;
    EditItemVal.Font .Size   := 8 ;
    EditItemVal.Font .Color  := clWindowText;
    EditItemVal.Color         := clWindow;
    EditItemVal.TabOrder      := 6 ;
    EditItemVal.TabStop       := TRUE ;
    EditItemVal.ReadOnly      := TRUE ;
    EditItemVal.MaxLength     := 0 ;
    EditItemVal.AutoSize      := TRUE ;
    //...................................... 
    //...................................... 
    //EditScrollVal 
    EditScrollVal := TEdit.Create ( Result) ;
    EditScrollVal.Parent  := GroupBox2;
    EditScrollVal.Left     := 341 ;
    EditScrollVal.Top      := 40 ;
    EditScrollVal.Width    := 72 ;
    EditScrollVal.Height   := 21 ;
    EditScrollVal.Visible  := TRUE ;
    EditScrollVal.Tag      := 0 ;
    EditScrollVal.Enabled   := TRUE ;
    EditScrollVal.Hint      := '' ;
    EditScrollVal.ShowHint  := FALSE ;
    EditScrollVal.Text        := '0' ;
    EditScrollVal.Font .Name   := 'Tahoma' ;
    EditScrollVal.Font .Size   := 8 ;
    EditScrollVal.Font .Color  := clWindowText;
    EditScrollVal.Color         := clWindow;
    EditScrollVal.TabOrder      := 7 ;
    EditScrollVal.TabStop       := TRUE ;
    EditScrollVal.ReadOnly      := TRUE ;
    EditScrollVal.MaxLength     := 0 ;
    EditScrollVal.AutoSize      := TRUE ;
    //...................................... 
    //...................................... 
    //EditScrollOID 
    EditScrollOID := TEdit.Create ( Result) ;
    EditScrollOID.Parent  := GroupBox2;
    EditScrollOID.Left     := 263 ;
    EditScrollOID.Top      := 40 ;
    EditScrollOID.Width    := 72 ;
    EditScrollOID.Height   := 21 ;
    EditScrollOID.Visible  := TRUE ;
    EditScrollOID.Tag      := 0 ;
    EditScrollOID.Enabled   := TRUE ;
    EditScrollOID.Hint      := '' ;
    EditScrollOID.ShowHint  := FALSE ;
    EditScrollOID.Text        := '0' ;
    EditScrollOID.Font .Name   := 'Tahoma' ;
    EditScrollOID.Font .Size   := 8 ;
    EditScrollOID.Font .Color  := clWindowText;
    EditScrollOID.Color         := clWindow;
    EditScrollOID.TabOrder      := 8 ;
    EditScrollOID.TabStop       := TRUE ;
    EditScrollOID.ReadOnly      := TRUE ;
    EditScrollOID.MaxLength     := 0 ;
    EditScrollOID.AutoSize      := TRUE ;
    //...................................... 
    //...................................... 
    //EditItemOID 
    EditItemOID := TEdit.Create ( Result) ;
    EditItemOID.Parent  := GroupBox2;
    EditItemOID.Left     := 264 ;
    EditItemOID.Top      := 16 ;
    EditItemOID.Width    := 72 ;
    EditItemOID.Height   := 21 ;
    EditItemOID.Visible  := TRUE ;
    EditItemOID.Tag      := 0 ;
    EditItemOID.Enabled   := TRUE ;
    EditItemOID.Hint      := '' ;
    EditItemOID.ShowHint  := FALSE ;
    EditItemOID.Text        := '0' ;
    EditItemOID.Font .Name   := 'Tahoma' ;
    EditItemOID.Font .Size   := 8 ;
    EditItemOID.Font .Color  := clWindowText;
    EditItemOID.Color         := clWindow;
    EditItemOID.TabOrder      := 9 ;
    EditItemOID.TabStop       := TRUE ;
    EditItemOID.ReadOnly      := TRUE ;
    EditItemOID.MaxLength     := 0 ;
    EditItemOID.AutoSize      := TRUE ;
    //...................................... 
    Yes := TRUE ;
  FINALLY 
    if  not  Yes then  begin 
       //Освобождаем ресурсы, если неудачно ... 
       if  Result<>NIL then  begin 
          Result.Free ;
          Result:=NIL ;
       end ;
    end ;
  END ;
  msg.Lines .Add ( 'Автоматизация заточки by NLObP!' ) ;
  Result.Show ;
end ; //Create_FormMain 
//======================== 
//======================== 
procedure  Init; //Вызывается при включении скрипта 
var 
  i:integer ;
begin 
  FormMain:=Create_FormMain;
  //Enchant:=false; 
  CurEnchLvl:=0 ;
  timer:=TTimer.Create ( nil ) ;
  timer.OnTimer :=@OnTimer;
  timer.enabled :=false ;
  timer.interval :=5000 ; //время задержки 
  ready:=false ;
  add:=false ;
  //Пакет RequestItemList 
  buf:=hstr( '14' ) ;
  SendToServer;
  StringList:=TStringList .Create ;
  ItemsName:=TStringList .Create ;
  try 
    ItemsName.LoadFromFile ( 'itemsid.ini' ) ;
  except 
    msg.Lines .Add ( 'itemsid.ini не найден!' ) ;
    exit ;
  end ;
end ;
//...................................... 
//****************************************************************************** 
procedure  Free; //Вызывается при выключении скрипта 
begin 
//  ItemBase:=nil; //нельзя так делать с массивом 
  timer.Free ;
  StringList.Clear ;
  ItemsName.Clear ;
  //достаточно освободить форму 
  Free_FormMain;
end ;
//...................................... 
//****************************************************************************** 
procedure  Say( msg:string ) ;
begin 
  buf:=hstr( '4A 00 00 00 00' ) ;
  WriteD( 2 ) ;
  WriteS( Name) ;
  WriteS( msg) ;
  SendToClient;
end ;
//...................................... 
//*************************************************************** 
procedure  CreateItemBase; //пакет 1B, Создает базу ObjectID по ItemID 
//1B=ItemListPacket:w(window)w(ListCount)w(itemType1)h(ObjectID)i(ItemID)d(count)w(itemType2)w(CustType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(CustType2)d(Augment)d(--) 
var 
  i, j, ListCount: integer ;
begin 
  for  i:=1  to  max  do  begin 
    //очищаем масив 
    ItemBase[1 ,i]:=0 ;     //OID 
    ItemBase[2 ,i]:=0 ;    //ID 
    ItemBase[3 ,i]:=0 ;   //kol-vo 
    ItemBase[4 ,i]:=0 ;  //lvl 
  end ;
  j:=4 ; //смещение для ListCount 
  ListCount:=ReadH( j) ; //количество итемов не должно превышать max! 
  //if ListCount>maxitems then msg.Lines.Add('Внимание! Не все вещи влезли в массив. ListCount>Max='+IntToStr(ListCount)+'/'+IntToStr(maxitems)); 
  j:=8 ; //смещение для ObjectID 
  //Пробегаем по Инвентарю и сохраняем ObjectID соответствующие необходимым ItemID 
  for  i:=1  to  ListCount do  begin 
    itemBase[1 ,i]:=ReadD( j) ;    //OID 
    itemBase[2 ,i]:=ReadD( j) ;   //ItemID 
//-------Изменен формат пакета в камаеле 
   ReadD( j) ;
//--------------------------------- 
  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,44 )  else  inc ( j,8 ) ; // так же изменены смещения в связи с добавлением новых свойств итемов 
    msg.Lines .Add ( 'j=' +inttostr ( j) ) ;
  end ;
  //вносим изменения в чекбоксы 
  StringList.Clear ;
  try 
    for  i:=1  to  ListCount do  begin 
      try 
        //StringList.Add(ItemsName[ItemBase[2,i]-1]); //записываем название вещей из инвентаря 
        StringList.Add ( ItemsName.Values [IntToStr( ItemBase[2 ,i]) ]) ; //записываем название вещей из инвентаря 
      except ;
        msg.Lines .Add ( 'Пропускаем! Нет ItemID=' +inttostr ( ItemBase[2 ,i]) +' в itemsid.ini' ) ;
      end 
    end ;
  except ;
    msg.Lines .Add ( 'ошибка в CreateItemBase->StringList.Add()' ) ;
    msg.Lines .Add ( inttostr ( ItemBase[2 ,i]) ) ;
    exit ;
  end ;
  if  not  CheckBoxItem.Checked  then  begin  //наполняем комбобокс 
    with  ComboBoxItem do 
    begin 
      Items.Clear ;
      Items.Assign ( StringList) ;
      ItemIndex:=0 ;
    end ;
  end ;
  if  not  CheckBoxScroll.Checked  then  begin  //наполняем комбобокс 
    with  ComboBoxScroll do 
    begin 
      Items.Clear ;
      Items.Assign ( StringList) ;
      ItemIndex:=0 ;
    end ;
  end ;
end ;
//...................................... 
//****************************************************************************** 
//27=InventoryUpdate:w(count)w(1add2mod3remove)w(itemType1)d(ObjectID)i(ItemId)d(Count)w(itemType2)w(cusType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(cusType2)-(8) 
procedure  InventoryUpdate; //пакет 27, обновляет базу ObjectID по ItemID 
var 
  i, ii, j, ItemOID, ItemID, ItemCount, ListCount, UpdType, Itemlvl: integer ;
  add : boolean ;
begin 
  add:=false ;
  ListCount:=ReadH( 2 ) ; //количество итемов 
  //Пробегаем по Инвентарю и сохраняем пары ObjectID - lvl 
  j:=4 ; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален 
  for  ii:=1  to  ListCount do  begin 
    UpdType:=ReadH( j) ;
    //inc(j,2); 
    ReadH( j) ;               //ItemType1 
    ItemOID:=ReadD( j) ;     //ObjectID 
    ItemID:=ReadD( j) ;     //ItemID 
    Readd( j) ;
    itemCount:=ReadD( j) ; //кол-во 
    inc ( j,10 ) ;
    Itemlvl:=ReadH( j) ;
    case  UpdType of 
      //добавлен 
      1 : begin 
         for  i:=1  to  max  do  begin 
           if  ( ItemBase[1 ,i]=0 )  and  ( add=false )  then  begin 
             ItemBase[1 ,i]:=ItemOID;
             ItemBase[2 ,i]:=ItemID;
             ItemBase[3 ,i]:=ItemCount;
             ItemBase[4 ,i]:=Itemlvl;
             msg.Lines .Add ( 'Добавили предмет!' ) ;
             msg.Lines .Add ( 'i=' +inttostr ( i) +' ItemOID=' +IntToStr ( ItemBase[1 ,i]) +' ItemID=' +IntToStr ( ItemBase[2 ,i]) +' ItemKol=' +IntToStr ( ItemBase[3 ,i]) +' ItemLVL=' +IntToStr ( ItemBase[4 ,i]) ) ;
             add:=true ;
           end ;
         end ;
      end ;
      //изменен 
      2 : begin 
         for  i:=1  to  max  do  begin 
           if  ItemBase[1 ,i]=ItemOID then  begin 
             ItemBase[3 ,i]:=ItemCount;
             ItemBase[4 ,i]:=Itemlvl;
             msg.Lines .Add ( 'Изменяем параметры предмета!' ) ;
             msg.Lines .Add ( 'i=' +inttostr ( i) +' ItemOID=' +IntToStr ( ItemBase[1 ,i]) +' ItemID=' +IntToStr ( ItemBase[2 ,i]) +' ItemKol=' +IntToStr ( ItemBase[3 ,i]) +' ItemLVL=' +IntToStr ( ItemBase[4 ,i]) ) ;
           end ;
         end ;
      end ;
      //удален 
      3 : begin 
         for  i:=1  to  max  do  begin 
           if  ItemBase[1 ,i]=ItemOID then  begin 
             msg.Lines .Add ( 'Удаляем предмет!' ) ;
             msg.Lines .Add ( 'i=' +inttostr ( i) +' ItemOID=' +IntToStr ( ItemBase[1 ,i]) +' ItemID=' +IntToStr ( ItemBase[2 ,i]) +' ItemKol=' +IntToStr ( ItemBase[3 ,i]) +' ItemLVL=' +IntToStr ( ItemBase[4 ,i]) ) ;
             ItemBase[1 ,i]:=0 ;
             ItemBase[2 ,i]:=0 ;
             ItemBase[3 ,i]:=0 ;
             ItemBase[4 ,i]:=0 ;
           end ;
         end ;
      end ;
    end ;
    if  interlude then  inc ( j,10 )  else  inc ( j,2 ) ;   //для С4 неправильно? 
    //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 ) ;  //#$19 kamael 
begin 
  buf:=#$19 ;
  WriteD( ObjectID) ;
  WriteD( 0 ) ;
  SendToServer;
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 ) ; //5F kamael 
begin 
  buf:=#$5F;
  WriteD( ObjectID) ;
  SendToServer;
  //*********** использовать чит с петом ************************ 
{  buf:=#$8B;
  WriteD(ObjectID);
  writed(1);
  SendToServerEx(Name);
}   //*********** 
end ;
//...................................... 
{//***************************************************************
function ExtractIDValues(sData: string): integer;
var
  s: string;
  i,j: integer;
begin
  i:=0;
  s:=sData;
  i:=pos('=',s);
  if i>=0 then
    s:=copy(s,1,i-1);
  try
    result:=strtoint(s);
  except
    result:=0;
  end;
end;
//............................................} 
//****************************************************************************** 
procedure  OnTimer( Sender: TObject ) ;
begin 
  EditItemVal.text :=inttostr ( sumitem( ItemID) ) ;
  EditScrollVal.text :=inttostr ( sumitem( ScrollID) ) ;
  if  ( CurEnchLvl>=strtoint ( Edit1.Text ) )  then  begin 
    msg.Lines .Add ( 'Нечего точить! Прервано!' ) ;
    timer.enabled :=false ;
    exit ;
  end ;
  if  ( sumitem( ItemID) <=1 )  then  begin 
//  if (sumitem(ItemID)<=0) then begin //если надо точить одну вещь 
    msg.Lines .Add ( 'Прервано!' ) ;
    timer.enabled :=false ;
    exit ;
  end ;
  ScrollOID:=GetItem( ScrollID,0 ) ;
  if  ScrollOID=0  then  begin 
    msg.Lines .Add ( 'Нет заточки! Прервано!' ) ;
    timer.enabled :=false ;
    exit ;
  end ;
  UseItem( ScrollOID) ;
  msg.Lines .Add ( 'Задействовали скролл ScrollID=' +IntToStr ( scrollID) +' ScrollOID=' +IntToStr ( ScrollOID) ) ;
  ready:=true ; //готовы затачивать 
//    delay(1000); 
//    RequestEnchantItem(Item); 
//    delay(1000); 
    //************************************************ 
//    msg.Lines.Add('Пробуем улучшить ItemID='+IntToStr(Item)); 
//  end; 
end ;
//...................................... 
//****************************************************************************** 
// вызывается при приходе каждого пакета, если скрипт включен 
//****************************************************************************** 
begin 
  //**************************************************************************** 
  //не обрабатываем пустые пакеты 
  if  pck=''  then  exit ;
  //**************************************************************************** 
  if  FromServer then 
  case  pck[1 ] of 
     //...................................... 
    //Пакет ItemList 
    #$11 : CreateItemBase; //создание базы предметов 
     //...................................... 
    //если удалили предметы, стираем в базе предметов пары ObjectID - ItemID 
    #$21 : InventoryUpdate; //Обновление базы 
     //...................................... 
    //Пакет ChooseInventory 
    #$7C: if  ready then  begin  //and (readd(2)=itemid) 
      //ищем подходящий предмет для заточки 
      timer.enabled :=false ; //отключаем пока не найдем предмет для заточки 
      repeat 
        ItemOID:=GetItem( ItemID,CurEnchLvl) ;
        if  ItemOID=0  then  begin 
          inc ( CurEnchLvl) ;
          Edit2.text :=inttostr ( CurEnchLvl) ;
        end ;
      until  ItemOID<>0 ;
      //************************************************ 
      msg.Lines .Add ( 'Пробуем улучшить ItemID=' +IntToStr ( ItemID) +' ItemOID=' +IntToStr ( ItemOID) ) ;
      RequestEnchantItem( ItemOID) ;
      ready:=false ;
      timer.enabled :=true ; //пока в тесте отключаем (вкл. после заточки предмета) 
    end ;
    #$87 : if  readd( 2 ) =0  then  begin 
          CurEnchLvl:=0 ; //начнем с начала 
    end ;
  end ;
end .
 			
				Последний раз редактировалось Breadfan, 06.08.2008 в 00:19 .
				Причина: Добавлено сообщение
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение Breadfan нажился спасибкой от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#23  
	
 
	
			
            
			
			Новичок
			
			
		
			
				
			
			
			
				 
				Регистрация: 06.08.2008
				
				
				
					Сообщений: 27
				
				 
	Сказал Спасибо: 8
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				 
			
	Цитата:
	
	
		
			
				
					Сообщение от 
NLObP 
					Сделать что бы покупал можно, но это для каждого сервера будет немного по своему, поэтому делать не буду.
			
		 
	 
	
 Приветствую! Спасибо большое за скрипт!
Если все вручную закупать, то все точит без проблем. Но, вот какая ситуация была. У меня в инвентаре лежали несколько уже заточеных  АС+10. В скрипте я поставил точить до +10, и закупил +0 и заточки. Когда он переломал все что точил, то начал точить те самые +10 что уже были. Хорошо хоть не все переломал. На следующем кругу он их точнул до +12. Вот такой небольшой косяк. 
Далее. Чтобы зайти на мой серв ботом, нужно использовать WP со скриптиком в PPC. Соотвественно когда я пытаюсь подконектится с включенным L2PH, то он рвет то соединение, патчит, и делает новое, но бот уже пишет Link LoginServer failed. Как бы мне L2HP к боту прикрутить? С клиентом работает без проблем.
И последнее, по поводу закупки заточек и шмота. ID продавцов я знаю, скрипт смотрел... но там кусок от рыбалки, и как его прикрутить на ГМшоп, я так и не понял. Чем бы мне посмотреть bypass HTML шопа? Старые боты не конектятся к серву, а новый не работает с HTML Reader'ом WP.
Еще раз спасибо за скрипт!
 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#24  
	
 
	
			
            
			
			Новичок
			
			
		
			
				
			
			
			
				 
				Регистрация: 06.08.2008
				
				
				
					Сообщений: 27
				
				 
	Сказал Спасибо: 8
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				 
			Вообщем начал потихоньку разбираться со скриптами. Прикрутил закупку заточек. Но вот с взятием в таргет так и не разобрался. Автотаргет не работает, так как кот(магазин) меня не атакует.
Вот собственно кусок на закупку:
	delphi Код:
	//04=Action:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ)b(ShiftFlag) 
procedure  Roy;//(Attacker: Integer); 
begin 
  buf:=#$04 ;
  WriteD( 1209014909 ) ;
  WriteD( 107977 ) ;
  WriteD( 218146 ) ;
  WriteD( -3672 ) ;
  WriteC( 00 ) ;
  SendToServerEx( 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; 
end ;
//*************************************************************** 
procedure  BuyEnchScroll;
begin 
  RequestByPassToServer( 'menu_select?ask=-303&reply=559' ) ;
  delay( 500 ) ;
  RequestMultiSellItem( 559 ,17 ,1 ) ;
  delay( 500 ) ;
end ;
//Дальше в скрипте ------------------ 
      //************************************************ 
      msg.Lines .Add ( 'Пробуем улучшить ItemID=' +IntToStr ( ItemID) +' ItemOID=' +IntToStr ( ItemOID) ) ;
      RequestEnchantItem( ItemOID) ;
      ready:=false ;
      timer.enabled :=true ; //пока в тесте отключаем (вкл. после заточки предмета) 
//*** Закупка *** 
      delay( 250 ) ;
      RequestMultiSellItem( 559 ,17 ,1 ) ;   //Scroll S Weapon 
      delay( 250 ) ;
//*** 
    end ;
    #$81 : if  readd( 2 ) =0  then  begin 
          CurEnchLvl:=0 ; //начнем с начала 
         // BuyEnchScroll; 
//--------------------------------------  
 
 
Вообщем закупается одна заточка при открытом диалоговом окне с заточками.
Еще хочу прикрутить проверку кол-ва Аден, и подходить к другому коту и менять их. И дальше точить. Но опять все упирается в таргет.
Код надо в теги [ HIGHLIGHT ] обрамлять (правая решетка с параметром delphi) 
				__________________
		
		
		
		
		
		
		
						
				Последний раз редактировалось NLObP, 07.08.2008 в 14:16 .
				
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение Shadow нажился спасибкой от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#25  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			Пока могу посоветовать в скрипт рыбалки заглянуть. Там реализовано продажа/покупка/мультиселл обмен.
		
	
		
		
		
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение NLObP нажился спасибкой от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#26  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 29.04.2008
				
				
				
					Сообщений: 830
				
				 
	Сказал Спасибо: 80
	
		
			
				Имеет 230 спасибок в 169 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	Цитата:
	
	
		
			
				
					Сообщение от 
Shadow 
					Но вот с взятием в таргет так и не разобрался. Автотаргет не работает, так как кот(магазин) меня не атакует.
			
		 
	 
	
 А что мешает встать у кота, взять его в таргет и только потом стартовать скрипт? Я делал авто покупку, просто вставив посылку на покупку 50 точек через каждые 50 циклов затачивания.
 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение Breadfan нажился спасибкой от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#27  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	Цитата:
	
	
		
			
				
					Сообщение от 
Breadfan 
					А что мешает встать у кота, взять его в таргет и только потом стартовать скрипт? Я делал авто покупку, просто вставив посылку на покупку 50 точек через каждые 50 циклов затачивания.
			
		 
	 
	
 А если надо оружие и заточки у двух продавцов покупать, а если они далеко друг от друга? Значит и бег как в рыбалке приделывать?
 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение NLObP нажился 2 спасибками от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#28  
	
 
	
			
            
			
			Новичок
			
			
		
			
				
			
			
			
				 
				Регистрация: 06.08.2008
				
				
				
					Сообщений: 27
				
				 
	Сказал Спасибо: 8
	
		
			
				Имеет 11 спасибок в 7 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	Цитата:
	
	
		
			
				
					Сообщение от 
NLObP 
					Пока могу посоветовать в скрипт рыбалки заглянуть. Там реализовано продажа/покупка/мультиселл обмен.
			
		 
	 
	
 Да чет смотрел, там все через Аттакера, а как аттакера прикрутить, я так и не понял.
	Цитата:
	
	
		
			
				
					Сообщение от 
Breadfan 
					А что мешает встать у кота, взять его в таргет и только потом стартовать скрипт? Я делал авто покупку, просто вставив посылку на покупку 50 точек через каждые 50 циклов затачивания.
			
		 
	 
	
 Мешает то что закупка шмота у одного кота, а обмен денег у другого. В моей реализации и так происходит постоянная закупка заточек при открытом диалоге.
	Цитата:
	
	
		
			
				
					Сообщение от 
NLObP 
					А если надо оружие и заточки у двух продавцов покупать, а если они далеко друг от друга? Значит и бег как в рыбалке приделывать?
			
		 
	 
	
 В принципе это нада бы сделать, но у меня все проще. Мой чар стоит как раз между котами, и только поворачивается при ретаргетинге. Так что передвижения не нужны. Главное таргет кидать.
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#29  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				 
			
	Цитата:
	
	
		
			
				
					Сообщение от 
bYr 
					можете выложить полный скрипт с примером на скупку.
			
		 
	 
	
 Вот 
здесь  пример на продажу. По аналогии можно в покупку переделать.
Добавлено через 4 минуты 
	Цитата:
	
	
		
			
				
					Сообщение от 
Shadow 
					В принципе это нада бы сделать, но у меня все проще. Мой чар стоит как раз между котами, и только поворачивается при ретаргетинге. Так что передвижения не нужны. Главное таргет кидать.
			
		 
	 
	
 Для таргета нужно знать ObjectId продавцов. Вот их отловить и есть небольшая проблема. В рыбалке есть, как отлавливать фишерманов.
	delphi Код:
	//*************************************************************** 
      //16=NpcInfo:d(ObjectID)d(NpcTypeID)d(IsAttackable)d(X)d(Y)d(Z)d(Heading) 
      //d(d)d(Maspd)d(Paspd)d(runSpd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRSpd) 
      //d(flWSpd)d(FlyRSpd)d(FlyWSpd)f(ProperMul)f(Paspd)f(CollisRadius) 
      //f(CollisHeight)d(RHand)d(d)d(LHand)b(nameabove)b(isRun)b(isInFight) 
      //b(isAlikeDead)b(isSummoned)s(Name)s(Title)d(d)d(d)d(karma)d(abnEffect) 
      //d(d)d(d)d(d)d(d)b(c)b(Team)f(collisRadius)f(collisHeight)d(d) 
      #$16 : begin 
        msg.Lines .Add ( 'S>Пакет NpcInfo #$16' +inttostr ( ReadD( 2 ) ) ) ;
        //        OID       ID 
        AppendNpc( ReadD( 2 ) , ReadD( 6 ) ) ; //добавляем в базу данных 
        if  ( FishermanID=ReadD( 6 ) -kID)  then  begin 
          EditFishermanOID.text :=inttostr ( ReadD( 2 ) ) ;
          FishermanOID:=strtoint ( EditFishermanOID.text ) ;
          if  java then  begin 
            //java 
            getbuylist:='npc_' +inttostr ( FishermanOID) +'_Buy 411' ;
            getselllist:='npc_' +inttostr ( FishermanOID) +'_Sell' ;
            getmultisell:='npc_' +inttostr ( FishermanOID) +'_multisell 009' ;
          end ;
        end ;
      end ;
 
потом можно выбирать его
	delphi Код:
	//*************************************************************** 
//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( Attacker: Integer ) ;
begin 
  msg.Lines .Add ( 'ObjectID=' +IntToStr ( Attacker) +' Player=' +IntToStr ( MyOID) ) ;
  fishin.enabled :=false ;
  Target( ObjectID) ;
  delay( 800 ) ;
  Target( ObjectID) ;
  delay( 800 ) ;
end ;
//......................................  
 
 			
				Последний раз редактировалось NLObP, 07.08.2008 в 18:02 .
				Причина: Добавлено сообщение
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение NLObP нажился 3 спасибками от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#30  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 29.04.2008
				
				
				
					Сообщений: 830
				
				 
	Сказал Спасибо: 80
	
		
			
				Имеет 230 спасибок в 169 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			Можно отследить по пакету action, ну это можно сделать чтобы раз и навсегда привязаться к определенному продавцу
		
	
		
		
		
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
		
 
	
		
 
  
	
		
	
		 
 
 
	
		
		Вы не можете  создавать темы
		Вы не можете  отвечать на сообщения
		Вы не можете  прикреплять файлы
		Вы не можете  редактировать сообщения
		HTML код Выкл. 
	  
 
	 
	
		
	 
 
Часовой пояс GMT +4, время: 13:48 .
		 	
	 
 
	
	
	
	vBulletin style designed by 
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: 
zCarot 
	
 
 
 
 
Вы хотите чувствовать себя в безопасности? чоп  Белган обеспечит её!