Able Ability System Info and Support Thread

Hey Quiet,

You could layer the attack animation over the run animation (using the dynamic montage option in Play Animation). But you wouldn’t want to use Able to play your run animation, you would want that in a state machine and honestly a state machine is the best/most flexible way to deal with animations (which is why Able has its own Animation State Machine Node). Is there a reason you are avoiding state machines?

Not at all. I was struggling to understand a way to blend them together using a state machine AND calling the ability without one overriding the other. If Able has it’s own state machine node, could I use it for what I’m trying to do or would I need to make the blend in an AB and then call the attack ability through Able?

You can just setup a state machine for your locomotion, and setup one for your Abilities (although it would likely be just this node), and then blend results together. Or you can make it a part of your locomotion if you don’t want Abilities to play while running/walking.

I have a tutorial up on how to setup the Ability Animation State Node that Able can use.

Okay, so now I can’t open the ability blueprints. I created a new one, named it, and double clicked it and the engine crashed.

Interesting. I haven’t seen that callstack before. It looks like it’s failing to create the preview actor. Were you able to open the Editor previously and set an asset to be the preview actor? Did that asset get deleted?

You can go into Able’s settings (Project settings -> Able ) and manually change the preview asset to something valid.

EDIT: That does appear to be the issue (the Preview Asset couldn’t be loaded for some reason). I’ve gone ahead and made it so it won’t crash when that occurs. That’ll be in the v1.5 update.

@

Hello :slight_smile:

I’m hoping you’ll do a video on interrupting and canceling abilities via received damage, things like taking damage interrupting a “slow melee” ability.
But also, how to specify the damage type that can interrupt (example: “melee damage” can interrupt player melee, but “burning damage” does not interrupt)

Just a heads up, I think the sale ends in < 24 hours. So, if you’re on the fence - you gotta decide soon. :slight_smile:

Sure. I was planning to do another Damage video since I seem to get a question about just basic damage hook up on the character side about once a week. There’s a couple ways to do what you’re asking. All of which are pretty simple. Should make for a fun video.

Pretty happy with how v1.5 is shaping up.

Notes so far:

  • Fix a crash when passing in a null Ability to ActivateAbility.
  • Fix to a crash when the Preview Asset can not be loaded.
  • Added an option for “Descriptive Task Titles” which provides a dynamic description of a task. This option is enabled by default.
  • Your currently selected task is now highlighted on the Timeline.
  • Dependency Drop down respects the Descriptive Task Title option.

Last thing on my list is to expose Particle Emitter Instance Parameters in some clean way so you can hook beams to various Context targets (or potentially just some 3D point). That’s taking a bit longer than I would like, but I should still have it done sometime this weekend. May increase the highlighting effect as well, still deciding on that one.

Crash Win64 4.15.2

Assertion failed: ScratchPad [File:D:\Build++Portal+Main+Full\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\Able\Source\AbleCore\Private\Tasks\ablPlayParticleEffectTask.cpp] [Line: 135]

