PDA

Просмотр полной версии : Следим за Рейд Боссами


Miler
08.07.2008, 23:10
Кто может зделать скрипт для рейдов. Суть такова.
Запускаеш окно с чаром или бота и он спамит таргет нужной цели (например /target Baium) и как тока он берёт его в таргет начинает спамить в пм определённому чару сообщения с определённым помежутком (пофик что). Ну и совсем было бы круто если бы ещё и звуковой сигнал можно было как-то впихнуть, но я не знаю можно ли через l2phx это зделать.

З.Ы. модеры плиз подправьте темку а то я малость опечатался :(

Miler
10.07.2008, 15:39
ID
25035 Shilen's Messenger Cabrio (Raid Boss )
29019 Antharas
29020 Baium (это когда он в камне и отображаеться как нпс) но могу спутать эти 2 ид (не нашол в файлах клиента расшифровку кто есть кто)
29025 Baium (это вроде када он моб)
29001 Queen Ant
25220 Death Lord Hallate (Raid Boss )
25054 Kernon (Raid Boss )
25126 Longhorn Golkonda (Raid Boss )

Добавлено через 10 минут
И если можно внести в скрипт несколько человек, которым будет слаться сообщения. NLObP, что-то наподобие той панельки, что ты делал для скрипта заточек, тока там графы выбора: мониторинг мобов, спискок людей кому отправлять, что отправлять и с какой переодичностью. А если, как сказал VORON можно зделать ещё и без клиента будет вообще идеально.

NLObP
11.07.2008, 04:03
Вот в первом приближении. На РБ не проверял.
Как обычно, настраиваем скрипт для работы на своем сервере.
Изменяем:
Name='NLObP'; //Вписать сюда имя чара
//kID=1000000; //коэфф вычитаемый из NpcID C4 lagam.net
kID=1023000; //коэфф вычитаемый из NpcID C6 theAbyss.ru
Также, надо добавить/убавить/откорректировать в этих секциях для РБ и Игроков строчки вида:
ComboBoxNpc.Items.ADD('29019=Antharas');

//......................................
//ComboBoxNpc
ComboBoxNpc := TComboBox.Create(Result);
ComboBoxNpc.Parent := GroupBox2;
ComboBoxNpc.Left := 90;
ComboBoxNpc.Top := 16;
ComboBoxNpc.Width := 169;
ComboBoxNpc.Height := 21;
ComboBoxNpc.Visible := TRUE;
ComboBoxNpc.Tag := 0;
ComboBoxNpc.Enabled := TRUE;
ComboBoxNpc.Hint := 'Выбери из списка Рейд Босса';
ComboBoxNpc.ShowHint := TRUE;
ComboBoxNpc.Text := 'ComboBoxNpc';
ComboBoxNpc.Font.Name := 'Tahoma';
ComboBoxNpc.Font.Size := 8;
ComboBoxNpc.Font.Color := clWindowText;
ComboBoxNpc.Color := clWindow;
ComboBoxNpc.TabOrder := 1;
ComboBoxNpc.TabStop := TRUE;
ComboBoxNpc.Sorted := FALSE;
ComboBoxNpc.ItemHeight := 13;
ComboBoxNpc.Items.ADD('25035=Shilens Messenger Cabrio (Raid Boss)');
ComboBoxNpc.Items.ADD('29019=Antharas');
ComboBoxNpc.Items.ADD('29020=Baium (когда он в камне)');
ComboBoxNpc.Items.ADD('29025=Baium (когда он моб)');
ComboBoxNpc.Items.ADD('29001=Queen Ant');
ComboBoxNpc.Items.ADD('25220=Death Lord Hallate (Raid Boss)');
ComboBoxNpc.Items.ADD('25054=Kernon (Raid Boss )');
ComboBoxNpc.Items.ADD('25126=Longhorn Golkonda (Raid Boss)');
//test
ComboBoxNpc.Items.ADD('8573=Monakan Fishermens Guild Member');
ComboBoxNpc.ItemIndex := 0;
ComboBoxNpc.OnClick := @ComboBoxNpc_Click;
//......................................
//......................................
//ComboBoxPlayer
ComboBoxPlayer := TComboBox.Create(Result);
ComboBoxPlayer.Parent := GroupBox2;
ComboBoxPlayer.Left := 90;
ComboBoxPlayer.Top := 40;
ComboBoxPlayer.Width := 169;
ComboBoxPlayer.Height := 21;
ComboBoxPlayer.Visible := TRUE;
ComboBoxPlayer.Tag := 0;
ComboBoxPlayer.Enabled := TRUE;
ComboBoxPlayer.Hint := 'Выбери из списка имя игрока, которому шлем сообщения';
ComboBoxPlayer.ShowHint := TRUE;
ComboBoxPlayer.Text := 'ComboBoxPlayer';
ComboBoxPlayer.Font.Name := 'Tahoma';
ComboBoxPlayer.Font.Size := 8;
ComboBoxPlayer.Font.Color := clWindowText;
ComboBoxPlayer.Color := clWindow;
ComboBoxPlayer.TabOrder := 5;
ComboBoxPlayer.TabStop := TRUE;
ComboBoxPlayer.Sorted := FALSE;
ComboBoxPlayer.ItemHeight := 13;
ComboBoxPlayer.Items.ADD('NLObP');
ComboBoxPlayer.ItemIndex := 0;
ComboBoxPlayer.OnClick := @ComboBoxPlayer_Click;
//......................................


//Следим за РБ by NLObP для L2PacketHack v.3.1.9+ by Xkor
//version 0.2 от 11.07.2008г.
program spy;
{************************************************* *******************************
Возможности скрипта:
--------------------
0.1
+ Панель управления;
+ Посылает приватное сообщение игроку, когда увидит РБ;

Проверялось на TheAbyss.ru x300(interlude)

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

MyICQ 402988808
************************************************** ******************************}

//............................................
//Список констант
const
Name='Teremok'; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false
//kID=1000000; //коэфф вычитаемый из NpcID C4 lagam.net
kID=1023000; //коэфф вычитаемый из NpcID C6 theAbyss.ru

//............................................
//Список переменных
var
PlayerID, PlayerOID:integer;
PlayerName, TmpName, _message : string;
NpcID,NpcOID:integer;
ready : boolean;
timer : TTimer;
FormMain : TForm; //Создаваемая форма
Splitter1, Splitter2 : TSplitter;
Stats, Msg : TMemo;
Panel1 : TPanel;
GroupBox2 : TGroupBox;
Label2, Label4, Label12, Label13 : TLabel;
CheckBoxNpc : TCheckBox;
ComboBoxNpc : TComboBox;
ButtonStart, ButtonStop : TButton;
CheckBoxPlayer : TCheckBox;
ComboBoxPlayer : TComboBox;
EditNpcID, EditPlayerID, EditPlayerOID, EditNpcOID : TEdit;
Label1, Label3 : TLabel;
Edit1, Edit2 : TEdit;
//............................................
//*************************************
//Обработчики событий для элементов управления на форме
//......................................
//CheckBoxNpc
procedure CheckBoxNpc_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxNpc.Checked
then begin
EditNpcID.text:=Inttostr(NpcID); //inttostr(sumNpc(NpcID));
ComboBoxNpc.Enabled:=false; //выключаем
end else begin
NpcID:=0; //отмена
NpcOID:=0;
ComboBoxNpc.Enabled:=true; //включаем
EditNpcOID.Text:='0';
EditNpcID.text:='0';
end;
end;
//......................................
//......................................
//ComboBoxNpc
procedure ComboBoxNpc_Click(Sender: TComboBox);
//Event : OnClick
begin
NpcID:=ExtractIDValues(ComboBoxNpc.Items.Strings[ComboBoxNpc.ItemIndex]);
end;
//......................................
//......................................
//CheckBoxPlayer
procedure CheckBoxPlayer_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxPlayer.Checked
then begin
PlayerName:=TmpName;
ComboBoxPlayer.Enabled:=false; //выключаем
end else begin
PlayerID:=0; //отмена
PlayerOID:=0;
ComboBoxPlayer.Enabled:=true; //включаем
end;
end;
//......................................
//......................................
//ComboBoxPlayer
procedure ComboBoxPlayer_Click(Sender: TComboBox);
//Event : OnClick
begin
TmpName:=ComboBoxPlayer.Items.Strings[ComboBoxPlayer.ItemIndex];
EditPlayerID.text:=TmpName;
end;
//......................................
//......................................
//ButtonStart
procedure ButtonStart_Click(Sender: TButton);
//Event : OnClick
begin
if CheckBoxPlayer.Checked and CheckBoxNpc.Checked
then begin
msg.Lines.Add('Команда Старт!!!');
ready:=true; //готовы к работе
timer.interval:=strtoint(edit1.text);
//для версии 3.1.9+ можно попробовать отключить клиента
//Варнинг! Опасно для жизни! =)
//buf:=#$7E;
//SendToClientEx(Name);
ButtonStop.Enabled := TRUE;
ButtonStart.Enabled := FALSE;
end else
msg.Lines.Add('Для работы скрипта выбери РБ и Игрока');
end;
//......................................
//......................................
//ButtonStop
procedure ButtonStop_Click(Sender: TButton);
//Event : OnClick
begin
msg.Lines.Add('Команда Стоп!!!');
timer.enabled:=false;
ready:=false;
ButtonStop.Enabled := FALSE;
ButtonStart.Enabled := TRUE;
end;
//......................................
//......................................
procedure Edit1_Exit(Sender: TEdit);
//Event : OnExit
begin
// MyHPID:=ExtractIDValues(ComboBoxHPotion.Npcs.Strin gs[ComboBoxHPotion.ItemIndex]);
// EditHPotionID.Text:=Inttostr(FindNpc(MyHPID));
// EditHPotionOID.text:=inttostr(NpcBase2[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 := 'Spy by NLObP v.0.2';
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 := 99;
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 := '5000';
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 := 'NpcOID';
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 := 'NpcID';
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;
//......................................
//......................................
//CheckBoxNpc
CheckBoxNpc := TCheckBox.Create(Result);
CheckBoxNpc.Parent := GroupBox2;
CheckBoxNpc.Left := 18;
CheckBoxNpc.Top := 18;
CheckBoxNpc.Width := 66;
CheckBoxNpc.Height := 17;
CheckBoxNpc.Visible := TRUE;
CheckBoxNpc.Tag := 0;
CheckBoxNpc.Enabled := TRUE;
CheckBoxNpc.Hint := 'Поставить галочку если выбрал за кем следить';
CheckBoxNpc.ShowHint := TRUE;
CheckBoxNpc.Caption := 'Рейд Босс';
CheckBoxNpc.Font.Name := 'Tahoma';
CheckBoxNpc.Font.Size := 8;
CheckBoxNpc.Font.Color := clWindowText;
CheckBoxNpc.Color := clBtnFace;
CheckBoxNpc.TabOrder := 0;
CheckBoxNpc.TabStop := TRUE;
CheckBoxNpc.Checked := FALSE;
CheckBoxNpc.AllowGrayed := FALSE;
CheckBoxNpc.State := cbUnchecked;
CheckBoxNpc.OnClick := @CheckBoxNpc_Click;
//......................................
//......................................
//ComboBoxNpc
ComboBoxNpc := TComboBox.Create(Result);
ComboBoxNpc.Parent := GroupBox2;
ComboBoxNpc.Left := 90;
ComboBoxNpc.Top := 16;
ComboBoxNpc.Width := 169;
ComboBoxNpc.Height := 21;
ComboBoxNpc.Visible := TRUE;
ComboBoxNpc.Tag := 0;
ComboBoxNpc.Enabled := TRUE;
ComboBoxNpc.Hint := 'Выбери из списка Рейд Босса';
ComboBoxNpc.ShowHint := TRUE;
ComboBoxNpc.Text := 'ComboBoxNpc';
ComboBoxNpc.Font.Name := 'Tahoma';
ComboBoxNpc.Font.Size := 8;
ComboBoxNpc.Font.Color := clWindowText;
ComboBoxNpc.Color := clWindow;
ComboBoxNpc.TabOrder := 1;
ComboBoxNpc.TabStop := TRUE;
ComboBoxNpc.Sorted := FALSE;
ComboBoxNpc.ItemHeight := 13;
ComboBoxNpc.Items.ADD('25035=Shilens Messenger Cabrio (Raid Boss)');
ComboBoxNpc.Items.ADD('29019=Antharas');
ComboBoxNpc.Items.ADD('29020=Baium (когда он в камне)');
ComboBoxNpc.Items.ADD('29025=Baium (когда он моб)');
ComboBoxNpc.Items.ADD('29001=Queen Ant');
ComboBoxNpc.Items.ADD('25220=Death Lord Hallate (Raid Boss)');
ComboBoxNpc.Items.ADD('25054=Kernon (Raid Boss )');
ComboBoxNpc.Items.ADD('25126=Longhorn Golkonda (Raid Boss)');
//test
ComboBoxNpc.Items.ADD('8573=Monakan Fishermens Guild Member');
ComboBoxNpc.ItemIndex := 0;
ComboBoxNpc.OnClick := @ComboBoxNpc_Click;
//......................................
//......................................
//ButtonStart
ButtonStart := TButton.Create(Result);
ButtonStart.Parent := GroupBox2;
ButtonStart.Left := 263;
ButtonStart.Top := 67;
ButtonStart.Width := 75;
ButtonStart.Height := 25;
ButtonStart.Visible := TRUE;
ButtonStart.Tag := 0;
ButtonStart.Enabled := TRUE;
ButtonStart.Hint := '';
ButtonStart.ShowHint := FALSE;
ButtonStart.Caption := 'Start';
ButtonStart.Font.Name := 'Tahoma';
ButtonStart.Font.Size := 8;
ButtonStart.Font.Color := clWindowText;
ButtonStart.Font.CharSet := 1;
ButtonStart.TabOrder := 2;
ButtonStart.TabStop := TRUE;
ButtonStart.Cancel := FALSE;
ButtonStart.ModalResult := 0;
ButtonStart.OnClick := @ButtonStart_Click;
//......................................
//......................................
//ButtonStop
ButtonStop := TButton.Create(Result);
ButtonStop.Parent := GroupBox2;
ButtonStop.Left := 339;
ButtonStop.Top := 67;
ButtonStop.Width := 75;
ButtonStop.Height := 25;
ButtonStop.Visible := TRUE;
ButtonStop.Tag := 0;
ButtonStop.Enabled := FALSE;
ButtonStop.Hint := '';
ButtonStop.ShowHint := FALSE;
ButtonStop.Caption := 'Stop';
ButtonStop.Font.Name := 'Tahoma';
ButtonStop.Font.Size := 8;
ButtonStop.Font.Color := clWindowText;
ButtonStop.Font.CharSet := 1;
ButtonStop.TabOrder := 3;
ButtonStop.TabStop := TRUE;
ButtonStop.Cancel := FALSE;
ButtonStop.ModalResult := 0;
ButtonStop.OnClick := @ButtonStop_Click;
//......................................
//......................................
//CheckBoxPlayer
CheckBoxPlayer := TCheckBox.Create(Result);
CheckBoxPlayer.Parent := GroupBox2;
CheckBoxPlayer.Left := 18;
CheckBoxPlayer.Top := 41;
CheckBoxPlayer.Width := 66;
CheckBoxPlayer.Height := 23;
CheckBoxPlayer.Visible := TRUE;
CheckBoxPlayer.Tag := 0;
CheckBoxPlayer.Enabled := TRUE;
CheckBoxPlayer.Hint := 'Поставить галочку если выбрал кому посылать сообщение';
CheckBoxPlayer.ShowHint := TRUE;
CheckBoxPlayer.Caption := 'Игрок';
CheckBoxPlayer.Font.Name := 'Tahoma';
CheckBoxPlayer.Font.Size := 8;
CheckBoxPlayer.Font.Color := clWindowText;
CheckBoxPlayer.Color := clBtnFace;
CheckBoxPlayer.TabOrder := 4;
CheckBoxPlayer.TabStop := TRUE;
CheckBoxPlayer.Checked := FALSE;
CheckBoxPlayer.AllowGrayed := FALSE;
CheckBoxPlayer.State := cbUnchecked;
CheckBoxPlayer.OnClick := @CheckBoxPlayer_Click;
//......................................
//......................................
//ComboBoxPlayer
ComboBoxPlayer := TComboBox.Create(Result);
ComboBoxPlayer.Parent := GroupBox2;
ComboBoxPlayer.Left := 90;
ComboBoxPlayer.Top := 40;
ComboBoxPlayer.Width := 169;
ComboBoxPlayer.Height := 21;
ComboBoxPlayer.Visible := TRUE;
ComboBoxPlayer.Tag := 0;
ComboBoxPlayer.Enabled := TRUE;
ComboBoxPlayer.Hint := 'Выбери из списка имя игрока, которому шлем сообщения';
ComboBoxPlayer.ShowHint := TRUE;
ComboBoxPlayer.Text := 'ComboBoxPlayer';
ComboBoxPlayer.Font.Name := 'Tahoma';
ComboBoxPlayer.Font.Size := 8;
ComboBoxPlayer.Font.Color := clWindowText;
ComboBoxPlayer.Color := clWindow;
ComboBoxPlayer.TabOrder := 5;
ComboBoxPlayer.TabStop := TRUE;
ComboBoxPlayer.Sorted := FALSE;
ComboBoxPlayer.ItemHeight := 13;
ComboBoxPlayer.Items.ADD('NLObP');
ComboBoxPlayer.Items.ADD('Teremok');
ComboBoxPlayer.ItemIndex := 0;
ComboBoxPlayer.OnClick := @ComboBoxPlayer_Click;
//......................................
//......................................
//EditNpcID
EditNpcID := TEdit.Create(Result);
EditNpcID.Parent := GroupBox2;
EditNpcID.Left := 341;
EditNpcID.Top := 16;
EditNpcID.Width := 72;
EditNpcID.Height := 21;
EditNpcID.Visible := TRUE;
EditNpcID.Tag := 0;
EditNpcID.Enabled := TRUE;
EditNpcID.Hint := '';
EditNpcID.ShowHint := FALSE;
EditNpcID.Text := '0';
EditNpcID.Font.Name := 'Tahoma';
EditNpcID.Font.Size := 8;
EditNpcID.Font.Color := clWindowText;
EditNpcID.Color := clWindow;
EditNpcID.TabOrder := 6;
EditNpcID.TabStop := TRUE;
EditNpcID.ReadOnly := TRUE;
EditNpcID.MaxLength := 0;
EditNpcID.AutoSize := TRUE;
//......................................
//......................................
//EditPlayerID
EditPlayerID := TEdit.Create(Result);
EditPlayerID.Parent := GroupBox2;
EditPlayerID.Left := 341;
EditPlayerID.Top := 40;
EditPlayerID.Width := 72;
EditPlayerID.Height := 21;
EditPlayerID.Visible := TRUE;
EditPlayerID.Tag := 0;
EditPlayerID.Enabled := TRUE;
EditPlayerID.Hint := '';
EditPlayerID.ShowHint := FALSE;
EditPlayerID.Text := '0';
EditPlayerID.Font.Name := 'Tahoma';
EditPlayerID.Font.Size := 8;
EditPlayerID.Font.Color := clWindowText;
EditPlayerID.Color := clWindow;
EditPlayerID.TabOrder := 7;
EditPlayerID.TabStop := TRUE;
EditPlayerID.ReadOnly := TRUE;
EditPlayerID.MaxLength := 0;
EditPlayerID.AutoSize := TRUE;
//......................................
//......................................
//EditPlayerOID
EditPlayerOID := TEdit.Create(Result);
EditPlayerOID.Parent := GroupBox2;
EditPlayerOID.Left := 263;
EditPlayerOID.Top := 40;
EditPlayerOID.Width := 72;
EditPlayerOID.Height := 21;
EditPlayerOID.Visible := TRUE;
EditPlayerOID.Tag := 0;
EditPlayerOID.Enabled := TRUE;
EditPlayerOID.Hint := '';
EditPlayerOID.ShowHint := FALSE;
EditPlayerOID.Text := '0';
EditPlayerOID.Font.Name := 'Tahoma';
EditPlayerOID.Font.Size := 8;
EditPlayerOID.Font.Color := clWindowText;
EditPlayerOID.Color := clWindow;
EditPlayerOID.TabOrder := 8;
EditPlayerOID.TabStop := TRUE;
EditPlayerOID.ReadOnly := TRUE;
EditPlayerOID.MaxLength := 0;
EditPlayerOID.AutoSize := TRUE;
//......................................
//......................................
//EditNpcOID
EditNpcOID := TEdit.Create(Result);
EditNpcOID.Parent := GroupBox2;
EditNpcOID.Left := 264;
EditNpcOID.Top := 16;
EditNpcOID.Width := 72;
EditNpcOID.Height := 21;
EditNpcOID.Visible := TRUE;
EditNpcOID.Tag := 0;
EditNpcOID.Enabled := TRUE;
EditNpcOID.Hint := '';
EditNpcOID.ShowHint := FALSE;
EditNpcOID.Text := '0';
EditNpcOID.Font.Name := 'Tahoma';
EditNpcOID.Font.Size := 8;
EditNpcOID.Font.Color := clWindowText;
EditNpcOID.Color := clWindow;
EditNpcOID.TabOrder := 9;
EditNpcOID.TabStop := TRUE;
EditNpcOID.ReadOnly := TRUE;
EditNpcOID.MaxLength := 0;
EditNpcOID.AutoSize := TRUE;
//......................................
Yes := TRUE;
FINALLY
if not Yes then begin
//Освобождаем ресурсы, если неудачно ...
if Result<>NIL then begin
Result.Free;
Result:=NIL;
end;
end;
END;
msg.Lines.Add('...');
Stats.Lines.Add('Запускаем окно с чаром или бота. Он следит за нужной целью и как только он увидит цель (пакет NpcInfo) начинает спамить в пм определённому чару, с определённым помежутком времени');
Result.Show;
end; //Create_FormMain
//========================
//========================
procedure Init; //Вызывается при включении скрипта
var
i:integer;
begin
FormMain:=Create_FormMain;
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimer;
timer.enabled:=false;
timer.interval:=10000; //время задержки
ready:=false;
end;
//......................................
//************************************************** ****************************
procedure Free; //Вызывается при выключении скрипта
begin
// NpcBase:=nil; //нельзя так делать с массивом
timer.Free;
//достаточно освободить форму
Free_FormMain;
end;
//......................................
//************************************************** *************
//только для Пакетхак v.3.1.9+
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
end;
//......................................
//************************************************** ****************************
//38=Say2:s(Text)d(Type)s(Target)
procedure Say2(msg:string);
begin
buf:=#$38;
WriteS(msg);
WriteD(2);
WriteS(PlayerName);
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
msg.Lines.Add('Шлём сообщение PlayerName='+PlayerName);
//msg.Lines.Add(_message);
say2(_message);
end;
//......................................
//************************************************** ****************************
// вызывается при приходе каждого пакета, если скрипт включен
//************************************************** ****************************
begin
//************************************************** **************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//......................................
//************************************************** **************************
if FromServer and ready then //если готовы то проверяем
case pck[1] of
//************************************************** *************
//пакет Die (моб умер)
//06=Die:h(CharID)d(d)d(HAsHideout)d(HasCastle)d(fla gs)d(sweepable)d(access)
#$06: begin
msg.Lines.Add('S>Пакет Die #$06 ObjectID='+IntToStr(ReadD(2)));
if (NpcOID=ReadD(2)) then begin
msg.Lines.Add('Убили моба ObjectID='+IntToStr(NpcOID)+' в '+TimeToStr(time));
_message:='Убили '+ComboBoxNpc.Items.Strings[ComboBoxNpc.ItemIndex]+' в '+TimeToStr(time);
end;
end;
//************************************************** *************
//12=DeleteObject:d(ObjectID)d(d)
#$12: begin
msg.Lines.Add('S>C $12 DeleteObject '+inttostr(ReadD(2)));
if (NpcOID=ReadD(2)) then begin
msg.Lines.Add('Пропал ожидаемый моб ObjectID='+IntToStr(NpcOID)+' в '+TimeToStr(time));
_message:='Пропал '+ComboBoxNpc.Items.Strings[ComboBoxNpc.ItemIndex]+' в '+TimeToStr(time);
end;
end;
//************************************************** *************
//16=NpcInfo:d(ObjectID)d(NpcTypeID)d(IsAttackable)d (X)d(Y)d(Z)d(Heading)
//d(d)d(Maspd)d(Paspd)d(runSpd)d(walkSpd)d(swimRSpd) d(swimWSpd)d(flRSpd)
//d(flWSpd)d(FlyRSpd)d(FlyWSpd)f(ProperMul)f(Paspd)f (CollisRadius)
//f(CollisHeight)d(RHand)d(d)d(LHand)b(nameabove)b(i sRun)b(isInFight)
//b(isAlikeDead)b(isSummoned)s(Name)s(Title)d(d)d(d) d(karma)d(abnEffect)
//d(d)d(d)d(d)d(d)b(c)b(Team)f(collisRadius)f(collis Height)d(d)
#$16: begin
msg.Lines.Add('S>Пакет NpcInfo #$16 NpcOID='+inttostr(ReadD(2))+' NpcID='+inttostr(ReadD(6)));
if (NpcID=ReadD(6)-kID) then begin
NpcOID:=ReadD(2);
EditNpcOID.text:=inttostr(NpcOID);
timer.enabled:=true;
msg.Lines.Add('Появился ожидаемый моб NpcID='+IntToStr(NpcID)+' в '+TimeToStr(time));
_message:='Появился '+ComboBoxNpc.Items.Strings[ComboBoxNpc.ItemIndex]+' в '+TimeToStr(time);
end;
end;
end;
end.

NLObP
11.07.2008, 12:27
Протестил, что-то у меня не работает. ИД брал из npcname-e.dat . тестил на мобе 20670=Crimson Drake и ещё несколько. Пакеты нпс инфо идут, а в пм нечего не пишеться.

kID=1023000; //коэфф вычитаемый из NpcID C6 theAbyss.ru
Коэффициент соответствует твоему серверу? Посмотри в NpcInfo какие ID стоят. Лучше всего проверять где есть 1-2 NPC, тогда можно точно коэффициент найти.
Чтобы слал в ПМ надо старт нажать.

Заменил скрипт, теперь при отлове NpcInfo будет показывать NpcID.

Miler
11.07.2008, 18:46
Приходит несколько пакетов
S>Пакет NpcInfo #$16 NpcOID=1221649889 NpcID=1020670
S>Пакет NpcInfo #$16 NpcOID=1222677125 NpcID=1020668
S>Пакет NpcInfo #$16 NpcOID=1218485145 NpcID=1020674
S>Пакет NpcInfo #$16 NpcOID=1221650090 NpcID=1020669
S>Пакет NpcInfo #$16 NpcOID=1222685839 NpcID=1021000
Как расчитываеться kID из них?

NLObP
11.07.2008, 19:32
NpcID=1020670
Это, если отнять 1000000, будет 20670.

Запускаешь скрипт. Выходишь в место, где 1-2 NPC. Имена их знаешь. Берешь их NpcID и вычисляешь.

NpcID (от сервера) - коэфф. = NpcID который должен быть у тех 1-2 NPC которых видишь рядом.

Miler
11.07.2008, 20:00
Я всё настроил просто пара вещей наясна была. Как я понял из строки NpcID мы вычетаем ID и остаток и есть KID (до меня просто не дошло). Терь всё пашет на все 100%, офигенная вещь получилась спс. А как подправить, чтобы отправляло в пм нескольким людят сразу поочереди?

NLObP
11.07.2008, 20:10
Я всё настроил просто пара вещей наясна была. Как я понял из строки NpcID мы вычетаем ID и остаток и есть KID (до меня просто не дошло). Терь всё пашет на все 100%, офигенная вещь получилась спс. А как подправить, чтобы отправляло в пм нескольким людят сразу поочереди?

Да имено так. Главное знать настоящий NpcID.

Можно Say2 исправить, и заранее руками в скрипте прописать кому слать.
В инит пропиши

PlayerName:='012';
PlayerName1:='123';
PlayerName2:='234';
PlayerName3:='345';

а процедуру так исправь
procedure Say2(msg:string);
begin
buf:=#$38;
WriteS(msg);
WriteD(2);
WriteS(PlayerName);
SendToServerEx(Name);
buf:=#$38;
WriteS(msg);
WriteD(2);
WriteS(PlayerName2);
SendToServerEx(Name);
buf:=#$38;
WriteS(msg);
WriteD(2);
WriteS(PlayerName3);
SendToServerEx(Name);
end;


С панельки гиморно добавлять. Это еще комбобоксы добавить надо. Может и из одного можно несколько, я не знаю.

ЗЫЖ проверок только нет, что игрок введен, не проколись. Переменная PlayerName обязательно должна быть инициализирована!

Miler
12.07.2008, 06:52
Сегодня ночью тестил на Shilens Messenger Cabrio. Всё обалденно сработало!! Когда рейд появился он начал спамить, что он тут, када его увели написало что пропал, ну и када мы его завалили написало в чат что рейд труп) Для тех кто будет юзать советую зделать так:
Запускаете скрипт на чара и пусть он шлёт сообщения на бота, а в боте поставьте, чтобы када ему пишут в пм он издавал сигнал.

