この間はお世話になり、ありがとうございました。
早速ですが、また問題にぶつかりましたので質問させて頂きます。
下記サイトの、softyaさんの講座を元にしています。
http://dixq.net/forum/blog.php?u=114&sd=a&c=2&start=40
フラグの立て方で苦戦しています。
SCN_IF_SKIPを使って、試しているところなのですが、戦闘が終わった後に
{ SCN_IF_SKIP,"win1",*win,IF_EQUAL}を入れているのですが
次の{ SCN_GOTO, "test" }を飛ばさずに、結果としてエンディングではなく、
testのラベルまで飛び、テストという文字が表示されてしまいます。
勝ったら、次に入った時のマップを違うものにしたい、など
フラグという考え方が必要だなと思いました。
このスキップを使う書き方は間違っているのでしょうか。
もし簡単な考え方がありましたら、教えてくださると嬉しいです。
よろしくお願いします。
ダンジョンのシナリオ
#include <DxLib.h>
#include "main.h"
#include "eventScn.h"
#include "enemy.h"
//----------------------------------------------------------------------
// システム・シナリオ
//----------------------------------------------------------------------
char *win = "";
// マップチェンジ時シナリオ
static ScnData_t MapChangeScn[] = {
// シナリオ命令,文字列,数値パラメータ1,数値パラメータ2,
// 町からのマップチェンジ
// 自キャラの調整
{ SCN_PLY_EPOS, NULL, 0 }, //自キャラの位置をイベント番号の位置にします。
{ SCN_PLY_POS, NULL, 0, -1 }, //自キャラの位置を変えます。
{ SCN_PLY_MUKI, NULL, CHAR_MUKI_UP, 0 }, //自キャラの方向を変えます。
{ SCN_EXIT }, //イベントを抜けます。
{ SCN_END }, //ストッパとしてシナリオ終端に必須です。
};
//----------------------------------------------------------------------
// マップイベントのシナリオ
//----------------------------------------------------------------------
static ScnData_t Boss1[] = {
{ SCN_MES, "ボスバトルが始まります", TRUE, SCN_WND_MSGD },
// 戦闘開始
{ SCN_BOSS_BTL,NULL,ENEMY_BOSS }, //ボスバトル開始。
{ SCN_MES, "メッセージ", TRUE, SCN_WND_MSGD },//セリフ
{ SCN_BATTLE_WIN },
{ SCN_IF_SKIP,"win1",*win,IF_EQUAL},
{ SCN_GOTO, "test" },
{ SCN_ENDING }, //勝利したのでエンディング
{ SCN_EXIT }, //イベントを抜けます。
{ SCN_LABEL, "test" }, //ラベル
{ SCN_MES, "テスト", TRUE, SCN_WND_MSGD },//セリフ
{ SCN_EXIT }, //イベントを抜けます。
{ SCN_END }, //ストッパとしてシナリオ終端に必須です。
};
eventScn.cppで新しいイベントを作りました
//######################################################################
// (シナリオ命令)SCN_BATTLE_WIN バトルに勝ったとき
//######################################################################
static int scn_BattleWin(ScnData_t *scnData)
{
win = "win1";
// シナリオを次に進める。
event_NextScn();
// イベントを継続する。
return EVENT_RTN_CONTINE;
}