Platform SDK: DirectX |
DirectPlay4.SetPlayerData メソッドは、アプリケーションに固有のデータ ブロックを、プレーヤー ID に関連付ける。
object.SetPlayerData(playerId As Long, _ data As String, _ flags As CONST_DPSETFLAGS)
失敗すればエラーが発生し、Err.Number に次のいずれかの値が設定される。
DPERR_ACCESSDENIED |
DPERR_CONNECTIONLOST |
DPERR_INVALIDFLAGS |
DPERR_INVALIDOBJECT |
DPERR_INVALIDPARAMS |
DPERR_INVALIDPLAYER |
このメソッドは、オーバーヘッドが生じるため、リアルタイム情報の更新 (位置の更新など) のためには使用すべきではない。そのような場合は、DirectPlay4.Send の方が格段に効率的である。めったに変更されず、時間が重要ではない共有状態情報 (プレーヤーの名前など) には、SetPlayerData の方が適している。
DirectPlay は、ローカルとリモートの 2 種類のグループ データを維持できる。ローカル データは、ローカル コンピュータ上のアプリケーションだけで利用できる。リモート データは、セッション内のほかのすべてのアプリケーションに伝承される。リモート プレーヤーに対してプレーヤー データを設定しようとすると、DPERR_ACCESSDENIED が返される。セッション記述に DPSESSION_NODATAMESSAGES が設定されている場合を除き、変更を通知するために、すべてのプレーヤー (送信したプレーヤーを含む) に DPSYS_SETPLAYERORGROUPDATA システム メッセージが送信される。リソースへのポインタを、ローカル データに安全に保存しておくことができる。このローカル データ ブロックは、グループが破棄されるときに (DPSYS_DESTROYPLAYERORGROUP システム メッセージ内で) 利用できる。そのため、アプリケーションでは、これらのリソースを解放することができる。