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

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

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

■21609 / inTopicNo.1)  インクルードのミス
  
□投稿者/ 猫の知らせ -(2009/06/26(Fri) 09:00:28) [ID:MwMHSIkI]
    はじめまして
    今作っているインクルードにて途中途中分からない箇所があるので指摘をお願いします

    内容としてはバトルの開始前にチーム1〜2の味方を登録し
    マップコマンドにて入れ替えが可能になるというものです

    とりあえず今は味方を全て下げてパーティー2のキャラを出すことには成功しました
    しかしこのパーティー1と2のキャラを戦闘開始前に登録し、戦闘中に切り替える方法

    また、これは5人いるときの記述ですが5人以下の場合の処理がどうにもわかりません
    お願いします

    マップコマンド ローテーション (味方数 > 5):
    #片方のチームを撤退させもう片方のチームを出撃させる
    confirm パーティーチェンジをしますか?
    if 選択 = 1 then
    #味方の位置を記録
    ForEach 味方 パーティー1[1]
    PrevX[対象ユニットID] = X()
    PrevY[対象ユニットID] = Y()
    Next
    PlaySound Reload.wav

    ################パーティー1####################
    #パーティー2のチームが出撃されているのならこちらを表示させたい
    DrawWidth 1
    Color RGB(0, 0, 0)
    Line 260 0 480 480 BF
    Font 14pt P明朝 RGB(255, 255, 255) Regular Italic
    PaintString 280 40 †パーティー1のキャラ†

    #パーティー2に登録しているユニットを表示
    paintpicture パーティー1[1] 290 80 - - 保持
    PaintString 360 80 $(パーティー1[1])

    paintpicture パーティー1[2] 290 150 - - 保持
    PaintString 360 150 $(パーティー1[2])

    paintpicture パーティー1[3] 290 220 - - 保持
    PaintString 360 220 $(パーティー1[3])

    paintpicture パーティー1[4] 290 290 - - 保持
    PaintString 360 290 $(パーティー1[4])

    paintpicture パーティー1[5] 290 360 - - 保持
    PaintString 360 360 $(パーティー1[5])


    confirm これらのチームと入れ替えますか?
    if 選択 = 1 then

    escape 味方

    Launch パーティー1[1] PrevX[対象ユニットID] PrevY[対象ユニットID]
    Launch パーティー1[2] X(パーティー1[1]) Y(パーティー1[1])
    Launch パーティー1[3] X(パーティー1[1]) Y(パーティー1[1])
    Launch パーティー1[4] X(パーティー1[1]) Y(パーティー1[1])
    Launch パーティー1[5] X(パーティー1[1]) Y(パーティー1[1])
    refresh

    endif
    #出撃中の味方を撤退
    PlaySound Whiz.wav
    ForEach 味方 パーティー1
    escape 味方
    Next
    endif
    ################################################
    ################パーティー2####################
    DrawWidth 1
    Color RGB(0, 0, 0)
    Line 260 0 480 480 BF
    Font 14pt P明朝 RGB(255, 255, 255) Regular Italic
    PaintString 280 40 †パーティー2のキャラ†

    #パーティー2に登録しているユニットを表示
    paintpicture パーティー2[1] 290 80 - - 保持
    PaintString 360 80 $(パーティー2[1])

    paintpicture パーティー2[2] 290 150 - - 保持
    PaintString 360 150 $(パーティー2[2])

    paintpicture パーティー2[3] 290 220 - - 保持
    PaintString 360 220 $(パーティー2[3])

    paintpicture パーティー2[4] 290 290 - - 保持
    PaintString 360 290 $(パーティー2[4])

    paintpicture パーティー2[5] 290 360 - - 保持
    PaintString 360 360 $(パーティー2[5])

    confirm これらのチームと入れ替えますか?
    if 選択 = 1 then

    escape 味方

    For i = 1 To 1
    Launch パーティー2[1] PrevX[対象ユニットID] PrevY[対象ユニットID]
    Launch パーティー2[2] X(パーティー2[1]) Y(パーティー2[1])
    Launch パーティー2[3] X(パーティー2[1]) Y(パーティー2[1])
    Launch パーティー2[4] X(パーティー2[1]) Y(パーティー2[1])
    Launch パーティー2[5] X(パーティー2[1]) Y(パーティー2[1])
    refresh
    next
    endif
    #出撃中の味方を撤退
    PlaySound Whiz.wav
    ForEach 味方 パーティー1
    escape 味方
    Next
    endif
    ######################################################
    redraw
    exit


