一番高い(or 低い)パラメータを持つキャラクターを選ぶ。
より、実戦的な何かを実例を上げて作ってみます。
NScripterでオーソドックスなヒロインが複数出るタイプの恋愛ゲームを考えてみます。
- 各ヒロインには隠しパラメータとして、好意値と嫉妬値がある。
- どちらもイベントや選択肢で上下する。
- 一番高い好意値のヒロインとの個別エンディングが選ばれる。
このようにルールを設定しました。
それを実装するために、パラメータの管理をdimを使った二次配列変数で行うとします。
; define節で実行してください。 numalias heroine_param,??? ; ヒロインのパラメータを入れる変数の番号。???を使っていない変数番号に置き換えてください。 mov %1,0 ; 一時変数 ; 以下、ヒロインの番号を設定する。藤崎詩織を0番とし、伊集院レイを末尾とする。 numalias shiori,%1:inc %1 numalias mio,%1 :inc %1 numalias yuina,%1 :inc %1 numalias ayako,%1 :inc %1 numalias saki,%1 :inc %1 numalias yukari,%1:inc %1 numalias nozomi,%1:inc %1 numalias mira,%1 :inc %1 numalias yuko,%1 :inc %1 numalias megumi,%1:inc %1 numalias yumi,%1 :inc %1 numalias miharu,%1:inc %1 numalias rei,%1 :inc %1 numalias heroine_number,rei ; ヒロインの最大番号を定義 mov %2,0 ; 一時変数 ; 以下、パラメータの設定。好意値を0、嫉妬値を1とする。何か追加したければ、行を追加すればいい。 numalias love,%2:inc %2 numalias envy,%2:inc %2 ; 配列変数の宣言 dim ?heroine_param[%1][%2] ; 以上で設定おわり。 ; たとえば、紐緒結奈の嫉妬値は以下のように表現できる。 ; ?heroine_param[yuina][envy]
エンディングを迎えた時に伝説の木の下で待っているヒロインは、以下の条件で決まるとします。
- 最も好意値の高いヒロイン。
- もし、好意値の最大値が同じであれば、ヒロイン番号の若い方。
※本来であれば、好意値が50以上とかの制限をつけるべきでしょうが、ここでは考慮しないことにします。必要であれば実装してください。
次に、何かのパラメータが一番高い(or 低い)ヒロインを選ぶスクリプトが必要になってきます。
スクリプト
aパート
numalias search_param,??? ; 調べる対象のパラメータ numalias search_order,??? ; 昇順か降順か。0で最大値、1で最小値 numalias search_target,??? ; 調べる二次配列の番号 numalias search_span,??? ; 調べる二次配列の一次添字の最大値 numalias search_res,??? ; 回答用 numalias serach_id,??? ; 回答用 numalias search_loop,??? ; ループ用 defsub max_id defsub min_id
bパート
*max_id mov %search_order,0 goto *search_main *min_id mov %search_order,1 goto *search_main *search_main ; 引数取得 getparam i%search_id,%search_target,%search_span,%search_param ; 初期設定 mov %%search_id,0 mov %search_res,?%search_target[0][%search_param] ; ループ開始 for %search_loop=2 to %search_span if %search_order=0 notif ?%search_target[%search_loop][%search_param]<%search_res next if %search_order=1 notif ?%search_target[%search_loop][%search_param]>%search_res next mov %search_res,?%search_target[%search_loop][%search_param] next return
使い方
- aパートを、*defineラベルとgame命令の間のどこかに貼ってください。その際、???は適宜使っていない変数番号に置き換えてください。
- bパートを、game命令と*startラベルの間のどこかに貼ってください。
これで準備完了です。
前述のときメモクローンでの使い方です。
; 最も好意値の高いヒロインを調べる。 max_id %0,heroine_param,heroine_number,love ; %0に最も高い好意値を持つヒロインの番号が入る。
min_idを使えば、逆に何かが最も低いヒロインの番号を取得できます。
応用
たとえば、これがAVGではなく、RPGだったとしたら。そして、某国産最終幻想シリーズであったならば。
戦闘では、ゲージが溜まった物から行動するようになっていて、それを実装するのにこれは使えます。
キャラクターパラメータの中にguageを作りましょう。このguage値が100以上になったら、行動順が来て、guage値は毎ターンspeed値ずつ上がっていくとします。
- 最大のguage値を持つキャラクターを調べる。
- 1のキャラクターのguage値が100未満ならば、5へ。
- 1のキャラクターを行動させる。(その結果、guage値はガクッと下がる)
- 1に戻る。
- 全てのキャラクターのguage値をspeed値上昇させる。
- 1に戻る。
このように使うことができます。
一番高い(or 低い)パラメータを持つキャラクターを選ぶ。
より、実戦的な何かを実例を上げて作ってみます。
NScripterでオーソドックスなヒロインが複数出るタイプの恋愛ゲームを考えてみます。
- 各ヒロインには隠しパラメータとして、好意値と嫉妬値がある。
- どちらもイベントや選択肢で上下する。
- 一番高い好意値のヒロインとの個別エンディングが選ばれる。
このようにルールを設定しました。
それを実装するために、パラメータの管理をdimを使った二次配列変数で行うとします。
; define節で実行してください。 numalias heroine_param,??? ; ヒロインのパラメータを入れる変数の番号。???を使っていない変数番号に置き換えてください。 mov %1,0 ; 一時変数 ; 以下、ヒロインの番号を設定する。藤崎詩織を0番とし、伊集院レイを末尾とする。 numalias shiori,%1:inc %1 numalias mio,%1 :inc %1 numalias yuina,%1 :inc %1 numalias ayako,%1 :inc %1 numalias saki,%1 :inc %1 numalias yukari,%1:inc %1 numalias nozomi,%1:inc %1 numalias mira,%1 :inc %1 numalias yuko,%1 :inc %1 numalias megumi,%1:inc %1 numalias yumi,%1 :inc %1 numalias miharu,%1:inc %1 numalias rei,%1 :inc %1 numalias heroine_number,rei ; ヒロインの最大番号を定義 mov %2,0 ; 一時変数 ; 以下、パラメータの設定。好意値を0、嫉妬値を1とする。何か追加したければ、行を追加すればいい。 numalias love,%2:inc %2 numalias envy,%2:inc %2 ; 配列変数の宣言 dim ?heroine_param[%1][%2] ; 以上で設定おわり。 ; たとえば、紐緒結奈の嫉妬値は以下のように表現できる。 ; ?heroine_param[yuina][envy]
エンディングを迎えた時に伝説の木の下で待っているヒロインは、以下の条件で決まるとします。
- 最も好意値の高いヒロイン。
- もし、好意値の最大値が同じであれば、ヒロイン番号の若い方。
※本来であれば、好意値が50以上とかの制限をつけるべきでしょうが、ここでは考慮しないことにします。必要であれば実装してください。
次に、何かのパラメータが一番高い(or 低い)ヒロインを選ぶスクリプトが必要になってきます。
スクリプト
aパート
numalias search_param,??? ; 調べる対象のパラメータ numalias search_order,??? ; 昇順か降順か。0で最大値、1で最小値 numalias search_target,??? ; 調べる二次配列の番号 numalias search_span,??? ; 調べる二次配列の一次添字の最大値 numalias search_res,??? ; 回答用 numalias serach_id,??? ; 回答用 numalias search_loop,??? ; ループ用 defsub max_id defsub min_id
bパート
*max_id mov %search_order,0 goto *search_main *min_id mov %search_order,1 goto *search_main *search_main ; 引数取得 getparam i%search_id,%search_target,%search_span,%search_param ; 初期設定 mov %%search_id,0 mov %search_res,?%search_target[0][%search_param] ; ループ開始 for %search_loop=2 to %search_span if %search_order=0 notif ?%search_target[%search_loop][%search_param]<%search_res next if %search_order=1 notif ?%search_target[%search_loop][%search_param]>%search_res next mov %search_res,?%search_target[%search_loop][%search_param] next return
使い方
- aパートを、*defineラベルとgame命令の間のどこかに貼ってください。その際、???は適宜使っていない変数番号に置き換えてください。
- bパートを、game命令と*startラベルの間のどこかに貼ってください。
これで準備完了です。
前述のときメモクローンでの使い方です。
; 最も好意値の高いヒロインを調べる。 max_id %0,heroine_param,heroine_number,love ; %0に最も高い好意値を持つヒロインの番号が入る。
min_idを使えば、逆に何かが最も低いヒロインの番号を取得できます。
応用
たとえば、これがAVGではなく、RPGだったとしたら。そして、某国産最終幻想シリーズであったならば。
戦闘では、ゲージが溜まった物から行動するようになっていて、それを実装するのにこれは使えます。
キャラクターパラメータの中にguageを作りましょう。このguage値が100以上になったら、行動順が来て、guage値は毎ターンspeed値ずつ上がっていくとします。
- 最大のguage値を持つキャラクターを調べる。
- 1のキャラクターのguage値が100未満ならば、5へ。
- 1のキャラクターを行動させる。(その結果、guage値はガクッと下がる)
- 1に戻る。
- 全てのキャラクターのguage値をspeed値上昇させる。
- 1に戻る。
このように使うことができます。
一番高い(or 低い)パラメータを持つキャラクターを選ぶ。
より、実戦的な何かを実例を上げて作ってみます。
NScripterでオーソドックスなヒロインが複数出るタイプの恋愛ゲームを考えてみます。
- 各ヒロインには隠しパラメータとして、好意値と嫉妬値がある。
- どちらもイベントや選択肢で上下する。
- 一番高い好意値のヒロインとの個別エンディングが選ばれる。
このようにルールを設定しました。
それを実装するために、パラメータの管理をdimを使った二次配列変数で行うとします。
; define節で実行してください。 numalias heroine_param,??? ; ヒロインのパラメータを入れる変数の番号。???を使っていない変数番号に置き換えてください。 mov %1,0 ; 一時変数 ; 以下、ヒロインの番号を設定する。藤崎詩織を0番とし、伊集院レイを末尾とする。 numalias shiori,%1:inc %1 numalias mio,%1 :inc %1 numalias yuina,%1 :inc %1 numalias ayako,%1 :inc %1 numalias saki,%1 :inc %1 numalias yukari,%1:inc %1 numalias nozomi,%1:inc %1 numalias mira,%1 :inc %1 numalias yuko,%1 :inc %1 numalias megumi,%1:inc %1 numalias yumi,%1 :inc %1 numalias miharu,%1:inc %1 numalias rei,%1 :inc %1 numalias heroine_number,rei ; ヒロインの最大番号を定義 mov %2,0 ; 一時変数 ; 以下、パラメータの設定。好意値を0、嫉妬値を1とする。何か追加したければ、行を追加すればいい。 numalias love,%2:inc %2 numalias envy,%2:inc %2 ; 配列変数の宣言 dim ?heroine_param[%1][%2] ; 以上で設定おわり。 ; たとえば、紐緒結奈の嫉妬値は以下のように表現できる。 ; ?heroine_param[yuina][envy]
エンディングを迎えた時に伝説の木の下で待っているヒロインは、以下の条件で決まるとします。
- 最も好意値の高いヒロイン。
- もし、好意値の最大値が同じであれば、ヒロイン番号の若い方。
※本来であれば、好意値が50以上とかの制限をつけるべきでしょうが、ここでは考慮しないことにします。必要であれば実装してください。
次に、何かのパラメータが一番高い(or 低い)ヒロインを選ぶスクリプトが必要になってきます。
スクリプト
aパート
numalias search_param,??? ; 調べる対象のパラメータ numalias search_order,??? ; 昇順か降順か。0で最大値、1で最小値 numalias search_target,??? ; 調べる二次配列の番号 numalias search_span,??? ; 調べる二次配列の一次添字の最大値 numalias search_res,??? ; 回答用 numalias serach_id,??? ; 回答用 numalias search_loop,??? ; ループ用 defsub max_id defsub min_id
bパート
*max_id mov %search_order,0 goto *search_main *min_id mov %search_order,1 goto *search_main *search_main ; 引数取得 getparam i%search_id,%search_target,%search_span,%search_param ; 初期設定 mov %%search_id,0 mov %search_res,?%search_target[0][%search_param] ; ループ開始 for %search_loop=2 to %search_span if %search_order=0 notif ?%search_target[%search_loop][%search_param]<%search_res next if %search_order=1 notif ?%search_target[%search_loop][%search_param]>%search_res next mov %search_res,?%search_target[%search_loop][%search_param] next return
使い方
- aパートを、*defineラベルとgame命令の間のどこかに貼ってください。その際、???は適宜使っていない変数番号に置き換えてください。
- bパートを、game命令と*startラベルの間のどこかに貼ってください。
これで準備完了です。
前述のときメモクローンでの使い方です。
; 最も好意値の高いヒロインを調べる。 max_id %0,heroine_param,heroine_number,love ; %0に最も高い好意値を持つヒロインの番号が入る。
min_idを使えば、逆に何かが最も低いヒロインの番号を取得できます。
応用
たとえば、これがAVGではなく、RPGだったとしたら。そして、某国産最終幻想シリーズであったならば。
戦闘では、ゲージが溜まった物から行動するようになっていて、それを実装するのにこれは使えます。
キャラクターパラメータの中にguageを作りましょう。このguage値が100以上になったら、行動順が来て、guage値は毎ターンspeed値ずつ上がっていくとします。
- 最大のguage値を持つキャラクターを調べる。
- 1のキャラクターのguage値が100未満ならば、5へ。
- 1のキャラクターを行動させる。(その結果、guage値はガクッと下がる)
- 1に戻る。
- 全てのキャラクターのguage値をspeed値上昇させる。
- 1に戻る。
このように使うことができます。