rebf-gaiden/Scripts/_RGSS3_.rb
2025-04-26 17:06:34 -05:00

278 lines
10 KiB
Ruby
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

=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