=begin #=======================================================================
◆◇入手インフォメーション+マップエフェクトベース RGSS3◇◆ ※starさんの移植品
★-----更にカスタマイズを施したバージョン
◆VX Ace移植◆
◆DEICIDE ALMA
◆レーネ
◆http://blog.goo.ne.jp/exa_deicide_alma
◆カスタマイズ◆
◆Jun.A
★変更点(移植版)
インフォの文章はヘルプの1行目の文章になります。
(<info:任意の文字列>で指定した場合はそちらを優先)
GET = true ならインフォを出したアイテムを入手します。
(アイテム、武器、防具、お金が対象)
★変更点(カスタマイズ版 / Jun.A)
指定スイッチをオンにした状態で、アイテム・武器・防具・スキル・お金・経験値を
入手したり失ったりすると、自動で情報を表示するようにしました。
なお、コマンドスクリプトから書き出す場合、スイッチを無視して表示されます。
また、テキスト出力に対応しました。
簡単な情報をテキスト出力したいときに便利かと思います。
(注意)
コマンドスクリプトで経験値増減・スキル習得を呼び出した場合、
表示されるだけで、実際には増減・習得しません。別途スクリプト必須です。
コマンド「経験値の増減」「スキルの増減」から呼び出した場合には自動習得します。
◆導入箇所
▼素材のところ、mainより上
ひきも記(tomoaky)さんのアイコンポップスクリプトが競合するため、
アイコンポップスクリプトはこのスクリプトの下に配置してください。
=end #=========================================================================
#==============================================================================
# ★RGSS2
# STEMB_マップエフェクトベース v0.8
#
# ・エフェクト表示のための配列定義、フレーム更新、ビューポート関連付け
#
#==============================================================================
# ★RGSS2
# STR20_入手インフォメーション v1.2 09/03/17
#
# ・マップ画面にアイテム入手・スキル修得などの際に表示するインフォです。
# ・表示内容は 任意指定の名目+アイテム名+ヘルプメッセージとなります。
# ・アイテムのメモ欄に <info:任意の文字列> と記述することで
# 通常とは別の説明文をインフォに表示させることができます。
# [仕様]インフォが表示されている間も移動できます。
# 移動させたくない場合はウェイトを入れてください。
#
#==============================================================================
# 追加モジュール
module CUSTOM_GET_WINDOW
DISPLAY_FLAG = 22
GOLD_TEXT_ADD = "お金入手!" #お金を入手した際の表示テキスト
GOLD_TEXT_REMOVE = "お金消失…" #お金を消失した際の表示テキスト
ITEM_TEXT_ADD = "アイテム入手!" #アイテムを入手した際の表示テキスト
ITEM_TEXT_REMOVE = "アイテム消失…" #アイテムを消失した際の表示テキスト
WEAPON_TEXT_ADD = "武器入手!" #武器を入手した際の表示テキスト
WEAPON_TEXT_REMOVE = "武器消失…" #武器を消失した際の表示テキスト
ARMOR_TEXT_ADD = "防具入手!" #防具を入手した際の表示テキスト
ARMOR_TEXT_REMOVE = "防具消失…" #防具を消失した際の表示テキスト
SKILL_TEXT_ADD = "スキル習得!" #スキルを習得した際の表示テキスト
SKILL_TEXT_REMOVE = "スキル忘却…" #スキルを忘れた際の表示テキスト
EXP_TEXT_ADD = "EXP入手!" #EXPを入手した際の表示テキスト
EXP_TEXT_REMOVE = "EXP消失…" #EXPを消失した際の表示テキスト
end
class Window_Getinfo < Window_Base
# 設定箇所
#G_ICON = 260 # ゴールド入手インフォに使用するアイコンインデックス
G_ICON = 361 # ゴールド入手インフォに使用するアイコンインデックス
T_ICON = 125 # テキスト表示インフォに使用するアイコンインデックス
Y_TYPE = 1 # Y座標の位置(0 = 上基準 1 = 下基準)
Z = 188 # Z座標(問題が起きない限り変更しないでください)
TIME = 180 # インフォ表示時間(1/60sec)
OPACITY = 32 # 透明度変化スピード
B_COLOR = Color.new(0, 0, 0, 160) # インフォバックの色
INFO_SE = RPG::SE.new("Chime2", 80, 100) # インフォ表示時の効果音
#STR20W = /info\[\/(.*)\/\]/im # メモ設定ワード(VXと同じ)
STR20W = /<info:(.*?)>/im # メモ設定ワード
GET = true # インフォを出したアイテムを入手するかどうか(スキルは除く)
end
#
if false
# ★以下をコマンドのスクリプト等に貼り付けてテキスト表示----------------★
# 種類 / 0=アイテム 1=武器 2=防具 3=スキル 4=金 5=テキスト(新規対応)
type = 0
# ID / 金の場合は金額を入力
id = 1
# 入手テキスト / 金の場合無効
text = "アイテム入手!"
# 増減(数) / プラス・マイナス両対応
value = 1
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
# ★ここまで------------------------------------------------------------★
# □ 追加でテキスト機能を追加。
# 種類 / 0=アイテム 1=武器 2=防具 3=スキル 4=金 5=テキスト(新規対応)
type = 5
# ID / 大きく表示される部分のテキスト
id = "テストコメント"
# テキスト / 小さく表示される部分のテキスト
text = "ミニインフォメーション"
# 意味はありませんが、必ずvalueにゼロを記してください
# ※無いとミニインフォが表示されません
value = 0
#
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text))
# ★ここまで------------------------------------------------------------★
#
# ◇スキル修得時などにアクター名を直接打ち込むと
# アクターの名前が変えられるゲームなどで問題が生じます。
# なので、以下のようにtext部分を改造するといいかもしれません。
#
# 指定IDのアクターの名前取得
t = $game_actors[1].name
text = t + " / スキル修得!"
#
end
class Game_Temp
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :streffect
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_stref initialize
def initialize
initialize_stref
@streffect = []
end
end
class Spriteset_Map
#--------------------------------------------------------------------------
# ● エフェクトの作成
#--------------------------------------------------------------------------
def create_streffect
$game_temp.streffect = []
end
#--------------------------------------------------------------------------
# ● エフェクトの解放
#--------------------------------------------------------------------------
def dispose_streffect
(0...$game_temp.streffect.size).each do |i|
$game_temp.streffect[i].dispose if $game_temp.streffect[i] != nil
end
$game_temp.streffect = []
end
#--------------------------------------------------------------------------
# ● エフェクトの更新
#--------------------------------------------------------------------------
def update_streffect
(0...$game_temp.streffect.size).each do |i|
if $game_temp.streffect[i] != nil
$game_temp.streffect[i].viewport = @viewport1
$game_temp.streffect[i].update
$game_temp.streffect.delete_at(i) if $game_temp.streffect[i].disposed?
end
end
end
#--------------------------------------------------------------------------
# ● 遠景の作成(エイリアス)
#--------------------------------------------------------------------------
alias create_parallax_stref create_parallax
def create_parallax
create_parallax_stref
create_streffect
end
#--------------------------------------------------------------------------
# ● 解放(エイリアス)
#--------------------------------------------------------------------------
alias dispose_stref dispose
def dispose
dispose_streffect
dispose_stref
end
#--------------------------------------------------------------------------
# ● 更新(エイリアス)
#--------------------------------------------------------------------------
alias update_stref update
def update
update_stref
update_streffect
end
end
class Window_Getinfo < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(id, type, text = "", value)
#super(-16, 0, 544 + 32, 38 + 32)
super(-16, 0, 640 + 32, 38 + 32)
self.z = Z
self.contents_opacity = 0
self.back_opacity = 0
self.opacity = 0
@value = value
@count = 0
@i = $game_temp.getinfo_size.index(nil)
@i = $game_temp.getinfo_size.size if (@i == nil)
if Y_TYPE == 0
self.y = -14 + (@i * 40)
else
#self.y = 418 - 58 - (@i * 40)
self.y = 480 - 58 - (@i * 40)
end
$game_temp.getinfo_size[@i] = true
refresh(id, type, text, @value)
#SE発音 タイプチェック 0~3ならvalueを見る 4(お金)ならidを見る
case type
when 0..3
if @value >= 1
INFO_SE.play
elsif @value <= -1
#Sound.play_evasion #減るときは音を鳴らなさい
end
when 4
if id >= 1
Audio.se_play('Audio/SE/Coin', 80)
elsif id <= -1
#Sound.play_evasion #減るときは音を鳴らなさい
end
when 5
Audio.se_play('Audio/SE/Chime1', 80)
when 6
if @value >= 1
INFO_SE.play
elsif @value <= -1
#Sound.play_evasion #減るときは音を鳴らなさい
end
end
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
$game_temp.getinfo_size[@i] = nil
super
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
self.viewport = nil
@count += 1
unless @count >= TIME
self.contents_opacity += OPACITY
else
if Y_TYPE == 0
self.y -= 1
else
self.y += 1
end
self.contents_opacity -= OPACITY
dispose if self.contents_opacity == 0
end
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh(id, type, text = "", value)
case type
when 0 ; data = $data_items[id]
when 1 ; data = $data_weapons[id]
when 2 ; data = $data_armors[id]
when 3 ; data = $data_skills[id]
when 4 ; data = id
when 5 ; data = id #無理やりidに載せたテキストデータをdataに格納してます。
when 6 ; data = id #経験値増減の実際の値です。
else ; p "typeの値がおかしいです><;"
end
c = B_COLOR
#self.contents.fill_rect(0, 14, 544, 24, c)
self.contents.fill_rect(0, 14, 644, 24, c)
case type #表示分岐
when 0..2 #アイテム・武器・防具表示
draw_item_name(data, 4, 14)
self.contents.draw_text(204, 14, 18, line_height, "x")
self.contents.draw_text(220, 14, 36, line_height, value)
self.contents.draw_text(258, 14, 382, line_height, description(data))
when 3 # スキル表示
draw_item_name(data, 4, 14)
self.contents.draw_text(204, 14, 436, line_height, description(data))
when 4 # お金表示
draw_icon(G_ICON, 4, 14)
self.contents.draw_text(28, 14, 176, line_height,
data.to_s + Vocab.currency_unit)
$game_party.gain_gold(id) if GET
when 5 # テキスト出力
draw_icon(T_ICON, 4, 14)
self.contents.draw_text(28, 14, 612, line_height, data)
when 6
self.contents.draw_text(16, 14, 48, line_height, "Exp:")
self.contents.draw_text(56, 14, 584, line_height, data)
end
self.contents.font.size = 14
w = self.contents.text_size(text).width
self.contents.fill_rect(0, 0, w + 4, 14, c)
self.contents.draw_text_f(4, 0, 340, 14, text)
#アイテムの入手・消失操作
$game_party.gain_item(data,@value) if type <= 2 && GET && @value >= 1 #入手
$game_party.gain_item(data,@value) if type <= 2 && GET && @value <= -1 #消失
Graphics.frame_reset
end
#--------------------------------------------------------------------------
# ● 解説文取得
#--------------------------------------------------------------------------
def description(data)
if data.note =~ /#{STR20W}/
return $1
end
text = data.description.dup
text.sub!(/[\r\n]+.*/m, "")
return text
end
end
class Game_Temp
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :getinfo_size
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_str20 initialize
def initialize
initialize_str20
@getinfo_size = []
end
end
class Bitmap
unless public_method_defined?(:draw_text_f)
#--------------------------------------------------------------------------
# ● 文字縁取り描画
#--------------------------------------------------------------------------
def draw_text_f(x, y, width, height, str, align = 0, color = Color.new(64,32,128))
shadow = self.font.shadow
b_color = self.font.color.dup
outline = self.font.outline
self.font.outline = false
font.shadow = false
font.color = color
draw_text(x + 1, y, width, height, str, align)
draw_text(x - 1, y, width, height, str, align)
draw_text(x, y + 1, width, height, str, align)
draw_text(x, y - 1, width, height, str, align)
font.color = b_color
draw_text(x, y, width, height, str, align)
font.shadow = shadow
self.font.outline = outline
end
def draw_text_f_rect(r, str, align = 0, color = Color.new(64,32,128))
draw_text_f(r.x, r.y, r.width, r.height, str, align, color)
end
end
end
#--------------------------------------------------------------------------
# ★ 追加箇所 - アイテム入手時、フラグなONなら自動で入手表示する。
# アイテム・武器・防具・スキル・テキスト それぞれ全てに対応
#--------------------------------------------------------------------------
class Game_Interpreter
#--------------------------------------------------------------------------
# override method: command_125 // お金の増減
#--------------------------------------------------------------------------
alias game_interpreter_command_125_ew command_125
def command_125
#game_interpreter_command_125_ew #エイリアスを使わない(多重加算を回避)
value = operate_value(@params[0], @params[1], @params[2])
if value >= 1 #お金が増える場合
# フラグチェックして、trueならアイテム入手メソッドに飛ばす
if $game_switches[CUSTOM_GET_WINDOW::DISPLAY_FLAG] #フラグチェック
# 種類 / 0=アイテム 1=武器 2=防具 3=スキル 4=金
type = 4
# ID / 金の場合は金額を入力
id = value
# 入手テキスト / 金の場合無効
text = CUSTOM_GET_WINDOW::GOLD_TEXT_ADD
#
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
else #フラグがfalseなら、オリジナルメソッドと同じ動作
$game_party.gain_gold(value)
end
elsif value <= -1 #お金が減る場合
if $game_switches[CUSTOM_GET_WINDOW::DISPLAY_FLAG] #フラグチェック
type = 4
id = value
text = CUSTOM_GET_WINDOW::GOLD_TEXT_REMOVE
#
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
else
$game_party.gain_gold(value)
end
end
end
#--------------------------------------------------------------------------
# override method: command_126 // アイテムの増減
#--------------------------------------------------------------------------
alias game_interpreter_command_126_ew command_126
def command_126
#game_interpreter_command_126_ew
value = operate_value(@params[1], @params[2], @params[3])
if value >= 1 #アイテムが増える場合
if $game_switches[CUSTOM_GET_WINDOW::DISPLAY_FLAG] #フラグチェック
# 種類 / 0=アイテム 1=武器 2=防具 3=スキル 4=金
type = 0
# ID / 金の場合は金額を入力
id = @params[0]
# 入手テキスト / 金の場合無効
text = CUSTOM_GET_WINDOW::ITEM_TEXT_ADD
#
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
else #フラグがfalseなら、オリジナルメソッドと同じ動作
$game_party.gain_item($data_items[@params[0]], value)
end
elsif value <= -1 #アイテムが減る場合
if $game_switches[CUSTOM_GET_WINDOW::DISPLAY_FLAG] #フラグチェック
type = 0
id = @params[0]
text = CUSTOM_GET_WINDOW::ITEM_TEXT_REMOVE
#
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
else
$game_party.gain_item($data_items[@params[0]], value)
end
end
end
#--------------------------------------------------------------------------
# override method: command_127 // 武器の増減
#--------------------------------------------------------------------------
alias game_interpreter_command_127_ew command_127
def command_127
#game_interpreter_command_127_ew
value = operate_value(@params[1], @params[2], @params[3])
if value >= 1 #武器が増える場合
if $game_switches[CUSTOM_GET_WINDOW::DISPLAY_FLAG] #フラグチェック
# 種類 / 0=アイテム 1=武器 2=防具 3=スキル 4=金
type = 1
# ID / 金の場合は金額を入力
id = @params[0]
# 入手テキスト / 金の場合無効
text = CUSTOM_GET_WINDOW::WEAPON_TEXT_ADD
#
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
else #フラグがfalseなら、オリジナルメソッドと同じ動作
$game_party.gain_item($data_weapons[@params[0]], value, @params[4])
end
elsif value <= -1 #武器が減る場合
if $game_switches[CUSTOM_GET_WINDOW::DISPLAY_FLAG] #フラグチェック
type = 1
id = @params[0]
text = CUSTOM_GET_WINDOW::WEAPON_TEXT_REMOVE
#
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
else
$game_party.gain_item($data_weapons[@params[0]], value, @params[4])
end
end
end
#--------------------------------------------------------------------------
# override method: command_128 // 防具の増減
#--------------------------------------------------------------------------
alias game_interpreter_command_128_ew command_128
def command_128
#game_interpreter_command_128_ew
value = operate_value(@params[1], @params[2], @params[3])
if value >= 1 #防具が増える場合
if $game_switches[CUSTOM_GET_WINDOW::DISPLAY_FLAG] #フラグチェック
# 種類 / 0=アイテム 1=武器 2=防具 3=スキル 4=金
type = 2
# ID / 金の場合は金額を入力
id = @params[0]
# 入手テキスト / 金の場合無効
text = CUSTOM_GET_WINDOW::ARMOR_TEXT_ADD
#
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
else #フラグがfalseなら、オリジナルメソッドと同じ動作
$game_party.gain_item($data_armors[@params[0]], value, @params[4])
end
elsif value <= -1 #防具が減る場合
if $game_switches[CUSTOM_GET_WINDOW::DISPLAY_FLAG] #フラグチェック
type = 2
id = @params[0]
text = CUSTOM_GET_WINDOW::ARMOR_TEXT_REMOVE
text = CUSTOM_GET_WINDOW::ARMOR_TEXT_REMOVE
#
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
else
$game_party.gain_item($data_armors[@params[0]], value, @params[4])
end
end
end
#--------------------------------------------------------------------------
# override method command_318 // スキルの増減
#--------------------------------------------------------------------------
alias game_interpreter_command_318_ew command_318
def command_318
# アクターを探して指定スキルを習得させる
# @params[1] = アクターID / $data_actors[] データベース上のアクターID
# @params[2] = 習得させる(0)か忘れさせる(1)か
# @params[3] = スキルID
iterate_actor_var(@params[0], @params[1]) do |actor|
if @params[2] == 0
actor.learn_skill(@params[3])
else
actor.forget_skill(@params[3])
end
end
if $game_switches[CUSTOM_GET_WINDOW::DISPLAY_FLAG] #フラグチェック
if @params[2] == 0 #習得
type = 3
id = @params[3]
actor_name = $data_actors[@params[1]].name
text = actor_name + " / " + CUSTOM_GET_WINDOW::SKILL_TEXT_ADD
value = 1 #習得表示フラグ
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
elsif @params[2] == 1 #忘れる
type = 3
id = @params[3]
actor_name = $data_actors[@params[1]].name
text = actor_name + " / " + CUSTOM_GET_WINDOW::SKILL_TEXT_REMOVE
value = -1 #忘却表示フラグ
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
end
end
end
#--------------------------------------------------------------------------
# override method command_315 // 経験値の増減
#--------------------------------------------------------------------------
def command_315
value = operate_value(@params[2], @params[3], @params[4])
iterate_actor_var(@params[0], @params[1]) do |actor|
actor.change_exp(actor.exp + value, @params[5])
end
#p @params[0] #指定キャラか変数指定か(0 or 1)
#p @params[1] #指定キャラ番号 or 挿入する値(変数時)★
#p @params[2] #増やすのか、もしくは減らすのか(0 or 1)★
#p @params[3] #指定数値か変数指定か(0 or 1)
#p @params[4] #実際に入れる値★
#p @params[5] #レベルアップ表示するか?★
if $game_switches[CUSTOM_GET_WINDOW::DISPLAY_FLAG] #フラグチェック
type = 6
if @params[1] == 0 #パーティ全体か(0)、個別か(1~)
actor_name = "パーティ全体"
else
actor_name = $data_actors[@params[1]].name
end
if @params[2] == 0 #増やす(0)のか減らす(1)のか
text = actor_name + " / " + CUSTOM_GET_WINDOW::EXP_TEXT_ADD
value = 1 #入手フラグ
id = @params[4] #IDに増減の値を挿入
elsif @params[2] == 1
text = actor_name + " / " + CUSTOM_GET_WINDOW::EXP_TEXT_REMOVE
value = -1 #消失フラグ
id = @params[4] * -1
end
e = $game_temp.streffect
e.push(Window_Getinfo.new(id, type, text, value))
end
end
end