Скриптинг Форум посвещенный созданию скриптов для L2PacketHack
09.03.2009, 06:37
#1
Новичок
Регистрация: 09.03.2009
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Access violation at address 132346E5 in module 'l2pbx.exe'. Read of address 00000000.
Вот эта ошибка при попытке запуска скрипта.
Потом получается такое окошко как и нада только предметов нету.
Играю На Интерлюдии, всё написал правильно Ник/Интерлюд Тру/инвентарь.
Использую l2phx 3.4.1.83
12.03.2009, 16:41
#2
Новичок
Регистрация: 12.03.2009
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Нуб нубом
Вот ребята столкнулся с такой проблемой.
1 сервер игры l2evolution.net
2 программы юзал от l2phx.3.4.1.61 и до l2phx.3.4.1.83
3 Проблема когда запускаю скрипт на заточку выдает ошибку Access violation at address 132ABF00 in module 'l2pbx.exe'. Read of address 00000000. не в одной из етих программ не видно моего чара и немогу выбрать в комбо боксе ни точки ни оружие там все поля пустые. Как было написано ранше дето в постах не похожие ItemsID.ini де достать ItemsID.ini или как его совместить с тем что на сервере.
Плиз ребята помогите сутки сижу голову ломаю на серве макс точка 1к и того нуна заточить 15 итемов а ето 15 тысяч точек в ручную ето нереально )) да еше Гейм гвард убил
14.03.2009, 05:48
#3
Рыцарь
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
Цитата:
Сообщение от
Дими
когда запускаю скрипт на заточку выдает ошибку Access violation at address 132ABF00 in module 'l2pbx.exe'. Read of address 00000000
Про
Name='Щас Как Точну!'; //Вписать сюда имя чара?
не забыл?
Добавлено через 1 минуту
Цитата:
Сообщение от
RinZo
на сервере стоит мин заточка +10 и ниже этого не скидывается
Попробуйте эту строчку
Код:
// CurEnchLvl:=0; //начнем с начала. Расскоментировать для блессет скроллов
заменить на
Код:
CurEnchLvl:=10; //начнем с начала. Расскоментировать для блессет скроллов
Добавлено через 3 минуты
Цитата:
Сообщение от
Apocalipcis
Access violation at address 132346E5 in module 'l2pbx.exe'. Read of address 00000000.
Вот эта ошибка при попытке запуска скрипта.
Потом получается такое окошко как и нада только предметов нету.
Играю На Интерлюдии, всё написал правильно Ник/Интерлюд Тру/инвентарь.
Использую l2phx 3.4.1.83
Такая ошибка сразу наводит на мысль, что не соответствует имя в переменной Name, тому чару для которого запущен скрипт. Ещё, в переменную
Name надо писать ник с соблюдением регистра, так как в игре.
Добавлено через 3 минуты
Цитата:
Сообщение от
Niksan
NLObP, А как реализовать так, что бы он точил предмет сначала обычыми точками, а потом блезовсками ? ))
Писать новый скрипт, где проверять когда и какими свитками точить.
Добавлено через 23 минуты
>>>
скрипт заточки версия 0.9.от 30.01.2009, что-то правил, но уже не помню что
delphi Код:
//Автоматизация заточки предметов до необходимого уровня by NLObP
//version 0.9 от 30.01.2009г.
program Enchant_gracia;
{********************************************************************************
Возможности скрипта:
--------------------
- Панель управления;
- Затачиваем по очереди все предметы с ItemID пока не переломаем
или не заточим, один предмет всегда остаётся;
====================================================================
Работа скрипта проверялась на локальном Грация сервере
====================================================================
Необходимо затариться оружием, заточками и валерьянкой.
Name='NLObP'; //Вписать сюда имя чара
Внимание!
Из комбобокса обязательно надо выбрать вещь, чтобы скрипт узнал
ID и количество, только потом ставить напротив галочку.
Галочки снимать не надо, если кончились заточки/вещи - можно сразу идти
покупать и продолжать заточку.
В инвентаре должно быть не менее двух одинаковых затачиваемых вещей,
степень заточки значения не имеет.
Скрипт распространяется как есть, и я не несу ответственности за то,
что ВЫ натворили у себя, его используя.
MyICQ 402988808
********************************************************************************}
//............................................
//Список констант
const
Name='NLObP' ; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
//-------------------------
maxitems=250 ; //количество слотов в инвентаре чара
debug=false ; //если не хотим видеть отладочной информации
//............................................
//Список переменных
var
Item, scrl: integer ;
ScrollID, ScrollOID: integer ; //ScrollID скролла заточки
ItemID, ItemOID, ItemEnch: integer ; //ItemID затачиваемого предмета
MaxEnchLvl: integer ; //уровень заточки который требуется достичь
//ITEMs
BaseItems: array[1 ..maxitems , 1 ..12 ] of integer ; //все предметы в инвентаре
StartTime, EndTime: TDateTime ;
good, broken: integer ;
ready: boolean ;
timer, showinf : TTimer;
ItemCount, CurEnchLvl: integer ;
ItemsName, StringList : TStringList ; //названия предметов, имена продавцов
FormMain : TForm; //Создаваемая форма
Splitter1, Splitter2 : TSplitter;
Stats, Msg : TMemo;
Panel1 : TPanel;
GroupBox2 : TGroupBox;
Label1, Label2, Label3, Label4, Label12, Label13 : TLabel;
ComboBoxItem, ComboBoxScroll : TComboBox;
CheckBoxItem, CheckBoxScroll : TCheckBox;
ButtonStartEnchant, ButtonStopEnchant : TButton;
EditItemVal, EditScrollVal, EditScrollOID, EditItemOID, Edit1, Edit2 : TEdit;
//............................................
//*************************************
//Обработчики событий для элементов управления на форме
//......................................
//CheckBoxItem
procedure CheckBoxItem_Click( Sender: TCheckBox) ;
//Event : OnClick
begin
if CheckBoxItem.Checked
then begin
ItemOID:=BaseItems[ComboBoxItem.ItemIndex +1 ,2 ];
ItemID:=BaseItems[ComboBoxItem.ItemIndex +1 ,3 ];
//проверка
// EditItemOID.Text:=Inttostr(ItemID);
// EditItemVal.text:=inttostr(ItemOID);
ComboBoxItem.Enabled :=false ; //выключаем
end else begin
ItemID:=0 ; //отмена
ItemOID:=0 ;
ComboBoxItem.Enabled :=true ; //включаем
//RequestItemList вызываем инвентарь
buf:=hstr( '14' ) ;
SendToServerEx( Name) ;
end ;
end ;
//......................................
//......................................
//ComboBoxItem
procedure ComboBoxItem_Click( Sender: TComboBox) ;
//Event : OnClick
begin
ItemOID:=BaseItems[ComboBoxItem.ItemIndex +1 ,2 ];
ItemID:=BaseItems[ComboBoxItem.ItemIndex +1 ,3 ];
// 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:=BaseItems[ComboBoxScroll.ItemIndex +1 ,2 ];
ScrollID:=BaseItems[ComboBoxScroll.ItemIndex +1 ,3 ];
//проверка
// EditScrollOID.Text:=Inttostr(ScrollID);
// EditScrollVal.text:=inttostr(ScrollOID);
ComboBoxScroll.Enabled :=false ; //выключаем
end else begin
ScrollID:=0 ; //отмена
ScrollOID:=0 ;
ComboBoxScroll.Enabled :=true ; //включаем
//RequestItemList вызываем инвентарь
buf:=hstr( '14' ) ;
SendToServerEx( Name) ;
end ;
end ;
//......................................
//......................................
//ComboBoxScroll
procedure ComboBoxScroll_Click( Sender: TComboBox) ;
//Event : OnClick
begin
ScrollOID:=BaseItems[ComboBoxScroll.ItemIndex +1 ,2 ];
ScrollID:=BaseItems[ComboBoxScroll.ItemIndex +1 ,3 ];
// 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 ;
ButtonStartEnchant.Enabled := false ;
ButtonStopEnchant.Enabled := TRUE ;
end ;
//......................................
//......................................
//ButtonStopEnchant
procedure ButtonStopEnchant_Click( Sender: TButton) ;
//Event : OnClick
begin
msg.Lines .Add ( 'Команда Стоп!!!' ) ;
timer.enabled :=false ;
ready:=false ;
ButtonStartEnchant.Enabled := true ;
ButtonStopEnchant.Enabled := 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.9' ;
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 :=500 ; //время задержки
ShowInf:=TTimer.Create ( nil ) ;
ShowInf.OnTimer :=@OnShowInfo;
ShowInf.enabled :=true ;
ShowInf.interval :=1000 ; //время задержки
StartTime:=time ;
good:=0 ;
broken:=0 ;
ready:=false ;
//RequestItemList вызываем инвентарь
buf:=hstr( '14' ) ;
SendToServerEx( Name) ;
StringList:=TStringList .Create ;
ItemsName:=TStringList .Create ;
try
ItemsName.LoadFromFile ( 'itemsid.ini' ) ;
except
msg.Lines .Add ( 'itemsid.ini не найден!' ) ;
exit ;
end ;
ButtonStartEnchant.Enabled := true ;
ButtonStopEnchant.Enabled := false ;
end ;
//..............................................................................
procedure Free; //Вызывается при выключении скрипта
begin
BaseItems:=nil ; //нельзя так делать с массивом
ShowInf.Enabled :=false ; ShowInf.Interval :=0 ; ShowInf.Free ; ShowInf.OnTimer :=nil ;
timer.Enabled :=false ; timer.Interval :=0 ; timer.Free ; timer.OnTimer :=nil ;
StringList.Clear ;
ItemsName.Clear ;
//достаточно освободить форму
Free_FormMain;
end ;
//..............................................................................
procedure ShowInfo;
var
i: integer ;
begin
stats.Lines .Clear ;
stats.Lines .Add ( 'Имя чара :' +Name) ;
stats.Lines .Add ( 'Время старта :' +TimeToStr ( starttime) ) ;
stats.Lines .Add ( 'Время работы :' +TimeToStr ( time-starttime) ) ;
stats.Lines .Add ( 'Улучшили: ' +IntToStr ( good) ) ;
stats.Lines .Add ( 'Сломали: ' +IntToStr ( broken) ) ;
end ;
//......................................
//***************************************************************
procedure OnShowInfo( Sender: TObject ) ; //выводим в форму
begin
ShowInfo;
end ;
//..............................................................................
//послать сообщение в чат
//use: SendMessage(msg);
procedure SendMessage( msg:string ) ; //отправка системных сообщений клиенту
begin
buf:=#$4A;
WriteD( 0 ) ;
WriteD( 10 ) ;
WriteS( '' ) ;
WriteS( msg) ;
SendToClientEx( Name) ;
end ;
//..............................................................................
procedure debugMsg( msg: string ) ;
begin
if debug then begin
sendMSG( msg) ;
SendMessage( msg) ;
end ;
end ;
//..............................................................................
procedure ItemList;
{Создаем базу Items}
//11=ItemList:h(ShowWindow)h(ListSize:Loop.01.0021)h(ItemType1)d(ObjectID)
// d(ItemID:Get.Func01)d(LocationSlot)d(Count)h(ItemType2)h(CustomType1)
// h(isEquipped)d(BodyPart)h(EnchantLevel)h(CustType2)d(AugmentationID)
// d(Mana)d(AttackAttrElement)d(AttackAttrElementVal)d(DefAttrFire)
// d(DefAttrWater)d(DefAttrWind)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)
var
i, j, k: integer ;
ListCount: integer ;
begin
j:=4 ; //смещение для ListCount
ListCount:=ReadH( j) ; //количество итемов не должно превышать max!
for i:=1 to maxitems do
if ( i<=ListCount) then begin
BaseItems[i,1 ]:=ReadH( j) ; //ItemType1
BaseItems[i,2 ]:=ReadD( j) ; //ObjectID
BaseItems[i,3 ]:=ReadD( j) ; //ItemID
BaseItems[i,4 ]:=ReadD( j) ; //LocationSlot
BaseItems[i,5 ]:=ReadD( j) ; //Count
BaseItems[i,6 ]:=ReadH( j) ; //ItemType2
BaseItems[i,7 ]:=ReadH( j) ; //CustomType1
BaseItems[i,8 ]:=ReadH( j) ; //isEquipped
BaseItems[i,9 ]:=ReadD( j) ; //BodyPart
BaseItems[i,10 ]:=ReadH( j) ; //EnchantLevel
BaseItems[i,11 ]:=ReadH( j) ; //CustType2
BaseItems[i,12 ]:=ReadD( j) ; //AugmentationID
//debugmsg('OID='+inttostr(BaseItems[i,2])+' ID='+inttostr(BaseItems[i,3]));
inc ( j,40 ) ;
end else for k:=1 to 12 do BaseItems[i,k]:=0 ; // забиваем нулями
//вносим изменения в чекбоксы
StringList.Clear ;
try
for i:=1 to ListCount do begin
try
//StringList.Add(ItemsName[ItemBase[2,i]-1]); //записываем название вещей из инвентаря
StringList.Add ( ItemsName.Values [IntToStr( BaseItems[i,3 ]) ]) ; //записываем название вещей из инвентаря
except ;
//msg.Lines.Add('Пропускаем! Нет ItemID='+inttostr(BaseItems[i,3])+' в itemsid.ini');
end
end ;
except ;
//msg.Lines.Add('ошибка в CreateItemBase->StringList.Add()');
//msg.Lines.Add(inttostr(BaseItems[i,3]));
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 ;
//..............................................................................
procedure InventoryUpdate; //пакет 27, Создает базу ObjectID по ItemID
var
i, ii, j, k, ListCount, UpdType : integer ;
ItemType1, ObjectID, ItemID, LocationSlot, Count, ItemType2, CustomType1,
isEquipped, BodyPart, EnchantLevel, CustType2, AugmentationID :integer ;
additem : boolean ;
begin
additem:=true ;
ListCount:=ReadH( 2 ) ; //количество итемов
// debugmsg('ListCount='+inttostr(ListCount));
j:=4 ; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
for i:=1 to ListCount do begin
UpdType:=ReadH( j) ;
ItemType1:=ReadH( j) ;
ObjectID:=ReadD( j) ;
ItemID:=ReadD( j) ;
LocationSlot:=ReadD( j) ;
Count:=ReadD( j) ;
ItemType2:=ReadH( j) ;
CustomType1:=ReadH( j) ;
isEquipped:=ReadH( j) ;
BodyPart:=ReadD( j) ;
EnchantLevel:=ReadH( j) ;
CustType2:=ReadH( j) ;
AugmentationID:=ReadD( j) ;
case UpdType of
1 : k:=0 ; //добавлен новый предмет
2 : k:=ObjectID; //изменен предмет в инвентаре
3 : begin //удален
for ii:=1 to maxitems do
if ( BaseItems[ii,2 ]=ObjectID) then begin
//debugmsg('удаляем OID='+inttostr(BaseItems[ii,2])+' ID='+inttostr(BaseItems[ii,3]));
for k:=1 to 12 do BaseItems[ii,k]:=0 ;
break ;
end ;
end ;
end ;
for ii:=1 to maxitems do begin
if ( BaseItems[ii,2 ]=k) then begin
BaseItems[ii,1 ]:=ItemType1;
//BaseItems[ii,2]:=ObjectID;
BaseItems[ii,3 ]:=ItemID;
BaseItems[ii,4 ]:=LocationSlot;
BaseItems[ii,5 ]:=Count;
BaseItems[ii,6 ]:=ItemType2;
BaseItems[ii,7 ]:=CustomType1;
BaseItems[ii,8 ]:=isEquipped;
BaseItems[ii,9 ]:=BodyPart;
BaseItems[ii,10 ]:=EnchantLevel;
BaseItems[ii,11 ]:=CustType2;
BaseItems[ii,12 ]:=AugmentationID;
//debugmsg('доб/изм OID='+inttostr(BaseItems[ii,2])+' ID='+inttostr(BaseItems[ii,3]));
break ;
end ;
end ;
inc ( j,38 ) ;
end ;
end ;
//..............................................................................
function GetItem( ID, FieldIn, FieldOut : integer ) : integer ;
{GetInv(что ищем, № поля где ищем, № поля что возвращать)
где:
ID - искомый код;
FieldIn - по какому полю ищем;
FieldOut - какое поле возвращаем;
1=ItemType1; 2=ObjectID;3=ItemID;4=LocationSlot;5=Count;6=ItemType2;7=CustomType1;
8=isEquipped;9=BodyPart;10=EnchantLevel;11=CustType2;12=AugmentationID;
ex1: GetInv(6408,2,1) - вернет ObjectID свадебного платья, если онное лежит в
инвентаре, иначе вернет -1
ex2: GetInv(6408,2,8) - вернет уровень заточки первого попавшегося в инвентаре
свадебного платья, если свадебного платья нет, то вернет -1
}
var
i: integer ;
begin
for i:=1 to maxitems do
if ( BaseItems[i,FieldIn]=ID) then begin
Result:=BaseItems[i,FieldOut];
//debugmsg('Нашли='+inttostr(result));
exit ;
end ;
Result:=-1 ;
end ;
//..............................................................................
//******************************************************************************
//находим в инвентаре предмет с ItemID и возвращаем его ObjectID
function GetItemEnchant( item,lvl:integer ) : integer ;
var
i : integer ;
begin
//ничего не нашли
result:=0 ;
for i:=1 to maxitems do
if ( BaseItems[i,3 ]=item) and ( BaseItems[i,10 ]=lvl) then begin
ItemEnch:=BaseItems[i,10 ];
Result:=BaseItems[i,2 ];
//debugmsg('Нашли='+inttostr(result));
exit ;
end ;
// Result:=-1;
end ;
//******************************************************************************
function SumItem( Item: integer ) :integer ;
var
sum , i : integer ;
begin
result:=0 ;
//находим подходящий предмет по ItemID
for i:=1 to maxitems do begin
if ( BaseItems[i,3 ]=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+BaseItems[i,5 ]; //count
//inc(result);
end ;
end ;
end ;
//******************************************************************************
procedure UseItem( ObjectID: integer ) ;
begin
buf:=#$19 ;
WriteD( ObjectID) ;
WriteD( 0 ) ;
SendToServerEx( Name) ;
end ;
//******************************************************************************
procedure RequestEnchantItem( ObjectID: integer ) ;
begin
buf:=#$5F;
WriteD( ObjectID) ;
SendToServerEx( Name) ;
end ;
//******************************************************************************
procedure OnTimer( Sender: TObject ) ;
begin
EditItemVal.text :=inttostr ( sumitem( ItemID) ) ;
EditScrollVal.text :=inttostr ( sumitem( ScrollID) ) ;
if ( strtoint ( Edit2.text ) >=strtoint ( Edit1.Text ) ) then begin
msg.Lines .Add ( 'Нет подходящих предметов для улучшения! Прервано!' ) ;
ButtonStartEnchant.Enabled := true ;
ButtonStopEnchant.Enabled := false ;
timer.enabled :=false ;
exit ;
end ;
if ( sumitem( ItemID) <=1 ) then begin
// if (sumitem(ItemID)<=0) then begin //если надо точить одну вещь
ButtonStartEnchant.Enabled := true ;
msg.Lines .Add ( 'Предметов для улучшения должно быть больше двух! Прервано!' ) ;
ButtonStartEnchant.Enabled := true ;
ButtonStopEnchant.Enabled := false ;
timer.enabled :=false ;
exit ;
end ;
if ready then exit ;
ScrollOID:=GetItem( ScrollID,3 ,2 ) ;//найдем OID скролла
if ScrollOID=-1 then begin
msg.Lines .Add ( 'Кончились свитки! Прервано!' ) ;
ButtonStartEnchant.Enabled := true ;
ButtonStopEnchant.Enabled := false ;
timer.enabled :=false ;
exit ;
end ;
UseItem( ScrollOID) ;
msg.Lines .Add ( 'Задействовали свиток ScrollID=' +IntToStr ( scrollID) +' ScrollOID=' +IntToStr ( ScrollOID) ) ;
ready:=true ; //готовы затачивать
end ;
//******************************************************************************
// вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
begin
//****************************************************************************
//не обрабатываем пустые пакеты
if pck='' then exit ;
//****************************************************************************
if FromServer then
case pck[1 ] of
//......................................
#$11 : begin
//debugmsg('S>C Пакет ItemListPacket #$11');
ItemList;
end ;
//......................................
#$21 : begin
//debugmsg('S>C Пакет InventoryUpdate #$21');
InventoryUpdate;
end ;
//......................................
//Пакет ChooseInventory
#$7C: begin
if ready then begin //and (readd(2)=itemid)
//ищем подходящий предмет для заточки
timer.enabled :=false ; //отключаем пока не найдем предмет для заточки
repeat
ItemOID:=GetItemEnchant( ItemID, CurEnchLvl) ;
if ItemOID=0 then begin
inc ( CurEnchLvl) ;
Edit2.text :=inttostr ( CurEnchLvl) ;
end ;
until ItemOID<>0 ;
//************************************************
if ( CurEnchLvl>=strtoint ( Edit1.Text ) ) then begin
msg.Lines .Add ( 'Нет подходящих предметов для улучшения! Прервано!' ) ;
msg.Lines .Add ( 'Достигли MaxEnchLvl!' ) ;
timer.enabled :=false ;
ready:=false ;
delay( 500 ) ;
RequestEnchantItem( -1 ) ;
exit ;
end else begin
// msg.Lines.Add('Пробуем улучшить ItemID='+IntToStr(ItemID)+' ItemOID='+IntToStr(ItemOID)+' ItemEnchLvl='+IntToStr(ItemEnch));
RequestEnchantItem( ItemOID) ;
ready:=false ;
timer.enabled :=true ;
end ;
end ;
end ;
#$87 : begin
if readd( 2 ) =0 then begin
msg.Lines .Add ( 'Улучшили ItemID=' +IntToStr ( ItemID) +' ItemOID=' +IntToStr ( ItemOID) +' ItemEnchLvl=' +IntToStr ( ItemEnch) ) ;
inc ( good) ;
end else begin
msg.Lines .Add ( 'Сломали ItemID=' +IntToStr ( ItemID) +' ItemOID=' +IntToStr ( ItemOID) +' ItemEnchLvl=' +IntToStr ( ItemEnch) ) ;
inc ( broken) ;
end ;
// CurEnchLvl:=0; //начнем с начала
end ;
end ;
end .
<<<
Добавлено через 7 минут
Цитата:
Сообщение от
Maxima
Код:
c>s UseItemn (19 03 22 6A 10 00 00 00 00 )
s>c SystemMessage Типо "Выбирите предмет для улучшения"(62 2F 01 00 00 00 00 00 00)
s>c ChooseInventory (7C B3 03 00 00)
c>s RequestEnchantItem(5F 05 2E 9D 10 )
s>c EnchantResult(87 00 00 00 00 00 00 00 00 00 00 00 00 )
s>c StatusUpdate(18 E0 93 84 10 01 00 00 00 0E 00 00 00 94 59 08 00)
s>c ItemList(11 00 ...... размер Pазмер: 13533+2)в просмотре пакетов страшно просматривать ПХ зависает на 2 3 секунды
s>c UserInfo(32 .... размер 702+2)
Именно эти пакеты и используются в скрипте - 19, 7C, 5F, 87 (использую, но может быть не правильно? 0 - прошла точка, иначе - не прошла), 11, (21 как вспомогательный, в скрипте не нужен)
Добавлено через 5 минут
Цитата:
Сообщение от
Maxima
Такая картина: скрипт открывает точку отсылает пакет RequestEnchantItem , в окошке пишет скрипта прибавляется колво сломанных айтемов, цикл повторяется снова и снова по 80 или 100 раз, потом вдруг какбы не взначай точит одну пуху, потом этот (пустой) цикл снова повторяется, иногда скрипт просто останавливается не обрываясь, нажимаю стоп потом старт все начинается снова...
Лог скинь, который скрипт в окошке выводит. Что за сервер, хроники?
Последний раз редактировалось NLObP, 14.03.2009 в 05:53 .
Причина: Добавлено сообщение
За это сообщение NLObP нажился 2 спасибками от:
29.04.2009, 20:08
#4
Новичок
Регистрация: 29.04.2009
Сообщений: 1
Сказал Спасибо: 0
Имеет 2 спасибок в 1 сообщении
а скрипт работает если сам прокси не подключается к серверу?
вот что появляется когда ставлю или убираю галочку!
Access violation at address 00552AED in module 'l2pbx.exe'. Read of address 00000000.
Вписал всё как было указано, поставил галочку и появилась ошибка сперва о том что itemsid.ini не найден! я заменил! в этой части скрипта какраз есть эта строка! и ошибка всё равно остаётся!
пс ошибка выделена жирным шрифтом!
ItemsName:=TStringList.Create;
try
ItemsName.LoadFromFile('.\settings\itemsid.ini');
except
msg.Lines.Add('itemsid.ini не найден!');
exit;
end;
end;
//.................................................. ............................
procedure Free; //Вызывается при выключении скрипта
begin
BaseItems:=nil; //NLObP: нельзя так делать с массивом //alexteam: а зачем над ним вообще производить операции в онфрее ? лишнее. 2NLObP насколько помниться в пакскрипте вариант используется. оно то присвоиться без ошибки, по идее.. но зачем.. ?..
ShowInf.Enabled:=false; //alexteam:лишнее
ShowInf.Interval:=0; //alexteam:лишнее
ShowInf.Free; //alexteam:этого достаточно
ShowInf.OnTimer:=nil; //alexteam:лишнее. и вообще ? нафига ? особенно после фрии ?.. обьект уже уничтожен. обращение к полю несуществующего объекта = acess violation.
StringList.Clear; //alexteam: StringList.destroy; и очистит и убьет объект. после этого никаких обращений к StringList. ибо опять же аксес виолейшин.
ItemsName.Clear;//alexteam: ItemsName.destroy; тожесамое.
Последний раз редактировалось alexteam, 01.05.2009 в 02:34 .
За это сообщение F1rst нажился 2 спасибками от:
29.01.2009, 21:05
#5
Новичок
Регистрация: 29.01.2009
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
чот у меня не робить
PS мой преведущий пост удалите
31.01.2009, 02:34
#6
Новичок
Регистрация: 31.01.2009
Сообщений: 2
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
у меня есть 1 вопрос. вот этот скрипт у меня(нтерлюд) хорошо работает, когда нада вовремя останавливается даж с блесами и тд. но дело все в том, что играю я на серве где минимальня точка 10 и когда пуха ломается хоть и написано в чате что заточено неудачно на 0, всеравно точка сбрасывается до 10, и после зависает и прога и клиент. можно ли исправить это чтобы например, когда точишь минимум был уже 10 и точка заного с 10 начиналась при поломке, или что то подобное сделать? заранее спасибо.
07.02.2009, 11:42
#7
Новичок
Регистрация: 25.01.2009
Сообщений: 6
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Как сделать , что бы не по очереди точило , а сначала одну заточила , потом вторую?
09.02.2009, 01:22
#8
Рыцарь
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
Цитата:
Сообщение от
gmb
Как сделать , что бы не по очереди точило , а сначала одну заточила , потом вторую?
Могу предложить только, покупать одну вещь и точить её.
Добавлено через 1 минуту
Цитата:
Сообщение от
emrik
почему после того как все оружия поломались скрипт виснет?
В чём это выражается? У меня останавливается в зависимости от условий с соответствующим сообщением.
Последний раз редактировалось NLObP, 09.02.2009 в 01:22 .
Причина: Добавлено сообщение
За это сообщение NLObP нажился спасибкой от:
09.02.2009, 16:53
#9
Новичок
Регистрация: 29.01.2009
Сообщений: 15
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Просто после того как переломалось все оружие l2phx просто виснет и все и в игре тоже не могу пошевелится....приходится выключать прогу через диспетчер задач и потом заново заходить.... подскажи плиз
16.02.2009, 03:16
#10
Новичок
Регистрация: 15.02.2009
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
А на Хеллбоунде какой скрипт использовать? Вроде ля грации подходит но вещей и Свитков в комбо боксах не видно.
Если есть у кого Свежий ItemID скиньте на файлообменник плз.
ЗЫ используется l2phx.3.4.1.81, если есть свежее назовите номер версии
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 16:53 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!