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

Project1

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

[已经解决] 关于对话选项,如何增加数量上限?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
88
在线时间
331 小时
注册时间
2010-10-24
帖子
778
跳转到指定楼层
1
发表于 2013-4-21 17:28:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
我想将对话中选项原四个的选项改成更多的,最好是全屏幕中都是选项,不知道要怎么改...
求教。

点评

附注:不要“分歧”,选项一次性全部出现。 继续求教...  发表于 2013-4-21 17:53

Lv1.梦旅人

梦石
0
星屑
88
在线时间
331 小时
注册时间
2010-10-24
帖子
778
5
 楼主| 发表于 2013-4-21 20:34:50 | 只看该作者
美丽晨露 发表于 2013-4-21 20:09
不知道你用的是什么对话脚本?
如果可以的话,发一下范例让我试试

谢谢...自己已经解决了。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

4
发表于 2013-4-21 20:09:37 | 只看该作者
a19981007a 发表于 2013-4-21 20:06
感谢回答,但出现了冲突,如何解决?
#------------------------------------------------------------- ...

不知道你用的是什么对话脚本?
如果可以的话,发一下范例让我试试
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
88
在线时间
331 小时
注册时间
2010-10-24
帖子
778
3
 楼主| 发表于 2013-4-21 20:06:12 | 只看该作者
美丽晨露 发表于 2013-4-21 19:17
看看这个范例怎么样?

效果图附上:

