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

Project1

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

[已经解决] 求RPGVX多选项 文章类

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
134 小时
注册时间
2009-3-29
帖子
470
跳转到指定楼层
1
发表于 2010-6-28 20:44:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在事件选择增多选择!

注意不要告诉我下一页上一页!!!

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
2
发表于 2010-6-28 20:48:37 | 只看该作者
最干脆的方法直接弄个scene来处理选择项问题。
好歹当年也当过大魔王过,orz
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
3
发表于 2010-6-28 20:59:05 | 只看该作者
本帖最后由 wangswz 于 2010-6-28 21:03 编辑

下一页上一页!!!
  1. #
  2. #    特殊選択ウインドウ表示(RGSS2)
  3. #  (C)2008 TYPE74RX-T
  4. #
  5. # ★ カスタマイズポイント:19~21行目
  6. #
  7. # 改造箇所
  8. #・メッセージウインドウの全文字列の描画が終了するまで操作を無効に。
  9. #・選択肢ウインドウ消去のタイミングをメッセージ消去のタイミングと擬似的に同一に。
  10. #・項目決定時に強制的に文章送りをするように。

  11. #==============================================================================
  12. # ★ RX_T_SelectWindow
  13. #------------------------------------------------------------------------------
  14. #  特殊な選択ウインドウを表示するためのモジュールです。
  15. #==============================================================================

  16. module RX_T_SelectWindow
  17.   RX2c7_Width = 160 # 特殊選択ウインドウの幅
  18.   RX2c7_X = 384     # 特殊選択ウインドウの表示座標(X軸)
  19.   RX2c7_Y = 0       # 特殊選択ウインドウの表示座標(Y軸)
  20.   #--------------------------------------------------------------------------
  21.   # ● 開始処理
  22.   #--------------------------------------------------------------------------
  23.   def start
  24.     super
  25.     @rx_select_window = Window_Command.new(RX2c7_Width, $game_temp.rx_sel_commands)
  26.     @rx_select_window.x = RX2c7_X
  27.     @rx_select_window.y = RX2c7_Y
  28.     @rx_select_window.active = false
  29.     @rx_select_window.visible = false
  30.     @rx2c7_copy_commands = $game_temp.rx_sel_commands.dup
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 終了処理
  34.   #--------------------------------------------------------------------------
  35.   def terminate
  36.     super
  37.     @rx_select_window.dispose
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● フレーム更新
  41.   #--------------------------------------------------------------------------
  42.   def update
  43.     super
  44.     # 特殊選択ウインドウ表示フラグが立っていたら
  45.     if $game_message.visible and $game_temp.rx_sel_command
  46.       # コマンド内容が変化していればリメイク
  47.       unless @rx2c7_copy_commands == $game_temp.rx_sel_commands
  48.         @rx2c7_copy_commands = $game_temp.rx_sel_commands.dup
  49.         @rx_select_window.dispose
  50.         @rx_select_window = Window_Command.new(RX2c7_Width, $game_temp.rx_sel_commands)
  51.         @rx_select_window.x = RX2c7_X
  52.         @rx_select_window.y = RX2c7_Y
  53.       end
  54.       # コマンドを出現させる
  55.       @rx_select_window.active = true
  56.       @rx_select_window.visible = true
  57.       # メッセージの全ての文字列が表示終了後に選択を開始する
  58.       unless $game_temp.rx_select_window_open
  59.         @rx_select_window.update
  60.         update_rx_select_window
  61.       end
  62.     end
  63.     # 終了フラグが立っていればウインドウを消去
  64.     if $game_temp.rx_select_window_close
  65.       @rx_select_window.active = false
  66.       @rx_select_window.visible = false
  67.       $game_temp.rx_select_window_close = false
  68.     end
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ★ 特殊選択ウインドウ表示
  72.   #--------------------------------------------------------------------------
  73.   def update_rx_select_window
  74.     if Input.trigger?(Input::B)
  75.       $game_temp.rx_sel_command = false
  76.       Sound.play_cancel
  77.       # キャンセル時は選択結果を 0 に
  78.       $game_variables[$game_temp.rx_sel_variables] = 0
  79.       # メッセージウインドウ送りフラグをオン
  80.       $game_temp.rx_select_window_skip = true
  81.     elsif Input.trigger?(Input::C)
  82.       $game_temp.rx_sel_command = false
  83.       Sound.play_decision
  84.       # 指定の変数に選択結果を代入
  85.       $game_variables[$game_temp.rx_sel_variables] = @rx_select_window.index + 1
  86.       # メッセージウインドウ送りフラグをオン
  87.       $game_temp.rx_select_window_skip = true
  88.     end
  89.   end
  90. end

  91. #==============================================================================
  92. # ■ Game_Temp
  93. #------------------------------------------------------------------------------
  94. #  セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン
  95. # スタンスは $game_temp で参照されます。
  96. #==============================================================================

  97. class Game_Temp
  98.   #--------------------------------------------------------------------------
  99.   # ● 公開インスタンス変数
  100.   #--------------------------------------------------------------------------
  101.   attr_accessor :rx_select_window_open    # 選択ウインドウ表示開始中フラグ
  102.   attr_accessor :rx_select_window_close   # 選択ウインドウ消去フラグ
  103.   attr_accessor :rx_select_window_skip    # 特殊選択後のメッセージ送りフラグ
  104.   #--------------------------------------------------------------------------
  105.   # ● オブジェクト初期化
  106.   #--------------------------------------------------------------------------
  107.   alias rx_rgss2c7_initialize initialize
  108.   def initialize
  109.     # メソッドを呼び戻す
  110.     rx_rgss2c7_initialize
  111.     # ★ 特殊選択ウインドウ表示フラグ
  112.     @rx_sel_command = false
  113.     # ★ 特殊選択肢
  114.     @rx_sel_commands = []
  115.     # ★ 特殊選択ウインドウの選択結果を格納する変数番号
  116.     @rx_sel_variables = 1
  117.     # ★ 特殊選択ウインドウの選択結果を格納する変数番号
  118.     @rx_sel_variables = 1
  119.     # ★ 特殊選択ウインドウの表示開始中フラグ
  120.     @rx_select_window_open = false
  121.     # ★ 特殊選択ウインドウの消去フラグ
  122.     @rx_select_window_close = false
  123.     # ★ 特殊選択後のメッセージ送りフラグ
  124.     @rx_select_window_skip = false
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ★ 特殊選択ウインドウ表示フラグ
  128.   #--------------------------------------------------------------------------
  129.   def rx_sel_command
  130.     return @rx_sel_command
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ★ 特殊選択ウインドウ表示フラグの設定
  134.   #--------------------------------------------------------------------------
  135.   def rx_sel_command=(judge)
  136.     @rx_sel_command = judge
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ★ 特殊選択肢
  140.   #--------------------------------------------------------------------------
  141.   def rx_sel_commands
  142.     return @rx_sel_commands
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ★ 特殊選択肢の設定
  146.   #--------------------------------------------------------------------------
  147.   def rx_sel_commands=(commands)
  148.     @rx_sel_commands = commands
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ★ 特殊選択ウインドウの選択結果を格納する変数番号
  152.   #--------------------------------------------------------------------------
  153.   def rx_sel_variables
  154.     return @rx_sel_variables
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ★ 特殊選択ウインドウの選択結果を格納する変数番号の設定
  158.   #--------------------------------------------------------------------------
  159.   def rx_sel_variables=(variables)
  160.     @rx_sel_variables = variables
  161.   end
  162. end

  163. #==============================================================================
  164. # ■ Interpreter
  165. #------------------------------------------------------------------------------
  166. #  イベントコマンドを実行するインタプリタです。このクラスは Game_System クラ
  167. # スや Game_Event クラスの内部で使用されます。
  168. #==============================================================================

  169. class Game_Interpreter
  170.   #--------------------------------------------------------------------------
  171.   # ★ 注釈
  172.   #--------------------------------------------------------------------------
  173.   alias rx_rgss2c7_command_108 command_108
  174.   def command_108
  175.     # 特殊選択肢表示
  176.     if @parameters[0].include?("特殊选择:")
  177.       # 選択結果を格納する変数番号の取得と決定
  178.       rx_int = rx_get_str_arrays(@parameters[0])
  179.       $game_temp.rx_sel_variables = rx_int[0]
  180.       # 特殊選択ウインドウ表示フラグをオン
  181.       $game_temp.rx_sel_command = true
  182.       # 特殊選択ウインドウ表示表示開始中フラグオン
  183.       $game_temp.rx_select_window_open = true
  184.       # コマンドを含めた注釈の内容を全取得
  185.       str1 = rx_get_all_parameter(@parameters[0])
  186.       # コマンドから先の文字列を全取得
  187.       str2 = rx_get_all_str(str1, "特殊选择:")
  188.       # アクター名を表示する場合の処理
  189.       strray = rx_get_str_strrays(str2)
  190.       # 変数指定部分の要素を削除
  191.       strray.delete_at(0)
  192.       for i in 0...strray.size
  193.         if strray[i].include?("actorID")
  194.           # 注釈から数字の文字列のみ取得し、数字の配列として返す
  195.           name_id = rx_get_str_arrays(strray[i])
  196.           # 指定ミスを指摘する(0)
  197.           if name_id[0] == 0
  198.             print "指定のアクターIDが 0 です。"
  199.             exit
  200.           end
  201.           # 指定ミスを指摘する(設定数を超えた場合)
  202.           if name_id[0] >= $data_actors.size
  203.             print "設定されていないアクターID " + name_id[0].to_s + " を指定しています。"
  204.             exit
  205.           end
  206.           # アクター名を発言者名に代入(IDは直接指定値に依存)
  207.           strray[i] = $game_actors[name_id[0]].name
  208.         end
  209.         if strray[i].include?("Vactor")
  210.           # 注釈から数字の文字列のみ取得し、数字の配列として返す
  211.           var_id = rx_get_str_arrays(strray[i])
  212.           # 指定ミスを指摘する(0)
  213.           if $game_variables[var_id[0]] == 0
  214.             print "指定のアクターIDが 0 です。"
  215.             exit
  216.           end
  217.           # 指定ミスを指摘する(設定数を超えた場合)
  218.           if $game_variables[var_id[0]] >= $data_actors.size
  219.             print "設定されていないアクターID " + $game_variables[var_id[0]].to_s + " を指定しています。"
  220.             exit
  221.           end
  222.           # アクター名を発言者名に代入(IDは変数の内容に依存)
  223.           strray[i] = $game_actors[$game_variables[var_id[0]]].name
  224.         end
  225.       end
  226.       # コマンドを含めた注釈の内容から文字列のみ抜き出したものを配列化
  227.       $game_temp.rx_sel_commands = strray
  228.       # 継続(競合対策)
  229.       return true
  230.     end
  231.     # メソッドを呼び戻す
  232.     rx_rgss2c7_command_108
  233.   end
  234. end

  235. #==============================================================================
  236. # ■ Window_Base
  237. #------------------------------------------------------------------------------
  238. #  ゲーム中のすべてのウィンドウのスーパークラスです。
  239. #==============================================================================

  240. class Window_Base < Window
  241.   #--------------------------------------------------------------------------
  242.   # ● ウィンドウを閉じる
  243.   #--------------------------------------------------------------------------
  244.   alias rx_select_window_close close
  245.   def close
  246.     # ウインドウを閉じる際に選択肢ウインドウ消去フラグを立てる
  247.     $game_temp.rx_select_window_close = true
  248.     # メソッドを呼び戻す
  249.     rx_select_window_close
  250.   end
  251. end

  252. #==============================================================================
  253. # ■ Window_Message
  254. #------------------------------------------------------------------------------
  255. #  文章表示に使うメッセージウィンドウです。
  256. #==============================================================================

  257. class Window_Message < Window_Selectable
  258.   #--------------------------------------------------------------------------
  259.   # ● フレーム更新
  260.   #--------------------------------------------------------------------------
  261.   alias rx_select_window_update update
  262.   def update
  263.     # メソッドを呼び戻す
  264.     rx_select_window_update
  265.     # 全ての文字が表示完了していて選択肢表示中なら開始中フラグをオフにする
  266.     if $game_temp.rx_select_window_open && @text == nil
  267.       $game_temp.rx_select_window_open = false
  268.    end
  269.     # 選択ウインドウメッセージ送りフラグがオンならメッセージを送りをする
  270.     if $game_temp.rx_select_window_skip
  271.       self.pause = false
  272.       if @text != nil and not @text.empty?
  273.         new_page if @line_count >= MAX_LINE
  274.       else
  275.         terminate_message
  276.       end
  277.       # フラグを初期化
  278.       $game_temp.rx_select_window_skip = false
  279.     end
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ● 改ページ処理
  283.   #--------------------------------------------------------------------------
  284.   alias rx_select_window_new_page new_page
  285.   def new_page
  286.     # 改ページ時に選択肢ウインドウ消去フラグを立てる
  287.     $game_temp.rx_select_window_close = true
  288.     # メソッドを呼び戻す
  289.     rx_select_window_new_page
  290.   end
  291. end
  292. #==============================================================================
  293. # ■ Scene_Map
  294. #------------------------------------------------------------------------------
  295. #  マップ画面の処理を行うクラスです。
  296. #==============================================================================

  297. class Scene_Map < Scene_Base
  298.   include RX_T_SelectWindow
  299. end
