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

trance всех

Рег
11 Окт 2016
Сообщения
2
Реакции
0
Я не мог найти скрипт на транс всех мобов в радиусе например 150 или 200
что бы скрипт проверял дебаф на мобах, брал в таргет моба на котором нет дебафов и кидал транс, потом следующий моб, и так по кругу
 
Не смог найти - напиши, или напиши конкретно в лоб "напишите скрипт".
 
если я верно понял, то нужно примерно такое -
циклично проверять нпслист:
1. мастер бьет мобов
2.если у моба в таргете мастер (или патимемберы), но у мастера в таргете совершенно другая цель, и у моба нет абнормала "слип", то - слипать моба.
 
uses SysUtils;

function Tranced(Obj: TL2Live): boolean;
begin
result:= (Obj.AbnormalID = 128);
end;

function Attacked_By_Party(Obj: TL2Live): boolean;
var i: integer;
begin
result:= false;
for i:= 0 to Party.Chars.Count-1 do begin
if (Party.Chars.Items(i).AtkOID = Obj.OID) then begin
result:= true;
break;
end;
end;
end;


function Mob_Attack_Party(Obj: TL2Live): boolean;
var i: integer;
begin
result:= false;
for i:= 0 to Party.Chars.Count-1 do begin
if (Obj.Target = Party.Chars.Items(i)) then begin
result:= true;
break;
end;
end;
end;

procedure Trace_All_Mobs(R: integer = 300);
var i: integer;
begin
for i:= 0 to NpcList.Count-1 do begin
if (NpcList(i).Attackable)
and (User.DistTo(NpcList(i)) < R)
and (not Attacked_By_Party(NpcList(i)))
and (Mob_Attack_Party(NpcList(i)))
and (not Tranced(NpcList(i))) then begin
if Engine.SetTarget(NpcList(i)) then delay(555);
if Engine.UseSkill('Транс') then delay(555);
end;
end;
end;

begin
while delay(9999) do Trace_All_Mobs(200);
end.

Примерно так по ТЗ от @BreadfanLock
вот только не помню точно, что возвращает AtkOID - возможно эту проверку нужно будет изменить чуток
 
if (Obj.Target = Party.Chars.Items(i)) then ...
данный код (ВОЗМОЖНО) не будет работать (не знаю, есть ли тут зависимость от версии), возможно уместнее будет по аналогии из Attacked_By_Party:
Код:
if (Obj.AtkOID = Party.Chars.Items(i).OID) then ...
 
да чего исправлять-то,

Код:
function Tranced(Obj: TL2Live): boolean;
begin
  result:= (Obj.AbnormalID and 128)<>0; 
end;
 
Назад
Сверху