SRC質問掲示板Mk2
(現在 過去ログ28 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■5153 / inTopicNo.1)  レベルの調整
  
□投稿者/ ボライアン -(2002/09/07(Sat) 15:29:38)
http://isweb45.infoseek.co.jp/play/ostjast/index.htm
    何度もすみません。もう一つお聞きしたいことが出てきました。
    ある特定のパイロットが戦闘をして経験値を得ると、
    別のパイロットが同じ量の経験値を得られるようにしたいのです。
    過去ログを調べてみると、似たような質問があり、
    そこに提示されていたものを少し変えてみたのですが、
    まったく機能しませんでした。

    損傷率 エマージー=マクスフェル(ピンチ) 50:
    Talk
    エマージー ピ、ピンチだ、デンジャラスだ… た、助けて…!!
    Talk エマージー
    助けて!僕の、 スーパーピンチクラッシャーッ!!
    End
    Wait 5
    PlaySound Sword.wav
    WhiteIn 1
    Unit スーパーピンチ 0
    Ride スーパーピンチ
    Launch スーパーピンチ X(エマージー) Y(エマージー)
    Set 累積経験値[UnitID(スーパーピンチ)] 0
    Enable エマージー=マクスフェル(ピンチ) バリア
    Enable エマージー=マクスフェル(ピンチ) 支配
    Disable スーパーピンチ パーツ分離
    PlaySound Search.wav
    ClearEvent
    ClearEvent "エマージー=マクスフェル(ピンチ) 50"
    ClearEvent "破壊 エマージー=マクスフェル(ピンチ)"
    Wait 15
    Exit

    攻撃後 スーパーピンチ 敵:
    If 対象ユニット = スーパーピンチ Then
    攻撃後累積経験値 = ExpCheck(UnitID(スーパーピンチ))
    ExpUp エマージー (攻撃後累積経験値 - 累積経験値[UnitID(エマージー)])
    累積経験値[UnitID(エマージー)] = 攻撃後累積経験値
    EndIf
    破壊 敵:
    If 相手ユニット = スーパーピンチ Then
    攻撃後累積経験値 = ExpCheck(UnitID(スーパーピンチ))
    ExpUp エマージー (攻撃後累積経験値 - 累積経験値[UnitID(エマージー)])
    累積経験値[UnitID(エマージー)] = 攻撃後累積経験値
    EndIf
    Exit

    こんなかんじでスーパーピンチが得た経験値を、
    エマージーにも同量与えたいのですが…
    おそらくID部分などに問題がたくさんあると思います。
    過去ログの説明を読んでも、少しわからないので
    どなたかお教えいただけませんでしょうか?

