装備を強制的に外す(質問掲示板)
投稿: alnyan
投稿:2012/03/17 01:00:17(最新:2012/03/17 23:49:17)
またまた質問失礼します。
主人公の装備を強制的に変えるため、以下の例文を使っています。
speak("「剣」を手に入れた!")
speak("主人公は「剣」を装備した!")
removePartyMemberEquipmentWithIndex(
playerCharacter, getPartyMemberEquipmentIndexWithId(playerCharacter, 44444)
)
giveEquipment(55555)
ゲーム内ではちゃんと理想通りに進行するのですが、どうしてもテストプレー画面右に
「not defined variable : playerCharacter」というエラーが出てしまいます。どこを直せば良いのでしょうか。
ツイート
主人公の装備を強制的に変えるため、以下の例文を使っています。
- 仮に前の装備ID=44444
- 仮に剣のID=55555
speak("「剣」を手に入れた!")
speak("主人公は「剣」を装備した!")
removePartyMemberEquipmentWithIndex(
playerCharacter, getPartyMemberEquipmentIndexWithId(playerCharacter, 44444)
)
giveEquipment(55555)
ゲーム内ではちゃんと理想通りに進行するのですが、どうしてもテストプレー画面右に
「not defined variable : playerCharacter」というエラーが出てしまいます。どこを直せば良いのでしょうか。
コメントする
コメントするには、ログインする必要があります。
コメント一覧
"playerCharacter"
は" "で囲って文字列で指定しないとダメなのです
そのまま書くと「登録されていない新しい単語=オリジナルの変数名」と判断されちゃいます
さて、アイテムの管理には配列変数の仕組みを知っておかないといけません
・スクリプト/配列
で、~WithIndexとある関数は、何番目に持っているアイテムなのかを表す数値を与えないといけません
コレが所持配列のインデックスというワケです
装備個所は表示されている順に0から番号が決まっています
(持ち物の場合は単純に何番目にあるのがID何番のアイテム、という扱いです)
そして本題
削除するだけなら、removePartyMemberEquipmentWithIndex()を使えば一発で消せます
ただし、装備品なので削除した後に所持アイテムとして与える場合(装備を外したいだけのとき)は消す前にその品が何だったかを調べておかないと、所持品として持たせる事ができないので注意
は" "で囲って文字列で指定しないとダメなのです
そのまま書くと「登録されていない新しい単語=オリジナルの変数名」と判断されちゃいます
さて、アイテムの管理には配列変数の仕組みを知っておかないといけません
・スクリプト/配列
で、~WithIndexとある関数は、何番目に持っているアイテムなのかを表す数値を与えないといけません
コレが所持配列のインデックスというワケです
#例 #剣1111、鎧2222、魔法3333をgiveEquipment(n)で強制装備させた場合 soubi=getEquipmentIdArray() speak("装備品配列soubi=",soubi) #表示結果は #装備品配列soubi=1111,-1,-1,2222,-1,-1,-1,-1,-1,3333,-1,-1,-1,-1,-1,-1
装備位置のインデックス 0 武器 1 盾 2 鎧 3 頭 4 足 5~8 装飾品 9~15 魔法
そして本題
削除するだけなら、removePartyMemberEquipmentWithIndex()を使えば一発で消せます
ただし、装備品なので削除した後に所持アイテムとして与える場合(装備を外したいだけのとき)は消す前にその品が何だったかを調べておかないと、所持品として持たせる事ができないので注意
無事にエラーを解消することができました。
今作っているゲームでは装備はより強いものに
入れ替えていく(前の装備は削除)システムを使う予定なので
なとおときさんの方法でうまくできそうですが、
せっかくなので配列の使い方も早いうちに覚えておこうと思います。