Announcement

Collapse
No announcement yet.

Able Ability System Info and Support Thread

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Originally posted by fernmerc View Post

    Well I'm not sure how the system works so I just assumed I needed them since they're referenced a few times in the original AblPlayParticleEffectTask... I added AbleCore to the PrivateIncludePaths and that got rid of most errors, all that I get now is:

    Code:
    Error LNK2019 unresolved external symbol "private: static class UClass * __cdecl UAblParticleEffectParamContextActor::GetPrivateStaticClass(void)" (?GetPrivateStaticClass@UAblParticleEffectParamContextActor@@CAPEAVUClass@@XZ) referenced in function "public: virtual void __cdecl UAblPlayParticleEffectAutoScaled::OnTaskStart(struct TWeakObjectPtr<class UAblAbilityContext const ,struct FWeakObjectPtr> const &)const " (?OnTaskStart@UAblPlayParticleEffectAutoScaled@@UEBAXAEBU?$TWeakObjectPtr@$$CBVUAblAbilityContext@@UFWeakObjectPtr@@@@@Z)
    The error happens thanks to this code:
    Code:
    // Set our Parameters.
    for (UAblParticleEffectParam* Parameter : m_Parameters)
    {
    if (Parameter->IsA<UAblParticleEffectParamContextActor>())
    {
    UAblParticleEffectParamContextActor* ContextActorParam = Cast<UAblParticleEffectParamContextActor>(Parameter);
    if (AActor* FoundActor = GetSingleActorFromTargetType(Context, ContextActorParam->GetContextActorType()))
    {
    SpawnedEffect->SetActorParameter(ContextActorParam->GetParameterName(), FoundActor);
    }
    }
    if (Parameter->IsA<UAblParticleEffectParamLocation>())
    {
    UAblParticleEffectParamLocation* LocationParam = Cast<UAblParticleEffectParamLocation>(Parameter);
    FTransform outTransform;
    LocationParam->GetLocation().GetTransform(*Context.Get(), outTransform);
    SpawnedEffect->SetVectorParameter(LocationParam->GetParameterName(), outTransform.GetTranslation());
    }
    }
    The error specifically mentions UAblParticleEffectParamLocation and UAblParticleEffectParamContextActor, any clue what it could be?

    Thanks!
    I assume those are the classes you added? When you see "GetPrivateStaticClass" that means you likely don't have the class exported(e.g. class MYGAME_API UMyClass).
    Able Ability System - A high performance, robust ability system for UE4. Now Available!

    Comment


      I fixed it, thanks!

      Comment


        Hello,

        OnAbilityStart() is a BlueprintImplementableEvent; does this mean I can't override/define it in a C++ ability?

        Comment


          Originally posted by jfaztk View Post
          Hello,

          OnAbilityStart() is a BlueprintImplementableEvent; does this mean I can't override/define it in a C++ ability?
          There is a C++ version on the AbilityComponent that is called whenever an Ability is started (FOnAbilityStart). On the Ability itself, there is no C++ version to override. I'm adding that in the next update for people who don't want to use a Blueprint version (or require some extra work done in C++ before tossing things to BP).

          Next update will be out shortly after 4.19 is available.
          Able Ability System - A high performance, robust ability system for UE4. Now Available!

          Comment


            And you will fix ability anim montage blend?

            Comment


              Originally posted by AngeIV View Post
              And you will fix ability anim montage blend?
              As far as I can see, that should be working. If you pass in a sequence animation, it plays it as a dynamic montage in the "Ability" Slot with all the various blending values passed in. If you pass it just a montage, it simply plays that montage.

              I can remove the hardcoded "Ability" slot and let users choose a slot to play it as, but other than that I'll take another look around and see if those methods aren't doing what they should be.
              Able Ability System - A high performance, robust ability system for UE4. Now Available!

              Comment


                wait what... first it takes sequence as input not montage? and second it uses ability montage slot (didnt know it exist) instead of one you have defined in anim montage?
                argh... I've been using it wrong? lemme check today.

                Comment


                  Originally posted by ExtraLifeMatt View Post

                  There is a C++ version on the AbilityComponent that is called whenever an Ability is started (FOnAbilityStart). On the Ability itself, there is no C++ version to override. I'm adding that in the next update for people who don't want to use a Blueprint version (or require some extra work done in C++ before tossing things to BP).

                  Next update will be out shortly after 4.19 is available.
                  Alright, looking forward to it! I need because I want to put a "stamina cost" variable inside my melee attack ability (which will serve as the parent for every melee attack) and I need access to it in C++ to make sure the character has enough Stamina before actually executing the ability.

                  Comment


                    Will the dynamic loop count be in the next version? Just wondering, in case I have to add it myself (I rather not diverge from the original though )

                    Comment


                      Originally posted by jfaztk View Post

                      Alright, looking forward to it! I need because I want to put a "stamina cost" variable inside my melee attack ability (which will serve as the parent for every melee attack) and I need access to it in C++ to make sure the character has enough Stamina before actually executing the ability.
                      For that there is an BP method called "CustomCanAbilityExecute" that is called before each Ability is executed. So that's where you would do your stamina check. There isn't a C++ version just yet (you could wrap your check in a simple C++ BP Function Library and call that), but I'll put that on my list for the C++ additions for the next update.
                      Originally posted by fernmerc View Post
                      Will the dynamic loop count be in the next version? Just wondering, in case I have to add it myself (I rather not diverge from the original though )
                      Yes.
                      Able Ability System - A high performance, robust ability system for UE4. Now Available!

                      Comment


                        Originally posted by ExtraLifeMatt View Post
                        For that there is an BP method called "CustomCanAbilityExecute" that is called before each Ability is executed. So that's where you would do your stamina check. There isn't a C++ version just yet (you could wrap your check in a simple C++ BP Function Library and call that), but I'll put that on my list for the C++ additions for the next update.
                        Ahhhh I did not know that, that actually works better! Thanks.

                        Comment


                          Just tried using it; while I can definitely use it for other abilities, it won't work for my melee attacks because you can cancel out of the animation (previous combo strike) if you try attacking during the branch and don't have enough stamina. In my case, I want the ability to play completely if you don't have enough stamina, this method lets the player branch out of it (even though the next one doesn't execute.) Thanks anyways!

                          Comment


                            Originally posted by jfaztk View Post
                            Just tried using it; while I can definitely use it for other abilities, it won't work for my melee attacks because you can cancel out of the animation (previous combo strike) if you try attacking during the branch and don't have enough stamina. In my case, I want the ability to play completely if you don't have enough stamina, this method lets the player branch out of it (even though the next one doesn't execute.) Thanks anyways!
                            There's also a CustomCanBranchTo method that allows you to check things before a branch is queued up (and subsequently fails). Put your Stamina check there as well and it shouldn't queue up the branch (and thus the ability will play completely).
                            Able Ability System - A high performance, robust ability system for UE4. Now Available!

                            Comment


                              Originally posted by ExtraLifeMatt View Post

                              There's also a CustomCanBranchTo method that allows you to check things before a branch is queued up (and subsequently fails). Put your Stamina check there as well and it shouldn't queue up the branch (and thus the ability will play completely).
                              That's perfect! Not sure how I missed that, thanks!

                              Comment


                                Hi, there. The Spawn Actor Task Location "Use Socket Rotation" seems to be broken. When I enable it the actors are spawned close to the origin instead of source. Looking at the code it looks like the component-space transform of the socket is used in this case instead of world space transform. This is in UE4.18 and able 2.15. Am I missing something maybe? Cheers!

                                Comment

                                Working...
                                X