Project1
标题:
在对话中方便地使用多字体
[打印本页]
作者:
猫哥哥
时间:
2007-1-14 02:57
标题:
在对话中方便地使用多字体
你是否为了改变对话的字体,颜色和字号大小,而不断地输入一大堆\c[n]\s[n]之类的东东……这个脚本就是用来方便切换的……
{/hx}{/hx}{/hx}虽然是很简单的内容,但是好象还是有很多人在问……所以做了个简便的脚本……
作用
:在对话中方便的使用\f[n]切换第二种,第三种,第四种字号大小、颜色都不一样的字体。而不需要重复的输入一堆诸如\c[n]\s[n]的命令字符来切换(有时候弄得连输入对话框都挤得换行了)……
适用
:默认脚本0冲突
冲突可能
:不知道有没有人做过这个(没有挖坟的习惯……),由于脚本里定义了Window_Message的refresh,使用了其他整合的对话脚本应该会冲突……如果需要用到这个功能的朋友,可以对照里面的增添修改内容把你的脚本修改一下,应该可以达到效果……{/hx}(用ctrl+F搜“增添修改”来查看)
由于我对脚本也不是了解很深,有出错的地方,希望大家指出,谢谢了{/hx}{/hx}
范例工程下载:
http://rpg.blue/UP_PIC/200705/� ... 使用多字体.rar
●注意,在未对本脚本做修改的情况下,请不要使用n=1~4之外的数字
比如\f[0]或者\f[9]等,否则必然出现脚本错误!!
#==================================================================
# 66RPG 对话使用第二字体
#==================================================================
#------------------------------------------------------------
#这个脚本的念头是在论坛上问类似问题时,受simounF的回答,而启发的
#
#由于目前我对脚本的了解也只是皮毛,有不正确的地方,请大家给我指点一下喔
#对此脚本有疑问请在bbs.66RPG.com给我站内短信吧……>_< 猫哥哥
#==============================================================
#
#★使用方法★:将本脚本插入到main脚本之前。
# 先设置下面的预处理内容,然后用\f[n]来在对话里切换字体(默认的n=0~4)
# 和整合的对话脚本可能有冲突,懂脚本的自己修改一下吧
#
# \f[1]回到默认
# \f[2]使用第二字体
# \f[3]使用第三字体
# \f[4]使用第四字体
# ●注意,在未对本脚本做修改的情况下,请不要使用n=1~4之外的数字
# 比如\f[0]或者\f[9]等,否则必然出现脚本错误!!
#
#=================预先处理=======================
#
###########①默认字体(如果修改了main或者Window_Base里的默认字体,把这里设置一下)-------
#
$cat_默认文字字体 ="黑体" #默认的黑体
$cat_默认字体大小 =22 #默认的22号
$cat_默认字体颜色 = Color.new(255,255,255,255) #默认用的白色
#不懂怎么换颜色的菜鸟看这里: ↑上面这个括号里,四个数值分别是(红,绿,蓝,透明度),取值范围是(0~255),想要什么颜色自己更该数值试试看吧。
#
###########②第二字体的设置#########################
$cat_使用的第二字体 ="楷体_GB2312"
$cat_使用的第二字体大小 =22
$cat_使用的第二字体颜色 = Color.new(255,55,55,255) #红
##################################################
#
###########③第三字体的设置#########################
$cat_使用的第三字体 ="宋体"
$cat_使用的第三字体大小 =22
$cat_使用的第三字体颜色 = Color.new(225,225,80,255) #黄
##################################################
#
###########④第四字体的设置#########################
$cat_使用的第四字体 ="华文行楷"
$cat_使用的第四字体大小 =42
$cat_使用的第四字体颜色 = Color.new(0,0,123,255) #蓝
######################################################
#
#----------定义部分-------------
#——字体---
class Window_Base
def font_style(n)
case n
when 1
return $cat_默认文字字体
when 2
return $cat_使用的第二字体
when 3
return $cat_使用的第三字体
when 4
return $cat_使用的第四字体
end
end
#---大小---
def font_size(n)
case n
when 1
return $cat_默认字体大小
when 2
return $cat_使用的第二字体大小
when 3
return $cat_使用的第三字体大小
when 4
return $cat_使用的第四字体大小
end
end
#----颜色------
def text_color2nd(n)
case n
when 1
return $cat_默认字体颜色
when 2
return $cat_使用的第二字体颜色
when 3
return $cat_使用的第三字体颜色
when 4
return $cat_使用的第四字体颜色
end
end
end
#----------重新定义刷新--------------------
class Window_Message
def refresh
self.contents.clear
#======增添修改的部分=============================
self.contents.font.color = $cat_默认字体颜色 #
self.contents.font.name = $cat_默认文字字体 #
self.contents.font.size = $cat_默认字体大小 #
#=================================================
x = y = 0
@cursor_width = 0
# 到选择项的下一行字
if $game_temp.choice_start == 0
x = 8
end
# 有等待显示的文字的情况下
if $game_temp.message_text != nil
text = $game_temp.message_text
# 限制文字处理
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" に、"\\G" 变为 "\002"
text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
text.gsub!(/\\[Gg]/) { "\002" }
#=====增添修改修改的部分================================
text.gsub!(/\\[Ff]\[([0-9]+)\]/) { "\003[#{$1}]" }#
#=======================================================
# c 获取 1 个字 (如果不能取得文字就循环)
while ((c = text.slice!(/./m)) != nil)
# \\ 的情况下
if c == "\000"
# 还原为本来的文字
c = "\\"
end
# \C[n] 的情况下
if c == "\001"
# 更改文字色
text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
# 下面的文字
next
end
#=========增添修改的部分============================================================
# \F[n] 的情况下
if c == "\003"
# 更改文字字体
text.sub!(/\[([0-9]+)\]/, "")
style = $1.to_i
color2nd = $1.to_i
size = $1.to_i
if style >= 1 and style <= 4 # 4是字体最大的编号,增加字体要加大这个数字
color2nd >= 1 and color2nd <= 4 # 如果修改了上面的最大值,这里也要改
size >= 1 and size <= 4 # 如果修改了上面的最大值,这里也要改
self.contents.font.name = font_style(style)
self.contents.font.color = text_color2nd(color2nd)
self.contents.font.size = font_size(size)
end
# 下面的文字
next
end
#=====================================================================
# \G 的情况下
if c == "\002"
# 生成金钱窗口
if @gold_window == nil
@gold_window = Window_Gold.new
@gold_window.x = 560 - @gold_window.width
if $game_temp.in_battle
@gold_window.y = 192
else
@gold_window.y = self.y >= 128 ? 32 : 384
end
@gold_window.opacity = self.opacity
@gold_window.back_opacity = self.back_opacity
end
# 下面的文字
next
end
# 另起一行文字的情况下
if c == "\n"
# 刷新选择项及光标的高
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
# y 加 1
y += 1
x = 0
# 移动到选择项的下一行
if y >= $game_temp.choice_start
x = 8
end
# 下面的文字
next
end
# 描绘文字
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
# x 为要描绘文字的加法运算
x += self.contents.text_size(c).width
end
end
# 选择项的情况
if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end
# 输入数值的情况
if $game_temp.num_input_variable_id > 0
digits_max = $game_temp.num_input_digits_max
number = $game_variables[$game_temp.num_input_variable_id]
@input_number_window = Window_InputNumber.new(digits_max)
@input_number_window.number = number
@input_number_window.x = self.x + 8
@input_number_window.y = self.y + $game_temp.num_input_start * 32
end
end
end
复制代码
作者:
猫哥哥
时间:
2007-1-14 02:57
标题:
在对话中方便地使用多字体
你是否为了改变对话的字体,颜色和字号大小,而不断地输入一大堆\c[n]\s[n]之类的东东……这个脚本就是用来方便切换的……
{/hx}{/hx}{/hx}虽然是很简单的内容,但是好象还是有很多人在问……所以做了个简便的脚本……
作用
:在对话中方便的使用\f[n]切换第二种,第三种,第四种字号大小、颜色都不一样的字体。而不需要重复的输入一堆诸如\c[n]\s[n]的命令字符来切换(有时候弄得连输入对话框都挤得换行了)……
适用
:默认脚本0冲突
冲突可能
:不知道有没有人做过这个(没有挖坟的习惯……),由于脚本里定义了Window_Message的refresh,使用了其他整合的对话脚本应该会冲突……如果需要用到这个功能的朋友,可以对照里面的增添修改内容把你的脚本修改一下,应该可以达到效果……{/hx}(用ctrl+F搜“增添修改”来查看)
由于我对脚本也不是了解很深,有出错的地方,希望大家指出,谢谢了{/hx}{/hx}
范例工程下载:
http://rpg.blue/UP_PIC/200705/� ... 使用多字体.rar
●注意,在未对本脚本做修改的情况下,请不要使用n=1~4之外的数字
比如\f[0]或者\f[9]等,否则必然出现脚本错误!!
#==================================================================
# 66RPG 对话使用第二字体
#==================================================================
#------------------------------------------------------------
#这个脚本的念头是在论坛上问类似问题时,受simounF的回答,而启发的
#
#由于目前我对脚本的了解也只是皮毛,有不正确的地方,请大家给我指点一下喔
#对此脚本有疑问请在bbs.66RPG.com给我站内短信吧……>_< 猫哥哥
#==============================================================
#
#★使用方法★:将本脚本插入到main脚本之前。
# 先设置下面的预处理内容,然后用\f[n]来在对话里切换字体(默认的n=0~4)
# 和整合的对话脚本可能有冲突,懂脚本的自己修改一下吧
#
# \f[1]回到默认
# \f[2]使用第二字体
# \f[3]使用第三字体
# \f[4]使用第四字体
# ●注意,在未对本脚本做修改的情况下,请不要使用n=1~4之外的数字
# 比如\f[0]或者\f[9]等,否则必然出现脚本错误!!
#
#=================预先处理=======================
#
###########①默认字体(如果修改了main或者Window_Base里的默认字体,把这里设置一下)-------
#
$cat_默认文字字体 ="黑体" #默认的黑体
$cat_默认字体大小 =22 #默认的22号
$cat_默认字体颜色 = Color.new(255,255,255,255) #默认用的白色
#不懂怎么换颜色的菜鸟看这里: ↑上面这个括号里,四个数值分别是(红,绿,蓝,透明度),取值范围是(0~255),想要什么颜色自己更该数值试试看吧。
#
###########②第二字体的设置#########################
$cat_使用的第二字体 ="楷体_GB2312"
$cat_使用的第二字体大小 =22
$cat_使用的第二字体颜色 = Color.new(255,55,55,255) #红
##################################################
#
###########③第三字体的设置#########################
$cat_使用的第三字体 ="宋体"
$cat_使用的第三字体大小 =22
$cat_使用的第三字体颜色 = Color.new(225,225,80,255) #黄
##################################################
#
###########④第四字体的设置#########################
$cat_使用的第四字体 ="华文行楷"
$cat_使用的第四字体大小 =42
$cat_使用的第四字体颜色 = Color.new(0,0,123,255) #蓝
######################################################
#
#----------定义部分-------------
#——字体---
class Window_Base
def font_style(n)
case n
when 1
return $cat_默认文字字体
when 2
return $cat_使用的第二字体
when 3
return $cat_使用的第三字体
when 4
return $cat_使用的第四字体
end
end
#---大小---
def font_size(n)
case n
when 1
return $cat_默认字体大小
when 2
return $cat_使用的第二字体大小
when 3
return $cat_使用的第三字体大小
when 4
return $cat_使用的第四字体大小
end
end
#----颜色------
def text_color2nd(n)
case n
when 1
return $cat_默认字体颜色
when 2
return $cat_使用的第二字体颜色
when 3
return $cat_使用的第三字体颜色
when 4
return $cat_使用的第四字体颜色
end
end
end
#----------重新定义刷新--------------------
class Window_Message
def refresh
self.contents.clear
#======增添修改的部分=============================
self.contents.font.color = $cat_默认字体颜色 #
self.contents.font.name = $cat_默认文字字体 #
self.contents.font.size = $cat_默认字体大小 #
#=================================================
x = y = 0
@cursor_width = 0
# 到选择项的下一行字
if $game_temp.choice_start == 0
x = 8
end
# 有等待显示的文字的情况下
if $game_temp.message_text != nil
text = $game_temp.message_text
# 限制文字处理
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" に、"\\G" 变为 "\002"
text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
text.gsub!(/\\[Gg]/) { "\002" }
#=====增添修改修改的部分================================
text.gsub!(/\\[Ff]\[([0-9]+)\]/) { "\003[#{$1}]" }#
#=======================================================
# c 获取 1 个字 (如果不能取得文字就循环)
while ((c = text.slice!(/./m)) != nil)
# \\ 的情况下
if c == "\000"
# 还原为本来的文字
c = "\\"
end
# \C[n] 的情况下
if c == "\001"
# 更改文字色
text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
# 下面的文字
next
end
#=========增添修改的部分============================================================
# \F[n] 的情况下
if c == "\003"
# 更改文字字体
text.sub!(/\[([0-9]+)\]/, "")
style = $1.to_i
color2nd = $1.to_i
size = $1.to_i
if style >= 1 and style <= 4 # 4是字体最大的编号,增加字体要加大这个数字
color2nd >= 1 and color2nd <= 4 # 如果修改了上面的最大值,这里也要改
size >= 1 and size <= 4 # 如果修改了上面的最大值,这里也要改
self.contents.font.name = font_style(style)
self.contents.font.color = text_color2nd(color2nd)
self.contents.font.size = font_size(size)
end
# 下面的文字
next
end
#=====================================================================
# \G 的情况下
if c == "\002"
# 生成金钱窗口
if @gold_window == nil
@gold_window = Window_Gold.new
@gold_window.x = 560 - @gold_window.width
if $game_temp.in_battle
@gold_window.y = 192
else
@gold_window.y = self.y >= 128 ? 32 : 384
end
@gold_window.opacity = self.opacity
@gold_window.back_opacity = self.back_opacity
end
# 下面的文字
next
end
# 另起一行文字的情况下
if c == "\n"
# 刷新选择项及光标的高
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
# y 加 1
y += 1
x = 0
# 移动到选择项的下一行
if y >= $game_temp.choice_start
x = 8
end
# 下面的文字
next
end
# 描绘文字
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
# x 为要描绘文字的加法运算
x += self.contents.text_size(c).width
end
end
# 选择项的情况
if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end
# 输入数值的情况
if $game_temp.num_input_variable_id > 0
digits_max = $game_temp.num_input_digits_max
number = $game_variables[$game_temp.num_input_variable_id]
@input_number_window = Window_InputNumber.new(digits_max)
@input_number_window.number = number
@input_number_window.x = self.x + 8
@input_number_window.y = self.y + $game_temp.num_input_start * 32
end
end
end
复制代码
作者:
bad♂boy
时间:
2007-1-14 03:23
提示:
作者被禁止或删除 内容自动屏蔽
作者:
猫哥哥
时间:
2007-1-14 03:33
{/pz}由于定义了Message的刷新方法,应该会有冲突的
…………你可以改一下……{/gg}{/gg}
[LINE]1,#dddddd[/LINE]
默认脚本使用比较好……
作者:
轮回者
时间:
2007-1-14 03:55
做的不错!
楼主加油!
作者:
小传子
时间:
2007-1-14 04:07
我一直都用华文新魏{/hx}
作者:
猫哥哥
时间:
2007-1-14 05:43
以下引用
轮回者于2007-1-13 19:55:22
的发言:
做的不错!
楼主加油!
{/hx}谢谢鼓励,我会加油的{/cy}
作者:
猫哥哥
时间:
2007-1-17 18:44
[LINE]1,#dddddd[/LINE]
{/wx}有没有人能指点一下怎么写后面的刷新,可以避开和其他对话的脚本冲突么?……
[LINE]1,#dddddd[/LINE]
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1