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

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

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

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

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

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

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


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

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

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

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

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

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

Последний раз редактировалось NLObP, 31.08.2009 в 01:20.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 114 спасибками от:
4erteg, 4iter, 8tomat8, abyabar, Agat, Alan, AlexStar, Alta1r, AoWpwnz, aSeSSoR, BEJIEC, bestar, BimSkaLaBim, BioDread, BOTt, Breadfan, BuKbI4, C0derxWarr1or, cadaver, catchy, ChiterEPT, coffee, Comedylife, CriticalError, Crypto, Dagon, DarthShelL, DARTY, David, DeadForz, dfackk, dmitrix, Doberman, dyh9l, dynda2000, eGoIST, Elfinit, ERASE, esk71, Fer123, Fvbkm, Ga6pueL, GanGsta0, GANsss, givemexxx, Gray314, Green, Grinch, Gurg, HooleeCheeter, Hwoarang, idkfa, Imperial2008, Irritant, iSee, jiroo, KPOT^^, KrasX, LamerOK, LeroI, leto, Leviy, lodek, LostQ, LoveCoderX, lPomalSveNl, maxstro, Meth0d, micoach, MONDBLITZ, Necrolity, Nerevar, Niksan, nneett, Op4er, Paulo, Pinko, Piter, Pitkin, Porcupine, Porshesh, Random-al, ReaGeN, ReiN, Ribnadzor, RinZo, RODMAN91, rubela, saidbek, SELLER, Sergey, SexGuru, Shadow, Siberia, skaner, someonce1, Source, TAMBIK, Tanuxa, tiranosaur, Tos, Tzio 7, vahes, VanTG, VasQ, winer, WOLf!, Xelat, YssurTiger, zotrussia, Виталий, Витя, Р0ма, ®ennie™
Старый 03.08.2008, 04:09   #21
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от NeRv1k Посмотреть сообщение
Что делать ??? Запуска на С6 имя прописал
Имя соединения и константа Name должны совпадать. Для начала добиться, чтобы нормально показывало имя чара.

Цитата:
Сообщение от NeRv1k Посмотреть сообщение
Извените но я давно играю в Л2 И можно сказать давно знаю про ПНХ.. Но это 1 раз когда я ево скачял.... и в програмировании я не силен.. Не могли бы вы мне поподробнее плз обяснить что я не так сделал
P.S. Мне то и надо только что бы точить..
В "Список соединений:" должно быть четко написано имя чара, которым ты зашел в клиент. Попробуй поставить/снять галочку "Обход смены XOR ключа". Попробуй пакетхак версии 3.2.0, если тоже самое, то врядли сам сделаешь. Надо разбираться с шифрацией трафика и компилировать новую newxor.dll

Добавлено через 1 минуту
Цитата:
Сообщение от abyabar Посмотреть сообщение
NLObP прив ! слушай а реально ли зделать так : я играю на сервере thecyberland.ru почти копия (основа) la2fantasy.net ! там есть монеты гг 1 монета 500кк ! и зделать так чтоб он покупал точки и когда кончались деньги он бы шёл менял гг на адены ! и шёл опять точил ! и так точил точил пока не заточит на ту точку которую указал !
Теоретически можно всё сделать. Только кто будет делать?! Если сам не сделаешь, то никто не сделает.

Добавлено через 3 часа 25 минут
Цитата:
Сообщение от NeRv1k Посмотреть сообщение
СПС ! Запустил... Просто на другом чаре заходит а на эточето нет.... Но терь когда я выбераю предмет и точьку, ставлю галочьки и жму старт оно пишет : Прервано !
Попробуй сделать всё, что написано в скрипте, перед запуском.

Последний раз редактировалось NLObP, 03.08.2008 в 04:09. Причина: Добавлено сообщение
NLObP вне форума   Ответить с цитированием
Старый 05.08.2008, 23:20   #22
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

Может просто в рюкзаке лежит одна вещь затачиваемая, а по умолчанию скрипт будет работать только если затачиваемых вещей минимум две


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

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

