设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2641|回复: 1
打印 上一主题 下一主题

[原创发布] 用RMXP窗口重置print

[复制链接]

Lv2.观梦者

梦石
0
星屑
270
在线时间
24 小时
注册时间
2008-8-2
帖子
128
跳转到指定楼层
1
发表于 2010-7-19 16:50:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 谢谢合作 于 2010-7-19 17:36 编辑

我上次发布的脚本似乎没有伯乐发现他是千里马,于是本人亲自上阵。
http://rpg.blue/forum.php?mod=vi ... 8&fromuid=61278

本系统同样具有超强的适应能力,请看下图:

缩放窗口

缩放窗口,到达屏幕边缘自动停止缩放。

缩放字体

人类看不清的字也可以显示:


设置:
第41行,设置信息窗口弹出后等待的时间。
第53、54行,设置窗口每次不透明度减少的量。
其他的,自己看。=_=
  1. def print(*args)
  2.   if $print_message == true
  3.     $print_window.dispose
  4.   end
  5.   # 生成系统对像
  6.   $game_system = Game_System.new unless $game_system
  7.   $data_system        = load_data("Data/System.rxdata") unless $data_system
  8.   message = args.to_s
  9.   message = message + "\r\n"
  10.   bitmap = Bitmap.new(608,448)
  11.   line_all = 0
  12.   pos1 = 0
  13.   pos2 = 0
  14.   array = []
  15.   loop do
  16.     pos2 = message.index("\n", pos1)
  17.     if pos2
  18.       array.push(bitmap.text_size(message[pos1, pos2]).width)
  19.       pos1 = pos2 + 1
  20.       line_all += 1
  21.     else
  22.       break
  23.     end
  24.   end
  25.   if array.max > 608
  26.     rect_width = 608
  27.   else
  28.     rect_width = array.max
  29.   end
  30.   if line_all > 14
  31.     rect_height = 14 * 32
  32.   else
  33.     rect_height = line_all * 32
  34.   end
  35.   $print_window = Window_Base.new(320 - (rect_width + 32) / 2, 240 - (rect_height + 32) / 2, rect_width + 32, rect_height + 32)
  36.   $print_window.z = 99998 # 这里比鼠标的z值小。
  37.   $print_window.back_opacity = 160
  38.   $print_window.contents = Bitmap.new(rect_width, rect_height)
  39.   $print_window.contents.font.bold = true
  40.   $print_window.contents.font.color = $print_window.crisis_color
  41.   $print_window.contents.draw_text_all(0, 0, rect_width, rect_height, args.to_s, 1)
  42.   for i in 0...120 # 这里设置等待时间
  43.     Graphics.update
  44.     Input.update
  45.     break if Input.trigger?(Input::C)
  46.   end
  47.   $print_message = true
  48. end

  49. class << Graphics
  50.   alias old_update update
  51.   def update
  52.     if $print_message == true
  53.       $print_window.opacity -= 12
  54.       $print_window.contents_opacity -= 12
  55.       if $print_window.opacity <= 0
  56.         $print_window.contents.dispose
  57.         $print_window.dispose
  58.         $print_message = false
  59.       end
  60.     end
  61.     old_update
  62.   end
  63.   
  64.   alias old_freeze freeze
  65.   def freeze
  66.     loop do
  67.       break unless $print_message
  68.       update
  69.     end
  70.     old_freeze
  71.   end
  72. end
复制代码
这个脚本要用到上次我发布的那个脚本
http://rpg.blue/forum.php?mod=vi ... 8&fromuid=61278
  1. class Bitmap
  2.   #--------------------------------------------------------------------------
  3.   # ● 描绘描绘字符串
  4.   #     x, y, width, height:矩形坐标
  5.   #     str:                字符串
  6.   #     align:              对齐方式
  7.   #     change_font:        自动改变字体大小
  8.   #--------------------------------------------------------------------------
  9.   def draw_text_all(x, y, width, height, str, align = 0, change_font = true)
  10.     str = str + "\n"
  11.     # 获取行数(集成:换行标识替换,这里主要用于去掉那个框框)
  12.     line_all = 0
  13.     loop do
  14.       if str[/\n/]
  15.         str = str.sub(/\n/){'<hx>'}
  16.         line_all += 1
  17.       else
  18.         break
  19.       end
  20.     end
  21.     # 目标数组化
  22.     s = []
  23.     loop do
  24.       break unless str[/<hx>/]
  25.       for i in 0...str.size
  26.         if str[i, 4] == "<hx>"
  27.           s[s.size] = str[0, i]
  28.           str.slice!(0, i+4)
  29.           break
  30.         end
  31.       end
  32.     end
  33.     # 字体大小自动化
  34.     if change_font
  35.       size =  height * 0.75 / line_all
  36.       if size > 96
  37.         self.font.size = 96
  38.       elsif size < 6
  39.         self.font.size = 6
  40.       else
  41.         self.font.size = size
  42.       end
  43.     end
  44.     # 描绘目标
  45.     for j in 0...s.size
  46.       draw_text(x, height / line_all.to_f * j + y, width, height / line_all.to_f, s[j], align)
  47.     end
  48.   end
  49. end
复制代码
GRESK

Lv1.梦旅人

尽头

梦石
0
星屑
119
在线时间
278 小时
注册时间
2010-6-20
帖子
1280
2
发表于 2010-7-20 08:02:21 | 只看该作者
貌似有什么用?

点评

比如用鼠标系统的时候,你去点确定,看不到鼠标、、、  发表于 2010-7-20 13:27
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-27 19:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表