赞 | 93 |
VIP | 0 |
好人卡 | 13 |
积分 | 80 |
经验 | 53314 |
最后登录 | 2024-8-13 |
在线时间 | 1183 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 7981
- 在线时间
- 1183 小时
- 注册时间
- 2007-7-29
- 帖子
- 2055
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 enghao_lim 于 2013-11-9 11:46 编辑
原本默认对话框的选项被限制在四个,此脚本就是用来突破此限制,从此N选项任你遨游……
截图:
工程范例(建议下载):
多选项范例.rar
(237.34 KB, 下载次数: 292)
谷歌盘
百度盘
@Index 抱歉,为了避免脚本错误,先 @ 了你先……==
脚本(完整):- #==============================================================================
- # ■ 多选项脚本
- #------------------------------------------------------------------------------
- # v 1.0 by enghao_lim
- # 理论性无限突破四个选项的脚本
- #------------------------------------------------------------------------------
- #
- # 使用方法:
- #
- # 1. 在事件里使用【脚本】:多选项(选项数组,取消时执行的选项)
- #
- # 选项数组例子:@c = ["选项一","选项二"..."选项100"]
- # 所有选项必须是文字,即被 "" 符包括。
- #
- # 取消时执行的选项:代表 ESC (也就是B键) 按下时执行的选项
- # 不填写 或 为0 时,代表选项不可被取消。
- # 此值不可大过选项的数量,否者会出错。
- #
- # 2. 使用条件分歧:选项场合(选项编号)来执行选中选项后执行的事件。
- # 具体请看范例。
- #
- # 3. for 脚本党:
- # 获取 被选中的选项 的 index :$game_temp.choice_result
- #
- # 4. 范例里已经有各种 多选项 的利用方法,自个儿都觉得多选项也挺好用的。
- #
- # 5. 如有神马 bug ,请通知我,谢谢,感谢阅读。
- #
- #==============================================================================
- #==============================================================================
- # ■ Game_Temp
- #------------------------------------------------------------------------------
- # 临时资料记录器。
- #==============================================================================
- class Game_Temp
- #--------------------------------------------------------------------------
- # ● 读写器
- #--------------------------------------------------------------------------
- attr_accessor :choice_result
- attr_accessor :choice_last
- #--------------------------------------------------------------------------
- # ● 初始化
- #--------------------------------------------------------------------------
- alias initialize0 initialize
- def initialize
- initialize0
- @choice_result = -1
- @choice_last = -1
- end
- end
- #==============================================================================
- # ■ Interpreter
- #------------------------------------------------------------------------------
- # 事件处理器。
- #==============================================================================
- class Interpreter
- #--------------------------------------------------------------------------
- # ● 多选项
- #--------------------------------------------------------------------------
- def 多选项(选项, 取消 = 0)
- 取消 = 取消 == "取消" ? 选项.size + 1 : 取消
- MultiChoice(选项,取消)
- end
- #--------------------------------------------------------------------------
- # ● 获取选择的选项
- #--------------------------------------------------------------------------
- def 选项场合(n)
- if n == "取消"
- return ($game_temp.choice_last + 1) == $game_temp.choice_result
- end
- return $game_temp.choice_result == (n - 1)
- end
- #--------------------------------------------------------------------------
- # ● 多选项执行
- #--------------------------------------------------------------------------
- def MultiChoice(choice,cancel = 0)
- # 设置信息结束后待机和返回调用标志
- @message_waiting = true
- $game_temp.message_proc = Proc.new { @message_waiting = false }
- # 设置选项设置
- $game_temp.choice_max = choice.size
- $game_temp.choice_last = choice.size - 1
- $game_temp.choice_cancel_type = cancel
- $game_temp.choice_start = 0
- $game_temp.message_text = ""
- $game_temp.choice_proc = Proc.new { |n| $game_temp.choice_result = n }
- # 设置选择选项
- for c in choice
- $game_temp.message_text += c + "\n"
- end
- end
-
- end
- #==============================================================================
- # ■ Window_Message
- #------------------------------------------------------------------------------
- # 对话框。
- #==============================================================================
- class Window_Message
- #--------------------------------------------------------------------------
- # ● 重置窗口
- #--------------------------------------------------------------------------
- alias reset_window_0 reset_window
- def reset_window
- # 默认重置法
- reset_window_0
- # 还原 ox 和 oy
- self.ox = self.oy = 0
- # 重新生成 bitmap
- if $game_temp.choice_max > 4
- self.contents.dispose
- self.contents = Bitmap.new(self.width-32,$game_temp.choice_max*32)
- else
- self.contents.dispose
- self.contents = Bitmap.new(self.width-32,self.height-32)
- end
- end
- #--------------------------------------------------------------------------
- # ● 刷新光标矩形
- #--------------------------------------------------------------------------
- def update_cursor_rect
- if [url=home.php?mod=space&uid=370741]@Index[/url] >= 0
- if $game_temp.choice_start == 0
- super
- rect = self.cursor_rect
- self.cursor_rect.set(8,rect.y,@cursor_width,rect.height)
- else
- n = $game_temp.choice_start + @index
- self.cursor_rect.set(8, n * 32, @cursor_width, 32)
- end
- else
- self.cursor_rect.empty
- end
- end
- end
复制代码 |
评分
-
查看全部评分
|