Новичок
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
|
SE v3.7
Выкладываю полную версию с таймерами на закупку.
delphi Код:
//##############################################################################
program Enchant;
//==============================================================================
//Константы
const
Name='Char'; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false
//***
max=100; //количество слотов в инвентаре чара
kID=1023000; //смещение C6
RoyID=8228; // Shop ID 31228
WinnieID=8229;// Change ID 31229
Buffer=8231;
DanSing=8232;
//------------------------------------------------------------------------------
//Список переменных
var
Item, scrl, Cnt: integer;
ScrollID, ScrollOID: integer; //ScrollID скролла заточки
ItemID, ItemOID: integer; //ItemID затачиваемого предмета
MaxEnchLvl: integer; //уровень заточки который требуется достичь
ItemBase: array[1..4,1..max] of integer; //ItemOID, ItemID, Kol-vo, ItemLvl
ready, add, InBase, CanChange, CanBuy: boolean;
timer, Shops, Change: TTimer;
BuyDelay, ScriptDelay: integer;
ItemCount, CurEnchLvl: integer;
//------------------------------------------------------------------------------
// Buy Var
RoyOID, WinnieOID: integer;
Adena, CoL, EmptySlots, CoLChangeCount, ShopMode: integer;
ItemListID, ItemEntryID, BuyItemCount, ItemPrice: integer;
ScrollListID, ScrollEntryID, BuyScrollCount, ScrollPrice: integer;
ItemName, ScrollName: string;
NeedToBuy, NeedToChange: boolean;
MyX, MyY, MyZ, MyOID, ObjectID: integer; //Статы
//------------------------------------------------------------------------------
//Вспомогательная
SocialID : integer;
ItemsName, StringList : TStringList; //названия предметов, имена продавцов
//==============================================================================
//Form
//------------------------------------------------------------------------------
FormMain : TForm;
Splitter1 : TSplitter;
Splitter2 : TSplitter;
Stats : TMemo;
Msg : TMemo;
Panel1 : TPanel;
GroupBox2 : TGroupBox;
Label1 : TLabel;
Label2 : TLabel;
Label3 : TLabel;
Label4 : TLabel;
Label12 : TLabel;
Label13 : TLabel;
LabelBD : TLabel;
ButtonStartEnchant: TButton;
ButtonStopEnchant : TButton;
ButtonBuyItems : TButton;
ButtonChangeAdena : TButton;
ButtonBuyScroll : TButton;
ButtonChangeWindow: TButton;
CheckBoxItem : TCheckBox;
ComboBoxItem : TComboBox;
CheckBoxScroll : TCheckBox;
ComboBoxScroll : TComboBox;
CheckAutoBuy : TCheckBox;
CheckAutoChange: TCheckBox;
EditItemVal : TEdit;
EditScrollVal : TEdit;
EditScrollOID : TEdit;
EditItemOID : TEdit;
Edit1 : TEdit;
Edit2 : TEdit;
EditScriptDelay: TEdit;
EditBuyDelay : TEdit;
EditKeepItems : TEdit;
ShowAdena : TEdit;
ShowCoL : TEdit;
StartTime, EndTime: TDateTime;
//------------------------------------------------------------------------------
//==============================================================================
procedure Free_FormMain;
//Освобождаем ресурсы ...
begin
TRY
if FormMain<>NIL then begin
FormMain.Free;
FormMain:=NIL;
end;
FINALLY
END;
end; //Free_FormMain
//==============================================================================
//------------------------------------------------------------------------------
function Create_FormMain : TForm;
//Создаем форму и соотв. компоненты на ней ...
Var
Yes : boolean;
begin
Yes := FALSE;
Result := TForm.Create(nil);
TRY
//------------------------
//Свойства формы
Result.Caption := 'Enchant (NLObP v.0.7) - Shadow Edition v3.7';
Result.Left := 175;
Result.Top := 175;
Result.Width := 700;
Result.Height := 300;
Result.FormStyle := fsNormal;
Result.Position := poDesigned;
Result.BorderStyle := bsSizeable;
Result.BorderWidth := 0;
Result.WindowState := wsNormal;
Result.Color := clBtnFace;
Result.Font.Name := 'Tahoma';
Result.Font.Size := 8;
Result.Font.Color := clWindowText;
Result.Font.CharSet:= 1;
//------------------------
//......................................
//Splitter1
Splitter1 := TSplitter.Create(Result);
Splitter1.Parent := Result;
Splitter1.Align := alBottom;
Splitter1.Color := clBtnFace;
Splitter1.Left := 0;
Splitter1.Top := 103;
Splitter1.Width := 593;
Splitter1.Height := 3;
Splitter1.Visible := TRUE;
Splitter1.Tag := 0;
//......................................
//......................................
//Splitter2
Splitter2 := TSplitter.Create(Result);
Splitter2.Parent := Result;
Splitter2.Align := alRight;
Splitter2.Color := clBtnFace;
Splitter2.Left := 442;
Splitter2.Top := 0;
Splitter2.Width := 1;
Splitter2.Height := 103;
Splitter2.Visible := TRUE;
Splitter2.Tag := 0;
//......................................
//......................................
//Stats
Stats := TMemo.Create(Result);
Stats.Parent := Result;
Stats.Left := 445;
Stats.Top := 0;
Stats.Width := 230;
Stats.Height := 103;
Stats.Visible := TRUE;
Stats.Tag := 0;
Stats.Enabled := True;
Stats.Hint := '';
Stats.ShowHint := FALSE;
Stats.Font.Name := 'Tahoma';
Stats.Font.Size := 8;
Stats.Font.Color := clWindowText;
Stats.Color := clWindow;
Stats.TabOrder := 0;
Stats.TabStop := TRUE;
Stats.Align := alRight;
Stats.WordWrap := TRUE;
Stats.Alignment := taLeftJustify;
Stats.WantTabs := False;
Stats.WantReturns := TRUE;
Stats.HideSelection := TRUE;
Stats.MaxLength := 0;
Stats.OEMConvert := FALSE;
Stats.ReadOnly := True;
Stats.ScrollBars := ssVertical;
//......................................
//......................................
//Msg
Msg := TMemo.Create(Result);
Msg.Parent := Result;
Msg.Left := 0;
Msg.Top := 106;
Msg.Width := 573;
Msg.Height := 115;
Msg.Visible := TRUE;
Msg.Tag := 0;
Msg.Enabled := TRUE;
Msg.Hint := '';
Msg.ShowHint := FALSE;
Msg.Font.Name := 'Tahoma';
Msg.Font.Size := 8;
Msg.Font.Color := clWindowText;
Msg.Color := clWindow;
Msg.TabOrder := 1;
Msg.TabStop := TRUE;
Msg.Align := alBottom;
Msg.WordWrap := TRUE;
Msg.Alignment := taLeftJustify;
Msg.WantTabs := FALSE;
Msg.WantReturns := TRUE;
Msg.HideSelection := TRUE;
Msg.MaxLength := 0;
Msg.OEMConvert := FALSE;
Msg.ReadOnly := True;
Msg.ScrollBars := ssVertical;
//......................................
//......................................
//Panel1
Panel1 := TPanel.Create(Result);
Panel1.Parent := Result;
Panel1.Left := 0;
Panel1.Top := 0;
Panel1.Width := 442;
Panel1.Height := 103;
Panel1.Visible := TRUE;
Panel1.Tag := 0;
Panel1.Enabled := TRUE;
Panel1.Hint := '';
Panel1.ShowHint := FALSE;
Panel1.Caption := '';
Panel1.Align := alClient;
Panel1.Color := clBtnFace;
Panel1.Font.Name := 'Tahoma';
Panel1.Font.Size := 8;
Panel1.Font.Color := clWindowText;
Panel1.Font.CharSet := 1;
Panel1.BevelWidth := 1;
Panel1.BorderWidth := 0;
Panel1.BevelInner := bvNone;
Panel1.BevelOuter := bvRaised;
Panel1.TabOrder := 2;
Panel1.TabStop := FALSE;
Panel1.AutoSize := FALSE;
//......................................
//......................................
//GroupBox2
GroupBox2 := TGroupBox.Create(Result);
GroupBox2.Parent := Panel1;
GroupBox2.Left := 1;
GroupBox2.Top := 1;
GroupBox2.Width := 440;
GroupBox2.Height := 101;
GroupBox2.Visible := TRUE;
GroupBox2.Tag := 0;
GroupBox2.Enabled := TRUE;
GroupBox2.Hint := '';
GroupBox2.ShowHint := FALSE;
GroupBox2.Caption := 'Enchant PH Script - SE v3.7';
GroupBox2.Align := alClient;
GroupBox2.Color := clBtnFace;
GroupBox2.Font.Name := 'Tahoma';
GroupBox2.Font.Size := 8;
GroupBox2.Font.Color := clWindowText;
GroupBox2.Font.CharSet := 1;
GroupBox2.TabOrder := 0;
GroupBox2.TabStop := FALSE;
//......................................
//......................................
//Label1
Label1 := TLabel.Create(Result);
Label1.Parent := GroupBox2;
Label1.Left := 10;
Label1.Top := 70;
Label1.Width := 58;
Label1.Height := 13;
Label1.Visible := TRUE;
Label1.Tag := 0;
Label1.Enabled := TRUE;
Label1.Hint := '';
Label1.ShowHint := FALSE;
Label1.Caption := 'Уровень Макс.:';
Label1.Transparent := TRUE;
Label1.WordWrap := FALSE;
Label1.Alignment := taLeftJustify;
Label1.Layout := tlTop;
Label1.AutoSize := TRUE;
Label1.Align := alNone;
Label1.Font.Name := 'Tahoma';
Label1.Font.Size := 8;
Label1.Font.Color := clWindowText;
Label1.Color := clBtnFace;
//......................................
//......................................
//Label1
Label3 := TLabel.Create(Result);
Label3.Parent := GroupBox2;
Label3.Left := 167;
Label3.Top := 70;
Label3.Width := 58;
Label3.Height := 13;
Label3.Visible := TRUE;
Label3.Tag := 0;
Label3.Enabled := TRUE;
Label3.Hint := '';
Label3.ShowHint := FALSE;
Label3.Caption := 'Мин.:';
Label3.Transparent := TRUE;
Label3.WordWrap := FALSE;
Label3.Alignment := taLeftJustify;
Label3.Layout := tlTop;
Label3.AutoSize := TRUE;
Label3.Align := alNone;
Label3.Font.Name := 'Tahoma';
Label3.Font.Size := 8;
Label3.Font.Color := clWindowText;
Label3.Color := clBtnFace;
//......................................
//......................................
//LabelBuyDelay
LabelBD := TLabel.Create(Result);
LabelBD.Parent := GroupBox2;
LabelBD.Left := 159;
LabelBD.Top := 98;
LabelBD.Width := 58;
LabelBD.Height := 13;
LabelBD.Visible := TRUE;
LabelBD.Tag := 0;
LabelBD.Enabled := TRUE;
LabelBD.Hint := 'Задержки в скрипте';
LabelBD.ShowHint := True;
LabelBD.Caption := 'Delays:';
LabelBD.Transparent := TRUE;
LabelBD.WordWrap := FALSE;
LabelBD.Alignment := taLeftJustify;
LabelBD.Layout := tlTop;
LabelBD.AutoSize := TRUE;
LabelBD.Align := alNone;
LabelBD.Font.Name := 'Tahoma';
LabelBD.Font.Size := 8;
LabelBD.Font.Color := clWindowText;
LabelBD.Color := clBtnFace;
//......................................
//......................................
//Edit1
Edit1 := TEdit.Create(Result);
Edit1.Parent := GroupBox2;
Edit1.Left := 90;
Edit1.Top := 67;
Edit1.Width := 60;
Edit1.Height := 21;
Edit1.Visible := TRUE;
Edit1.Tag := 0;
Edit1.Enabled := TRUE;
Edit1.Hint := 'Введи желаемый уровень заточки';
Edit1.ShowHint := TRUE;
Edit1.Text := '16';
Edit1.Font.Name := 'Tahoma';
Edit1.Font.Size := 8;
Edit1.Font.Color := clWindowText;
Edit1.Color := clWindow;
Edit1.TabOrder := 5;
Edit1.TabStop := TRUE;
Edit1.ReadOnly := FALSE;
Edit1.MaxLength := 0;
Edit1.AutoSize := TRUE;
Edit1.OnExit := @Edit1_Exit;
//......................................
//......................................
//Edit2
Edit2 := TEdit.Create(Result);
Edit2.Parent := GroupBox2;
Edit2.Left := 197;
Edit2.Top := 67;
Edit2.Width := 63;
Edit2.Height := 21;
Edit2.Visible := TRUE;
Edit2.Tag := 0;
Edit2.Enabled := TRUE;
Edit2.Hint := 'Какого уровня смогли достичь';
Edit2.ShowHint := TRUE;
Edit2.Text := '0';
Edit2.Font.Name := 'Tahoma';
Edit2.Font.Size := 8;
Edit2.Font.Color := clWindowText;
Edit2.Color := clWindow;
Edit2.TabOrder := 5;
Edit2.TabStop := FALSE;
Edit2.ReadOnly := TRUE;
Edit2.MaxLength := 0;
Edit2.AutoSize := TRUE;
//......................................
//......................................
//Items to Keep
EditKeepItems := TEdit.Create(Result);
EditKeepItems.Parent := GroupBox2;
EditKeepItems.Left := 118;
EditKeepItems.Top := 95;
EditKeepItems.Width := 32;
EditKeepItems.Height := 21;
EditKeepItems.Visible := True;
EditKeepItems.Tag := 0;
EditKeepItems.Enabled := True;
EditKeepItems.Hint := 'Сколько предметов оставлять';
EditKeepItems.ShowHint := True;
EditKeepItems.Text := '5';
EditKeepItems.Font.Name := 'Tahoma';
EditKeepItems.Font.Size := 8;
EditKeepItems.Font.Color:= clWindowText;
EditKeepItems.Color := clWindow;
EditKeepItems.TabOrder := 5;
EditKeepItems.TabStop := True;
EditKeepItems.ReadOnly := False;
EditKeepItems.MaxLength := 4;
EditKeepItems.AutoSize := False;
//......................................
//......................................
//Script Delay
EditScriptDelay := TEdit.Create(Result);
EditScriptDelay.Parent := GroupBox2;
EditScriptDelay.Left := 197;
EditScriptDelay.Top := 95;
EditScriptDelay.Width := 32;
EditScriptDelay.Height := 21;
EditScriptDelay.Visible := True;
EditScriptDelay.Tag := 0;
EditScriptDelay.Enabled := True;
EditScriptDelay.Hint := 'Основная задержка скрипта';
EditScriptDelay.ShowHint := True;
EditScriptDelay.Text := '795';
EditScriptDelay.Font.Name := 'Tahoma';
EditScriptDelay.Font.Size := 8;
EditScriptDelay.Font.Color:= clWindowText;
EditScriptDelay.Color := clWindow;
EditScriptDelay.TabOrder := 5;
EditScriptDelay.TabStop := True;
EditScriptDelay.ReadOnly := False;
EditScriptDelay.MaxLength := 4;
EditScriptDelay.AutoSize := False;
//......................................
//......................................
//Buy Delay
EditBuyDelay := TEdit.Create(Result);
EditBuyDelay.Parent := GroupBox2;
EditBuyDelay.Left := 229;
EditBuyDelay.Top := 95;
EditBuyDelay.Width := 31;
EditBuyDelay.Height := 21;
EditBuyDelay.Visible := True;
EditBuyDelay.Tag := 0;
EditBuyDelay.Enabled := True;
EditBuyDelay.Hint := 'Задержка при закупке';
EditBuyDelay.ShowHint := True;
EditBuyDelay.Text := '195';
EditBuyDelay.Font.Name := 'Tahoma';
EditBuyDelay.Font.Size := 8;
EditBuyDelay.Font.Color:= clWindowText;
EditBuyDelay.Color := clWindow;
EditBuyDelay.TabOrder := 5;
EditBuyDelay.TabStop := True;
EditBuyDelay.ReadOnly := False;
EditBuyDelay.MaxLength := 4;
EditBuyDelay.AutoSize := False;
//......................................
//......................................
//Show Adena
ShowAdena := TEdit.Create(Result);
ShowAdena.Parent := GroupBox2;
ShowAdena.Left := 176;
ShowAdena.Top := 123;
ShowAdena.Width := 45;
ShowAdena.Height := 21;
ShowAdena.Visible := TRUE;
ShowAdena.Tag := 0;
ShowAdena.Enabled := TRUE;
ShowAdena.Hint := 'Адены';
ShowAdena.ShowHint := TRUE;
ShowAdena.Text := 'Адены';
ShowAdena.Font.Name := 'Tahoma';
ShowAdena.Font.Size := 8;
// ShowAdena.Align := Right;
ShowAdena.Font.Color:= clWindowText;
ShowAdena.Color := clWindow;
// ShowAdena.BorderStyle:= 0;
ShowAdena.TabOrder := 5;
ShowAdena.TabStop := True;
ShowAdena.ReadOnly := True;
ShowAdena.MaxLength := 10;
ShowAdena.AutoSize := False;
//......................................
//......................................
//Show Adena
ShowCoL := TEdit.Create(Result);
ShowCoL.Parent := GroupBox2;
ShowCoL.Left := 221;
ShowCoL.Top := 123;
ShowCoL.Width := 39;
ShowCoL.Height := 21;
ShowCoL.Visible := TRUE;
ShowCoL.Tag := 0;
ShowCoL.Enabled := TRUE;
ShowCoL.Hint := 'Coins of Luck';
ShowCoL.ShowHint := TRUE;
ShowCoL.Text := 'CoLs';
ShowCoL.Font.Name := 'Tahoma';
ShowCoL.Font.Size := 8;
ShowCoL.Font.Color:= clWindowText;
ShowCoL.Color := clWindow;
ShowCoL.TabOrder := 5;
ShowCoL.TabStop := True;
ShowCoL.ReadOnly := True;
ShowCoL.MaxLength := 10;
ShowCoL.AutoSize := False;
//......................................
//......................................
//Label2
Label2 := TLabel.Create(Result);
Label2.Parent := GroupBox2;
Label2.Left := 416;
Label2.Top := 19;
Label2.Width := 18;
Label2.Height := 13;
Label2.Visible := TRUE;
Label2.Tag := 0;
Label2.Enabled := TRUE;
Label2.Hint := '';
Label2.ShowHint := FALSE;
Label2.Caption := 'шт.';
Label2.Transparent := TRUE;
Label2.WordWrap := FALSE;
Label2.Alignment := taLeftJustify;
Label2.Layout := tlTop;
Label2.AutoSize := TRUE;
Label2.Align := alNone;
Label2.Font.Name := 'Tahoma';
Label2.Font.Size := 8;
Label2.Font.Color := clWindowText;
Label2.Color := clBtnFace;
//......................................
//......................................
//Label4
Label4 := TLabel.Create(Result);
Label4.Parent := GroupBox2;
Label4.Left := 416;
Label4.Top := 43;
Label4.Width := 18;
Label4.Height := 13;
Label4.Visible := TRUE;
Label4.Tag := 0;
Label4.Enabled := TRUE;
Label4.Hint := '';
Label4.ShowHint := FALSE;
Label4.Caption := 'шт.';
Label4.Transparent := TRUE;
Label4.WordWrap := FALSE;
Label4.Alignment := taLeftJustify;
Label4.Layout := tlTop;
Label4.AutoSize := TRUE;
Label4.Align := alNone;
Label4.Font.Name := 'Tahoma';
Label4.Font.Size := 8;
Label4.Font.Color := clWindowText;
Label4.Color := clBtnFace;
//......................................
//......................................
//Label12
Label12 := TLabel.Create(Result);
Label12.Parent := GroupBox2;
Label12.Left := 273;
Label12.Top := 3;
Label12.Width := 33;
Label12.Height := 13;
Label12.Visible := TRUE;
Label12.Tag := 0;
Label12.Enabled := TRUE;
Label12.Hint := '';
Label12.ShowHint := FALSE;
Label12.Caption := 'ItemID';
Label12.Transparent := TRUE;
Label12.WordWrap := FALSE;
Label12.Alignment := taLeftJustify;
Label12.Layout := tlTop;
Label12.AutoSize := TRUE;
Label12.Align := alNone;
Label12.Font.Name := 'Tahoma';
Label12.Font.Size := 8;
Label12.Font.Color := clWindowText;
Label12.Color := clBtnFace;
//......................................
//......................................
//Label13
Label13 := TLabel.Create(Result);
Label13.Parent := GroupBox2;
Label13.Left := 349;
Label13.Top := 3;
Label13.Width := 35;
Label13.Height := 13;
Label13.Visible := TRUE;
Label13.Tag := 0;
Label13.Enabled := TRUE;
Label13.Hint := '';
Label13.ShowHint := FALSE;
Label13.Caption := 'Кол-во';
Label13.Transparent := TRUE;
Label13.WordWrap := FALSE;
Label13.Alignment := taLeftJustify;
Label13.Layout := tlTop;
Label13.AutoSize := TRUE;
Label13.Align := alNone;
Label13.Font.Name := 'Tahoma';
Label13.Font.Size := 8;
Label13.Font.Color := clWindowText;
Label13.Color := clBtnFace;
//......................................
//......................................
//CheckBoxItem
CheckBoxItem := TCheckBox.Create(Result);
CheckBoxItem.Parent := GroupBox2;
CheckBoxItem.Left := 18;
CheckBoxItem.Top := 18;
CheckBoxItem.Width := 66;
CheckBoxItem.Height := 17;
CheckBoxItem.Visible := TRUE;
CheckBoxItem.Tag := 0;
CheckBoxItem.Enabled := TRUE;
CheckBoxItem.Hint := 'Поставить галочку если выбрали предмет';
CheckBoxItem.ShowHint := TRUE;
CheckBoxItem.Caption := 'Предмет';
CheckBoxItem.Font.Name := 'Tahoma';
CheckBoxItem.Font.Size := 8;
CheckBoxItem.Font.Color := clWindowText;
CheckBoxItem.Color := clBtnFace;
CheckBoxItem.TabOrder := 0;
CheckBoxItem.TabStop := TRUE;
CheckBoxItem.Checked := FALSE;
CheckBoxItem.AllowGrayed := FALSE;
CheckBoxItem.State := cbUnchecked;
CheckBoxItem.OnClick := @CheckBoxItem_Click;
//......................................
//......................................
//ComboBoxItem
ComboBoxItem := TComboBox.Create(Result);
ComboBoxItem.Parent := GroupBox2;
ComboBoxItem.Left := 88;
ComboBoxItem.Top := 16;
ComboBoxItem.Width := 172;
ComboBoxItem.Height := 21;
ComboBoxItem.Visible := TRUE;
ComboBoxItem.Tag := 0;
ComboBoxItem.Enabled := TRUE;
ComboBoxItem.Hint := 'Выбери из списка затачиваемый предмет';
ComboBoxItem.ShowHint := TRUE;
ComboBoxItem.Text := 'ComboBoxItem';
ComboBoxItem.Font.Name := 'Tahoma';
ComboBoxItem.Font.Size := 8;
ComboBoxItem.Font.Color := clWindowText;
ComboBoxItem.Color := clWindow;
ComboBoxItem.TabOrder := 1;
ComboBoxItem.TabStop := TRUE;
ComboBoxItem.ItemIndex := -1;
ComboBoxItem.Sorted := FALSE;
ComboBoxItem.ItemHeight := 13;
ComboBoxItem.OnClick := @ComboBoxItem_Click;
//......................................
//......................................
//ButtonStartEnchant
ButtonStartEnchant := TButton.Create(Result);
ButtonStartEnchant.Parent := GroupBox2;
ButtonStartEnchant.Left := 265;
ButtonStartEnchant.Top := 67;
ButtonStartEnchant.Width := 75;
ButtonStartEnchant.Height := 25;
ButtonStartEnchant.Visible := TRUE;
ButtonStartEnchant.Tag := 0;
ButtonStartEnchant.Enabled := False;
ButtonStartEnchant.Hint := 'Выберите предмет и заточку';
ButtonStartEnchant.ShowHint := True;
ButtonStartEnchant.Caption := 'Начать';
ButtonStartEnchant.Font.Name := 'Tahoma';
ButtonStartEnchant.Font.Size := 8;
ButtonStartEnchant.Font.Color := clWindowText;
ButtonStartEnchant.Font.CharSet := 1;
ButtonStartEnchant.TabOrder := 2;
ButtonStartEnchant.TabStop := TRUE;
ButtonStartEnchant.Cancel := FALSE;
ButtonStartEnchant.ModalResult := 0;
ButtonStartEnchant.OnClick := @ButtonStartEnchant_Click;
//......................................
//......................................
//ButtonStopEnchant
ButtonStopEnchant := TButton.Create(Result);
ButtonStopEnchant.Parent := GroupBox2;
ButtonStopEnchant.Left := 341;
ButtonStopEnchant.Top := 67;
ButtonStopEnchant.Width := 75;
ButtonStopEnchant.Height := 25;
ButtonStopEnchant.Visible := TRUE;
ButtonStopEnchant.Tag := 0;
ButtonStopEnchant.Enabled := TRUE;
ButtonStopEnchant.Hint := '';
ButtonStopEnchant.ShowHint := FALSE;
ButtonStopEnchant.Caption := 'Остановить';
ButtonStopEnchant.Font.Name := 'Tahoma';
ButtonStopEnchant.Font.Size := 8;
ButtonStopEnchant.Font.Color := clWindowText;
ButtonStopEnchant.Font.CharSet := 1;
ButtonStopEnchant.TabOrder := 3;
ButtonStopEnchant.TabStop := TRUE;
ButtonStopEnchant.Cancel := FALSE;
ButtonStopEnchant.ModalResult := 0;
ButtonStopEnchant.OnClick := @ButtonStopEnchant_Click;
//......................................
//......................................
//ButtonBuyItems
ButtonBuyItems := TButton.Create(Result);
ButtonBuyItems.Parent := GroupBox2;
ButtonBuyItems.Left := 265;
ButtonBuyItems.Top := 95;
ButtonBuyItems.Width := 150;
ButtonBuyItems.Height := 25;
ButtonBuyItems.Visible := TRUE;
ButtonBuyItems.Tag := 0;
ButtonBuyItems.Enabled := False;
ButtonBuyItems.Hint := 'Закупка предметов';
ButtonBuyItems.ShowHint := False;
ButtonBuyItems.Caption := 'Закупка';
ButtonBuyItems.Font.Name := 'Tahoma';
ButtonBuyItems.Font.Size := 8;
ButtonBuyItems.Font.Color := clWindowText;
ButtonBuyItems.Font.CharSet := 1;
ButtonBuyItems.TabOrder := 3;
ButtonBuyItems.TabStop := TRUE;
ButtonBuyItems.Cancel := FALSE;
ButtonBuyItems.ModalResult := 0;
ButtonBuyItems.OnClick := @ButtonBuyItems_Click;
//......................................
//......................................
ButtonBuyScroll := TButton.Create(Result);
ButtonBuyScroll.Parent := GroupBox2;
ButtonBuyScroll.Left := 91;
ButtonBuyScroll.Top := 95;
ButtonBuyScroll.Width := 25;
ButtonBuyScroll.Height := 25;
ButtonBuyScroll.Visible := TRUE;
ButtonBuyScroll.Tag := 0;
ButtonBuyScroll.Enabled := TRUE;
ButtonBuyScroll.Hint := '';
ButtonBuyScroll.ShowHint := False;
ButtonBuyScroll.Caption := 'S';
ButtonBuyScroll.Font.Name := 'Tahoma';
ButtonBuyScroll.Font.Size := 8;
ButtonBuyScroll.Font.Color := clWindowText;
ButtonBuyScroll.Font.CharSet := 1;
ButtonBuyScroll.TabOrder := 3;
ButtonBuyScroll.TabStop := TRUE;
ButtonBuyScroll.Cancel := FALSE;
ButtonBuyScroll.ModalResult := 0;
ButtonBuyScroll.OnClick := @ButtonBuyScroll_Click;
//......................................
//......................................
ButtonChangeWindow := TButton.Create(Result);
ButtonChangeWindow.Parent := GroupBox2;
ButtonChangeWindow.Left := 91;
ButtonChangeWindow.Top := 123;
ButtonChangeWindow.Width := 25;
ButtonChangeWindow.Height := 25;
ButtonChangeWindow.Visible := TRUE;
ButtonChangeWindow.Tag := 0;
ButtonChangeWindow.Enabled := TRUE;
ButtonChangeWindow.Hint := '';
ButtonChangeWindow.ShowHint := False;
ButtonChangeWindow.Caption := 'W';
ButtonChangeWindow.Font.Name := 'Tahoma';
ButtonChangeWindow.Font.Size := 8;
ButtonChangeWindow.Font.Color := clWindowText;
ButtonChangeWindow.Font.CharSet := 1;
ButtonChangeWindow.TabOrder := 3;
ButtonChangeWindow.TabStop := TRUE;
ButtonChangeWindow.Cancel := FALSE;
ButtonChangeWindow.ModalResult := 0;
ButtonChangeWindow.OnClick := @ButtonChangeWindow_Click;
//......................................
//......................................
//ButtonChangeAdena
ButtonChangeAdena := TButton.Create(Result);
ButtonChangeAdena.Parent := GroupBox2;
ButtonChangeAdena.Left := 265;
ButtonChangeAdena.Top := 123;
ButtonChangeAdena.Width := 150;
ButtonChangeAdena.Height := 25;
ButtonChangeAdena.Visible := TRUE;
ButtonChangeAdena.Tag := 0;
ButtonChangeAdena.Enabled := True;
ButtonChangeAdena.Hint := '';
ButtonChangeAdena.ShowHint := FALSE;
ButtonChangeAdena.Caption := 'Обменять CoL на Адены';
ButtonChangeAdena.Font.Name := 'Tahoma';
ButtonChangeAdena.Font.Size := 8;
ButtonChangeAdena.Font.Color := clWindowText;
ButtonChangeAdena.Font.CharSet := 1;
ButtonChangeAdena.TabOrder := 3;
ButtonChangeAdena.TabStop := TRUE;
ButtonChangeAdena.Cancel := FALSE;
ButtonChangeAdena.ModalResult := 0;
ButtonChangeAdena.OnClick := @ButtonChangeAdena_Click;
//......................................
//......................................
//CheckBoxScroll
CheckBoxScroll := TCheckBox.Create(Result);
CheckBoxScroll.Parent := GroupBox2;
CheckBoxScroll.Left := 18;
CheckBoxScroll.Top := 41;
CheckBoxScroll.Width := 66;
CheckBoxScroll.Height := 23;
CheckBoxScroll.Visible := TRUE;
CheckBoxScroll.Tag := 0;
CheckBoxScroll.Enabled := TRUE;
CheckBoxScroll.Hint := 'Поставить галочку если выбрали скролл заточки';
CheckBoxScroll.ShowHint := TRUE;
CheckBoxScroll.Caption := 'Заточка';
CheckBoxScroll.Font.Name := 'Tahoma';
CheckBoxScroll.Font.Size := 8;
CheckBoxScroll.Font.Color := clWindowText;
CheckBoxScroll.Color := clBtnFace;
CheckBoxScroll.TabOrder := 4;
CheckBoxScroll.TabStop := TRUE;
CheckBoxScroll.Checked := FALSE;
CheckBoxScroll.AllowGrayed := FALSE;
CheckBoxScroll.State := cbUnchecked;
CheckBoxScroll.OnClick := @CheckBoxScroll_Click;
//......................................
//......................................
//ComboBoxScroll
ComboBoxScroll := TComboBox.Create(Result);
ComboBoxScroll.Parent := GroupBox2;
ComboBoxScroll.Left := 88;
ComboBoxScroll.Top := 40;
ComboBoxScroll.Width := 172;
ComboBoxScroll.Height := 21;
ComboBoxScroll.Visible := TRUE;
ComboBoxScroll.Tag := 0;
ComboBoxScroll.Enabled := TRUE;
ComboBoxScroll.Hint := 'Выбери из списка свиток заточки';
ComboBoxScroll.ShowHint := TRUE;
ComboBoxScroll.Text := 'ComboBoxScroll';
ComboBoxScroll.Font.Name := 'Tahoma';
ComboBoxScroll.Font.Size := 8;
ComboBoxScroll.Font.Color:= clWindowText;
ComboBoxScroll.Color := clWindow;
ComboBoxScroll.TabOrder := 5;
ComboBoxScroll.TabStop := TRUE;
ComboBoxScroll.ItemIndex := -1;
ComboBoxScroll.Sorted := FALSE;
ComboBoxScroll.ItemHeight:= 13;
ComboBoxScroll.OnClick := @ComboBoxScroll_Click;
//......................................
//......................................
//CheckAutoBuy
CheckAutoBuy := TCheckBox.Create(Result);
CheckAutoBuy.Parent := GroupBox2;
CheckAutoBuy.Left := 419;
CheckAutoBuy.Top := 95;
CheckAutoBuy.Width := 23;
CheckAutoBuy.Height := 23;
CheckAutoBuy.Visible := TRUE;
CheckAutoBuy.Tag := 0;
CheckAutoBuy.Enabled := TRUE;
CheckAutoBuy.Hint := 'Автоматизировать закупку';
CheckAutoBuy.ShowHint := TRUE;
CheckAutoBuy.Caption := 'AB';
CheckAutoBuy.Font.Name := 'Tahoma';
CheckAutoBuy.Font.Size := 5;
CheckAutoBuy.Font.Color := clWindowText;
CheckAutoBuy.Color := clBtnFace;
CheckAutoBuy.TabOrder := 4;
CheckAutoBuy.TabStop := TRUE;
CheckAutoBuy.Checked := True;
CheckAutoBuy.AllowGrayed := FALSE;
CheckAutoBuy.State := cbChecked;
CheckAutoBuy.OnClick := @CheckAutoBuy_Click;
//......................................
//......................................
//CheckAutoChange
CheckAutoChange := TCheckBox.Create(Result);
CheckAutoChange.Parent := GroupBox2;
CheckAutoChange.Left := 419;
CheckAutoChange.Top := 123;
CheckAutoChange.Width := 23;
CheckAutoChange.Height := 23;
CheckAutoChange.Visible := TRUE;
CheckAutoChange.Tag := 0;
CheckAutoChange.Enabled := TRUE;
CheckAutoChange.Hint := 'Автоматизировать обмен';
CheckAutoChange.ShowHint := TRUE;
CheckAutoChange.Caption := 'AC';
CheckAutoChange.Font.Name := 'Tahoma';
CheckAutoChange.Font.Size := 5;
CheckAutoChange.Font.Color := clWindowText;
CheckAutoChange.Color := clBtnFace;
CheckAutoChange.TabOrder := 4;
CheckAutoChange.TabStop := TRUE;
CheckAutoChange.Checked := True;
CheckAutoChange.AllowGrayed := FALSE;
CheckAutoChange.State := cbChecked;
CheckAutoChange.OnClick := @CheckAutoChange_Click;
//......................................
//......................................
//EditItemVal
EditItemVal := TEdit.Create(Result);
EditItemVal.Parent := GroupBox2;
EditItemVal.Left := 341;
EditItemVal.Top := 16;
EditItemVal.Width := 72;
EditItemVal.Height := 21;
EditItemVal.Visible := TRUE;
EditItemVal.Tag := 0;
EditItemVal.Enabled := TRUE;
EditItemVal.Hint := '';
EditItemVal.ShowHint := FALSE;
EditItemVal.Text := '0';
EditItemVal.Font.Name := 'Tahoma';
EditItemVal.Font.Size := 8;
EditItemVal.Font.Color := clWindowText;
EditItemVal.Color := clWindow;
EditItemVal.TabOrder := 6;
EditItemVal.TabStop := TRUE;
EditItemVal.ReadOnly := TRUE;
EditItemVal.MaxLength := 0;
EditItemVal.AutoSize := TRUE;
//......................................
//......................................
//EditScrollVal
EditScrollVal := TEdit.Create(Result);
EditScrollVal.Parent := GroupBox2;
EditScrollVal.Left := 341;
EditScrollVal.Top := 40;
EditScrollVal.Width := 72;
EditScrollVal.Height := 21;
EditScrollVal.Visible := TRUE;
EditScrollVal.Tag := 0;
EditScrollVal.Enabled := TRUE;
EditScrollVal.Hint := '';
EditScrollVal.ShowHint := FALSE;
EditScrollVal.Text := '0';
EditScrollVal.Font.Name := 'Tahoma';
EditScrollVal.Font.Size := 8;
EditScrollVal.Font.Color := clWindowText;
EditScrollVal.Color := clWindow;
EditScrollVal.TabOrder := 7;
EditScrollVal.TabStop := TRUE;
EditScrollVal.ReadOnly := TRUE;
EditScrollVal.MaxLength := 0;
EditScrollVal.AutoSize := TRUE;
//......................................
//......................................
//EditScrollOID
EditScrollOID := TEdit.Create(Result);
EditScrollOID.Parent := GroupBox2;
EditScrollOID.Left := 263;
EditScrollOID.Top := 40;
EditScrollOID.Width := 72;
EditScrollOID.Height := 21;
EditScrollOID.Visible := TRUE;
EditScrollOID.Tag := 0;
EditScrollOID.Enabled := TRUE;
EditScrollOID.Hint := '';
EditScrollOID.ShowHint := FALSE;
EditScrollOID.Text := '0';
EditScrollOID.Font.Name := 'Tahoma';
EditScrollOID.Font.Size := 8;
EditScrollOID.Font.Color := clWindowText;
EditScrollOID.Color := clWindow;
EditScrollOID.TabOrder := 8;
EditScrollOID.TabStop := TRUE;
EditScrollOID.ReadOnly := TRUE;
EditScrollOID.MaxLength := 0;
EditScrollOID.AutoSize := TRUE;
//......................................
//......................................
//EditItemOID
EditItemOID := TEdit.Create(Result);
EditItemOID.Parent := GroupBox2;
EditItemOID.Left := 264;
EditItemOID.Top := 16;
EditItemOID.Width := 72;
EditItemOID.Height := 21;
EditItemOID.Visible := TRUE;
EditItemOID.Tag := 0;
EditItemOID.Enabled := TRUE;
EditItemOID.Hint := '';
EditItemOID.ShowHint := FALSE;
EditItemOID.Text := '0';
EditItemOID.Font.Name := 'Tahoma';
EditItemOID.Font.Size := 8;
EditItemOID.Font.Color := clWindowText;
EditItemOID.Color := clWindow;
EditItemOID.TabOrder := 9;
EditItemOID.TabStop := TRUE;
EditItemOID.ReadOnly := TRUE;
EditItemOID.MaxLength := 0;
EditItemOID.AutoSize := TRUE;
//......................................
Yes := TRUE;
FINALLY
if not Yes then begin
//Освобождаем ресурсы, если неудачно ...
if Result<>NIL then begin
Result.Free;
Result:=NIL;
end;
end;
END;
msg.Lines.Add('Информация о заточке');
stats.Lines.Add('Системная Информация');
Result.Show;
end;
//------------------------------------------------------------------------------
//==============================================================================
//******************************************************************************
procedure Init; //Вызывается при включении скрипта
var
i:integer;
begin
FormMain:=Create_FormMain;
//Enchant:=false;
CurEnchLvl:=0;
BuyDelay:=StrToInt(EditBuyDelay.Text);
//..............................................................................
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimer;
timer.Enabled:=False;
timer.Interval:=(StrToInt(EditScriptDelay.Text)); //время задержки
//..............................................................................
Shops:=TTimer.Create(nil);
Shops.OnTimer:=@Shoping;
Shops.Enabled:=False;
Shops.Interval:=BuyDelay; //время задержки
//..............................................................................
Change:=TTimer.Create(nil);
Change.OnTimer:=@OnChange;
Change.Enabled:=False;
Change.Interval:=BuyDelay; //время задержки
//..............................................................................
StartTime:=time;
// stats.Lines.Add('Время '+TimeToStr(StartTime));
ButtonBuyItems.Enabled:=False;
NeedToChange:=False;
ready:=False;
add:=False;
//Пакет RequestItemList
buf:=hstr('0F');
SendToServerEx(Name);
// ShopMode:=2;
StringList:=TStringList.Create;
ItemsName:=TStringList.Create;
RoyOID:=1209014944;
WinnieOID:=1209014946;
MaxEnchLvl:=(StrToInt(Edit1.Text));
try
ItemsName.LoadFromFile('itemsid.ini');
except
msg.Lines.Add('itemsid.ini не найден!');
exit;
end;
end;
//******************************************************************************
procedure Free; //Вызывается при выключении скрипта
begin
// ItemBase:=nil; //нельзя так делать с массивом
timer.Free;
StringList.Clear;
ItemsName.Clear;
//достаточно освободить форму
Free_FormMain;
end;
//..............................................................................
//******************************************************************************
//==============================================================================
//Обработчики событий для элементов управления на форме
//..............................................................................
//CheckBoxItem
procedure CheckBoxItem_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxItem.Checked
then begin
ItemOID:=ItemBase[1,ComboBoxItem.ItemIndex+1];
ItemID:=ItemBase[2,ComboBoxItem.ItemIndex+1];
if (EmptySlots>0) then begin
ItemIDBase(InBase);
ButtonBuyItems.Enabled:=True;
ButtonBuyItems.Caption:=((ComboBoxItem.Text)+': '+IntToStr(EmptySlots)+'шт.');
stats.Lines.Add(' >'+IntToStr(Adena-(ItemPrice*EmptySlots)));
end
else begin
ButtonBuyItems.Caption:=('Инвентарь полон');
stats.Lines.Add(' >'+IntToStr(Adena-(ItemPrice*EmptySlots)));
end;
//проверка
// EditItemOID.Text:=Inttostr(ItemID);
// EditItemVal.text:=IntToStr(ItemOID);
ComboBoxItem.Enabled:=false; //выключаем
if (ItemID>0) and (ScrollID>0) and CheckBoxScroll.Checked then begin
ButtonStartEnchant.Enabled:=True;
ButtonStartEnchant.ShowHint:=True;
end;
end else begin
ItemID:=0; //отмена
ItemOID:=0;
ComboBoxItem.Enabled:=true; //включаем
ButtonBuyItems.Caption:=('Закупка');
ButtonBuyItems.Enabled:=False;
ButtonStartEnchant.Enabled:=False;
ButtonStartEnchant.ShowHint:=True;
//Пакет RequestItemList
buf:=hstr('0F');
SendToServerEx(Name);
end;
end;
//..............................................................................
//ComboBoxItem
procedure ComboBoxItem_Click(Sender: TComboBox);
//Event : OnClick
begin
ItemOID:=ItemBase[1,ComboBoxItem.ItemIndex+1];
ItemID:=ItemBase[2,ComboBoxItem.ItemIndex+1];
// ItemID:=ExtractIDValues(ComboBoxItem.Items.Strings[ComboBoxItem.ItemIndex]);
EditItemOID.Text:=Inttostr(ItemID);
EditItemVal.text:=IntToStr(sumitem(ItemID));
end;
//..............................................................................
//CheckBoxScroll
procedure CheckBoxScroll_Click(Sender: TCheckBox);
//Event : OnClick
var
ScrollToBuy: integer;
begin
if CheckBoxScroll.Checked
then begin
ScrollOID:=ItemBase[1,ComboBoxScroll.ItemIndex+1];
ScrollID:=ItemBase[2,ComboBoxScroll.ItemIndex+1];
ItemIDBase(InBase);
ScrollToBuy:=Trunc(Adena/ScrollPrice);
stats.Lines.Add('Автозакупка свитков включена');
stats.Lines.Add((ScrollName)+': '+IntToStr(trunc(ScrollPrice/1000))+'к А.');
stats.Lines.Add('Аден хватит на '+IntToStr(ScrollToBuy)+' свитков');
// проверка
// EditScrollOID.Text:=Inttostr(ScrollID);
// EditScrollVal.text:=IntToStr(ScrollOID);
ComboBoxScroll.Enabled:=false; //выключаем
if (ItemID>0) and (ScrollID>0) and CheckBoxItem.Checked then begin
ButtonStartEnchant.Enabled:=True;
ButtonStartEnchant.ShowHint:=True;
end;
end else begin
ScrollID:=0; //отмена
ScrollOID:=0;
ComboBoxScroll.Enabled:=true; //включаем
ButtonStartEnchant.Enabled:=False;
ButtonStartEnchant.ShowHint:=True;
//Пакет RequestItemList
buf:=hstr('0F');
SendToServerEx(Name);
end;
end;
//..............................................................................
//ComboBoxScroll
procedure ComboBoxScroll_Click(Sender: TComboBox);
//Event : OnClick
begin
ScrollOID:=ItemBase[1,ComboBoxScroll.ItemIndex+1];
ScrollID:=ItemBase[2,ComboBoxScroll.ItemIndex+1];
// ScrollID:=ExtractIDValues(ComboBoxScroll.Items.Strings[ComboBoxScroll.ItemIndex]);
EditScrollOID.Text:=Inttostr(ScrollID);
EditScrollVal.text:=IntToStr(sumitem(ScrollID));
end;
//..............................................................................
//ButtonStartEnchant
procedure ButtonStartEnchant_Click(Sender: TButton);
//Event : OnClick
begin
CurEnchLvl:=0;
Edit2.text:=IntToStr(CurEnchLvl);
ButtonBuyItems.Enabled:=False;
ButtonBuyItems.Caption:=('Закупка');
ButtonChangeAdena.Enabled:=False;
ButtonChangeAdena.Caption:=('Обмен');
msg.Lines.Add('Команда Старт!');
if (StrToInt(EditScrollOID.Text)<3) and InBase then BuyScroll;
ButtonStartEnchant.Enabled:=False;
ButtonStartEnchant.ShowHint:=False;
CheckAutoBuy.Enabled:=False;
CheckAutoChange.Enabled:=False;
EditBuyDelay.Enabled:=False;
EditScriptDelay.Enabled:=False;
EditKeepItems.Enabled:=False;
timer.enabled:=true;
end;
//..............................................................................
//ButtonStopEnchant
procedure ButtonStopEnchant_Click(Sender: TButton);
//Event : OnClick
begin
msg.Lines.Add('Команда Стоп!');
timer.Enabled:=False;
Shops.Enabled:=False;
Change.Enabled:=False;
NeedToBuy:=False;
NeedToChange:=False;
ready:=false;
buf:=hstr('0F');
SendToServerEx(Name);
CheckAutoBuy.Enabled:=True;
CheckAutoChange.Enabled:=True;
EditBuyDelay.Enabled:=True;
EditScriptDelay.Enabled:=True;
AdenaCounter(CoLChangeCount, CanChange, CanBuy);
if CheckBoxItem.Checked then begin
if (EmptySlots>0) then begin
ButtonBuyItems.Enabled:=True;
ButtonBuyItems.Caption:=((ComboBoxItem.Text)+': '+IntToStr(EmptySlots)+'шт.');
end
else begin
ButtonBuyItems.Enabled:=False;
ButtonBuyItems.Caption:=('Инвентарь полон');
end;
end else begin
ButtonBuyItems.Enabled:=False;
ButtonBuyItems.Caption:=('Закупка');
end;
if not CanChange then begin
ButtonChangeAdena.Enabled:=False;
ButtonChangeAdena.Caption:=('Максимум Аден');
end else begin
ButtonChangeAdena.Enabled:=True;
ButtonChangeAdena.Caption:=('Обменять '+IntToStr(CoLChangeCount*100)+' CoL');
end;
ButtonStartEnchant.Enabled:=True;
ButtonStartEnchant.ShowHint:=True;
ButtonChangeAdena.Enabled:=True;
EditKeepItems.Enabled:=True;
// ButtonChangeAdena.Caption:=('Обмен');
end;
//..............................................................................
//CheckAutoBuy
procedure CheckAutoBuy_Click(Sender: TCheckBox);
//Event : OnClick
var
i: integer;
begin
if CheckAutoBuy.Checked then begin
end;
end;
//..............................................................................
//CheckAutoChange
procedure CheckAutoChange_Click(Sender: TCheckBox);
//Event : OnClick
var
i: integer;
begin
if CheckAutoChange.Checked then begin
// Shops.Enabled:=True;
end;
end;
//..............................................................................
//ButtonBuyItems
procedure ButtonBuyItems_Click(Sender: TButton);
//Event : OnClick
begin
stats.Lines.Add('Закупка '+(ItemName));
timer.enabled:=false;
ready:=False;
BuyItems(EmptySlots);
// ready:=True;
end;
//..............................................................................
//ButtonBuyScroll
procedure ButtonBuyScroll_Click(Sender: TButton);
//Event : OnClick
var
Cnt, IoA, IoACount: integer;
begin
IoA:=(trunc(2000000000/ItemPrice));
IoACount:=(trunc(EmptySlots/IoA));
stats.Lines.Add('IoA: '+IntToStr(IoA));
stats.Lines.Add('IoA Count: '+IntToStr(IoACount));
//for Cnt:=1 to IoACount do begin
//stats.Lines.Add('Начало: '+IntToStr(Cnt));
CoLChange;
stats.Lines.Add('Был обмен');
delay(100);
// TargetAttacker('Roy', RoyOID);
RequestByPassToServer('menu_select?ask=-303&reply='+IntToStr(ItemListID));
stats.Lines.Add('Ждем открытия диалога');
delay(500); // Ждем открытия диалога
for Cnt:=1 to IoA do begin
RequestMultiSellItem(ItemListID, ItemEntryID, BuyItemCount);
delay(BuyDelay);
end;
//end;
// stats.Lines.Add('Click');
// ItemIDBase(InBase);
// if InBase then BuyScroll;
end;
//..............................................................................
//ButtonChangeWindow
procedure ButtonChangeWindow_Click(Sender: TButton);
//Event : OnClick
var
C, IoA: integer;
begin
// NeedToChange:=True;
// Shops.Enabled:=True;
end;
//..............................................................................
//ButtonChangeAdena
procedure ButtonChangeAdena_Click(Sender: TButton);
//Event : OnClick
begin
timer.enabled:=false;
ready:=False;
AdenaCounter(CoLChangeCount, CanChange, CanBuy);
if CanChange then CoLChange;
AdenaCounter(CoLChangeCount, CanChange, CanBuy);
if not CanChange then begin
ButtonChangeAdena.Enabled:=False;
ButtonChangeAdena.Caption:=('Максимум Аден');
end;
//ButtonStopEnchant_Click;
end;
//..............................................................................
//*******************
procedure FormStatus;
begin
AdenaCounter(CoLChangeCount, CanChange, CanBuy);
ItemIDBase(InBase);
if timer.enabled then begin
ButtonStartEnchant.Enabled:=False;
ButtonStopEnchant.Enabled:=True;
ButtonBuyItems.Enabled:=False;
ButtonChangeAdena.Enabled:=False;
ButtonBuyScroll.Enabled:=False;
ButtonChangeWindow.Enabled:=False;
// ButtonChangeAdena.Caption:=('Максимум Аден');
CheckAutoBuy.Enabled:=False;
CheckAutoChange.Enabled:=False;
EditBuyDelay.Enabled:=False;
EditScriptDelay.Enabled:=False;
EditKeepItems.Enabled:=False;
end else begin
ButtonStartEnchant.Enabled:=True;
ButtonStopEnchant.Enabled:=True;
ButtonBuyItems.Enabled:=True;
ButtonChangeAdena.Enabled:=True;
ButtonBuyScroll.Enabled:=True;
ButtonChangeWindow.Enabled:=True;
// ButtonChangeAdena.Caption:=('Максимум Аден');
CheckAutoBuy.Enabled:=True;
CheckAutoChange.Enabled:=True;
EditBuyDelay.Enabled:=True;
EditScriptDelay.Enabled:=True;
EditKeepItems.Enabled:=True;
end;
end;
//......................................
procedure Edit1_Exit(Sender: TEdit);
//Event : OnExit
begin
//
end;
//======================== Procedures ==========================================
//..............................................................................
procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(Name);
WriteS(msg);
SendToClientEx(Name);
end;
//......................................
//******************************************************************************
//21=RequestBypassToServer:s(Cmd)
procedure RequestByPassToServer(cmd:string);
begin
buf:=#$21;
WriteS(cmd);
SendToServerEx(Name);
end;
//......................................
//******************************************************************************
procedure RequestMultiSellItem(ListId, EntryID, Count:integer);
begin
msg.Lines.Add('Покупаем ListID:'+IntToStr(ListID)+' EntryID:'+IntToStr(EntryID)+' в кол-ве:'+IntToStr(count));
buf:=#$A7;
WriteD(ListID);
WriteD(EntryId);
WriteD(Count);
SendToServerEx(Name);
end;
//******************************************************************************
//04=Action:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ)b(ShiftFlag)
procedure Target(ObjectID: Integer);
begin
buf:=#$04;
WriteD(ObjectID);
WriteD(MyX);
WriteD(MyY);
WriteD(MyZ);
WriteC(00);
SendToServerEx(Name);
end;
//******************************************************************************
procedure TargetAttacker(Cat: string; AttackerOID: Integer);
var
Roy, Winnie: string;
begin
timer.enabled:=false;
if (Cat='Roy') then begin
if (AttackerOID>0) then begin
msg.Lines.Add((Cat)+' ObjectID='+IntToStr(AttackerOID)+' Player='+IntToStr(MyOID));
Target(RoyOID);
delay(500);
Target(RoyOID);
delay(500);
end else begin
stats.Lines.Add('OID '+(Cat)+' еще не найден');
end;
end;
if (Cat='Winnie') then begin
if (AttackerOID>0) then begin
msg.Lines.Add((Cat)+' ObjectID='+IntToStr(AttackerOID)+' Player='+IntToStr(MyOID));
Target(WinnieOID);
delay(500);
Target(WinnieOID);
delay(500);
end else begin
stats.Lines.Add('OID '+(Cat)+' еще не найден');
end;
end;
end;
//******************************************************************************
//2F=RequestMagicSkillUse:dMagicID)d(CtrlPressed)b(ShiftPressed)
procedure MagicSkillUse(MagicID: integer);
begin
buf:=#$2F;
WriteD(MagicID);
WriteD(00);
WriteC(00);
SendToServerEx(Name);
end;
//******************************************************************************
//........................ Base of Item ID (List, Entry) .......................
procedure ItemIDBase(var InBase: boolean);
begin
//*** Scroll Base ***
if ScrollID=955 then begin
ScrollListID:=559;
ScrollEntryID:=1;
BuyScrollCount:=1;
ScrollName:=('Enchant Weapon (Grade D)');
ScrollPrice:=50000;
InBase:=True;
end;
if ScrollID=956 then begin
ScrollListID:=559;
ScrollEntryID:=3;
BuyScrollCount:=1;
ScrollName:=('Enchant Armor (Grade D)');
ScrollPrice:=6000;
InBase:=True;
end;
if ScrollID=951 then begin
ScrollListID:=559;
ScrollEntryID:=5;
BuyScrollCount:=1;
ScrollName:=('Enchant Weapon (Grade C)');
ScrollPrice:=110000;
InBase:=True;
end;
if ScrollID=952 then begin
ScrollListID:=559;
ScrollEntryID:=7;
BuyScrollCount:=1;
ScrollName:=('Enchant Armor (Grade C)');
ScrollPrice:=15000;
InBase:=True;
end;
if ScrollID=947 then begin
ScrollListID:=559;
ScrollEntryID:=9;
BuyScrollCount:=1;
ScrollName:=('Enchant Weapon (Grade B)');
ScrollPrice:=500000;
InBase:=True;
end;
if ScrollID=948 then begin
ScrollListID:=559;
ScrollEntryID:=11;
BuyScrollCount:=1;
ScrollName:=('Enchant Armor (Grade B)');
ScrollPrice:=80000;
InBase:=True;
end;
if ScrollID=729 then begin
ScrollListID:=559;
ScrollEntryID:=13;
BuyScrollCount:=1;
ScrollName:=('Enchant Weapon (Grade A)');
ScrollPrice:=5000000;
InBase:=True;
end;
if ScrollID=730 then begin
ScrollListID:=559;
ScrollEntryID:=15;
BuyScrollCount:=1;
ScrollName:=('Enchant Armor (Grade A)');
ScrollPrice:=500000;
InBase:=True;
end;
if ScrollID=959 then begin
ScrollListID:=559;
ScrollEntryID:=17;
BuyScrollCount:=1;
ScrollName:=('Enchant Weapon (Grade S)');
ScrollPrice:=10000000;
InBase:=True;
end;
if ScrollID=960 then begin
ScrollListID:=559;
ScrollEntryID:=19;
BuyScrollCount:=1;
ScrollName:=('Enchant Armor (Grade S)');
ScrollPrice:=1000000;
InBase:=True;
end;
if ScrollID=6575 then begin
ScrollListID:=559;
ScrollEntryID:=21;
BuyScrollCount:=1;
ScrollName:=('Blessed Enchant Weapon (Grade D)');
ScrollPrice:=500000;
InBase:=True;
end;
if ScrollID=6576 then begin
ScrollListID:=559;
ScrollEntryID:=23;
BuyScrollCount:=1;
ScrollName:=('Blessed Enchant Armor (Grade D)');
ScrollPrice:=60000;
InBase:=True;
end;
if ScrollID=6573 then begin
ScrollListID:=559;
ScrollEntryID:=25;
BuyScrollCount:=1;
ScrollName:=('Blessed Enchant Weapon (Grade C)');
ScrollPrice:=2000000;
InBase:=True;
end;
if ScrollID=6574 then begin
ScrollListID:=559;
ScrollEntryID:=27;
BuyScrollCount:=1;
ScrollName:=('Blessed Enchant Armor (Grade C)');
ScrollPrice:=300000;
InBase:=True;
end;
if ScrollID=6571 then begin
ScrollListID:=559;
ScrollEntryID:=29;
BuyScrollCount:=1;
ScrollName:=('Blessed Enchant Weapon (Grade B)');
ScrollPrice:=5000000;
InBase:=True;
end;
if ScrollID=6572 then begin
ScrollListID:=559;
ScrollEntryID:=31;
BuyScrollCount:=1;
ScrollName:=('Blessed Enchant Armor (Grade B)');
ScrollPrice:=800000;
InBase:=True;
end;
if ScrollID=6569 then begin
ScrollListID:=559;
ScrollEntryID:=33;
BuyScrollCount:=1;
ScrollName:=('Blessed Enchant Weapon (Grade A)');
ScrollPrice:=50000000;
InBase:=True;
end;
if ScrollID=6570 then begin
ScrollListID:=559;
ScrollEntryID:=35;
BuyScrollCount:=1;
ScrollName:=('Blessed Enchant Armor (Grade A)');
ScrollPrice:=5000000;
InBase:=True;
end;
if ScrollID=6577 then begin
ScrollListID:=559;
ScrollEntryID:=37;
BuyScrollCount:=1;
ScrollName:=('Blessed Enchant Weapon (Grade S)');
ScrollPrice:=100000000;
InBase:=True;
end;
if ScrollID=6578 then begin
ScrollListID:=559;
ScrollEntryID:=39;
BuyScrollCount:=1;
ScrollName:=('Blessed Enchant Armor (Grade S)');
ScrollPrice:=10000000;
InBase:=True;
end;
//### Item Base ###
//*** Stuff ***
if ItemID=4707 then begin
ItemListID:=576;
ItemEntryID:=3;
BuyItemCount:=100;
ItemName:=('Coin of Luck');
ItemPrice:=1000000;
end;
//*** End of Base ***
if InBase=false then begin
stats.Lines.Add('Неизвестный: '+IntToStr(ItemID));
stats.Lines.Add('Неизвестный: '+IntToStr(ScrollID));
end;
end;
//..............................................................................
//******************************************************************************
procedure BuyScroll;
begin
if InBase then begin
// if not ScrollWindowOpened then begin
RequestByPassToServer('menu_select?ask=-303&reply=559');
delay(500); // Ждем открытия диалога
// ScrollWindowOpened:=True;
// LabelBD.Caption:='Scroll';
// end;
// if ScrollWindowOpened then begin
delay(BuyDelay);
RequestMultiSellItem(ScrollListID, ScrollEntryID, BuyScrollCount);
delay(BuyDelay);
// ScrollWindowOpened:=True;
// end;
end;
end;
//******************************************************************************
procedure BuyItems(EmptySlots: integer);
var
Cnt, IoA: integer;
begin
if InBase then begin
AdenaCounter(CoLChangeCount, CanChange, CanBuy);
CoLChange;
TargetAttacker('Roy', RoyOID);
AdenaCounter(CoLChangeCount, CanChange, CanBuy);
IoA:=(trunc(Adena/ItemPrice));
RequestByPassToServer('menu_select?ask=-303&reply='+IntToStr(ItemListID));
delay(500); // Ждем открытия диалога
if (IoA>EmptySlots) then begin
for Cnt:=1 to EmptySlots do begin
RequestMultiSellItem(ItemListID, ItemEntryID, BuyItemCount);
delay(BuyDelay);
end;
end else begin
for Cnt:=1 to IoA do begin
RequestMultiSellItem(ItemListID, ItemEntryID, BuyItemCount);
delay(BuyDelay);
end;
end;
end;
end;
//******************************************************************************
procedure AutoBuy;
var
Cnt, IoA, IoACount: integer;
begin
AdenaCounter(CoLChangeCount, CanChange, CanBuy);
IoA:=(trunc(Adena/ItemPrice));
IoACount:=(trunc(EmptySlots/IoA));
stats.Lines.Add('IoA: '+IntToStr(IoA));
delay(100);
TargetAttacker('Roy', RoyOID);
RequestByPassToServer('menu_select?ask=-303&reply='+IntToStr(ItemListID));
// stats.Lines.Add('Ждем открытия диалога');
delay(500); // Ждем открытия диалога
for Cnt:=1 to IoA do begin
RequestMultiSellItem(ItemListID, ItemEntryID, BuyItemCount);
delay(BuyDelay);
end;
CurEnchLvl:=0;
Edit2.text:=IntToStr(CurEnchLvl);
EditBuyDelay.Enabled:=False;
end;
//******************************************************************************
procedure AdenaCounter(var CoLChangeCount: integer; var CanChange, CanBuy: boolean);
begin
if (Adena>=2000000000) then CanChange:=False;
if (Adena<=1900000000) then begin
CoLChangeCount:=(20-Trunc((Adena/1000000)/100));
CanChange:=True;
end;
if ((Adena-(ItemPrice*EmptySlots))>1) then CanBuy:=True;
end;
//******************************************************************************
procedure CoLChange;
var
ALID, AEID, ACnt: integer;
Cnt, CoLChangeCount: integer;
begin
TargetAttacker('Winnie', WinnieOID);
delay(50);
AdenaCounter(CoLChangeCount, CanChange, CanBuy);
ALID:=576;
AEID:=3;
ACnt:=100;
if CanChange then begin
ButtonChangeAdena.Enabled:=False;
ButtonChangeAdena.Caption:=('Обмениваем '+IntToStr(CoLChangeCount*100)+' CoL');
//Вызов диалога обмена
RequestByPassToServer('menu_select?ask=-303&reply=576');
delay(500); //Ждем открытия диалога
for Cnt:=1 to CoLChangeCount do begin
RequestMultiSellItem(ALID, AEID, ACnt);
delay(BuyDelay);
end;
end;
delay(50);
TargetAttacker('Roy', RoyOID);
end;
//******************************************************************************
//..............................................................................
// Закупка
procedure Shoping(Sender: TObject);
begin
timer.Enabled:=False;
Change.Enabled:=False;
if NeedToBuy then exit; //если еще не обменяли предыдущую вещь, то выходим сразу
if (RoyOID=0) then begin //(RoyOID=0) or
Shops.Enabled:=False; //останавливаем торговлю
stats.Lines.Add('Не определены OID! Требуется отбежать подальше и вернуться.');
exit; //выходим
end;
AdenaCounter(CoLChangeCount, CanChange, CanBuy);
if (Adena<ItemPrice) then begin
Shops.Enabled:=False; //останавливаем торговлю
stats.Lines.Add('Не хватает денег.');
NeedToChange:=True;
// Shops.Enabled:=True;
exit;
end;
if (EmptySlots<=2) then begin //проверка на выход из массива
Shops.Enabled:=False; //останавливаем торговлю
TargetAttacker('Roy', RoyOID); //таргет
msg.Lines.Add('Всё закупили!');
CurEnchLvl:=0;
Edit2.text:=IntToStr(CurEnchLvl);
EditBuyDelay.Enabled:=False;
timer.Enabled:=True;
end
else
begin
msg.Lines.Add('Цель Roy >');
TargetAttacker('Roy', RoyOID); //таргет
msg.Lines.Add('Готовы обменять: '+IntToStr(EmptySlots-2));
NeedToBuy:=True; //готовы обменивать
end;
end;
//..............................................................................
//..............................................................................
// Обмен
procedure OnChange(Sender: TObject);
begin
timer.Enabled:=False;
Shops.Enabled:=False;
if NeedToChange then exit; //если еще не обменяли предыдущую вещь, то выходим сразу
if (WinnieOID=0) then begin //(RoyOID=0) or
Change.Enabled:=False; //останавливаем торговлю
stats.Lines.Add('Не определены OID! Требуется отбежать подальше и вернуться.');
exit; //выходим
end;
AdenaCounter(CoLChangeCount, CanChange, CanBuy);
if (Adena>=2000000000) then begin //проверка на выход из массива
Change.Enabled:=False; //останавливаем торговлю
TargetAttacker('Roy', RoyOID); //таргет
msg.Lines.Add('Всё обменяли!');
timer.Enabled:=True;
end
else
begin
msg.Lines.Add('Цель Winnie >');
TargetAttacker('Winnie', WinnieOID); //таргет
msg.Lines.Add('Готовы обменять: '+IntToStr(ColChangeCount));
NeedToChange:=True; //готовы обменивать
end;
end;
//..............................................................................
//******************************************************************************
procedure CreateItemBase; //пакет 1B, Создает базу ObjectID по ItemID
//1B=ItemListPacket:w(window)w(ListCount)w(itemType1)h(ObjectID)i(ItemID)
//d(count)w(itemType2)w(CustType1)w(isEquipped)d(BodyPart)w(EnchantLevel)
//w(CustType2)d(Augment)d(--)
var
i, j, ListCount: integer;
begin
for i:=1 to max do begin
//очищаем масив
ItemBase[1,i]:=0; //OID
ItemBase[2,i]:=0; //ID
ItemBase[3,i]:=0; //kol-vo
ItemBase[4,i]:=0; //lvl
end;
j:=4; //смещение для ListCount
ListCount:=ReadH(j); //количество итемов не должно превышать max!
EmptySlots:=(max-ListCount);
stats.Lines.Add('Свободно слотов: '+IntToStr(EmptySlots));
//if ListCount>maxitems then msg.Lines.Add('Внимание! Не все вещи влезли в массив. ListCount>Max='+IntToStr(ListCount)+'/'+IntToStr(maxitems));
j:=8; //смещение для ObjectID
//Пробегаем по Инвентарю и сохраняем ObjectID соответствующие необходимым ItemID
for i:=1 to ListCount do begin
itemBase[1,i]:=ReadD(j); //OID
itemBase[2,i]:=ReadD(j); //ItemID
itemBase[3,i]:=ReadD(j); //кол-во
inc(j,10);
itemBase[4,i]:=ReadH(j);//EnchantLevel
// msg.Lines.Add('i='+IntToStr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
if interlude then inc(j,12) else inc(j,4);
//msg.Lines.Add('j='+IntToStr(j));
if itemBase[2,i]=57 then begin
Adena:=itemBase[3,i];
if (Adena>1000) then ShowAdena.Text:=(IntToStr(trunc(Adena/1000))+'k');
if (Adena>1000000) then ShowAdena.Text:=(IntToStr(trunc(Adena/1000000))+'m');
// if (Adena>1000000000) then ShowAdena.Text:=(IntToStr(trunc(Adena/10000000))+'g');
end;
if itemBase[2,i]=4037 then begin
CoL:= itemBase[3,i];
if (CoL>1000) then ShowCoL.Text:=(IntToStr(trunc(CoL/1000))+'k');
if (CoL>10000000) then ShowCoL.Text:=(IntToStr(trunc(CoL/1000000))+'m');
end;
end;
AdenaCounter(CoLChangeCount, CanChange, CanBuy);
if not CanChange then ButtonChangeAdena.Enabled:=False;
if CanChange then ButtonChangeAdena.Caption:=('Обменять '+IntToStr(CoLChangeCount*100)+' CoL');
//вносим изменения в чекбоксы
StringList.Clear;
try
for i:=1 to ListCount do begin
try
//StringList.Add(ItemsName[ItemBase[2,i]-1]); //записываем название вещей из инвентаря
StringList.Add(ItemsName.Values[IntToStr(ItemBase[2,i])]); //записываем название вещей из инвентаря
except;
msg.Lines.Add('Пропускаем! Нет ItemID='+IntToStr(ItemBase[2,i])+' в itemsid.ini');
end
end;
except;
msg.Lines.Add('ошибка в CreateItemBase->StringList.Add()');
msg.Lines.Add(IntToStr(ItemBase[2,i]));
exit;
end;
if not CheckBoxItem.Checked then begin //наполняем комбобокс
with ComboBoxItem do
begin
Items.Clear;
Items.Assign(StringList);
ItemIndex:=0;
end;
end;
if not CheckBoxScroll.Checked then begin //наполняем комбобокс
with ComboBoxScroll do
begin
Items.Clear;
Items.Assign(StringList);
ItemIndex:=0;
end;
end;
stats.Lines.Add('Roy OID: '+IntToStr(RoyOID));
stats.Lines.Add('Winnie OID: '+IntToStr(WinnieOID));
end;
//******************************************************************************
//27=InventoryUpdate:w(count)w(1add2mod3remove)w(itemType1)d(ObjectID)i(ItemId)d(Count)w(itemType2)w(cusType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(cusType2)-(8)
procedure InventoryUpdate; //пакет 27, обновляет базу ObjectID по ItemID
var
i, ii, j, ItemOID, ItemID, ItemCount, ListCount, UpdType, Itemlvl: integer;
add : boolean;
begin
add:=false;
ListCount:=ReadH(2); //количество итемов
// EmptySlots:=(max-ListCount);
msg.Lines.Add('Свободно слотов: '+IntToStr(EmptySlots));
//Пробегаем по Инвентарю и сохраняем пары ObjectID - lvl
j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
for ii:=1 to ListCount do begin
UpdType:=ReadH(j);
//inc(j,2);
ReadH(j); //ItemType1
ItemOID:=ReadD(j); //ObjectID
ItemID:=ReadD(j); //ItemID
itemCount:=ReadD(j); //кол-во
inc(j,10);
Itemlvl:=ReadH(j);
case UpdType of
//добавлен
1: begin
dec(EmptySlots);
for i:=1 to max do begin
if (ItemBase[1,i]=0) and (add=false) then begin
ItemBase[1,i]:=ItemOID;
ItemBase[2,i]:=ItemID;
ItemBase[3,i]:=ItemCount;
ItemBase[4,i]:=Itemlvl;
msg.Lines.Add('Добавили предмет!');
msg.Lines.Add('i='+IntToStr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' кол-во='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
if ItemID=57 then begin
Adena:=ItemCount;
if (Adena>1000) then ShowAdena.Text:=(IntToStr(trunc(Adena/1000))+'k');
if (Adena>1000000) then ShowAdena.Text:=(IntToStr(trunc(Adena/1000000))+'m');
// if (Adena>1000000000) then ShowAdena.Text:=(IntToStr(trunc(Adena/10000000))+'g');
end;
if ItemID=4037 then begin
CoL:=ItemCount;
if (CoL>1000) then ShowCoL.Text:=(IntToStr(trunc(CoL/1000))+'k');
if (CoL>10000000) then ShowCoL.Text:=(IntToStr(trunc(CoL/1000000))+'m');
end;
add:=true;
end;
end;
end;
//изменен
2: begin
for i:=1 to max do begin
if ItemBase[1,i]=ItemOID then begin
ItemBase[2,i]:=ItemID;
ItemBase[3,i]:=ItemCount;
ItemBase[4,i]:=Itemlvl;
msg.Lines.Add('Изменяем параметры предмета!');
msg.Lines.Add('i='+IntToStr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' кол-во='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
if ItemID=57 then begin
Adena:=ItemCount;
if (Adena>1000) then ShowAdena.Text:=(IntToStr(trunc(Adena/1000))+'k');
if (Adena>1000000) then ShowAdena.Text:=(IntToStr(trunc(Adena/1000000))+'m');
// if (Adena>1000000000) then ShowAdena.Text:=(IntToStr(trunc(Adena/10000000))+'g');
end;
if ItemID=4037 then begin
CoL:=ItemCount;
if (CoL>1000) then ShowCoL.Text:=(IntToStr(trunc(CoL/1000))+'k');
if (CoL>10000000) then ShowCoL.Text:=(IntToStr(trunc(CoL/1000000))+'m');
end;
end;
end;
end;
//удален
3: begin
inc(EmptySlots);
for i:=1 to max do begin
if ItemBase[1,i]=ItemOID then begin
msg.Lines.Add('Удаляем предмет!');
msg.Lines.Add('i='+IntToStr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' кол-во='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
ItemBase[1,i]:=0;
ItemBase[2,i]:=0;
ItemBase[3,i]:=0;
ItemBase[4,i]:=0;
end;
end;
end;
end;
if interlude then inc(j,10) else inc(j,2);
//msg.Lines.Add('j='+IntToStr(j));
end;
end;
//..............................................................................
//******************************************************************************
//находим в инвентаре предмет с ItemID и возвращаем его ObjectID
function GetItem(item:integer; lvl:integer) : integer;
var
i : integer;
begin
for i:=1 to max do begin
//находим подходящий предмет по ItemID
if (ItemBase[2,i]=item) and (ItemBase[4,i]=lvl) then begin
//если нашли, то возвращаем ObjectID предмета
result:=ItemBase[1,i]; // itemOID
ItemCount:=ItemBase[3,i];
//Itemlvl:=ItemBase[4,i];
//msg.Lines.Add('<item='+IntToStr(item)+' lvl='+IntToStr(lvl)+'> i='+IntToStr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
exit;
end;
end;
//ничего не нашли
result:=0;
end;
//******************************************************************************
procedure UseItem(ObjectID: integer);
begin
buf:=#$14;
WriteD(ObjectID);
WriteD(0);
SendToServerEx(Name);
end;
//******************************************************************************
function SumItem(Item: integer):integer;
var
sum, i: integer;
begin
result:=0;
//находим подходящий предмет по ItemID
for i:=1 to max do begin
if (ItemBase[2,i]=item) then begin
// msg.Lines.Add('Нашли предмет ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemCol='+IntToStr(ItemBase[3,i])+' EnchantLvl='+IntToStr(ItemBase[4,i]));
// msg.Lines.Add('i='+IntToStr(i));
result:=result+ItemBase[3,i];
//inc(result);
end;
end;
end;
//******************************************************************************
procedure RequestEnchantItem(ObjectID: integer);
begin
buf:=#$58;
WriteD(ObjectID);
SendToServerEx(Name);
//*********** использовать чит с петом ************************
{ buf:=#$8B;
WriteD(ObjectID);
writed(1);
SendToServerEx(Name);
} //***********
end;
//..............................................................................
//******************************************************************************
procedure UserInfo; //обновление данных о себе
var
i: word;
begin
MyOID:=ReadD(18);
MyX:=ReadD(2);
MyY:=ReadD(6);
MyZ:=ReadD(10);
i:=22;
ReadS(i);
if interlude then inc(i, 48) else inc(i, 44);
end;
//******************************************************************************
procedure OnTimer(Sender: TObject);
begin
EditItemVal.Text:=IntToStr(SumItem(ItemID));
EditScrollVal.Text:=IntToStr(SumItem(ScrollID));
if (Adena<=99000000) then begin
stats.Lines.Add('Деньги закончились! Меняем...');
timer.Enabled:=False;
NeedToChange:=True;
Change.Enabled:=True;
exit;
end;
if (CurEnchLvl>=StrToInt(Edit1.Text)) then begin
stats.Lines.Add('Sum '+IntToStr(SumItem(ItemID))+' lvl'+IntToStr(CurEnchLvl)+' Ed'+(Edit1.Text));
timer.enabled:=false;
//Пакет RequestItemList
buf:=hstr('0F');
SendToServerEx(Name);
delay(50);
stats.Lines.Add('Достигнут требуемый уровень! Закупаем...');
stats.Lines.Add('Свободно слотов: '+IntToStr(EmptySlots));
if (EmptySlots>0) then begin
ButtonBuyItems.Enabled:=True;
ButtonBuyItems.Caption:=((ComboBoxItem.Text)+': '+IntToStr(EmptySlots)+'шт.');
end;
{ if (SumItem(ItemID)>=10) and (CurEnchLvl>=StrToInt(Edit1.Text)) then begin
stats.Lines.Add('Max '+IntToStr(MaxEnchLvl));
stats.Lines.Add('Заточено 10шт '+IntToStr(MaxEnchLvl)+' уровня!');
inc(MaxEnchLvl);
stats.Lines.Add('Увеличиваем уровень: '+IntToStr(MaxEnchLvl));
Edit1.Text:=(IntToStr(MaxEnchLvl));
end; }
NeedToBuy:=True;
Shops.Enabled:=True;
exit;
end;
if (SumItem(ItemID)<=StrToInt(EditKeepItems.Text)) then begin
timer.enabled:=false;
buf:=hstr('0F');
SendToServerEx(Name);
stats.Lines.Add('Ограничение по поломкам - '+IntToStr(EditKeepItems.Text)+'! Закупаем...');
delay(50);
NeedToBuy:=True;
Shops.Enabled:=True;
end;
ScrollOID:=GetItem(ScrollID,0);
if (ScrollOID<=3) then begin
stats.Lines.Add('Свитки закончились! Покупаем...');
timer.enabled:=False;
//***** Закупка заточек *
BuyScroll;
//***********************
delay(50);
timer.enabled:=True;
//exit;
end;
UseItem(ScrollOID);
msg.Lines.Add('Задействовали скролл ScrollID='+IntToStr(scrollID)+' ScrollOID='+IntToStr(ScrollOID));
ready:=true; //готовы затачивать
end;
//==============================================================================
// вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
Begin
//****************************************************************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//****************************************************************************
if NeedToChange and (WinnieOID<>0) then begin
if (ConnectName=Name) and FromServer then begin
case pck[1] of
#$0F: begin
msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');
msg.Lines.Add(IntToStr(ReadD(4)));
if (ReadD(2)=WinnieOID) then begin
//шлем запрос выбора пункта - продажа
//c21=RequestBypassToServer:s(Cmd)
delay(350);
RequestByPassToServer('menu_select?ask=-303&reply=576');
msg.Lines.Add('C>Пакет RequestBypassToServer');
end;
end;
//sD0=MultiSellList:d(listId)d(page_beg)d(page_end)d(onpage)d(entrycount)d(EntryId)b(?)w(prodcount)w(itemcount<)w(pItemId)d(?)w(ptype2)d(pcount)w(penchant)w(iItemId)w(itype2)d(icount)w(ienchant)
#$D0: begin
msg.Lines.Add('S>Пакет MultiSellList #$D0');
delay(350);
RequestMultiSellItem(576, 3, 100);
NeedToChange:=False;
end;
end;
end;
end;
if NeedToBuy and (RoyOID<>0) then begin
if (ConnectName=Name) and FromServer then begin
case pck[1] of
//s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
#$0F: begin
msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');
if (ReadD(2)=RoyOID) then begin
delay(350);
RequestByPassToServer('menu_select?ask=-303&reply='+IntToStr(ItemListID));
msg.Lines.Add('C>Пакет RequestBypassToServer '+IntToStr(ItemListID));
end;
end;
//sD0=MultiSellList:d(listId)d(page_beg)d(page_end)d(onpage)d(entrycount)d(EntryId)b(?)w(prodcount)w(itemcount<)w(pItemId)d(?)w(ptype2)d(pcount)w(penchant)w(iItemId)w(itype2)d(icount)w(ienchant)
#$D0: begin
msg.Lines.Add('S>Пакет MultiSellList #$D0');
delay(350);
RequestMultiSellItem(ItemListID, ItemEntryID, ItemCount);
NeedToBuy:=False;
end;
end;
end;
end;
//****************************************************************************
if FromServer then case pck[1] of
//****************************************************************************
#$01: begin // MoveBackwardToLocation
if ReadD(2) = MyOID then begin
MyX := ReadD(18);
MyY := ReadD(22);
MyZ := ReadD(26);
end;
//stats.Lines.Add('X'+IntToStr(MyX)+', Y'+IntToStr(MyY)+', Z'+IntToStr(MyZ));
end;
//**************************************************************************
#$04: begin //пакет с инфой о моём чаре
//msg.Lines.Add('S>Пакет UserInfo #$04');
UserInfo;
end;
//**************************************************************************
//Пакет ItemList
#$1B: CreateItemBase; //создание базы предметов
//**************************************************************************
//если удалили предметы, стираем в базе предметов пары ObjectID - ItemID
#$27: InventoryUpdate; //Обновление базы
//**************************************************************************
#$16: begin
ObjectID:=(ReadD(2));
//stats.Lines.Add('S> OID '+IntToStr(ObjectID)+' ID '+IntToStr(ReadD(6)-kID));
// OID ReadD2 ID ReadD6
if (RoyID=ReadD(6)-kID) then begin
RoyOID:=ObjectID;
stats.Lines.Add('Roy OID: '+IntToStr(RoyOID));
end;
if (WinnieID=ReadD(6)-kID) then begin
WinnieOID:=ObjectID;
stats.Lines.Add('Winnie OID: '+IntToStr(WinnieOID));
end;
end;
//Пакет ChooseInventory
#$6F: if ready then begin //and (readd(2)=itemid)
timer.enabled:=False; //отключаем пока не найдем предмет для заточки
//***** Закупка заточек *
if InBase then BuyScroll;
//ищем подходящий предмет для заточки
repeat
ItemOID:=GetItem(ItemID, CurEnchLvl);
if ItemOID=0 then begin
inc(CurEnchLvl);
Edit2.Text:=IntToStr(CurEnchLvl);
end;
until ItemOID<>0;
//...................................................................
msg.Lines.Add('Пробуем улучшить ItemID='+IntToStr(ItemID)+' ItemOID='+IntToStr(ItemOID));
RequestEnchantItem(ItemOID);
ready:=False;
timer.enabled:=True; //пока в тесте отключаем (вкл. после заточки предмета)
end;
#$81: if ReadD(2)=0 then CurEnchLvl:=0; //начнем с начала
end;
End.
//##############################################################################
__________________
Shadows anywhere...
Последний раз редактировалось Shadow, 29.08.2008 в 20:54.
|