引用返信/返信 削除キー/
■21615 / inTopicNo.2)  Re[1]: インクルードのミス
□投稿者/ Mr -(2009/06/27(Sat) 10:57:16) [ID:i5S9sUuV]
    >#パーティー2のチームが出撃されているのならこちらを表示させたい
    これは、変数で「出撃中パーティ」を作って管理するといいでしょう。

    >また、これは5人いるときの記述ですが5人以下の場合の処理がどうにもわかりません
    配列の要素数を返す「Count関数」を使い、要素数でループ回数を調整してはどうでしょうか。
引用返信/返信 削除キー/
■21622 / inTopicNo.3)  Re[2]: インクルードのミス
□投稿者/ 猫の知らせ -(2009/06/28(Sun) 21:59:11) [ID:MwMHSIkI]
    Mrさんコメント遅れました

    指摘されたとおりに直していったところ上手く動きました
    直したものがしたです
    マップコマンド ローテーション:
    #片方のチームを撤退させもう片方のチームを出撃させる

    confirm パーティーチェンジをしますか?
    if 選択 = 1 then
    #味方の位置を記録
    ForEach 味方 出撃
    PrevX[対象ユニットID] = X()
    PrevY[対象ユニットID] = Y()
    Next
    PlaySound Reload.wav
    #######################################################
    #もしパーティー1が出てないなら
    if パーティー1出撃 = 0 then
    DrawWidth 1
    Color RGB(0, 0, 0)
    Line 260 0 480 480 BF
    Font 14pt P明朝 RGB(255, 255, 255) Regular Italic
    PaintString 280 40 †パーティー1のキャラ†

    #パーティー2に登録しているユニットを表示
    paintpicture パーティー1[1] 290 80 - - 保持
    PaintString 360 80 $(パーティー1[1])


    if パーティー1[2] then
    paintpicture パーティー1[2] 290 150 - - 保持
    PaintString 360 150 $(パーティー1[2])


    elseif パーティー1[3] then
    paintpicture パーティー1[3] 290 220 - - 保持
    PaintString 360 220 $(パーティー1[3])


    elseif パーティー1[4] then
    paintpicture パーティー1[4] 290 290 - - 保持
    PaintString 360 290 $(パーティー1[4])


    elseif パーティー1[5] then
    paintpicture パーティー1[5] 290 360 - - 保持
    PaintString 360 360 $(パーティー1[5])

    endif
    ######################################################


    #######################################################
    #もしパーティー1が出てるなら
    elseif パーティー1出撃 = 1 then
    DrawWidth 1
    Color RGB(0, 0, 0)
    Line 260 0 480 480 BF
    Font 14pt P明朝 RGB(255, 255, 255) Regular Italic
    PaintString 280 40 †パーティー2のキャラ†

    #パーティー2に登録しているユニットを表示
    paintpicture パーティー2[1] 290 80 - - 保持
    PaintString 360 80 $(パーティー2[1])

    paintpicture パーティー2[2] 290 150 - - 保持
    PaintString 360 150 $(パーティー2[2])

    paintpicture パーティー2[3] 290 220 - - 保持
    PaintString 360 220 $(パーティー2[3])

    paintpicture パーティー2[4] 290 290 - - 保持
    PaintString 360 290 $(パーティー2[4])

    paintpicture パーティー2[5] 290 360 - - 保持
    PaintString 360 360 $(パーティー2[5])

    endif
    ######################################################
    confirm これらのチームと入れ替えますか?
    if 選択 = 1 then
    redraw
    wait 4
    escape 味方

    if パーティー1出撃 = 0 then
    Launch パーティー1[1] PrevX[対象ユニットID] PrevY[対象ユニットID]

    if パーティー1[2] then
    Launch パーティー1[2] X(パーティー1[1]) Y(パーティー1[1])

    elseif パーティー1[3] then
    Launch パーティー1[3] X(パーティー1[1]) Y(パーティー1[1])

    elseif パーティー1[4] then
    Launch パーティー1[4] X(パーティー1[1]) Y(パーティー1[1])

    elseif パーティー1[5] then
    Launch パーティー1[5] X(パーティー1[1]) Y(パーティー1[1])

    refresh
    endif
    set パーティー1出撃 1

    elseif パーティー1出撃 = 1 then
    Launch パーティー2[1] PrevX[対象ユニットID] PrevY[対象ユニットID]
    Launch パーティー2[2] X(パーティー2[1]) Y(パーティー2[1])
    Launch パーティー2[3] X(パーティー2[1]) Y(パーティー2[1])
    Launch パーティー2[4] X(パーティー2[1]) Y(パーティー2[1])
    Launch パーティー2[5] X(パーティー2[1]) Y(パーティー2[1])
    refresh
    #next

    set パーティー1出撃 0

    endif
    #出撃中の味方を撤退
    PlaySound Whiz.wav
    ForEach 味方 パーティー1
    デモアタック 対象ユニットID 対象ユニットID 隠れ身発動
    escape 味方
    Next

    endif
    endif
    redraw


    exit

    それで次の質問なのですが
    このパーティー1の1人目〜5人目
    パーティー2の1人目〜5人目を選んでもらうにはどうすれば良いのでしょうか?

    ざっくばらんに書いてみたのですがそれでは動くはずも無く困っています

    #味方一覧という変数を作成
    set 味方一覧
    #味方一覧というのは味方の数
    味方一覧 = 味方数
    #選んでもらう
    ask 味方一覧 パーティー1の味方を選んでください
    ask 終了
    switch 選択

    case 1
    set パーティー1[1] $(選択)
    $(選択) = Info(ユニット,(),愛称)
    incr 味方一覧[$(選択)] -1

    case 2
    set パーティー1[2] $(選択)
    $(選択) = Info(ユニット,(),愛称)
    incr 味方一覧[$(選択)] -1

    case 3
    set パーティー1[3] $(選択)
    $(選択) = Info(ユニット,(),愛称)
    incr 味方一覧[$(選択)] -1

    case 4
    set パーティー1[4] $(選択)
    $(選択) = Info(ユニット,(),愛称)
    incr 味方一覧[$(選択)] -1

    case 5
    set パーティー1[5] $(選択)
    $(選択) = Info(ユニット,(),愛称)
    incr 味方一覧[$(選択)] -1

    endsw

    #今度はパーティー2のキャラ
    ask 味方一覧 パーティー1の味方を選んでください
    ask 終了
    switch 選択

    case 1
    set パーティー2[1] $(選択)
    $(選択) = Info(ユニット,(),愛称)
    incr 味方一覧[$(選択)] -1

    case 2
    set パーティー2[2] $(選択)
    $(選択) = Info(ユニット,(),愛称)
    incr 味方一覧[$(選択)] -1

    case 3
    set パーティー2[3] $(選択)
    $(選択) = Info(ユニット,(),愛称)
    incr 味方一覧[$(選択)] -1

    case 4
    set パーティー2[4] $(選択)
    $(選択) = Info(ユニット,(),愛称)
    incr 味方一覧[$(選択)] -1

    case 5
    set パーティー2[5] $(選択)
    $(選択) = Info(ユニット,(),愛称)
    incr 味方一覧[$(選択)] -1

    endsw