复制代码

这里用标记来设置选项内容
可以定义为角色名(需要ID) 变量(返回ID角色名) 文本
最前面的1就是选项值所返回给的变量
然后通过条件处理判断选项
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
134 小时
注册时间
2009-3-29
帖子
470
4
 楼主| 发表于 2010-6-29 14:42:09 | 只看该作者
不是要这个!

点评

即使不是你所需要的,也请不要这样对帮助你的人说,我们认为这种行为是不礼貌的。  发表于 2010-7-1 17:22
不是这个就真没什么是的了  发表于 2010-6-30 12:36
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-6-28
帖子
36
5
发表于 2010-6-29 15:19:22 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
371 小时
注册时间
2008-12-11
帖子
47
6
发表于 2010-6-29 15:35:02 | 只看该作者
沒見過求人態度還如此差的...

评分

参与人数 1星屑 +2 收起 理由
wangswz + 2 没想到还有其他人这么觉得

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
134 小时
注册时间
2009-3-29
帖子
470
7
 楼主| 发表于 2010-6-29 16:32:26 | 只看该作者
SORRY  我性格问题
黑之结界勇士
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
134 小时
注册时间
2009-3-29
帖子
470
8
 楼主| 发表于 2010-7-1 11:34:52 | 只看该作者
还是我自己解决了!

点评

成果?已解决?  发表于 2010-7-1 11:45
黑之结界勇士
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
134 小时
注册时间
2009-3-29
帖子
470
9
 楼主| 发表于 2010-7-3 19:24:11 | 只看该作者
我不知道这算不算挖文 。。。。上一页  下一页 我一直选来选去  无穷无尽。。。这样做不成。。。。我用我自己的方法  只有五页 用独立开关。。。以后在发展事件开关。。。
黑之结界勇士
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 16:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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