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

Помоги скриптом команда выключить панель при телепорте

Рег
15 Июл 2016
Сообщения
16
Реакции
0
Всем привет
Я новенький строго не судите ( я страюсь во всем разобраться в скриптах всего 24ч) Новичек


бывает капча не срабатывает бота сумонит в город ( редко но бывает)
как сделать так что бы в этом моменте как попадает в город ВЫКЛЮЧАЕТ ПАНЕЛЬ ( что бы пока бежит на топ спот не бился в стены)

-----


СКРИПТ
var obj: TL2NPC;
obj2: TL2Effect;

Enemy: TL2Live;
Begin
while delay(6000) do begin // бесконечный цикл


if User.Dead then // умер- вырубаем интерфейс, возврат в город и пауза 15 секунд
begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(15000);
end;

if user.inrange(146272, -58176, -2976, 250, 150) //возле хранилища
then
begin
Engine.MoveTo(147593, -58103, -3007);
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(145264, -57680, -2976, 250, 150) //возле хранилища 2
then
begin
Engine.MoveTo(145588, -56926, -3007);
Engine.MoveTo(146673, -56095, -2807);
Engine.MoveTo(147543, -56054, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(145696, -57696, -2976, 250, 150) //возле хранилища 3
then
begin
Engine.MoveTo(145510, -56930, -3007);
Engine.MoveTo(146499, -56202, -2807);
Engine.MoveTo(147481, -56031, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(144944, -55392, -2976, 250, 150) //самый край
then
begin
Engine.MoveTo(145153, -56813, -3007);
Engine.MoveTo(145569, -56855, -3007);
Engine.MoveTo(146467, -56271, -2807);
Engine.MoveTo(147566, -56034, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(144752, -56752, -2976, 250, 150) //самый край
then
begin
Engine.MoveTo(145534, -56884, -3007);
Engine.MoveTo(146265, -56418, -2807);
Engine.MoveTo(147407, -56063, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;

//восточная лестница
if user.inrange(149120, -58064, -2976, 250, 150) //магазин
then
begin
Engine.MoveTo(147706, -58107, -3007);
Engine.MoveTo(147751, -56737, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(150400, -56752, -2976, 250, 150) //самый край
then
begin
Engine.MoveTo(149935, -56870, -3007);
Engine.MoveTo(149139, -56390, -2807);
Engine.MoveTo(147929, -56063, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(150704, -55744, -2976, 250, 150) //самый край 2
then
begin
Engine.MoveTo(149935, -56870, -3007);
Engine.MoveTo(149139, -56390, -2807);
Engine.MoveTo(147929, -56063, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;

//северная лелтница
if user.inrange(147680, -58208, -2976, 250, 150) //низ центр лестницы
then
begin
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(148288, -58304, -2976, 250, 150) //низ центр лестницы чуть правее
then
begin
Engine.MoveTo(147738, -58050, -3007);
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(147232, -58480, -2976, 250, 150) //низ центр лестницы чуть левее
then
begin
Engine.MoveTo(147677, -58063, -3007);
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(149088, -56256, -2776, 250, 150)
then
begin
Engine.MoveTo(147854, -56054, -2807);
Engine.MoveTo(147934, -55354, -2760);
end;

//площадь
if user.inrange(146832, -55904, -2776, 250, 150) //площадь слева от лестницы
then
begin
Engine.MoveTo(147529, -56046, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(146368, -56256, -2776, 250, 150) //площадь слева от лестницы 2
then
begin
Engine.MoveTo(147529, -56046, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(147664, -56464, -2776, 250, 150) //площадь центр
then
begin
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(147680, -56928, -2776, 250, 150) //площадь центр 2
then
begin
Engine.MoveTo(147810, -56110, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(148560, -55904, -2776, 250, 150) //площадь справа от лестницы
then
begin
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(149872, -57424, -2976, 250, 150)
then
begin
Engine.MoveTo(149897, -56910, -2979);
Engine.MoveTo(149230, -56412, -2779);
Engine.MoveTo(147939, -55999, -2772);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(144960, -56224, -2976, 250, 150)
then
begin
Engine.MoveTo(145458, -56853, -2979);
Engine.MoveTo(146343, -56326, -2779);
Engine.MoveTo(147625, -55995, -2772);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(144496, -55088, -2976, 250, 150)
then
begin
Engine.MoveTo(145327, -56873, -2979);
Engine.MoveTo(146337, -56445, -2779);
Engine.MoveTo(147533, -55963, -2766);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;
if user.inrange(145392, -56960, -2976, 250, 150)
then
begin
Engine.MoveTo(146347, -56305, -2779);
Engine.MoveTo(147514, -56003, -2772);
Engine.MoveTo(147936, -55368, -2760); //возле гк
end;

Engine.MoveTo(117096, 76904, -2688);
Engine.SetTarget(31275); // берем в таргет НПЦ с ИД( можно имя в скобках 'имя'
Engine.DlgOpen(); // открываем диалоговое окно
delay(500);
Engine.DlgSel(5);
delay(500);
Engine.DlgSel(6);
delay(500);


Engine.MoveTo(145562, -81643, -5459);
Engine.MoveTo(146536, -82216, -5936);
Engine.MoveTo(147848, -83224, -5744);
Engine.MoveTo(148904, -82936, -5600);
Engine.MoveTo(148328, -84232, -5416);
Engine.MoveTo(147768, -85416, -5248);
Engine.MoveTo(147160, -86744, -5120);
Engine.MoveTo(146424, -88392, -4928);
Engine.MoveTo(145992, -89528, -4688);
Engine.MoveTo(147433, -89388, -4560);
Engine.MoveTo(148312, -88264, -4544);


engine.loadzone('nekr777ketr');

Engine.FaceControl(0,true); // пришли на, спот врубили интерфейс и фармим
delay(6000);
end;
end.


Спасибо,Всем кто по смотрел,Всем кто помог!
Админу добра=)
 
fan1k написал(а):
бывает капча не срабатывает бота сумонит в город ( редко но бывает)
Элементарно, интерфейс бота → Events → Teleport → поставить галочку "Pause activity for - свое время".
Можна конечно и через скрипт...Но так ведь проще :)

Простое решение через скрипт . После каждого:

if user.inrange(147232, -58480, -2976, 250, 150)
дописать :

Engine.FaceControl(0,False);
Таким образом получится, если персонаж в радиусе одной из точек респа в городе, то выключается интерфейс, и персонаж бежит по своим делам.
 
спасибо, я тоже думал к точкам привязать или к гк спасибо.
 
fan1k написал(а):
спасибо, я тоже думал к точкам привязать или к гк спасибо.
Вот еще вариант:
Код:
begin
While Engine.Delay(1000) do
if (GettickCount - User.TeleportTime < 5000) and (User.TeleportDist < 2000) and (User.TeleportDist > 10) then //5 сек назад был телепорт
begin
print('Teleported!'); PlaySound(exepath + '\sounds\' + 'dc' + '.wav', False);
end;
end.
 
sasha282 написал(а):
begin While Engine.Delay(1000) do if (GettickCount - User.TeleportTime < 5000) and (User.TeleportDist < 2000) and (User.TeleportDist > 10) then //5 сек назад был телепорт begin print('Teleported!'); PlaySound(exepath + '\sounds\' + 'dc' + '.wav', False); end; end.
не совсем понял как это работает
типо если 5000,2000,10 секунд назад был телепорт он включает оповещавшие ?



sasha282 написал(а):
begin While Engine.Delay(1000) do if (GettickCount - User.TeleportTime < 5000) and (User.TeleportDist < 2000) and (User.TeleportDist > 10) then //5 сек назад был телепорт begin Engine.FaceControl(0,False); end; end.
тогда у меня должно быть так
если 10 сек назад был телепорт то выключить понель


Так?
 
@rsd, Я уже писал, что можна через события, видимо автору не подходит.
 
fan1k написал(а):
тогда у меня должно быть так если 10 сек назад был телепорт то выключить понель Так?
Вобщем готовый вариант даю тебе, через поток запустим проверку.

procedure CheckTP;
begin
while Engine.Status = lsOnline do begin
delay (1000);
if (GettickCount - User.TeleportTime < 3000) and (User.TeleportDist > 100) then //<3 сек назад был тп,тоесть 3 сек играть музыку
begin
print('Был телепорт, выключаем бот!');
PlaySound(exepath + '\sounds\' + 'dc' + '.wav', False); //тут твой код
Engine.FaceControl(0,False);
end;
end;
end;

begin
Script.NewThread(@CheckTP);
end.
запускать поток так:

Script.NewThread(@CheckTP);
Процедуру копируешь в свой скрипт, сразу перед Begin (перед началом основного скрипта), а команду на запуск потока сразу после Begin. Думаю разберешься уже, тут все просто. Протестировал ошибок не выдает. Работает четко.
 
Вот интересно почему никто не предложил использовать WaitAction?

Код:
procedure CheckTP;
var
    p1, p2: pointer;
    action: TL2Action;
begin
    while lsOnline = engine.status do
    begin
        action := engine.WaitAction([laTeleport], p1, p2);
        if laTeleport = action then
        begin
            engine.FaceControl(0, false);
        end;
    end;
end;

begin
    script.NewThread(@CheckTP);
end.
 
@x-user,
Расскажи что за строки такие
я так понимаю это готовый скрипт его просто надо вставить

при телепорте он будет выключать бота ?
 
fan1k написал(а):
Расскажи что за строки такие я так понимаю это готовый скрипт его просто надо вставить при телепорте он будет выключать бота ?
Он вставляется аналогично моему варианту. Насчет работоспособности, тестируй. Мой вариант я проверил, и он работает.
 
fan1k написал(а):
x-user, Расскажи что за строки такие я так понимаю это готовый скрипт его просто надо вставить при телепорте он будет выключать бота ?
Магия:
Код:
function WaitAction(Actions: TL2Actions; var P1; var P2;  TimeOut: Cardinal = INFINITE): TL2Action;
Actions // массив событий, на которые нужно реагировать
var P1, P2 // передаваемые параметры, для каждого события свои
TimeOut // сколько ожидать событие (по умолчанию - бесконечность)
Возможные события:
Код:
laSpawn,
laDelete,
laPetSpawn,
laPetDelete,
laInvite,
laDie,
laRevive,
laTarget,
laUnTarget,
laInGame,
laStatus,
laBuffs,
laSkills,
laDlg,
laConfirmDlg,
laStop,
laStartAttack,
laStopAttack,
laCast,
laCancelCast,
laTeleport,
laAutoSoulShot,
laNpcTrade,
laSysMsg,
laChat,
laKey
 
можно вставить ругаеться на оба варианта Возможно дело в моих руках просто

function Buff(value:string):boolean;
var
s:string;
bypass:string;
i:integer;
b:boolean;
mass:array [1..100] of string;
Obj: TL2Buff;
begin
s:=Engine.DlgText;
b:=true;
i:=1;
while b do
begin
Delete(s,1,Pos(' mass:=Copy(s,1,Pos('>',s));
Delete(s,1,Length(mass));
inc(i);
if Pos(' b:=false;
end;
for i:=1 to 100 do
if mass <> '' then
if Pos(value,mass) <> 0 then
begin
bypass := mass;
delete(bypass,1,pos('action="',bypass)+17);
bypass:=Copy(bypass,1,pos('"',bypass)-1);
break;
end;
Engine.ByPassToServer(bypass);
end;
var obj: TL2NPC;
buff1: TL2Effect;
Enemy: TL2Live;
begin
while 1<>2 do begin // бесконечный цикл
delay(1000);
if User.Dead then begin
Delay(500);
Engine.FaceControl(0,false);
delay(500);
Engine.gohome;
delay(5000);
end;
if user.inrange(146272, -58176, -2976, 250, 150) then begin
Engine.MoveTo(147593, -58103, -3007);
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(145264, -57680, -2976, 250, 150) then begin
Engine.MoveTo(145588, -56926, -3007);
Engine.MoveTo(146673, -56095, -2807);
Engine.MoveTo(147543, -56054, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(145696, -57696, -2976, 250, 150) then begin
Engine.MoveTo(145510, -56930, -3007);
Engine.MoveTo(146499, -56202, -2807);
Engine.MoveTo(147481, -56031, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(144944, -55392, -2976, 250, 150) then begin
Engine.MoveTo(145153, -56813, -3007);
Engine.MoveTo(145569, -56855, -3007);
Engine.MoveTo(146467, -56271, -2807);
Engine.MoveTo(147566, -56034, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(144752, -56752, -2976, 250, 150) then begin
Engine.MoveTo(145534, -56884, -3007);
Engine.MoveTo(146265, -56418, -2807);
Engine.MoveTo(147407, -56063, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(149120, -58064, -2976, 250, 150) then begin
Engine.MoveTo(147706, -58107, -3007);
Engine.MoveTo(147751, -56737, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(150400, -56752, -2976, 250, 150) then begin
Engine.MoveTo(149935, -56870, -3007);
Engine.MoveTo(149139, -56390, -2807);
Engine.MoveTo(147929, -56063, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(150704, -55744, -2976, 250, 150) then begin
Engine.MoveTo(149935, -56870, -3007);
Engine.MoveTo(149139, -56390, -2807);
Engine.MoveTo(147929, -56063, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(147680, -58208, -2976, 250, 150) then begin
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(148288, -58304, -2976, 250, 150) then begin
Engine.MoveTo(147738, -58050, -3007);
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(147232, -58480, -2976, 250, 150) then begin
Engine.MoveTo(147677, -58063, -3007);
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(149088, -56256, -2776, 250, 150) then begin
Engine.MoveTo(147854, -56054, -2807);
Engine.MoveTo(147934, -55354, -2760);
end;
if user.inrange(146832, -55904, -2776, 250, 150) then begin
Engine.MoveTo(147529, -56046, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(146368, -56256, -2776, 250, 150) then begin
Engine.MoveTo(147529, -56046, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(147664, -56464, -2776, 250, 150) then begin
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(147680, -56928, -2776, 250, 150) then begin
Engine.MoveTo(147810, -56110, -2807);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(148560, -55904, -2776, 250, 150) then begin
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(149872, -57424, -2976, 250, 150) then begin
Engine.MoveTo(149897, -56910, -2979);
Engine.MoveTo(149230, -56412, -2779);
Engine.MoveTo(147939, -55999, -2772);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(144960, -56224, -2976, 250, 150) then begin
Engine.MoveTo(145458, -56853, -2979);
Engine.MoveTo(146343, -56326, -2779);
Engine.MoveTo(147625, -55995, -2772);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(144496, -55088, -2976, 250, 150) then begin
Engine.MoveTo(145327, -56873, -2979);
Engine.MoveTo(146337, -56445, -2779);
Engine.MoveTo(147533, -55963, -2766);
Engine.MoveTo(147936, -55368, -2760);
end;
if user.inrange(145392, -56960, -2976, 250, 150) then begin
Engine.MoveTo(146347, -56305, -2779);
Engine.MoveTo(147514, -56003, -2772);
Engine.MoveTo(147936, -55368, -2760);
end;
begin
Engine.SetTarget(30346);
delay(1000);
Engine.DlgOpen();
delay(500);
buff('Профиль');
delay(3000);
buff('Использовать');
delay(1000);
Engine.SetTarget(31275);
delay(1000);
Engine.DlgOpen();
delay(500);
Engine.DlgSel(5);
delay(500);
Engine.DlgSel(10);
delay(2000);
if user.inrange(185702, -106042, -6179, 800) then begin
Engine.MoveTo(185336, -106120, -6304);
Engine.MoveTo(184664, -106264, -6304);
Engine.MoveTo(183928, -106344, -6200);
Engine.MoveTo(183336, -106552, -6016);
Engine.MoveTo(182840, -107016, -6000);
Engine.MoveTo(181816, -107944, -5992);
Engine.MoveTo(181832, -108568, -5848);
Engine.MoveTo(182040, -109192, -5832);
Engine.MoveTo(182440, -109864, -5816);
Engine.MoveTo(182840, -110040, -5848);
Engine.MoveTo(183944, -110312, -6128);
Engine.MoveTo(184312, -110936, -5976);
Engine.MoveTo(184856, -110744, -5888);
engine.loadzone('CTepBa-Ember');
Engine.FaceControl(0,true);
delay(6000);
end;
end;
end;
end.
',s)>',s)-1);

Спасибо огромное!
 
fan1k написал(а):
можно вставить ругаеться на оба варианта Возможно дело в моих руках просто
Дело в функции Buff на на нее адрик ругается, и строки var должны быть сверху а потом уже функции. Посмотри примеры других скриптов.
 
Назад
Сверху