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の耐性も判定する必要があるため、ここでは割愛します。
(知りたい方は≪モンスター図鑑≫≪隊列概念≫あたりをチェックしてみてください)