• Visit Rebornbuddy
  • 다발악사 스킬 자동관련 헬퍼처럼..

    Discussion in 'Demonbuddy 포럼' started by lovekim, Dec 25, 2017.

    1. lovekim

      lovekim New Member

      Joined:
      Dec 25, 2017
      Messages:
      7
      Likes Received:
      0
      Trophy Points:
      1
      헬퍼의 경우...정해진 시간마다 스킬을 자동으로 쓰게 하잖아요..
      물론 데몬도 복수스킬 같은거 가끔 쓰기는 하던데...
      전투준비/격려나 동료 같은건 안쓰는거 같더라구요....
      가끔 마우스 우클릭 사용으로 증오도 생성하고 명료도 활성화 하면 더 좋구요...
      아무튼 기존에 나와있는 헬퍼 기능을 추가로 넣을 수 있으면 좋겠습니다.
      헬퍼처럼 완벽하게 하지는 못하더라도...전투중에는 적당한 시간에 한번씩 사용을 하게 조금 더 노력해주시면 좋겠습니다..
       
      Last edited: Dec 25, 2017
    2. abcdedfg

      abcdedfg Member

      Joined:
      Apr 16, 2015
      Messages:
      38
      Likes Received:
      0
      Trophy Points:
      6
      plugin>trinity>routines>demonhunter>demonhunterdefault.cs 또는 demonhunterbase.cs 또는 하고 있는 세팅파일을
      를 수정하면 됩니다.
      예를 들어 demonhunterunhallowed.cs에서
      public TrinityPower GetBuffPower()
      {
      if (Skills.DemonHunter.Vengeance.CanCast())
      return Vengeance(); //복수

      if (ShouldShadowPower())
      return ShadowPower(); //어둠의힘

      if (ShouldSmokeScreen())
      return SmokeScreen(); //연막

      if (ShouldPreparation())
      return Preparation(); //전투준비

      if (ShouldCompanion())
      return Companion(); //동료

      return null;
      }
      이렇게 되어 있는데, demonhunterbase.cs에 보면 전투준비 부분이 이렇게 세팅되어 있습니다.
      protected virtual bool ShouldPreparation()
      {
      if (!Skills.DemonHunter.Preparation.CanCast()) // 전투준비가 활성화 되지 않았으면 실행안함
      return false;

      if (!Runes.DemonHunter.Punishment.IsActive && Player.SecondaryResourcePct <= 0.5f) //처벌룬 세팅이 아니고 절제가 50% 미만이면 실행
      return true;

      if (Runes.DemonHunter.Punishment.IsActive && Player.PrimaryResourcePct <= 0.3f) //처벌룬세팅이고 증오가 30% 미만이면 실행
      return true;

      return false;
      }
      이 부분을
      protected virtual bool ShouldPreparation()
      {
      if (Skills.DemonHunter.Preparation.CanCast())
      return true;
      return false;
      }
      이렇게 바꾸면 전투준비가 가능하면 바로 실행합니다.
       
      Last edited: Dec 26, 2017
    3. lovekim

      lovekim New Member

      Joined:
      Dec 25, 2017
      Messages:
      7
      Likes Received:
      0
      Trophy Points:
      1
      헛.......감사합니다..
      저녁에 퇴근하면 수정해서 적용해보겠습니다...너무너무 감사합니다...
       
    4. lovekim

      lovekim New Member

      Joined:
      Dec 25, 2017
      Messages:
      7
      Likes Received:
      0
      Trophy Points:
      1
      헛...메모장에서 수정해서 적용하니 에러나네요....ㅠ
      수정은 ...어떤 프로그램으로 해야 할까요?
       
    5. abcdedfg

      abcdedfg Member

      Joined:
      Apr 16, 2015
      Messages:
      38
      Likes Received:
      0
      Trophy Points:
      6
      음... 메모장에서 수정하면 되고요...
      에러 날게 없는데...
      if (Skills.DemonHunter.Preparation.CanCast()){
      return true;
      }
      return false;
      이렇게 바꿔보세요...
       
    6. lovekim

      lovekim New Member

      Joined:
      Dec 25, 2017
      Messages:
      7
      Likes Received:
      0
      Trophy Points:
      1
      아...잘 됩니다....

      제가 수정을 잘못해서 그런거였네요..
      작성하신거 복사해서 붙여넣기 하니 잘 됩니다....
      타이밍 돌아오면 자동으로 다시 전투준비를 하네요..
      바쁘실텐데...여러모로 감사드립니다....^^
       
      Last edited: Dec 28, 2017
    7. lovekim

      lovekim New Member

      Joined:
      Dec 25, 2017
      Messages:
      7
      Likes Received:
      0
      Trophy Points:
      1
      혹시나....

      저는 마우스 좌클릭을 다발, 우클릭을 회피사격으로 해놨는데요..
      명료가 발동 될려면 마우스 우클릭...즉 회피사격을 5초에 한번씩 나가게 하면 좋겠는데...
      그건 방법이 없을까요?

      protected virtual bool ShouldEvasiveFire(out TrinityActor target)
      {
      target = null;

      if (!Skills.DemonHunter.EvasiveFire.CanCast())
      return false;

      target = TargetUtil.GetBestClusterUnit() ?? CurrentTarget;
      return target != null;
      }

      요렇게 되어 있던데....아무튼 5초에 한번씩 회피사격을 날리고 싶습니다....명료 발동용으로요.....
      바쁘시겠지만 시간나면 꼭 좀 부탁드립니다...
       
    8. abcdedfg

      abcdedfg Member

      Joined:
      Apr 16, 2015
      Messages:
      38
      Likes Received:
      0
      Trophy Points:
      6
      아마 trinity>routine>demonhunter>DemonHunterUnhallowed.cs에
      protected override bool ShouldEvasiveFire(out TrinityActor target)
      {
      target = null;

      //회피사격이 가능하지 않으면 작동안함
      if (!Skills.DemonHunter.EvasiveFire.CanCast())
      return false;

      //증오가 세팅된 수치보다 크면 작동안함
      if (!ShouldRefreshBastiansGenerator && Player.PrimaryResource > PrimaryEnergyReserve)
      return false;
      //주변(120f)에 몹이 없으면 작동안함
      if (!TargetUtil.AnyMobsInRange(120f))
      return false;
      //이건 어떤 몹을 타겟팅할것인가입니다.
      target = TargetUtil.GetBestClusterUnit() ?? CurrentTarget;
      return target != null;
      }
      이렇게 되어 있을겁니다. 주석을 달아 보겠습니다.

      간단하게 원하시는 5초마다 회피사격을 날리는 코드를 넣어 보겠습니다.
      protected override bool ShouldEvasiveFire(out TrinityActor target)
      {
      target = null;

      if (!Skills.DemonHunter.EvasiveFire.CanCast())
      return false;
      //회피사격을 발사하고 5초가 지나지 않았으면 작동안함
      if (Skills.DemonHunter.EvasiveFire.TimeSinceUse < 5000)
      return false;
      target = TargetUtil.GetBestClusterUnit() ?? CurrentTarget;
      return target != null;
      }
       
    9. abcdedfg

      abcdedfg Member

      Joined:
      Apr 16, 2015
      Messages:
      38
      Likes Received:
      0
      Trophy Points:
      6
      음... 근데 이게 공격할때만 해당되겠네요...
      이동중에도 하게 하려면

      public TrinityPower GetMovementPower(Vector3 destination)
      {
      if (!Player.IsInTown && AllowedToUse(Settings.Vault, Skills.DemonHunter.Vault) && CanVaultTo(destination))
      return Vault(destination);

      return Walk(destination);
      }

      이 부분을
      public TrinityPower GetMovementPower(Vector3 destination)
      {
      if (TryPrimaryPower(out power))
      return power;

      if (!Player.IsInTown && AllowedToUse(Settings.Vault, Skills.DemonHunter.Vault) && CanVaultTo(destination))
      return Vault(destination);

      return Walk(destination);
      }
      요렇게 해 놓으면 됩니다. 이동중엔 필요없으면 안해도 되고요
       
    10. lovekim

      lovekim New Member

      Joined:
      Dec 25, 2017
      Messages:
      7
      Likes Received:
      0
      Trophy Points:
      1
      감사합니다...
      바쁘실텐데...신경써주셔서 감사합니다..
      년초 결산관련 잔업이 많아서 요며칠 제대로 못했는데...
      이거 적용해서 테스트 해봐야겠습니다...
      좋은 날 되세요....
       
    11. lovekim

      lovekim New Member

      Joined:
      Dec 25, 2017
      Messages:
      7
      Likes Received:
      0
      Trophy Points:
      1
      public TrinityPower GetMovementPower(Vector3 destination)
      {
      if (TryPrimaryPower(out power))
      return power;

      if (!Player.IsInTown && AllowedToUse(Settings.Vault, Skills.DemonHunter.Vault) && CanVaultTo(destination))
      return Vault(destination);

      return Walk(destination);
      }

      이렇게 수정하고 데몬을 실행하니...


      Compiler Error: C:\DemonbuddyBETA 1.1.707\Plugins\Trinity\Routines\DemonHunter\DemonHunterUnhallowed.cs(120,25) : error CS0103: The name 'power' does not exist in the current context
      Compiler Error: C:\DemonbuddyBETA 1.1.707\Plugins\Trinity\Routines\DemonHunter\DemonHunterUnhallowed.cs(121,20) : error CS0103: The name 'power' does not exist in the current context

      요런 메세지가...ㅠㅠ나오네요..

      그리고 계속 데몬을 실행시키니..
      System.NullReferenceException: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
      위치: Zeta.Bot.ProfileOrderManager.‬‬‍‭‌‭‪‍‭‫‫‫‪‌‭‌‭‪‪‬‌‭‍‪‌‎‬‮(ProfileBehavior , Boolean )
      위치: Zeta.Bot.ProfileOrderManager.‌‏‭‌‪‌‪‪‬‭‪‮‮‫‌‬‎‬‍‌‏‭‏‮(Boolean )
      위치: Zeta.Bot.ProfileOrderManager.‌‮‮‬‌‎‫‎‌‍‪‎‎‎‎‪‍‏‪‌‌‮(Object , EventArgs )
      위치: Zeta.Bot.GameEvents.‭‍‭‭‫‪‮‏‫‌‍‍‪‍‫‭‍‌‎‬‫‌‭‬‪‮[](EventHandler`1 , Object , )
      이렇게 나오구요...
       
    12. abcdedfg

      abcdedfg Member

      Joined:
      Apr 16, 2015
      Messages:
      38
      Likes Received:
      0
      Trophy Points:
      6
      음... 그러면 쉽게
      public TrinityPower GetBuffPower()
      {
      if (TryPrimaryPower(out power))
      return power;
      .........(생략)....
      }
      넣으면 되긴 할텐데... 이동중 사격하는거라 효율적이진 않을거 같네요... 그냥 공격할때만 넣는게 좋을듯...
       

    Share This Page