Просмотр полной версии : скрипты на точку ни 1 не работает
В обшем играю на сервере L2rx.com(Heallbound)
Использую разные скрипты ни 1 не пашет
Исполью By Npob для грации (когда открываю что выбрать точить не видно Id вешей)Даж заточек S(items id найден)
Купил 3 молотка икарус он их видит выбираю точить его(икарус)пишет вещей должно быть больше 2(хотя в иветаре их 3)
Использую by Mks выполняю 1 соц действие точу на +1(заточил я) выполнил 1 соц действие он заточил на +2 а на +3 уже дисконект
Помогите плх что мне делать?:cray:
PAPKA,
Исполью By Npob для грации
возьми и ручками сам впиши все нужные тебе ID никакой автор скрипта для тебя этой йухетоё страдать не будет
Использую by Mks
Скорость заточки меньше ставь...
Добавлено через 1 минуту
Ах да! забыл! Я ничего не знаю, Google (http://google.com) твой брат..
впиши ид это типо в Items id?а где эти ид взять?
скачай все версии выше 3.2.0 и пробуй по очереди
Dagon, Оо лизни розетку....
PAPKA, при помощи Этой проги (http://www.lmgtfy.com/?q=%D0%BA%D0%B0%D0%BA+%D0%BE%D1%82%D0%BA%D1%80%D1% 8B%D1%82%D1%8C+itemname-e.dat) открываеш файл itemname-e.dat
By Mks точить и не останавливаеться
Добавлено через 3 часа 31 минуту
а скажи плз где взять Itemedat для моего серва?
By Mks точить и не останавливаеться
Добавлено через 3 часа 31 минуту
а скажи плз где взять Itemedat для моего серва?
в папке System лежит файл Itemsname-e.dat его открываешь той прогой и выдераешь оттуда нужные ID...
PAPKA,
возьми и ручками сам впиши все нужные тебе ID никакой автор скрипта для тебя этой
это не помогает с скриптом Npobа
Все нормально точит на L2rx.com! Чел криворук. Тему фтопку :cool:
расскажи как?я пробовал ид менять не получилось
Добавлено через 6 минут
Обьясни я Для ЭТОГО ТЕМУ И СОЗДАЛ ЧО СРАЗУ Ф ТОПКУ? давай тебя ф топку?
Добавлено через 2 часа 38 минут
открыл этот Itemname-e.dat посотрел ид вещей вписал ручками
Итог:Заточку всю равно не видит
Пуху видит но 1 у мя паке их 3
При старте пишет пухе должны больше 2
ЧТО ДЕЛАТЬ Я УЖЕ ЗАДРАЛСЯ
Скрипт By Mks точит норм но не останавливаеться
немного разобрался со скриптом By mks кароч он начинает точить и остановиться но если Обнулить То не точит нажимаешь еше раз Yes он опять точит но без остановки
давайте еще помолчим, он так лучше думает... может сам себе напишит)))
xчо впадлу хоть дать направление чо сделать?
Направление (http://www.delphi.int.ru/)
спс очень выручил :D я прям все сразу что ажно пля ппц
PAPKA, звяняйте батенька... ананасов нема!
moOYkoOn
25.06.2009, 18:01
помогите плз я скачал l2phx (L2PacketHack by xkor(3.1.8 от05.09.2007)) потом вставил в папку скрипт на точку ,
но когда точю два баюма он точит но когда один ломается(спадывает на 30) он не который сломался точит а который заточен!помогите плз
играю на серве la2death.ru
вот скрипт
//Автоматизация заточки предметов до необходимого уровня by NLObP
//version 0.7 от 20.07.2008г.
program Enchant;
{************************************************* *******************************
Возможности скрипта:
--------------------
0.1
+ Панель управления;
+ Затачиваем по очереди все предметы с ItemID пока не переломаем
или не заточим, один предмет всегда остаётся;
0.2
+ исправлен выбор названий предметов из инвентаря;
+ небольшая правка кода;
0.3
+ Проверено на theAbyss (все предметы инвентаря чара видит);
+ исправлена ошибка кода выбора скроллов;
+ исправлена ошибка подсчета суммы предметов;
0.4
+ специально для Miler проверено на La2Titan (затачивал Mantikore Skin Shirt до +7);
+ исправлена процедура InventoryUpdate;
+ изменена логика затачивания;
+ заготовка покупки заточек/вещей;
0.5
+ проверено на L2Fantasy;
+ добавлена проверка, если заточка сбрасывается в 0 без поломки вещи;
+ добавлен код, если надо точить одну вещь (опционально);
0.6
+ изменил выборку ItemId;
0.7
+ исправлено смещение в CreateItemBase для С4, спасибо Mulder
================================================== ==================
Работа скрипта проверялась на локальном Интерлюда сервере,
для С4 не проверялась и поддерживаться далее не будет.
================================================== ==================
Необходимо затариться оружием, заточками и валерьянкой.
Name='memo'; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false
Внимание!
Из комбобокса обязательно надо выбрать вещь, чтобы скрипт узнал
ID и количество, только потом ставить напротив галочку.
Галочки снимать не надо, если кончились заточки/вещи - можно сразу идти
покупать и продолжать заточку.
Скрипт распространяется как есть, и я не несу ответственности за то, что
ВЫ натворили у себя, его используя.
MyICQ 402988808
************************************************** ******************************}
//............................................
//Список констант
const
Name='memo'; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false
//-------------------------
max=200; //количество слотов в инвентаре чара
//............................................
//Список переменных
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.Str ings[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.Stri ngs[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(CustTyp e1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(CustTy pe2)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(ite mType1)d(ObjectID)i(ItemId)d(Count)w(itemType2)w(c usType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(c usType2)-(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(ItemTyp e1)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(ItemTyp e1)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(C ount)
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.
moOYkoOn, юзай более старый скрипт на заточку by NLObP , там с этим проблем нету
moOYkoOn
25.06.2009, 19:38
moOYkoOn, юзай более старый скрипт на заточку by NLObP , там с этим проблем нету
плиз дай ссылку а то ненайти старую версию=((
очень прошу тя)))
залезь в файловый архив форума, там все есть...
пора бы уже темку офф
moOYkoOn
26.06.2009, 17:53
блин чёто я полазил там такиеже как и я выложил
а может проблема в том что нам когда точиш он не на 0 а на 30 слитает (шмот , пухи) , может в скрипте чёнить исправить надо?
Добавлено через 25 минут
а если скрипт 2 вещи сломает он зависает
moOYkoOn, ну ты "%$#^@!!! и нудный!
program zatochka_IL;
const
Name='AdolfHitler'; //Вписать сюда имя чара
ScrollID=6577; //957 ScrollID скролла заточки
ItemID=9605; //129 ItemIDID затачиваемого предмета
MaxEnchLvl=25;//уровень заточки который требуется достич
max=250; //количество слотов в инвентаре чара, максимально - 250
var
ItemBase: array[1..2,1..max] of integer; //ItemID ObjID, lvl
ScrollBase: array[1..max] of integer; //Scroll
add: boolean; //прошла заточка?
timer: TTimer;
CurEnchLvl, ColvoItem, ColvoScrl, CurItem, CurScrl: integer;
SocialID:integer; // вспомогательная
procedure Init; //Вызывается при включении скрипта
var
i:integer;
begin
//Enchant:=false;
CurEnchLvl:=0;
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimerHP;
timer.enabled:=false;
timer.interval:=200; //время задержки
add:=false;
for i:=1 to max do begin
//очищаем масив
//Say('очищаем масив');
ItemBase[1,i]:=0;
ItemBase[2,i]:=0;
end;
//Пакет RequestItemList
buf:=hstr('0F');
SendToServerEx(Name);
end;
//************************************************** ****************************
procedure Free; //Вызывается при выключении скрипта
begin
ItemBase:=nil;
ScrollBase:=nil;
timer.Free;
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
var
i, ss, ww, j, ObjID, ItmID, lvl, ListCount: integer;
begin
ss:=1; //индекс в массиве скроллов
ww:=1; //индекс в массиве предметов
j:=4; //смещение для ListCount
ListCount:=ReadH(j); //количество итемов не должно превышать max!
if ListCount>max then ListCount:=max;
j:=8; //смещение для ObjectID
//Пробегаем по Инвентарю и сохраняем ObjectID соответствующие необходимым ItemID
for i:=1 to ListCount do begin
ObjID:=ReadD(j); //ObjectID
ItmID:=ReadD(j); //ItemID
j:=j+14;
Lvl:=ReadD(j); //Level
case ItmID of
ScrollID: begin
ScrollBase[ss]:=ObjID;
inc(ss);
////// !!!!!!!!!!! Say('ColvoScrl='+IntToStr(ss)); !!!!!!!!!!!!!!!!!! ////
end;
ItemID: begin
ItemBase[1,ww]:=ObjID;
ItemBase[2,ww]:=lvl;
inc(ww);
///// !!!!!!!!!!!!!!! Say('ColvoItem='+IntToStr(ww)); !!!!!!!!!!!!!!!! /////
end;
end;
j:=j+10;
end;
ColvoItem:=ww-1;
ColvoScrl:=ss-1;
//Say('>ColvoItem='+IntToStr(ColvoItem)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl));
end;
//************************************************** ****************************
procedure UpdateItemBase; //пакет 27, Создает базу ObjectID по ItemID
var
i, ii, j, ss, ww, ObjID, ItmID, Lvl, ListCount, UpdType: integer;
begin
ListCount:=ReadH(2); //количество итемов
//Пробегаем по Инвентарю и сохраняем пары ObjectID - Lvl
j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
// Say('Апдейт базы!');
for i:=1 to ListCount do begin
UpdType:=ReadH(j);
j:=j+2;
ObjID:=ReadD(j);
ItmID:=ReadD(j);
j:=j+14;
Lvl:=ReadH(j);
Say('Предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID));
case UpdType of
1:case ItmID of
ItemID: begin
ColvoItem:=ColvoItem+1;
Say('Добавили предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID));
for ii:=1 to max do
if ItemBase[1,ii]=0 then begin ItemBase[1,ii]:=ObjID; ItemBase[2,ii]:=lvl; end;
end;
ScrollID: begin
ss:=ss+1;
Say('Добавили скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ScrollID));
for ii:=1 to max do if ScrollBase[ii]=0 then ScrollBase[ii]:=ObjID;
end;
end;
2:case ItmID of
ItemID:
for ii:=1 to max do
if ItemBase[1,ii]=ObjID then ItemBase[2,ii]:=lvl;
ScrollID:
Say('Внимание! Изменения в скролле!?');
end;
//удален
3:case ItmID of
ItemID: begin
ColvoItem:=ColvoItem-1;
for ii:=1 to max do
if ItemBase[1,ii]=ObjID then begin ItemBase[1,ii]:=0; ItemBase[2,ii]:=0; end;
Say('Удаляем предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID));
end;
ScrollID: begin
ColvoScrl:=ColvoScrl-1;
for ii:=1 to max do
if ScrollBase[ii]=ObjID then ScrollBase[ii]:=0;
Say('Удаляем скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ScrollID));
end;
end;
end;
j:=j+10; //следующее смещение для действия с предметом 1-добавлен 2-изменен 3-удален
end;
Say('>>ColvoItem='+IntToStr(ColvoItem)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl));
end;
//************************************************** ****************************
function GetNextItemID: integer;
//Выдает ObjID предмета, если не найден в базе, выдает -1,
//достигли макс уровня заточки -2, подбираем минимальный текущий уровень заточки -3
var
i: integer;
begin
Result:=-1;
if CurEnchLvl>=MaxEnchLvl then begin
Result:=-2;
exit;
end;
for i:=1 to max do begin
//находим первый подходящий предмет
if (ItemBase[1,i]<>0) and (ItemBase[2,i]<=CurEnchLvl) then begin
Result:=ItemBase[1,i];
exit;
end;
end;
inc(CurEnchLvl);
Result:=-3;
end;
//************************************************** ****************************
function GetNextScroll: integer;
//Выдает ObjID скролла, если предмет не найден в базе, выдает -1
var
i: integer;
begin
Result:=-1;
for i:=1 to max do begin
//находим первый подходящий предмет
if (ScrollBase[i]<>0) then begin
Result:=ScrollBase[i];
exit;
end;
end;
end;
//************************************************** ****************************
procedure UseItem(ObjectID: integer);
begin
buf:=#$14;
WriteD(ObjectID);
WriteD(0);
SendToServerEx(Name);
end;
//************************************************** ****************************
procedure RequestEnchantItem(ObjectID: integer);
begin
buf:=#$58;
WriteD(ObjectID);
SendToServerEx(Name);
end;
//************************************************** ****************************
procedure OnTimerHP(Sender: TObject);
var
Item, scrl:integer;
begin
if ColvoScrl=0 then begin
timer.enabled:=false;
Say('Покупаю скролы');
delay(500);
buf:=#$4B#$00#$00#$00#$00#$00#$15#$AE#$0C;
SendToServerEx(Name);
buf:=#$A7#$B1#$02#$00#$00#$C0#$27#$09#$00#$0A#$00# $00#$00#$00#$00#$00#$00#$00#$00#$00#$00;
SendToServerEx(Name);
delay(700);
timer.enabled:=true;
exit;
end;
///if ColvoItem=1 then begin
/// Say('Остался последний предмет! Прервано!');
/// timer.enabled:=false;
/// exit;
///end;
Scrl:=GetNextScroll;
if scrl=-1 then begin
Say('Нет такой заточки! Прервано!');
timer.enabled:=false;
exit;
end;
Item:=GetNextItemID;
case Item of
-1: begin
Say('Нет такого предмета! Прервано!');
timer.enabled:=false;
exit;
end;
-2: begin
Say('Достигли максимальный уровень заточки! Прервано!');
timer.enabled:=false;
exit;
end;
-3: begin
//Say('Подбираем текущий уровень заточки!');
timer.enabled:=true;
exit;
end;
end;
//************************************************
UseItem(Scrl);
RequestEnchantItem(Item);
//************************************************
///Say('Заточили предмет! ItemID='+IntToStr(Item));
end;
//************************************************** ****************************
// вызывается при приходе каждого пакета, если скрипт включен
//************************************************** ****************************
begin
//************************************************** **************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//************************************************** **************************
if FromClient and (ConnectName=Name) and (pck[1]=#$1B) then begin
SocialID:=ReadD(2);
case SocialID of
//социальное действие Yes для начала затачивания
6: begin
CurEnchLvl:=0;
Say('Команда Старт!!!');
timer.enabled:=true;
exit;
end;
//социальное действие No для окончания
5: begin
Say('Команда Стоп!!!');
timer.enabled:=false;
exit;
end;
end;
end;
//************************************************** **************************
if FromServer then
case pck[1] of
//Пакет ItemList
#$1B: CreateItemBase; //создание базы предметов
//если удалили предметы, стираем в базе предметов пары ObjectID - ItemID
#$27: UpdateItemBase; //Обновление базы, если принят пакет на удаление предмета
end;
end.
да,и я тя спалил бан будет Neko скажу а она одмину)шутка я тож на дезе мнебы тоже ссылку на его старый скрипт заточки
Добавлено через 2 минуты
а еше ето ток на ИЛ?с4 пойдёт?
moOYkoOn
01.07.2009, 20:35
блин томат чёто я ваще тупой:( я засунул скрипт в л2пнх (3.1.8 от 05.09.2007) а когда в игре нажимаю галочку около скрипта у меня не окошко для точки выскакивает а в игре в ПМ мне пишет хрень какуюто! помоги ещё плз=)
блин томат чёто я ваще тупой
согласен...
у меня не окошко для точки выскакивает а в игре в ПМ мне пишет хрень какуюто!
все правильно, ты в начале скрипта вводиш ID всех не обходимых предметов, а потом включив скрипт в игре делаеш соц действие "yes"
moOYkoOn
02.07.2009, 14:39
томат последний вопрос=)
мне когда в игре пишет там ID предмета , точки и ещё пишет вотето CurEnchLvl=0 <---это что?
а и ещё объесни как делать социальное действие "yes"
плз томат))
там где пати кидать там всамом низу есть социдействия,выбираеш Yes
moOYkoOn
02.07.2009, 20:06
CurEnchLvl=0 <---это что?
а это чё?
moOYkoOn, это нынешний уровень заточки... сейчас подпралю скрипт, на русские надписи
Добавлено через 10 минут
мля... не могу выложить потому что ограничение по символам((((
Вот на депозите (http://depositfiles.com/files/a98owsp6w)
moOYkoOn
04.07.2009, 00:55
а почему я когда нажимаю социальное действие yes мне каждую секунду ошибка выскакивает?:confused::(:eek::eek:
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot