| 
 
| 赞 | 61 |  
| VIP | 321 |  
| 好人卡 | 140 |  
| 积分 | 64 |  
| 经验 | 179075 |  
| 最后登录 | 2025-2-24 |  
| 在线时间 | 1275 小时 |  
 Lv4.逐梦者 (版主) 百合控 
	梦石0 星屑6448 在线时间1275 小时注册时间2013-8-21帖子3657 
 | 
|   以防万一:GitHub
 
 #==============================================================================# ■ 地图显示变量#  作者:影月千秋#  版本:V 1.0#  最近更新:2014.02.08#  适用:VA#------------------------------------------------------------------------------# ● 简介#  在地图上显示变量,可以附加文字#==============================================================================# ● 使用方法#   将此脚本插入到其他脚本以下,Main以上,在下方进行设置即可#==============================================================================# ● 更新#   V 1.0 2014.02.08 新建#==============================================================================# ● 声明#   本脚本来自【影月千秋】,使用、修改和转载请保留此信息#==============================================================================  #==============================================================================# ■ Smomo::VarWin#==============================================================================module Smomo  module VarWin    SWI = 0    # 当此开关打开 才会显示变量    # 如果想要一直显示 就设为0     Var = [    # 变量和显示方式    #·填写方式    # [[横坐标, 纵坐标], "显示模板", [需要显示的变量ID], 可省略{窗口背景是否可见}]    # 最后一项如果省略 默认可见    #  横纵坐标是显示位置左上角的坐标    #  显示模板是sprintf使用的格式化字符串,对于不懂脚本的人:    #    使用【%s】来代替变量,使用【%02d】控制变量格式    #    看不懂的话 下面有例子    #  需要显示的变量形如【[3,9,10]】依次显示三个变量    #    #·例子    # 先假设1号变量的值为 19,2号为 4    # 下面两个例子省略前后两个项目 但是实际操作时前面一个必须填写    # "苹果有%s个, 香蕉有%s个",[1,2]    #  显示为:苹果有19个, 香蕉有4个    # "现在是%02d分%02d秒",[1,2]    #  显示为:现在是19分04秒    #    #·特别说明    # 显示模板中 允许使用跳脱字符和对话框用的控制符 但是控制符需要多些一个\    #  比如\I[9]绘制九号图标 写成 \\I[9]    # 换行符之类跳脱字符 原样写即可    #  比如 \n 还是 \n     # 模板 ↓  复制下面一行(或第二行) 填写后按Ctrl + Q即可生效#~     [[0,0], "%04d.%02d.%02d", [1,2,3], false],#~     [[0,0], "口袋上有%s个洞", [4]],       [[0,0], "\\I[224]%04d年%02d月%02d日", [5,6,7], false],      [[0,100],"我要填坑,\\{还有%s天!\\}",[8], true],      [[0,200],"换个行看看吧╮(╯▽╰)╭\n再换个行\n变量的值:%s",[9]], #=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+##------------------------------------------------------------------------------##                               请勿跨过这块区域                                ##------------------------------------------------------------------------------##+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=#      "close the array"    ] # close the array    Var.pop    Var.each_with_index{|v, i| Var[i][3] = true if v[3].nil?}  endend#==============================================================================# ■ Window_MoVarShow#==============================================================================class Window_MoVarShow < Window_Base  #--------------------------------------------------------------------------  # ● 初始化  #--------------------------------------------------------------------------  def initialize(x, y, opa, fmt, *varid)    @fmt = fmt    @varid = varid    @vars = []    @varid.each_with_index{|id, index| @vars[index] = $game_variables[id]}    super(x, y, *window_size)    self.openness = 0    self.opacity = opa ? 255 : 0    refresh  end  #--------------------------------------------------------------------------  # ● 获取窗口合适的大小  #--------------------------------------------------------------------------  def window_size    temp_win = Window_Base.new(Graphics.width, 0, Graphics.width, 1)    temp_win.reset_font_settings    sr = temp_win.convert_escape_characters(sprintf(@fmt, *@vars))    wd = 0    pos = {:x =>0, :y =>0, :new_x =>0, :height => temp_win.calc_line_height(sr)}    sr.each_line do |s|      s.gsub!(/[\n]/){""}      temp_win.process_character(s.slice!(0, 1), s, pos) until s.empty?      wd = [pos[:x], wd].max      pos[:x] = pos[:new_x]      pos[:y] += pos[:height]      pos[:height] = temp_win.calc_line_height(s)    end    temp_win.dispose    [wd + standard_padding * 2, pos[:y] + standard_padding * 2]  end  #--------------------------------------------------------------------------  # ● 更新  #--------------------------------------------------------------------------  def update    super    if Smomo::VarWin::SWI == 0 || $game_switches[Smomo::VarWin::SWI]      open if close?      refresh if $game_map.need_refresh    else      close if open?    end  end  #--------------------------------------------------------------------------  # ● 刷新  #--------------------------------------------------------------------------  def refresh    contents.clear    @varid.each_with_index{|id, index| @vars[index] = $game_variables[id]}    self.move(self.x, self.y, *window_size)    draw_text_ex(0, 0, sprintf(@fmt, *@vars))  endend#==============================================================================# ■ Scene_Map#==============================================================================class Scene_Map  #--------------------------------------------------------------------------  # ● 生成所有窗口  #--------------------------------------------------------------------------  alias :mo_241e43c6451d79ce81a94bc0b22c3ea5_caw :create_all_windows  def create_all_windows    mo_241e43c6451d79ce81a94bc0b22c3ea5_caw    create_mo_var_show_window  end  #--------------------------------------------------------------------------  # ● 生成变量窗口  #--------------------------------------------------------------------------  def create_mo_var_show_window    @mo_var_show_window = []    Smomo::VarWin::Var.each_with_index do |((x, y), fmt, vars, opa), id|      @mo_var_show_window[id] = Window_MoVarShow.new(x, y, opa, fmt, *vars)    end  end  #--------------------------------------------------------------------------  # ● 更新画面  #--------------------------------------------------------------------------  alias :mo_241e43c6451d79ce81a94bc0b22c3ea5_update :update  def update    update_mo_var_show_window    mo_241e43c6451d79ce81a94bc0b22c3ea5_update   end  #--------------------------------------------------------------------------  # ● 更新变量窗口  #--------------------------------------------------------------------------  def update_mo_var_show_window    @mo_var_show_window.each{|win| win.update}  endend