Miler
13.07.2008, 02:04
Тут другое. Нафига колоть баюма, надо его фармить) А скрипт универсален для любого моба (рейда). Тоесть очень легко паляться антквин, рейды на нублеса и другие. Не приходиться тупо альтабться сматреть када где рейд появился. И очень удобно что пишет время када он появился и када он умер. ТОесть если тя даже небыло на нём ты легко можеш посчитать когда рейд будет в следующий раз.мне от так пишет:
18:50:06 Gnum : Появился 20674=Doom Knight в 18:50:06
18:50:08 Gnum : Появился 20674=Doom Knight в 18:50:07
18:50:10 Gnum : Убили 20674=Doom Knight в 18:50:10
Для проверки на них тестил.

Добавлено через 12 минут
Возникла загвоздка. В тои на 3 или других этажах када врубаеш скрип он начинает с бешенной скоростью получать пакеты.
S>Пакет NpcInfo
Наверно это из за того что он и на соседних этажах захватывает мобов. И пакетхак начинает жрать кучю оперативы. Спустя 10 мин он есть 40%
цп и чем дальше тем хуже. У кого есть какие идеи решения проблемы?

NLObP
13.07.2008, 04:26
Первое, что попробуй - отключи "Запоминать пакеты".
Второе - закомментируй в скрипте вывод сообщений типа:
msg.Lines.Add('S>Пакет NpcInfo #$16 NpcOID='+inttostr(ReadD(2))+' NpcID='+inttostr(ReadD(6)));

