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

Cleanse

Если кто-нибудь подскажет, как добавить в интерлюде маляру в исключение, буду очень благодарен.
Я так понял, надо 20 строку заменить на

  1. if ((Party.Chars.Items(i).AbnormalID > 0) and (Party.Chars.Items(i).AbnormalID <> EXCLUDED_DEBUFF_ID)) then

а в начале добавить EXCLUDED_DEBUFF_ID = 4554; ?

но чет не работает...
 
SARCAZM написал(а):
Cloudy, скрипт пробегается по всем членам пати, проверяя сколько на каждом мембере дебафов. Если на мембере пати есть дебаф , то юзает клинс на того чара. Странно что у Salty Spin не заработало. Он пишет, что юзает на всю пати. Может, он играет на интерлюде где не клинсится маляра (а скрипт воспринимает маляру как дебаф, неважно какого она лвл), хз. Если будет юзать на всю пати, даже если дебафов нет - надо пересмотреть механику User.AbnormalID Я сталкиваюсь с подобными скриптами впервые. Всегда писал простые скрипты на капчу и авто кач.
а если у меня стоит патч, где ноблесс и т.д весит в дебаффах на меня это повлияет ?
 
@ХОРВЕСТР, Абнормал состоит из флагов ЭФФЕКТОВ появляющихся на персонаже.
Вот все их НЕХ коды
Код:
NULL("null", 0x0),
	BLEEDING("bleeding", 0x00000001),
	POISON("poison", 0x00000002),
	REDCIRCLE("redcircle", 0x00000004),
	ICE("ice", 0x00000008),

	AFFRAID("affraid", 0x00000010),
	CONFUSED("confused", 0x00000020),
	STUN("stun", 0x00000040),
	SLEEP("sleep", 0x00000080),

	MUTED("muted", 0x00000100),
	ROOT("root", 0x00000200),
	HOLD_1("hold1", 0x00000400),
	HOLD_2("hold2", 0x00000800), // эффект от Dance of Medusa

	UNKNOWN_13("unk13", 0x00001000),
	BIG_HEAD("bighead", 0x00002000),
	FLAME("flame", 0x00004000),
	UNKNOWN_16("unk16", 0x00008000), // труп с таким абнормалом становится белым

	GROW("grow", 0x00010000),
	FLOATING_ROOT("floatroot", 0x00020000),
	DANCE_STUNNED("dancestun", 0x00040000), // танцует со звездочками над головой
	FIREROOT_STUN("firerootstun", 0x00080000), // красная аура у ног со звездочками над головой

	STEALTH("shadow", 0x00100000),
	IMPRISIONING_1("imprison1", 0x00200000), // синяя аура на уровне пояса
	IMPRISIONING_2("imprison2", 0x00400000), // синяя аура на уровне пояса
	MAGIC_CIRCLE("magiccircle", 0x00800000), // большой синий круг вокруг чара

	ICE2("ice2", 0x01000000), // небольшая ледяная аура, скорее всего DOT
	EARTHQUAKE("earthquake", 0x02000000), // землетрясение
	UNKNOWN_27("unk27", 0x04000000),
	INVULNERABLE("invul1", 0x08000000), // Ultimate Defence

	VITALITY("vitality", 0x10000000), // Vitality херб, красное пламя
	REAL_TARGET("realtarget", 0x20000000), // дебафф Real Target (знак над головой)
	DEATH_MARK("deathmark", 0x40000000), // голубая морда над головой
	SOUL_SHOCK("soulshock", 0x80000000), // голубой череп над головой

	// special effects
	S_INVULNERABLE("invul2", 0x00000001, true), // целестиал
	S_AIR_STUN("redglow", 0x00000002, true), // непонятное красное облако
	S_AIR_ROOT("redglow2", 0x00000004, true), // непонятное красное облако
	S_BAGUETTE_SWORD("baguettesword", 0x00000008, true), // пусто

	S_YELLOW_AFFRO("yellowafro", 0x00000010, true), // Большая круглая желтая прическа с воткнутой в волосы расческой
	S_PINK_AFFRO("pinkafro", 0x00000020, true), // Большая круглая розовая прическа с воткнутой в волосы расческой
	S_BLACK_AFFRO("blackafro", 0x00000040, true), // Большая круглая черная прическа с воткнутой в волосы расческой
	S_UNKNOWN8("sunk8", 0x00000080, true), // пусто

	S_STIGMA("stigma", 0x00000100, true), // Stigma of Shillen
	S_UNKNOWN10("sunk10", 0x00000200, true), // какой то рут
	FROZEN_PILLAR("frozenpillar", 0x00000400, true), // Frozen Pillar (Freya)
	S_VESPER1("vesper1", 0x00000800, true), // for Event Vesper Dreams aka April Fool's Day - Slasher

	S_VESPER2("vesper2", 0x00001000, true), // for Event Vesper Dreams aka April Fool's Day - Caster
	S_VESPER3("vesper3", 0x00002000, true), // for Event Vesper Dreams aka April Fool's Day - Dual Sword
	S_SOA_RESP("soa_respawn", 0x00004000, true), // Мобы на респе СОА появляются с таким абнормалом
	S_ARCANE_SHIELD("arcane_invul", 0x00008000, true), // for Arcane Shield

	S_UNKNOWN17("sunk17", 0x00010000, true), // пусто
	S_UNKNOWN18("sunk18", 0x00020000, true), // пусто
	S_UNKNOWN19("sunk19", 0x00040000, true), // пусто
	S_NAVIT("nevitSystem", 0x00080000, true), // Nevite System abnormal

	S_UNKNOWN21("sunk21", 0x00100000, true), // пусто
	S_LETTER("letter_collection_buff", 0x00200000, true), // Letter Collection Gift buff
	S_UNKNOWN23("sunk23", 0x00400000, true), // пусто
	S_UNKNOWN24("sunk24", 0x00800000, true), // пусто

	S_UNKNOWN25("sunk25", 0x01000000, true), // пусто
	S_UNKNOWN26("sunk26", 0x02000000, true), // пусто
	S_UNKNOWN27("sunk27", 0x04000000, true), // пусто
	S_UNKNOWN28("sunk28", 0x08000000, true), // пусто

	S_UNKNOWN29("sunk29", 0x10000000, true), // пусто
	S_UNKNOWN30("sunk30", 0x20000000, true), // пусто
	S_UNKNOWN31("sunk31", 0x40000000, true), // пусто
	S_UNKNOWN32("sunk32", 0x80000000, true), // пусто

	// event effects
	E_AFRO_1("afrobaguette1", 0x000001, false, true),
	E_AFRO_2("afrobaguette2", 0x000002, false, true),
	E_AFRO_3("afrobaguette3", 0x000004, false, true),
	E_EVASWRATH("evaswrath", 0x000008, false, true),
	E_HEADPHONE("headphone", 0x000010, false, true),
	E_VESPER_1("vesper1", 0x000020, false, true),
	E_VESPER_2("vesper2", 0x000040, false, true),
	E_VESPER_3("vesper3", 0x000080, false, true);
 
