Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 29.05.2008, 19:29   #1
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Скрипт на заточку

Автоматизация заточки предметов до необходимого уровня by NLObP

Возможности скрипта
--------------------
+ Панель управления;
+ Затачиваем по очереди все предметы с ItemID пока не переломаем
или не заточим. Один предмет всегда остаётся.

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

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


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

by NLObP
для С4 и Интерлюдии можно взять здесь
для Грации можно взять здесь

by Breadfan
скрипт переделанный под камаель (с автопокупкой).

by Shadow
Скрипт заточки предметов с их закупкой при необходимости

Этот скрипт помогает в рутине, когда разрешено пользователям 100% точить до большой величины, скажем до +200, ручками то замучаешься точить.

PS: скрипты - это облегчение рутинной работы человека.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.JPG
Просмотров: 14769
Размер:	24.8 Кб
ID:	39  
Вложения
Тип файла: rar breadfan_enchant.rar (5.9 Кб, 4227 просмотров)
Тип файла: rar credo_enchant.rar (2.7 Кб, 2349 просмотров)
Тип файла: zip enchant_by_NLObP_01.zip (7.4 Кб, 2861 просмотров)
Тип файла: zip enchant_by_NLObP_02.zip (71.6 Кб, 1458 просмотров)
Тип файла: zip enchant_by_NLObP_03.zip (71.8 Кб, 1262 просмотров)
Тип файла: zip enchant_by_NLObP_04.zip (73.3 Кб, 1592 просмотров)
Тип файла: zip enchant_by_NLObP_06.zip (9.4 Кб, 1264 просмотров)
Тип файла: zip enchant_by_NLObP_07.zip (9.4 Кб, 1569 просмотров)
Тип файла: rar enchant_by_NLObP_08.rar (6.3 Кб, 1857 просмотров)
Тип файла: rar enchant_by_NLObP_09.rar (6.3 Кб, 5540 просмотров)
Тип файла: rar shadow_enchant.rar (9.6 Кб, 3672 просмотров)

Последний раз редактировалось NLObP, 31.08.2009 в 01:20.
NLObP вне форума   Ответить с цитированием
За это сообщение 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
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Shadow, выложи скрипт целиком, в первый свой пост, где скрипт основной, или в конец темы. Тяжело разобраться, где и что должно быть из кусков.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 17.08.2008, 01:14   #52
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
Лампочка 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 вне форума   Ответить с цитированием
За это сообщение Shadow нажился 2 спасибками от:
Старый 17.08.2008, 02:20   #53
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

А ты его проверял на корректность кода?
Ошибка в строке
Код:
 stats.Lines.Add('Ограничение по поломкам - '+IntToStr(EditKeepItems.Text)+'! Закупаем...');
IntToStr не надо делать, там и так строка.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 17.08.2008, 02:53   #54
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
По умолчанию

Цитата:
Сообщение от NLObP Посмотреть сообщение
А ты его проверял на корректность кода?
Ошибка в строке
Код:
 stats.Lines.Add('Ограничение по поломкам - '+IntToStr(EditKeepItems.Text)+'! Закупаем...');
IntToStr не надо делать, там и так строка.
Это я тут уже вписал. В скрипте все исправлено.
__________________
Shadows anywhere...
Shadow вне форума   Ответить с цитированием
Старый 17.08.2008, 14:20   #55
Новичок
 
Регистрация: 15.08.2008
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
cler пока неопределено
По умолчанию

тоесть, этот скрипт закупает нам нужные вещи, и точит. Закончилось, закупает и точит. так?
cler вне форума   Ответить с цитированием
Старый 17.08.2008, 19:07   #56
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
По умолчанию

Цитата:
Сообщение от cler Посмотреть сообщение
тоесть, этот скрипт закупает нам нужные вещи, и точит. Закончилось, закупает и точит. так?
По сути так он и должен работать. Но он иногда останавливается. И закупает только то что есть в базе, тк нужно знать ListID и EntryID шмоки.
__________________
Shadows anywhere...
Shadow вне форума   Ответить с цитированием
Старый 19.08.2008, 14:34   #57
Пользователь
 
Регистрация: 30.07.2008
Сообщений: 52
Сказал Спасибо: 9
Имеет 2 спасибок в 2 сообщенях
Витя пока неопределено
По умолчанию

Цитата:
Сообщение от Shadow Посмотреть сообщение
По сути так он и должен работать. Но он иногда останавливается. И закупает только то что есть в базе, тк нужно знать ListID и EntryID шмоки.
А возможно добавить в скрипт возможность продавать кристаллы в определенном количестве по очереди пока они не кончаться?
Витя вне форума   Ответить с цитированием
Старый 23.08.2008, 16:57   #58
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

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 вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 06.09.2008, 20:54   #59
Гость
 
Сообщений: n/a
По умолчанию ХЛП

Цитата:
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 и меняй цифру и все
Витя вне форума   Ответить с цитированием
За это сообщение Витя нажился спасибкой от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



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

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


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

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!