赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 8 |
经验 | 13650 |
最后登录 | 2023-11-18 |
在线时间 | 250 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 848
- 在线时间
- 250 小时
- 注册时间
- 2013-10-4
- 帖子
- 120
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
图书馆伸手了两个脚本,使用时发现用了自动换行,选择框自适应就不能实现了,两个功能都想要,咋整??
以下选择框自适应宽度脚本:
class Window_ChoiceList
def max_choice_width
$game_message.choices.collect {|s| pro_ex(s) }.max
end
def pro_ex(str)
s = convert_escape_characters(str)
pos = {:x => 0, :y => -Graphics.height, :new_x => 0, :height => calc_line_height(s)}
process_character(s.slice!(0, 1), s, pos) until s.empty?
pos[:x]
end
end
以下自动换行脚本:
class Window_Base
alias :iisnow_convert_escape_characters :convert_escape_characters
def convert_escape_characters(text)
result = iisnow_convert_escape_characters(text)
result.gsub!(/\ek/) { "\k" }
result
end
def process_character(c, text, pos)
case c
when "\r"
return
when "\n"
process_new_line(text, pos) if !@auto_n
when "\k"
@auto_n = false
when "\f"
process_new_page(text, pos)
when "\e"
process_escape_character(obtain_escape_code(text), text, pos)
else
process_normal_character(c,text,pos)
end
end
def process_normal_character(c,text,pos)
@auto_n = true
text_width = text_size(c).width
if real_width - pos[:x] > text_width
draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c)
pos[:x] += text_width
else
process_new_line(text,pos)
process_normal_character(c,text,pos)
end
end
def real_width
return self.width - 2 * standard_padding
end
end
class Window_Message
def process_normal_character(c,text,pos)
super
wait_for_one_character
end
end |
|