赞 | 59 |
VIP | 321 |
好人卡 | 140 |
积分 | 66 |
经验 | 179075 |
最后登录 | 2024-6-19 |
在线时间 | 1275 小时 |
Lv4.逐梦者 (版主) 百合控
- 梦石
- 0
- 星屑
- 6643
- 在线时间
- 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?} 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
#==============================================================================
# ■ 地图显示变量
# 作者:影月千秋
# 版本: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
|
|