#==============================================================================
# vx屏幕提示信息v1.0 by oce 2008年5月7日
#------------------------------------------------------------------------------
# 在屏幕左下方显示信息标题
# 按shift键(游戏中的A键,建议将游戏默认加速键改到C键上 - -)可以呼出对应的内容
# 可关闭信息提示窗口的显示
# PS:本脚本借用了<<叶子的详尽任务显示界面 v2.1 改版 by snstar2006>>中的文本显示.
$不显示skit窗口=1 #设置控制开关(默认为开关1)
$进程变量=1 #设置进程变量(默认为变量1)
$间隔步数=5 #信息出现的间隔(默认为5步。当然,改成随机数可能会好一点)
class Game_Party
#--------------------------------------------------------------------------
# ● 设置屏幕信息资料
#
#@skit[]:存储信息,进程变量为i时,显示@skit[i]中定义的内容
#格式:@skit[进程变量] =["信息类型1,信息标题1:信息内容1","信息类型2,信息标题2:信息内容1",...]
#
#信息类型 1:地图信息
# 2:短信息
# 3:普通对话
# 4.系统信息
#
#--------------------------------------------------------------------------
def get_skit
@skit= []
@skit[0]= [
"4,按下SHIFT键吧:\\c[6]现在你看到的是信息窗口了.
\\c[4]信息分为\\i[153]地图信息,\\i[148]短信息,\\i[115]普通对话,\\i[133]系统信息四类
如果听到叮的一声的话,就按下Shift键来查看吧~~
有没有觉得很方便呢?~",
"1,全部都是高山?:如果不能找出不同点的话就没办法离开这里了,到底是哪里不同呢?
莫非是那棵小树?"]
@skit[1]= [
"3,太奇怪了吧?:\\c[6]\\n[1]:太奇怪了吧?这个作者肯定不会画地图,乱七八糟的!
\\c[5]\\n[2]:没错啦!怎么会突然出现房子嘛~
",
"4,远方的来信:\\c[2]哈哈哈,你知道吗?
在世界的某处正发生着可怕的事情呢!"]
end
def skit
if @skit.nil?
get_skit
end
return @skit
end
end
# ■ Window_Skit
#============================================================================
class Window_Skit< Window_Base
def initialize
super(0,360,200,WLH+32)
$temp2=-1 if $temp2.nil?
$temp3=0 if $temp3.nil?
$sound=0 if $sound.nil?
refresh
end
def refresh
$skit_id=0 if $skit_id.nil? or $game_variables[$进程变量]!=$temp1
self.contents.clear
self.contents.font.size=16
@NAME = $game_party.skit[$game_variables[$进程变量]][$skit_id].split(/:/)[0]
@name = @NAME.split(/,/)[1].to_s
@type = @NAME.split(/,/)[0].to_i
case @type #定义不同类型对应的图标(图标编号为图标在IconSet里的顺序)
when 1
@icon=153
when 2
@icon=148
when 3
@icon=115
when 4
@icon=133
end
if $game_switches[$不显示skit窗口]==false
if $game_party.steps-$temp3>=$间隔步数 or $temp2==$skit_id
self.opacity = 150
draw_icon(@icon,0,0,true)
self.contents.draw_text(32,0,576,24,@name,0)
if ($sound==0 or $skit==0) and $temp2!=$skit_id
Audio.se_play("Audio/SE/Chime2",80,100)
$sound = 1
end
if Input.trigger?(Input::A)
$sound = 0
$scene=Scene_Skit_info.new
end
else
self.opacity = 0
end
else
self.opacity = 0
end
end
end
# ■ Window_Skit_info
#============================================================================
class Window_Skit_info < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(200, 0, 344, 416)
refresh
end
#--------------------------------------------------------------------------
# ● 刷新内容
#--------------------------------------------------------------------------
def refresh
self.oy = 0
self.visible = true
self.contents.font.color = normal_color
@INFO = $game_party.skit[$game_variables[$进程变量]][$skit_id].split(/:/)[1].to_s
chenge_special_character(@INFO)
end
end
# ■ Scene_Skit
# 处理对话内容画面的类。
#============================================================================
class Scene_Skit_info < Scene_Base
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def start
@skit_info_window = Window_Skit_info.new
@screen = Spriteset_Map.new
end
def terminate
@skit_info_window.dispose
@screen.dispose
end
def update
@skit_info_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
$temp2=$skit_id #记录当前id
$temp1=$game_variables[$进程变量] #记录当前进程
$temp3=$game_party.steps #记录当前步数
$skit_id+=1 if not($game_party.skit[$game_variables[$进程变量]][$skit_id+1].nil?)
$scene = Scene_Map.new
end
end
end
#重定义Scene_Map
#============================================================================
class Scene_Map < Scene_Base
alias new_start start
def start
new_start
@skit_window = Window_Skit.new
end
alias new_update update
def update
new_update
@skit_window.refresh
end
alias new_terminate terminate
def terminate
@skit_window.dispose
new_terminate
end
end
# ■ chenge_special_character
#引用<<叶子的详尽任务显示界面 v2.1 改版 by snstar2006>>中的文本显示部分
#\\v[n] 显示n号变量
#\\c[n] 改变字体颜色。n 为窗口外观图片中所设定的颜色,可为0-31
#
# \\c[HRRGGBB]设定字体颜色为RRGGBB色, RRGGBB 为16进位颜色代码
# \\n[i] 显示i号角色名字
# \\i[图标编号] 显示图标,图标编号为图标在IconSet里的顺序
# \\p[文件名] 显示图片
#============================================================================
class Window_Base < Window
def chenge_special_character(text, x=0, y=0)
# 记录换行时y坐标最小加值
min_y = 0
# 限制文字处理
begin
last_text = text.clone
text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
end until text == last_text
text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
# 为了方便、将 "\\\\" 变换为 "\000"
text.gsub!(/\\\\/) { "\000" }
# "\C" 变为 "\001"
text.gsub!(/\\[Cc]\[([0-9a-zA-Z]+)\]/) { "\001[#{$1}]" }
# "\I" 变为 "\002"
text.gsub!(/\\[Ii]/) { "\002" }
# "\P" 变为 "\003"
text.gsub!(/\\[Pp]/) { "\003" }
# c 获取 1 个字 (如果不能取得文字就循环)
while ((c = text.slice!(/./m)) != nil)
# \\ 的情况下
if c == "\000"
# 还原为本来的文字
c = "\\"
end
# \C[n] 的情況下
if c == "\001"
# 更改文字色
text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
# 如果是设定RGB颜色
if $1[0,1]=="H"
# 先拷贝一下文字
c=$1.dup
# 分3段分别取出R,G,B颜色
c.sub!(/H([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})/, "")
# 设定文字颜色
self.contents.font.color = Color.new($1.to_i(16), $2.to_i(16), $3.to_i(16))
else
color = $1.to_i
if color >= 0 and color <= 31
self.contents.font.color = text_color(color)
elsif color == 32
self.contents.font.color = disabled_color
elsif color == 33
self.contents.font.color = system_color
end
end
# 下面的文字
next
end
# 图标的情况下
if c == "\002"
icon_name = ''
while ((cha = text.slice!(/./m)) != ']')
next if cha == '['
icon_name += cha
end
if x + 24 > self.contents.width
x = 0
y += [WLH, min_y].max
min_y = 0
end
draw_icon(icon_name.to_i, x+4, y, true)
x += 28
next
end
# 图片的情况下
if c == "\003"
pic_name = ''
while ((cha = text.slice!(/./m)) != ']')
next if cha == '['
pic_name += cha
end
pic = Cache.picture(pic_name)
if x + pic.width > self.contents.width
x = 0
y += [WLH, min_y].max
min_y = 0
end
self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
x += pic.width
min_y = [pic.height, WLH].max
next
end
# 另起一行文字的情况下
if c == "\n"
y += [WLH, min_y].max
min_y = 0
x = 0
# 下面的文字
next
end
# 自动换行处理
if x + self.contents.text_size(c).width > self.contents.width-8
y += [WLH, min_y].max
min_y = 0
x = 0
end
# 描绘文字
self.contents.font.size = 16
self.contents.draw_text(4 + x, y, 40, WLH, c)
# x 为要描绘文字的加法运算
x += self.contents.text_size(c).width
end
end
end
>点击下载范例工程