Да все верно пишут и визуальные эффекты как вы знаете часто положительные - уе, уд и подобное, в камень иногда нужно встать чтобы урон не получать.
 
Вгрузил на саппорта и все работает! Теперь мой БП еще более полезный. Огромное спасибо автору :2:
 
Нонстоп клинс возникал из-за данного недоразумения:

Код:
....
if User.AbnormalID > 0 then
....

Логичнее использовать в таком нехитром виде:

Код:
const
  STUN = $00000040;
  MUTED = $00000100;
  HOLD_1 = $00000400;
  DEATH_MARK = $40000000;
var
  maskOfAE:integer;
begin
  maskOfAE:=MUTED or HOLD_1 or STUN or DEATH_MARK;//билдим проверяемую маску абнормалов
  if ((User.AbnormalID and maskOfAE)> 0) then begin//сравниваем в данном случае свои абнормалы с маской, и если есть установленые биты - чето делаем.
    //something code
  end;
end.
При таком подходе можно держать под контролем не только свою пати, но и "дружественных" мемберов (например сокланов-бишей из других пачек), бегающих в пределах досягаемости.
 
Или вот как-то так:
Код:
uses Sysutils;
const
  PolearmId = 15848;
  FistsId = 15887;
  TotemId = 109;

  // Abnormals
  ABNORMAL_STUN =  $40;
  ABNORMAL_SLEEP = $80;
  ABNORMAL_SILENCE = $100;
  ABNORMAL_PARALIZE =  $400;
  ABNORMAL_SKULLFEAR   =  $80000000;

  maskDebuff = ABNORMAL_STUN or ABNORMAL_SLEEP or
    ABNORMAL_SILENCE or ABNORMAL_PARALIZE or ABNORMAL_SKULLFEAR;

function All_Ok:boolean;
begin
  result:=false;
  result:=Not(User.Dead or ((User.AbnormalID and maskDebuff)<>0));
end;

procedure EquipWeapon(wId:integer);
var
  weapon:TL2Item;
begin
  if ItemList.ById(wId,weapon)then
    Case Weapon.Equipped of
      true:begin
      end;
      else begin
        If Engine.UseItem(weapon.ID) then Delay(1500);
      end;
    end;
end;

procedure CheckStatus;
var
  buff:TL2Skill;
