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

Project1

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

[已经解决] 如何增加‘显示选项’的数目

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
314 小时
注册时间
2013-2-4
帖子
81
跳转到指定楼层
1
发表于 2013-11-5 23:47:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如题,4个选项有时候觉得不够用。
谜梦个人工作室:群号  397549060

Lv5.捕梦者

梦石
0
星屑
22958
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
2
发表于 2013-11-6 00:38:01 | 只看该作者
本帖最后由 tseyik 于 2013-11-11 17:28 编辑

選択肢拡張
    通常只有四個選擇顯示可以無限増加。


LineMax = 4 改変LineMax的値可改変顯示選擇数量

    通過開関与変数等可變的條件,可以設置選項顯示是否。

  1. =begin

  2. ▼ 選択肢拡張 ver 1.3

  3. RPGツクールVXAce用スクリプト

  4. 制作 : 木星ペンギン
  5. URL  : http://woodpenguin.blog.fc2.com/

  6. ------------------------------------------------------------------------------
  7. 概要

  8. □ 選択肢を連続して設定した場合、つなげて一つの選択肢にする機能の追加。
  9. □ 条件を設定することで、その項目を表示しない機能の追加。
  10. □ 選択肢内容が前回と同じだった場合、
  11.     カーソルの初期位置を前回選んだ項目にする機能の追加。

  12. ------------------------------------------------------------------------------
  13. 使い方

  14. □ 選択肢を繋げる方法
  15.   ・選択肢の表示を続けて配置すると、一つの選択肢にまとめられます。
  16.   ・まとめたくない場合は、間に注釈などを入れることで通常通り分けることができます。
  17.   ・「キャンセルの場合」の処理は、無効以外を設定したものが適用されます。
  18.   ・「キャンセルの場合」の処理が複数ある場合、
  19.    あとに設定された選択肢のものが適用されます。
  20.   
  21. □ 条件によって、項目を表示させない方法
  22.   ・選択肢の文章の最後に if(条件) と書くことで、
  23.    その条件が偽になると項目が表示されなくなります。
  24.   ・s でスイッチを参照できます。
  25.      (例 : if(s[3]) でスイッチ番号 3 が ON のとき項目が表示されます)
  26.   ・v で変数を参照できます。
  27.      (例 : if(v[5] >= 4) で変数番号 5 が 4 以上のとき項目が表示されます)
  28.   ・これらの条件は eval によって判定されてるので、and や or なども使用できます。
  29.   ・この機能により選択肢の項目数が 0 となった場合、
  30.    何も選択しなかったことになります。
  31.    「キャンセルの場合」の処理が適用されるわけではありません。
  32.   ・この機能により「キャンセルの場合」の項目が表示されない場合、
  33.    無効と同じ処理をします。

  34. =end
  35. module Wooden
  36. module ChoiceEX
  37. #//////////////////////////////////////////////////////////////////////////////
  38. #
  39. # 設定項目
  40. #
  41. #//////////////////////////////////////////////////////////////////////////////
  42.   #--------------------------------------------------------------------------
  43.   # ● 選択肢の最大行数
  44.   #     選択肢を表示するウィンドウの行数の最大数です。
  45.   #     選択肢がこの数より小さければ、通常通り行数は少なくなります。
  46.   #--------------------------------------------------------------------------
  47.   LineMax = 4
  48.   
  49.   #--------------------------------------------------------------------------
  50.   # ● 選択肢の位置記憶
  51.   #     前回表示した選択肢と全く同じ内容の選択肢を表示する場合、
  52.   #     カーソルの初期位置を前回選んだ項目にする機能です。
  53.   #     false で無効化できます。
  54.   #--------------------------------------------------------------------------
  55.   Store = true
  56.   
  57. end
  58. end

  59. #//////////////////////////////////////////////////////////////////////////////
  60. #
  61. # 以降、変更する必要なし
  62. #
  63. #//////////////////////////////////////////////////////////////////////////////

  64. #==============================================================================
  65. # ■ Game_Interpreter
  66. #==============================================================================
  67. class Game_Interpreter
  68.   #--------------------------------------------------------------------------
  69.   # ☆ 選択肢のセットアップ
  70.   #--------------------------------------------------------------------------
  71.   def setup_choices(params)
  72.     result = []
  73.     add_choices(params, @index, result)
  74.     unless $game_message.choices.empty?
  75.       result << $game_message.choice_cancel_type - 1
  76.       $game_message.choice_proc = Proc.new {|n| @branch[@indent] = result[n] }
  77.     else
  78.       @branch[@indent] = -1
  79.     end
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 選択肢の追加
  83.   #--------------------------------------------------------------------------
  84.   def add_choices(params, i, result, d = 0)
  85.     params[0].each_with_index do |s, n|
  86.       choice = s.dup
  87.       next if choice.slice!(/\s*if\((.+)\)$/i) && !choice_eval($1)
  88.       $game_message.choices << choice
  89.       result << n + d
  90.     end
  91.     if params[1] == 5 || (params[1] > 0 && result.include?(params[1] + d - 1))
  92.       $game_message.choice_cancel_type = params[1] + d
  93.     end
  94.     indent = @list[i].indent
  95.     i += 1 until @list[i].code == 404 && @list[i].indent == indent
  96.     i += 1
  97.     add_choices(@list[i].parameters, i, result, d + 5) if @list[i].code == 102
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 分岐終了の場合
  101.   #--------------------------------------------------------------------------
  102.   def choice_eval(formula)
  103.     s = $game_switches
  104.     v = $game_variables
  105.     begin
  106.       Kernel.eval(formula)
  107.     rescue
  108.       msgbox "以下の条件判定でエラーが出ました。\n\n", formula
  109.       true
  110.     end
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ● 分岐終了の場合
  114.   #--------------------------------------------------------------------------
  115.   def command_404
  116.     if next_event_code == 102
  117.       @branch[@indent] -= 5
  118.       @Index+= 1
  119.       command_skip
  120.     end
  121.   end
  122. end

  123. #==============================================================================
  124. # ■ Window_ChoiceList
  125. #==============================================================================
  126. class Window_ChoiceList
  127.   #--------------------------------------------------------------------------
  128.   # ● 指定行数に適合するウィンドウの高さを計算
  129.   #--------------------------------------------------------------------------
  130.   def fitting_height(line_number)
  131.     super([line_number, Wooden::ChoiceEX::LineMax].min)
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ☆ 入力処理の開始
  135.   #--------------------------------------------------------------------------
  136.   def start
  137.     last_choices = @list.collect {|c| c[:name] }
  138.     update_placement
  139.     unless Wooden::ChoiceEX::Store && last_choices == $game_message.choices
  140.       refresh
  141.       select(0)
  142.     end
  143.     open
  144.     activate
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ☆ キャンセルハンドラの呼び出し
  148.   #--------------------------------------------------------------------------
  149.   def call_cancel_handler
  150.     $game_message.choice_proc.call(item_max)
  151.     close
  152.   end
  153. end
复制代码

点评

又是大哥帮忙哈(顶一个!)  发表于 2014-2-4 22:57

评分

参与人数 1星屑 +200 收起 理由
熊喵酱 + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 06:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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