Перейти к содержимому

Фотография
- - - - -

Помогите пожалуйста не могу разобраться с потоками


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1
Dareei

Dareei
  • 4
    0
    Не выбрано
    • Lvl 2
    • Пользователь

Приветствую вас форумчане, я только учусь делать скрипты, простенькие получаються но у меня не выходит соединить 2 скрипта уже 3 дня мучаюсь ни чего не выходит, помогите пожалуйста а лучше обьясните как соединить эти 2 скрипта.

Пользуюсь крякнутым адриком может в этом проблема.

 

Этот скрипт отвечает за фарм комнат

function MobInZone: boolean;
var
obj: TL2NPC;
mob: integer;
obj2: TL2Effect;
Enemy: TL2Live;
begin
  result:= False;
  for mob:=0 to npclist.count-1 do begin
   if npclist.items(mob).inzone and not npclist.items(mob).dead then begin
     if npclist.items(mob).z > (user.z-400) then begin
      if npclist.items(mob).z < (user.z+400) then begin
      result:= true;
      end;
     end;
   end;
  end;
end;

begin

while 1<>2 do begin   // бесконечный цикл
 Engine.LoadConfig('piligrim1'); // загрузить конфиг из папки сетинг
 engine.LoadZone('piligrim_left1.zmap'); // сохраняем пре-сеты комнат где будем фармить
 engine.FaceControl(0, true);
 while MobInZone do delay(500);
 engine.FaceControl(0, false);
 Engine.MoveTo(45224, 119160, -5392); //путь в след комнату


 engine.LoadZone('piligrim_left2.zmap');
 engine.FaceControl(0, true);
 while MobInZone do delay(500);
 engine.FaceControl(0, false);
 //Engine.MoveTo(182983, -13337, -4925); //путь в след комнату
 Engine.MoveTo(45256, 120120, -5392);//навернули круг и бежим в первую
end;
end.

А этот за то чтобы в случае смерти летел в город и ребафался у нпц.

   var obj: TL2NPC;
    obj2: TL2Effect;

   Enemy: TL2Live;
Begin
while 1<>2 do begin   // бесконечный цикл


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





  //1 менять тут
// этот кусок - точки респа выбранной деревни  их просто заменить на нужную вам
 if User.inrange(19134,144847,-3096, 250, 150) then begin
  Engine.MoveTo(19134,144847,-3096);
  Engine.MoveTo(18041,144052,-3057);
  Engine.MoveTo(16727,144111,-2980);
  Engine.MoveTo(15933,143331,-2771);  
  Engine.MoveTo(15628,142920,-2704);
end;
if User.inrange(18954,144428,-3096, 250, 150) then begin
  Engine.MoveTo(18954,144428,-3096);
  Engine.MoveTo(18600,144387,-3070);
  Engine.MoveTo(17733,143924,-3037);
  Engine.MoveTo(16711,144167,-2980);
  Engine.MoveTo(16622,144034,-2932);
  Engine.MoveTo(15963,143381,-2784);  
  Engine.MoveTo(15628,142920,-2704);
end;
if User.inrange(19012,145140,-3120, 250, 150) then begin
  Engine.MoveTo(19012,145140,-3120);
  Engine.MoveTo(19021,145126,-3123);
  Engine.MoveTo(17600,145497,-3079);
  Engine.MoveTo(16468,144129,-2964);  
  Engine.MoveTo(15628,142920,-2704);
end;
if User.inrange(19613,145607,-3104, 250, 150) then begin
  Engine.MoveTo(19613,145607,-3104);
  Engine.MoveTo(17638,145591,-3084);
  Engine.MoveTo(16214,143659,-2863);  
  Engine.MoveTo(15628,142920,-2704);
end;
if User.inrange(18576,145136,-3104, 250, 150) then begin
  Engine.MoveTo(18576,145136,-3104);
  Engine.MoveTo(17727,145541,-3082);
  Engine.MoveTo(16414,144174,-2969);  
  Engine.MoveTo(15628,142920,-2704);
end;
if User.inrange(17398,145456,-3048, 250, 150) then begin
  Engine.MoveTo(17398,145456,-3048);
  Engine.MoveTo(17727,145541,-3082);
  Engine.MoveTo(16414,144174,-2969);  
  Engine.MoveTo(15628,142920,-2704);
end;
if User.inrange(17144,145055,-3024, 250, 150) then begin
  Engine.MoveTo(17144,145055,-3024);
  Engine.MoveTo(16350,143905,-2923);
  Engine.MoveTo(15628,142920,-2704);
