トレードのクイックスタート

注意

このクイックスタートでは、カタログとインベントリ アイテムの両方について精通していることを前提としています。 サンプル プレイヤーは、トレードするインベントリ アイテムを既に所有している必要があります。

最初の手順として、OpenTrade API を呼び出して別のプレイヤーがトレードできるようにします。 ギフトの受取人と、インベントリにアイテムを現在持っているプレイヤーの ItemInstanceID を識別するには、playfabId が必要です。

secondPlayerId: これは、ギフトの受取人を識別する一意の文字列です (PlayFabId)。

myItemInstanceId: これは、現在のプレイヤーによって所有されているアイテム インスタンスを識別する一意の文字列です (InstanceID)。

void GiveItemTo(string secondPlayerId, string myItemInstanceId) {
    PlayFabClientAPI.OpenTrade(new OpenTradeRequest {
        AllowedPlayerIds = new List<string> { secondPlayerId }, // PlayFab ID for the friend who will receive your gift
        OfferedInventoryInstanceIds = new List<string> { myItemInstanceId } // The item instanceId fetched from GetUserInventory()
    }, LogSuccess, LogFailure);
}

注意

すべてのトレードは、公開情報です。 どのプレイヤーも、別のプレイヤーのオープンなトレードや他のプレイヤーのトレード履歴を見ることができます (そのプレイヤーの playFabId を知っている場合)。

このスニップでは、LogSuccess コールバックが result.Trade.TradeId も評価し、firstPlayFabIdtradeId の両方を 2 番目のプレイヤーに転送する必要があります。 保存されていない場合、2 番目のプレイヤーがトレードを評価して受け入れることができなくなります。

注意

現在のプレビューで、トレードが同時アクションからスレッド セーフであることを確認する必要があります。 スレッド セーフ オプションには、カスタム ゲーム サーバーと、CloudScript を通じた外部データベース/システムへの Web フック呼び出しが含まれています。 スレッド セーフでないオプションは、プレイヤー データ キーを直接変更する CloudScript を使ってビルドできます。 後者のオプションには、同時トレード リスト更新が正しく処理されない同時実行の問題があります。

最初のプレイヤーがトレードを作成し、その playFabIdtradeId を 2 番目のプレイヤーに転送すると後、2 番目のプレイヤーは GetTradeStatus 要求を行うことでトレード要件を調べることができます。

注意

最も関連性の高い TradeStatus の値は、OpenFilledCanceledです。 他のすべての状態は、中間状態です。 トレードは、次の呼び出しまでのある程度の期間、そのような中間状態のままになる可能性があります。 最近変更されたトレードは、すぐには利用できない場合。

void ExamineTrade(string firstPlayFabId, string tradeId) {
    PlayFabClientAPI.GetTradeStatus(new GetTradeStatusRequest {
        OfferingPlayerId = firstPlayFabId,
        TradeId = tradeId
    }, LogSuccess, LogFailure);
}

If the requirements of that trade are acceptable, the gift can be accepted using AcceptTrade
C# snip
void AcceptGiftFrom(string firstPlayFabId, string tradeId) {
    PlayFabClientAPI.AcceptTrade(new AcceptTradeRequest {
        OfferingPlayerId = firstPlayFabId,
        TradeId = tradeId
    }, LogSuccess, LogFailure);
}

完了すると、上記の AcceptGiftFrom 関数が最初のプレイヤーのインベントリから 2 番目のプレイヤーにギフト アイテムを転送します。