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

Project1

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

[原创发布] [简单实用]续行符创建超长文章

 关闭 [复制链接]

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22457
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

跳转到指定楼层
1
发表于 2007-8-19 08:47:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 后知后觉 于 2009-11-20 14:11 编辑

没记错的话这是站上第4个长文章脚本了吧。。。。

效果:通过在“显示文章”的事件末尾加上续行符"_",可以实现文章的连续显示,不需要进行特殊设置。最大可以显示12行(超过12行,屏幕也不够用了)

使用方法:将以下脚本插入到Main之前,在需要文章连辍显示的场合,在“显示文章”的文本最后一行末尾处,加入一个空格和一个下划线,例:
显示文章:这是第一行
           这是第二行
           这是第三行
           这是第四行 _
显示文章:这是第五行
           这是第六行 _
显示选择项:C1,C2,C3

以上事件在游戏里将会变成一个大文本框,里面有九行,最后三行是选择项
......
注意:
1. 续行符仅写在“显示文章”事件的最后一行末尾才有效果,写在中间行末尾会被直接过滤掉,写在不是行末尾的地方会当作普通字符显示,续行符对后续的“显示文章”“显示选择项”“输入数值”均有收纳作用。
2. 续行符前面必须有一个空格,否则会当作普通字符显示出来且没有效果。
3. 当文章长度已经积累到12行时,续行符失效。

脚本(有完整注释,如果你使用了小字体导致允许显示12行以上的文章,可以修改相应地方):
  1. #============================================================================
  2. # ■ 续行符文章连辍显示 by SailCat
  3. #============================================================================
  4. class Window_Message
  5.   alias sailcat_refresh refresh
  6.   #--------------------------------------------------------------------------
  7.   # ● 刷新
  8.   #--------------------------------------------------------------------------
  9.   def refresh
  10.     lines = 0
  11.     $game_temp.message_text.each {lines += 1}
  12.     lines = 4 if lines < 4
  13.     self.height = lines * 32 + 32
  14.     self.contents = Bitmap.new(width - 32, height - 32)
  15.     reset_window
  16.     sailcat_refresh
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 设置窗口位置与不透明度
  20.   #--------------------------------------------------------------------------
  21.   def reset_window
  22.     if $game_temp.in_battle
  23.       self.y = 16
  24.     else
  25.       case $game_system.message_position
  26.       when 0  # 上
  27.         self.y = 16
  28.       when 1  # 中
  29.         self.y = 240 - self.height / 2
  30.       when 2  # 下
  31.         self.y = 464 - self.height
  32.       end
  33.     end
  34.     if $game_system.message_frame == 0
  35.       self.opacity = 255
  36.     else
  37.       self.opacity = 0
  38.     end
  39.     self.back_opacity = 160
  40.   end
  41. end
  42. class Interpreter
  43.   #--------------------------------------------------------------------------
  44.   # ● 显示文章
  45.   #--------------------------------------------------------------------------
  46.   def command_101
  47.     # 另外的文章已经设置过 message_text 的情况下
  48.     if $game_temp.message_text != nil
  49.       # 结束
  50.       return false
  51.     end
  52.     # 设置信息结束后待机和返回调用标志
  53.     @message_waiting = true
  54.     $game_temp.message_proc = Proc.new { @message_waiting = false }
  55.     # message_text 设置为 1 行
  56.     $game_temp.message_text = @list[@index].parameters[0] + "\n"
  57.     line_count = 1
  58.     # 最大 4 行
  59.     line_max = 4
  60.     # 循环
  61.     loop do
  62.       # 下一个事件指令为文章两行以上的情况
  63.       if @list[@index+1].code == 401
  64.         # message_text 添加到第 2 行以下
  65.         $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
  66.         line_count += 1
  67.       # 下一个事件指令为显示文章,且本行末尾有续行标记的情况
  68.       elsif @list[@index+1].code == 101 and @list[@index].parameters[0][-2, 2] == " _"
  69.         # 如果已经达到 12 行就返回
  70.         if line_count == 12
  71.           # 清除续行标记
  72.           $game_temp.message_text.gsub!(/ _$/, "")
  73.           # 继续
  74.           return true
  75.         end
  76.         # message_text 添加到第 2 行以下
  77.         $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
  78.         line_count += 1
  79.         # 增加 4 行空间,最多 12 行
  80.         line_max += 4 if line_max < 12
  81.       # 事件指令不在文章两行以下的情况
  82.       else
  83.         # 如果本行末尾有续行标记则增加到 12 行
  84.         if @list[@index].parameters[0][-2, 2] == " _"
  85.           line_max = 12
  86.         end
  87.         # 下一个事件指令为显示选择项的情况下
  88.         if @list[@index+1].code == 102
  89.           # 如果选择项能收纳在画面里
  90.           if @list[@index+1].parameters[0].size <= line_max - line_count
  91.             # 推进索引
  92.             @index += 1
  93.             # 设置选择项
  94.             $game_temp.choice_start = line_count
  95.             setup_choices(@list[@index].parameters)
  96.           end
  97.         # 下一个事件指令为处理输入数值的情况下
  98.         elsif @list[@index+1].code == 103 or
  99.           # 如果数值输入窗口能收纳在画面里
  100.           if line_count < line_max
  101.             # 推进索引
  102.             @index += 1
  103.             # 设置输入数值
  104.             $game_temp.num_input_start = line_count
  105.             $game_temp.num_input_variable_id = @list[@index].parameters[0]
  106.             $game_temp.num_input_digits_max = @list[@index].parameters[1]
  107.           end
  108.         end
  109.         # 清除续行标记
  110.         $game_temp.message_text.gsub!(/ _$/, "")
  111.         # 继续
  112.         return true
  113.       end
  114.       # 推进索引
  115.       @index += 1
  116.     end
  117.   end
  118. end
