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

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

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

■19183 / inTopicNo.1)  アビリティの弾数を回復させる
  
□投稿者/ るみゃスキー -(2006/09/21(Thu) 22:37:23) [ID:fBPFN8YD]
    2006/09/21(Thu) 22:43:14 編集(投稿者)

    味方全員のアビリティ回数を回復させようと思ってヘルプを見てみたのですが、
    味方のアビリティはアイテムで変化したりもするのでSetStockではめんどうくさいだろうと思いはじめてサブルーチンを作ってみようと思い立ってみました。

    今回はシナリオの途中に味方全員をそこそこ回復させようという時に使っています。

    イベント回復, りかば〜
    イ, 40, 自分, 即効, -, -, 補給;瞑想
    装填 霊力回復Lv5 HP回復Lv5 EN回復Lv5 SP回復Lv7 イベント=アビリティ弾数回復
    色々回復。


    ForEach 味方
    SpecialPower イベント回復
    Next


    アビリティ弾数回復:

    ForEach 味方

    Set アビリティ数 Info(アビリティ数)

    For i = 1 To アビリティ数
    Incr AN
    Set 最大弾数 Info(アビリティ数,AN,最大使用回数)
    SetStock AN 最大弾数
    Next

    UnSet AN
    UnSet 最大弾数
    UnSet アビリティ数

    Next

    Return


    味方一人一人のアビリティ数を調べて上から一つずつ最大弾数を調べてSetStockしていってみたのですが予想通り何も起こっていなさそうです。
    この方法が間違っている、他に方法がある、もっと簡単にできる、など何かあればどなたか返答よろしくお願いします。
引用返信/返信 削除キー/
■19184 / inTopicNo.2)  Re[1]: アビリティの弾数を回復させる
□投稿者/ 中箱 -(2006/09/22(Fri) 00:30:22) [ID:8NrUE61r]
    どうも、中箱です。


    まず、Info関数の使い方が間違っています。

    Info関数の書式はヘルプに書いてある通り、
    >Info([データ区分,]データ,情報種類,…)
    です。
    調べるべきデータを指定しなければ、求めたい値は取得できません。
    例えばアビリティの最大使用回数を調べるのならば、
     Info(ユニット,対象ユニットID,アビリティ,(アビリティ番号),最大使用回数)
    のようになります。
    (もちろん アビリティ番号 には適切な値を)


    つまり、動かないのは方法の問題と言うよりは確認不足です。



    作ったサブルーチンが動かない原因は色々ありえます。
    考え方そのものが間違っている事もあれば、関数の引数を勘違いしている場合、単純なタイプミスなどそれこそ無数に。

    考え方が違った場合はともかく、
    引数間違いやタイプミスならば、書いたものを一つ一つ確認していけば、
    大体の場合はどこが間違っていたのかは見つけられると思います。

    手間を惜しまずに地道に調べた方が早く解決する場合も多いでしょうし、
    解決するために試行錯誤することで、色々分かってくるでしょう。


    もちろん、質問するな、と言いたいわけではありませんが・・。
    そのためのココですし、答えたい人間が答えてるワケですし。



    ・・・さておき、

    こちらでは動かしてはいませんが、Info関数関連を正しいものに直せば動きそうかな、と。
    ただ、幾つか省けそうな所はあります。

    >For i = 1 To アビリティ数
    ですが、わざわざ「アビリティ数」という変数を作る必要はなく、
    代わりにInfo関数そのものを用いた方が記述が減ります。(動作速度になると分かりませんが・・)
    また、ここでは「i」も一つの変数として使われている事になりますので
    「AN」の代わりに「i」を用いて問題無いかと。


    なので、あらたな変数を用いずとも

    アビリティ弾数回復:
    For i = 1 To Info(〜〜略〜〜)
    SetStock i Info(ユニット,対象ユニットID,アビリティ, i ,最大使用回数)
    Next
    Return

    と記述を減らす事ができそうです。
    繰り返しになりますが、上のものの動作確認はしていませんので、ミスがありましたらすいません。

    頑張ってください。では。