#============================================================================== 
# ■ 地图显示变量 
#  作者:影月千秋 
#  版本:V 1.0 
#  最近更新:2014.02.08 
#  适用:VA 
#------------------------------------------------------------------------------ 
# ● 简介 
#  在地图上显示变量,可以附加文字 
#============================================================================== 
# ● 使用方法 
#   将此脚本插入到其他脚本以下,Main以上,在下方进行设置即可 
#============================================================================== 
# ● 更新 
#   V 1.0 2014.02.08 新建 
#============================================================================== 
# ● 声明 
#   本脚本来自【影月千秋】,使用、修改和转载请保留此信息 
#============================================================================== 
  
  
#============================================================================== 
# ■ Smomo::VarWin 
#============================================================================== 
module Smomo 
  module VarWin 
    SWI = 0 
    # 当此开关打开 才会显示变量 
    # 如果想要一直显示 就设为0 
  
    Var = [ 
    # 变量和显示方式 
    #·填写方式 
    # [[横坐标, 纵坐标], "显示模板", [需要显示的变量ID], 可省略{窗口背景是否可见}] 
    # 最后一项如果省略 默认可见 
    #  横纵坐标是显示位置左上角的坐标 
    #  显示模板是sprintf使用的格式化字符串,对于不懂脚本的人: 
    #    使用【%s】来代替变量,使用【%02d】控制变量格式 
    #    看不懂的话 下面有例子 
    #  需要显示的变量形如【[3,9,10]】依次显示三个变量 
    # 
    #·例子 
    # 先假设1号变量的值为 19,2号为 4 
    # 下面两个例子省略前后两个项目 但是实际操作时前面一个必须填写 
    # "苹果有%s个, 香蕉有%s个",[1,2] 
    #  显示为:苹果有19个, 香蕉有4个 
    # "现在是%02d分%02d秒",[1,2] 
    #  显示为:现在是19分04秒 
    # 
    #·特别说明 
    # 显示模板中 允许使用跳脱字符和对话框用的控制符 但是控制符需要多些一个\ 
    #  比如\I[9]绘制九号图标 写成 \\I[9] 
    # 换行符之类跳脱字符 原样写即可 
    #  比如 \n 还是 \n 
  
    # 模板 ↓  复制下面一行(或第二行) 填写后按Ctrl + Q即可生效 
#~     [[0,0], "%04d.%02d.%02d", [1,2,3], false], 
#~     [[0,0], "口袋上有%s个洞", [4]], 
  
      [[0,0], "\\I[224]%04d年%02d月%02d日", [5,6,7], false], 
      [[0,100],"我要填坑,\\{还有%s天!\\}",[8], true], 
      [[0,200],"换个行看看吧╮(╯▽╰)╭\n再换个行\n变量的值:%s",[9]], 
  
#=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+# 
#------------------------------------------------------------------------------# 
#                               请勿跨过这块区域                                # 
#------------------------------------------------------------------------------# 
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=# 
      "close the array" 
    ] # close the array 
    Var.pop 
    Var.each_with_index{|v, i| Var[i][3] = true if v[3].nil?} 
  end 
