GS2-Guild SDK for Game Engine API リファレンス
モデル
EzGuildModel
ギルドモデルマスター
ギルドモデルとは、ギルドの加入可能最大人数の設定や、ギルド内での役職ごとの権限設定を持つエンティティです。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
name | string | ✓ | ~ 128文字 | ギルドモデル名 | |
metadata | string | ~ 2048文字 | メタデータ | ||
defaultMaximumMemberCount | int | ✓ | 1 ~ 2147483646 | ギルド作成時に適用されるギルドメンバーの最大数 | |
maximumMemberCount | int | ✓ | 1 ~ 2147483646 | ギルドメンバーの引き上げを行える最大値 | |
roles | List<EzRoleModel> | ✓ | 1 ~ 10 items | ギルド内の各役職ごとの権限設定リスト | |
rejoinCoolTimeMinutes | int | ✓ | 0 | ~ 2147483646 | ギルド離脱後に再度参加できるまでのクールタイム(分) |
EzGuild
ギルド
初めて GetGuildGuild を呼び出した時に作成され、その時間から放置時間のカウントが始まります。
放置時間のカウントは報酬を受け取るとリセットされます。
GS2-Schedule のイベントが関連づけられている場合、イベントの開催前には Guild にアクセスできず、ギルドを作成することもできません。
イベントが関連づけられている場合、ギルド はイベントの繰り返し回数を保持します。
現在のイベントIDとギルド作成時のイベントIDが一致しない場合、現在のイベントの繰り返し回数とギルドが保持する繰り返し回数が一致しない場合、またはイベントの開始時刻より前にギルドが作成されている場合、待機時間 はリセットされます。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
name | string | ✓ | UUID | ~ 36文字 | ギルド名 |
displayName | string | ✓ | ~ 64文字 | 表示名 | |
attribute1 | int | ~ 2147483645 | 属性1 | ||
attribute2 | int | ~ 2147483645 | 属性2 | ||
attribute3 | int | ~ 2147483645 | 属性3 | ||
attribute4 | int | ~ 2147483645 | 属性4 | ||
attribute5 | int | ~ 2147483645 | 属性5 | ||
joinPolicy | enum { “anybody”, “approval” } | ✓ | ~ 128文字 | 参加方針 | |
customRoles | List<EzRoleModel> | ~ 10 items | ギルドが個別に定義した各役職ごとの権限設定リスト | ||
members | List<EzMember> | ~ 10 items | ギルドメンバーリスト |
joinPolicy に指定する列挙型の定義
定義 | 説明 |
---|---|
anybody | 自由参加 |
approval | 承認制 |
EzReceiveMemberRequest
受信したメンバーリクエスト
メンバーの登録申請を受け付けた状態であることを表すエンティティです。
該当ユーザーがほかのユーザーから受信したメンバーリクエストです。
該当ユーザーが承認を行うとメンバーリクエストは削除され、メンバーリストに登録されます。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | 送信元 | |
targetGuildName | string | ✓ | ~ 128文字 | 送信先 |
EzSendMemberRequest
送信したメンバーリクエスト
メンバーの登録を申請中である状態を表すエンティティです。
該当ユーザーがほかのユーザーに対して送信したメンバーリクエストです。
送信先のユーザーが承認を行うとメンバーリクエストは削除され、メンバーリストに登録されます。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | 送信元 | |
targetGuildName | string | ✓ | ~ 128文字 | ギルド名 |
EzJoinedGuild
参加中のギルド
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
guildName | string | ✓ | ~ 128文字 | ギルド名 | |
userId | string | ✓ | ~ 128文字 | ユーザーID | |
createdAt | long | ✓ | 現在時刻 | 作成日時 (UNIX時間 単位:ミリ秒) |
EzIgnoreUser
参加を拒否するユーザー
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID |
EzLastGuildMasterActivity
最後にギルドマスターがアクティビティを行った日時
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID | |
updatedAt | long | ✓ | 現在時刻 | 最終更新日時 (UNIX時間 単位:ミリ秒) |
EzMember
メンバー
ギルドメンバーの一覧を管理するエンティティ
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
userId | string | ✓ | ~ 128文字 | ユーザーID | |
roleName | string | ✓ | ~ 128文字 | ロールモデル名 | |
joinedAt | long | ✓ | 現在時刻 | 参加日時 (UNIX時間 単位:ミリ秒) |
EzRoleModel
ロールモデル
ロールモデルはギルド内での役割を定義し、その役割ごと実行できる処理に関する権限を設定します。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
name | string | ✓ | ~ 128文字 | ロールモデル名 | |
metadata | string | ~ 2048文字 | メタデータ | ||
policyDocument | string | ✓ | ~ 10240文字 | ロールに適用する権限のポリシードキュメント |
メソッド
getGuildModel
ギルドモデル情報を取得
ギルドモデル名
を指定してランクキャップの情報やランクアップ閾値の情報を取得します。
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 |
Result
型 | 説明 | |
---|---|---|
item | EzGuildModel | ギルドモデル |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).GuildModel(
guildModelName: "guild-0001"
);
var item = await domain.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).GuildModel(
guildModelName: "guild-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->GuildModel(
"guild-0001" // guildModelName
);
const auto Future = Domain->Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
値の変更イベントハンドリング
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).GuildModel(
guildModelName: "guild-0001"
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).GuildModel(
guildModelName: "guild-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->GuildModel(
"guild-0001" // guildModelName
);
// イベントハンドリングを開始
const auto CallbackId = Domain->Subscribe(
[](TSharedPtr<Gs2::Guild::Model::FGuildModel> value) {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
Domain->Unsubscribe(CallbackId);
Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
listGuildModels
ギルドモデル情報の一覧を取得
ランクキャップの情報やランクアップ閾値の情報を取得します。
次のランクアップまでに必要な獲得ギルド量などをゲーム内で表示したい場合はこのモデルデータを使ってください。
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 |
Result
型 | 説明 | |
---|---|---|
items | List<EzGuildModel> | ギルドモデルリスト |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
);
var items = await domain.GuildModelsAsync(
).ToListAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
);
var it = domain.GuildModels(
);
List<EzGuildModel> items = new List<EzGuildModel>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
);
const auto It = Domain->GuildModels(
);
TArray<Gs2::UE5::Guild::Model::FEzGuildModelPtr> Result;
for (auto Item : *It)
{
if (Item.IsError())
{
return false;
}
Result.Add(Item.Current());
}
値の変更イベントハンドリング
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
);
// イベントハンドリングを開始
var callbackId = domain.SubscribeGuildModels(
() => {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
domain.UnsubscribeGuildModels(callbackId);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
);
var it = domain.GuildModels(
);
List<EzGuildModel> items = new List<EzGuildModel>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
);
// イベントハンドリングを開始
const auto CallbackId = Domain->SubscribeGuildModels(
[]() {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
Domain->UnsubscribeGuildModels(CallbackId);
Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
assume
ギルドユーザーとして振る舞うためのアクセストークンを取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | |
guildName | string | ✓ | UUID | ~ 36文字 | ギルド名 |
Result
型 | 説明 | |
---|---|---|
token | string | アクセストークン |
userId | string | ユーザーID |
expire | long | 有効期限 (UNIX時間 単位:ミリ秒) |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var result = await domain.AssumeAsync(
guildModelName: "guild-model-0001",
guildName: "guild-0001"
);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var future = domain.AssumeFuture(
guildModelName: "guild-model-0001",
guildName: "guild-0001"
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
const auto Future = Domain->Assume(
"guild-model-0001", // guildModelName
"guild-0001" // guildName
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
const auto Result = Future->GetTask().Result();
createGuild
ギルドを作成
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | |
displayName | string | ✓ | ~ 64文字 | 表示名 | |
attribute1 | int | ~ 2147483645 | 属性1 | ||
attribute2 | int | ~ 2147483645 | 属性2 | ||
attribute3 | int | ~ 2147483645 | 属性3 | ||
attribute4 | int | ~ 2147483645 | 属性4 | ||
attribute5 | int | ~ 2147483645 | 属性5 | ||
joinPolicy | enum { “anybody”, “approval” } | ✓ | ~ 128文字 | 参加方針 | |
customRoles | List<EzRoleModel> | ~ 10 items | ギルドが個別に定義した各役職ごとの権限設定リスト | ||
guildMemberDefaultRole | string | ~ 128文字 | ギルドメンバーが初期状態に持つカスタムロール |
joinPolicy に指定する列挙型の定義
定義 | 説明 |
---|---|
anybody | 自由参加 |
approval | 承認制 |
Result
型 | 説明 | |
---|---|---|
item | EzGuild | 作成したギルド |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var result = await domain.CreateGuildAsync(
guildModelName: "guild-model-0001",
displayName: "My Guild",
joinPolicy: "anybody",
attribute1: 1,
attribute2: null,
attribute3: null,
attribute4: null,
attribute5: null,
customRoles: null,
guildMemberDefaultRole: null
);
var item = await result.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var future = domain.CreateGuildFuture(
guildModelName: "guild-model-0001",
displayName: "My Guild",
joinPolicy: "anybody",
attribute1: 1,
attribute2: null,
attribute3: null,
attribute4: null,
attribute5: null,
customRoles: null,
guildMemberDefaultRole: null
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
var future2 = future.Result.Model();
yield return future2;
if (future2.Error != null)
{
onError.Invoke(future2.Error, null);
yield break;
}
var result = future2.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
const auto Future = Domain->CreateGuild(
"guild-model-0001", // guildModelName
"My Guild", // displayName
"anybody", // joinPolicy
1 // attribute1
// attribute2
// attribute3
// attribute4
// attribute5
// customRoles
// guildMemberDefaultRole
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
// obtain changed values / result values
const auto Future2 = Future->GetTask().Result()->Model();
Future2->StartSynchronousTask();
if (Future2->GetTask().IsError())
{
return Future2->GetTask().Error();
}
const auto Result = Future2->GetTask().Result();
deleteGuild
ギルドを解散
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 |
Result
型 | 説明 | |
---|---|---|
item | EzGuild | 削除したギルド |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
);
var result = await domain.DeleteGuildAsync(
accessToken:
);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
);
var future = domain.DeleteGuildFuture(
accessToken:
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
"user-0001" // userId
);
const auto Future = Domain->DeleteGuild(
// accessToken
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
const auto Result = Future->GetTask().Result();
getGuild
ギルドを取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | |
guildName | string | ✓ | UUID | ~ 36文字 | ギルド名 |
Result
型 | 説明 | |
---|---|---|
item | EzGuild | ギルド |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
);
var item = await domain.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
"user-0001" // userId
);
const auto Future = Domain->Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
値の変更イベントハンドリング
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
"user-0001" // userId
);
// イベントハンドリングを開始
const auto CallbackId = Domain->Subscribe(
[](TSharedPtr<Gs2::Guild::Model::FGuild> value) {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
Domain->Unsubscribe(CallbackId);
Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
listGuilds
ギルドを検索
検索結果には過去24時間以内に更新されたギルドのみが含まれます。
もし、検索対象に含めたい場合は変更点がなかったとしても、Update 関数を使用してギルドを更新してください。
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | |
displayName | string | ~ 64文字 | 検索するギルド表示名 | ||
attributes1 | List<int> | ~ 10 items | 検索する属性1 | ||
attributes2 | List<int> | ~ 10 items | 検索する属性2 | ||
attributes3 | List<int> | ~ 10 items | 検索する属性3 | ||
attributes4 | List<int> | ~ 10 items | 検索する属性4 | ||
attributes5 | List<int> | ~ 10 items | 検索する属性5 | ||
joinPolicies | List<string> | ~ 10 items | 検索するギルド参加方法リスト | ||
includeFullMembersGuild | bool | false | ギルドメンバンが満員のギルドを検索結果に含めるか | ||
pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | ||
limit | int | ✓ | 30 | 1 ~ 1000 | データの取得件数 |
Result
型 | 説明 | |
---|---|---|
items | List<EzGuild> | ギルドのリスト |
nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var items = await domain.SearchGuildsAsync(
guildModelName: "guild-model-0001"
).ToListAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var it = domain.SearchGuilds(
guildModelName: "guild-model-0001"
);
List<EzGuild> items = new List<EzGuild>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
const auto It = Domain->SearchGuilds(
"guild-model-0001" // guildModelName
);
TArray<Gs2::UE5::Guild::Model::FEzGuildPtr> Result;
for (auto Item : *It)
{
if (Item.IsError())
{
return false;
}
Result.Add(Item.Current());
}
updateGuild
ギルドを更新
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 | |
displayName | string | ✓ | ~ 64文字 | 表示名 | |
attribute1 | int | ~ 2147483645 | 属性1 | ||
attribute2 | int | ~ 2147483645 | 属性2 | ||
attribute3 | int | ~ 2147483645 | 属性3 | ||
attribute4 | int | ~ 2147483645 | 属性4 | ||
attribute5 | int | ~ 2147483645 | 属性5 | ||
joinPolicy | enum { “anybody”, “approval” } | ✓ | ~ 128文字 | 参加方針 | |
customRoles | List<EzRoleModel> | ~ 10 items | ギルドが個別に定義した各役職ごとの権限設定リスト | ||
guildMemberDefaultRole | string | ~ 128文字 | ギルドメンバーが初期状態に持つカスタムロール |
joinPolicy に指定する列挙型の定義
定義 | 説明 |
---|---|
anybody | 自由参加 |
approval | 承認制 |
Result
型 | 説明 | |
---|---|---|
item | EzGuild | 更新したギルド |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
);
var result = await domain.UpdateGuildAsync(
accessToken: ,
displayName: "My Guild",
joinPolicy: "anybody",
attribute1: 1,
attribute2: null,
attribute3: null,
attribute4: null,
attribute5: null,
customRoles: null,
guildMemberDefaultRole: null
);
var item = await result.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
);
var future = domain.UpdateGuildFuture(
accessToken: ,
displayName: "My Guild",
joinPolicy: "anybody",
attribute1: 1,
attribute2: null,
attribute3: null,
attribute4: null,
attribute5: null,
customRoles: null,
guildMemberDefaultRole: null
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
var future2 = future.Result.Model();
yield return future2;
if (future2.Error != null)
{
onError.Invoke(future2.Error, null);
yield break;
}
var result = future2.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
"user-0001" // userId
);
const auto Future = Domain->UpdateGuild(
, // accessToken
"My Guild", // displayName
"anybody", // joinPolicy
1 // attribute1
// attribute2
// attribute3
// attribute4
// attribute5
// customRoles
// guildMemberDefaultRole
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
// obtain changed values / result values
const auto Future2 = Future->GetTask().Result()->Model();
Future2->StartSynchronousTask();
if (Future2->GetTask().IsError())
{
return Future2->GetTask().Error();
}
const auto Result = Future2->GetTask().Result();
acceptRequest
受信したリクエストを承認
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
fromUserId | string | ✓ | ~ 128文字 | ユーザーID |
Result
型 | 説明 | |
---|---|---|
item | EzReceiveMemberRequest | 承諾したメンバーリクエスト |
guild | EzGuild | ギルド |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-0001",
guildName: "$guild1.name",
userId: "user-0001"
).ReceiveMemberRequest(
fromUserId: null
);
var result = await domain.AcceptRequestAsync(
accessToken:
);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-0001",
guildName: "$guild1.name",
userId: "user-0001"
).ReceiveMemberRequest(
fromUserId: null
);
var future = domain.AcceptRequestFuture(
accessToken:
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-0001", // guildModelName
"$guild1.name", // guildName
"user-0001" // userId
)->ReceiveMemberRequest(
nullptr // fromUserId
);
const auto Future = Domain->AcceptRequest(
// accessToken
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
const auto Result = Future->GetTask().Result();
getReceiveRequest
受信したリクエストを取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
fromUserId | string | ✓ | ~ 128文字 | ユーザーID |
Result
型 | 説明 | |
---|---|---|
item | EzReceiveMemberRequest | メンバーリクエスト |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-0001",
guildName: "$guild1.name",
userId: "user-0001"
).ReceiveMemberRequest(
fromUserId: null
);
var item = await domain.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-0001",
guildName: "$guild1.name",
userId: "user-0001"
).ReceiveMemberRequest(
fromUserId: null
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-0001", // guildModelName
"$guild1.name", // guildName
"user-0001" // userId
)->ReceiveMemberRequest(
nullptr // fromUserId
);
const auto Future = Domain->Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
値の変更イベントハンドリング
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-0001",
guildName: "$guild1.name",
userId: "user-0001"
).ReceiveMemberRequest(
fromUserId: null
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-0001",
guildName: "$guild1.name",
userId: "user-0001"
).ReceiveMemberRequest(
fromUserId: null
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-0001", // guildModelName
"$guild1.name", // guildName
"user-0001" // userId
)->ReceiveMemberRequest(
nullptr // fromUserId
);
// イベントハンドリングを開始
const auto CallbackId = Domain->Subscribe(
[](TSharedPtr<Gs2::Guild::Model::FReceiveMemberRequest> value) {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
Domain->Unsubscribe(CallbackId);
Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
listReceiveRequests
受信したリクエストの一覧を取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | ||
limit | int | ✓ | 30 | 1 ~ 1000 | データの取得件数 |
Result
型 | 説明 | |
---|---|---|
items | List<EzReceiveMemberRequest> | メンバーリクエストのリスト |
nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-0001",
guildName: "$guild1.name",
userId: "user-0001"
);
var items = await domain.ReceiveRequestsAsync(
).ToListAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-0001",
guildName: "$guild1.name",
userId: "user-0001"
);
var it = domain.ReceiveRequests(
);
List<EzReceiveMemberRequest> items = new List<EzReceiveMemberRequest>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-0001", // guildModelName
"$guild1.name", // guildName
"user-0001" // userId
);
const auto It = Domain->ReceiveRequests(
);
TArray<Gs2::UE5::Guild::Model::FEzReceiveMemberRequestPtr> Result;
for (auto Item : *It)
{
if (Item.IsError())
{
return false;
}
Result.Add(Item.Current());
}
rejectRequest
受信したリクエストを否認
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
fromUserId | string | ✓ | ~ 128文字 | ユーザーID |
Result
型 | 説明 | |
---|---|---|
item | EzReceiveMemberRequest | 拒否したメンバーリクエスト |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: null,
guildName: "guild-0001",
userId: null
).ReceiveMemberRequest(
fromUserId: "user-0002"
);
var result = await domain.RejectRequestAsync(
accessToken:
);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: null,
guildName: "guild-0001",
userId: null
).ReceiveMemberRequest(
fromUserId: "user-0002"
);
var future = domain.RejectRequestFuture(
accessToken:
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
nullptr, // guildModelName
"guild-0001", // guildName
nullptr // userId
)->ReceiveMemberRequest(
"user-0002" // fromUserId
);
const auto Future = Domain->RejectRequest(
// accessToken
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
const auto Result = Future->GetTask().Result();
cancelRequest
送信したリクエストを取り下げ
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
targetGuildName | string | ✓ | ~ 128文字 | ギルド名 |
Result
型 | 説明 | |
---|---|---|
item | EzSendMemberRequest | 削除したメンバーリクエスト |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var result = await domain.CancelRequestAsync(
guildModelName: "guild-0002",
targetGuildName: "guild-0002"
);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var future = domain.CancelRequestFuture(
guildModelName: "guild-0002",
targetGuildName: "guild-0002"
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
const auto Future = Domain->CancelRequest(
"guild-0002", // guildModelName
"guild-0002" // targetGuildName
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
const auto Result = Future->GetTask().Result();
getSendRequest
送信したリクエストを取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
targetGuildName | string | ✓ | ~ 128文字 | ギルド名 |
Result
型 | 説明 | |
---|---|---|
item | EzSendMemberRequest | メンバーリクエスト |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).SendMemberRequest(
guildModelName: "guild-0002",
guildName: null
);
var item = await domain.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).SendMemberRequest(
guildModelName: "guild-0002",
guildName: null
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
)->SendMemberRequest(
"guild-0002", // guildModelName
nullptr // guildName
);
const auto Future = Domain->Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
値の変更イベントハンドリング
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).SendMemberRequest(
guildModelName: "guild-0002",
guildName: null
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).SendMemberRequest(
guildModelName: "guild-0002",
guildName: null
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
)->SendMemberRequest(
"guild-0002", // guildModelName
nullptr // guildName
);
// イベントハンドリングを開始
const auto CallbackId = Domain->Subscribe(
[](TSharedPtr<Gs2::Guild::Model::FSendMemberRequest> value) {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
Domain->Unsubscribe(CallbackId);
Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
listSendRequests
送信したリクエストの一覧を取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | ||
limit | int | ✓ | 30 | 1 ~ 1000 | データの取得件数 |
Result
型 | 説明 | |
---|---|---|
items | List<EzSendMemberRequest> | メンバーリクエストのリスト |
nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var items = await domain.SendRequestsAsync(
guildModelName: "guild-0002"
).ToListAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var it = domain.SendRequests(
guildModelName: "guild-0002"
);
List<EzSendMemberRequest> items = new List<EzSendMemberRequest>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
const auto It = Domain->SendRequests(
"guild-0002" // guildModelName
);
TArray<Gs2::UE5::Guild::Model::FEzSendMemberRequestPtr> Result;
for (auto Item : *It)
{
if (Item.IsError())
{
return false;
}
Result.Add(Item.Current());
}
sendRequest
リクエストを送信
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
targetGuildName | string | ✓ | ~ 128文字 | ギルド名 |
Result
型 | 説明 | |
---|---|---|
item | EzGuild | 参加したギルド |
sendMemberRequest | EzSendMemberRequest | 送信したメンバーリクエスト |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var result = await domain.SendRequestAsync(
guildModelName: "guild-0002",
targetGuildName: "guild-0002"
);
var item = await result.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var future = domain.SendRequestFuture(
guildModelName: "guild-0002",
targetGuildName: "guild-0002"
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
var future2 = future.Result.Model();
yield return future2;
if (future2.Error != null)
{
onError.Invoke(future2.Error, null);
yield break;
}
var result = future2.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
const auto Future = Domain->SendRequest(
"guild-0002", // guildModelName
"guild-0002" // targetGuildName
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
// obtain changed values / result values
const auto Future2 = Future->GetTask().Result()->Model();
Future2->StartSynchronousTask();
if (Future2->GetTask().IsError())
{
return Future2->GetTask().Error();
}
const auto Result = Future2->GetTask().Result();
getJoinedGuild
参加しているギルドを取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
guildName | string | ✓ | UUID | ~ 36文字 | ギルド名 |
Result
型 | 説明 | |
---|---|---|
item | EzJoinedGuild | メンバーリクエスト |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).JoinedGuild(
guildModelName: "guild-model-0001",
guildName: "guild-0001"
);
var item = await domain.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).JoinedGuild(
guildModelName: "guild-model-0001",
guildName: "guild-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
)->JoinedGuild(
"guild-model-0001", // guildModelName
"guild-0001" // guildName
);
const auto Future = Domain->Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
値の変更イベントハンドリング
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).JoinedGuild(
guildModelName: "guild-model-0001",
guildName: "guild-0001"
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).JoinedGuild(
guildModelName: "guild-model-0001",
guildName: "guild-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
)->JoinedGuild(
"guild-model-0001", // guildModelName
"guild-0001" // guildName
);
// イベントハンドリングを開始
const auto CallbackId = Domain->Subscribe(
[](TSharedPtr<Gs2::Guild::Model::FJoinedGuild> value) {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
Domain->Unsubscribe(CallbackId);
Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
listJoinedGuilds
参加しているギルドの一覧を取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | |
guildModelName | string | ~ 128文字 | ギルドモデル名 | ||
pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | ||
limit | int | ✓ | 30 | 1 ~ 1000 | データの取得件数 |
Result
型 | 説明 | |
---|---|---|
items | List<EzJoinedGuild> | メンバーリクエストのリスト |
nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var items = await domain.JoinedGuildsAsync(
guildModelName: "guild-model-0001"
).ToListAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var it = domain.JoinedGuilds(
guildModelName: "guild-model-0001"
);
List<EzJoinedGuild> items = new List<EzJoinedGuild>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
const auto It = Domain->JoinedGuilds(
"guild-model-0001" // guildModelName
);
TArray<Gs2::UE5::Guild::Model::FEzJoinedGuildPtr> Result;
for (auto Item : *It)
{
if (Item.IsError())
{
return false;
}
Result.Add(Item.Current());
}
値の変更イベントハンドリング
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
// イベントハンドリングを開始
var callbackId = domain.SubscribeJoinedGuilds(
() => {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
domain.UnsubscribeJoinedGuilds(callbackId);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var it = domain.JoinedGuilds(
guildModelName: "guild-model-0001"
);
List<EzJoinedGuild> items = new List<EzJoinedGuild>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
// イベントハンドリングを開始
const auto CallbackId = Domain->SubscribeJoinedGuilds(
[]() {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
Domain->UnsubscribeJoinedGuilds(CallbackId);
Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
addIgnoreUser
参加拒否しているユーザーを追加
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 | |
userId | string | ✓ | ~ 128文字 | ユーザーID |
Result
型 | 説明 | |
---|---|---|
item | EzIgnoreUser | 参加を拒否するユーザーID |
guild | EzGuild | ギルド |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
);
var result = await domain.AddIgnoreUserAsync(
accessToken: ,
userId: "user-0001"
);
var item = await result.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
);
var future = domain.AddIgnoreUserFuture(
accessToken: ,
userId: "user-0001"
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
var future2 = future.Result.Model();
yield return future2;
if (future2.Error != null)
{
onError.Invoke(future2.Error, null);
yield break;
}
var result = future2.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
"user-0001" // userId
);
const auto Future = Domain->AddIgnoreUser(
, // accessToken
"user-0001" // userId
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
// obtain changed values / result values
const auto Future2 = Future->GetTask().Result()->Model();
Future2->StartSynchronousTask();
if (Future2->GetTask().IsError())
{
return Future2->GetTask().Error();
}
const auto Result = Future2->GetTask().Result();
deleteIgnoreUser
参加拒否しているユーザーを削除
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 | |
userId | string | ✓ | ~ 128文字 | ユーザーID |
Result
型 | 説明 | |
---|---|---|
item | EzIgnoreUser | 参加を拒否するユーザーID |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
).IgnoreUser(
);
var result = await domain.DeleteIgnoreUserAsync(
accessToken: ,
userId: "user-0001"
);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
).IgnoreUser(
);
var future = domain.DeleteIgnoreUserFuture(
accessToken: ,
userId: "user-0001"
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
"user-0001" // userId
)->IgnoreUser(
);
const auto Future = Domain->DeleteIgnoreUser(
, // accessToken
"user-0001" // userId
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
const auto Result = Future->GetTask().Result();
getIgnoreUser
参加拒否しているユーザーを取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 | |
userId | string | ✓ | ~ 128文字 | ユーザーID |
Result
型 | 説明 | |
---|---|---|
item | EzIgnoreUser | 参加を拒否するユーザーID |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
).IgnoreUser(
);
var item = await domain.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
).IgnoreUser(
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
"user-0001" // userId
)->IgnoreUser(
);
const auto Future = Domain->Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
値の変更イベントハンドリング
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
).IgnoreUser(
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: "user-0001"
).IgnoreUser(
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
"user-0001" // userId
)->IgnoreUser(
);
// イベントハンドリングを開始
const auto CallbackId = Domain->Subscribe(
[](TSharedPtr<Gs2::Guild::Model::FIgnoreUser> value) {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
Domain->Unsubscribe(CallbackId);
Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
listIgnoreUsers
参加拒否しているユーザーの一覧を取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 | |
pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | ||
limit | int | ✓ | 30 | 1 ~ 1000 | データの取得件数 |
Result
型 | 説明 | |
---|---|---|
items | List<EzIgnoreUser> | 参加を拒否するユーザーIDリスト |
nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: null
);
var items = await domain.IgnoreUsersAsync(
).ToListAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: null
);
var it = domain.IgnoreUsers(
);
List<EzIgnoreUser> items = new List<EzIgnoreUser>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
nullptr // userId
);
const auto It = Domain->IgnoreUsers(
);
TArray<Gs2::UE5::Guild::Model::FEzIgnoreUserPtr> Result;
for (auto Item : *It)
{
if (Item.IsError())
{
return false;
}
Result.Add(Item.Current());
}
値の変更イベントハンドリング
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: null
);
// イベントハンドリングを開始
var callbackId = domain.SubscribeIgnoreUsers(
() => {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
domain.UnsubscribeIgnoreUsers(callbackId);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: null
);
var it = domain.IgnoreUsers(
);
List<EzIgnoreUser> items = new List<EzIgnoreUser>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
}
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
nullptr // userId
);
// イベントハンドリングを開始
const auto CallbackId = Domain->SubscribeIgnoreUsers(
[]() {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
Domain->UnsubscribeIgnoreUsers(CallbackId);
Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
getLastGuildMasterActivity
最後にギルドマスターがアクティビティを行った日時を取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 |
Result
型 | 説明 | |
---|---|---|
item | EzLastGuildMasterActivity | 参加を拒否するユーザーID |
guild | EzGuild | ギルド |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: null
).LastGuildMasterActivity(
);
var item = await domain.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: null
).LastGuildMasterActivity(
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
nullptr // userId
)->LastGuildMasterActivity(
);
const auto Future = Domain->Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
値の変更イベントハンドリング
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: null
).LastGuildMasterActivity(
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId);
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: null
).LastGuildMasterActivity(
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
nullptr // userId
)->LastGuildMasterActivity(
);
// イベントハンドリングを開始
const auto CallbackId = Domain->Subscribe(
[](TSharedPtr<Gs2::Guild::Model::FLastGuildMasterActivity> value) {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
Domain->Unsubscribe(CallbackId);
Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
promoteSeniorMember
ギルドマスターが一定期間ログインしていない場合、最も古参のギルドメンバーをギルドマスターに昇格
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 | |
guildModelName | string | ✓ | ~ 128文字 | ギルドモデル名 | |
accessToken | string | ✓ | ~ 128文字 | ギルド名 |
Result
型 | 説明 | |
---|---|---|
item | EzLastGuildMasterActivity | 参加を拒否するユーザーID |
guild | EzGuild | ギルド |
実装例
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: null
);
var result = await domain.PromoteSeniorMemberAsync(
accessToken:
);
var item = await result.ModelAsync();
var domain = gs2.Guild.Namespace(
namespaceName: "namespace-0001"
).Guild(
guildModelName: "guild-model-0001",
guildName: "guild-0001",
userId: null
);
var future = domain.PromoteSeniorMemberFuture(
accessToken:
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
var future2 = future.Result.Model();
yield return future2;
if (future2.Error != null)
{
onError.Invoke(future2.Error, null);
yield break;
}
var result = future2.Result;
const auto Domain = Gs2->Guild->Namespace(
"namespace-0001" // namespaceName
)->Guild(
"guild-model-0001", // guildModelName
"guild-0001", // guildName
nullptr // userId
);
const auto Future = Domain->PromoteSeniorMember(
// accessToken
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
// obtain changed values / result values
const auto Future2 = Future->GetTask().Result()->Model();
Future2->StartSynchronousTask();
if (Future2->GetTask().IsError())
{
return Future2->GetTask().Error();
}
const auto Result = Future2->GetTask().Result();
イベントハンドラ
OnReceiveRequestNotification
メンバーリクエストを受信したときに使用する通知
名前 | 型 | 説明 |
---|---|---|
namespaceName | string | ネームスペース名 |
guildModelName | string | ギルドモデル名 |
guildName | string | ギルド名 |
fromUserId | string | ユーザーID |
実装例
gs2.Guild.OnReceiveRequestNotification += notification =>
{
var namespaceName = notification.NamespaceName;
var guildModelName = notification.GuildModelName;
var guildName = notification.GuildName;
var fromUserId = notification.FromUserId;
};
gs2.Guild.OnReceiveRequestNotification += notification =>
{
var namespaceName = notification.NamespaceName;
var guildModelName = notification.GuildModelName;
var guildName = notification.GuildName;
var fromUserId = notification.FromUserId;
};
Gs2->Guild->OnReceiveRequestNotification().AddLambda([](const auto Notification)
{
const auto NamespaceName = Notification->NamespaceNameValue;
const auto GuildModelName = Notification->GuildModelNameValue;
const auto GuildName = Notification->GuildNameValue;
const auto FromUserId = Notification->FromUserIdValue;
});
OnRemoveRequestNotification
メンバーリクエストが削除されたときに使用する通知
名前 | 型 | 説明 |
---|---|---|
namespaceName | string | ネームスペース名 |
guildModelName | string | ギルドモデル名 |
guildName | string | ギルド名 |
fromUserId | string | ユーザーID |
実装例
gs2.Guild.OnRemoveRequestNotification += notification =>
{
var namespaceName = notification.NamespaceName;
var guildModelName = notification.GuildModelName;
var guildName = notification.GuildName;
var fromUserId = notification.FromUserId;
};
gs2.Guild.OnRemoveRequestNotification += notification =>
{
var namespaceName = notification.NamespaceName;
var guildModelName = notification.GuildModelName;
var guildName = notification.GuildName;
var fromUserId = notification.FromUserId;
};
Gs2->Guild->OnRemoveRequestNotification().AddLambda([](const auto Notification)
{
const auto NamespaceName = Notification->NamespaceNameValue;
const auto GuildModelName = Notification->GuildModelNameValue;
const auto GuildName = Notification->GuildNameValue;
const auto FromUserId = Notification->FromUserIdValue;
});
OnJoinNotification
ギルドメンバーが追加されたときに発行される通知
名前 | 型 | 説明 |
---|---|---|
namespaceName | string | ネームスペース名 |
guildModelName | string | ギルドモデル名 |
guildName | string | ギルド名 |
joinedUserId | string | ユーザーID |
実装例
gs2.Guild.OnJoinNotification += notification =>
{
var namespaceName = notification.NamespaceName;
var guildModelName = notification.GuildModelName;
var guildName = notification.GuildName;
var joinedUserId = notification.JoinedUserId;
};
gs2.Guild.OnJoinNotification += notification =>
{
var namespaceName = notification.NamespaceName;
var guildModelName = notification.GuildModelName;
var guildName = notification.GuildName;
var joinedUserId = notification.JoinedUserId;
};
Gs2->Guild->OnJoinNotification().AddLambda([](const auto Notification)
{
const auto NamespaceName = Notification->NamespaceNameValue;
const auto GuildModelName = Notification->GuildModelNameValue;
const auto GuildName = Notification->GuildNameValue;
const auto JoinedUserId = Notification->JoinedUserIdValue;
});
OnLeaveNotification
ギルドメンバーが除籍されたときに発行される通知
名前 | 型 | 説明 |
---|---|---|
namespaceName | string | ネームスペース名 |
guildModelName | string | ギルドモデル名 |
guildName | string | ギルド名 |
leavedUserId | string | ユーザーID |
実装例
gs2.Guild.OnLeaveNotification += notification =>
{
var namespaceName = notification.NamespaceName;
var guildModelName = notification.GuildModelName;
var guildName = notification.GuildName;
var leavedUserId = notification.LeavedUserId;
};
gs2.Guild.OnLeaveNotification += notification =>
{
var namespaceName = notification.NamespaceName;
var guildModelName = notification.GuildModelName;
var guildName = notification.GuildName;
var leavedUserId = notification.LeavedUserId;
};
Gs2->Guild->OnLeaveNotification().AddLambda([](const auto Notification)
{
const auto NamespaceName = Notification->NamespaceNameValue;
const auto GuildModelName = Notification->GuildModelNameValue;
const auto GuildName = Notification->GuildNameValue;
const auto LeavedUserId = Notification->LeavedUserIdValue;
});
OnChangeMemberNotification
メンバーの情報が更新されたときに発行される通知
名前 | 型 | 説明 |
---|---|---|
namespaceName | string | ネームスペース名 |
guildModelName | string | ギルドモデル名 |
guildName | string | ギルド名 |
changedUserId | string | ユーザーID |
実装例
gs2.Guild.OnChangeMemberNotification += notification =>
{
var namespaceName = notification.NamespaceName;
var guildModelName = notification.GuildModelName;
var guildName = notification.GuildName;
var changedUserId = notification.ChangedUserId;
};
gs2.Guild.OnChangeMemberNotification += notification =>
{
var namespaceName = notification.NamespaceName;
var guildModelName = notification.GuildModelName;
var guildName = notification.GuildName;
var changedUserId = notification.ChangedUserId;
};
Gs2->Guild->OnChangeMemberNotification().AddLambda([](const auto Notification)
{
const auto NamespaceName = Notification->NamespaceNameValue;
const auto GuildModelName = Notification->GuildModelNameValue;
const auto GuildName = Notification->GuildNameValue;
const auto ChangedUserId = Notification->ChangedUserIdValue;
});