DWC_CheckProfanityAsync

構文

#include <dwc.h>
BOOL DWC_CheckProfanityAsync(const u16 **words,
                             int wordsnum,
                             const char *reserved,
                             int timeout,
                             char *result,
                             int *badwordsnum);

引数

words チェックする文字列配列へのポインタ
  • 文字コードはUnicode(リトルエンディアンUTF16)を使用してください。
    それ以外の文字コードを使用している場合は、Unicodeに変換してください。
  • スクリーンネームにUnicode及びIPLフォントにない独自の文字を使用している場合は、スペースに置き換えてください。
  • 終端は"\0\0"(u16で0x0000)である必要があります。
  • 配列内の全ての文字列の合計が501文字まで(各文字列の終端を含む)にする必要があります。
  • 配列内の文字列にNULLを指定することはできません。
  • 文字列配列および配列内の文字列は関数呼び出し後に破棄しても問題ありません。
wordsnum wordsで指定した文字列配列の要素数(1〜50)
reserved NULLを指定します
timeout サーバの応答タイムアウト時間(ミリ秒単位)
(0を指定した場合はデフォルト値の10000が使われます)
result チェック結果の格納先へのポインタ
(wordsnumバイトの領域が必要です)
badwordsnum チェック結果に含まれる不正文字列の個数の格納先へのポインタ

返り値

TRUE 不正文字列チェック処理を開始した
FALSE 不正文字列チェック処理の開始に失敗した

説明

不正文字列チェック処理を開始します。不正文字列チェック中に呼び出した場合は必ずFALSEを返します。

不正文字列のチェックは認証サーバと通信することで行い、そのチェック内容はDWC_LoginAsync関数によるものと同じです。

本関数では単体で不正文字列チェックができること以外に、次の制限内で一度に複数の文字列をチェックできます。

本関数を呼び出した後は、不正文字列チェック処理を進行させるためにDWC_CheckProfanityProcess関数を毎ゲームフレーム程度の頻度で呼び出してください。不正文字列チェック処理が成功終了すると、resultにチェック結果が配列として格納されます。


不正文字列のチェック対象はリージョンによって異なります。対象のリージョンは、DWC_CheckProfanityAsync関数では、ROM内登録データのゲームコード(イニシャルコード)の末尾で決まり、DWC_CheckProfanityExAsync関数では、強制的に全リージョンを示す'A'を指定することもできます。
また、構文解析は行わないため、単語単位のチェックしか対応していないことに留意してください。

resultに格納されるチェック結果は、全リージョンを示す'A'のときとそれ以外の場合で異なります。

■全リージョンを示す'A'のとき
リージョン毎に決められたビットフィールドに、wordsに与えたチェック対象の文字列の順に結果が不正であれば1、そうでなければ0が入ります。
結果、resultは以下の値の論理和となります。

DWC_PROF_REGION_JP0x01 日本リージョンで不正
DWC_PROF_REGION_US0x02 北米リージョンで不正
DWC_PROF_REGION_EU0x04 欧州リージョンで不正
DWC_PROF_REGION_KR0x08 韓国リージョンで不正
DWC_PROF_REGION_CN0x10 中国リージョンで不正
DWC_PROF_REGION_ALL0x80 いずれかのリージョンで不正
必ずしも上記リージョン毎の結果の論理和になっていないことに留意してください。ライブラリで未定義のリージョンで不正と判断された場合も含めて結果はセットされます。これは将来的に認証サーバ側でリージョンの追加が行われる可能性を想定しての仕様になります。また引数のbadwordsnumに入る値もこのビットが元になります。

【例】
words[4]={L"goodoword1",L"goodoword2",L"badword",L"goodoword3"}
という文字列群をチェックして3番目の"badword"のみが全てのリージョンで不正な文字列であった場合、
result[4]={0,0,0x9f,0}
badwordsnum=1
となります。

■それ以外のとき
wordsに与えたチェック対象の文字列の順に結果が不正であれば1、そうでなければ0が入ります。

【例】
words[4]={L"goodoword1",L"goodoword2",L"badword",L"goodoword3"}
という文字列群をチェックして3番目の"badword"のみが不正な文字列であった場合、
result[4]={0,0,1,0}
badwordsnum=1
となります。


不正文字列チェックで不正と判定された場合のテストを行なうために下記の単語が認証サーバに不正文字列として登録されています。

参照

DWC_CheckProfanityProcess DWC_LoginAsync DWC_CheckProfanityExAsync

履歴

5.3patch1
全リージョン'A'を指定したときの例で、不正文字を示す結果を修正
5.1patch1
テスト用の不正文字列がリージョンの区別がなくなったことに対応。
5.1
北米/欧州リージョンのテスト用不正文字列を追記

5.1pr2より前の変更履歴はこちら