引用返信/返信 削除キー/
■5159 / inTopicNo.2)  Re[1]: レベルの調整
□投稿者/ GAMEMASTER -(2002/09/07(Sat) 19:07:06)
http://nagoya.cool.ne.jp/gamemaster/
     GAMEMASTERです。

    > ある特定のパイロットが戦闘をして経験値を得ると、
    > 別のパイロットが同じ量の経験値を得られるようにしたいのです。
    > 過去ログを調べてみると、似たような質問があり、
    > そこに提示されていたものを少し変えてみたのですが、
    > まったく機能しませんでした。
    >
    > 損傷率 エマージー=マクスフェル(ピンチ) 50:
    > Talk
    > エマージー ピ、ピンチだ、デンジャラスだ… た、助けて…!!
    > Talk エマージー
    > 助けて!僕の、 スーパーピンチクラッシャーッ!!
    > End
    > Wait 5
    > PlaySound Sword.wav
    > WhiteIn 1
    > Unit スーパーピンチ 0
    > Ride スーパーピンチ
    > Launch スーパーピンチ X(エマージー) Y(エマージー)
    > Set 累積経験値[UnitID(スーパーピンチ)] 0
    > Enable エマージー=マクスフェル(ピンチ) バリア
    > Enable エマージー=マクスフェル(ピンチ) 支配
    > Disable スーパーピンチ パーツ分離
    > PlaySound Search.wav
    > ClearEvent
    > ClearEvent "エマージー=マクスフェル(ピンチ) 50"
    > ClearEvent "破壊 エマージー=マクスフェル(ピンチ)"
    > Wait 15
    > Exit
    >
    > 攻撃後 スーパーピンチ 敵:
    > If 対象ユニット = スーパーピンチ Then
    > 攻撃後累積経験値 = ExpCheck(UnitID(スーパーピンチ))
    > ExpUp エマージー (攻撃後累積経験値 - 累積経験値[UnitID(エマージー)])
    > 累積経験値[UnitID(エマージー)] = 攻撃後累積経験値
    > EndIf
    > 破壊 敵:
    > If 相手ユニット = スーパーピンチ Then
    > 攻撃後累積経験値 = ExpCheck(UnitID(スーパーピンチ))
    > ExpUp エマージー (攻撃後累積経験値 - 累積経験値[UnitID(エマージー)])
    > 累積経験値[UnitID(エマージー)] = 攻撃後累積経験値
    > EndIf
    > Exit
    >
    > こんなかんじでスーパーピンチが得た経験値を、
    > エマージーにも同量与えたいのですが…
    > おそらくID部分などに問題がたくさんあると思います。
    > 過去ログの説明を読んでも、少しわからないので
    > どなたかお教えいただけませんでしょうか?

     ExpCheckという関数は存在しません。
     その掲示に記載されていないサブルーチンのことでしたら、バージョン1.6系列の「安定版」を使用している限り累積経験値を取得する関数が存在しないのでいずれにせよ実現不可能です。

     実現させるには、バージョン1.7系列の「開発版」に追加されたInfo関数のパラメータタイプ「累積経験値」を使用しましょう。


     損傷率 エマージー=マクスフェル(ピンチ) 50:

     Talk
     エマージー ピ、ピンチだ、デンジャラスだ… た、助けて…!!
     Talk エマージー
     助けて!僕の、 スーパーピンチクラッシャーッ!!
     End

     Wait 5

     PlaySound Sword.wav

     WhiteIn 1

     Unit スーパーピンチ 0
     Ride スーパーピンチ

     Launch スーパーピンチ X(エマージー) Y(エマージー)

     Set 累積経験値[スーパーピンチ] Info(パイロット,スーパーピンチ,累積経験値)

     Enable エマージー=マクスフェル(ピンチ) バリア
     Enable エマージー=マクスフェル(ピンチ) 支配
     Disable スーパーピンチ パーツ分離

     PlaySound Search.wav

     ClearEvent
     ClearEvent "エマージー=マクスフェル(ピンチ) 50"
     ClearEvent "破壊 エマージー=マクスフェル(ピンチ)"

     Wait 15

     Exit


     攻撃後 スーパーピンチ 敵:

     If 対象ユニット = スーパーピンチ Then

      攻撃後累積経験値 = Info(パイロット,スーパーピンチ,累積経験値)
      ExpUp エマージー=マクスフェル(ピンチ) (攻撃後累積経験値 - 累積経験値[スーパーピンチ])
      累積経験値[スーパーピンチ] = 攻撃後累積経験値

     EndIf

     Exit


     破壊 敵:

     If 相手ユニット = スーパーピンチ Then

      攻撃後累積経験値 = Info(パイロット,スーパーピンチ,累積経験値)
      ExpUp エマージー=マクスフェル(ピンチ) (攻撃後累積経験値 - 累積経験値[スーパーピンチ])
      累積経験値[スーパーピンチ] = 攻撃後累積経験値

     EndIf

     Exit


     なお、このInfo関数は0〜499の範囲でしか値が返されないので、戦闘の結果レベルが上がった場合に「攻撃後累積経験値」の値が「累積経験値[スーパーピンチ]」より小さくなっている可能性があり、この時ExpUpコマンドの段階で経験値が減少されてしまいます。また、1度に501以上の経験値を入手した場合もフォロー出来ていません。
     これを解決するには、変数を1つ増やしてパイロットのレベルも管理するようにして下さい。

     参考になれば幸いです。

     もう時間がないようでございますね。では、これにて退散させてもらいましょう。
