Просмотр полной версии : Следим за Рейд Боссами
Кто может зделать скрипт для рейдов. Суть такова.
Запускаеш окно с чаром или бота и он спамит таргет нужной цели (например /target Baium) и как тока он берёт его в таргет начинает спамить в пм определённому чару сообщения с определённым помежутком (пофик что). Ну и совсем было бы круто если бы ещё и звуковой сигнал можно было как-то впихнуть, но я не знаю можно ли через l2phx это зделать.
З.Ы. модеры плиз подправьте темку а то я малость опечатался :(
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 можно зделать ещё и без клиента будет вообще идеально.
Вот в первом приближении. На РБ не проверял.
Как обычно, настраиваем скрипт для работы на своем сервере.
Изменяем:
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.
Протестил, что-то у меня не работает. ИД брал из npcname-e.dat . тестил на мобе 20670=Crimson Drake и ещё несколько. Пакеты нпс инфо идут, а в пм нечего не пишеться.
kID=1023000; //коэфф вычитаемый из NpcID C6 theAbyss.ru
Коэффициент соответствует твоему серверу? Посмотри в NpcInfo какие ID стоят. Лучше всего проверять где есть 1-2 NPC, тогда можно точно коэффициент найти.
Чтобы слал в ПМ надо старт нажать.
Заменил скрипт, теперь при отлове NpcInfo будет показывать NpcID.
Приходит несколько пакетов
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 из них?
NpcID=1020670
Это, если отнять 1000000, будет 20670.
Запускаешь скрипт. Выходишь в место, где 1-2 NPC. Имена их знаешь. Берешь их NpcID и вычисляешь.
NpcID (от сервера) - коэфф. = NpcID который должен быть у тех 1-2 NPC которых видишь рядом.
Я всё настроил просто пара вещей наясна была. Как я понял из строки NpcID мы вычетаем ID и остаток и есть KID (до меня просто не дошло). Терь всё пашет на все 100%, офигенная вещь получилась спс. А как подправить, чтобы отправляло в пм нескольким людят сразу поочереди?
Я всё настроил просто пара вещей наясна была. Как я понял из строки 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 обязательно должна быть инициализирована!
Сегодня ночью тестил на Shilens Messenger Cabrio. Всё обалденно сработало!! Когда рейд появился он начал спамить, что он тут, када его увели написало что пропал, ну и када мы его завалили написало в чат что рейд труп) Для тех кто будет юзать советую зделать так:
Запускаете скрипт на чара и пусть он шлёт сообщения на бота, а в боте поставьте, чтобы када ему пишут в пм он издавал сигнал.
Тут другое. Нафига колоть баюма, надо его фармить) А скрипт универсален для любого моба (рейда). Тоесть очень легко паляться антквин, рейды на нублеса и другие. Не приходиться тупо альтабться сматреть када где рейд появился. И очень удобно что пишет время када он появился и када он умер. ТОесть если тя даже небыло на нём ты легко можеш посчитать когда рейд будет в следующий раз.мне от так пишет:
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%
цп и чем дальше тем хуже. У кого есть какие идеи решения проблемы?
Первое, что попробуй - отключи "Запоминать пакеты".
Второе - закомментируй в скрипте вывод сообщений типа:
msg.Lines.Add('S>Пакет NpcInfo #$16 NpcOID='+inttostr(ReadD(2))+' NpcID='+inttostr(ReadD(6)));
Тут в скрипте ещё 1 проблемка. Если запущенно например 3 бота. И l2phx перехватил все 3 конекта. ТО при запуска скрипта безразнице какой в нём прописан ник:
Name='Gnum'; //Вписать сюда имя чара
Всёравно скрипт перехватывает данные со всех 3 чаров одновременно.
Тут в скрипте ещё 1 проблемка. Если запущенно например 3 бота. И l2phx перехватил все 3 конекта. ТО при запуска скрипта безразнице какой в нём прописан ник:
Name='Gnum'; //Вписать сюда имя чара
Всёравно скрипт перехватывает данные со всех 3 чаров одновременно.
Надо добавить в основной цикл проверку, вместо
if FromServer and ready then //если готовы то проверяем
вот это
if (ConnectName=Name) and FromServer and ready then //если готовы то проверяем
Тут в скрипте ещё 1 проблемка. Если запущенно например 3 бота. И l2phx перехватил все 3 конекта. ТО при запуска скрипта безразнице какой в нём прописан ник:
Name='Gnum'; //Вписать сюда имя чара
Всёравно скрипт перехватывает данные со всех 3 чаров одновременно.
эт не очень удобн конечно, но после перехвата нужного конекта, мона снять галочку "Перехват; Искать клиент"
Возможно ли сделать так чтобы при обнаружении рейда писалось не одному чару, а нескольким?
Можно внести такие поправки в скрипт:
//************************************************** ****************************
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)
тестирую на квест мобе около гирана, пробовал на кланхолл манагере, все безрезультатно
Ты скрипт правильно настроил?
Я на Абисс х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.
ЗЫ: и ещё заметил такую фигню - если рядом с именем того кому будет отсылаться сообщение в пм просто поставить галочку, скрипт не пишет в пм этому чару, надо открыть ниспадающий спиок с именами персов и выбрать нужного, даже если он стоит первым по списку (точно также и с именами мобов, на которых будет реагировать чар)
Да, именно что надо выбирать. Фича такая. Я где то про это писал.
valentin
14.08.2008, 01:23
и всетаки не совсем понятно, откуда брать ИД для скрипта если брать из интерлюдовского npcname-e.dat то не работает совсем, если из npcname-e.dat от С4 то с неписями попробовал (монакан, приест дастин) все норм работает, но сегодня тестировал на ант квин (ид 12001 в С4), скрипт не сработал (вчера пробовал и с интерлюдовским ИД 29001, тоже не сработало)
Добавлено через 31 минуту
кажись понял, от базового интерлюдовского ИД из npcname-e.dat нужно отнять 23000 чтобы получить нужный
Проверяю на Abyss x300 на рыбаке в гиран харбор, не получается
Это я что то сделал не так или уже на абуссе это пофиксили?
Проверяю на Abyss x300 на рыбаке в гиран харбор, не получается
Это я что то сделал не так или уже на абуссе это пофиксили?
Что то не так сделал.
После настройки скрипта, включения и обязательного выбора в комбобоксах. Отойди подальше от рыбака и вернись. Должно пойти сообщение.
Ну и совсем было бы круто если бы ещё и звуковой сигнал можно было как-то впихнуть, но я не знаю можно ли через 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: что-то не смог попробовать.
Что то не так сделал.
После настройки скрипта, включения и обязательного выбора в комбобоксах. Отойди подальше от рыбака и вернись. Должно пойти сообщение.
вместо NLObP надо писать того кто палит (я так делал :)), или того кому сообщение слать будет?
вместо 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
Нужен скрипт чтобы пара ботов пасла орфен и потом бомбили пм.Такого не нашёл именно на орфен.Самому сделать не предлагайте ибо не умею.
Нужен скрипт чтобы пара ботов пасла орфен и потом бомбили пм.Такого не нашёл именно на орфен.Самому сделать не предлагайте ибо не умею.на предыдущей страничке не судьба посотреть, и подставить ИД орфена?Совсем народ обленился!
snakepwnz
22.08.2008, 19:22
А ты скажи мне ИД орфена..
В файле 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* , дам спасибку)
перечитал всю тему и не понял как сделать скрипт.
А как ты понял, что есть ваще этот сайт?
Самое простое - замени любого РБ из списка в скрипте на нужный тебе И ВСЕ! Можешь копировать строчку и добафить еще одну с нужным тебе РБ. Назвать можешь хоть Дядя Вася, тока циферки правильные напиши.
п.с: кстати за скрипт еще раз спасибо создателю.
перечитал всю тему и не понял как сделать скрипт. Если не сложно сделай скрипт на Орфен 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. Можно пробовать скрипт.
спасибо за быстрый ответ
ЗЫ: сорри только сейчас заметил что на первой странице это уже было описано;)
Добавлено через 24 минуты
такс, тепреь такая трабла. запускаю на абис х3 настроил все правильно, правильно указал ник чара, но в пм не хочет писать
вот что пишется в окне скрипта:
http://img171.imageshack.us/img171/6186/screenfv0.th.jpg (http://img171.imageshack.us/my.php?image=screenfv0.jpg)
тестирую на квест мобе около гирана, пробовал на кланхолл манагере, все безрезультатно
а что эта за прога?! как я понял через нее запускают скрипт?? если да, то где ее можно скачать?
Добавлено через 21 час 51 минуту
ну скажите плз чем отправить скрипт??? кроме l2ph и кроме бота!
а что эта за прога?! как я понял через нее запускают скрипт?? если да, то где ее можно скачать?
ну скажите плз чем отправить скрипт??? кроме l2ph и кроме бота!
Это скрипт для L2PacketHack. Почитай внимательно здесь (http://coderx.ru/forumdisplay.php?f=16), а потом вопросы задавай.
может в скрипте, вместо строк типа ComboBoxNpc.Items.ADD(....)
поставить
ComboBoxNpc.Items.LoadFromFile('npcsid.ini');
Список будет огромный, но вопросов как добавить моба не будет :D
или как вариант - просто вынести список РБ в отдельный файл и загружать его.
Добавлено через 23 часа 41 минуту
Или даже так
const
.......
NPCList = 'npcsid.ini'; //файл со списком NPC
.......
ComboBoxNpc.Items.LoadFromFile(NPCList);
вариант - просто вынести список РБ в отдельный файл и загружать его
Наверное самый лучший вариант. Если весь список NPC грузить, только путаница будет.
Хм... А можно обучить скрипт не спамить, а простенько так в пм 1 раз написать какой рб и время респа? :)
Хм... А можно обучить скрипт не спамить, а простенько так в пм 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 чаров и столько же бегающих скриптов.
Если пойти дальше, то можно научить скрипт вычитывать
Этот скрипт под грацию работает?
ID пакетов в Грации отличаются, нодо найти соответстяие с С4 и заменить.
PS: может позже сам поправлю
можно ID Raid Bossa Core
юзну спасибку
KrazyKeNNy
25.01.2009, 16:07
12052
Я так издавал звук:
lib := loadLibrary('user32.dll');
CallFunction(lib,'MessageBeep',1,[5000]);
Функция издаст стандартный звуки винды "Стандартный звук". Какой вы там звук поставите - такой и будет звучать.
Ну ктонить разобрался со скриптом на нашей гране ада!!! Методом "тыка" я не смог подобрать нужное ИД. А может сам скрипт перестал работать...
а может не методом тыка нужно?)
а может не методом тыка нужно?)
вот еслиб знать как, яб помучился..)) но мой ник говорит сам за себя.):eek:
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.
Вот скрипт переделанный под ХБ. Проверял на фишермене в геран харбор, полная проверка за вами. ИД мобов как и в интерлюдии.
Спасибо автору за данную прелесть.
Возникла проблемма, как отнять если id цели изначально менее 23000 ?
Возникла проблемма, как отнять если id цели изначально менее 23000 ?
Что ты имеешь ввиду "отнять"?
Если про kID, то 23000 приходит в пакете и ты знаешь реальный ID босса, сам вычисли коэффициент и вставь его в скрипт.
http://l2manual.ru/?do=ladb3&ladb_p=npc&npc_id=29001
вот АК, отнимаем 23000 и получаем 6001 - что и прописываем в скрипте.
http://l2manual.ru/?do=ladb3&ladb_p=npc&npc_id=22215
А с этим дракончиком как быть...)
lamer, пакеты NpcInfo для этих монстров покажи.
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 пакетов, что делать?
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
а вот такой вопрос. возможно ли средствами данного скрипта, естественно переделанного, мониторить РБ к которым требуется прохождение через тп/кристал ? То есть обрабатывать сам диалог, по появлении изменений в тексте ответа от нпс, слать так же пм определённому игроку. Переписать скрипт не прошу, всё равно не согласитесь помочь, просто подскажите где копать, т.к в скриптописание слегка ноль.
Вот я когда то писал скрипт на проверку антараса. Он для интерлюдии.
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);
не нужно для каждого нпц вручную вводить.
Pos('Will you confront Antharas',ReadS(6))>0
Reads(6) - считывается весь диалог, и если в нем присутствует 'Will you confront Antharas' то функция выводит его позицию в тексте, то есть с какого по счету символа в тексте эта строчка начинается. Следовательно если ее нет тексте то функция выводит 0.
NLObP
Name='NLObP'; //Вписать сюда имя чара
//kID=1000000; //коэфф вычитаемый из NpcID C4 lagam.net
kID=1023000; //коэфф вычитаемый из NpcID C6 theAbyss.ru
ааа каким боком ты это с лагамом связан? :) играл раньше? :)
ааа каким боком ты это с лагамом связан? играл раньше?
Скрипты тестил.
А как следить безнпсных эпиков, например АК?
безнпсных эпиков:eek:безнпсных - это как?
Sashafaq
13.06.2010, 19:53
наверное эпики которые без квеста через нпс
"безнпссных":D
л2контрол можешь исползовать если самому лень делать подобные функции в пх, учитывая, что есть 6.3 про у всех
Sashafaq
14.06.2010, 07:51
ппц флудер во всех темах нужно поставить смайл и прочее..
Breadfan
28.07.2010, 00:11
Под финал, но может потребоваться правка kID
Отключение клиента - убрано, при необходимости - сами поправьте
Тестировал только на Кабрио - остальных не смотрел
на коком серве тестил то ?
//на местном городском, без приблудных защит, потому и написано что коэффициент может придеться править под свой.
//QaK:BreadFan ты хотя бы подписывайся, что это ты =)
//Breadfan: Не привык еще, исправлюсь :)
supernewbie
07.08.2010, 19:10
выложу свое творение по сабжу сюда чтоли
---
Все рб с 67 по 87, а также бонусом ак, орф, коре, бай. Палилка которая спалила рб - орет в пм Name'у.
Breadfan
07.08.2010, 22:10
А в чем плюсы\минусы\отличия в сравнении со скриптом от NLObP ?
supernewbie, для уменьшения текста скрипта можно части
var
Kernon1:integer;
...
и
procedure Init;
begin
Kernon1:=1025263;
...
end;
объединить в
const
Kernon1=1025263;
...
Добавлено через 3 минуты
Breadfan, скрипт очень прост: ждет прихода пакета #$0C, после этого определяет чей NpcID в пакете присутствует и посылает об этом Npc сообщение юзеру
А еще лучше 2 массива (имя и id), тогда строчки
............................
............................
if (ReadD(6)=(Sheshark)) then
begin
SendMsg2('Water Dragon Seer Sheshark РЕСП (72)');
end;
............................
............................
превратятся в цикл.
Breadfan
07.08.2010, 22:59
to NLObP: Ну твой вообще-то выполняет абсолютно тож самое :)
Кстати наведу на мысль: после небольшой доработки скрипта (вставкой блока обработки команд от Ведущего), и использовании наблюдателя с профой сумонеров (коне\котоводы\варк) прохождение некоторых квестов намного упрощается...
Немного поправил скрипт supernewbie, проверте плиз.
supernewbie
15.08.2010, 03:47
Немного поправил скрипт supernewbie, проверте плиз.
разве он не будет писать пустое сообщение если ида моба в списке нет?
а где эту прогу скачать можно?
http://desmond.imageshack.us/Himg171/scaled.php?server=171&filename=screenfv0.jpg&res=landing
или это отображение скрипта в l2phx.3.5.34.176 ?
з.ы. йа нуп )
Это результат выполнения скрипта. Качается у нас на форуме) Где-то на форуме :)
да я скачал, l2hpx вроде так.
осталось разобраться, и воткнуться в фришку мою ))) без палилки на АК тяжко )
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot