Announcement

Collapse
No announcement yet.

Able Ability System Info and Support Thread

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

  • replied
    Originally posted by MichaelLiew View Post

    Yes, marked as Passive, and only response OnAbilityStackRemoved, I have tracked your source code and found it will never called by logic
    Ah, I see the problem. It's called in a number of places, but the BP version is only called in the SetPassiveStack method. I'll toss that fix in for the next update (hoping to submit it sometime this week).

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post

    Is your Ability marked as a Passive? That callback only occurs for Passives.
    Yes, marked as Passive, and only response OnAbilityStackRemoved, I have tracked your source code and found it will never called by logic

    Leave a comment:


  • replied
    Originally posted by MichaelLiew View Post

    Hi, I tested your plugin, and found a bug, OnAbilityStackAdded never response
    Is your Ability marked as a Passive? That callback only occurs for Passives.

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post
    Hi, I tested your plugin, and found a bug, OnAbilityStackAdded never response

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post
    I'll get a fix out.
    Thanks a lot! I'm just glad my question wasn't completely off-topic and that I have missed something obvious

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post

    I could add an option that inherited Tasks actually just copy themselves into Child Abilities, rather than just referencing the originals. There's a small memory cost there, but it's not much and would be a bit cleaner.

    Also 4.24 has a nasty bug with recompilation that is schedule for 4.24.2, so if you're crashing randomly in FlushCompilationMgrImpl - it will hopefully clear up in the next hotfix.
    That would be great if you could add that copy methode for the Child Abilities, just an idean, but maybe you should add a checkbox option to enable this in the Project Settings > Plugins > Able, if anybody else is intrested in this, if it's not a huge request for the next ABLE update. : )

    We are using 4.22.3 for now, but at the end of january we would like to upgrade our Project to 4.24, so thank you for the notice about that nasty bug!

    Thanks in advance Matt!
    Last edited by JimPhoenix; 01-09-2020, 01:35 PM.

    Leave a comment:


  • replied
    Originally posted by JimPhoenix View Post

    Well if there is an animation task, I would like to change the task properties here and there (mainly the Animation itself) or if it's a Condition Check the lenght of the task in the timeline, or if it's a Collision Query the position in the timeline, maybe the details of the arc, and so on. Or you maybe referring to some other part from my post above?

    My usual methode is l(ike with normal BPs) to create a Master asset, add the needed tasks, build the custom logic in the graph tab within the overwriteable functions and in the main graph as well for the Start / End / Interrupted / Branch Events, and after that I create the Childs from it for melee or range attack variations / combo elements, etc. And yeah, in the iteration phase sometimes I need to add an other task to the Master because I want to extend the features of the ability (add a Custom Event or a Condition Check), so this is where the "fun" begins. : )
    Yea, Inherited Tasks are objects that are still owned by the Original Ability, so you can't modify them in child abilities. They're meant more for logic that doesn't need to change per Ability (including fields like animations, etc). So if you have some Attack ability that always plays "Swing 1" but the particle/sound can change - you'd want to inherit the Play Animation and then just re-create the particle / sound tasks. Child objects can't save data in Parent Objects. I could add an option that inherited Tasks actually just copy themselves into Child Abilities, rather than just referencing the originals. There's a small memory cost there, but it's not much and would be a bit cleaner.

    Also 4.24 has a nasty bug with recompilation that is schedule for 4.24.2, so if you're crashing randomly in FlushCompilationMgrImpl - it will hopefully clear up in the next hotfix.

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post
    Are you attempting to modify the Inherited tasks? That would definitely cause an error, they should be treated as Read only for the most part.
    Well if there is an animation task, I would like to change the task properties here and there (mainly the Animation itself) or if it's a Condition Check the lenght of the task in the timeline, or if it's a Collision Query the position in the timeline, maybe the details of the arc, and so on. Or you maybe referring to some other part from my post above?

    My usual methode is l(ike with normal BPs) to create a Master asset, add the needed tasks, build the custom logic in the graph tab within the overwriteable functions and in the main graph as well for the Start / End / Interrupted / Branch Events, and after that I create the Childs from it for melee or range attack variations / combo elements, etc. And yeah, in the iteration phase sometimes I need to add an other task to the Master because I want to extend the features of the ability (add a Custom Event or a Condition Check), so this is where the "fun" begins. : )
    Last edited by JimPhoenix; 01-08-2020, 06:07 PM.

    Leave a comment:


  • replied
    JimPhoenix Interesting... I'll poke at the crash logs. Are you attempting to modify the Inherited tasks? That would definitely cause an error, they should be treated as Read only for the most part.

    Leave a comment:


  • replied
    Hey there Matt,

    I experienced some really strange behaviors with the ABLE's parent-child relations handling (with UE 4.22.3) and collected some crashlogs, so let's begin; if I create a "Master" aka. Parent ABLE ability, then add some tasks to it, finish it for now, then after this I create some child ABLE Abilities from that Master ability (Right Click ➠ Create a Child Blueprint Class) and later on I add an other task, like a Check Condition logic to the Master ability the childs don't get this change right after that. Okey, what if I check the "Inheritable" chackbox? Well, if I do that, the Childs don't want to save themselfs from this point and the Editor gives me these pop-up windows:

    Click image for larger version  Name:	Untitled1_10.png Views:	0 Size:	28.5 KB ID:	1706014

    Click image for larger version  Name:	Untitled2_1.png Views:	0 Size:	27.3 KB ID:	1706015

    Click image for larger version  Name:	Untitled3_1.png Views:	0 Size:	14.4 KB ID:	1706016

    Lines from the log:

    HTML Code:
    LogSlate: Window 'Message' being destroyed
    LogSavePackage: Warning: Referencers of AblSpawnActorTask /Game/Gameplay/AISystem/Abilities/01_Minor/Able_AI_Minor_Melee_Attack.Default__Able_AI_Minor_Melee_Attack_C:AblSpawnActorTask_0:
    LogSavePackage: Warning:     Able_AI_Minor_Melee_Attack_C /Game/Gameplay/AISystem/Abilities/01_Minor/Able_AI_Minor_Melee_Attack.Default__Able_AI_Minor_Melee_Attack_C (2 refs)
    LogSavePackage: Warning:         0) ObjectProperty /Script/AbleCore.AblAbility:m_Tasks.m_Tasks
    LogSavePackage: Warning:         1) ObjectProperty /Script/AbleCore.AblAbility:m_CachedTasks.m_CachedTasks
    LogSavePackage: Warning:     Able_AI_Minor_Melee_Attack_Child_01_C /Game/Gameplay/AISystem/Abilities/01_Minor/Able_AI_Minor_Melee_Attack_Child_01.Default__Able_AI_Minor_Melee_Attack_Child_01_C (1 refs)
    LogSavePackage: Warning:         0) ObjectProperty /Script/AbleCore.AblAbility:m_CachedTasks.m_CachedTasks
    LogSlate: Window 'Message' being destroyed
    EditorErrors: New page: Save Output
    EditorErrors: Warning: Can't save /Content/Gameplay/AISystem/Abilities/01_Minor/Able_AI_Minor_Melee_Attack_Child_01.uasset: Graph is linked to external private object AblSpawnActorTask /Game/Gameplay/AISystem/Abilities/01_Minor/Able_AI_Minor_Melee_Attack.Default__Able_AI_Minor_Melee_Attack_C:AblSpawnActorTask_0 (m_Cached
    Tasks)
    LogSlate: FSceneViewport::OnFocusLost() reason 2
    LogSlate: Window 'Packages Failed To Save' being destroyed
    LogSlate: FSceneViewport::OnFocusLost() reason 0
    After this event, if I just go and unfill the "Inheritable" checkbox in the Master ability, save the ability and then go back to one of the childs, the mentioned task leaves a blank line in the Child ability's Timeline and the Editor just crash and it gives me this log:

    HTML Code:
    Unhandled exception
    
    UE4Editor_AbleEditor!SAblAbilityTimelineNode::DetermineDragType() [d:\build\++portal+dev-marketplace+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ableeditor\private\abilityeditor\sabilitytimelinetrack.cpp:477]
    UE4Editor_AbleEditor!SAblAbilityTimelineNode::OnCursorQuery() [d:\build\++portal+dev-marketplace+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ableeditor\private\abilityeditor\sabilitytimelinetrack.cpp:229]
    UE4Editor_Slate!FSlateApplication::QueryCursor() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:3620]
    UE4Editor_Slate!FSlateApplication::TickApplication() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1735]
    UE4Editor_Slate!FSlateApplication::Tick() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1679]
    UE4Editor!FEngineLoop::Tick() [d:\build\++ue4\sync\engine\source\runtime\launch\private\launchengineloop.cpp:4071]
    UE4Editor!GuardedMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\launch.cpp:168]
    UE4Editor!GuardedMainWrapper() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:145]
    UE4Editor!WinMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:275]
    UE4Editor!__scrt_common_main_seh() [d:\agent\_work\3\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
    kernel32
    ntdll
    ---

    Another stange thing happens when I create an other Master type ability then some Childs from it and later on in the Master ability I check one or more task(s) to be "Inheritable". If I do that, in the Childs all of those tasks (which are have the "Inheritable" fill) are now duplicated in the Childs' ability Timeline.

    ---

    Finally, here are some other crashlogs from the last few days:

    HTML Code:
    Unhandled exception
    
    UE4Editor_AbleCore!UAblAbilityInstance::GetAbility() [d:\build\++portal+dev-marketplace+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ablecore\private\ablabilityinstance.cpp:381]
    UE4Editor_AbleCore!UAblAbilityComponent::CancelActiveAbility() [d:\build\++portal+dev-marketplace+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ablecore\private\ablabilitycomponent.cpp:448]
    UE4Editor_AbleCore!UAblAbilityComponent::InternalCancelAbility() [d:\build\++portal+dev-marketplace+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ablecore\private\ablabilitycomponent.cpp:976]
    UE4Editor_AbleCore!UAblAbilityComponent::CancelAbility() [d:\build\++portal+dev-marketplace+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ablecore\private\ablabilitycomponent.cpp:687]
    UE4Editor_AbleCore!UAblAbilityComponent::execCancelAbility() [d:\build\++portal+dev-marketplace+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ablecore\classes\ablabilitycomponent.h:94]
    UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4643]
    UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:904]
    UE4Editor_CoreUObject!UObject::ProcessContextOpcode() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2314]
    UE4Editor_CoreUObject!ProcessLocalScriptFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:974]
    UE4Editor_CoreUObject!ProcessScriptFunction<void (__cdecl*)(UObject *,FFrame &,void *)>() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:809]
    UE4Editor_CoreUObject!ProcessLocalFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1033]
    UE4Editor_CoreUObject!ProcessLocalScriptFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:974]
    UE4Editor_CoreUObject!ProcessScriptFunction<void (__cdecl*)(UObject *,FFrame &,void *)>() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:809]
    UE4Editor_CoreUObject!ProcessLocalFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1033]
    UE4Editor_CoreUObject!ProcessLocalScriptFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:974]
    UE4Editor_CoreUObject!ProcessScriptFunction<void (__cdecl*)(UObject *,FFrame &,void *)>() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:809]
    UE4Editor_CoreUObject!ProcessLocalFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1033]
    UE4Editor_CoreUObject!UObject::ProcessContextOpcode() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2314]
    UE4Editor_CoreUObject!ProcessLocalScriptFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:974]
    UE4Editor_CoreUObject!ProcessScriptFunction<void (__cdecl*)(UObject *,FFrame &,void *)>() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:809]
    UE4Editor_CoreUObject!ProcessLocalFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1033]
    UE4Editor_CoreUObject!UObject::ProcessContextOpcode() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2314]
    UE4Editor_CoreUObject!ProcessLocalScriptFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:974]
    UE4Editor_CoreUObject!ProcessScriptFunction<void (__cdecl*)(UObject *,FFrame &,void *)>() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:809]
    UE4Editor_CoreUObject!ProcessLocalFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1033]
    UE4Editor_CoreUObject!ProcessLocalScriptFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:974]
    UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1058]
    UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4643]
    UE4Editor_CoreUObject!UObject::ProcessEvent() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1464]
    UE4Editor_Engine!AActor::ProcessEvent() [d:\build\++ue4\sync\engine\source\runtime\engine\private\actor.cpp:769]
    UE4Editor_Engine!TMulticastScriptDelegate<FWeakObjectPtr>::ProcessMulticastDelegate<UObject>() [d:\build\++ue4\sync\engine\source\runtime\core\public\uobject\scriptdelegates.h:488]
    UE4Editor_Engine!FComponentBeginOverlapSignature::Broadcast() [d:\build\++ue4\sync\engine\source\runtime\engine\classes\components\primitivecomponent.h:147]
    UE4Editor_Engine!UPrimitiveComponent::BeginComponentOverlap() [d:\build\++ue4\sync\engine\source\runtime\engine\private\components\primitivecomponent.cpp:2489]
    UE4Editor_Engine!UPrimitiveComponent::UpdateOverlapsImpl() [d:\build\++ue4\sync\engine\source\runtime\engine\private\components\primitivecomponent.cpp:3035]
    UE4Editor_Engine!UPrimitiveComponent::OnComponentCollisionSettingsChanged() [d:\build\++ue4\sync\engine\source\runtime\engine\private\primitivecomponentphysics.cpp:952]
    UE4Editor_Engine!UPrimitiveComponent::SetCollisionEnabled() [d:\build\++ue4\sync\engine\source\runtime\engine\private\primitivecomponentphysics.cpp:895]
    UE4Editor_Engine!UPrimitiveComponent::execSetCollisionEnabled() [d:\build\++ue4\sync\engine\source\runtime\engine\classes\components\primitivecomponent.h:174]
    UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4643]
    UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:904]
    UE4Editor_CoreUObject!UObject::ProcessContextOpcode() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2314]
    UE4Editor_CoreUObject!ProcessLocalScriptFunction() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:974]
    UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1058]
    UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4643]
    UE4Editor_CoreUObject!UObject::ProcessEvent() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1464]
    UE4Editor_Engine!AActor::ProcessEvent() [d:\build\++ue4\sync\engine\source\runtime\engine\private\actor.cpp:769]
    UE4Editor_Engine!FLatentActionManager::TickLatentActionForObject() [d:\build\++ue4\sync\engine\source\runtime\engine\private\latentactionmanager.cpp:206]
    UE4Editor_Engine!FLatentActionManager::ProcessLatentActions() [d:\build\++ue4\sync\engine\source\runtime\engine\private\latentactionmanager.cpp:144]
    UE4Editor_Engine!UWorld::Tick() [d:\build\++ue4\sync\engine\source\runtime\engine\private\leveltick.cpp:1621]
    UE4Editor_UnrealEd!UEditorEngine::Tick() [d:\build\++ue4\sync\engine\source\editor\unrealed\private\editorengine.cpp:1618]
    UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [d:\build\++ue4\sync\engine\source\editor\unrealed\private\unrealedengine.cpp:403]
    UE4Editor!FEngineLoop::Tick() [d:\build\++ue4\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3967]
    UE4Editor!GuardedMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\launch.cpp:168]
    UE4Editor!GuardedMainWrapper() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:145]
    UE4Editor!WinMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:275]
    UE4Editor!__scrt_common_main_seh() [d:\agent\_work\3\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
    kernel32
    ntdll
    HTML Code:
    Unhandled exception
    
    UE4Editor_AbleCore!UAblAbilityInstance::Initialize() [d:\build\++portal+dev-marketplace+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ablecore\private\ablabilityinstance.cpp:58]
    UE4Editor_AbleCore!UAblAbilityComponent::PlayAbilityFromEditor() [d:\build\++portal+dev-marketplace+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ablecore\private\ablabilitycomponent.cpp:1443]
    UE4Editor_AbleEditor!FAblAbilityEditor::PlayAbility() [d:\build\++portal+dev-marketplace+full\sync\localbuilds\plugintemp\hostproject\plugins\able\source\ableeditor\private\abilityeditor\ablabilityeditor.cpp:1359]
    UE4Editor_AbleEditor!TBaseSPMethodDelegateInstance<0,FAblAbilityEditor,0,void __cdecl(void)>::ExecuteIfSafe() [d:\rocketsync\4.22.0-5660361+++ue4+release-4.22\working\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:355]
    UE4Editor_Slate!FUICommandList::ExecuteAction() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\commands\uicommandlist.cpp:99]
    UE4Editor_Slate!SToolBarButtonBlock::OnClicked() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\multibox\stoolbarbuttonblock.cpp:300]
    UE4Editor_Slate!SToolBarButtonBlock::OnCheckStateChanged() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\multibox\stoolbarbuttonblock.cpp:325]
    UE4Editor_Slate!TBaseSPMethodDelegateInstance<0,SToolBarButtonBlock,0,void __cdecl(enum ECheckBoxState)>::ExecuteIfSafe() [d:\build\++ue4\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:355]
    UE4Editor_Slate!SCheckBox::OnMouseButtonUp() [d:\build\++ue4\sync\engine\source\runtime\slate\private\widgets\input\scheckbox.cpp:191]
    UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_6c1f6b862bcfb82ea6dcab28fbcc9463> >() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:271]
    UE4Editor_Slate!FSlateApplication::RoutePointerUpEvent() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5598]
    UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:6203]
    UE4Editor_Slate!FSlateApplication::OnMouseUp() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:6176]
    UE4Editor_ApplicationCore!FWindowsApplication::ProcessDeferredMessage() [d:\build\++ue4\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:1842]
    UE4Editor_ApplicationCore!FWindowsApplication::DeferMessage() [d:\build\++ue4\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:2292]
    UE4Editor_ApplicationCore!FWindowsApplication::ProcessMessage() [d:\build\++ue4\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:1522]
    UE4Editor_ApplicationCore!FWindowsApplication::AppWndProc() [d:\build\++ue4\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:772]
    user32
    user32
    UE4Editor_ApplicationCore!FWindowsPlatformApplicationMisc::PumpMessages() [d:\build\++ue4\sync\engine\source\runtime\applicationcore\private\windows\windowsplatformapplicationmisc.cpp:130]
    UE4Editor!FEngineLoop::Tick() [d:\build\++ue4\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3882]
    UE4Editor!GuardedMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\launch.cpp:168]
    UE4Editor!GuardedMainWrapper() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:145]
    UE4Editor!WinMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:275]
    UE4Editor!__scrt_common_main_seh() [d:\agent\_work\3\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
    kernel32
    ntdll
    Thank you for your attention! : )
    Last edited by JimPhoenix; 01-08-2020, 04:38 PM.

    Leave a comment:


  • replied
    Originally posted by AngeIV View Post

    like most things with blakboard related.. you must know the key "name" by checking it... there is no reference. You must also know what type it is not to crash the engine so if you target something that is not an actor base class or not even an object - in example bool... it wont work.
    Yea, that's not the question he has. I just noticed the category that has that property exposed is hidden. I didn't notice it due to some local changes on my end.

    I'll get a fix out.

    If you want to fix it locally, just change the Category to something like "Blackboard" in ablTargetingMisc.h line 89.

    Code:
        /* What Keys to use when attempting to grab an Actor from the Blackboard */
        UPROPERTY(EditInstanceOnly, Category = "Blackboard", meta = (DisplayName = "Blackboard Keys"))
        TArray<FName> m_BlackboardKeys;

    Leave a comment:


  • replied
    Originally posted by Kelen View Post
    Thanks for the tips, it turns out I was looking at the wrong thing.
    I appologize for the stupid question but I can't find Blackboard keys array? Is it somewhere else? It's a 4.23 project by the way.Click image for larger version

