RGSS3 武器、盾、頭、身体、装飾品を個別に種類・装備なしをスクリプトで取得したい
アクターxxx番の
武器、盾、頭、身体、装飾品について
それぞれの種類、
それぞれについて装備なし
を判定するスクリプトを教えて下さい。
$game_actors[xxx].equips[yyy].id==zzz
というのを調べたのでまず以下の様にやってみました。
Aceのスクリプトエディタ>▼ゲームオブジェクト>Game_Interpreterの一番下、最後のendの上に、
#--------------------------------------------------------------------------
# ● 装備判定
#--------------------------------------------------------------------------
def soubi
if $game_actors[1].equips[0].id==2
$game_message.add("0武器が2ハンドアックス")
end
end
と書き、マップで適当な人物イベントの実行欄で
◆スクリプト:soubi
と設定しました。
アクター1エリックが2ハンドアックスを装備して人物に話しかけると、
イベントコマンドsoubiが発動して文章の表示が実行されました。
そして
def soubi
if $game_actors[1].equips[0].id==5
$game_message.add("5")
end
if $game_actors[1].equips[1].id==45
$game_message.add("45")
end
if $game_actors[1].equips[2].id==10
$game_message.add("10")
end
if $game_actors[1].equips[3].id==25
$game_message.add("25")
end
if $game_actors[1].equips[4].id==55
$game_message.add("55")
end
endとやると文章表示で
5
45
10
25 ウィンドウ切り替え
55
と出ました。装備の種類は取得できたようです。
ここで装備を全部外して話しかけるとnilエラーになりました。
部位ごとの装備をしていない判定はどうすればいいでしょう。
if $game_actors[1].weapons.compact.empty?
$game_message.add("武器無し")
end
ではエラーになりました。
以上よろしくお願いします。
RGSS3 武器、盾、頭、身体、装飾品を個別に種類・装備なしをスクリプトで取得したい
Re: RGSS3 武器、盾、頭、身体、装飾品を個別に種類・装備なしをスクリプトで取得したい
?消えてる?
どなただったか分からない・・・
先程の方ありがとうございます。先程のスクリプトを上に持って来て
def actor_equips_id(actor_id, slot_id)
actor = $game_actors[actor_id]
return 0 unless actor
if actor.equips[slot_id]
return actor.equips[slot_id].id
else
return 0
end
end
def soubi
if actor_equips_id(1, 0)==6
$game_message.add("6の武器を装備している")
end
if actor_equips_id(1, 0)==0
$game_message.add("武器無し")
end
if actor_equips_id(1, 1)==45
$game_message.add("45の盾を装備している")
end
if actor_equips_id(1, 1)==0
$game_message.add("盾無し")
end
if actor_equips_id(1, 2)==36
$game_message.add("36を頭に装備している")
end
if actor_equips_id(1, 2)==0
$game_message.add("頭無し")
end
if actor_equips_id(1, 3)==22
$game_message.add("22の鎧を装備している")
end
if actor_equips_id(1, 3)==0
$game_message.add("身体無し")
end
if actor_equips_id(1, 4)==59
$game_message.add("59の装飾品を装備している")
end
if actor_equips_id(1, 4)==0
$game_message.add("装飾品無し")
end
end
これでテストしたところ上手くいきました。
ありがとうございました。
どなただったか分からない・・・
先程の方ありがとうございます。先程のスクリプトを上に持って来て
def actor_equips_id(actor_id, slot_id)
actor = $game_actors[actor_id]
return 0 unless actor
if actor.equips[slot_id]
return actor.equips[slot_id].id
else
return 0
end
end
def soubi
if actor_equips_id(1, 0)==6
$game_message.add("6の武器を装備している")
end
if actor_equips_id(1, 0)==0
$game_message.add("武器無し")
end
if actor_equips_id(1, 1)==45
$game_message.add("45の盾を装備している")
end
if actor_equips_id(1, 1)==0
$game_message.add("盾無し")
end
if actor_equips_id(1, 2)==36
$game_message.add("36を頭に装備している")
end
if actor_equips_id(1, 2)==0
$game_message.add("頭無し")
end
if actor_equips_id(1, 3)==22
$game_message.add("22の鎧を装備している")
end
if actor_equips_id(1, 3)==0
$game_message.add("身体無し")
end
if actor_equips_id(1, 4)==59
$game_message.add("59の装飾品を装備している")
end
if actor_equips_id(1, 4)==0
$game_message.add("装飾品無し")
end
end
これでテストしたところ上手くいきました。
ありがとうございました。
Re: RGSS3 武器、盾、頭、身体、装飾品を個別に種類・装備なしをスクリプトで取得したい
横からすみません。確かについてた返信が消えてしまってますね…。
質問の件ですが、私も以前同じようなことをしようとしてエラーが出たことがありました。
ついでなのでそのときに解決した書き方を書いておきます。装備スロットをいじってなければこれでも同じような動作ができるかと思います。
何かのご参考になれば幸いです。
質問の件ですが、私も以前同じようなことをしようとしてエラーが出たことがありました。
ついでなのでそのときに解決した書き方を書いておきます。
コード: 全て選択
def soubi
eq = ["武器","盾","頭","身体","装飾品"]
$game_actors[1].equips.each_with_index{|val,index|
if val.respond_to?(:id)
$game_message.add("#{eq[index]} #{val.name}を装備している")
#↑idだけで良ければ $game_message.add("#{eq[index]} ID#{val.id}を装備している")
else
$game_message.add("#{eq[index]} 装備なし")
end
}
end
何かのご参考になれば幸いです。
Re: RGSS3 武器、盾、頭、身体、装飾品を個別に種類・装備なしをスクリプトで取得したい
HAL様ありがとうございます。
そのスクリプトのみをGame_Interpreterの一番下、最後のendの上に貼り、
武器 xxxxを装備している
盾 xxxxを装備している
...
とか
武器 装備なし
とか文章の表示されるのを確認しました。
enum.each_with_index {|item, idx| block }
obj.respond_to?(name, private = false)とかも調べました。
勉強になりました。
参考にさせていただきます。
ありがとうございました。
そのスクリプトのみをGame_Interpreterの一番下、最後のendの上に貼り、
武器 xxxxを装備している
盾 xxxxを装備している
...
とか
武器 装備なし
とか文章の表示されるのを確認しました。
enum.each_with_index {|item, idx| block }
obj.respond_to?(name, private = false)とかも調べました。
勉強になりました。
参考にさせていただきます。
ありがとうございました。