【ゲームアツマール】グローバルサーバー変数に空文字(””)が代入できません

「ゲームアツマールAPI」の1つ「グローバルサーバー変数」は、ゲームアツマールのサーバー側に全ユーザー共有の変数を作成できるめちゃくちゃ便利な機能です。

この「グローバルサーバー変数」には数値を記録できる「数値型」と文字列を記録できる「文字列型」があり、「文字列型」の初期値は「””」(空文字)となっています。

文字列型の「グローバルサーバー変数」にはゲーム内から任意の文字列を代入する事ができるのですが、初期値である「””」(空文字)を代入しようとすると……。

このように、「値の指定が必須です」というエラーが表示されてしまいます。

上記の件をゲームアツマールに問い合わせてみたところ、これはAPIの仕様なので、「””」(空文字)以外の文字列を使って対応していただきたいとの事でした。

筆者は普段からアツマールAPIをがっつり活用しているので、こういった特定条件下でのみ発生するエラーが存在すると気付かぬバグの原因になりそうで怖いのですが……仕方ありません、何とかしましょう!

目次

トリガー発動用の関数を新たに作成する

アツマールのトリガー発動APIを使用する前に、空文字を「’null’」に置き換える処理を加えた関数を作成します。

function triggerCall (triggerId, value) {
    // 値が空文字列の場合は「null」に書き換える
    if (value === '') value = 'null';
    // APIを呼び出す
    return window.RPGAtsumaru.globalServerVariable.triggerCall(triggerId, value);
};

この関数を通してAPIを使用すれば、空文字は「null」という文字列に置き換わりますのでエラーは発生しなくなります。

グローバルサーバー変数取得用の関数を新たに作成する

続いて、グローバルサーバー変数取得用の関数も作成しておきます。

グローバルサーバー変数の値が「’null’」の場合は空文字に置き換える処理を加えましょう。

function getGlobalServerVariable (globalServerVariableId) {
    return new Promise((resolve) => {
        Promise.resolve()
            .then(() => {
                // グローバルサーバー変数を取得
                return window.RPGAtsumaru.globalServerVariable.getGlobalServerVariable(globalServerVariableId)
            })
            .then((result) => {
                // グローバルサーバー変数の値が('null')文字列の場合、空文字列('')に置き換える
                if (result.value === 'null') result.value = '';
                resolve(result);
            });
    });
};

この関数を通してAPIを使用すれば、トリガー発動関数で「null」に置き換えた値は空文字に戻って返ってきます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次