Miler
14.07.2008, 14:23
Тут в скрипте ещё 1 проблемка. Если запущенно например 3 бота. И l2phx перехватил все 3 конекта. ТО при запуска скрипта безразнице какой в нём прописан ник:
Name='Gnum'; //Вписать сюда имя чара
Всёравно скрипт перехватывает данные со всех 3 чаров одновременно.

NLObP
14.07.2008, 15:21
Тут в скрипте ещё 1 проблемка. Если запущенно например 3 бота. И l2phx перехватил все 3 конекта. ТО при запуска скрипта безразнице какой в нём прописан ник:
Name='Gnum'; //Вписать сюда имя чара
Всёравно скрипт перехватывает данные со всех 3 чаров одновременно.

Надо добавить в основной цикл проверку, вместо

if FromServer and ready then //если готовы то проверяем

вот это

if (ConnectName=Name) and FromServer and ready then //если готовы то проверяем

Clon
14.07.2008, 15:54
Тут в скрипте ещё 1 проблемка. Если запущенно например 3 бота. И l2phx перехватил все 3 конекта. ТО при запуска скрипта безразнице какой в нём прописан ник:
Name='Gnum'; //Вписать сюда имя чара
Всёравно скрипт перехватывает данные со всех 3 чаров одновременно.

эт не очень удобн конечно, но после перехвата нужного конекта, мона снять галочку "Перехват; Искать клиент"

