Jump to content

скрипт для биша


Recommended Posts

CLEANSE_ID = 1409;
 ITERATION_DELAY = 100;
  var

   skill: TL2Skill;
    i: Integer;
    begin

     while Engine.Status = lsOnline do
     begin
     if (SkillList.ByID(CLEANSE_ID, skill)) then
     begin for i:=0 to Party.Chars.Count - 1 do
     begin if ((Party.Chars.Items(i).AbnormalID > 0) and (Party.Chars.Items(i).AbnormalID <> 366)) then
     begin Engine.SetTarget(Party.Chars.Items(i)); Engine.UseSkill(CLEANSE_ID, true, true);
     end;
      if ((User.AbnormalID > 0)
      and (Party.Chars.Items(i).AbnormalID <> 366)) and then
      begin Engine.SetTarget(User); Engine.UseSkill(CLEANSE_ID, true, true);
       end;
       end;
        end; Delay(ITERATION_DELAY);
        end;
        end.
 

что тут не так кто подскажет ? и вообще работать он может ?

Link to post
Share on other sites

Пофиксил пару багов, ChatGPT вроде правильно ошибку определил (вроде его вывод 😃 ) нужно было and убрать. В игре скрипт не проверял но должен работать. Совет - можно легко форматировать скрипты в Lazarus (выделил и нажал Ctrl-D, у меня по дефолту так).

В теории можно без скрипта настроить, в адрике проверять условия (стан, рут и т.п.) + abnormalid, но вроде там реально проблемно сделать (вроде надо каждый abnormalid прописывать). Можно еще обернуть всё в процедуру и запускать новый тред (как пример - https://adrenalinebot.com/ru/api/example/checking-if-our-character-is-stuck-in-the-thread)

const
    CLEANSE_ID = 1409;     // ID cleanse, можно найти в вкладке Умения в адрике
    ITERATION_DELAY = 100; // как быстро будет происходить проверка пати

var
    skill: TL2Skill;       // Нужно для поиска клинса в списке скилов персонажа
    i: integer;
    
begin
while Engine.Status = lsOnline do
begin
    if (SkillList.ByID(CLEANSE_ID, skill)) then
    begin
        for i := 0 to Party.Chars.Count - 1 do
        // здесь можно игнорировать некоторых чаров или добавить офф-пати чаров (не проверял)
        begin
            // Если нашли дебаф (любой) то кастуем клинс на чара в пати
            if ((Party.Chars.Items(i).AbnormalID > 0) and
                (Party.Chars.Items(i).AbnormalID <> 366)) then
            begin
                Engine.SetTarget(Party.Chars.Items(i)); // лучше обернуть в IF Engine..., но будет работать и так
                Engine.UseSkill(CLEANSE_ID, True, True);
            end;

            // Проверяем себя и кастуем клинс, можно поднять выше, тогда приоритет на себя будет выше 
            if ((User.AbnormalID > 0) and (User.AbnormalID <> 366)) then
            begin
                Engine.SetTarget(User);
                Engine.UseSkill(CLEANSE_ID, True, True);
            end;
        end;
    end;
    Delay(ITERATION_DELAY);
end;
end.

 

Edited by nixer
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...