# UQuestSystemAsyncAction

`UQuestSystemAsyncAction` belongs to the QuestSystem runtime module.

Ad velit ea veniam sint aliqua velit adipiscing velit ad. Tempor labore velit occaecat ex in commodo veniam laboris lorem aute tempor. Duis do quis magna laboris laboris laboris dolore dolore adipiscing commodo aliquip ipsum ut. Consequat exercitation nostrud pariatur elit ex do occaecat. Nulla duis voluptate irure consequat voluptate duis ad amet. Nisi pariatur ea magna nisi nulla laboris aliquip ea amet.

## Declaration

```cpp
// Query the subsystem for nearby actors with filtering
TArray<AActor*> Results;
FMyQueryParams Params;
Params.Origin = GetActorLocation();
Params.Radius = 1000.0f;
Params.MaxResults = 10;
Params.bIncludeHidden = false;
Params.FilterClass = AMyTargetActor::StaticClass();

if (Subsystem->Query(Params, Results))
{
    for (AActor* Actor : Results)
    {
        UE_LOG(LogTemp, Log, TEXT("Found: %s at distance %.1f"),
            *Actor->GetName(),
            FVector::Dist(Params.Origin, Actor->GetActorLocation()));
    }
}
```

## Members

| Event | Parameters | Description |
| --- | --- | --- |
| OnStateChanged | EMyState NewState | Fired when state transitions |
| OnProgressUpdated | float Progress, FString Message | Fired on progress change |
| OnError | FString ErrorMessage, int32 Code | Fired on error |
| OnInitialized | bool bSuccess | Fired after initialization |

## Example

```cpp
#include "QuestSystem.h"
#include "Engine/World.h"

void AMyActor::BeginPlay()
{
    Super::BeginPlay();

    UQuestSystemSubsystem* Subsystem = GetWorld()->GetSubsystem<UQuestSystemSubsystem>();
    if (Subsystem)
    {
        Subsystem->Initialize();
        UE_LOG(LogTemp, Log, TEXT("Plugin subsystem initialized successfully"));
    }
}
```