UE4Editor_Core!FDebug::AssertFailed() [d:\build++ue4+release-4.15+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:349]
UE4Editor_AbleCore!UAblPlayParticleEffectTask::OnTaskEnd() [d:\build++portal+main+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ablecore\private asks\ablplayparticleeffecttask.cpp:138]
UE4Editor_AbleCore!UAblAbilityInstance::InternalUpdateTasks() [d:\build++portal+main+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ablecore\private\ablabilityinstance.cpp:410]
UE4Editor_AbleCore!TGraphTask<FAsyncAbilityInstanceUpdaterTask>::ExecuteTask() [d:\build++portal+main+full\sync\rocketsync\engine\source\runtime\core\public\async askgraphinterfaces.h:883]
UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [d:\build++ue4+release-4.15+compile\sync\engine\source\runtime\core\private\async askgraph.cpp:954]
UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilIdle() [d:\build++ue4+release-4.15+compile\sync\engine\source\runtime\core\private\async askgraph.cpp:716]
UE4Editor_Engine!FTickTaskSequencer::ReleaseTickGroup() [d:\build++ue4+release-4.15+compile\sync\engine\source\runtime\engine\private icktaskmanager.cpp:555]
UE4Editor_Engine!FTickTaskManager::RunTickGroup() [d:\build++ue4+release-4.15+compile\sync\engine\source\runtime\engine\private icktaskmanager.cpp:1450]
UE4Editor_Engine!UWorld::RunTickGroup() [d:\build++ue4+release-4.15+compile\sync\engine\source\runtime\engine\private\leveltick.cpp:758]
UE4Editor_Engine!UWorld::Tick() [d:\build++ue4+release-4.15+compile\sync\engine\source\runtime\engine\private\leveltick.cpp:1384]
UE4Editor_AbleEditor!FAbilityEditorViewportClient::Tick() [d:\build++portal+main+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ableeditor\private\abilityeditor\ablabilityeditorviewportclient.cpp:220]
UE4Editor_UnrealEd!UEditorEngine::Tick() [d:\build++ue4+release-4.15+compile\sync\engine\source\editor\unrealed\private\editorengine.cpp:1698]
UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [d:\build++ue4+release-4.15+compile\sync\engine\source\editor\unrealed\private\unrealedengine.cpp:391]
UE4Editor!FEngineLoop::Tick() [d:\build++ue4+release-4.15+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3025]
UE4Editor!GuardedMain() [d:\build++ue4+release-4.15+compile\sync\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [d:\build++ue4+release-4.15+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:134]
UE4Editor!WinMain() [d:\build++ue4+release-4.15+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:210]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll

Thanks so much! :smiley:

Hey Antony,

That crash means something went really wrong. Looks like it happened in the editor, do you see this crash in a normal game?

Thought it ends end of day 5/21 - my bad. Any plans for a summer sale later? :slight_smile:

I’m struggling to making the “cool down” work as expected, perhaps I’m misunderstanding the usage, but I would like a screenshot example of a blueprint that uses this effectively.

Just for an experiment, I’m using Able to for a basic Jump ability, and I want to use “cool down” to prevent players from spamming the button (because doing so wastes the double jump due to my physics set-up), so to mitigate player error, I want to use “cool down” to prevent successive Jumps from happening so soon after the initial jump.

But so far I can’t figure out how to make the BP respect cool down.

Hello, i can’t seem to apply damage whatsoever.
I even used the TargetMannquiun from your shooter example, along with the combo tutorial. and on (Event AnyDamage) doesn’t even activate.

Possibly, but it’ll be a bit. :slight_smile:

You just want to use a BP to see if an Ability is on Cooldown? Sure.

Make sure the Character is marked as “Can be Damaged” in their properties, otherwise they won’t get the event. If that doesn’t work - then disable that Hunger BP that was causing issues previously and see if that helps. :slight_smile:

On the topic of cooldowns, could you map these to a hotbar that would display the cooldown similar to arpgs and mmos?

Yup. You can get all the information you need to display that. You would need to wrap the Ability in some simple struct that had stuff like an Icon, maybe some text when you hover over it - but you can get all the info you need to do a cooldown widget/spinner thing.

I was able to get everything working again by using a backup I’ve created earlier.
I’m now able to perform combos and I’ve hooked each attack with the stamina system, so far everything working good.

Thank you for your continuous support.

So, I’m struggling again. I can’t seem to make this work while getting the variable.

This one (above) doesn’t work. No matter how I set it up.

This one works perfectly fine. All I did was remove the get variable node.
The first picture returns the error, “LogAble:Error: GetAbilityObjectFromClass was passed a null class. Check your parameters!”

Internally, those two images are the same. They call the same method (GetAbilityObjectFromClass), one just has a parameter hard coded - the other doesn’t. I don’t know why that Stamina blueprint system breaks such a simple feature, we saw the same thing when you just set a simple float value, so it’s not an Able thing. If you’re inheriting your blueprint from this Stamina blueprint system, it may be causing some values to not be properly inherited (i.e. any new variable). You could try adding your test variable on the Stamina Blueprint system base blueprint, but other than that - I have no idea. You’d have to ask the author of that system if he’s seen this behavior before.