コメント
このコメントは、【トピック】装備変更スクリプトへのコメントです。コメントの内容
コメントの内容(一番最初の投稿)
退会したユーザー(投稿日:2013/10/22 15:10/22/13)
こういう類の処理は、内部で何が起こっているのか
処理してる本人に吐かせるのが一番楽ですね。
"装備しない"選択時と同じように場合分けしましょー。
処理してる本人に吐かせるのが一番楽ですね。
case speakWithSelect(4,"装備","魔法","調合材料","もどる", "") when 0 #ここから武器選択画面 case speakWithSelect(6,"武器","盾","体防具","頭防具","装飾1","装飾2", "※装備の種類を選んでください。") when 0 wpn = createArray() if getEquipmentIdArray()[0] !=-1 pushArray(wpn, getValueFromItemParam(getItemParamWithId(getEquipmentIdArray()[0]), getItemViewNameIndex())) #現在装備している武器があれば、欄の一番上に表示する end i = 0 #↓問題の箇所1(29行目) while i < getArrayLength(getItemIdArray()) #変更前: <= #テスト用 test_1 = getItemIdArray()[i]; speak("getItemIdArray()[" + i + "] = " + test_1) test_2 = getItemParamWithId(test_1); speak("getItemParamWithId(getItemIdArray()[" + i + "]) = " + test_2) test_3 = getValueFromItemParam(test_2, getItemTypeIdIndex()) speak("getValueFromItemParam(getItemParamWithId(getItemIdArray()[" + i + "]), getItemTypeIdIndex()) = " + test_3) #テスト用終わり if getValueFromItemParam(getItemParamWithId(getItemIdArray()[i]), getItemTypeIdIndex()) == 1 pushArray(wpn, getValueFromItemParam(getItemParamWithId(getItemIdArray()[i]), getItemViewNameIndex())) end i = i + 1 #アイテム欄から武器を抽出してリスト化 end pushArray(wpn, "装備しない") pushArray(wpn, "やめる") #「装備しない」と「やめる」を追加 #ここから一覧の武器を選択したときの処理 close = 0 while close == 0 k = speakWithSelectArray(wpn, "※装備する武器を選んでください。") i = 0 while i <= getArrayLength(getItemIdArray()) #↓問題の箇所2(42行目) #テスト用 test_1 = getEquipmentIdArray()[0]; speak("getEquipmentIdArray()[0] = " + test_1) test_2 = getItemParamWithId(test_1); speak("getItemParamWithId(getItemIdArray()[0]) = " + test_2) test_3 = getValueFromItemParam(test_2, getItemViewNameIndex()) speak("getValueFromItemParam(getItemParamWithId(getItemIdArray()[0]), getItemViewNameIndex()) = " + test_3) #テスト用終わり if wpn[k] == getValueFromItemParam(getItemParamWithId(getEquipmentIdArray()[0]), getItemViewNameIndex()) close = 1 elsif wpn[k] == "装備しない" if getEquipmentIdArray()[0] !=-1 giveItem(getEquipmentIdArray()[0]) removeEquipmentWithIndex(0) close = 1 end #何も装備しない場合は、装備している武器を外してアイテム欄へ elsif wpn[k] == getValueFromItemParam(getItemParamWithId(getItemIdArray()[i]), getItemViewNameIndex()) if getEquipmentIdArray()[0] !=-1 giveItem(getEquipmentIdArray()[0]) removeEquipmentWithIndex(0) #既存の装備を外してアイテム欄に移動 end giveEquipment(getItemIdArray()[i]) removeItemWithIndex(getItemIndexWithId(getItemIdArray()[i])) #選択したアイテムを装備して、アイテム欄から消去 else wpn[k] == "やめる" close = 1 end i = i + 1 end end end end #コピペ分だけで動かすためにend2つ追加してます
- 29行目
- 42行目
"装備しない"選択時と同じように場合分けしましょー。
処理してる本人に吐かせるのが一番楽ですね。
- 29行目
既に修正してますが元の条件式だと所持数より1回多く処理してしまいます- 42行目
武器未装備状態で処理を行うとtest_1の段階でnullが発生してます。"装備しない"選択時と同じように場合分けしましょー。