- Рег
- 14 Май 2016
- Сообщения
- 37
- Реакции
- 0
Приветствую!
В общем, нуждаюсь в помощи знатоков в вопросе приведения моего первого скрипта в порядок.. Спрашивал, спрашивал советов, а все равно где-тоnahuevertil накосячил.
Суть скрипта проста - бесконечное выполнение квеста с проверкой на смерть персонажа, в случае которой чар летит в город и спокойно стоит на месте. Без возвращения на спот и проверок шагов квеста - сначала бы с самым банальным разобраться окончательно..
Там проблем много, как мне кажется.. Во-первых, само оформление может страдать, так что заранее приношу извинения за кровь из глаз эстетов. Во-вторых, проверка на смерть не отрабатывается должным образом. В-третьих, периодически появляется проблема с изначальным взятием квеста - искомая строчка была у NPC второй, а потом вдруг внезапно становится третьей. Пробовал вместо Engine.DlgSel(*) отправлять байпасс - по неясным причинам схватил авто-тюрьму на 1500 минут...
В общем, прошу просмотреть и высказать ваши советы и предложения. От меня взамен - тысяча благодарностей, плюсы к вашей карме и репутации на Равре ^_^
var obj: TL2NPC;
obj2: TL2Effect;
Enemy: TL2Live;
Item: TL2Item;
Npc: TL2Npc;
L2Skill: TL2Skill;
Control: TL2Control;
TNpcList: TL2List;
procedure Dead();
Begin
while 1<>2 do begin
delay(2000);
if User.Dead then begin
print('Умер');
Delay(5000);
engine.GoHome;
Engine.FaceControl(0, false);
end;
end;
end;
Begin
while 1<>2 do begin
delay(5000);
if user.InRange(149594, -112698, -2059,300,300) then begin
delay(100);
engine.settarget(31521);
engine.dlgOpen();
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
Engine.DlgSel(1); //на самом деле, как вы знаете, достаточно было бы только открыть диалог, два раза кликнуть по первой строчке и все, однако
Delay(1000); //адекватно строка нажимается и отправляется байпасс только с двумя лишними строками.. не знаю, с чем связано..
Engine.DlgSel(1); //и именно на этапе взятия квестов эти самые квесты иногда меняются в диалоговом окне местами, из-за чего открывается не тот квест, отправляется не тот байпасс,
Delay(1000); //и мой персонаж отправляется в тюрьму..
Engine.DlgSel(1); Engine.bypasstoserver('Quest 621_EggDelivery 31521-1.htm');
delay(1000);
engine.dlgOpen();
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
Engine.DlgSel(2);
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
Engine.DlgSel(1); Engine.bypasstoserver('Quest 622_DeliveryOfSpecialLiquor 31521-1.htm');
delay(1000);
// далее все без проблем и абсолютно идентично - маршрут к следующему NPC, диалог с ним и т.д.
delay(100);
engine.settarget(31521);
engine.dlgOpen();
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
engine.bypasstoserver('Quest 621_EggDelivery 31521-3.htm');
delay(1000);
engine.dlgOpen();
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
engine.bypasstoserver('Quest 622_DeliveryOfSpecialLiquor 31521-3.htm');
end;
begin
Script.NewThread(@dead);
end;
end;
end.
Заранее спасибо за ваше время и терпение
В общем, нуждаюсь в помощи знатоков в вопросе приведения моего первого скрипта в порядок.. Спрашивал, спрашивал советов, а все равно где-то
Суть скрипта проста - бесконечное выполнение квеста с проверкой на смерть персонажа, в случае которой чар летит в город и спокойно стоит на месте. Без возвращения на спот и проверок шагов квеста - сначала бы с самым банальным разобраться окончательно..
Там проблем много, как мне кажется.. Во-первых, само оформление может страдать, так что заранее приношу извинения за кровь из глаз эстетов. Во-вторых, проверка на смерть не отрабатывается должным образом. В-третьих, периодически появляется проблема с изначальным взятием квеста - искомая строчка была у NPC второй, а потом вдруг внезапно становится третьей. Пробовал вместо Engine.DlgSel(*) отправлять байпасс - по неясным причинам схватил авто-тюрьму на 1500 минут...
В общем, прошу просмотреть и высказать ваши советы и предложения. От меня взамен - тысяча благодарностей, плюсы к вашей карме и репутации на Равре ^_^
var obj: TL2NPC;
obj2: TL2Effect;
Enemy: TL2Live;
Item: TL2Item;
Npc: TL2Npc;
L2Skill: TL2Skill;
Control: TL2Control;
TNpcList: TL2List;
procedure Dead();
Begin
while 1<>2 do begin
delay(2000);
if User.Dead then begin
print('Умер');
Delay(5000);
engine.GoHome;
Engine.FaceControl(0, false);
end;
end;
end;
Begin
while 1<>2 do begin
delay(5000);
if user.InRange(149594, -112698, -2059,300,300) then begin
delay(100);
engine.settarget(31521);
engine.dlgOpen();
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
Engine.DlgSel(1); //на самом деле, как вы знаете, достаточно было бы только открыть диалог, два раза кликнуть по первой строчке и все, однако
Delay(1000); //адекватно строка нажимается и отправляется байпасс только с двумя лишними строками.. не знаю, с чем связано..
Engine.DlgSel(1); //и именно на этапе взятия квестов эти самые квесты иногда меняются в диалоговом окне местами, из-за чего открывается не тот квест, отправляется не тот байпасс,
Delay(1000); //и мой персонаж отправляется в тюрьму..
Engine.DlgSel(1); Engine.bypasstoserver('Quest 621_EggDelivery 31521-1.htm');
delay(1000);
engine.dlgOpen();
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
Engine.DlgSel(2);
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
Engine.DlgSel(1); Engine.bypasstoserver('Quest 622_DeliveryOfSpecialLiquor 31521-1.htm');
delay(1000);
// далее все без проблем и абсолютно идентично - маршрут к следующему NPC, диалог с ним и т.д.
delay(100);
engine.settarget(31521);
engine.dlgOpen();
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
engine.bypasstoserver('Quest 621_EggDelivery 31521-3.htm');
delay(1000);
engine.dlgOpen();
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
Engine.DlgSel(1);
Delay(1000);
engine.bypasstoserver('Quest 622_DeliveryOfSpecialLiquor 31521-3.htm');
end;
begin
Script.NewThread(@dead);
end;
end;
end.
Заранее спасибо за ваше время и терпение