トピック
カダル RCmini4wd

RPGのエンカウントについて

サンプルのRPGをいじっているのですが、 他のフロアはそのままで1つのフロアだけ ランダムエンカウントをしないようにして 強制エンカウントにしたいんです。 その方法を教えて頂けませんか? あと、その戦闘だけ「にげる」の成功率を 0%にする方法も教えて下さると 助かります。
4そうだね
プレイ済み
返信[1]
親投稿
しろ sshiro1shiro
興味本位で調べてみました。 ~強制エンカウントのまでの方法は テキ シュツゲン チェック のコメントの下にある IF RAND(30)==0 THEN GOSUB @BATTLE を例えば下記のように修正すると IF (((RAND(30)==0)&&(LEVEL+1!=1)))&&((LEVEL+1==1)&&(PY==12)&&(PX==13)) THEN GOSUB @BATTLE 1階(LEVEL+1==1)では(PY==12)&&(PX==13)にいるときに強制戦闘になります。 0%にする方法は ニゲルの3行下にある IF RAND(100)>=50 THEN を下記のように修正するとできると思います。 IF (((RAND(100)>=50)&&(LEVEL+1!=1)))&&((LEVEL+1==1)&&(PY==12)&&(PX==13)) THEN
2そうだね
プレイ済み
返信[2]
親投稿
??? a02b28
逃走確率や強制エンカウントはそれに対応する値を定数ではなく変数で定義した後、特定のシチュエーションのおいてその変数に普段と異なる数字を代入→用が済んだら戻す等することで簡単に行うことが出来ます
2そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
FLOOR LEVEL 1で座標(13,12)の時に強制戦闘、それ以外の座標では 敵とエンカウントしない場合は IF (LEVEL==0 && PX==13 && PY==12)||(LEVEL !=0 && RND(30)==0) THEN GOSUB @BATTLE FLOOR LEVEL 1で座標(13,12)以外の座標でも1/30でエンカウント させたい場合は||以降のLEVEL!=0を削除して下さい
2そうだね
プレイ済み
返信[4]
親投稿
カダル RCmini4wd
皆さんありがとうございます! まず最初にしろさんに教えて頂いたものを 試してみましたが、どうやら完全に エンカウントしなくなっている様です。 どこか間違っている部分がありましたら ご指摘をお願いします。
0そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
240行目の途中の部分で IF《省略》&&(LEVEL+1!=1)))&&((LEVEL+1==1)&&《省略》 とありますが IF《省略》&&(LEVEL+1!=1)))||((LEVEL+1==1)&&《省略》 として下さい。 LEVEL+1!=1とLEVEL+1==1は相反する条件なので&&で処理すると必ず 不成立(偽)となります。
2そうだね
プレイ済み
返信[6]
親投稿
しろ sshiro1shiro
1Fでは左上から数えて下に12(PY=12)右に13(PX=13)の場所でのみ強制戦闘になると思うのですが、起きないですか?また2Fに行けば通常エンカウントすると思います。あと今のPYとPXが知りたいならばIFの前の行に ? PY,PX を入れておけばアイテム欄あたりに表示されると思います。
0そうだね
プレイ済み
返信[7]
親投稿
しろ sshiro1shiro
確かに自分のコードがおかしかったです。二つ目の&&は||です。
0そうだね
プレイ済み
返信[8]
親投稿
カダル RCmini4wd
書き換えたら上手く行きました。 質問が続いて申し訳無いのですが、 強制エンカウントが発生する階を変える場合は どの部分を書き換えれば良いですか?
0そうだね
プレイ済み
返信[9]
親投稿
しろ sshiro1shiro
ついでに0%にする方法も間違ってた。 ニゲルの3行下にある IF RAND(100)>=50 THEN を下記のように修正するとできると思います。 IF (((RAND(100)>=50)||(LEVEL+1!=1)))&&((LEVEL+1==1)&&(PY==12)&&(PX==13)) THEN
1そうだね
プレイ済み
返信[10]
親投稿
しろ sshiro1shiro
強制エンカウントが発生する階を変える場合はLEVEL+1==1なら1階LEVEL+1==2なら2階になります。またLEVEL+1!=1で1階以外、LEVEL+1!=2なら2階以外になります。
1そうだね
プレイ済み
返信[11]
親投稿
??? a02b28
IF (RAND(100)>=50 AND LEVEL+1!=1) OR (LEVEL+1==1 AND PY==12 AND PX==13) THEN かなー とは思いました
1そうだね
プレイ済み
返信[12]
親投稿
??? a02b28
このソースコードの軽い説明行きます IF  ( RAND(100)    >=50     AND もし ( 0-99までの乱数が 50より大きい かつ LEVEL+1    !=1    ) OR   ( LEVEL+1 現在の階層が 1階でない ) または ( 現在の階層が ==1     AND PY          ==12 1階であり かつ  プレイヤーのY座標が 12であり AND PX           ==13   ) THEN かつ  プレイヤーのX座標が 13である ) ならば
0そうだね
プレイ済み
返信[13]
親投稿
??? a02b28
つまり、2回でボス戦したいなら "LEVEL+1(現在の階層)"についての部分を書き換えればいいわけです 今は IF (1階に居なかったらランダムにエンカウントする) OR (1階に居たらプレイヤーが12,13に来たときにエンカウントする) THEN となっているので LEVEL+1!=1(1階に居なかったら) → LEVEL+1!=2(2階に居なかったら) LEVEL+1==1(1階に居たら)    → LEVEL+1==2(2階に居たら) とすれば2階でエンカウントするようになりますね
1そうだね
プレイ済み
返信[14]
親投稿
カダル RCmini4wd
最後に質問しますが、エンカウントしない階を 追加する場合のプログラムと、 武器のデータを追加する時はどうすれば 良いでしょうか?
0そうだね
プレイ済み
返信[15]
親投稿
しろ sshiro1shiro
下記の用意すれば3Fでも強制戦闘のみになります。 IF ((RAND(30)==0)&&(LEVEL+1!=1))||((LEVEL+1==1)&&(PY==12)&&(PX==13))||((LEVEL+1==3)&&(PY==14)&&(PX==1)) THEN GOSUB @BATTLE 4F以上を作るのはちょっとめんどくさい… 武器のデータを追加は EQMAX=6をEQMAX=7にして DATA "でんせつの けん" の後に DATA "エクスカリバー" を追加して。 @MAP1以下の DATA "…"に書かれている。 3~8と書かれているものを一つ9にすれば宝箱の中に入ります。 因みに3が"やくそう4が"こんぼう"8が"でんせつの けん"です。 恐らく攻撃力は下のほうが高いとなります。
1そうだね
プレイ済み
返信[16]
親投稿
カダル RCmini4wd
丁寧に説明して下さって ありがとうございました。 おかげさまでやりたい事を一通り 実現出来ました。 これで閉じさせて頂きますね。
2そうだね
プレイ済み