| 問題解決しました。 Setコマンドを使った後の処理の変数の名前が別の名前になっていました。 幻魔の公子さん、ありがとうございました。
しかし、同時進行で作っている別の作品に似たような問題が起きました。 レベルに応じてボーナスポイントを振り分けるインターミッションコマンドを 作ろうとしてるのですが、うまくいきません。
こんな感じです。 パイロット・ユニット作成しかやっていない事と 名前が前の時と同じなのは気にしないでください(笑)
プロローグ:
IntermissionCommand ボーナスポイント振り分け Lib\ボーナスポイント振り分け.eve
Unit ジェイク=ライン 0 Pilot ジェイク=ライン 10 Ride ジェイク=ライン
Global 前回レベル・ジェイク
Global ボーナス・ジェイク Global HP・ジェイク Global EN・ジェイク Global 攻撃力・ジェイク Global 装甲・ジェイク Global 命中・ジェイク Global 回避・ジェイク
Continue 第二話.eve
ここからは、ボーナスポイント振り分け.eveの中身です。
プロローグ:
#ボーナスポイント計算
Incr ボーナス・ジェイク (Level(ジェイク=ライン) - 前回レベル・ジェイク)
キャラ選択:
Set i 1
ForEach 味方 全て Set 所持ユニット[i] Unit() Incr i Next
Ask 所持ユニット "キャラクターを選んでください。" 拡大 キャンセル可
If 選択 = 0 Goto 終了
Switch ユニット[選択] Case ジェイク=ライン Set 振り分け・ジェイク Set ボーナスポイント ボーナス・ジェイク Set HPポイント HP・ジェイク Set ENポイント EN・ジェイク Set 攻撃力ポイント 攻撃力・ジェイク Set 装甲ポイント 装甲・ジェイク Set 命中ポイント 命中・ジェイク Set 回避ポイント 回避・ジェイク
Case 0 GoTo 終了 EndSw GoTo ポイント振り分け
ポイント振り分け:
Do While 1 Ask "どの能力を上げますか? (現在のポイント: $(ボーナスポイント))" 拡大 キャンセル可 体力 (HP+100) $(HPポイント) 精神力 (EN+5) $(ENポイント) 攻撃性 (攻撃力+10) $(攻撃力ポイント) 防御力 (装甲+10) $(装甲ポイント) 集中力 (命中+2) $(命中ポイント) 敏捷性 (回避+2) $(回避ポイント) End
If ボーナスポイント < 1 Then
Switch 選択 Case 0 GoTo キャラ選択 Case Else Talk システム ボーナスポイントが足りません。 End GoTo ポイント振り分け EndSW
Else Switch 選択 Case 1 Incr HPポイント Incr 追加HP
Case 2 Incr ENポイント Incr 追加EN
Case 3 Incr 攻撃力ポイント Incr 追加攻撃力
Case 4 Incr 装甲ポイント Incr 追加装甲
Case 5 Incr 命中ポイント Incr 追加命中
Case 6 Incr 回避ポイント Incr 追加回避
Case 0 GoTo 能力アップ EndSW
Incr ボーナスポイント -1 EndIf
Loop
・ ・ 中略 ・ ・
UnSet 振り分け・ジェイク Set ボーナスポイント ボーナス・ジェイク
GoTo キャラ選択
終了:
Set 前回レベル・ジェイク Level(ジェイク=ライン)
Continue
こんな感じでやってますが ポイント振り分けの際、$(ボーナスポイント)の部分が文字のままでした。 つまり、変数「ボーナスポイント」が、作成されていないのと同じ状態なのです。
興味のある方は、コピペしてやってみてください。 中略の部分は、なくてもかまわないと僕が判断したので 割愛させていただきました。 ですので、中略の部分の下に「能力アップ:」を持ってきておかないと 動かないと思います。
|