• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • [Release] RebornBuddy64 Version 1.0.424 - DirectX11 / x64 bit compatible

    Discussion in 'Rebornbuddy Forum' started by mastahg, Feb 29, 2016.

    1. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      5,343
      Likes Received:
      383
      Trophy Points:
      83
      Is there why AM.CanCast and AM.ActionReady are not sufficient?
       
    2. Akira0245

      Akira0245 Member

      Joined:
      Mar 9, 2019
      Messages:
      72
      Likes Received:
      0
      Trophy Points:
      6
      public static bool CanCast(uint spellId, GameObject targetObject) and public static bool CanCast(string spellName, GameObject targetObject)
      seems still not working with PvpCombo spells because it get SpellData from CurrentActions but pvp combo spells are not there.
      I thought that HasSpell was able to check whether an extra spell was selected, but after I tried just now it seems to not working as I wished... Maybe ActionReady is a better choice but it requires an ActionType parameter for each check.
      Neither of HasSpell or ActionReady could tell an extra spell is selected or not.
       
      Last edited: Sep 26, 2020
    3. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      5,343
      Likes Received:
      383
      Trophy Points:
      83
      HasSpell just checks if the id is inside CurrentActions

      What do you mean "extra spell"?

      99% of the spells are ActionType.Spell, the remaining few are stuff like limit break, sprint, return, teleport, etc.

      I've got some local work done on updating the CurrentActions that needs to finished up, I'll take a look at cancast while im working on it.
       
    4. Akira0245

      Akira0245 Member

      Joined:
      Mar 9, 2019
      Messages:
      72
      Likes Received:
      0
      Trophy Points:
      6
      I'm not using en client at the moment so I am not sure the exact name of these spell's category
      upload_2020-9-27_6-52-25.png
      oh they are called Additional PvP Actions
       
      Last edited: Sep 26, 2020
    5. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      5,343
      Likes Received:
      383
      Trophy Points:
      83
      Version 391
      Code:
      
      ActionManager.CurrentActions has been modified:
      Pvp skills should now correctly show up in the list (Combo actions are stilled blocked from being directly cast)
      Role actions will now correctly show up when in potd at low level
      
      
       
      Akira0245 likes this.
    6. Jokoast

      Jokoast New Member

      Joined:
      Mar 12, 2017
      Messages:
      11
      Likes Received:
      1
      Trophy Points:
      3
      Did you have time to check on some connectivity issues disconnecting RB every night at the same hour ? It's happening for a week now.
       
    7. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      5,343
      Likes Received:
      383
      Trophy Points:
      83
      Need a full log.
       
    8. Jokoast

      Jokoast New Member

      Joined:
      Mar 12, 2017
      Messages:
      11
      Likes Received:
      1
      Trophy Points:
      3
      Code:
      [03:00:35.816 N] [Lis5.31f38] Utc: 10/3/2020 3:00:35 AM | Eorzea Time: 993/02/12 17:20 | PauseTime: 993/02/12 17:43
      [03:00:35.816 N] [Lis5.31f38] Deciding on next order.
      [03:00:35.816 N] [Lis5.31f38] Executing normal directive.
      [03:00:35.822 N] [Lis5.31f38] Gathering Fire Crystal.
      [03:00:35.822 N] [Lis5.31f38] Gathering at 80 Mature Tree - Ladle.
      [03:00:35.822 N] [Lis5.31f38] Traveling to area: Amh Araeng (West)
      [03:00:37.795 N] [Lis5.31f38] Successful response in 357 ms.
      [03:00:37.905 N] [Lis5.31f38] Executing route with 1 paths.
      [03:00:37.908 N] [Lis5.31f38] Executing teleport step.
      [03:00:37.908 N] [Lis5.31f38] Teleporting to Twine.
      [03:00:37.987 D] Teleporting to Twine
      [03:00:45.943 D] Exception while contacting authorization server.
      [03:00:45.944 D] System.ServiceModel.CommunicationException: La connexion de socket a été abandonnée. Ceci peut être causé par une erreur lors du traitement de votre message, par le dépassement du délai d'attente de réception par l'hôte distant ou par un problème de ressource réseau sous-jacent. Le délai d'attente de socket local était '00:00:29.9861127'. ---> System.Net.Sockets.SocketException: Une connexion existante a dû être fermée par l’hôte distant
         à System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
         --- Fin de la trace de la pile d'exception interne ---
      
      Server stack trace:
         à System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
         à System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
         à System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
         à System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.SendPreamble(IConnection connection, ArraySegment`1 preamble, TimeoutHelper& timeoutHelper)
         à System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.DuplexConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
         à System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
         à System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)
         à System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
         à System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)
         à System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
         à System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
      
      Exception rethrown at [0]:
         à System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
         à System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
         à Buddy.Auth.SR.IA.Do(Byte b, Object[] args)
         à Buddy.Auth.AuthService.Heartbeat(Object[] args)
         à ff14bot.Core.<>c.(AuthService )
         à Buddy.Auth.Service.Use[T](Func`2 codeBlock) --> System.Net.Sockets.SocketException (0x80004005): Une connexion existante a dû être fermée par l’hôte distant
         à System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
      [03:00:45.974 D] Exception while contacting authorization server.
      [03:00:45.974 D] System.ServiceModel.CommunicationException: La connexion de socket a été abandonnée. Ceci peut être causé par une erreur lors du traitement de votre message, par le dépassement du délai d'attente de réception par l'hôte distant ou par un problème de ressource réseau sous-jacent. Le délai d'attente de socket local était '00:00:29.9871037'. ---> System.Net.Sockets.SocketException: Une connexion existante a dû être fermée par l’hôte distant
         à System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
         --- Fin de la trace de la pile d'exception interne ---
      
      Server stack trace:
         à System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
         à System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
         à System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
         à System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.SendPreamble(IConnection connection, ArraySegment`1 preamble, TimeoutHelper& timeoutHelper)
         à System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.DuplexConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
         à System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
         à System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)
         à System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
         à System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)
         à System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
         à System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
      This instance has not crashed so i got those logs for hours till i woke up.
      The other ones crashed.
       
    9. galio

      galio Member

      Joined:
      Sep 27, 2014
      Messages:
      111
      Likes Received:
      1
      Trophy Points:
      18
      There are 0 checks on my PVP Ricco function, using the same code in PVE Ricco it will cast the 3 charges in a row (expected behaviour with the code I wrote, as it's just test code). However, in the case of PVPRicco it will refuse any other charges that aren't the first one.
      So it uses Ricco, and will wait for the CD of the 3rd charge to be reset and then casts it again.


      public static async Task<bool> PvPRicochet()
      {
      return await Spells.PVPRicochet.Cast(Core.Me.CurrentTarget);
      }

      I can even see RB spamming the following.

      [00:16:45.350 D] DoAction Spell 17753 0x40000001
      [00:16:45.353 N] Cast: Ricochet
      [00:16:45.447 N] Time Casting: 93 - Expected: 0
      [00:16:45.448 N] Successfully Casted Ricochet
      [00:16:45.450 D] DoAction Spell 17749 0x40000001
      [00:16:45.450 N] Cast: Drill
      [00:16:45.537 N] Time Casting: 86 - Expected: 0
      [00:16:45.537 N] Successfully Casted Drill
      [00:16:45.537 D] DoAction Spell 18933 0x40000001
      [00:16:45.537 D] DoAction Spell 17749 0x40000001
      [00:16:45.538 D] DoAction Spell 17750 0x40000001
      [00:16:45.627 D] DoAction Spell 18933 0x40000001
      [00:16:45.627 D] DoAction Spell 17749 0x40000001
      [00:16:45.627 D] DoAction Spell 17750 0x40000001
      [00:16:45.717 D] DoAction Spell 18933 0x40000001
      [00:16:45.717 D] DoAction Spell 17749 0x40000001
      [00:16:45.717 D] DoAction Spell 17750 0x40000001
      [00:16:45.806 D] DoAction Spell 18933 0x40000001
      [00:16:45.806 D] DoAction Spell 17749 0x40000001
      [00:16:45.806 D] DoAction Spell 17750 0x40000001
      [00:16:45.902 D] DoAction Spell 18933 0x40000001
      [00:16:45.902 N] Cast: Gauss Round
      [00:16:45.988 N] Time Casting: 85 - Expected: 0
      [00:16:45.988 N] Successfully Casted Gauss Round
      [00:16:45.988 D] DoAction Spell 18933 0x40000001
      [00:16:45.988 D] DoAction Spell 17750 0x40000001
      [00:16:46.078 D] DoAction Spell 18933 0x40000001
      [00:16:46.078 D] DoAction Spell 17750 0x40000001
      [00:16:46.168 D] DoAction Spell 18933 0x40000001
      [00:16:46.168 D] DoAction Spell 17750 0x40000001
      [00:16:46.258 D] DoAction Spell 18933 0x40000001
      [00:16:46.258 D] DoAction Spell 17750 0x40000001
      [00:16:46.350 D] DoAction Spell 18933 0x40000001
      [00:16:46.350 D] DoAction Spell 17750 0x40000001
      [00:16:46.438 D] DoAction Spell 18933 0x40000001
      [00:16:46.438 D] DoAction Spell 17750 0x40000001
      [00:16:46.529 D] DoAction Spell 18933 0x40000001
      [00:16:46.529 D] DoAction Spell 17750 0x40000001
       
    10. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      5,343
      Likes Received:
      383
      Trophy Points:
      83
      Without seeing the code behind that function I cannot help you.

      I just tested

      Code:
      
      if (ActionManager.CanCast(17753,Core.Target))
      {
      ActionManager.DoAction(17753,Core.Target);
      }
      
      and it worked as expected in wolves den
       
    11. galio

      galio Member

      Joined:
      Sep 27, 2014
      Messages:
      111
      Likes Received:
      1
      Trophy Points:
      18
      Function of Cast:

      Code:
              public static async Task<bool> Cast(this SpellData spell, GameObject target, [CallerMemberName] string caller = null, [CallerLineNumber] int sourceLineNumber = 0, [CallerFilePath] string sourceFilePath = null)
              {
                  if (BaseSettings.Instance.DebugCastingCallerMemberName)
                  {
                      Logger.WriteInfo($@"[Cast] [{sourceLineNumber}] {caller}");
      
                      if (BaseSettings.Instance.DebugCastingCallerMemberNameIncludePath)
                      {
                          Logger.WriteInfo($@"[Path] {sourceFilePath}");
                      }
                  }
      
                  return await DoAction(spell, target);
              }
      
      DoAction Function:

      Code:
        private static async Task<bool> DoAction(SpellData spell, GameObject target, uint aura = 0, bool needAura = false, bool useRefreshTime = false, int refreshTime = 0)
              {
                  if (!Check(spell, target))
                      return false;
      
                  if (spell.GroundTarget)
                  {
                      if (!ActionManager.DoActionLocation(spell.Id, target.Location))
                          return false;
                  }
                  else
                  {
                      if (!ActionManager.DoAction(spell, target))
                          return false;
                  }
      
                  Logger.WriteCast($@"Cast: {spell}");
      
                  if (spell.AdjustedCastTime != TimeSpan.Zero)
                  {
                      if (!await Coroutine.Wait(3000, () => Core.Me.IsCasting))
                      {
                          return false;
                      }
                  }
      
                  Casting.CastingSpell = spell;
                  Casting.SpellCastTime = spell.AdjustedCastTime;
                  Casting.CastingHeal = false;
                  Casting.SpellTarget = target;
                  Casting.NeedAura = needAura;
                  Casting.Aura = aura;
                  Casting.UseRefreshTime = useRefreshTime;
                  Casting.RefreshTime = refreshTime;
                  Casting.CastingTime.Restart();
      
                  if (!BaseSettings.Instance.DebugPlayerCasting)
                      return true;
      
                  Debug.Instance.CastingSpell = spell;
                  Debug.Instance.CastingHeal = false;
                  Debug.Instance.SpellTarget = target;
                  Debug.Instance.NeedAura = needAura;
                  Debug.Instance.Aura = aura;
                  Debug.Instance.UseRefreshTime = useRefreshTime;
                  Debug.Instance.RefreshTime = refreshTime;
      
                  return true;
              }
      
      I have also tested it your way and it does work hmmm. I wonder what the issue is with my DoAction Function as it works just fine in PVE.
       
      Last edited: Oct 3, 2020
    12. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      5,343
      Likes Received:
      383
      Trophy Points:
      83
      Going to assume w/e is inside your Check(spell,target) function is faulty.
       
      galio likes this.
    13. galio

      galio Member

      Joined:
      Sep 27, 2014
      Messages:
      111
      Likes Received:
      1
      Trophy Points:
      18
      Hm, I'll remove that check and give it a go. Thanks.
       
    14. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      5,343
      Likes Received:
      383
      Trophy Points:
      83
      Replace it with ActionManager.CanCast, not wise to just assume you can cast w/e spell is being checked.
       
    15. galio

      galio Member

      Joined:
      Sep 27, 2014
      Messages:
      111
      Likes Received:
      1
      Trophy Points:
      18
      Yeah, the Check Function has a ActionaManager.CanCast check. As you said it is not wise otherwise. I can also confirm that something within the Check Function is blocking it. Will investigate. Thank you.
       
    16. Akira0245

      Akira0245 Member

      Joined:
      Mar 9, 2019
      Messages:
      72
      Likes Received:
      0
      Trophy Points:
      6
      now i'm using this simple Cast Function To handle all non-groundtarget pvp spell casts
      Code:
              public SpellData SpellData
              {
                  get
                  {
                      SpellData spell;
                      if (SpellType == SpellType.PVPCombo)
                          DataManager.SpellCache.TryGetValue(ActionManager.GetPvPComboCurrentActionId(Combo), out spell);
                      else
                          spell = DataManager.GetSpellData(ID);
                      return spell;
                  }
              }
      
              public Task<bool> Cast(GameObject target = null, bool waitForGcd = false)
              {
                  if (GCDType == GCDType.Off && waitForGcd && OnGcd()) return Task.FromResult(false);
      
                  if (target == null)
                      switch (CastType)
                      {
                          case CastType.Target:
                              if (!Core.Player.HasTarget) return Task.FromResult(false);
                              target = Core.Target;
                              break;
                          case CastType.Self:
                              target = Core.Me;
                              break;
                          default:
                              throw new ArgumentOutOfRangeException();
                      }
      
                  if (target.CombatDistance() > SpellData.Range) return Task.FromResult(false);
                  if (!target.InLineOfSight()) return Task.FromResult(false);
                  if (!ActionManager.CanCast(SpellData, target)) return Task.FromResult(false);
      
      
                  if (SpellType == SpellType.PVPCombo)
                  {
                      if (ActionManager.DoPvPCombo(Combo, target))
                      {
                          Log.WriteCast($"{SpellData.Id} {SpellData.LocalizedName} >> {target}");
                          RecentSpells.Enqueue(new RecentSpell(this, target));
                          return Task.FromResult(true);
                      }
                  }
                  else
                  {
                      if (ActionManager.DoAction(SpellData, target))
                      {
                          Log.WriteCast($"{SpellData.Id} {SpellData.LocalizedName} >> {target}");
                          RecentSpells.Enqueue(new RecentSpell(this, target));
                          return Task.FromResult(true);
                      }
                  }
      
                  return Task.FromResult(false);
              }
      not a lot of checks being needed, and it works pretty well for non-casters
      @mastahg do we have a clean way to determine if a spell is successfully being casted or not other than keeps tracking the character's casting time?
       
      Last edited: Oct 3, 2020
    17. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      5,343
      Likes Received:
      383
      Trophy Points:
      83
      Cancast checks line of sight and distance already. That's all pretty messy.

      You could scan the game log, but that would be locale dependent.
       
    18. Jokoast

      Jokoast New Member

      Joined:
      Mar 12, 2017
      Messages:
      11
      Likes Received:
      1
      Trophy Points:
      3
      While running OrderBot i had this issue tonight again, same hour.

      Code:
      [03:02:47.497 D] Exception while contacting authorization server.
      [03:02:47.497 D] System.TimeoutException: Cette opération de demande envoyée à net.tcp://auth.eu.buddyauth.com:5031/AuthService.svc n'a pas reçu de réponse dans le délai imparti (00:00:30). Le temps alloué à cette opération fait peut-être partie d'un délai d'attente plus long. Ceci peut être dû au fait que le service est toujours en cours de traitement de l'opération ou qu'il n'a pas pu envoyer un message de réponse. Envisagez d'augmenter le délai d'attente de l'opération (en diffusant le canal/proxy vers IContextChannel et en définissant la propriété OperationTimeout) et vérifiez que le service peut se connecter au client.
      
      Server stack trace:
         à System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(Message message, TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
         à System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
         à System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
      
      Exception rethrown at [0]:
         à System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
         à System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
         à Buddy.Auth.SR.IA.Do(Byte b, Object[] args)
         à Buddy.Auth.AuthService.Heartbeat(Object[] args)
         à ff14bot.Core.<>c.(AuthService )
         à Buddy.Auth.Service.Use[T](Func`2 codeBlock)
      
       
    19. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      5,343
      Likes Received:
      383
      Trophy Points:
      83
      Was most likely the new backup script that had been deployed causing issues. Should be ok for now.
       
    20. crpaul

      crpaul Member

      Joined:
      Jun 23, 2016
      Messages:
      137
      Likes Received:
      4
      Trophy Points:
      18
      not sure if this a Magitek or a rb problem but if you start a cross world party with say 3 people and do a raid it only heals the 3 people. sry the log is kinda big it was in the bunker
       

      Attached Files:

    Share This Page