#__END__ #============================================================================== # ★ メモリンク ver2.0 by USK 20180103 #------------------------------------------------------------------------------ # ・スクリプトで定義した文字列定数とリンク可能になりました。 # ・データベースのメモ欄をリンクし、一つのメモ欄を共有化したり、分割して見やすく # します。 #============================================================================== =begin メモ欄にのようにと記述すると、ゲーム内でリンク先IDの メモ欄がそのオブジェクトのメモ欄に追加されたと認識されます。 リンク先IDは、オブジェクトがアイテムならアイテム、のように同種のものとなります。 メモ欄にのようにと記述すると定数として定義した文字列 がメモ欄に追加されたと認識されます。実際は(定数名)の部分をevalしているので、知識 のある方は任意のスクリプトコマンドを使用可能です。 *定数は大文字で始まるアルファベットで定義します。 このセクションでなくとも、定数定義用に別のセクションを用意して構いません。 =end #例:下記の場合が"文字列内にもリンクを記述できます。memo1memo2" # となります。 LinkText = "文字列内にもリンクを記述できます。 " TestMemo1 = "memo1" TestMemo2 = "memo2" #============================================================================== # ■ RPG::BaseItem #============================================================================== class RPG::BaseItem #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def note_link(data) depth = 0 until depth > 100 do depth += 1 break unless @note.gsub!(//){data[$1.to_i].note} end rescue p $! if depth > 100 msgbox "無限ループが発生しています > #{data[$1.to_i].name}のメモ" exit end depth = 0 until depth > 100 do depth += 1 break unless @note.gsub!(//){"#{eval($1)}"} end rescue p $! if depth > 100 msgbox "無限ループが発生しています > #{$+}" exit end end end #============================================================================== # ■ RPG::Tileset #============================================================================== class RPG::Tileset #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def note_link(data) depth = 0 until depth > 100 do depth += 1 break unless @note.gsub!(//){data[$1.to_i].note} end rescue p $! if depth > 100 msgbox "無限ループが発生しています > #{data[$1.to_i].name}のメモ" exit end depth = 0 until depth > 100 do depth += 1 break unless @note.gsub!(//){"#{eval($1)}"} end rescue p $! if depth > 100 msgbox "無限ループが発生しています > #{$+}" exit end end end #============================================================================== # ■ DataManager #============================================================================== module DataManager class << self; alias :usk_ml_load_database :load_database; end #-------------------------------------------------------------------------- # ● データベースのロード #-------------------------------------------------------------------------- def self.load_database usk_ml_load_database $data_actors.each {|obj| obj.note_link($data_actors ) if obj} $data_classes.each {|obj| obj.note_link($data_classes ) if obj} $data_skills.each {|obj| obj.note_link($data_skills ) if obj} $data_items.each {|obj| obj.note_link($data_items ) if obj} $data_weapons.each {|obj| obj.note_link($data_weapons ) if obj} $data_armors.each {|obj| obj.note_link($data_armors ) if obj} $data_enemies.each {|obj| obj.note_link($data_enemies ) if obj} $data_states.each {|obj| obj.note_link($data_states ) if obj} $data_tilesets.each{|obj| obj.note_link($data_tilesets) if obj} end end #============================================================================== # ■ Game_Map #============================================================================== class Game_Map #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def note_link depth = 0 until depth > 100 do depth += 1 break unless @map.note.gsub!(//) do load_data(sprintf("Data/Map%03d.rvdata2", $1.to_i)).note end end rescue p $! if depth > 100 msgbox "無限ループが発生しています > #{data[$1.to_i].name}のメモ" exit end depth = 0 until depth > 100 do depth += 1 break unless @map.note.gsub!(//) do eval($1) end end rescue p $! if depth > 100 msgbox "無限ループが発生しています > #{data[$1.to_i].name}のメモ" exit end end #-------------------------------------------------------------------------- # ● セットアップ #-------------------------------------------------------------------------- alias :usk_ml_setup :setup def setup(map_id) usk_ml_setup(map_id) note_link end end