【質問フォーム】
【重要!】 質問する前に必ず、過去に同じ質問がないか検索してください!
もし以下のケースで困った場合は、まずリンク先の文書内に答えがないか探してください。
・まずはこの中からお探し下さい → パーフェクトガイド
・バグかな?と思ったときは → よくある質問
・基本システムの設定方法が分からない場合 → 基本システム講座(by 藤田るいふ氏)
・イベントコマンドなどの仕様が分からない場合 → 公式マニュアル
※書き込む前に少なくとも1日2日は、自分で探したり挑戦する努力をしてみてください。
上記のことを全部やってもどうしても分からなかった場合だけ、以下のフォームから質問してください。
としこC様
サブキーを使うパターンの方が改造部分が多く、少し手がかかるようですね。
あまり複雑にしたくないので、今回は最初に教えていただいた左右キーの方でよいのかなと思います。
解説ありがとうございました。
お役に立てたのなら幸いです.
> コモンを公開する場合、お名前も掲載した方がよろしいでしょうか?
基本システムのほんの一部の解説をしただけなので掲載は不要です.
正直、こんな機会でもないと基本システムを学ぶことがないので..
特に問題内容が明確で、コモン番号などの補足から該当コマンドの検索が楽だったので、こちらとしても助かりました.
追記:
サブキーの応答については、
「065:X[共]万能ウィンドウ選択実行」側での利用が完全に終了用であるため、
一度、回答を避けました。
(最初に)
「065:X[共]万能ウィンドウ選択実行」にモード、オプションに次ぐ、
第三の引数を設定する。
(次に)
各キーを受け付ける分岐内の
| |■変数操作: CSelf11[選択カーソル位置] = 0 + 0
を第三の引数による分岐で実行しないようにする。
※110行目のサブキー受付のコマンド文
|■条件分岐(数値): 【1】 CSelf20[受付キー] が 12 と同じ
|-◇分岐: 【1】 [ CSelf20[受付キー] が 12 と同じ ]の場合↓
| |■変数操作: CSelf10[選択コード] = -300 + 0
| |■変数操作: CSelf11[選択カーソル位置] = 0 + 0
| |■ループ中断
| |■
|◇分岐終了◇
(最後に)
「084:X[移]お店実行」側の89行目のコモン呼び出しを、値-300を取得するオプション(2〜3)に変更すれば、
既存システムへの影響なしで、キー受付できると思います。
としこC様
ご回答ありがとうございます。
教えて頂いたとおりにコマンドを入力して無事、コモンの起動とステータス表示の描画を行うことができました!
(基本システムの商品表示は改造せず「縦一列のままの想定」でしたので、教えて頂いた通りで大丈夫でした。)
「084:X[移]お店実行」の90行目から下記の処理を入れています。
|■条件分岐(変数): 【1】 CSelf13 が -200 と同じ
|-◇分岐: 【1】 [ CSelf13 が -200 と同じ ]の場合↓
| |■キー入力:CSelf30[通常入力] 左右(4,6)
| |■条件分岐(変数): 【1】 CSelf30[通常入力] が 4 と同じ 【2】 CSelf30[通常入力] が 6 と同じ
| |-◇分岐: 【1】 [ CSelf30[通常入力] が 4 と同じ ]の場合↓
| | |■
| |-◇分岐: 【2】 [ CSelf30[通常入力] が 6 と同じ ]の場合↓
| | |■
| |-◇上記以外
| | |■ループ開始へ戻る
| | |■
| |◇分岐終了◇
| |▼ アイテムコード&位置を保存し、処理アイテムの情報を得る
| |■DB読込(可変): CSelf15[カーソル位置コード] = 可変DB[ 基本システム用変数 : 18 : 0 ] (18 : 万能ウィンドウ カーソル位置コード : 数値)
| |■DB読込(可変): CSelf16[最終選択位置] = 可変DB[ 基本システム用変数 : 61 : 0 ] (18 : [一時]万能ウィンドウ最終カーソル位置 : 数値)
| |■DB読込(可変): CSelf20[処理アイテム] = 可変DB[ 万能ウィンドウ一時DB : CSelf16[最終選択位置] : 項目コード ] (19 : - : 1)
| |▼ アイテムコードが20000~39999(装備品)の場合コモンを起動
| |■条件分岐(変数): 【1】 CSelf20[処理アイテム] が 20000 以上
| |-◇分岐: 【1】 [ CSelf20[処理アイテム] が 20000 以上 ]の場合↓
| | |■条件分岐(変数): 【1】 CSelf20[処理アイテム] が 39999 以下
| | |-◇分岐: 【1】 [ CSelf20[処理アイテム] が 39999 以下 ]の場合↓
| | | |■イベントの挿入[名]: ["お店装備ステータス変化描画"] <コモンEv 218> / CSelf20[処理アイテム]
| | | |■
| | |◇分岐終了◇
| | |■
| |-◇上記以外
| | |▼ アイテムを選んだ場合は何も起きない
| | |■ループ開始へ戻る
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
ステータス変化の画面を消す際の処理についてですが、一応描画側のコモンの最後の方に適当なキー入力を受付してピクチャを消去するための処理があります↓
<[お店装備ステータス変化描画]コモン最終部分>
■キー入力:CSelf24[キー受付][入力待ち] 決定(10) キャンセル(11) サブキー(12)
■条件分岐(変数): 【1】 CSelf24[キー受付] が 10 以上
-◇分岐: 【1】 [ CSelf24[キー受付] が 10 以上 ]の場合↓
|■ピクチャ消去:16000 〜 16120 / 0(0)フレーム
|■
◇分岐終了◇
添付画像のとおり、ステータス表示関連のピクチャは基本システムのお店の描画のピクチャと競合しないように、上の番号を振ってあり、お店の描画の上に描画されます。
コモンの処理が終わる際にすべて消去されるので、現状「084:X[移]お店実行」側にピクチャ消去の処理を入れなくても問題なく動いているようには見えますが、一応何かあったときのために「084:X[移]お店実行」側にもピクチャ消去の処理を入れてもよいのかもしれません。
それと、今回類似のコモンを見つけられずほとんどイチからつくる羽目になったので、ある程度内容が固まったらコモン集への公開を考えています。
(一応基本システムのコモン「084:X[移]お店実行」「085:X[移]┣ お店 描画」の改造と、空きコモンに[お店装備ステータス変化描画]、[お店装備ステータス変化計算]の2つを導入することで使用可能です。
装備のステータス変化の計算の処理がサンプルゲームの装備欄や武器・防具の装備箇所の設定に準拠しているので、設定を変えて装備の自由度が高いゲームを作りたい場合は各自でカスタムしてもらう必要がありますが…。)
コモンを公開する場合、としこC様のお名前も掲載した方がよろしいでしょうか?
|
「065:X[共]万能ウィンドウ選択実行」で-300(左右キー)を返すのは、二番目の引数である「オプションが4」の時専用みたいですね。
(※ただしオプションが4だと、左右キー時に終了扱いで「基本システム用変数のカーソル位置」が初期化=0される)
それ以外の左右キーの利用では、選択肢が縦横2次元になった際の、横列でループさせるための判定のようなので、商品表示が””縦一列のままを想定””しているなら、簡単に処理を追加できます。
オプションが0〜3の場合は、「左右キーも-200の返り値を持つ」ようなので、
「084:X[移]お店実行」の89行目のコマンドから受け取る「-200」の内、左右キーのみ抽出して処理させるのはいかがでしょうか?
|■条件分岐(数値): 【1】 CSelf13 が -200 と同じ
|-◇分岐: 【1】 [ CSelf13 が -200 と同じ ]の場合↓
のコマンド直前に下記のようなコマンドを追加することで、とりあえず左右キーだけ分離できます。
|■条件分岐(数値): 【1】 CSelf13 が -200 と同じ
|-◇分岐: 【1】 [ CSelf13 が -200 と同じ ]の場合↓
| |■キー入力:CSelf30 [通常入力] 左右(4,6)
| |■条件分岐(数値): 【1】 CSelf30 が 4 と同じ 【2】 CSelf30 が 6 と同じ
| |-◇分岐: 【1】 [ CSelf30 が 4 と同じ ]の場合↓
| | |■
| |-◇分岐: 【2】 [ CSelf30 が 6 と同じ ]の場合↓
| | |■
| |-◇上記以外
| | |■ループ開始へ戻る
| | |■
| |◇分岐終了◇
| |■デバッグ文:\cself[30]ここに処理を記述
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
上記コマンドの、デバッグ文のところにステータス表示を書くとして、
・左右キーを押すごと(あるいは4,6それぞれにon/offを割り当てる?)に、ステータス表示のon/offを切り替える
・お店を終了した場合にも、ステータス表示をoffにする
の2点を追加で修正すれば、おそらくご希望の処理が可能になると思われます
[やりたいこと]
お店で商品を選んでいるときに、武器・防具にカーソルを合わせてシフトキーを押すと現在の装備から選択した商品の装備に入れ替えた場合のステータス変化を見られるようにしたいです。
[やってみたこと]
店の商品のアイテムコードをcself[0]に格納し、店の武器防具と装備中の武器防具のステータス変化を描画・計算するためのコモンは製作できました。(添付ファイルの画像のような感じで表示され、決定キーやサブキーなどで消去されます)
「085: X[移]┣ お店 描画」を改造し、商品選択画面でサブキーを押すとステータス変化が表示される旨の説明も追加してみました。(これは別になくてもいいかもしれない。)
[やってみた結果、どううまくいかないか]
後は、「084:X[移]お店実行」を改造して上記のコモンを呼び出しすればよいのかと思うのですがやり方がよく分かりません。
「065:X[共]万能ウィンドウ選択実行」からCSelf13に値が返さる際に、サブキー左右キーの場合は-300を返すと書いてあったので、241行目に下記のような分岐と処理を追加してみましたが動かないです。(そもそもサブキーの設定はオプション選択時のもののようなので根本的に違うような気がします。)
| |-◇分岐: 【4】 [ CSelf13 が -300 と同じ ]の場合↓
| | |▼ サブキーが押された場合装備によるステータス変化を描画するコモンを呼び出します
| | |▼ アイテムコード&位置を保存し、処理アイテムの情報を得る
| | |■DB読込(可変): CSelf15[カーソル位置コード] = 可変DB[ 基本システム用変数 : 18 : 0 ] (18 : 万能ウィンドウ カーソル位置コード : 数値)
| | |■DB読込(可変): CSelf16[最終選択位置] = 可変DB[ 基本システム用変数 : 61 : 0 ] (18 : [一時]万能ウィンドウ最終カーソル位置 : 数値)
| | |■DB読込(可変): CSelf20[処理アイテム] = 可変DB[ 万能ウィンドウ一時DB : CSelf16[最終選択位置] : 項目コード ] (19 : - : 1)
| | |▼ アイテムコードが20000~39999(装備品)の場合コモンを起動
| | |■条件分岐(変数): 【1】 CSelf20[処理アイテム] が 20000 以上
| | |-◇分岐: 【1】 [ CSelf20[処理アイテム] が 20000 以上 ]の場合↓
| | | |■条件分岐(変数): 【1】 CSelf20[処理アイテム] が 39999 以下
| | | |-◇分岐: 【1】 [ CSelf20[処理アイテム] が 39999 以下 ]の場合↓
| | | | |■イベントの挿入[名]: ["お店装備ステータス変化描画"] <コモンEv 218 / CSelf20[処理アイテム]
| | | | |■
| | | |-◇上記以外
| | | | |■
| | | |◇分岐終了◇
| | | |■
| | |-◇上記以外
| | | |▼ アイテムを選んだ場合は何も起きない
| | | |■
| | |◇分岐終了◇
| | |■
| |◇分岐終了◇
※コマンド中にある「["お店装備ステータス変化描画"] <コモンEv 218>」がステータス変化(添付画像の画面)を描画するために製作したコモンです。
製作したコモンの処理を基本システムの「084:X[移]お店実行」に割り込ませるにはどうしたらよいか、アドバイスいただけるとありがたいです。
|
としこC様の提案(1)で上手くいきました。
座標は足元と前方のを取得。
足元の座標を確認後、取得した接触範囲に1マス分加算し反応範囲を拡大、
変数操作+の「通行可能(タイル・Ev両方)」で
前方座標の通行状態でEVIDを取得するか判断
としました。
さらに色々条件付け加えないと、イベントが隣接した際にバグが起きますが、
大雑把にはこのような処理となりました。
ありがとうございます。
行き詰った際には、また何かしらのご助力頂けたらと思います。
> 「起動範囲拡張X・Y」は、「接触範囲拡張」の事でよろしいでしょうか?
> こちらの機能の見落としなら、申し訳ございません。
私の記入ミスです.
ご指摘のとおり「接触範囲拡張X」「接触範囲拡張Y」の項目です
としこCさま、お答え頂きありがとうございます。
提案(1)の方でやってみようと思うのですが、確認のためお尋ねしたいのですが、
「起動範囲拡張X・Y」は、「接触範囲拡張」の事でよろしいでしょうか?
こちらの機能の見落としなら、申し訳ございません。
リスト化、同時複数検知は文字列ではなく、CDBの方が安全そう