Цитата:
Сообщение от NLObP Посмотреть сообщение
Сделать что бы покупал можно, но это для каждого сервера будет немного по своему, поэтому делать не буду.
Посмотреть, как это сделать самому, можно в рыбалке и в теме алгоритмов.
Немного подскажу. Надо знать ID продавцов. Знать как продается - обычный магазин/мультиселл. Знать bypass из html-менюшки, который посылать для покупки. Нужно запоминать ListID в ответе продавца.
Приветствую! Спасибо большое за скрипт!
Если все вручную закупать, то все точит без проблем. Но, вот какая ситуация была. У меня в инвентаре лежали несколько уже заточеных АС+10. В скрипте я поставил точить до +10, и закупил +0 и заточки. Когда он переломал все что точил, то начал точить те самые +10 что уже были. Хорошо хоть не все переломал. На следующем кругу он их точнул до +12. Вот такой небольшой косяк.
Далее. Чтобы зайти на мой серв ботом, нужно использовать WP со скриптиком в PPC. Соотвественно когда я пытаюсь подконектится с включенным L2PH, то он рвет то соединение, патчит, и делает новое, но бот уже пишет Link LoginServer failed. Как бы мне L2HP к боту прикрутить? С клиентом работает без проблем.
И последнее, по поводу закупки заточек и шмота. ID продавцов я знаю, скрипт смотрел... но там кусок от рыбалки, и как его прикрутить на ГМшоп, я так и не понял. Чем бы мне посмотреть bypass HTML шопа? Старые боты не конектятся к серву, а новый не работает с HTML Reader'ом WP.
Еще раз спасибо за скрипт!
Shadow вне форума   Ответить с цитированием
Старый 07.08.2008, 11:57   #24
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
Лампочка

Вообщем начал потихоньку разбираться со скриптами. Прикрутил закупку заточек. Но вот с взятием в таргет так и не разобрался. Автотаргет не работает, так как кот(магазин) меня не атакует.
Вот собственно кусок на закупку:

delphi Код:
//04=Action:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ)b(ShiftFlag) procedure Roy;//(Attacker: Integer); begin   buf:=#$04;   WriteD(1209014909);   WriteD(107977);   WriteD(218146);   WriteD(-3672);   WriteC(00);   SendToServerEx(Name); end; //...................................... //*************************************************************** //21=RequestBypassToServer:s(Cmd) procedure RequestByPassToServer(cmd:string); begin   buf:=#$21;   WriteS(cmd);   SendToServerEx(Name); end; //...................................... //*************************************************************** procedure RequestMultiSellItem(ListId,EntryID,Count:integer); begin   msg.Lines.Add('Покупаем ListID:'+inttostr(ListID)+' EntryID:'+inttostr(EntryID)+' в кол-ве:'+inttostr(count));     buf:=#$A7;     WriteD(ListID);     WriteD(EntryId);     WriteD(Count);     SendToServerEx(Name); //  end; end; //*************************************************************** procedure BuyEnchScroll; begin   RequestByPassToServer('menu_select?ask=-303&reply=559');   delay(500);   RequestMultiSellItem(559,17,1);   delay(500); end; //Дальше в скрипте ------------------       //************************************************       msg.Lines.Add('Пробуем улучшить ItemID='+IntToStr(ItemID)+' ItemOID='+IntToStr(ItemOID));       RequestEnchantItem(ItemOID);       ready:=false;       timer.enabled:=true; //пока в тесте отключаем (вкл. после заточки предмета) //*** Закупка ***       delay(250);       RequestMultiSellItem(559,17,1);   //Scroll S Weapon       delay(250); //***     end;     #$81: if readd(2)=0 then begin           CurEnchLvl:=0; //начнем с начала          // BuyEnchScroll; //--------------------------------------  

Вообщем закупается одна заточка при открытом диалоговом окне с заточками.
Еще хочу прикрутить проверку кол-ва Аден, и подходить к другому коту и менять их. И дальше точить. Но опять все упирается в таргет.

Код надо в теги [ HIGHLIGHT ] обрамлять (правая решетка с параметром delphi)
__________________
Shadows anywhere...

Последний раз редактировалось NLObP, 07.08.2008 в 14:16.
Shadow вне форума   Ответить с цитированием
За это сообщение Shadow нажился спасибкой от:
Старый 07.08.2008, 14:17   #25
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Пока могу посоветовать в скрипт рыбалки заглянуть. Там реализовано продажа/покупка/мультиселл обмен.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 07.08.2008, 14:42   #26
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

Цитата:
Сообщение от Shadow Посмотреть сообщение
Но вот с взятием в таргет так и не разобрался. Автотаргет не работает, так как кот(магазин) меня не атакует.
А что мешает встать у кота, взять его в таргет и только потом стартовать скрипт? Я делал авто покупку, просто вставив посылку на покупку 50 точек через каждые 50 циклов затачивания.
Breadfan вне форума   Ответить с цитированием
За это сообщение Breadfan нажился спасибкой от:
Старый 07.08.2008, 15:07   #27
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от Breadfan Посмотреть сообщение
А что мешает встать у кота, взять его в таргет и только потом стартовать скрипт? Я делал авто покупку, просто вставив посылку на покупку 50 точек через каждые 50 циклов затачивания.
А если надо оружие и заточки у двух продавцов покупать, а если они далеко друг от друга? Значит и бег как в рыбалке приделывать?
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 2 спасибками от:
Старый 07.08.2008, 16:39   #28
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
Лампочка