引用返信/返信 削除キー/
■21624 / inTopicNo.4)  Re[3]: インクルードのミス
□投稿者/ Mr -(2009/06/29(Mon) 09:23:19) [ID:LAfz38T0]
    想定している動作がつかめないのですが、
    パーティを作成するのが上手くいかないのですか?

    「5人選ばせる」には、5人選択するまで抜けられないループを作って、
    「5人選択する」「もう選べるユニットがいない」「プレイヤーによる選択終了」のいずれかの条件を満たした状態でループを抜ければいいでしょう。

    ループ開始(5回)
     Askでユニットを選択させる
     選択に応じて処理
      ユニットが選択されたらパーティに追加
      選択がキャンセルされたら強制ループ抜け
     残り0ユニットなら強制ループ抜け
    ループ

    イメージとしてはこんな感じです。
    例なので荒く造ってありますので、必要に応じて丁寧に修正してみてください。
    (「これでいい」の選択終了用選択肢を追加したりとか)
引用返信/返信 削除キー/
■21625 / inTopicNo.5)  Re[3]: インクルードのミス
□投稿者/ 中箱 -(2009/06/29(Mon) 13:30:00) [ID:sONr1euU]
    >ざっくばらんに書いてみたのですがそれでは動くはずも無く困っています


    提示されたものを見る限りですが、闇雲に動きすぎな気がします。



    Mrさんが以前(No21485で)、他の質問に対して書かれたものから抜粋気味の引用ですが

    >完成を急がないで、順番を追って作業した方がいいと思いますよ。
    >私は、大体以下の様にして作業しています。
    >これを端折ったものは自分でも意味不明なものに仕上がります。

    >1.実現したいことをできるだけ言葉で書いてみる
    >2.どうやって実現するのか、小分けにして考えてみる
    >3.実際にコマンドを打っていく

    これを実践してみてはどうでしょうか。

    現在の猫の知らせさんは、上の1.の段階を飛ばして3に突撃し、まんまと迷子予備軍になってる感じがします。





    それと、

     配列の使い方が分からないのであれば、調べながら試しまくったり、「配列の使い方について」の質問をする。
     Askコマンドがを良くわかっていないのであれば、自分の実現させたいことから一度離れ、単純なものでAskコマンドを使う練習をする。

    こういったことを怠ってコマンドを使おうとしていませんか?


    コマンドに関する知識不足を放置したままで無理やり進もうとするのではなく
    (質問するなり色々試すなりして)足りていない部分を解決してから具体的なコマンドを書いていかないと、まず上手くいきません。

    コマンドの基本的な使い方が理解できていない状態で、
    それらを複雑に組み合わせたものを作ろうとしてもなかなかちゃんと動くものはできませんし
    たまたま動く(ように見える)ものが出来ても、様々なバグが潜んでいるかもしれません。
    いざバグが出た時にはその修正のままなりませんし、どんなバグが起こるかの事前の予想も難しくなります。良いことは一つもありません。
    応用をしたいのであればまず基本から。急がば回れです。


    頑張って、ください
    では