end;
if User.inrange(18078,145925,-3112, 250, 150) then begin
  Engine.MoveTo(18078,145925,-3112);
  Engine.MoveTo(16559,144353,-2987);
  Engine.MoveTo(15628,142920,-2704);
end;
if User.inrange(19150,143941,-3056, 250, 150) then begin
  Engine.MoveTo(19150,143941,-3056);
  Engine.MoveTo(18112,145633,-3104);
  Engine.MoveTo(17108,145059,-3031);
  Engine.MoveTo(16469,144176,-2969);  
  Engine.MoveTo(15628,142920,-2704);
end;
if User.inrange(18512,145536,-3120, 250, 150) then begin
  Engine.MoveTo(18512,145536,-3120);
  Engine.MoveTo(17226,145360,-3048);
  Engine.MoveTo(16419,143955,-2935);  
  Engine.MoveTo(15628,142920,-2704);
end;
if User.inrange(18717,145711,-3080, 250, 150) then begin
  Engine.MoveTo(18717,145711,-3080);
  Engine.MoveTo(17226,145360,-3048);
  Engine.MoveTo(16419,143955,-2935);  
  Engine.MoveTo(15628,142920,-2704);
end; 
  // этот кусок - точки респа выбранной деревни







  //2 менять тут
  
 // точка которая указаная в инренж этот точка в которую ведут все точки респа,
 //ее просто можно скопировать  с конечной любой точки респа
       if User.inrange(15628,142920,-2704, 250, 150) then begin    // бежим к ГК и тпишмся в руины
        delay(2550);
  // тут указываем   путь к нубскому баферу либо сразу к гк если мы не бафаемся
          Engine.MoveTo(18263, 145592, -3104);
          Engine.MoveTo(17352, 145144, -3032);
		  delay(500);
        // выделение нпц с ИД указанным в скобках,ид видны справа снизу в боте рядом с именем нпц  
          Engine.SetTarget(30599); //Берём в таргет NPC Buffer
		  delay(500);
          Engine.DlgOpen; //Открываем диалоговое окно
		  delay(500);
          Engine.DlgSel(5);
		  delay(1000);
		  Engine.MoveTo(15592, 142904, -2688); //пиздуем к тпшке
		  Engine.SetTarget(31219); // берём в таргет кота
		  delay(500);
		  Engine.DlgOpen; //Открываем диалоговое окно
		  delay(500);
		  Engine.DlgSel(3);
		  delay(5000);
		  Engine.MoveTo(45256, 124328, -5392);
		  delay(500);
		  Engine.SetTarget(31096); //Берём в таргет шарик
		  delay(500);
          Engine.DlgOpen; //Открываем диалоговое окно
		  delay(500);
          Engine.DlgSel(1);
		  delay(1000);
		  Engine.MoveTo(45240, 122824, -5392);
		  Engine.MoveTo(46504, 122808, -5392);
           Engine.FaceControl(0,true);
                   end;
       delay(550);
    end;     
    end.

Как я не пытался их соединить и в потоке и без ни чего не получаеться.


Сообщение отредактировал Dareei: 12 Март 2021 - 11:27

  • 0

#2
ScythLab

ScythLab

Объяснить легко: второй скрипт оформляешь в виде функции и вставляешь ее в первый скрипт. Вызов этой функции делаешь в начале главного while первого скрипта.

В первом скрипте изменяешь логику "while MobInZone do delay(500)", чтобы в случае смерти персонажа у тебя главный цикл начинался заново.

Дерзай.


  • 1

Хобби: разработка непубличного бота для Lineage


#3
Dareei

Dareei
  • 4
    0
    Не выбрано
    • Lvl 2
    • Пользователь

Спасибо буду пробовать. добра тебе.


Что-то я не могу нагулить примеров создания функции в адрике, если не затруднит можешь гайд скинут ьили по какому запросу искать?


Я нубас а как её изменить? у меня опыта мало не понимаю прост 

 

 

В первом скрипте изменяешь логику "while MobInZone do delay(500)", чтобы в случае смерти персонажа у тебя главный цикл начинался заново.

  • 0

#4
ScythLab

ScythLab

или по какому запросу искать?
"учебник по Pascal"

Тебе нужны разделы, описывающие синтаксис языка.


  • 0

Хобби: разработка непубличного бота для Lineage


#5
Hanjin

Hanjin
  • 15
    1
    Не выбрано
    • Lvl 11
    • Пользователь
https://rawr.pro/top...scripts/page-1#
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных

Rawr.pro - Сделано с для игроков.