ary = [] ary[0] = 100; ary[1] = "aaa" #(または ary = [100, "aaa"]) p ary[0] #=> 100 p ary[1] #=> "aaa"と、0から始まる数値で格納された値を参照するのに対し、「ハッシュ」は
hs = {}
hs["アルシェス"] = "あるしぇす"
hs["バジル"] = "ばじる"
#(または hs = {"アルシェス"=>"あるしぇす", "バジル"=>"ばじる"})
と、数値以外で参照することができるという特徴があります。ここでは「配列」のみを扱います。
基本的な使い方は大体ヘルプに載っているので、便利な使い方だけ。
アクター全員に同じ処理を行う
# ** 全員のレベルを上げる ** # 1 から $data_actors.size までのすべての整数を一つずつ # i に代入しながらループを回す for i in 1...$data_actors.size # ID:i のアクターを取得 actor = $game_actors[i] # レベルを 1 上げる actor.level += 1 end
特定の要素のインデックスを拾う
x = $game_party.actors.index($game_actors[1])とすれば、xにアルシェスの位置が返ります。
e_id = $data_system.elements.index("両手持ち")
とすれば、e_idに両手持ちのIDが格納される、という具合です。
for i in 1...$data_system.elements.size
if $data_system.elements[i] == "両手持ち"
e_id = i
break
end
end
とでもすれば取得できますが、やはり1行で済ませる方がスマートです。特定の要素が含まれているか判定する
if $game_party.actors.include?($game_actors[1]) # 入っている場合の処理 else # 入っていない場合の処理 endこのようにします。
ここでArray#indexとArray#include?の2つを使用した例を示します。
本サイト内のスクリプトでも多用されている「武器やスキルの属性判定」です。
これは、次のような手順で行っています。
# アルシェスが武器を装備している場合(武器IDが0ではない)
if $game_actors[1].weapon_id > 0
# [両手持ち]の属性IDを取得
e_id = $data_system.elements.index("両手持ち")
# アルシェスが装備している武器を取得
weapon = $data_weapons[$game_actors[1].weapon_id]
# アルシェスの武器に[両手持ち]が含まれているか判定
if weapon.element_set.include?(e_id)
p "[両手持ち]あり"
else
p "[両手持ち]なし"
end
end
一見して面倒臭そうに思われる属性判定も、意味が分かれば簡単に作ることができます。防御属性も似たような方法が通用しますが、A〜Fの耐性も判定する必要があるため、ここでは割愛します。
(知りたい方は≪モンスター図鑑≫≪隊列概念≫あたりをチェックしてみてください)