引用返信/返信 削除キー/
■5163 / inTopicNo.3)  Re[1]: レベルの調整
□投稿者/ MrSamba -(2002/09/07(Sat) 19:33:30)
    以前自分が書いたルーチンが使われているようなのでフォローします。

    まず上の質問の書き込みからは、サブルーチン「ExpCheck」を読み込んでおられる
    のか分りませんが、当然読み込まれているものとしてお答えします。その前に一つ
    忠告しておきますが、ボライアンさんがこのサブルーチンを過去ログで見つけて、
    それを使用している旨を述べずに今回の書き込みのように平然と「ExpCheck(...」
    と使われても、そのサブルーチンを作成した者(私)以外には「何だコリャ」と思わ
    れるだけで助言をする事は難しいのではないでしょうか。気を付けましょう。

    質問への回答ですが、まず損傷率イベントの使い方が間違っています。対象をユニ
    ット名では指定できません。エマージー=マクスフェル(ピンチ)と言うのはユニッ
    ト名ですよね。私が思うに損傷率イベント自体発生していないのではないでしょう
    か。それともパイロット名とユニット名両方ともエマージー=マクスフェル(ピンチ)
    というのでしょうか。そうだとしたらこの点は無視してください。

    それから質問での書き込みからは良く分らないのですが「スーパーピンチ」と言う
    のはスーパーピンチというパイロットが同名のユニットに乗るということでいいの
    でしょうか。それと確認しておきますがスーパーピンチというパイロットは事前に
    作成されていますよね。その部分が省略されていたため最初混乱しました。省略さ
    れていて分らないのですが、そのパイロットはこのイベント以前に既に幾らかの経
    験値を得ているのでしょうか。もしそのパイロットは作成されてはいるが戦闘は行
    っていないと言うのなら問題は無いのですが、少しでも経験値を得ている場合、
    損傷率イベント内の
    Set 累積経験値[UnitID(スーパーピンチ)] 0
    の部分は
    Set 累積経験値[UnitID(スーパーピンチ)] ExpCheck(UnitID(スーパーピンチ))
    と書き換える必要があります。

    それから経験値云々の部分にも間違いがあります。UnitID(エマージー)となってい
    る部分はすべてUnitID(スーパーピンチ)に書き直してください。

    以上三点を修正した後にもう一度動作を確認してください。

    それから今回の質問には直接関係ありませんが、三つあるClearEventコマンドの内
    の真中のものは不要ではないでしょうか。
    それでは、報告をお待ちします。


解決済み!
引用返信/返信 削除キー/
■5164 / inTopicNo.4)  Re[2]: レベルの調整
□投稿者/ MrSamba -(2002/09/07(Sat) 19:35:28)
    レベルの件のフォローありがとうございます。

    *攻撃 スーパーピンチ 全:
    *攻撃 全 スーパーピンチ:
    スーパーピンチレベル = Level(スーパーピンチ)
    Exit

    というイベントラベルを付け加え、攻撃後、破壊イベント内にある
    攻撃後累積経験値 = ExpCheck(UnitID(スーパーピンチ))
    と言う二つの行を両方とも
    攻撃後累積経験値 = ExpCheck(UnitID(スーパーピンチ)) + 500 * (Level(スーパーピンチ) - スーパーピンチレベル)
    に書き換えてください。

    >GAMEMASTERさん
    因みに、ExpCheckというサブルーチンは安定版で累積経験値を求めるために私が組んだ
    サブルーチンです。
解決済み!
引用返信/返信 削除キー/
■5226 / inTopicNo.5)  Re[3]: レベルの調整
□投稿者/ ボライアン -(2002/09/13(Fri) 00:29:52)
http://isweb45.infoseek.co.jp/play/ostjast/index.htm
    すみません。返事が遅れてしまいました。
    実はここまで丁寧に解説していただいたのに恐縮ですが、
    シナリオの展開上片方のレベルはあがらなくてもいいことになりました。
    本当に申し訳ございません。
    さらに召喚ユニットなら経験値を直に召喚元に割り振れることに
    やっと気づきました。次からはHELPをもう少ししっかり読んでから
    質問をしたいと思います。

    お教えいただいた方法でやってみましたが、自分は根本から勘違いを
    しているようでまだ成功にいたっていません。
    もう少し知識をつけてから出直してきます。

    最後に、ここまでお付き合いいただき本当にありがとうございました。
    変数の使い方などがやっとわかりました。それでは。


解決済み!
引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Pass/

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

- Child Tree -
- Antispam Version -