NLObP
11.08.2008, 01:16
Возможно ли сделать так чтобы при обнаружении рейда писалось не одному чару, а нескольким?

Можно внести такие поправки в скрипт:
//************************************************** ****************************
const
Name='имя чара для которого запускаем скрипт';
PlayerName='имя чара для которому слать сообщение';
PlayerName2='имя чара для которому слать сообщение';
PlayerName3='имя чара для которому слать сообщение';

//38=Say2:s(Text)d(Type)s(Target)
procedure Say2(msg:string);
begin
buf:=#$38;
WriteS(msg);
WriteD(2);
WriteS(PlayerName);
SendToServerEx(Name);
//---
buf:=#$38;
WriteS(msg);
WriteD(2);
WriteS(PlayerName2);
SendToServerEx(Name);
//---
buf:=#$38;
WriteS(msg);
WriteD(2);
WriteS(PlayerName3);
SendToServerEx(Name);
end;
//......................................

valentin
11.08.2008, 01:51
спасибо за быстрый ответ
ЗЫ: сорри только сейчас заметил что на первой странице это уже было описано;)

Добавлено через 24 минуты
такс, тепреь такая трабла. запускаю на абис х3 настроил все правильно, правильно указал ник чара, но в пм не хочет писать
вот что пишется в окне скрипта:
http://img171.imageshack.us/img171/6186/screenfv0.th.jpg (http://img171.imageshack.us/my.php?image=screenfv0.jpg)
тестирую на квест мобе около гирана, пробовал на кланхолл манагере, все безрезультатно

NLObP
11.08.2008, 02:51
Ты скрипт правильно настроил?
Я на Абисс х300 его проверял в Гиран-харборе, на Монакане.
Ищи ошибку, что не правильно сделал. Может имя чара не то или kID.

kID=1023000; //коэфф вычитаемый из NpcID theAbyss.ru


По приходу NpcInfo срабатывает этот кусок
#$16: begin
msg.Lines.Add('S>Пакет NpcInfo #$16 NpcOID='+inttostr(ReadD(2))+' NpcID='+inttostr(ReadD(6)));
if (NpcID=ReadD(6)-kID) then begin //<---проверка на NPC здесь
NpcOID:=ReadD(2);
EditNpcOID.text:=inttostr(NpcOID);
timer.enabled:=true;
msg.Lines.Add('Появился ожидаемый моб NpcID='+IntToStr(NpcID)+' в '+TimeToStr(time));
_message:='Появился '+ComboBoxNpc.Items.Strings[ComboBoxNpc.ItemIndex]+' в '+TimeToStr(time);
end;
end;


Что-то мне кажется ты NpcID=27097 не правильный написал.
Для Монакана NpcID=8573, в NpcInfo будет приходить NpcId=1031573.

valentin
11.08.2008, 04:10
судя повсему действительно ид неправильно писал, но теперь возник другой вопрос, откуда взять нужный ид? в npcname-e.dat ид монакана - 31573, а не 8573, при этом в npcname-e.dat ид кабрио 25035 (у остальных рб из скрипта тоже ид совпадают с ид в npcname-e.dat)

ЗЫ: и ещё заметил такую фигню - если рядом с именем того кому будет отсылаться сообщение в пм просто поставить галочку, скрипт не пишет в пм этому чару, надо открыть ниспадающий спиок с именами персов и выбрать нужного, даже если он стоит первым по списку (точно также и с именами мобов, на которых будет реагировать чар)

dmitry501
11.08.2008, 06:48
Все верно, ID приходящие в NpcInfo больше настоящих на 1000000, которые указаны в npcinfo-e.dat
для IL коэффициент 1 млн.
А странный коэффициент, который указан в скрипте оттого, что мобы из Интерлюда приводятся к мобам из С4.

NLObP
11.08.2008, 19:08
ЗЫ: и ещё заметил такую фигню - если рядом с именем того кому будет отсылаться сообщение в пм просто поставить галочку, скрипт не пишет в пм этому чару, надо открыть ниспадающий спиок с именами персов и выбрать нужного, даже если он стоит первым по списку (точно также и с именами мобов, на которых будет реагировать чар)

Да, именно что надо выбирать. Фича такая. Я где то про это писал.

valentin
14.08.2008, 01:23
и всетаки не совсем понятно, откуда брать ИД для скрипта если брать из интерлюдовского npcname-e.dat то не работает совсем, если из npcname-e.dat от С4 то с неписями попробовал (монакан, приест дастин) все норм работает, но сегодня тестировал на ант квин (ид 12001 в С4), скрипт не сработал (вчера пробовал и с интерлюдовским ИД 29001, тоже не сработало)

Добавлено через 31 минуту
кажись понял, от базового интерлюдовского ИД из npcname-e.dat нужно отнять 23000 чтобы получить нужный

Fokter
14.08.2008, 03:21
Проверяю на Abyss x300 на рыбаке в гиран харбор, не получается
Это я что то сделал не так или уже на абуссе это пофиксили?

NLObP
14.08.2008, 03:49
Проверяю на Abyss x300 на рыбаке в гиран харбор, не получается
Это я что то сделал не так или уже на абуссе это пофиксили?

Что то не так сделал.
После настройки скрипта, включения и обязательного выбора в комбобоксах. Отойди подальше от рыбака и вернись. Должно пойти сообщение.

NLObP
14.08.2008, 15:27
Ну и совсем было бы круто если бы ещё и звуковой сигнал можно было как-то впихнуть, но я не знаю можно ли через l2phx это зделать.

Вот ДЛЛ для использования в 3.2.13 и 3.1.8AE звуков.

library WPSound;

uses
mmsystem;

procedure wpPlaySound(SoundFile: pchar;Loop: integer = 0); stdcall;
begin
if Loop=1 then PlaySound(SoundFile,0,SND_ASYNC or SND_LOOP)
else PlaySound(SoundFile,0,SND_ASYNC);
end;

procedure wpStopSound; stdcall;
begin
PlaySound(nil,0,SND_PURGE);
end;

exports wpPlaySound, wpStopSound;

begin
end.

PS: что-то не смог попробовать.

Fokter
14.08.2008, 18:47
Что то не так сделал.
После настройки скрипта, включения и обязательного выбора в комбобоксах. Отойди подальше от рыбака и вернись. Должно пойти сообщение.
вместо NLObP надо писать того кто палит (я так делал :)), или того кому сообщение слать будет?

NLObP
14.08.2008, 19:05
вместо NLObP надо писать того кто палит (я так делал :)), или того кому сообщение слать будет?

Name='Вписать сюда имя чара, который следит';

ComboBoxPlayer.Items.ADD('Вписать сюда имя чара1, которому сообщаем');
ComboBoxPlayer.Items.ADD('Вписать сюда имя чара2, которому сообщаем');

ComboBoxNpc.Items.ADD('NpcId=NpcName1, за кем следим');
ComboBoxNpc.Items.ADD('NpcId=NpcName2, за кем следим');

snakepwnz
22.08.2008, 11:44
Нужен скрипт чтобы пара ботов пасла орфен и потом бомбили пм.Такого не нашёл именно на орфен.Самому сделать не предлагайте ибо не умею.

