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

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

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

■15109 / inTopicNo.1)  インクル作成中です・・・
  
□投稿者/ ナオ -(2004/09/13(Mon) 16:50:24) [ID:mkvEQGVj]
    現在、アイテム関係のインクルを作っています。
    しかし、とある問題がおこってしまいました。
    ##
    一つのページには、アイテム名が10個表示されます。
    黒色表記は作成可能・灰色表記は作成不可能とするつもりでした。

    例えば、
    アイテム「ポーション」には必要なアイテムもないので資金だけで作成可能。
    アイテム「ハイポーション」には「ポーション」が一つ必要。一つ消費して作成。

    ポーションを持ってないときはポーション(黒色)・ハイポーション(灰色)
    ポーションを持ってるときはどちらとも黒色と表記される筈なんですが、
    自分が作ったインクルでは、ポーションを持っていてもハイポーションが灰色なんです。
    しかし、ポーションをクリックすると、一緒にメガポーションも黒色になります。
    さらに、その黒色のハイポーションをクリックすると、アイテム作成が可能なんです。
    その時に、ハイポーションの必要な材料としてポーションの名前は出るのですが、
    ポーションの数が0のままでちゃんと表示されません。


    #ここからItemData#


    合成:

    #1ページ目#

    アイテム合成[1] = "ポーション"
    合成費用[ポーション] = 500
    持てる数[ポーション] = 50

    アイテム合成[2] = "ハイポーション"
    必要なアイテムT[ハイポーション] = "ポーション"
    合成費用[ハイポーション] = 1000
    持てる数[ハイポーション] = 50

    アイテム合成[3] = "エーテル"
    合成費用[エーテル] = 1000
    持てる数[エーテル] = 50

    アイテム合成[4] = "メガエーテル"
    必要なアイテムT[メガエーテル] = "エーテル"
    合成費用[メガエーテル] = 2000
    持てる数[メガエーテル] = 50

    アイテム合成[5] = "小枝"
    合成費用[小枝] = 200
    持てる数[小枝] = 99

    アイテム合成[6] = "木片"
    必要なアイテムT[木片] = "小枝"
    合成費用[木片] = 300
    持てる数[木片] = 99

    アイテム合成[7] = "木刀"
    必要なアイテムT[木刀] = "木片"
    合成費用[木刀] = 7000
    持てる数[木刀] = 5

    アイテム合成[8] = "木の杖"
    必要なアイテムT[木の杖] = "木片"
    合成費用[木の杖] = 7000
    持てる数[木の杖] = 5

    アイテム合成[9] = "木の槍"
    必要なアイテムT[木の槍] = "木刀"
    合成費用[木の槍] = 12000
    持てる数[木の槍] = 3

    アイテム合成[10] = "木のバット"
    必要なアイテムT[木のバット] = "木の杖"
    合成費用[木のバット] = 12000
    持てる数[木のバット] = 3


    Return

    持ってる数:

    Local アイテムの数
    アイテムの数 = 0


    For g = 1 to CountItem(未装備)

      If Item(未装備, g) = 作るアイテム Then
       Incr アイテムの数
      EndIf

    Next

    Return アイテムの数

    #ここからインクル#

    <Data\Itemの種類.dat>
    <Data\Item.txt>
    スタート:
    Money 1000000
    合成

    アイテム合成:

    Show
    Cls #E6C864



     作るアイテム = 選択してない
     今のページ = 1
     i = 今のページ
     最大のページ数 = 1

    Do


     表示するよ
     Wait Click

     Switch 選択

      Case 合成開始

        If 作るアイテム = 選択してない Then
          Talk システム
          合成するアイテムが選択されていません。
          End
          Skip
        EndIf

        If 資金 < 合成費用[作るアイテム] Then
          Talk システム
          資金が足りないので、合成できません。
          End
          Skip
        EndIf

        If 持ってる数(作るアイテム) >= 持てる数[作るアイテム] Then
          Talk システム
          これ以上合成できません。
          End
          Skip
        EndIf

               Confirm "$(作るアイテム)を作りますか?"

               If 選択 = 1 Then

                Item 作るアイテム
                RemoveItem 必要なアイテムT[作るアイテム]
            RemoveItem 必要なアイテムU[作るアイテム]
                Money (0 - 合成費用[作るアイテム])
     
                Talk システム
                "$(作るアイテム)を作りました。"
                End
                作るアイテム = 選択してない
                Skip
           EndIf




      Case 次のページへ
         Incr 今のページ 1
         作るアイテム = 選択してない

      Case 前のページへ
         Incr 今のページ -1
         作るアイテム = 選択してない

      Case 終了します
         Continue

      Case 作れないアイテム
        Talk システム
        アイテムが足りないので作れません。
        End
        作るアイテム = 選択してない

      Case Else
       If 選択 <> "" Then

    作るアイテム = 選択

        
       EndIf
     EndSw

    Loop While 1

    Return

    表示するよ:

    ClearObj
    ClearPicture



    Font 12pt #000000
     PaintString 20 200 【生成するアイテム】
     PaintString 200 200 【料金】
    Font 11pt #000000
     PaintString 300 200 所有数/最大の所有数

    If 作るアイテム = 選択してない Then
     PaintString 350 220 "─ / ─"

    ElseIf 作るアイテム = "" Then
    PaintString 350 220 "─ / ─"

    Else
    PaintString 350 220 "$(持ってる数(作るアイテム))/$(持てる数[作るアイテム])"

    EndIf

     PaintString 285 250 必要な物(アイテムの所有数)

    If 今のページ = 最大のページ数 Then
       If 今のページ = 1 Then
       Font 16pt
       PaintString 440 60 ▲
       PaintString 440 120 ▼
     Else
         Font 16pt
         PaintString 440 60 △
         PaintString 440 120 ▼
         HotPoint 前のページへ 420 0 59 95 前のページへ
       EndIf
    ElseIf 今のページ = 1 Then
       Font 16pt
       PaintString 440 60 ▲
       PaintString 440 120 ▽
       HotPoint 次のページへ 420 100 59 95 次のページへ
    Else
       Font 16pt
       PaintString 440 60 △
       PaintString 440 120 ▽
       HotPoint 前のページへ 420 0 59 95 前のページへ
       HotPoint 次のページへ 420 100 59 95 次のページへ
    EndIf

    If 作るアイテム = 選択してない Then
      PaintString 300 270 "T  ─"
    ElseIf 必要なアイテムT[作るアイテム] = "" Then
    PaintString 300 270 "T  ─"
    Else
    PaintString 300 270 "T $(必要なアイテムT[作るアイテム])($(持ってる数(必要なアイテムT[作るアイテム]))) "
    EndIf

    If 作るアイテム = 選択してない Then
      PaintString 300 290 "U  ─"
    ElseIf 必要なアイテムU[作るアイテム] = "" Then
    PaintString 300 290 "U  ─"
    Else
    PaintString 300 290 "U  $(必要なアイテムU[作るアイテム])($(持ってる数(必要なアイテムU[作るアイテム])))"
    EndIf
    Font 12pt
    PaintString 300 320 <所持している資金>
    PaintString 300 340 "$(資金)"
      PaintString 300 360 <合成に必要な資金>
    PaintString 300 380 "$(合成費用[作るアイテム])"

    DrawWidth 3

    Line 0 190 479 190
    Line 280 190 280 479
    Line 280 400 479 400
    Line 420 0 420 190
    Line 420 100 479 100


    Font 14pt #000000
     PaintString 300 420 合成開始
     PaintString 300 450 Exit
     HotPoint 合成開始 290 410 150 20 選択中のアイテムを合成します
     HotPoint 終了します 290 440 150 20 Exit


    K = 220

    アイテムリスト初め = ((i - 1) * 10 +1)
    アイテムリスト最後 = (今のページ * 10)



    For j = アイテムリスト初め to アイテムリスト最後





    If 必要なアイテムT[アイテム合成[j]] <> "" Then
      If 持ってる数(必要なアイテムT[アイテム合成[j]]) = 0 Then

          Font #808080
          PaintString 20 K アイテム合成[j]
          PaintString 200 K 合成費用[アイテム合成[j]]
          HotPoint 作れないアイテム 20 K 240 20 アイテム合成[j]
         
      Else
         

         If 必要なアイテムU[アイテム合成[j]] <> "" Then
           If 持ってる数(必要なアイテムU[アイテム合成[j]]) = 0 Then
       
            Font #808080
            PaintString 20 K アイテム合成[j]
            PaintString 200 K 合成費用[アイテム合成[j]]
            HotPoint 作れないアイテム 20 K 240 20 アイテム合成[j]
         
           Else
             Font #000000
             PaintString 20 K アイテム合成[j]
             PaintString 200 K 合成費用[アイテム合成[j]]
             HotPoint アイテム合成[j] 20 K 240 20 アイテム合成[j]
           EndIf
         Else
          Font #000000
          PaintString 20 K アイテム合成[j]
          PaintString 200 K 合成費用[アイテム合成[j]]
          HotPoint アイテム合成[j] 20 K 240 20 アイテム合成[j]
         
         EndIf
      EndIf
    Else
             Font #000000
             PaintString 20 K アイテム合成[j]
             PaintString 200 K 合成費用[アイテム合成[j]]
             HotPoint アイテム合成[j] 20 K 240 20 アイテム合成[j]

    EndIf
    K = (K + 20)

    Next 



    Return

    #ここまで#

    問題点がたくさんあるのですが、どこがおかしいのかじぶんではおて上げです。
    どこがおかしいのか、教えて下さい。お願いします。

