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