Name:	ablebb.PNG
Views:	128
Size:	7.9 KB
ID:	1704037
    like most things with blakboard related.. you must know the key "name" by checking it... there is no reference. You must also know what type it is not to crash the engine so if you target something that is not an actor base class or not even an object - in example bool... it wont work.

    Leave a comment:


  • replied
    Originally posted by AngeIV View Post
    is your blackboard key public? you sure get self actor returns the character? does the character have access to blackboard or maybe you need to run it from owner (controller) ?
    Thanks for the tips, it turns out I was looking at the wrong thing.
    Originally posted by ExtraLifeMatt View Post
    For BB Keys, you just want to add the key to the "Blackboard Keys" array under the targeting properties. When I did that, it worked as expected.
    I appologize for the stupid question but I can't find Blackboard keys array? Is it somewhere else? It's a 4.23 project by the way.Click image for larger version

Name:	ablebb.PNG
Views:	128
Size:	7.9 KB
ID:	1704037

    Leave a comment:


  • replied
    Originally posted by JimPhoenix View Post
    ExtraLifeMatt thanks a lot, I will try the fixes out and if you don't mind I will report other bugs or crashes, may even be QoL suggestions in the future here to further improve and polish the Plugin.

    Keep up the good work Matt, I truly appreciate your effort with ABLE, it's a really powerful and useful system.
    Absolutely. I love feedback. Lots of features have come from users like yourself.

    Leave a comment:


  • replied
    ExtraLifeMatt thanks a lot, I will try the fixes out and if you don't mind I will report other bugs or crashes, may even be QoL suggestions in the future here to further improve and polish the Plugin.

    Keep up the good work Matt, I truly appreciate your effort with ABLE, it's a really powerful and useful system.

    Leave a comment:

Working...
X