278 lines
10 KiB
Ruby
278 lines
10 KiB
Ruby
=begin #=======================================================================
|
||
|
||
◆◇入手インフォメーション+マップエフェクトベース RGSS3◇◆ ※starさんの移植品
|
||
|
||
◆DEICIDE ALMA
|
||
◆レーネ
|
||
◆http://blog.goo.ne.jp/exa_deicide_alma
|
||
|
||
★変更点
|
||
インフォの文章はヘルプの1行目の文章になります。
|
||
(<info:任意の文字列>で指定した場合はそちらを優先)
|
||
|
||
GET = true ならインフォを出したアイテムを入手します。
|
||
(アイテム、武器、防具、お金が対象)
|
||
|
||
◆導入箇所
|
||
▼素材のところ、mainより上
|
||
|
||
=end #=========================================================================
|
||
#==============================================================================
|
||
# ★RGSS2
|
||
# STEMB_マップエフェクトベース v0.8
|
||
#
|
||
# ・エフェクト表示のための配列定義、フレーム更新、ビューポート関連付け
|
||
#
|
||
#==============================================================================
|
||
# ★RGSS2
|
||
# STR20_入手インフォメーション v1.2 09/03/17
|
||
#
|
||
# ・マップ画面にアイテム入手・スキル修得などの際に表示するインフォです。
|
||
# ・表示内容は 任意指定の名目+アイテム名+ヘルプメッセージとなります。
|
||
# ・アイテムのメモ欄に <info:任意の文字列> と記述することで
|
||
# 通常とは別の説明文をインフォに表示させることができます。
|
||
# [仕様]インフォが表示されている間も移動できます。
|
||
# 移動させたくない場合はウェイトを入れてください。
|
||
#
|
||
#==============================================================================
|
||
class Window_Getinfo < Window_Base
|
||
# 設定箇所
|
||
G_ICON = 260 # ゴールド入手インフォに使用するアイコンインデックス
|
||
Y_TYPE = 1 # Y座標の位置(0 = 上基準 1 = 下基準)
|
||
Z = 75#45#188 # Z座標(問題が起きない限り変更しないでください)
|
||
TIME = 180 # インフォ表示時間(1/60sec)
|
||
OPACITY = 32 # 透明度変化スピード
|
||
B_COLOR = Color.new(0, 0, 0, 160) # インフォバックの色
|
||
INFO_SE = RPG::SE.new("item-01", 80, 100) # インフォ表示時の効果音
|
||
|
||
#STR20W = /info\[\/(.*)\/\]/im # メモ設定ワード(VXと同じ)
|
||
STR20W = /<info:(.*?)>/im # メモ設定ワード
|
||
|
||
GET = true # インフォを出したアイテムを入手するかどうか(スキルは除く)
|
||
end
|
||
#
|
||
if false
|
||
# ★以下をコマンドのスクリプト等に貼り付けてテキスト表示----------------★
|
||
|
||
# 種類 / 0=アイテム 1=武器 2=防具 3=スキル 4=金
|
||
type = 0
|
||
# ID / 金の場合は金額を入力
|
||
id = 1
|
||
# 入手テキスト / 金の場合無効
|
||
text = "アイテム会得!"
|
||
#
|
||
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 = "")
|
||
super(-16, 0, 640 + 32, 38 + 32)
|
||
self.z = Z
|
||
self.contents_opacity = 0
|
||
self.back_opacity = 0
|
||
self.opacity = 0
|
||
@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 = 480 - 58 - (@i * 40)
|
||
end
|
||
$game_temp.getinfo_size[@i] = true
|
||
refresh(id, type, text)
|
||
INFO_SE.play
|
||
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 = "")
|
||
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
|
||
else ; p "typeの値がおかしいです><;"
|
||
end
|
||
c = B_COLOR
|
||
self.contents.fill_rect(0, 14, 640, 24, c)
|
||
if type < 4
|
||
draw_item_name(data, 4, 14)
|
||
self.contents.draw_text(250, 14, 340, line_height, description(data))##
|
||
else
|
||
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
|
||
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,1) if type <= 2 && GET
|
||
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
|