begin
  while Not(User.Dead) do begin
    delay(500);
    if All_Ok then
      if (Not(User.Buffs.byId(totemId,buff))) then begin
        EquipWeapon(FistsId);
      end else if (getAEtargets(User,300)>2)then EquipWeapon(PolearmId)
          else EquipWeapon(FistsId);
  end;
  Engine.FaceControl(0,False);
  Script.Stop;
end;

function getAEtargets(obj:TL2Spawn; radius:integer):integer;
var
  idx:integer;
begin
  result:=0;
  if obj<>User then inc(result);//считаем и объект, вокруг которого считаем нпс
  for idx:=0 to NpcList.Count-1 do begin
    if (Not NpcList.Items(idx).Dead)and(sqrt(sqr(NpcList.Items(idx).X-obj.X)+sqr(NpcList.Items(idx).Y-obj.Y))<radius)and
      (NpcList.Items(idx).Attackable) then inc(result);
  end;
end;
begin
    Script.NewThread(@CheckStatus);
end.
Второе "как-то так":
Код:
const
  ABNORMAL_BLEED =  $1;
  ABNORMAL_POISON =  $2;
  ABNORMAL_REDCIRCLE =  $4;
  ABNORMAL_ICE =  $8;
  ABNORMAL_WIND =  $10;
  ABNORMAL_FEAR =  $20;
  ABNORMAL_STUN =  $40;
  ABNORMAL_SLEEP = $80;
  ABNORMAL_SILENCE = $100;
  ABNORMAL_ROOT =  $200;
  ABNORMAL_PARALIZE =  $400;
  ABNORMAL_MEDUSA   =  $800;
  ABNORMAL_FIRE   =  $4000;
  ABNORMAL_GROW   =       $10000;
  ABNORMAL_FLOATROOT   =  $20000;
  ABNORMAL_DANCESTUN   =  $40000;
  ABNORMAL_FIREROOTSTUN=  $80000;
  ABNORMAL_STEALTH     =  $100000;
  ABNORMAL_EARTHQUAKE  =  $2000000;
  ABNORMAL_INVULNERABLE=  $8000000;
  ABNORMAL_VITALITY    =  $10000000;
  ABNORMAL_REALTARGET  =  $20000000;
  ABNORMAL_DEATHMARK   =  $40000000;
  ABNORMAL_SKULLFEAR   =  $80000000;
  SKILL_CLEANSE = 1409;

function Cleanse(member:tl2char):boolean;
begin
  result:=false;
  if (User.DistTo(member)<700) then begin
    Engine.SetTarget(member);
    if Engine.UseSkill(SKILL_CLEANSE)then result:=true;
  end;
end;
var
  countPMembers,idx:integer;
  pMember,cMember:TL2Char;
  cleanseSkill:TL2Skill;
  idBuff:integer;
  needCleanse:boolean;
begin
  while engine.status=lsOnline do begin
    delay(500);
    needCleanse:=false;
    if SkillList.ById(SKILL_CLEANSE,cleanseSkill) and (cleanseSkill.endtime=0)then begin
      for idx:=0 to User.Buffs.Count-1 do begin
        case User.Buffs.Items(idx).Id of
          //перечень дебафов, не имеющих четко выраженного abnormalId
          //данный набор "от фонаря" - тестовый
          1248,1509,4109,4551,4552,4554,5016,6827,6828:begin
            needCleanse:=True;
          end;
        end;
        if needCleanse then break;
      end;
      //проверка абнормалов на себе, тех, которые в состоянии снять клинсом,
      //т.к. бесполезно пытаться снять с себя стан\фир и т.д
      needCleanse:=needCleanse or((User.AbnormalId and(ABNORMAL_REALTARGET or ABNORMAL_DEATHMARK
                  or ABNORMAL_ROOT))<>0);
      If needCleanse then Cleanse(User);
      //если на себе ничего нет, то осмотрим патимемберов, и, возможно,
      //бегающих вокруг сокланов
      if Not(needCleanse) then begin
        //.............................
      end;
      
    end;
  end;
end.
 
Ребят можете подогнать такой ток для джуда плз)
 
capowka написал(а):
Ребят можете подогнать такой ток для джуда плз)
ну вместо ид клинса биша, вставь ид клинса курицы (и проверку расы цели). И будет тебе "...такой же, но с перламутровыми пуговицами..."
 
а есть у кого просто настройка для клинса со всеми дабафами? на h5
 
@Nevada, ну это все через интерфейс можно сделать) смысл замарачиваться скриптом?
 
Так если включить скрипт и что еще нужно делать где добавлять ники которые нужно клинсить? или он автоматом будет всю пати клинсовать? Или в шестеренке вписать ники что делать?
 
Назад
Сверху