QaK
22.08.2008, 12:37
Нужен скрипт чтобы пара ботов пасла орфен и потом бомбили пм.Такого не нашёл именно на орфен.Самому сделать не предлагайте ибо не умею.на предыдущей страничке не судьба посотреть, и подставить ИД орфена?Совсем народ обленился!

snakepwnz
22.08.2008, 19:22
А ты скажи мне ИД орфена..

NLObP
22.08.2008, 21:03
В файле npcsid.ini посмотри.
Тебе какой нужен?
717=Handmaiden of Orfen Lvl: 48 [x3]
10420=Orfen's Handmaiden Raid Boss Lvl: 48
12169=Orfen Lvl: 50*


Буквально одним сообщением выше (http://coderx.ru/showpost.php?p=13576&postcount=29) я написал, что надо делать.

snakepwnz
22.08.2008, 22:00
перечитал всю тему и не понял как сделать скрипт. Если не сложно сделай скрипт на Орфен 12169=Orfen Lvl: 50* , дам спасибку)

jestb
23.08.2008, 00:09
перечитал всю тему и не понял как сделать скрипт.
А как ты понял, что есть ваще этот сайт?
Самое простое - замени любого РБ из списка в скрипте на нужный тебе И ВСЕ! Можешь копировать строчку и добафить еще одну с нужным тебе РБ. Назвать можешь хоть Дядя Вася, тока циферки правильные напиши.

п.с: кстати за скрипт еще раз спасибо создателю.

NLObP
23.08.2008, 17:15
перечитал всю тему и не понял как сделать скрипт. Если не сложно сделай скрипт на Орфен 12169=Orfen Lvl: 50* , дам спасибку)

Скачай обновленный пакетхак (http://coderx.ru/showthread.php?t=618). В нем есть поиск в скрипте. Переходишь на закладку Скрипты, выбираешь нужный скрипт, щелкаешь на тексте скрипта, жмешь комбинацию ctr-f. Ищи - "ComboBoxNpc"
После строчки
ComboBoxNpc.Items.ADD('8573=Monakan Fishermens Guild Member');
Вставь такую же или отредактируй её.
ComboBoxNpc.Items.ADD('12169=Orfen Lvl: 50*');
Сохрани, ctrl-s. Можно пробовать скрипт.

loki89
04.10.2008, 15:23
спасибо за быстрый ответ
ЗЫ: сорри только сейчас заметил что на первой странице это уже было описано;)

Добавлено через 24 минуты
такс, тепреь такая трабла. запускаю на абис х3 настроил все правильно, правильно указал ник чара, но в пм не хочет писать
вот что пишется в окне скрипта:
http://img171.imageshack.us/img171/6186/screenfv0.th.jpg (http://img171.imageshack.us/my.php?image=screenfv0.jpg)
тестирую на квест мобе около гирана, пробовал на кланхолл манагере, все безрезультатно

а что эта за прога?! как я понял через нее запускают скрипт?? если да, то где ее можно скачать?

Добавлено через 21 час 51 минуту
ну скажите плз чем отправить скрипт??? кроме l2ph и кроме бота!

NLObP
04.10.2008, 22:32
а что эта за прога?! как я понял через нее запускают скрипт?? если да, то где ее можно скачать?
ну скажите плз чем отправить скрипт??? кроме l2ph и кроме бота!

Это скрипт для L2PacketHack. Почитай внимательно здесь (http://coderx.ru/forumdisplay.php?f=16), а потом вопросы задавай.

PanAm
10.10.2008, 16:51
может в скрипте, вместо строк типа ComboBoxNpc.Items.ADD(....)
поставить
ComboBoxNpc.Items.LoadFromFile('npcsid.ini');
Список будет огромный, но вопросов как добавить моба не будет :D
или как вариант - просто вынести список РБ в отдельный файл и загружать его.

Добавлено через 23 часа 41 минуту
Или даже так
const
.......
NPCList = 'npcsid.ini'; //файл со списком NPC
.......
ComboBoxNpc.Items.LoadFromFile(NPCList);

NLObP
11.10.2008, 00:48
вариант - просто вынести список РБ в отдельный файл и загружать его
Наверное самый лучший вариант. Если весь список NPC грузить, только путаница будет.

dfackk
13.10.2008, 04:05
Хм... А можно обучить скрипт не спамить, а простенько так в пм 1 раз написать какой рб и время респа? :)

NLObP
14.10.2008, 00:08
Хм... А можно обучить скрипт не спамить, а простенько так в пм 1 раз написать какой рб и время респа? :)

Вроде надо так исправить
procedure OnTimer(Sender: TObject);
begin
msg.Lines.Add('Шлём сообщение PlayerName='+PlayerName);
//msg.Lines.Add(_message);
say2(_message);
timer.enabled:=false;
end;


ещё можно поправить так,добавив timer.enabled:=true;

//пакет Die (моб умер)
//06=Die:h(CharID)d(d)d(HAsHideout)d(HasCastle)d(fla gs)d(sweepable)d(access)
#$06: begin
msg.Lines.Add('S>Пакет Die #$06 ObjectID='+IntToStr(ReadD(2)));
if (NpcOID=ReadD(2)) then begin
msg.Lines.Add('Убили моба ObjectID='+IntToStr(NpcOID)+' в '+TimeToStr(time));
_message:='Убили '+ComboBoxNpc.Items.Strings[ComboBoxNpc.ItemIndex]+' в '+TimeToStr(time);
timer.enabled:=true;
end;
end;
//************************************************** *************
//12=DeleteObject:d(ObjectID)d(d)
#$12: begin
msg.Lines.Add('S>C $12 DeleteObject '+inttostr(ReadD(2)));
if (NpcOID=ReadD(2)) then begin
msg.Lines.Add('Пропал ожидаемый моб ObjectID='+IntToStr(NpcOID)+' в '+TimeToStr(time));
_message:='Пропал '+ComboBoxNpc.Items.Strings[ComboBoxNpc.ItemIndex]+' в '+TimeToStr(time);
timer.enabled:=true;
end;
end;

freeworld
01.01.2009, 16:59
Возникла небольшая проблема...Этот скрипт под грацию работает? ибо я получил NPCid(от сервера)1021112(Hames Orc SNiper)-kid=21112 тоесть kid=1000000....все это ввел в скрипте в строку Name='***';-имя кем пасу в строку ComboBoxPlayer.Items.ADD('***');-кому писать в пм...так же добавил строку нпц ComboBoxNpc.Items.ADD('21113=Hames Orc Sniper');

Но в пм не пишется...где то нужно еще что-то описать ?
И может ли на это влиять ошибка
http://img149.imageshack.us/img149/515/errorqb9.th.png (http://img149.imageshack.us/my.php?image=errorqb9.png)

skylancer
10.01.2009, 13:37
А можно ли сделать стоб 1 чар проверял одновременно несколько РБ на сервере?
Из того, что я знаю об Л2 - нет, хотя я о пакетном уровне знаю почти ничего :)

А можете добавить к скрипту процедуру логина?
Мне просто пришла в голову идея рассадить мультов возле разных РБ и модифицировать скрипт так чтоб он по очереди заходил на каждого мульта, проверял РБ и слал сообщение о его наличии. Но логин логаут из кода делать не умею.

Имхо - это намного выгоднее с точки зрения ресурсов системы и удобства чем держать в игре n чаров и столько же бегающих скриптов.

Если пойти дальше, то можно научить скрипт вычитывать

NLObP
11.01.2009, 01:49
Этот скрипт под грацию работает?

ID пакетов в Грации отличаются, нодо найти соответстяие с С4 и заменить.

PS: может позже сам поправлю

MrIICUX
24.01.2009, 23:38
можно ID Raid Bossa Core
юзну спасибку

KrazyKeNNy
25.01.2009, 16:07
12052

vhl
07.02.2009, 01:13
Я так издавал звук:

lib := loadLibrary('user32.dll');
CallFunction(lib,'MessageBeep',1,[5000]);

Функция издаст стандартный звуки винды "Стандартный звук". Какой вы там звук поставите - такой и будет звучать.

lamer
11.04.2009, 07:28
Ну ктонить разобрался со скриптом на нашей гране ада!!! Методом "тыка" я не смог подобрать нужное ИД. А может сам скрипт перестал работать...

Ckopo
11.04.2009, 11:33
а может не методом тыка нужно?)

lamer
11.04.2009, 11:52
а может не методом тыка нужно?)

вот еслиб знать как, яб помучился..)) но мой ник говорит сам за себя.):eek:

lamer
16.04.2009, 18:16
ID пакетов в Грации отличаются, нодо найти соответстяие с С4 и заменить.
а можно какнить облегчить с эти, напримере скрипта авто БД,СВС...
Веть суть я уловил.

Добавлено через 9 часов 4 минуты
//Следим за РБ by NLObP для L2PacketHack v.3.1.9+ by Xkor
//version 0.2 от 11.07.2008г.
program spy;
{************************************************* *******************************
Возможности скрипта:
--------------------
0.1
+ Панель управления;
+ Посылает приватное сообщение игроку, когда увидит РБ;

Проверялось на TheAbyss.ru x300(interlude)

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

MyICQ 402988808
************************************************** ******************************}

//............................................
//Список констант
const
Name='---'; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false
//kID=1000000; //коэфф вычитаемый из NpcID C4 lagam.net
kID=1023000; //коэфф вычитаемый из NpcID C6 theAbyss.ru

