Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

Запись пути

SARCAZM

Это что за покемон?
Команда форума
Рег
5 Июн 2015
Сообщения
1,446
Реакции
1
Trovo
SARCAZM
Для разработки скриптов часто требуется заставить персонажа бежать по определенному пути. Этот скрипт записывает путь, который мы прошли. В итоге получаем готовый список команд.

Без-имени-1.jpg
uses SysUtils, StdCtrls, Controls, Forms, Dialogs;


type
TEvents = class (tobject)
procedure OnClick(Sender: tobject);
end;

var Frm : TForm;
LB : TListBox;
Events: TEvents;
bStart: TButton;
bStop : TButton;
bClear: TButton;
bDel : TButton;
bSave : TButton;
Action: TL2Action;
obj : TL2Live;
Tar : TL2Live;
Txt : string;
p : pointer;

procedure TEvents.OnClick(Sender: tobject);
var S: string;
begin
if Sender = bClear then LB.Clear;
if Sender = bSave then begin
S := '';
if not PromptForFileName(S, 'ScriptRec (*.txt)|*.txt', '.txt', '', '', true) then exit;
LB.Items.insert(0,'BEGIN');
LB.Items.Add('END.');
LB.Items.SaveToFile(S);
LB.Items.delete(0);
LB.Items.delete(LB.Items.Count -1);
end;
if (Sender = bDel) and (LB.ItemIndex <> 0) then LB.Items.delete(LB.ItemIndex);
if Sender = bStart then begin
bStart.Enabled := false;
bStop.Enabled := true;
end;
if Sender = bStop then begin
bStart.Enabled := true;
bStop.Enabled := false;
end;
end;

procedure MainLog;
begin
if (assigned(Frm)) and (not bStart.Enabled) then LB.Items.Add(Txt);
end;

procedure ToLog(const S: string);
begin
Txt := S;
Script.MainProc(@MainLog);
end;

procedure MainProc;
begin
Events := TEvents.Create;

Frm := TForm.Create(nil);
Frm.Caption := 'ScriptRec';
Frm.BorderStyle := bsDialog;
Frm.Position := poScreenCenter;
//Frm.FormStyle := fsStayOnTop;
Frm.Height := 340;
Frm.Width := 350;
Frm.AlphaBlendValue := 200;
Frm.AlphaBlend := true;
//Frm.OnClose := Events.OnClose;

LB := TListBox.Create(Frm);
LB.Parent := Frm;
LB.Width := 250;
LB.Align := alLeft;

bStart := TButton.Create(Frm);
bStart.left := LB.Width + 10;
bStart.Caption := 'Старт';
bStart.OnClick := Events.OnClick;
bStart.Parent := Frm;

bStop := TButton.Create(Frm);
bStop.left := bStart.left;
bStop.Top := bStart.Top + bStart.Height + 4;
bStop.Enabled := false;
bStop.Caption := 'Стоп';
bStop.OnClick := Events.OnClick;
bStop.Parent := Frm;

bClear := TButton.Create(Frm);
bClear.left := bStart.left;
bClear.Top := bStop.Top + bStop.Height + 4;
bClear.Caption := 'Очистить';
bClear.OnClick := Events.OnClick;
bClear.Parent := Frm;

bDel := TButton.Create(Frm);
bDel.left := bStart.left;
bDel.Top := bClear.Top + bClear.Height + 4;
bDel.Caption := 'Удалить стр';
bDel.OnClick := Events.OnClick;
bDel.Parent := Frm;

bSave := TButton.Create(Frm);
bSave.left := bStart.left;
bSave.Top := bDel.Top + bDel.Height + 4;
bSave.Caption := 'Сохранить...';
bSave.OnClick := Events.OnClick;
bSave.Parent := Frm;

Frm.Show;
end;

procedure OnFree;
var Tmp: tobject;
begin
Tmp := Frm;
Frm := nil;
bStart.Free;
bStop.Free;
bClear.Free;
bDel.Free;
bSave.Free;
LB.Free;
Tmp.Free;
Events.Free;
print('ScriptRec - Stopped');
end;


begin
Script.MainProc(@MainProc);
repeat
Action := Engine.WaitAction([laDlg, laUnTarget, laStop], obj, p);

if (Action = laStop) and (Obj = User) then ToLog(' Engine.MoveTo(' + inttostr(User.X) + ',' + inttostr(User.Y) + ',' + inttostr(User.Z) + ');');
if (Action = laDlg) and (User.Target.Valid) and (User.Target <> Tar) then begin
Tar := User.Target;
ToLog(' Engine.SetTarget('''+ Tar.Name +''');');
ToLog(' Engine.DlgOpen;');
ToLog(' //Здесь диалог с NPC');
end;
if (Action = laUntarget) and (obj = User) and (assigned(Tar)) then begin
Tar := nil;
ToLog(' Engine.CancelTarget;');
end;
until not assigned(Frm);
end.
В .txt формате: Посмотреть вложение Запись.txt
 
@SARCAZM,

Сарказм, привет.
Я вот подумал, помимо записи пути, можно же так же записывать действия , выбор диалогов и т.д. в txt файл.
Не сильно знаком со всем этим, но думаю, если дашь пинок в нужном направлении, можно покумекать на данную тему.

Если все правильно сделать, то в принципе, при повторяющихся квестах, можно существенно упростить работу, один раз пройдя квест.
 
Да тоже интересно есть ли скрипт записи действий
 
а есть готовые сркипты? бегатни из города в город? или в локации какие. желательно для классика!
 
Класс, как выше было сказано еще бы лаб запись диалога и так далее.
Еще вопросик сразу. Есть программное обеспечение которое может помочь в написании скрипта?

// SARCAZM: Такого софта в шаре нет
 
@SARCAZM, Оо я либо слепой, либо темка очень старая) я нашел на др портале меньше половины-того что ты скинул. спасиб за скрипты. если появятся еще какие. будь добр скинь!
 
тоесть если записать путь можно сделать скриптом чтобы он бегал к примеру кругами по локе? а то движение по маршруту криво работает.
 
@112,
конечно

другое дело как он будет на сторонние дела отвлекаться (на таргет сундуков и их открытие напрмер)
но это всё естественно можно дописать доделать
 
DIMDIMKA написал(а):
Я вот подумал, помимо записи пути, можно же так же записывать действия , выбор диалогов и т.д. в txt файл.
Этот скрипт писался еще под шадов когда только только ввели юнит с формами 3 года назад, его переписать можно намного лучше, чтобы не нужно было останавливаться, а записывать именно клики как и встроенный.
На новом боте можно записывать ВСЕ я давно уже написал подобный скрипт, в плоть до того что и сколько покупать в магазине....
 
@ane13, буду благодарен с настройкой в лс))))) с доработкой я имею ввиду
 
Подскажите, если просто пробежать к примеру по катам и записать путь. При воспроизведении скрипта чар будет мобов бить или тупо пробежит?
 
@Stix, тупо пробежит, если не настроить в интерфейсе
 
@Ivanius,
слушай а как этот скрипт можно получить?
мб в пм вышлиш?
спасибо за ранее
 
Назад
Сверху