| 
 
| 赞 | 1 |  
| VIP | 95 |  
| 好人卡 | 8 |  
| 积分 | 1 |  
| 经验 | 23267 |  
| 最后登录 | 2020-10-15 |  
| 在线时间 | 433 小时 |  
 Lv1.梦旅人 
	梦石0 星屑65 在线时间433 小时注册时间2007-5-1帖子993 | 
| 
MS已经有很多人写过即时信息显示了,所以呢……我又写了一个。
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  (喂喂,所以个头啊,根本不符合逻辑关系……)
 
 之所以叫泛用型,是因为的确比较很泛用……(喂喂,这不跟没说一样么,而且什么叫“的确比较很”)
 
 那么,下面就来看看有什么功能:
 1.信息字体颜色可控。
 2.信息显示位置(居中,左对齐,右对齐)可控。
 3.信息消失条件(自动,按键,不消失)可控。
 4.信息字体大小可控。
 5.信息显示行数可控。
 6.可内嵌变量的值。
 7.信息淡出消失。
 8.信息超过最大行数时向上滚动。
 
 这么说……还真是没有什么特别的功能,咳咳,那么,来看看有什么用法。
 
 1.显示物品得失提示及其他
 
 ![]() 
 当然,这个是要手动设置,不是自动的……(什么当然!这不是【显示文章】就能做到的事情么!)。咳咳,我们来看下一个……
 
 2.任务提示
 
 ![]() 
 道具设置公共事件,然后调用即时信息显示,配合信息按键消失,哇卡卡,多完美的任务提示~(完美个啥!还不是【显示文章】就能做的事,还不是难以做出多条支线的任务提示。)顺便说下,这里就是居中显示了。
 
 3.地图上显示变量
 
 ![]() 
 看吧!通过内嵌表达式把变量的值嵌入字符串中,再设置信息不消失,把语句放进并行事件里让它随时更新,这不就是完美的地图显示变量了么!(嗯?那就是传说中的自设信息颜色呀?效果真差……)
 
 4.滚动字幕
 
 ![]() 
 还在用图片显示字幕吗?还是用那些复杂得不知道如何操作而且只能显示同一段话的字幕脚本?通过等待和显示信息的结合,就可以做出从下到上滚到的字幕了,虽然滚动效果强差人意……(强也不能差人意!分明就是一行行地弹出来!这也叫滚动?)
 
 5.其它
 几乎是一切皆有可能。使用【泛用型地图即时信息显示】做什么,一切就看您的了。
 (嗯……这句话好熟,好像在哪里听过……呃!这不是F1脚本入门的结束语么!)
 
 
 使用方法:
 
 脚本插入Main前,事件脚本或其他可以执行脚本的地方写:
 
 $game_information.push("我是RM爱好者")     => 默认颜色字体输出信息
 $game_information.push("我是RM爱好者",1)   => 1号颜色字体输出信息
 
 $game_information.push("HP: #{game_variables[1]}")
 => 输出(HP: 1号变量的值)
 $game_information.clear                    => 立刻清除所有信息
 
 
 复制代码#==============================================================================
# ■ Window_Information —— by 水镜风生
#------------------------------------------------------------------------------
#  地图上显示即时信息的窗口。
#
#   使用方法:
#     $game_information.push("我是RM爱好者")     => 默认颜色字体输出信息    
#     $game_information.push("我是RM爱好者",1)   => 1号颜色字体输出信息
#
#     $game_information.push("HP: #{game_variables[1]}")
#                                                => 输出(HP: 1号变量的值)
#
#     $game_information.clear                    => 立刻清除所有信息
#
#=============================================================================
class Window_Information < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------  
  def initialize(x, y, width, height)
    
    ##################  ↓以下可根据个人情况修改  ##################
    
    super(x, y, width, height)            # 要改窗口位置和大小可以在这里改
    @wlh = 16                             # 行高
    @line_max = 5                         # 最大行数
    @font_size = 14                       # 字体大小
    @align = 1                            # 信息位置,0左对齐,1居中,2右对齐
    @disappear_condition = 0              # <_消失条件,0自动消失,1不消失,
                                          #   2按键消失,键位可在第77行改_>
    self.opacity = 0                      # 窗口的不透明度,等于0时隐藏
    
    ##################  ↑以上可根据个人情况修改  ##################
    
    @queue = []                           # 信息队列
    @disappear_count = 0                  # 消失时间
    @disappear_status = 0                 # 消失度,信息淡出用
    @disappearing = false                 # 消失标志,信息淡出用
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    line_max = @queue.size
    self.contents.font.size = @font_size
    if line_max >= @line_max            # 如果信息已满
      self.contents.clear
      for i in 0...(line_max - 1)       # 重绘旧有信息
        str = @queue[i].dup
        color = str.slice!(-1, 1)       # 获取颜色编号并将其从信息字符串中删除
        self.contents.font.color = text_color(color.to_i)
        self.contents.draw_text(0, @wlh * i, self.width, @wlh, str, @align)
      end
    end    
    # 描绘新信息
    str = @queue[-1].dup                # 复制队列最后的元素
    color = str.slice!(-1, 1)         
    self.contents.font.color = text_color(color.to_i)
    self.contents.draw_text(0, @wlh * (@queue.size - 1), self.width, @wlh, str, @align)
    @disappear_count = 0                # 消失计时归零
  end
  #--------------------------------------------------------------------------
  # ● 更新
  #--------------------------------------------------------------------------  
  def update
    super
    if @disappearing                    # 正在消失的话,执行淡出然后返回
      disappear
      return
    end
    # 自动消失的处理
    @disappear_count += 1 unless @queue.empty? or @disappear_condition != 0
    if @disappear_count >= 180          
      @disappearing = true
    end
    # 按键消失的处理
    if Input.trigger?(Input::C)         
      if @disappear_condition == 2
        @disappearing = true
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 消失(淡出哦~)
  #--------------------------------------------------------------------------  
  def disappear
    @disappear_status += 5
    return unless @disappear_status %20 == 0
    self.contents.clear
    line_max = @queue.size
    for i in 0...line_max      
      str = @queue[i].dup
      color = str.slice!(-1, 1) 
      self.contents.font.color = text_color(color.to_i)
      self.contents.font.color.alpha = (255 - @disappear_status)
      self.contents.draw_text(0, @wlh * i, self.width, @wlh, str, @align)
    end
    if self.contents.font.color.alpha <= 10
      @queue.clear
      @disappear_count = 0
      @disappear_status = 0
      @disappearing = false
    end
  end
  #--------------------------------------------------------------------------
  # ● 清除(立刻清除内容,不淡出)
  #--------------------------------------------------------------------------
  def clear
    @queue.clear
    @disappear_count = 0
    @disappear_status = 0
    @disappearing = false
  end
  #--------------------------------------------------------------------------
  # ● 插入信息
  #--------------------------------------------------------------------------    
  def push(str, color = 0)
    @queue.shift if @queue.size >= @line_max
    str = str + color.to_s          # 将颜色编号转换成字符插入信息字符串
    @queue.push(str)
    refresh
  end
end
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  处理地图画面的类。
#==============================================================================
class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------  
  alias start2 start
  def start
    start2
    $game_information = Window_Information.new(0, 316, 544, 100)
  end
  #--------------------------------------------------------------------------
  # ● 更新
  #--------------------------------------------------------------------------
  alias update2 update
  def update
    update2
    $game_information.update
  end
  #--------------------------------------------------------------------------
  # ● 结束处理
  #--------------------------------------------------------------------------  
  alias terminate2 terminate
  def terminate
    $game_information.dispose
    terminate2
  end
end
 | 
 |