=begin < イベント個別変数スクリプト > ver1.00 by tonbi 最新版の情報などは http://www.mc.ccnw.ne.jp/sarada/toshi/ へ。 バグ報告や要望などもお気軽に掲示板等にお願いします。 ■・概要・■ 変数やスイッチ、文字をイベントごとに用意する、という機能を提供します。 このスクリプトにより、イベントによる自作戦闘やアクションゲームの 制作での変数の管理が楽になるかも知れません。 ■・使い方・■ 少々分かりにくいかもしれませんが、なるべく全て読んでください。 まず、スクリプトを開いて、セッションScene_DebugとMainの間に、 このスクリプトを貼り付けます。 ●変数を作る 次に、使いたい変数やスイッチ、文字を作ります。 この説明書きの後ろにある、□ここを書き換えてください と言う場所を書き換えます。 $varhash = ["HP","MP" ....(略)] のようになっている部分に、つくりたい変数の名前を入れます。 例えば、HP MP Lv を作りたいなら、 $varhash = ["HP","MP","Lv"] とします。 また、数が多く複数行書きたい場合は、 $varhash = ["HP","MP", "ATC","DEF","INT","SPD","Lv", "GOLD","EXP"] のようにしてください。 同じように、スイッチ、文字型も作ります。 $switchhash = ["使用","気絶","毒"] $strhash = ["名前","称号"] 変数型は 数値 を入れられます。 スイッチ型は ON/OFF を入れます。 文字型は 文字 を入れれます。(人名など) ●コマンド ここまでが終わると、イベントのスクリプトから、 以下のコマンドが使用できるようになります。 setselfdata(変数名, 値, イベントID) (個別変数等に値を設定) getselfdata(対象ID, 変数名, イベントID) (個別変数等の値を取得) これらは変数名に応じて、変数、スイッチ、文字を判別します。 ・変数名 先に設定した名前を " " で囲んで書いてください。 ・値 設定する値です。変数なら数字を、スイッチなら ON OFF を、 文字なら、入れたい文字を " " で囲んで入れてください。 ・対象ID 取得する先のIDを入れてください。 変数型なら変数ID、スイッチならスイッチID、 文字ならアクターID(この場合はアクターの名前)に代入されます。 ・イベントID 対象のイベントです。 ここを省略すれば今のイベントが対象になります。 これ以外にも、 変数型専用として、 getselfvar(対象ID, 変数名, イベントID) (通常の変数に取得) setselfvar(変数名, 値, イベントID) (値を代入) addselfvar(変数名, 値, イベントID) (値を加算(+)) subselfvar(変数名, 値, イベントID) (値を減算(−)) mulselfvar(変数名, 値, イベントID) (値で乗算(×)) divselfvar(変数名, 値, イベントID) (値で除算(÷)) modselfvar(変数名, 値, イベントID) (値で余算(余りを求める)) スイッチ型専用として、 getselfswitch(対象ID, 変数名, イベントID) (通常のスイッチに取得) setselfswitch(変数名, 値, イベントID) (ON/OFFを設定) chgselfswitch(変数名, 値, イベントID) (ON/OFFを入れ替える) 文字型専用として getselfstr(対象ID, 変数名, イベントID) (アクターの名前に取得) setselfstr(変数名, 値, イベントID) (文字を設定) が用意されています。 getselfdata等を使うよりも、型専用のコマンドを使うほうが、速度早いです。 また、変数の値を使用したいときは、値の部分に、 gvar(変数ID) と、 スイッチの状態を使用したいときは、 gswitch(スイッチID) と、 アクターの名前を使用したいときは、 gactor(アクターID) と、入れてください。 例えば、 HP(変数型) に 500 を代入 setselfdata("HP",500) イベントID:5 の NAME(文字型) に 負け犬 と設定 setselfstr("NAME","負け犬",5) HP の値を 通常の変数ID:1 に代入 getselfdata(1,"HP") イベントID:1 の HP に 5 を足す addselfvar("HP",5,1) HP から 通常の変数ID:1 の値を引く subselfvar("HP",gvar(1)) 分岐に使いたいときや、表示させたいときなどは、 一度通常の変数などに読み込んでから、その値を利用してください。 ●初期値 また、便利な機能として、初期値を設定できます。 これを使用すれば、始めからHPに300を代入しておく、などができます。 そのイベントの1ページ目の始め(注釈以外のコマンドより前)に、 イベントコマンドの注釈で、 ◆ 注釈 : HP(300) NAME(負け犬) USE(ON) とすれば、マップに移動してきた瞬間、値が代入されます。 注釈はいくつ使っても、複数行でもかまいません。 ただし、左詰めに書き、一行に1つにしてください。 また、変数名や文字も " " で囲まないでください。 =end #========================================================================= #========================================================================= #■ここを書き換えてください。 #========================================================================= # 変数型の一覧。 $varhash = ["HP","MP","ATC","DEF","INT","SPD"] # スイッチ型の一覧。 $switchhash = ["USE"] # 文字型の一覧。 $strhash = ["NAME"] #========================================================================= #========================================================================= class Game_Event < Game_Character attr_accessor :self_variables attr_accessor :self_switches attr_accessor :self_strings #-------------------------------------------------------------------------- # ● オブジェクト初期化 # >> 個別変数を初期化、を追加 #-------------------------------------------------------------------------- alias initialize_eventselfvar initialize def initialize(map_id, event) initialize_eventselfvar(map_id, event) @self_variables = {} @self_switches = {} @self_strings = {} for i in $varhash @self_variables[i] = 0 end for i in $switchhash @self_switches[i] = false end for i in $strhash @self_strings[i] = "" end end end class Game_Map #-------------------------------------------------------------------------- # ● 初期値をセットする #-------------------------------------------------------------------------- alias setup_eventselfvar setup def setup(map_id) setup_eventselfvar(map_id) flag={"ON"=>true,"OFF"=>false} for id in @map.events.keys j = 0 loop do # コメントではないものが出たら設定終了 if @map.events[id].pages[0].list[j].code != 108 and @map.events[id].pages[0].list[j].code != 408 break end text = @map.events[id].pages[0].list[j].parameters[0] if text.split(/\)/)[0] != nil name = text.split(/\)/)[0].split(/\(/)[0] data = text.split(/\)/)[0].split(/\(/)[1] if name != nil and data != nil if $varhash.include?(name) @events[id].self_variables[name] = data.to_i elsif $switchhash.include?(name) @events[id].self_switches[name] = flag[data] elsif $strhash.include?(name) @events[id].self_strings[name] = data end end end j+=1 end end end end class Interpreter #-------------------------------------------------------------------------- # ● 書きやすく #-------------------------------------------------------------------------- ON = true OFF = false def gvar(no) return $game_variables[no] end def gswitch(no) return $game_switches[no] end def gactor(no) return $data_actors[no].name end #-------------------------------------------------------------------------- # ● イベント個別変数にアクセス #-------------------------------------------------------------------------- def getselfvar(no,vid,eid = @event_id) $game_variables[no]=$game_map.events[eid].self_variables[vid] return $game_variables[no] end def setselfvar(vid,data,eid = @event_id) $game_map.events[eid].self_variables[vid] = data end def addselfvar(vid,data,eid = @event_id) $game_map.events[eid].self_variables[vid] += data end def subselfvar(vid,data,eid = @event_id) $game_map.events[eid].self_variables[vid] -= data end def mulselfvar(vid,data,eid = @event_id) $game_map.events[eid].self_variables[vid] *= data end def divselfvar(vid,data,eid = @event_id) $game_map.events[eid].self_variables[vid] /= data end def modselfvar(vid,data,eid = @event_id) $game_map.events[eid].self_variables[vid] %= data end #-------------------------------------------------------------------------- # ● イベント個別スイッチにアクセス #-------------------------------------------------------------------------- def getselfswitch(no,vid,eid = @event_id) $game_switches[no]=$game_map.events[eid].self_switches[vid] return $game_switches[no] end def setselfswitch(vid,data,eid = @event_id) $game_map.events[eid].self_switches[vid] = data end def chgselfswitch(vid,data,eid = @event_id) $game_map.events[eid].self_switches[vid] = !$game_map.events[eid].self_switches[vid] end #-------------------------------------------------------------------------- # ● イベント個別文字列にアクセス #-------------------------------------------------------------------------- def getselfstr(no,vid,eid = @event_id) actor = $game_actors[no] if actor != nil actor.name = $game_map.events[eid].self_strings[vid] end return actor.name end def setselfstr(vid,data,eid = @event_id) $game_map.events[eid].self_strings[vid] = data end #-------------------------------------------------------------------------- # ● 設定>オート #-------------------------------------------------------------------------- def setselfdata(vid,data,eid = @event_id) if $varhash.include?(vid) setselfvar(vid,data,eid) elsif $switchhash.include?(vid) setselfswitch(vid,data,eid) elsif $strhash.include?(vid) setselfstr(vid,data,eid) end end #-------------------------------------------------------------------------- # ● 取得>オート #-------------------------------------------------------------------------- def getselfdata(no,vid,eid = @event_id) if $varhash.include?(vid) return getselfvar(no,vid,eid) elsif $switchhash.include?(vid) return getselfswitch(no,vid,eid) elsif $strhash.include?(vid) return getselfstr(no,vid,eid) end end end