//............................................
//Список переменных
var
PlayerID, PlayerOID:integer;
PlayerName, TmpName, _message : string;
NpcID,NpcOID:integer;
ready : boolean;
timer : TTimer;
FormMain : TForm; //Создаваемая форма
Splitter1, Splitter2 : TSplitter;
Stats, Msg : TMemo;
Panel1 : TPanel;
GroupBox2 : TGroupBox;
Label2, Label4, Label12, Label13 : TLabel;
CheckBoxNpc : TCheckBox;
ComboBoxNpc : TComboBox;
ButtonStart, ButtonStop : TButton;
CheckBoxPlayer : TCheckBox;
ComboBoxPlayer : TComboBox;
EditNpcID, EditPlayerID, EditPlayerOID, EditNpcOID : TEdit;
Label1, Label3 : TLabel;
Edit1, Edit2 : TEdit;
//............................................
//*************************************
//Обработчики событий для элементов управления на форме
//......................................
//CheckBoxNpc
procedure CheckBoxNpc_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxNpc.Checked
then begin
EditNpcID.text:=Inttostr(NpcID); //inttostr(sumNpc(NpcID));
ComboBoxNpc.Enabled:=false; //выключаем
end else begin
NpcID:=0; //отмена
NpcOID:=0;
ComboBoxNpc.Enabled:=true; //включаем
EditNpcOID.Text:='0';
EditNpcID.text:='0';
end;
end;
//......................................
//......................................
//ComboBoxNpc
procedure ComboBoxNpc_Click(Sender: TComboBox);
//Event : OnClick
begin
NpcID:=ExtractIDValues(ComboBoxNpc.Items.Strings[ComboBoxNpc.ItemIndex]);
end;
//......................................
//......................................
//CheckBoxPlayer
procedure CheckBoxPlayer_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxPlayer.Checked
then begin
PlayerName:=TmpName;
ComboBoxPlayer.Enabled:=false; //выключаем
end else begin
PlayerID:=0; //отмена
PlayerOID:=0;
ComboBoxPlayer.Enabled:=true; //включаем
end;
end;
//......................................
//......................................
//ComboBoxPlayer
procedure ComboBoxPlayer_Click(Sender: TComboBox);
//Event : OnClick
begin
TmpName:=ComboBoxPlayer.Items.Strings[ComboBoxPlayer.ItemIndex];
EditPlayerID.text:=TmpName;
end;
//......................................
//......................................
//ButtonStart
procedure ButtonStart_Click(Sender: TButton);
//Event : OnClick
begin
if CheckBoxPlayer.Checked and CheckBoxNpc.Checked
then begin
msg.Lines.Add('Команда Старт!!!');
ready:=true; //готовы к работе
timer.interval:=strtoint(edit1.text);
//для версии 3.1.9+ можно попробовать отключить клиента
//Варнинг! Опасно для жизни! =)
//buf:=#$88;
//SendToClientEx(Name);
ButtonStop.Enabled := TRUE;
ButtonStart.Enabled := FALSE;
end else
msg.Lines.Add('Для работы скрипта выбери РБ и Игрока');
end;
//......................................
//......................................
//ButtonStop
procedure ButtonStop_Click(Sender: TButton);
//Event : OnClick
begin
msg.Lines.Add('Команда Стоп!!!');
timer.enabled:=false;
ready:=false;
ButtonStop.Enabled := FALSE;
ButtonStart.Enabled := TRUE;
end;
//......................................
//......................................
procedure Edit1_Exit(Sender: TEdit);
//Event : OnExit
begin
// MyHPID:=ExtractIDValues(ComboBoxHPotion.Npcs.Strin gs[ComboBoxHPotion.ItemIndex]);
// EditHPotionID.Text:=Inttostr(FindNpc(MyHPID));
// EditHPotionOID.text:=inttostr(NpcBase2[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 := 'Spy by NLObP v.0.2';
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 := 99;
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 := '5000';
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 := 'NpcOID';
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 := 'NpcID';
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;
//......................................
//......................................
//CheckBoxNpc
CheckBoxNpc := TCheckBox.Create(Result);
CheckBoxNpc.Parent := GroupBox2;
CheckBoxNpc.Left := 18;
CheckBoxNpc.Top := 18;
CheckBoxNpc.Width := 66;
CheckBoxNpc.Height := 17;
CheckBoxNpc.Visible := TRUE;
CheckBoxNpc.Tag := 0;
CheckBoxNpc.Enabled := TRUE;
CheckBoxNpc.Hint := 'Поставить галочку если выбрал за кем следить';
CheckBoxNpc.ShowHint := TRUE;
CheckBoxNpc.Caption := 'Рейд Босс';
CheckBoxNpc.Font.Name := 'Tahoma';
CheckBoxNpc.Font.Size := 8;
CheckBoxNpc.Font.Color := clWindowText;
CheckBoxNpc.Color := clBtnFace;
CheckBoxNpc.TabOrder := 0;
CheckBoxNpc.TabStop := TRUE;
CheckBoxNpc.Checked := FALSE;
CheckBoxNpc.AllowGrayed := FALSE;
CheckBoxNpc.State := cbUnchecked;
CheckBoxNpc.OnClick := @CheckBoxNpc_Click;
//......................................
//......................................
//ComboBoxNpc
ComboBoxNpc := TComboBox.Create(Result);
ComboBoxNpc.Parent := GroupBox2;
ComboBoxNpc.Left := 90;
ComboBoxNpc.Top := 16;
ComboBoxNpc.Width := 169;
ComboBoxNpc.Height := 21;
ComboBoxNpc.Visible := TRUE;
ComboBoxNpc.Tag := 0;
ComboBoxNpc.Enabled := TRUE;
ComboBoxNpc.Hint := 'Выбери из списка Рейд Босса';
ComboBoxNpc.ShowHint := TRUE;
ComboBoxNpc.Text := 'ComboBoxNpc';
ComboBoxNpc.Font.Name := 'Tahoma';
ComboBoxNpc.Font.Size := 8;
ComboBoxNpc.Font.Color := clWindowText;
ComboBoxNpc.Color := clWindow;
ComboBoxNpc.TabOrder := 1;
ComboBoxNpc.TabStop := TRUE;
ComboBoxNpc.Sorted := FALSE;
ComboBoxNpc.ItemHeight := 13;
ComboBoxNpc.Items.ADD('25035=Shilens Messenger Cabrio (Raid Boss)');
ComboBoxNpc.Items.ADD('6019=Antharas');
ComboBoxNpc.Items.ADD('29020=Baium (когда он в камне)');
ComboBoxNpc.Items.ADD('29025=Baium (когда он моб)');
ComboBoxNpc.Items.ADD('29001=Queen Ant');
ComboBoxNpc.Items.ADD('25220=Death Lord Hallate (Raid Boss)');
ComboBoxNpc.Items.ADD('25054=Kernon (Raid Boss )');
ComboBoxNpc.Items.ADD('25126=Longhorn Golkonda (Raid Boss)');
//test
ComboBoxNpc.Items.ADD('8573=Monakan Fishermens Guild Member');
ComboBoxNpc.ItemIndex := 0;
ComboBoxNpc.OnClick := @ComboBoxNpc_Click;
//......................................
//......................................
//ButtonStart
ButtonStart := TButton.Create(Result);
ButtonStart.Parent := GroupBox2;
ButtonStart.Left := 263;
ButtonStart.Top := 67;
ButtonStart.Width := 75;
ButtonStart.Height := 25;
ButtonStart.Visible := TRUE;
ButtonStart.Tag := 0;
ButtonStart.Enabled := TRUE;
ButtonStart.Hint := '';
ButtonStart.ShowHint := FALSE;
ButtonStart.Caption := 'Start';
ButtonStart.Font.Name := 'Tahoma';
ButtonStart.Font.Size := 8;
ButtonStart.Font.Color := clWindowText;
ButtonStart.Font.CharSet := 1;
ButtonStart.TabOrder := 2;
ButtonStart.TabStop := TRUE;
ButtonStart.Cancel := FALSE;
ButtonStart.ModalResult := 0;
ButtonStart.OnClick := @ButtonStart_Click;
//......................................
//......................................
//ButtonStop
ButtonStop := TButton.Create(Result);
ButtonStop.Parent := GroupBox2;
ButtonStop.Left := 339;
ButtonStop.Top := 67;
ButtonStop.Width := 75;
ButtonStop.Height := 25;
ButtonStop.Visible := TRUE;
ButtonStop.Tag := 0;
ButtonStop.Enabled := FALSE;
ButtonStop.Hint := '';
ButtonStop.ShowHint := FALSE;
ButtonStop.Caption := 'Stop';
ButtonStop.Font.Name := 'Tahoma';
ButtonStop.Font.Size := 8;
ButtonStop.Font.Color := clWindowText;
ButtonStop.Font.CharSet := 1;
ButtonStop.TabOrder := 3;
ButtonStop.TabStop := TRUE;
ButtonStop.Cancel := FALSE;
ButtonStop.ModalResult := 0;
ButtonStop.OnClick := @ButtonStop_Click;
//......................................
//......................................
//CheckBoxPlayer
CheckBoxPlayer := TCheckBox.Create(Result);
CheckBoxPlayer.Parent := GroupBox2;
CheckBoxPlayer.Left := 18;
CheckBoxPlayer.Top := 41;
CheckBoxPlayer.Width := 66;
CheckBoxPlayer.Height := 23;
CheckBoxPlayer.Visible := TRUE;
CheckBoxPlayer.Tag := 0;
CheckBoxPlayer.Enabled := TRUE;
CheckBoxPlayer.Hint := 'Поставить галочку если выбрал кому посылать сообщение';
CheckBoxPlayer.ShowHint := TRUE;
CheckBoxPlayer.Caption := 'Игрок';
CheckBoxPlayer.Font.Name := 'Tahoma';
CheckBoxPlayer.Font.Size := 8;
CheckBoxPlayer.Font.Color := clWindowText;
CheckBoxPlayer.Color := clBtnFace;
CheckBoxPlayer.TabOrder := 4;
CheckBoxPlayer.TabStop := TRUE;
CheckBoxPlayer.Checked := FALSE;
CheckBoxPlayer.AllowGrayed := FALSE;
CheckBoxPlayer.State := cbUnchecked;
CheckBoxPlayer.OnClick := @CheckBoxPlayer_Click;
//......................................
//......................................
//ComboBoxPlayer
ComboBoxPlayer := TComboBox.Create(Result);
ComboBoxPlayer.Parent := GroupBox2;
ComboBoxPlayer.Left := 90;
ComboBoxPlayer.Top := 40;
ComboBoxPlayer.Width := 169;
ComboBoxPlayer.Height := 21;
ComboBoxPlayer.Visible := TRUE;
ComboBoxPlayer.Tag := 0;
ComboBoxPlayer.Enabled := TRUE;
ComboBoxPlayer.Hint := 'Выбери из списка имя игрока, которому шлем сообщения';
ComboBoxPlayer.ShowHint := TRUE;
ComboBoxPlayer.Text := 'ComboBoxPlayer';
ComboBoxPlayer.Font.Name := 'Tahoma';
ComboBoxPlayer.Font.Size := 8;
ComboBoxPlayer.Font.Color := clWindowText;
ComboBoxPlayer.Color := clWindow;
ComboBoxPlayer.TabOrder := 5;
ComboBoxPlayer.TabStop := TRUE;
ComboBoxPlayer.Sorted := FALSE;
ComboBoxPlayer.ItemHeight := 13;
ComboBoxPlayer.Items.ADD('---');
ComboBoxPlayer.Items.ADD('---');
ComboBoxPlayer.ItemIndex := 0;
ComboBoxPlayer.OnClick := @ComboBoxPlayer_Click;
//......................................
//......................................
//EditNpcID
EditNpcID := TEdit.Create(Result);
EditNpcID.Parent := GroupBox2;
EditNpcID.Left := 341;
EditNpcID.Top := 16;
EditNpcID.Width := 72;
EditNpcID.Height := 21;
EditNpcID.Visible := TRUE;
EditNpcID.Tag := 0;
EditNpcID.Enabled := TRUE;
EditNpcID.Hint := '';
EditNpcID.ShowHint := FALSE;
EditNpcID.Text := '0';
EditNpcID.Font.Name := 'Tahoma';
EditNpcID.Font.Size := 8;
EditNpcID.Font.Color := clWindowText;
EditNpcID.Color := clWindow;
EditNpcID.TabOrder := 6;
EditNpcID.TabStop := TRUE;
EditNpcID.ReadOnly := TRUE;
EditNpcID.MaxLength := 0;
EditNpcID.AutoSize := TRUE;
//......................................
//......................................
//EditPlayerID
EditPlayerID := TEdit.Create(Result);
EditPlayerID.Parent := GroupBox2;
EditPlayerID.Left := 341;
EditPlayerID.Top := 40;
EditPlayerID.Width := 72;
EditPlayerID.Height := 21;
EditPlayerID.Visible := TRUE;
EditPlayerID.Tag := 0;
EditPlayerID.Enabled := TRUE;
EditPlayerID.Hint := '';
EditPlayerID.ShowHint := FALSE;
EditPlayerID.Text := '0';
EditPlayerID.Font.Name := 'Tahoma';
EditPlayerID.Font.Size := 8;
EditPlayerID.Font.Color := clWindowText;
EditPlayerID.Color := clWindow;
EditPlayerID.TabOrder := 7;
EditPlayerID.TabStop := TRUE;
EditPlayerID.ReadOnly := TRUE;
EditPlayerID.MaxLength := 0;
EditPlayerID.AutoSize := TRUE;
//......................................
//......................................
//EditPlayerOID
EditPlayerOID := TEdit.Create(Result);
EditPlayerOID.Parent := GroupBox2;
EditPlayerOID.Left := 263;
EditPlayerOID.Top := 40;
EditPlayerOID.Width := 72;
EditPlayerOID.Height := 21;
EditPlayerOID.Visible := TRUE;
EditPlayerOID.Tag := 0;
EditPlayerOID.Enabled := TRUE;
EditPlayerOID.Hint := '';
EditPlayerOID.ShowHint := FALSE;
EditPlayerOID.Text := '0';
EditPlayerOID.Font.Name := 'Tahoma';
EditPlayerOID.Font.Size := 8;
EditPlayerOID.Font.Color := clWindowText;
EditPlayerOID.Color := clWindow;
EditPlayerOID.TabOrder := 8;
EditPlayerOID.TabStop := TRUE;
EditPlayerOID.ReadOnly := TRUE;
EditPlayerOID.MaxLength := 0;
EditPlayerOID.AutoSize := TRUE;
//......................................
//......................................
//EditNpcOID
EditNpcOID := TEdit.Create(Result);
EditNpcOID.Parent := GroupBox2;
EditNpcOID.Left := 264;
EditNpcOID.Top := 16;
EditNpcOID.Width := 72;
EditNpcOID.Height := 21;
EditNpcOID.Visible := TRUE;
EditNpcOID.Tag := 0;
EditNpcOID.Enabled := TRUE;
EditNpcOID.Hint := '';
EditNpcOID.ShowHint := FALSE;
EditNpcOID.Text := '0';
EditNpcOID.Font.Name := 'Tahoma';
EditNpcOID.Font.Size := 8;
EditNpcOID.Font.Color := clWindowText;
EditNpcOID.Color := clWindow;
EditNpcOID.TabOrder := 9;
EditNpcOID.TabStop := TRUE;
EditNpcOID.ReadOnly := TRUE;
EditNpcOID.MaxLength := 0;
EditNpcOID.AutoSize := TRUE;
//......................................
Yes := TRUE;
FINALLY
if not Yes then begin
//Освобождаем ресурсы, если неудачно ...
if Result<>NIL then begin
Result.Free;
Result:=NIL;
end;
end;
END;
msg.Lines.Add('...');
Stats.Lines.Add('Запускаем окно с чаром или бота. Он следит за нужной целью и как только он увидит цель (пакет NpcInfo) начинает спамить в пм определённому чару, с определённым помежутком времени');
Result.Show;
end; //Create_FormMain
//========================
//========================
procedure Init; //Вызывается при включении скрипта
var
i:integer;
begin
FormMain:=Create_FormMain;
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimer;
timer.enabled:=false;
timer.interval:=10000; //время задержки
ready:=false;
end;
//......................................
//************************************************** ****************************
procedure Free; //Вызывается при выключении скрипта
begin
// NpcBase:=nil; //нельзя так делать с массивом
timer.Free;
//достаточно освободить форму
Free_FormMain;
end;
//......................................
//************************************************** *************
//только для Пакетхак v.3.1.9+
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
end;
//......................................
//************************************************** ****************************
//38=Say2:s(Text)d(Type)s(Target)
procedure Say2(msg:string);
begin
buf:=#$49;
WriteS(msg);
WriteD(2);
WriteS(PlayerName);
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
msg.Lines.Add('Шлём сообщение PlayerName='+PlayerName);
//msg.Lines.Add(_message);
say2(_message);
end;
//......................................
//************************************************** ****************************
// вызывается при приходе каждого пакета, если скрипт включен
//************************************************** ****************************
begin
//************************************************** **************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//......................................
//************************************************** **************************
if FromServer and ready then //если готовы то проверяем
case pck[1] of
//************************************************** *************
//пакет Die (моб умер)
//00=Die:h(CharID)d(d)d(HAsHideout)d(HasCastle)d(fla gs)d(sweepable)d(access)
#$00: begin
msg.Lines.Add('S>Пакет Die #$00 ObjectID='+IntToStr(ReadD(2)));
if (NpcOID=ReadD(2)) then begin
msg.Lines.Add('Убили моба ObjectID='+IntToStr(NpcOID)+' в '+TimeToStr(time));
_message:='Убили '+ComboBoxNpc.Items.Strings[ComboBoxNpc.ItemIndex]+' в '+TimeToStr(time);
end;
end;
//************************************************** *************
//08=DeleteObject:d(ObjectID)d(d)
#$08: begin
msg.Lines.Add('S>C $08 DeleteObject '+inttostr(ReadD(2)));
if (NpcOID=ReadD(2)) then begin
msg.Lines.Add('Пропал ожидаемый моб ObjectID='+IntToStr(NpcOID)+' в '+TimeToStr(time));
_message:='Пропал '+ComboBoxNpc.Items.Strings[ComboBoxNpc.ItemIndex]+' в '+TimeToStr(time);
end;
end;
//************************************************** *************
//16=NpcInfo:d(ObjectID)d(NpcTypeID)d(IsAttackable)d (X)d(Y)d(Z)d(Heading)
//d(d)d(Maspd)d(Paspd)d(runSpd)d(walkSpd)d(swimRSpd) d(swimWSpd)d(flRSpd)
//d(flWSpd)d(FlyRSpd)d(FlyWSpd)f(ProperMul)f(Paspd)f (CollisRadius)
//f(CollisHeight)d(RHand)d(d)d(LHand)b(nameabove)b(i sRun)b(isInFight)
//b(isAlikeDead)b(isSummoned)s(Name)s(Title)d(d)d(d) d(karma)d(abnEffect)
//d(d)d(d)d(d)d(d)b(c)b(Team)f(collisRadius)f(collis Height)d(d)
#$0C: begin
msg.Lines.Add('S>Пакет NpcInfo #$0C NpcOID='+inttostr(ReadD(2))+' NpcID='+inttostr(ReadD(6)));
if (NpcID=ReadD(6)-kID) then begin
NpcOID:=ReadD(2);
EditNpcOID.text:=inttostr(NpcOID);
timer.enabled:=true;
msg.Lines.Add('Появился ожидаемый моб NpcID='+IntToStr(NpcID)+' в '+TimeToStr(time));
_message:='Появился '+ComboBoxNpc.Items.Strings[ComboBoxNpc.ItemIndex]+' в '+TimeToStr(time);
end;
end;
end;
end.


