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

Использование аур скриптом

Рег
13 Ноя 2016
Сообщения
11
Реакции
0
Ищу пример нормального использования аур скриптом. При обычном UseSkill все время включается\выключается.
 
проверку на бафф делай
Код:
const
aura = 3333;
var
buff:tl2buff;

begin
if not user.buffs.byid(aura, buff) then engine.useskill(aura);
end.
 
Переключаемые скилы можно настроить в закладке "Атака":

2016-06-05_01-39-21.thumb.gif.def638d9f7b550820b18eb875e38bbc4.gif


Сохраняя при этом возможность настроить требуемымые условия
 
Через селфы нормально выставляется же, только надо поставить кд не 0 сек, а побольше. Даже удачно получилось реализовать на ВЛе ауру для фокуса 1го таргета и отключение ауры, когда бьет больше 1го моба.
 
@dontfear, все решает непосредственно в бафах, скрипт вовсе не обязателен )
 
Лучше на аое парочку скриптов для примера дайте, с проверкой ренджа, количества целей и OID, чтобы не спамить дебаффы овера подряд
 
Spectre7TS написал(а):
Лучше на аое парочку скриптов для примера дайте, с проверкой ренджа, количества целей и OID, чтобы не спамить дебаффы овера подряд
Код:
 const
  Range:integer=150;           //ренж скила
  SpellID:integer=1417;        //ид скилла
  RangePvP:integer=Range*2;    //ренж для проверки флагнутых
  BuffID:integer=304;          //ид проверяемого бафа
  BuffTime:integer=5*60*1000;  //время до окончания бафа
  Macro:boolean=false;         //работают ли макросы на сервере?

function CheckPvP(range:integer):boolean;
//если нету флагнутых в ренже, то можем кастовать
var
  i:integer;
  obj:tl2live;
begin
  result:=true;
  for i:=0 to charlist.count-1 do
  begin
    obj:=charlist(i);
    if((not obj.dead) and                                 //таргет живой
      (obj.pvp) and                                       //флагнутый
      (user.distto(obj)<=range) and                       //в ренже
      (not obj.ismember) and                              //не сопартиец
      ((obj.clanid=0) or (obj.clanid<>user.clanid)) and   //не соклан
      (obj.valid))                                        //валиден
      then result:=false;

    if(user.distto(obj)>range) then break;
  end;
end;

function SpellReady(ID:integer):boolean;
//проверяем готовность скилла
var skill:tl2skill;
begin
  result:=false;
  skilllist.byid(id, skill);
  if(macro and (skill.endtime<=950)) then result:=true;
  if(not macro and (skill.endtime=0)) then result:=true;
end;

function CheckBuff(id:integer; time:integer):boolean;
//проверяем время бафа
var buff:tl2buff;
begin
  result:=true;
  user.buffs.byid(id, buff);
  if(buff.endtime<=time) then result:=false;
end;

function CheckMobs(range:integer):boolean;
//проверка есть ли вокруг мобы
var
  i:integer;
  mob:tl2live;
begin
  result:=false;
  for i:=0 to npclist.count-1 do
  begin
    mob:=npclist(i);
    if((not mob.dead) and             //моб живой
      (user.distto(mob)<=range) and   //в ренже
      (mob.attackable) and            //может быть атакован
      (mob.valid))                    //валиден
      then result:=true;

    if(user.distto(mob)>range) then break;
  end;
end;

procedure Farm;
begin
  while (engine.status=lsonline) do
  begin
    if(CheckPvP(RangePvP) and
      SpellReady(SpellID) and
      CheckBuff(BuffID, BuffTime) and
      CheckMobs(Range) and
      not user.dead) then
    begin
      if(macro) then engine.duseskill(spellID, false, false)
      else engine.useskill(spellID);
      delay(user.cast.endtime);
    end;
    delay(100);
  end;
end;

begin
  script.newthread(@Farm);
end.
 
Назад
Сверху