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

Project1

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

[已经解决] 求助,关于加长文章的脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
95 小时
注册时间
2011-1-19
帖子
27
跳转到指定楼层
1
发表于 2013-10-2 21:08:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 banbianzhang 于 2013-10-3 00:30 编辑

这是一个长文章脚本,上面写了文章后边用“ _”可以延长文章长度,文章后面可以接上选择项、文章和数值输入,我后边接文章和选择项都没问题,为什么接上数值输入文章就不可以连在一起了?
文章和数值输入连不起来。
文章和选择项就没问题。
以下是脚本:


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

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

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

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



--------------------------------------------------------------------------------


几点说明:

1. 整合的窗口是默认的窗口,如果使用的是增加窗口或fuki的话。。。可能refresh被定义
过。。。请自己调试

2. 因为除了这段脚本其他的全都是默认的,就不上传测试工程了

脚本有完整注释,如果你使用了小字体导致允许显示12行以上的文章,可以修改相应地方




脚本内容
------------------------------------------------------------------------------
=end
#============================================================================
# ■ 续行符文章连辍显示 by SailCat
#============================================================================
class Window_Message
alias sailcat_refresh refresh
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
   lines = 0
   $game_temp.message_text.each {lines += 1}
   lines = 4 if lines < 4
   self.height = lines * 32 + 32
   self.contents = Bitmap.new(width - 32, height - 32)
   reset_window
   sailcat_refresh
end
#--------------------------------------------------------------------------
# ● 设置窗口位置与不透明度
#--------------------------------------------------------------------------
def reset_window
   if $game_temp.in_battle
     self.y = 16
   else
     case $game_system.message_position
     when 0  # 上
       self.y = 16
     when 1  # 中
       self.y = 240 - self.height / 2
     when 2  # 下
       self.y = 464 - self.height
     end
   end
   if $game_system.message_frame == 0
     self.opacity = 255
   else
     self.opacity = 0
   end
   self.back_opacity = 160
end
end
class Interpreter
#--------------------------------------------------------------------------
# ● 显示文章
#--------------------------------------------------------------------------
def command_101
   # 另外的文章已经设置过 message_text 的情况下
   if $game_temp.message_text != nil
     # 结束
     return false
   end
   # 设置信息结束后待机和返回调用标志
   @message_waiting = true
   $game_temp.message_proc = Proc.new { @message_waiting = false }
   # message_text 设置为 1 行
   $game_temp.message_text = @list[@index].parameters[0] + "\n"
   line_count = 1
   # 最大 4 行
   line_max = 1
   # 循环
   loop do
     # 下一个事件指令为文章两行以上的情况
     if @list[@index+1].code == 401
       # message_text 添加到第 2 行以下
       $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
       line_count += 1
     # 下一个事件指令为显示文章,且本行末尾有续行标记的情况
     elsif @list[@index+1].code == 101 and @list[@index].parameters[0][-2, 2] == " _"
       # 如果已经达到 12 行就返回
       if line_count == 12
         # 清除续行标记
         $game_temp.message_text.gsub!(/ _$/, "")
         # 继续
         return true
       end
       # message_text 添加到第 2 行以下
       $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
       line_count += 1
       # 增加 4 行空间,最多 12 行
       line_max += 4 if line_max < 12
     # 事件指令不在文章两行以下的情况
     else
       # 如果本行末尾有续行标记则增加到 12 行
       if @list[@index].parameters[0][-2, 2] == " _"
         line_max = 12
       end
       # 下一个事件指令为显示选择项的情况下
       if @list[@index+1].code == 102
         # 如果选择项能收纳在画面里
         if @list[@index+1].parameters[0].size <= line_max - line_count
           # 推进索引
           @Index += 1
           # 设置选择项
           $game_temp.choice_start = line_count
           setup_choices(@list[@index].parameters)
         end
       # 下一个事件指令为处理输入数值的情况下
       elsif @list[@index+1].code == 103 or
         # 如果数值输入窗口能收纳在画面里
         if line_count < line_max
           # 推进索引
           @index += 1
           # 设置输入数值
           $game_temp.num_input_start = line_count
           $game_temp.num_input_variable_id = @list[@index].parameters[0]
           $game_temp.num_input_digits_max = @list[@index].parameters[1]
         end
       end
       # 清除续行标记
       $game_temp.message_text.gsub!(/ _$/, "")
       # 继续
       return true
     end
     # 推进索引
     @index += 1
   end
end
end

评分

参与人数 1星屑 -20 收起 理由
myownroc -20 标题格式错误

查看全部评分

Lv3.寻梦者

梦石
0
星屑
3846
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
2
发表于 2013-10-3 07:14:53 | 只看该作者
RMXP不用其他脚本,文章和选择项就可以连在一起

点评

他自己写的脚本有问题···  发表于 2013-10-3 16:22
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
95 小时
注册时间
2011-1-19
帖子
27
3
 楼主| 发表于 2013-10-3 15:08:10 | 只看该作者
本帖最后由 banbianzhang 于 2013-10-3 15:49 编辑
紫英晓狼1130 发表于 2013-10-3 07:14
RMXP不用其他脚本,文章和选择项就可以连在一起


哈哈哈!终于找到问题了!
把“ elsif @list[@index+1].code == 103 or”这一句最后的“or”改成“and”就可以了!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 01:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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