Able Ability System Info and Support Thread

this is at runtime on a packaged game and I don’t think I tried to manually add an ability to the Root Set but I’ll keep looking.

Hmmm, the only thing that seems odd is it says it’s in the Persistent Level. Like you dropped an Ability into a Map itself (which shouldn’t be possible).

Yeah specially since it worked on packaged games before and I haven’t really change how I use abilities or Engine version

yes sorry, offsetting is exactly what I mean. So if you use a box trace for an attack, and I increase the size of the box it won’t clip through my character.

So it looks like that error is only fatal in Shipping builds. Are you trying this on a shipping build?

Pulling apart the error:

In your Ability /Game/Character/Abilities/CC/KnockDown, in the Function “KnockDown”, you are apparently saving off a hard reference to a Player - which isn’t actually valid as that object doesn’t exist in the root set (i.e. the level data).

Any chance you can post a screenshot of your BP for that function?

This is all I’m doing in KnockDown and I am trying this on a shipping build.

I had issues with 3d cone query’s as well :frowning: Good im not using collision query except for sphere in my abilities.

whats the easier way to reference and change variables on specific abilities?

say for example I had an ability and it reads my player damage BUT it has its own values too, 2-300 lightning added flat damage. now inside the ability, I can get to this, but what if I’m I need to either get that info or manipulate that info from outside?

I’ve been considering doing a loop of my current abilities I have equipped and saved them into an array to grab later, but I’m not sure if this will ruin all your work with it being all “scratchpad” or whatever, which btw is another thing I cant figure out. no idea how to use or why to use scratch pads. it’s probably this exact reason or something stupid. anyways! thanks for any help.

Hmmm, not sure then. All I can suggest is disconnect that function and add nodes one by one till you find what’s causing the issue.

What issues? I’m looking at 3D Cone right now.

Abilities are, by default, read only. The Scratchpad is a small structure that is allocated per-Task where it can read/write data to. So when the Ability is about to execute, it asks each Task to allocate a scratch pad (and each Task decides what that scratch pad looks like, or if it needs one at all), and then the Task will read/write to it during execution.

Ideally, you want to treat Abilities as read only and they ask the Player or some other system/subsystem for data. So, you can had a data table somewhere that it feeds values to your Ability, or make some other system that fits your needs. Or make a Custom Task that does your damage calculations and you can make your own scratch pad class that you can read / write values to.

thanks makes a lot of sense, ill make a handler component to hold any dynamic data i might need that i can manipulate and pull from. thanks !

Able v3.38 submitted. Notes below:

Any chance with fixing thumbnails?

Not yet, sorry, still looking at it.

when destroying large amounts of enemies at once that are all using the able system and using abilities on me too. I get this error

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x00000000

UE4Editor_AbleCore!UAblPlayParticleEffectTask::OnTaskStart() [D:\Build++Portal+Promotion\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\Able\Source\AbleCore\Private\Tasks\ablPlayParticleEffectTask.cpp:122]
UE4Editor_AbleCore!UAblAbilityInstance::InternalUpdateTasks() [D:\Build++Portal+Promotion\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\Able\Source\AbleCore\Private\ablAbilityInstance.cpp:611]
UE4Editor_AbleCore!TGraphTask<FAsyncAbilityInstanceUpdaterTask>::ExecuteTask() [D:\RocketSync\4.25.0-13144385+++UE4+Release-4.25\Working\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:849]
UE4Editor_Core
UE4Editor_Core
UE4Editor_Core
UE4Editor_Engine
UE4Editor_Engine
UE4Editor_Engine
UE4Editor_Engine
UE4Editor_UnrealEd
UE4Editor_UnrealEd
UE4Editor
UE4Editor
UE4Editor
UE4Editor
UE4Editor
kernel32
ntdll

realistically in the future i wont be just destroying my enemies, they will be removed over time and just disabled so this probably won’t really matter, but thought id report it.

Yea the Target is getting destroyed out from under the Task. I can make it a bit more robust there. Generally you want particle effects and such to be played on the actor they are for (via a passive - so, if I hit something, I tell the actor I hit to play the “HitEffect” passive which has the particle effect + sound) - this will prevent the target from disappearing on the Task as abilities playing on an Actor are stopped during destruction.

Hey, is there any way when using Ability Animation Node to speed up the ability play rate? Right now it seems to break the animation or not work fully with any settings. Lemme know if there’s something I’m missing please

There is both an Ability Play Rate, and an Animation Play Rate. There is also an option to apply the Ability Play Rate to the Animation automatically.

Okay I’ll try again tonight, maybe Change the ability play rate outside of the ability. Or in it. But so far it works it just doesn’t reset the animation at the end correctly. It hangs for the duration of the ability, and changing the ability time doesn’t fix it, it will still hang for what the ability time was before changing it.

Got it to work, thank you.

another question, is there a way to get sounds to play with an attenuation attached and have them multicasted to the clients? A way to get the sounds to replicate inside Able or should I just do it outside of it?

There is a Play Sound task in Able. I don’t think it has any attenuation parameters or such though, so you would need a Custom Task for something like that.