question

sharkraceclub avatar image
sharkraceclub asked

CloudScript with arguments calling from C++

I am absolutely new to cloud scripts, help me please with one I need. Function:

handlers.GetMultiplayerServerDetails = function (args, context) {
    var Servers = multiplayer.GetMultiplayerServerDetails({
        "BuildId": args.BuildId,
        "Region": args.Region, //Your region.
        "SessionId": args.SessionId,
    });
    return Servers; 

};

C++ call for this:

    // we are client for sure
    if (ClientAPI == nullptr)
        return false;


    PlayFab::ClientModels::FExecuteCloudScriptRequest request;
    request.FunctionName = "GetMultiplayerServerDetails";

    TSharedPtr<FJsonObject> jsonValue = MakeShared<FJsonObject>();
    jsonValue->SetStringField(TEXT("BuildId"), GarageBuildId);
    jsonValue->SetStringField(TEXT("Region"), Region);
    jsonValue->SetStringField(TEXT("SessionId"), GarageSessionId);
    request.FunctionParameter.readFromValue(jsonValue);

    bool result = ClientAPI->ExecuteCloudScript(request,
        PlayFab::UPlayFabClientAPI::FExecuteCloudScriptDelegate::CreateUObject(this, &USRCPlayfabUserClient::OnServerCloudScriptResult),
        PlayFab::FPlayFabErrorDelegate::CreateUObject(this, &USRCPlayfabUserClient::OnSharedError));
    return result;

The issue message in return result:

NameValueType
StackTrace L"TypeError: Cannot read property 'BuildId' of null\n at handlers.GetMultiplayerServerDetails (68041-main.js:88:25)\n at Object.invokeFunction (Script:117:33)" FString
CloudScript
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

·
Made Wang avatar image
Made Wang answered

The problem is the data type of the transfer parameter. You can refer to the code below. You can also refer to the samples in the PlayFab Unreal SDK.

PlayFab::ClientModels::FExecuteCloudScriptRequest request;
request.FunctionName = "GetMultiplayerServerDetails";
TSharedPtr<FJsonObject> jsonValue = MakeShareable(new FJsonObject);
jsonValue->SetStringField("BuildId", " ");
jsonValue->SetStringField("Region", " ");
jsonValue->SetStringField("SessionId", " ");
auto functionParameter = PlayFab::FJsonKeeper();
functionParameter.readFromValue(MakeShareable(new FJsonValueObject(jsonValue)));
request.FunctionParameter = functionParameter;
request.GeneratePlayStreamEvent = true;
clientAPI->ExecuteCloudScript(request,
    PlayFab::UPlayFabClientAPI::FExecuteCloudScriptDelegate::CreateUObject(this, &ALoginActor::OnCloudScriptResult),
    PlayFab::FPlayFabErrorDelegate::CreateUObject(this, &ALoginActor::OnError));
1 comment
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

sharkraceclub avatar image sharkraceclub commented ·

Thank you it works!

0 Likes 0 ·

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.