Цитата:
Сообщение от NLObP Посмотреть сообщение
Пока могу посоветовать в скрипт рыбалки заглянуть. Там реализовано продажа/покупка/мультиселл обмен.
Да чет смотрел, там все через Аттакера, а как аттакера прикрутить, я так и не понял.

Цитата:
Сообщение от Breadfan Посмотреть сообщение
А что мешает встать у кота, взять его в таргет и только потом стартовать скрипт? Я делал авто покупку, просто вставив посылку на покупку 50 точек через каждые 50 циклов затачивания.
Мешает то что закупка шмота у одного кота, а обмен денег у другого. В моей реализации и так происходит постоянная закупка заточек при открытом диалоге.

Цитата:
Сообщение от NLObP Посмотреть сообщение
А если надо оружие и заточки у двух продавцов покупать, а если они далеко друг от друга? Значит и бег как в рыбалке приделывать?
В принципе это нада бы сделать, но у меня все проще. Мой чар стоит как раз между котами, и только поворачивается при ретаргетинге. Так что передвижения не нужны. Главное таргет кидать.
__________________
Shadows anywhere...
Shadow вне форума   Ответить с цитированием
Старый 07.08.2008, 17:13   #29
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от bYr Посмотреть сообщение
можете выложить полный скрипт с примером на скупку.
Вот здесь пример на продажу. По аналогии можно в покупку переделать.

Добавлено через 4 минуты
Цитата:
Сообщение от Shadow Посмотреть сообщение
В принципе это нада бы сделать, но у меня все проще. Мой чар стоит как раз между котами, и только поворачивается при ретаргетинге. Так что передвижения не нужны. Главное таргет кидать.
Для таргета нужно знать ObjectId продавцов. Вот их отловить и есть небольшая проблема. В рыбалке есть, как отлавливать фишерманов.
delphi Код:
//***************************************************************       //16=NpcInfo:d(ObjectID)d(NpcTypeID)d(IsAttackable)d(X)d(Y)d(Z)d(Heading)       //d(d)d(Maspd)d(Paspd)d(runSpd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRSpd)       //d(flWSpd)d(FlyRSpd)d(FlyWSpd)f(ProperMul)f(Paspd)f(CollisRadius)       //f(CollisHeight)d(RHand)d(d)d(LHand)b(nameabove)b(isRun)b(isInFight)       //b(isAlikeDead)b(isSummoned)s(Name)s(Title)d(d)d(d)d(karma)d(abnEffect)       //d(d)d(d)d(d)d(d)b(c)b(Team)f(collisRadius)f(collisHeight)d(d)       #$16: begin         msg.Lines.Add('S>Пакет NpcInfo #$16'+inttostr(ReadD(2)));         //        OID       ID         AppendNpc(ReadD(2), ReadD(6)); //добавляем в базу данных         if (FishermanID=ReadD(6)-kID) then begin           EditFishermanOID.text:=inttostr(ReadD(2));           FishermanOID:=strtoint(EditFishermanOID.text);           if java then begin             //java             getbuylist:='npc_'+inttostr(FishermanOID)+'_Buy 411';             getselllist:='npc_'+inttostr(FishermanOID)+'_Sell';             getmultisell:='npc_'+inttostr(FishermanOID)+'_multisell 009';           end;         end;       end;

потом можно выбирать его
delphi Код:
//*************************************************************** //04=Action:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ)b(ShiftFlag) procedure Target(ObjectID: Integer); begin   buf:=#$04;   WriteD(ObjectID);   WriteD(MyX);   WriteD(MyY);   WriteD(MyZ);   WriteC(00);   SendToServerEx(Name); end; //...................................... //*************************************************************** procedure TargetAttacker(Attacker: Integer); begin   msg.Lines.Add('ObjectID='+IntToStr(Attacker)+' Player='+IntToStr(MyOID));   fishin.enabled:=false;   Target(ObjectID);   delay(800);   Target(ObjectID);   delay(800); end; //......................................  

Последний раз редактировалось NLObP, 07.08.2008 в 18:02. Причина: Добавлено сообщение
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 3 спасибками от:
Старый 07.08.2008, 17:26   #30
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

Можно отследить по пакету action, ну это можно сделать чтобы раз и навсегда привязаться к определенному продавцу
Breadfan вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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