Вот скрипт переделанный под ХБ. Проверял на фишермене в геран харбор, полная проверка за вами. ИД мобов как и в интерлюдии.
Спасибо автору за данную прелесть.

lamer
28.05.2009, 09:03
Возникла проблемма, как отнять если id цели изначально менее 23000 ?

NLObP
28.05.2009, 09:13
Возникла проблемма, как отнять если id цели изначально менее 23000 ?

Что ты имеешь ввиду "отнять"?
Если про kID, то 23000 приходит в пакете и ты знаешь реальный ID босса, сам вычисли коэффициент и вставь его в скрипт.

lamer
28.05.2009, 15:36
http://l2manual.ru/?do=ladb3&ladb_p=npc&npc_id=29001
вот АК, отнимаем 23000 и получаем 6001 - что и прописываем в скрипте.
http://l2manual.ru/?do=ladb3&ladb_p=npc&npc_id=22215
А с этим дракончиком как быть...)

NLObP
28.05.2009, 15:44
lamer, пакеты NpcInfo для этих монстров покажи.

PanAm
28.05.2009, 18:16
lamer, что из чего вы отнимаете?
22215=Тиранозавр
именно 22215 и надо вставлять в скрипт, чтобы следить за его респом, а в пакете NpcInfo приходит NpcID+kID. (22215 + 1023000)