引用返信/返信 削除キー/
■15116 / inTopicNo.2)  Re[1]: インクル作成中です・・・
□投稿者/ GAMEMASTER -(2004/09/13(Mon) 18:31:35) [ID:7IPRRBxv]
http://nagoya.cool.ne.jp/gamemaster/
     GAMEMASTERです。

    > 現在、アイテム関係のインクルを作っています。
    > しかし、とある問題がおこってしまいました。
    > ##
    > 一つのページには、アイテム名が10個表示されます。
    > 黒色表記は作成可能・灰色表記は作成不可能とするつもりでした。
    >
    > 例えば、
    > アイテム「ポーション」には必要なアイテムもないので資金だけで作成可能。
    > アイテム「ハイポーション」には「ポーション」が一つ必要。一つ消費して作成。
    >
    > ポーションを持ってないときはポーション(黒色)・ハイポーション(灰色)
    > ポーションを持ってるときはどちらとも黒色と表記される筈なんですが、
    > 自分が作ったインクルでは、ポーションを持っていてもハイポーションが灰色なんです。
    > しかし、ポーションをクリックすると、一緒にメガポーションも黒色になります。
    > さらに、その黒色のハイポーションをクリックすると、アイテム作成が可能なんです。
    > その時に、ハイポーションの必要な材料としてポーションの名前は出るのですが、
    > ポーションの数が0のままでちゃんと表示されません。
    >
    > (中略)
    >
    > 問題点がたくさんあるのですが、どこがおかしいのかじぶんではおて上げです。
    > どこがおかしいのか、教えて下さい。お願いします。

     以下のサブルーチンが原因と思われます。

    > 持ってる数:
    >
    > Local アイテムの数
    > アイテムの数 = 0
    >
    >
    > For g = 1 to CountItem(未装備)
    >
    >   If Item(未装備, g) = 作るアイテム Then
    >    Incr アイテムの数
    >   EndIf
    >
    > Next
    >
    > Return アイテムの数

     呼び出しの際に指定したアイテムの数を取得する処理のようですが、サブルーチンの引数を参照していないため実際には指定したアイテムではなくその時点で変数「作るアイテム」に記録されているアイテムの数を取得しようとしています。
     そのため、変数「作るアイテム」が未選択の状態へ初期化されるたびに材料の有無に関わらずアイテム名称の黒色/灰色表記の情報も初期化され、何かアイテムを選択する(変数「作るアイテム」にアイテム名称が代入される)ことでそのアイテムを材料とするアイテムの名称が黒色表示されることになり、さらに材料となるアイテムの所持数に関しても本来の材料ではなくその時選択したアイテムの所持数が表示されることになります。

     呼び出しの際に指定したアイテムをサブルーチンの処理に代入させる場合、Args関数を利用しましょう。
     詳細はヘルプをご覧下さい。


     If Item(未装備,g) = Args(1) Then


     参考になれば幸いです。

     もう時間がないようでございますね。では、これにて退散させてもらいましょう。
引用返信/返信 削除キー/
■15117 / inTopicNo.3)  ありがとう御座いました。
□投稿者/ ナオ -(2004/09/13(Mon) 20:16:54) [ID:mkvEQGVj]

    GAMEMASTER、ありがとう御座います。
    思ったとおりの動作が出来ました。

    Args関数ですか。よく分からなかったもので、少し使用を避けていました。
    やはり、関数をフルに活用しなければ思ったとおりのインクルは出来ないんですね。

    これからは気をつけます。ありがとう御座いました。
解決済み!
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -