#__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