JustKilla
06.06.2009, 23:16
возможно ли заставить скрипт если респнулся РБ

заити на Такой либо саит.. и отправить СМС ! ???

//alexteam: плагином расширить функции скриптового движка. вполне реально.

Light_Apokalipsis
19.06.2009, 14:01
NLOBp, у меня к тебе огромнешай просьба, дай константу грации финал пожалуйста, чтоб можно было палить ак и зака в грации финал.

Добавлено через 11 часов 50 минут
нашел kid, протестил на грации, тут возникла такая проблемка, почему-то программа тестирует только вещи которые падают, "ито сообщение не посылает, только пишет что послано но оно не доходит.
kID=1074818030.
делал так, нашел иди туники, выкидывал её на пол, программа писала что ищет и находило, сел в толпу мобов сидел часа 2 - 0 пакетов, что делать?

NLObP
19.06.2009, 14:24
Light_Apokalipsis, предметы и НПЦ это разное и из разных файлов берется, соответственно и kID другое.

Light_Apokalipsis
19.06.2009, 17:24
проблема в том, что у меня npcID на грации от мобов вообще не считает... может в самом скрипте на грацию финал нету настройки чтобы мобов искало?

Добавлено через 2 часа 47 минут
подставил скрипт хелбоунда, но не могу сделать так чтоб комуто писало теперь:\

dast panda
11.02.2010, 10:19
ап.

перепробывал все варианты id и к.ид нашел вставил, но ни как не реагирует скрипт не в окне, не в игре.... сервак хб. Какую информацию предоставить чтобы было точнее понимать как справиться с тем, почему не работет скрипт ?


-----
всё равботает, нужно было толком разобраться в скриптописании. Хб - работает.

dast panda
13.02.2010, 02:33
а вот такой вопрос. возможно ли средствами данного скрипта, естественно переделанного, мониторить РБ к которым требуется прохождение через тп/кристал ? То есть обрабатывать сам диалог, по появлении изменений в тексте ответа от нпс, слать так же пм определённому игроку. Переписать скрипт не прошу, всё равно не согласитесь помочь, просто подскажите где копать, т.к в скриптописание слегка ноль.

Fer123
13.02.2010, 11:02
Вот я когда то писал скрипт на проверку антараса. Он для интерлюдии.

const
AntharasBot='blablabla';
NameToPM='Perforator'; //Кому ПМ

var
HeartObj:integer;
timer:TTimer;
Stats : TMemo;

procedure Init;
begin
ShowTab;
Stats := TMemo.Create(UserTab);
Stats.Parent := UserTab;
Stats.Width:= 500;
Stats.Height:= 200;
Stats.ReadOnly := TRUE;
Stats.ScrollBars := ssVertical;
stats.Lines.Add('Тут про Антараса');
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimer;
timer.enabled:=false;
timer.interval:=60000; //время задержки
end;

procedure Free;
begin
HideTab;
timer.free;
Stats.Free;
end;

procedure OnTimer(Sender: TObject);
begin
buf:=#$04;
WriteD(HeartObj);
WriteD(154606);
WriteD(121130);
WriteD(-3805);
WriteC(0);
SendToServerEx(AntharasBot);
end;

begin
//==============Antharas===============
if FromClient and (ConnectName=AntharasBot) and (pck[1]=#$04) then begin
HeartObj:=ReadD(2);
timer.enabled:=true;
end;
if FromServer and (ConnectName=AntharasBot) and (pck[1]=#$0F) then begin
if Pos('Will you confront Antharas',ReadS(6))>0 then
begin
buf:=#$21;
WriteS('teleport_request');
SendToServerEx(AntharasBot);
end else if Pos('You may not confront Antharas now',ReadS(6))>0 then Stats.Lines.Add(DateTimeToStr(Now)+' - Антарас мертв :(') else
begin
Stats.Lines.Add(DateTimeToStr(Now)+' - Антарас живой :)');
buf:=#$38;
WriteS(DateTimeToStr(Now)+' - Антарас живой :)');
WriteD(2);
WriteS(NameToPM);
SendToServerEx(AntharasBot);
end;
end;
end.

Забыл написать что после включения скрипта нужно выделит нпц сердце, чтоб считать его обджект ид.

dast panda
16.02.2010, 01:42
Fer123, спс, поковыряемся. для ХБ подстрою скину посмотрим.

Добавлено через 3 часа 30 минут
скрипт рабочий, поменяв пакеты для ХБ, и изменив переменные таблицы, можно отладить для любого эпика через нпц. спс еще раз.

з.ы. по незнаюнию в скриптах не мог найти обьяснение вот этому ,"ReadS(6))>0" что это ?:)

з.з.ы. удобнее сделать так
var
NpcObj, NpcX, NpcY, NpcZ:integer;
-/-/-/-/
WriteD(NpcX);
WriteD(NpcY);
WriteD(NpcZ);

не нужно для каждого нпц вручную вводить.

Fer123
16.02.2010, 10:05
Pos('Will you confront Antharas',ReadS(6))>0
Reads(6) - считывается весь диалог, и если в нем присутствует 'Will you confront Antharas' то функция выводит его позицию в тексте, то есть с какого по счету символа в тексте эта строчка начинается. Следовательно если ее нет тексте то функция выводит 0.

SeregaZ
12.06.2010, 22:45
NLObP

Name='NLObP'; //Вписать сюда имя чара
//kID=1000000; //коэфф вычитаемый из NpcID C4 lagam.net
kID=1023000; //коэфф вычитаемый из NpcID C6 theAbyss.ru

ааа каким боком ты это с лагамом связан? :) играл раньше? :)

NLObP
13.06.2010, 02:42
ааа каким боком ты это с лагамом связан? играл раньше?

Скрипты тестил.

dyh9l
13.06.2010, 04:49
А как следить безнпсных эпиков, например АК?

QaK
13.06.2010, 19:51
безнпсных эпиков:eek:безнпсных - это как?

Sashafaq
13.06.2010, 19:53
наверное эпики которые без квеста через нпс

Xen
14.06.2010, 07:06
"безнпссных":D

л2контрол можешь исползовать если самому лень делать подобные функции в пх, учитывая, что есть 6.3 про у всех

Sashafaq
14.06.2010, 07:51
ппц флудер во всех темах нужно поставить смайл и прочее..

Breadfan
28.07.2010, 00:11
Под финал, но может потребоваться правка kID
Отключение клиента - убрано, при необходимости - сами поправьте
Тестировал только на Кабрио - остальных не смотрел

gvzd
03.08.2010, 15:11
на коком серве тестил то ?

//на местном городском, без приблудных защит, потому и написано что коэффициент может придеться править под свой.
//QaK:BreadFan ты хотя бы подписывайся, что это ты =)
//Breadfan: Не привык еще, исправлюсь :)

supernewbie
07.08.2010, 19:10
выложу свое творение по сабжу сюда чтоли

---

Все рб с 67 по 87, а также бонусом ак, орф, коре, бай. Палилка которая спалила рб - орет в пм Name'у.

Breadfan
07.08.2010, 22:10
А в чем плюсы\минусы\отличия в сравнении со скриптом от NLObP ?

NLObP
07.08.2010, 22:33
supernewbie, для уменьшения текста скрипта можно части

var
Kernon1:integer;
...

и
procedure Init;
begin
Kernon1:=1025263;
...
end;

объединить в

const
Kernon1=1025263;
...


Добавлено через 3 минуты
Breadfan, скрипт очень прост: ждет прихода пакета #$0C, после этого определяет чей NpcID в пакете присутствует и посылает об этом Npc сообщение юзеру

J-Fobos
07.08.2010, 22:36
А еще лучше 2 массива (имя и id), тогда строчки
............................
............................
if (ReadD(6)=(Sheshark)) then
begin
SendMsg2('Water Dragon Seer Sheshark РЕСП (72)');
end;
............................
............................
превратятся в цикл.

Breadfan
07.08.2010, 22:59
to NLObP: Ну твой вообще-то выполняет абсолютно тож самое :)
Кстати наведу на мысль: после небольшой доработки скрипта (вставкой блока обработки команд от Ведущего), и использовании наблюдателя с профой сумонеров (коне\котоводы\варк) прохождение некоторых квестов намного упрощается...

NLObP
08.08.2010, 01:41
Немного поправил скрипт supernewbie, проверте плиз.

supernewbie
15.08.2010, 03:47
Немного поправил скрипт supernewbie, проверте плиз.
разве он не будет писать пустое сообщение если ида моба в списке нет?

voVer
06.05.2012, 13:33
а где эту прогу скачать можно?
http://desmond.imageshack.us/Himg171/scaled.php?server=171&filename=screenfv0.jpg&res=landing

или это отображение скрипта в l2phx.3.5.34.176 ?

з.ы. йа нуп )

J-Fobos
06.05.2012, 14:43
Это результат выполнения скрипта. Качается у нас на форуме) Где-то на форуме :)

voVer
06.05.2012, 22:57
да я скачал, l2hpx вроде так.
осталось разобраться, и воткнуться в фришку мою ))) без палилки на АК тяжко )