SACT2 for System4.x

REGISTER_MESSAGE_CALLBACK

メッセージ描画前( message 関数呼出時)の コールバック関数 を登録します。

※このマニュアル中に出てくるメッセージという単語は、 WindowsなどのOSで用いられるメッセージの意味ではなく、 ゲームのメッセージ表示部に表示される文字列を指します。 同様にメッセージコールバック関数という単語もWindowsなどで用いられているものとは 意味が異なるので注意してください。

void REGISTER_MESSAGE_CALLBACK(sact_message_callback_t fnc);

引数

fnc

sact_message_callback_t 型のコールバック関数。

戻り値

なし

解説

登録した コールバック関数 は、 message の呼び出し直前(厳密にはmessage関数が呼ばれて他の処理を行う前) に呼び出されます。

コールバック関数 によって渡された ref string 型の変数内の文字列に対して置換や変換を行うことによって、 メッセージとして表示させる文字列を変更することができます。 ただし、 ref string 型の変数内の文字列に対してなんらかの変更を行った場合は、 必ず、 コールバック関数 によって渡された2つの ref int 型の変数のうちの最初の引数(ref int nMsgNum)に、 -1 をセットしてください。

登録を解除するには、 UNREGISTER_MESSAGE_CALLBACK を使用してください。

サンプルコード

void 初期化(void)
{
    //登録
    REGISTER_MESSAGE_CALLBACK(&game_message_callback);
}

//コールバック関数
void sact_message_callback_t(ref int nMsgNum,int nNumofMsg, ref string sText)
{
    //メッセージが 主人公 という文字列であれば ランス に置き換える。
    if(sText=="主人公")
    {
        sText="ランス";
        nMsgNum = -1;
        return;
    }
}
//【注意】この例では、文字列が完全に一致した場合のみ置き換えられるため
//'主人公は〜'
//のようなメッセージ中の主人公という文字列は置き換えられない。

上記のコードの実行例

    '主人公'R;
    '俺様が主人公だ。'A;
というシナリオメッセージは、
    ランス
    俺様が主人公だ。
と表示される。

参照

コールバック関数 , message , UNREGISTER_MESSAGE_CALLBACK , REGISTER_A_BEGIN_CALLBACK , REGISTER_A_END_CALLBACK ,