| 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
参考になれば幸いです。
もう時間がないようでございますね。では、これにて退散させてもらいましょう。
|