引用返信/返信 削除キー/
■19188 / inTopicNo.3)  Re[2]: アビリティの弾数を回復させる
□投稿者/ るみゃスキー -(2006/09/22(Fri) 23:00:31) [ID:fBPFN8YD]
    >Info([データ区分,]データ,情報種類,…)
    のデータ区分などの意味がわからず適当にやっていました、指摘ありがとうございます。
    略せる部分もなるほどと感動したのですが何故か思う動作をしてくれません。

    アビリティ弾数回復:

    ForEach 味方

    For i = 1 To Info(ユニット,アビリティ,アビリティ数)
    Incr AN
    Set 最大弾数 Info(ユニット,アビリティ, i ,最大使用回数)
    SetStock AN 最大弾数
    Next

    Next

    Return


    アビリティ弾数回復:
    For i = 1 To Info(ユニット,対象ユニットID,アビリティ,アビリティ数)
    SetStock i Info(ユニット,対象ユニットID,アビリティ, i ,最大使用回数)
    Next
    Return


    両方とも試したり既にSPの時点でForEachを使ってたりするので細かい所を変えてみたりしましたがアビリティの弾数は変わらずでした。
    info関数の書式が理解したつもりで実はまだ理解できてないという理由だといいのですがあってるとなるとどこがおかしいのかさっぱりわかりません。
    どうしたらいいでしょうか?
引用返信/返信 削除キー/
■19189 / inTopicNo.4)  Re[3]: アビリティの弾数を回復させる
□投稿者/ 中箱 -(2006/09/23(Sat) 01:46:46) [ID:8NrUE61r]
    (るみゃスキーさんのHNに含まれる半角カナは、文字化け回避の為に全角カナで代用させていただきます。ご了承ください)

    >info関数の書式が理解したつもりで実はまだ理解できてないという理由だといいのですがあってるとなるとどこがおかしいのかさっぱりわかりません。
    >どうしたらいいでしょうか?

    全然良くありません。

    Info関数を正確に理解できてないかもしれないと思っているのならば、理解できているかどうかを確認しなければしょうがないでしょう。

    その確認は自分で試せる事ですし、
    逆に、自分で確認できなければ、
    その都度誰かに質問して返答を待つ、という効率の悪い手段をとらなくては先に進めないという事にもなります。



    ・・たとえば関数が正しくなっているか、という確認ならば、
    ヘルプのTalkコマンドの項にも
    >メッセージ内に「$(式)」という文字列を入れることで任意の式の値を表示することもできます。
    と書かれていますが、例えば
     Talk
     $(Info(〜〜略〜))
     end
    のように記述し、動かした時に
    きちんとした値が表示されるかどうかを見るのが、
    関数の書式が合っているかどうかを確認するのには簡単な方法だと思います。
    当然、本来とは違う値が表示されたのならば、間違っているという事です。




    >データ区分などの意味がわからず適当にやっていました
    分からないものを適当にやったら、動かないのはむしろ当然でしょう・・・。
    むしろ動いた方が驚きですよ。

    分からない所を放置したままで先に進んだところで、動かなければ全く意味がないのですから。
    そのようないいかげんな作り方はやめた方がいいと思います。慣れていないのならば特に。

    万全の確認と、細心の注意をもって作る事を薦めます。



    前回も書きましたが、「頑張って」ください。
    では。
引用返信/返信 削除キー/
■19202 / inTopicNo.5)  Re[4]: アビリティの弾数を回復させる
□投稿者/ 27番 -(2006/09/28(Thu) 21:09:31) [ID:fBPFN8YD]
    半角は文字化けするかもしれないらしいのでHM変えてみました。

    書式が間違っておらず正常に動いているかどうかを確認する方法として$(式)の存在だけは知っていたのですが今までどう使うかわからず後回しにしていました。
    とりあえずset info(〜)で調べられるんじゃないかと考え付いたので何とか問題点も見つかりそうです。

    info関数がこれであっているのかわからない、果たしてアビリティの弾数を回復させられるのかもわからない。
    だから質問してみました。

    >>万全の確認と、細心の注意をもって作る事を薦めます。
    これが出来ればいいのですが気持ちがあせったりとヘルプを読み返しても理解できないまま、単純な掛け算で計算ミスをしているのにこれが正しいと何故か頭で思ってしまっていて永遠と悩むような感じです。

    こういうのを作るのに向いている性格ではないとよくいわれますが、恐らくこういうところが向いていないのでしょう。
    質問する側としてストレスが溜まるのもよくわかりますがどうか生暖かい目で見てもらえるとありがたいです。

    なんだかよくわからない文になりましたが、色々とありがとうございました。
解決済み!
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -