「ゲームアツマール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」に置き換えた値は空文字に戻って返ってきます。