Сообщения без ответов | Активные темы Текущее время: Ср июн 26, 2019 3:48 am



Ответить на тему  [ Сообщений: 3 ] 
Массовый сбор (Mass Sweep) 
Автор Сообщение
Куда я попал

Зарегистрирован: Вс окт 14, 2018 2:15 pm
Сообщений: 38
Сообщение Массовый сбор (Mass Sweep)
Добрый день, ищу скрипт на масс свип на классике. Спойлер пропускает мертвых мобов т.к. переключается на нексттаргет, нужно что бы подбирал все трупы без таргета
IvaniuS ответил в скайпе что уже есть такой,но я не смогу найти за несколько дней


Пт фев 08, 2019 11:10 am
Профиль
Флудер

Зарегистрирован: Пт ноя 20, 2015 5:43 am
Сообщений: 101
Сообщение Re: Массовый сбор (Mass Sweep)
Spr1te писал(а):
Добрый день, ищу скрипт на масс свип на классике. Спойлер пропускает мертвых мобов т.к. переключается на нексттаргет, нужно что бы подбирал все трупы без таргета
IvaniuS ответил в скайпе что уже есть такой,но я не смогу найти за несколько дней


Ну есть так есть (()) , дальше сам разберешься?

Свипает всех мёртвых и заспойленных мобов вокруг в указаннорм радиусе (полезен, если на вашем сервере у спойлеров нет скилла Массовое Присвоение)
Код:
procedure SweepThread(dist: integer);
var
  sweep: TL2Skill;
  mob: TL2Npc;
  point: TXYZ;
begin
  while Delay(500) do begin                          // запускаем бесконечный цикл
    if (Engine.Status = lsOnline)                    // если мы онлайн
    and SkillList.ByID(42, sweep) then begin         // и у нас есть умение Sweep [id: 42], то
      mob:= GetNearestSweepableMob(dist);            // ищем ближайшего моба которого можно свипать
      if (mob <> nil) then begin                     // если моба найден, то
        if Engine.SetTarget(mob) then Delay(99);     // берем в таргет моба
        if (User.DistTo(mob) > 100) then begin       // если дистацния до моба > 100, то
          point:= CalcXYZ(User, mob, -20);           // вычисляем координаты точки, чтобы подойти на дистацию свипа
          if Engine.MoveTo(point.X, point.Y, point.Z) then Delay(500);   // подходим в найденную точку
        end;
        if Engine.UseSkill(sweep) then               // если мы успешно использовали свип, то
          while (sweep.EndTime <> 0) do Delay(99);   // ждем пока он не откатится
      end;
    end;
  end;
end;

function GetNearestSweepableMob(dist: integer): TL2Npc;   // возвращает ближайшего моба, которого можно свипать
var i: integer;
begin
  Result:= nil;
  for i:= 0 to NpcList.Count-1 do begin       // пробегаем по списку NPC вокруг нас
    if (NpcList(i).Valid)                     // если моб валиден
    and (User.DistTo(NpcList(i)) < dist)      // и дистанция до него меньше максимально допустимой
    and (NpcList(i).Dead)                     // и этот моб мертв
    and (NpcList(i).Sweepable) then begin     // и с него можно собрать спойл
      Result:= NpcList(i);                    // то запоминаем его в результат
      dist:= User.DistTo(NpcList(i));         // обновляем значение максимально допустимой дистанции
    end;
  end;
end;

begin
  Script.NewThread(@SweepThread, Pointer(300));   // вторым агрументов указываем макс дистанцию для свипа
  // code...
 
  Delay(-1);
end.


Пт фев 08, 2019 7:54 pm
Профиль ICQ
Куда я попал

Зарегистрирован: Вс окт 14, 2018 2:15 pm
Сообщений: 38
Сообщение Re: Массовый сбор (Mass Sweep)
FJIAHKEP писал(а):
Spr1te писал(а):
Добрый день, ищу скрипт на масс свип на классике. Спойлер пропускает мертвых мобов т.к. переключается на нексттаргет, нужно что бы подбирал все трупы без таргета
IvaniuS ответил в скайпе что уже есть такой,но я не смогу найти за несколько дней


Ну есть так есть (()) , дальше сам разберешься?

Свипает всех мёртвых и заспойленных мобов вокруг в указаннорм радиусе (полезен, если на вашем сервере у спойлеров нет скилла Массовое Присвоение)
Код:
procedure SweepThread(dist: integer);
var
  sweep: TL2Skill;
  mob: TL2Npc;
  point: TXYZ;
begin
  while Delay(500) do begin                          // запускаем бесконечный цикл
    if (Engine.Status = lsOnline)                    // если мы онлайн
    and SkillList.ByID(42, sweep) then begin         // и у нас есть умение Sweep [id: 42], то
      mob:= GetNearestSweepableMob(dist);            // ищем ближайшего моба которого можно свипать
      if (mob <> nil) then begin                     // если моба найден, то
        if Engine.SetTarget(mob) then Delay(99);     // берем в таргет моба
        if (User.DistTo(mob) > 100) then begin       // если дистацния до моба > 100, то
          point:= CalcXYZ(User, mob, -20);           // вычисляем координаты точки, чтобы подойти на дистацию свипа
          if Engine.MoveTo(point.X, point.Y, point.Z) then Delay(500);   // подходим в найденную точку
        end;
        if Engine.UseSkill(sweep) then               // если мы успешно использовали свип, то
          while (sweep.EndTime <> 0) do Delay(99);   // ждем пока он не откатится
      end;
    end;
  end;
end;

function GetNearestSweepableMob(dist: integer): TL2Npc;   // возвращает ближайшего моба, которого можно свипать
var i: integer;
begin
  Result:= nil;
  for i:= 0 to NpcList.Count-1 do begin       // пробегаем по списку NPC вокруг нас
    if (NpcList(i).Valid)                     // если моб валиден
    and (User.DistTo(NpcList(i)) < dist)      // и дистанция до него меньше максимально допустимой
    and (NpcList(i).Dead)                     // и этот моб мертв
    and (NpcList(i).Sweepable) then begin     // и с него можно собрать спойл
      Result:= NpcList(i);                    // то запоминаем его в результат
      dist:= User.DistTo(NpcList(i));         // обновляем значение максимально допустимой дистанции
    end;
  end;
end;

begin
  Script.NewThread(@SweepThread, Pointer(300));   // вторым агрументов указываем макс дистанцию для свипа
  // code...
 
  Delay(-1);
end.



На классике есть масс свип, но спасибо за этот скрипт, попробую настроить


Пт фев 08, 2019 10:38 pm
Профиль
Показать сообщения за:  Сортировать по:  
Ответить на тему   [ Сообщений: 3 ] 

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Разработано: g-yar.
Русская поддержка phpBB