复制代码


以下内容由 后知后觉 添加:
关于一处BUG的修正请点击
http://rpg.blue/viewthread.php?t ... D%E8%A1%8C%E7%AC%A6
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22457
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

2
 楼主| 发表于 2007-8-19 08:47:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 后知后觉 于 2009-11-20 13:55 编辑

重复内容编辑掉
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22457
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

3
 楼主| 发表于 2007-8-19 08:52:58 | 只看该作者
几个说明:
1. 整合的窗口是默认的窗口,如果使用的是增加窗口或fuki的话。。。可能refresh被定义过。。。请自己调试

2. 因为除了这段脚本其他的全都是默认的,就不上传测试工程了
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

逃兵

4
发表于 2007-8-19 20:36:20 | 只看该作者
猫大人~{/se}
这个,比那个用全局变量的用起来舒服。
「If you judge people, you have no time to love them.」—— Mother Teresa
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

苹果梨

梦石
0
星屑
43
在线时间
6 小时
注册时间
2007-2-14
帖子
720
5
发表于 2007-8-20 21:12:13 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
327
在线时间
113 小时
注册时间
2006-11-2
帖子
1200
6
发表于 2007-8-20 22:02:20 | 只看该作者
发布完毕 VIP += 2

http://rpg.blue/web/htm/news827.htm

如果您对此有何异议请短信告诉我。{/wx}
和记忆一起封存着的ID...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-3-7
帖子
109
7
发表于 2007-8-23 00:46:30 | 只看该作者
我试用了这个教本,发现对“显示文章”“显示选择项”确实有收纳,但对“输入数值”好像没有收纳哦。不知道大家试验的结果怎么样。是不是我哪里搞错了?
眼睛看不到的地方,心可以达到;心达不到的地方,想象可以飞到。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
19 小时
注册时间
2005-10-15
帖子
51
8
发表于 2007-8-25 19:59:26 | 只看该作者
还真不错,可惜和真·对话框增强精简强化变态版本冲突
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 23:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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