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

Project1

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

[已经解决] 求RMXP脚本 能让选项突破四个

 关闭 [复制链接]

Lv4.逐梦者

梦石
0
星屑
14822
在线时间
5846 小时
注册时间
2011-7-18
帖子
159

开拓者

跳转到指定楼层
1
发表于 2011-11-12 19:51:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求RMXP脚本 能让选项突破四个的那种

Lv2.观梦者

梦石
0
星屑
432
在线时间
4175 小时
注册时间
2010-6-26
帖子
6474
8
发表于 2011-11-18 07:34:07 | 只看该作者
暗黑骑士 发表于 2011-11-13 11:07
具体用法查看范例……
摘自6R天干宝典

有些东西跟FUKI对话框冲突,看我这个FUKI增强扩展吧
http://rpg.blue/thread-176807-1-1.html
潜水,专心忙活三次元工作了……
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
84
在线时间
156 小时
注册时间
2009-8-5
帖子
533
7
发表于 2011-11-15 08:22:11 | 只看该作者

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

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

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

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



  17. --------------------------------------------------------------------------------


  18. 几点说明:

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

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

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




  22. 脚本内容
  23. ----------------------------------------------------------------------------------------------------------------------------

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

复制代码
回复

使用道具 举报

Lv1.梦旅人

末日咏叹者

梦石
0
星屑
50
在线时间
235 小时
注册时间
2010-3-16
帖子
175
6
发表于 2011-11-13 11:07:13 | 只看该作者
  1. class Game_Temp
  2.   attr_accessor :need_show_more
  3.   attr_accessor :window_pos_y
  4.   attr_accessor :choices
  5.   
  6.   alias old_ini initialize
  7.   def initialize
  8.     old_ini
  9.     @need_show_more = false
  10.     @window_pos_y = 16
  11.     @choices = nil
  12.   end
  13. end

  14. class Window_Message < Window_Selectable
  15.   alias old_ref refresh
  16.   def refresh
  17.     if $game_temp.need_show_more
  18.       self.y = $game_temp.window_pos_y
  19.       self.height = 160 + 32 * ($game_temp.choice_max - 4)
  20.       self.contents = Bitmap.new(self.width - 32, self.height - 32)
  21.     else
  22.       self.height = 160
  23.       self.contents = Bitmap.new(self.width - 32, self.height - 32)
  24.     end
  25.     old_ref
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 刷新画面
  29.   #--------------------------------------------------------------------------
  30.   def update
  31.     super
  32.     # 渐变的情况下
  33.     if @fade_in
  34.       self.contents_opacity += 24
  35.       if @input_number_window != nil
  36.         @input_number_window.contents_opacity += 24
  37.       end
  38.       if self.contents_opacity == 255
  39.         @fade_in = false
  40.       end
  41.       return
  42.     end
  43.     # 输入数值的情况下
  44.     if @input_number_window != nil
  45.       @input_number_window.update
  46.       # 确定
  47.       if Input.trigger?(Input::C)
  48.         $game_system.se_play($data_system.decision_se)
  49.         $game_variables[$game_temp.num_input_variable_id] =
  50.           @input_number_window.number
  51.         $game_map.need_refresh = true
  52.         # 释放输入数值窗口
  53.         @input_number_window.dispose
  54.         @input_number_window = nil
  55.         terminate_message
  56.       end
  57.       return
  58.     end
  59.     # 显示信息中的情况下
  60.     if @contents_showing
  61.       # 如果不是在显示选择项中就显示暂停标志
  62.       if $game_temp.choice_max == 0
  63.         self.pause = true
  64.       end
  65.       # 取消
  66.       if Input.trigger?(Input::B)
  67.         if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  68.           $game_system.se_play($data_system.cancel_se)
  69.           $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  70.           $game_variables[100] = $game_temp.choice_cancel_type - 1
  71.           $game_temp.need_show_more = false
  72.           terminate_message
  73.         end
  74.       end
  75.       # 确定
  76.       if Input.trigger?(Input::C)
  77.         if $game_temp.choice_max > 0
  78.           $game_system.se_play($data_system.decision_se)
  79.           $game_variables[100] = self.index
  80.           $game_temp.choice_proc.call(self.index)
  81.         end
  82.         $game_temp.need_show_more = false
  83.         terminate_message
  84.       end
  85.       return
  86.     end
  87.     # 在渐变以外的状态下有等待显示的信息与选择项的场合
  88.     if @fade_out == false and $game_temp.message_text != nil
  89.       @contents_showing = true
  90.       $game_temp.message_window_showing = true
  91.       reset_window
  92.       refresh
  93.       Graphics.frame_reset
  94.       self.visible = true
  95.       self.contents_opacity = 0
  96.       if @input_number_window != nil
  97.         @input_number_window.contents_opacity = 0
  98.       end
  99.       @fade_in = true
  100.       return
  101.     end
  102.     # 没有可以显示的信息、但是窗口为可见的情况下
  103.     if self.visible
  104.       @fade_out = true
  105.       self.opacity -= 48
  106.       if self.opacity == 0
  107.         self.visible = false
  108.         @fade_out = false
  109.         $game_temp.message_window_showing = false
  110.       end
  111.       return
  112.     end
  113.   end
  114. end

  115. class Interpreter
  116.   def command_102
  117.     # 文章已经设置过 message_text 的情况下
  118.     if $game_temp.message_text != nil
  119.       # 结束
  120.       return false
  121.     end
  122.     # 设置信息结束后待机和返回调用标志
  123.     @message_waiting = true
  124.     $game_temp.message_proc = Proc.new { @message_waiting = false }
  125.     # 设置选择项
  126.     $game_temp.message_text = ""
  127.     $game_temp.choice_start = 0
  128.     if $game_temp.need_show_more
  129.       @parameters = [$game_temp.choices, $game_temp.choice_cancel_type]
  130.     end
  131.     setup_choices(@parameters)
  132.     # 继续
  133.     return true
  134.   end
  135. end
复制代码
具体用法查看范例……
摘自6R天干宝典

突破四个选择项.zip

204.85 KB, 下载次数: 623

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
213 小时
注册时间
2010-8-27
帖子
334
5
发表于 2011-11-13 09:11:03 | 只看该作者
选项后面对应的是条件分歧
A,B,C,其他
选择其他后出现选项D,E,F
围观甲的皮夹克与甲的皮夹克的舔痔者
回复

使用道具 举报

Lv2.观梦者

路人

梦石
0
星屑
590
在线时间
943 小时
注册时间
2011-8-20
帖子
1011
4
发表于 2011-11-13 07:29:00 | 只看该作者
搜索
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
756
在线时间
532 小时
注册时间
2011-10-3
帖子
2237
3
发表于 2011-11-12 19:56:00 | 只看该作者
多选项是用脚本的造~不是改脚本后用编辑器造的
回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 2011-11-12 19:53:06 | 只看该作者
用标签做上一页下一页不行么

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 22:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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