トレードのクイックスタート
注意
このクイックスタートでは、カタログとインベントリ アイテムの両方について精通していることを前提としています。 サンプル プレイヤーは、トレードするインベントリ アイテムを既に所有している必要があります。
最初の手順として、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
も評価し、firstPlayFabId
と tradeId
の両方を 2 番目のプレイヤーに転送する必要があります。 保存されていない場合、2 番目のプレイヤーがトレードを評価して受け入れることができなくなります。
注意
現在のプレビューで、トレードが同時アクションからスレッド セーフであることを確認する必要があります。 スレッド セーフ オプションには、カスタム ゲーム サーバーと、CloudScript を通じた外部データベース/システムへの Web フック呼び出しが含まれています。 スレッド セーフでないオプションは、プレイヤー データ キーを直接変更する CloudScript を使ってビルドできます。 後者のオプションには、同時トレード リスト更新が正しく処理されない同時実行の問題があります。
最初のプレイヤーがトレードを作成し、その playFabId
と tradeId
を 2 番目のプレイヤーに転送すると後、2 番目のプレイヤーは GetTradeStatus
要求を行うことでトレード要件を調べることができます。
注意
最も関連性の高い TradeStatus の値は、Open、Filled、Canceledです。 他のすべての状態は、中間状態です。 トレードは、次の呼び出しまでのある程度の期間、そのような中間状態のままになる可能性があります。 最近変更されたトレードは、すぐには利用できない場合。
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 番目のプレイヤーにギフト アイテムを転送します。