end 
#============================================================================== 
# ■ Window_MoVarShow 
#============================================================================== 
class Window_MoVarShow < Window_Base 
  #-------------------------------------------------------------------------- 
  # ● 初始化 
  #-------------------------------------------------------------------------- 
  def initialize(x, y, opa, fmt, *varid) 
    @fmt = fmt 
    @varid = varid 
    @vars = [] 
    @varid.each_with_index{|id, index| @vars[index] = $game_variables[id]} 
    super(x, y, *window_size) 
    self.openness = 0 
    self.opacity = opa ? 255 : 0 
    refresh 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取窗口合适的大小 
  #-------------------------------------------------------------------------- 
  def window_size 
    temp_win = Window_Base.new(Graphics.width, 0, Graphics.width, 1) 
    temp_win.reset_font_settings 
    sr = temp_win.convert_escape_characters(sprintf(@fmt, *@vars)) 
    wd = 0 
    pos = {:x =>0, :y =>0, :new_x =>0, :height => temp_win.calc_line_height(sr)} 
    sr.each_line do |s| 
      s.gsub!(/[\n]/){""} 
      temp_win.process_character(s.slice!(0, 1), s, pos) until s.empty? 
      wd = [pos[:x], wd].max 
      pos[:x] = pos[:new_x] 
      pos[:y] += pos[:height] 
      pos[:height] = temp_win.calc_line_height(s) 
    end 
    temp_win.dispose 
    [wd + standard_padding * 2, pos[:y] + standard_padding * 2] 
  end 
  #-------------------------------------------------------------------------- 
  # ● 更新 
  #-------------------------------------------------------------------------- 
  def update 
    super 
    if Smomo::VarWin::SWI == 0 || $game_switches[Smomo::VarWin::SWI] 
      open if close? 
      refresh if $game_map.need_refresh 
    else 
      close if open? 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● 刷新 
  #-------------------------------------------------------------------------- 
  def refresh 
    contents.clear 
    @varid.each_with_index{|id, index| @vars[index] = $game_variables[id]} 
    self.move(self.x, self.y, *window_size) 
    draw_text_ex(0, 0, sprintf(@fmt, *@vars)) 
  end 
end 
#============================================================================== 
# ■ Scene_Map 
#============================================================================== 
class Scene_Map 
  #-------------------------------------------------------------------------- 
  # ● 生成所有窗口 
  #-------------------------------------------------------------------------- 
  alias :mo_241e43c6451d79ce81a94bc0b22c3ea5_caw :create_all_windows 
  def create_all_windows 
    mo_241e43c6451d79ce81a94bc0b22c3ea5_caw 
    create_mo_var_show_window 
  end 
  #-------------------------------------------------------------------------- 
  # ● 生成变量窗口 
  #-------------------------------------------------------------------------- 
  def create_mo_var_show_window 
    @mo_var_show_window = [] 
    Smomo::VarWin::Var.each_with_index do |((x, y), fmt, vars, opa), id| 
      @mo_var_show_window[id] = Window_MoVarShow.new(x, y, opa, fmt, *vars) 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● 更新画面 
  #-------------------------------------------------------------------------- 
  alias :mo_241e43c6451d79ce81a94bc0b22c3ea5_update :update 
  def update 
    update_mo_var_show_window 
    mo_241e43c6451d79ce81a94bc0b22c3ea5_update  
  end 
  #-------------------------------------------------------------------------- 
  # ● 更新变量窗口 
  #-------------------------------------------------------------------------- 
  def update_mo_var_show_window 
    @mo_var_show_window.each{|win| win.update} 
  end 
end 
 | 
 |