first of all when you create blueprint native events, you shouldn’t add specifiers to the implementation declaration
Technically you don’t even have to write the declaration, UHT will automatically generate it:
UFUNCTION(BlueprintNativeEvent)
void TestFunction();
...
UFUNCTION(BlueprintNativeEvent)
void TestFunction();
virtual void TestFunction_Implementation();
Both of these are valid and will work
In your .cpp you can define the _implementation as usual
Other than that, I’m guessing that AItem* ActiveItem = InventoryComponent->GetItemInActiveSlot();
is returning nullptr, which is why the Use function is not called
You can place a breakpoint in if (ActiveItem)
to see if it’s a valid item or not
Lastly, when overriding a function in blueprint, if you don’t call parent (by right clicking the node and selecting add a call to parent function), then it won’t call the parent implementation (in your case the c++ implementation)