感谢回答,但出现了冲突,如何解决?
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 设置窗口位置与不透明度[再定義]
  3.   #--------------------------------------------------------------------------
  4.   def reset_window
  5.     if @inforesize
  6.       RectalCopy.copy(self, INFO_RECT)
  7.     elsif self.pop_character != nil and self.pop_character >= 0
  8.       update_reset_window
  9.     else
  10.       RectalCopy.copy(self, DEFAULT_RECT)
  11.       #
  12.       case ($game_temp.in_battle ? 0 : $game_system.message_position)
  13.       when 0  # 上 (戦闘中は上扱い)
  14.         self.y = [16, -XRXS9::NAME_WINDOW_OFFSET_Y + 4].max
  15.  
  16.       when 1  # 中
  17.         self.y = 160
  18.  
  19.       end
  20.       # 自動リサイズ
  21.       if DEFAULT_STRETCH_ENABLE and @lines_max >= 4
  22.         # 拡張する差分を計算
  23.         d = @lines_max * DEFAULT_LINE_SPACE + 32 - self.height
  24.         if d > 0
  25.           self.height += d
  26.           case $game_system.message_position
  27.           when 1  # 中
  28.             self.y -= d/2
  29.  
  30.           when 2  # 下
  31.             self.y -= d
  32.  
  33.           end
  34.         end
  35.       end
  36.       if @face_file != nil
  37.         self.width += FACE_WIDTH
  38.         self.x -= FACE_WIDTH/2
  39.       end
  40.     end
  41.     if $game_system.message_frame == 0
  42.       self.back_opacity = DEFAULT_BACK_OPACITY
  43.       @name_window_frame.back_opacity = DEFAULT_BACK_OPACITY unless @name_window_frame.nil?
  44.     else
  45.       self.opacity = 0
  46.       @name_window_frame.back_opacity = 0 unless @name_window_frame.nil?
  47.     end
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ○ ウィンドウの位置と不透明度の設定 (キャラポップ)
  51.   #--------------------------------------------------------------------------
  52.   def update_reset_window
  53.     #
  54.     # 「キャラポップ」
  55.     #
  56.     if self.pop_character == 0 or $game_map.events[self.pop_character] != nil
  57.       character = get_character(self.pop_character)
  58.       x = character.screen_x - self.width / 2
  59.       case $game_system.message_position
  60.       when 0
  61.         if @name_window_frame != nil and @name_window_frame.y <= 4
  62.           y = 4 - XRXS9::NAME_WINDOW_OFFSET_Y
  63.         else
  64.           y = character.screen_y - CHARPOP_HEIGHT - self.height
  65.         end
  66.       else
  67.         y = character.screen_y
  68.       end
  69.       self.x = [[x, 4].max, 636 - self.width ].min
  70.       self.y = [[y, 4].max, 476 - self.height].min
  71.       if  @name_window_frame != nil
  72.         @name_window_frame.x = self.x + XRXS9::NAME_WINDOW_OFFSET_X
  73.         @name_window_frame.y = self.y + XRXS9::NAME_WINDOW_OFFSET_Y
  74.         @name_window_text.x  = self.x + XRXS9::NAME_WINDOW_OFFSET_X + 1 + XRXS9::NAME_WINDOW_SPACE/2 - 16
  75.         @name_window_text.y  = self.y + XRXS9::NAME_WINDOW_OFFSET_Y + 1 + XRXS9::NAME_WINDOW_SPACE/2 - 16
  76.       end
  77.     end
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ○ カーソルの矩形更新 [オーバーライド]
  81.   #--------------------------------------------------------------------------
  82.   def update_cursor_rect
  83.     if @index >= 0
  84.       n = $game_temp.choice_start + @index
  85.       self.cursor_rect.set(8 + @indent, n * line_height, @cursor_width, line_height)
  86.     else
  87.       self.cursor_rect.empty
  88.     end
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ○ キャラクターの取得
  92.   #     parameter : パラメータ
  93.   #--------------------------------------------------------------------------
  94.   def get_character(parameter)
  95.     # パラメータで分岐
  96.     case parameter
  97.     when 0  # プレイヤー
  98.       return $game_player
  99.     else  # 特定のイベント
  100.       events = $game_map.events
  101.       return events == nil ? nil : events[parameter]
  102.     end
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ○ 現在キースキップが可能か?
  106.   #--------------------------------------------------------------------------
  107.   def skippable_now?
  108.     return ((SKIP_BAN_SWITCH_ID == 0 ? true : !$game_switches[SKIP_BAN_SWITCH_ID]) and
  109.        (HISKIP_ENABLE_SWITCH_ID == 0 ? true : $game_switches[HISKIP_ENABLE_SWITCH_ID]))
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ○ 可視状態
  113.   #--------------------------------------------------------------------------
  114.   def visible=(b)
  115.     @name_window_frame.visible = b unless @name_window_frame.nil?
  116.     @name_window_text.visible  = b unless @name_window_text.nil?
  117.     @input_number_window.visible  = b unless @input_number_window.nil?
  118.     super
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # メソッド テンプレート
  122.   #--------------------------------------------------------------------------
  123.   def process_ruby
  124.   end
  125.   def draw_gaiji(x, y, num)
  126.   end
  127.   def convart_value(option, index)
  128.   end
  129. end
  130. #==============================================================================
  131. # □ Air_Text (何も無いところに文字描写 = 枠の無い瞬間表示メッセージウィンドウ)
  132. #==============================================================================
  133. class Air_Text < Window_Base
  134.   #--------------------------------------------------------------------------
  135.   # ○ オブジェクト初期化
  136.   #--------------------------------------------------------------------------
  137.   def initialize(x, y, designate_text, size, text_color)
  138.     super(x-16, y-16, 32 + designate_text.size * 12, 56)
  139.     self.opacity      = 0
  140.     self.contents = Bitmap.new(self.width - 32, self.height - 32)
  141.     w = self.contents.width
  142.     h = self.contents.height
  143.     self.contents.font.size = size
  144.     self.contents.font.color = text_color
  145.     self.contents.draw_text(0, 0, w, h, designate_text)
  146.   end
  147. end
  148. #==============================================================================
  149. # □ Window_Copy
  150. #------------------------------------------------------------------------------
  151. #   指定のウィンドウのコピーを作成します。
  152. #==============================================================================
  153. class Window_Copy < Window_Base
  154.   #--------------------------------------------------------------------------
  155.   # ○ オブジェクト初期化
  156.   #--------------------------------------------------------------------------
  157.   def initialize(window)
  158.     super(window.x, window.y, window.width, window.height)
  159.     self.contents = window.contents.dup unless window.contents.nil?
  160.     self.opacity = window.opacity
  161.     self.back_opacity = window.back_opacity
  162.     self.z = window.z
  163.   end
  164. end
  165. #======================↓双重对话框功能↓====================================
  166. class Window_Copy2 < Window_Base
  167.   #--------------------------------------------------------------------------
  168.   # ○ オブジェクト初期化
  169.   #--------------------------------------------------------------------------
  170.   def initialize(window)
  171.     super(window.x, window.y, window.width, window.height)
  172.     self.contents = window.contents.dup unless window.contents.nil?
  173.     self.opacity = window.opacity
  174.     self.back_opacity = window.back_opacity
  175.     self.z = window.z
  176.   end
  177. end
  178. #======================↑双重对话框功能↑=====================================
  179. #==============================================================================
  180. # □ Sprite_Copy
  181. #------------------------------------------------------------------------------
  182. #   指定のスプライトのコピーを作成します。
  183. #==============================================================================
  184. class Sprite_Copy < Sprite
  185.   #--------------------------------------------------------------------------
  186.   # ○ オブジェクト初期化
  187.   #--------------------------------------------------------------------------
  188.   def initialize(sprite)
  189.     super()
  190.     self.bitmap = sprite.bitmap.dup unless sprite.bitmap.nil?
  191.     self.opacity = sprite.opacity
  192.     self.x = sprite.x
  193.     self.y = sprite.y
  194.     self.z = sprite.z
  195.     self.ox = sprite.ox
  196.     self.oy = sprite.oy
  197.   end
  198. end
  199. #==============================================================================
  200. # ■ Interpreter
  201. #==============================================================================
  202. class Interpreter
  203.   #--------------------------------------------------------------------------
  204.   # ● 文章の表示
  205.   #--------------------------------------------------------------------------
  206.   def command_101
  207.     # ほかの文章が message_text に設定済みの場合
  208.     if $game_temp.message_text != nil
  209.       # 終了
  210.       return false
  211.     end
  212.     # メッセージ終了待機中フラグおよびコールバックを設定
  213.     @message_waiting = true
  214.     $game_temp.message_proc = Proc.new { @message_waiting = false }
  215.     # message_text に 1 行目を設定
  216.     $game_temp.message_text = @list[@index].parameters[0] + "\n"
  217.     line_count = 1
  218.     # ループ
  219.     loop do
  220.       # 次のイベントコマンドが文章 2 行目以降の場合
  221.       if @list[@index+1].code == 401
  222.         # message_text に 2 行目以降を追加
  223.         $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
  224.         line_count += 1
  225.       # イベントコマンドが文章 2 行目以降ではない場合
  226.       else
  227.         # 次のイベントコマンドが文章の表示の場合
  228.         if @list[@index+1].code == 101
  229.           if (/\\next\Z/.match($game_temp.message_text)) != nil
  230.             $game_temp.message_text.gsub!(/\\next/) { "" }
  231.             $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
  232.             # インデックスを進める
  233.             @index += 1
  234.             next
  235.           end
  236.         # 次のイベントコマンドが選択肢の表示の場合
  237.         elsif @list[@index+1].code == 102
  238.           # 選択肢が画面に収まる場合
  239.           if @list[@index+1].parameters[0].size <= 4 - line_count
  240.             # インデックスを進める
  241.             @index += 1
  242.             # 選択肢のセットアップ
  243.             $game_temp.choice_start = line_count
  244.             setup_choices(@list[@index].parameters)
  245.           end
  246.         # 次のイベントコマンドが数値入力の処理の場合
  247.         elsif @list[@index+1].code == 103
  248.           # 数値入力ウィンドウが画面に収まる場合
  249.           if line_count < 4
  250.             # インデックスを進める
  251.             @index += 1
  252.             # 数値入力のセットアップ
  253.             $game_temp.num_input_start = line_count
  254.             $game_temp.num_input_variable_id = @list[@index].parameters[0]
  255.             $game_temp.num_input_digits_max = @list[@index].parameters[1]
  256.           end
  257.         end
  258.         # 継続
  259.         return true
  260.       end
  261.       # インデックスを進める
  262.       @index += 1
  263.     end
  264.   end
  265. end
  266. #==============================================================================
  267. # --- メッセージ中移動許可 ---
  268. #==============================================================================
  269. class Game_Player < Game_Character
  270.   attr_accessor :messaging_moving
  271. end
  272. #==============================================================================
  273. # --- 範囲コピー ---
  274. #==============================================================================
  275. module RectalCopy
  276.   def self.copy(rect1, rect2)
  277.     rect1.x      = rect2.x
  278.     rect1.y      = rect2.y
  279.     rect1.width  = rect2.width
  280.     rect1.height = rect2.height
  281.   end
  282. end

这是对话脚本,与多选择冲突。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

2
发表于 2013-4-21 19:17:54 | 只看该作者
本帖最后由 美丽晨露 于 2013-4-21 19:31 编辑

突破四个选择项.zip (203.87 KB, 下载次数: 95)

看看这个范例怎么样?

效果图附上:

点评

不好意思,效果上的是整合系统,不方便附上。  发表于 2013-4-22 21:53
这个我也借回去了~ 谢谢  发表于 2013-4-22 20:40
不错不错,能不能附上那个效果图的范例,那个画面很不错,在对话的时候显示选择项,而且对话框不消失。  发表于 2013-4-22 08:36
多谢保存~自己都找不到了…… - -  发表于 2013-4-21 20:02

评分

参与人数 2星屑 +166 收起 理由
明特·布兰马修 + 100 认可答案
hcm + 66 感谢回答

查看全部评分

大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 12:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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