引用返信/返信 削除キー/
■21626 / inTopicNo.6)  Re[4]: インクルードのミス
□投稿者/ 猫の知らせ -(2009/06/30(Tue) 22:24:41) [ID:MwMHSIkI]
    おふた方のコメントを参考に作ってみたのですがask部分が動作せず
    混乱しています大変わがままだと思いますが行程ではなく式、つまり解を
    掲示してもらえないでしょうか

    キャラ選択:
    #パーティー1の人数
    Set Party_1 0
    #パーティー2の人数
    set Party_2 0
    #味方全ての数
    set y 0
    ForEach 味方 全て
    incr y
    Next
    #選んだキャラの総数が5になるまで繰り返す
    #この部分は表示されず飛ばされる
    For i = 1 To 5
    ask y パーティー1の味方を選んでください キャンセル可 拡大 連続表示
    ask 終了

    switch y

    case ○
    #パーティー1を増やす
    incr パーティー1[Args(1)] 1
    #味方総数を減らす
    incr y -1
    endsw

    If n = 5 Then
    #ループを終了
    Break
    EndIf
    Next


    exit
引用返信/返信 削除キー/
■21627 / inTopicNo.7)  Re[5]: インクルードのミス
□投稿者/ 中箱 -(2009/07/01(Wed) 00:42:42) [ID:sONr1euU]
    2009/07/01(Wed) 00:55:48 編集(投稿者)

    >おふた方のコメントを参考に作ってみたのですがask部分が動作せず混乱しています

    作るよりも先に、言葉で書いてみる所から始めたらどうか
    …という内容のレスをしたつもりだったのですが。

    その部分については一切参考にならなかったようで、割としょんぼりです。



    >行程ではなく式、つまり解を掲示してもらえないでしょうか

    全く動作テストをしていないのですが、例えばこんな感じでしょうか。
    (エラー出したり動かなかったりしたら直しますので言って下さい。出来るだけ詳しく。言葉で)


    また、
    解を出すためには、解くべき問題が明確にされている必要があります。
    今回は、具体的にどんな変数にどんな情報が入っていてほしいとか、どんな順番でプレイヤーに操作してもらうか、など本来イベントファイルを書くために必要不可欠な情報が欠けているため
    これでは、猫の知らせさんが欲しい機能には足りないものになっているでしょう。



    キャラ選択:
    Foreach 味方 全て
     候補[対象ユニットID] = 対象ユニットID
    next
    Unset パーティー1
    Unset パーティー2
    Local i
    For i = 1 to 5
     ask 候補 パーティー1の味方を選んでください
     パーティー1[i] = 選択
     Unset 候補[選択]
     If Count(候補) = 0 Then
      Unset 候補
      Exit
     Endif
    Next
    For i = 1 to 5
     ask 候補 パーティー2の味方を選んでください
     パーティー2[i] = 選択
     Unset 候補[選択]
     If Count(候補) = 0 Then
      Unset 候補
      Exit
     Endif
    Next
    Unset 候補
    Exit



    また、これを利用したシナリオをもしも自分以外の誰かに公開する前には、
    配列について、askコマンドについて、ForやDoコマンドによるループについて、
    などをある程度理解し、
    どのような処理を行っているのかを把握した上で公開して欲しいな、と。プレイする側として
引用返信/返信 削除キー/
■21628 / inTopicNo.8)  Re[6]: インクルードのミス
□投稿者/ 猫の知らせ -(2009/07/02(Thu) 17:15:47) [ID:MwMHSIkI]
    中箱さん

    ありがとうございます。

    それと生意気言ってすみませんでした。
解決済み!
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -