module CUSTOM_GET_WINDOW
DISPLAY_FLAG = 2
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("Hammer", 80, 115) # インフォ表示時の効果音
#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, 394, line_height, description(data))
# 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