Project1

标题: 想请教一下如何更改3×2比例门的判定体积 [打印本页]

作者: loffid    时间: 2019-4-10 21:08
标题: 想请教一下如何更改3×2比例门的判定体积

如图所示为了角色能在两扇门的正中间我把门画成了3×2的,但是它的触发判定仍然只有中间一格
这里请教一下如何将最下边的三格都设置成判定范围?
作者: loffid    时间: 2019-4-10 21:10
本帖最后由 loffid 于 2019-4-10 21:15 编辑

哦新建了一个与人物同层的空事件就可以不让人物通过了
但是还是想让下面三格都能够触发开门这个事件的话要怎么做呢
作者: garfeng    时间: 2019-4-10 22:06
可以在隔壁的事件里,设置门事件的移动路线
作者: loffid    时间: 2019-4-10 22:33
garfeng 发表于 2019-4-10 22:06
可以在隔壁的事件里,设置门事件的移动路线

试了下,是我写的有问题吗原来的门可以正常通过走旁边就无限鬼畜……
[attach]355734[/attach]

作者: loffid    时间: 2019-4-10 22:34
loffid 发表于 2019-4-10 22:33
试了下,是我写的有问题吗原来的门可以正常通过走旁边就无限鬼畜……

...


作者: loffid    时间: 2019-4-10 22:37
loffid 发表于 2019-4-10 22:33
试了下,是我写的有问题吗原来的门可以正常通过走旁边就无限鬼畜……

...

[attach]355736[/attach]
作者: garfeng    时间: 2019-4-10 23:06
把玩家的移动路线改成:开启穿透,前进一步,前进一步,关闭穿透
作者: loffid    时间: 2019-4-11 00:25
garfeng 发表于 2019-4-10 23:06
把玩家的移动路线改成:开启穿透,前进一步,前进一步,关闭穿透

试了下,终于可以了!
作者: 百里_飞柳    时间: 2019-4-11 10:52
可以在门旁边的事件里写上 触发门的事件的指令 的脚本……?

$game_map.events[id].start
作者: Nil2018    时间: 2019-4-11 12:02
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/
  3. #_/ ■ RGSS3 Script WideRangeEvent - 事件接触范围扩大 -
  4. #_/----------------------------------------------------------------------------
  5. #_/ 制 作 者 : CanariAlternate
  6. #_/ 配 布 元 : カルトの鳥篭 (http://canarialt.blog.fc2.com)
  7. #_/----------------------------------------------------------------------------
  8. #_/ □ 概要 :  扩大事件接触范围。
  9. #_/
  10. #_/ □ 必須 : 「获取注释脚本」
  11. #_/
  12. #_/ □ 位置 : 「経路探索VXAce」的上面
  13. #_/           「注釈取得スクリプト」的下面
  14. #_/           「イベント起動判定拡張」的下面
  15. #_/----------------------------------------------------------------------------
  16. #_/ 注意 : 不能与「マルチレイヤーシステム」并用
  17. #_/
  18. #_/----------------------------------------------------------------------------
  19. #_/ 仕様 :  プライオリティ「通常キャラと同じ」とそれ以外で接触范围の拡大方法が
  20. #_/        異なります。「通常キャラと同じ」は接触范围のみを拡大しています。
  21. #_/        対して、それ以外は接触范围だけでなく当たり判定も拡大しています。
  22. #_/----------------------------------------------------------------------------
  23. #_/ 更新履歴 : 2014/05/28 Ver1.00 スクリプトを作成した。
  24. #_/          : 2014/06/07 Ver1.01 上向き用の図を左向きに変換にする処理を修正した。
  25. #_/          : 2014/06/07 Ver1.02 イベントから接触した場合も起動するように変更した。
  26. #_/          : 2014/06/10 Ver1.03 イベントから接触の判定タイミングを調整した。
  27. #_/
  28. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  29. $imported ||= {}
  30. $imported[:CanariAlternate_RangeEvent] = true

  31. #==============================================================================
  32. # ■ CaltRangeEvent
  33. #------------------------------------------------------------------------------
  34. #  このスクリプトの設定です。
  35. #==============================================================================
  36. module CaltRangeEvent
  37.   #----------------------------------------------------------------------------
  38.   # ▼ 接触范围的設定
  39.   #
  40.   # ◇ 用于从注释中获取设置的正则表达式
  41.   EVENT_NOTE = /\[\s*接触范围\s*\:\s*(.+?)\s*\]/m # 应用于当前事件页
  42.   WHOLE_NOTE = /\<\s*接触范围\s*\:\s*(.+?)\s*\>/m # 应用于所有事件页(放在第1页)
  43.   #
  44.   #  例1 应用于当前事件页
  45.   #
  46.   #     ◆注释:[接触范围: 前方5 ]
  47.   #
  48.   #
  49.   #  例2 应用于所有事件页
  50.   #
  51.   #     ◆注释:<接触范围: 前方4 >
  52.   #
  53.   #
  54.   #
  55.   #  例3 使用接触范围图设定接触范围
  56.   #
  57.   #     ◆注释:[接触范围:
  58.   #           :□□■
  59.   #           :■★■
  60.   #           :■□■
  61.   #           :■□■■
  62.   #           :■□■
  63.   #     ◆注释:■■□■■]
  64.   #
  65.   #      例3的设定方式更加直观
  66.   #
  67.   #----------------------------------------------------------------------------
  68.   # ▼ 接触范围图的解释
  69.   #  通过范围图直观的设定事件接触范围
  70.   #  推荐使用。
  71.   #
  72.   #  记号的意思
  73.   #  ■ : 接触
  74.   #  □ : 未接触
  75.   #  ★ : 事件基準(无论事件的朝向如何)
  76.   #  ▲ : 事件基准(仅当事件某个朝向时,设定只用设定脸朝上时的接触范围,其他朝向
  77.   #       脚本会自动转向。※与8方向不兼容)
  78.   #  ※基準 ★ 或 ▲ 两者必须存在某一个,并且不可同时出现
  79.   #
  80.   # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  81.   # ◇ 接触范围图のハッシュを生成
  82.   RANGE_DIAGRAM = {}
  83.   #
  84.   # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  85.   # ◇ 接触范围图 1
  86.   RANGE_DIAGRAM["1"] =
  87.   "□■□
  88.    ■★■
  89.    □■□"
  90.   #
  91.   # ◇ 接触范围图 2
  92.   RANGE_DIAGRAM["2"] =
  93.   "□□■□□
  94.    □■■■□
  95.    ■■★■■
  96.    □■■■□
  97.    □□■□□"
  98.   #
  99.   # ◇ 接触范围图 3
  100.   RANGE_DIAGRAM["3"] =
  101.   "□□□■□□□
  102.    □□■■■□□
  103.    □■■■■■□
  104.    ■■■★■■■
  105.    □■■■■■□
  106.    □□■■■□□
  107.    □□□■□□□"
  108.   #
  109.   # ◇ 接触范围图 4
  110.   RANGE_DIAGRAM["4"] =
  111.   "□□□□■□□□□
  112.    □□□■■■□□□
  113.    □□■■■■■□□
  114.    □■■■■■■■□
  115.    ■■■■★■■■■
  116.    □■■■■■■■□
  117.    □□■■■■■□□
  118.    □□□■■■□□□
  119.    □□□□■□□□□"
  120.   #
  121.   # ◇ 接触范围图 5
  122.   RANGE_DIAGRAM["5"] =
  123.   "□□□□□■□□□□□
  124.    □□□□■■■□□□□
  125.    □□□■■■■■□□□
  126.    □□■■■■■■■□□
  127.    □■■■■■■■■■□
  128.    ■■■■■★■■■■■
  129.    □■■■■■■■■■□
  130.    □□■■■■■■■□□
  131.    □□□■■■■■□□□
  132.    □□□□■■■□□□□
  133.    □□□□□■□□□□□"
  134.   #
  135.   # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  136.   # ◇ 接触范围图 前方4
  137.   RANGE_DIAGRAM["前方4"] =
  138.   "■■■■■■■■■
  139.    □■■■■■■■□
  140.    □□■■■■■□□
  141.    □□□■■■□□□
  142.    □□□□▲□□□□"
  143.   #
  144.   # ◇ 接触范围图 前方5
  145.   RANGE_DIAGRAM["前方5"] =
  146.   "■■■■■■■■■■■
  147.    □■■■■■■■■■□
  148.    □□■■■■■■■□□
  149.    □□□■■■■■□□□
  150.    □□□□■■■□□□□
  151.    □□□□□▲□□□□□"
  152.   #
  153.   # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  154.   # ◇ 接触范围图 全方向特別定義
  155.   RANGE_DIAGRAM["全方向を別々に定義"] = diagrams = Array.new(10, "★")
  156.   # 下
  157.   diagrams[2] =
  158.   "□■□
  159.    ■★■
  160.    □□□"
  161.   # 左
  162.   diagrams[4] =
  163.   "□■□
  164.    ■★□
  165.    □□□"
  166.   # 右
  167.   diagrams[6] =
  168.   "□■□
  169.    ■★■
  170.    ■□□"
  171.   # 上
  172.   diagrams[8] =
  173.   "□□□
  174.    ■★■
  175.    □□□"
  176.   #
  177.   #----------------------------------------------------------------------------
  178. end

  179. #==============================================================================
  180. # ■ CaltRangeEvent
  181. #------------------------------------------------------------------------------
  182. #  接触范围图から情報を抽出して変換する処理を定義しています。
  183. #==============================================================================
  184. module CaltRangeEvent
  185.   #--------------------------------------------------------------------------
  186.   # ○ 接触范围图から情報を抽出
  187.   #--------------------------------------------------------------------------
  188.   def self.read_diagram(diagram)
  189.     range_list = []
  190.     diagram = diagram.clone
  191.     # 基準を探索
  192.     length = diagram.index(/★|▲/) + 1
  193.     last_line = nil
  194.     oy = -1
  195.     diagram[0, length].each_line do |line|
  196.       last_line = line
  197.       oy += 1
  198.     end
  199.     ox = last_line.scan(/■|□|★|▲/).size - 1
  200.     # 接触范围图を範囲リストに変換
  201.     x = ox
  202.     y = oy
  203.     begin
  204.       case diagram.slice!(0, 1)
  205.       when "\n"
  206.         x = ox
  207.         y -= 1
  208.       when "■"
  209.         range_list.push [x, y]
  210.         x -= 1
  211.       when "□"
  212.         x -= 1
  213.       when "★"
  214.         fix = true
  215.         x -= 1
  216.       when "▲"
  217.         fix = false
  218.         x -= 1
  219.       end
  220.     end until diagram.empty?
  221.     return range_list, fix
  222.   end
  223.   #--------------------------------------------------------------------------
  224.   # ○ 接触范围情報を生成
  225.   #--------------------------------------------------------------------------
  226.   def self.create_range(diagram)
  227.     if diagram.kind_of?(String)
  228.       range_list, fix = read_diagram(diagram)
  229.       if fix  # 向き固定か判定
  230.         range_hash = {}
  231.         range_list.each {|key| range_hash[key] = true }
  232.         return Array.new(10, range_hash)  # ★ は8方向とも同じ接触范围
  233.       else
  234.         result = Array.new(10, {})
  235.         
  236.         range_hash = {}
  237.         range_list.each {|key| range_hash[ [-key[0], -key[1]] ] = true }
  238.         result[2] = range_hash
  239.         
  240.         range_hash = {}
  241.         range_list.each {|key| range_hash[ [key[1], -key[0]] ] = true }
  242.         result[4] = range_hash
  243.         
  244.         range_hash = {}
  245.         range_list.each {|key| range_hash[ [-key[1], key[0]] ] = true }
  246.         result[6] = range_hash
  247.         
  248.         range_hash = {}
  249.         range_list.each {|key| range_hash[key] = true }
  250.         result[8] = range_hash
  251.         
  252.         return result                     # ▲ は8方向には非対応
  253.       end
  254.     else
  255.       return Array.new(10) do |i|         # 全方向を対応する接触范围图で設定
  256.         range_hash = {}
  257.         read_diagram(diagram[i])[0].each {|key| range_hash[key] = true }
  258.         next range_hash
  259.       end
  260.     end
  261.   end
  262.   #--------------------------------------------------------------------------
  263.   # ○ 上で定義した接触范围图を接触范围情報に変換
  264.   #--------------------------------------------------------------------------
  265.   RANGE = {}
  266.   RANGE_DIAGRAM.each {|key, diagram| RANGE[key] = create_range(diagram) }
  267. end

  268. #==============================================================================
  269. # ■ Game_Map
  270. #------------------------------------------------------------------------------
  271. #  マップを扱うクラスです。スクロールや通行可能判定などの機能を持っています。
  272. # このクラスのインスタンスは $game_map で参照されます。
  273. #==============================================================================
  274. class Game_Map
  275.   #--------------------------------------------------------------------------
  276.   # ○ 公開インスタンス変数
  277.   #--------------------------------------------------------------------------
  278.   attr_accessor :normal_event_range_mode  # 通常キャラの接触判定モード
  279.   #--------------------------------------------------------------------------
  280.   # ● オブジェクト初期化
  281.   #--------------------------------------------------------------------------
  282.   alias :__RangeEvent__initialize :initialize
  283.   def initialize
  284.     __RangeEvent__initialize
  285.     @normal_event_range_mode = false
  286.   end
  287. end

  288. #==============================================================================
  289. # ■ Game_Player
  290. #------------------------------------------------------------------------------
  291. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  292. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  293. #==============================================================================
  294. class Game_Player < Game_Character
  295.   #--------------------------------------------------------------------------
  296.   # ● 同位置のイベント起動判定
  297.   #--------------------------------------------------------------------------
  298.   alias :__RangeEvent__check_event_trigger_here :check_event_trigger_here
  299.   def check_event_trigger_here(triggers)
  300.     $game_map.normal_event_range_mode = true
  301.     start_map_event(@x, @y, triggers, true)
  302.     $game_map.normal_event_range_mode = false
  303.     __RangeEvent__check_event_trigger_here(triggers)
  304.   end
  305. end

  306. #==============================================================================
  307. # ■ Game_Event
  308. #------------------------------------------------------------------------------
  309. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  310. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  311. #==============================================================================
  312. class Game_Event < Game_Character
  313.   #--------------------------------------------------------------------------
  314.   # ● 非公開メンバ変数の初期化
  315.   #--------------------------------------------------------------------------
  316.   alias :__RangeEvent__init_private_members :init_private_members
  317.   def init_private_members
  318.     __RangeEvent__init_private_members
  319.     @range_list = nil
  320.     @last_range_x = nil
  321.     @last_range_y = nil
  322.     @last_range_d = nil
  323.     @last_range_p = nil
  324.   end
  325.   #--------------------------------------------------------------------------
  326.   # ● 座標一致判定
  327.   #--------------------------------------------------------------------------
  328.   alias :__RangeEvent__pos? :pos?
  329.   def pos?(x, y)
  330.     return in_event_range?(x, y, true) if $game_map.normal_event_range_mode
  331.     __RangeEvent__pos?(x, y) || in_event_range?(x, y, false)
  332.   end
  333.   #--------------------------------------------------------------------------
  334.   # ● 停止時の更新
  335.   #--------------------------------------------------------------------------
  336.   alias :__RangeEvent__update_stop :update_stop
  337.   def update_stop
  338.     if !@locked && stopping? && (@last_range_x != @x || @last_range_y != @y ||
  339.        @last_range_d != @direction || @last_range_p != @page)
  340.       @last_range_x = @x
  341.       @last_range_y = @y
  342.       @last_range_d = @direction
  343.       @last_range_p = @page
  344.       check_event_trigger_touch_range
  345.     end
  346.     __RangeEvent__update_stop
  347.   end
  348.   #--------------------------------------------------------------------------
  349.   # ○ 接触イベントの拡大した範囲の起動判定
  350.   #--------------------------------------------------------------------------
  351.   def check_event_trigger_touch_range
  352.     return false unless @range_list
  353.     return false unless normal_priority? == true
  354.     result = false
  355.     @range_list[@direction].each_key do |xy|
  356.       x2 = $game_map.round_x(@x - xy[0])
  357.       y2 = $game_map.round_y(@y - xy[1])
  358.       result = true if check_event_trigger_touch(x2, y2)
  359.     end
  360.     return result
  361.   end
  362.   #--------------------------------------------------------------------------
  363.   # ● イベントページ更新時に注釈から設定を取得
  364.   #--------------------------------------------------------------------------
  365.   alias :__RangeEvent__setup_note_settings :setup_note_settings
  366.   def setup_note_settings
  367.     __RangeEvent__setup_note_settings
  368.     @range_list = get_range_list
  369.   end
  370.   #--------------------------------------------------------------------------
  371.   # ○ 接触范围の取得
  372.   #--------------------------------------------------------------------------
  373.   def get_range_list
  374.     result = nil
  375.     if @page.event_note[CaltRangeEvent::EVENT_NOTE]
  376.       result = CaltRangeEvent::RANGE[$1]
  377.       result = CaltRangeEvent.create_range($1) unless result
  378.     elsif @event.pages[0].event_note[CaltRangeEvent::WHOLE_NOTE]
  379.       result = CaltRangeEvent::RANGE[$1]
  380.       result = CaltRangeEvent.create_range($1) unless result
  381.     end
  382.     return result
  383.   end
  384.   #--------------------------------------------------------------------------
  385.   # ○ 接触范围内か判定
  386.   #--------------------------------------------------------------------------
  387.   def in_event_range?(x, y, normal)
  388.     return false unless @range_list
  389.     return false unless normal_priority? == normal
  390.     return @range_list[@direction][ [distance_x_from(x), distance_y_from(y)] ]
  391.   end
  392. end

  393. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  394. #_/
  395. #_/ ▼ 以下、イベント起動判定拡張との競合回避
  396. #_/
  397. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  398. if $imported[:CanariAlternate_EventEveryone]
  399. #==============================================================================
  400. # ■ Game_Player
  401. #------------------------------------------------------------------------------
  402. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  403. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  404. #==============================================================================
  405. class Game_Player < Game_Character
  406.   #--------------------------------------------------------------------------
  407.   # ● 非公開メンバ変数の初期化
  408.   #--------------------------------------------------------------------------
  409.   alias :__RangeEvent__init_private_members :init_private_members
  410.   def init_private_members
  411.     __RangeEvent__init_private_members
  412.     @last_range_x = nil
  413.     @last_range_y = nil
  414.     @last_range_d = nil
  415.   end
  416.   #--------------------------------------------------------------------------
  417.   # ● 座標一致判定
  418.   #--------------------------------------------------------------------------
  419.   alias :__RangeEvent__pos? :pos?
  420.   def pos?(x, y)
  421.     return in_event_range?(x, y, true) if $game_map.normal_event_range_mode
  422.     __RangeEvent__pos?(x, y) || in_event_range?(x, y, false)
  423.   end
  424.   #--------------------------------------------------------------------------
  425.   # ● 停止時の更新
  426.   #--------------------------------------------------------------------------
  427.   alias :__RangeEvent__update_stop :update_stop
  428.   def update_stop
  429.     if !@locked && stopping? && (@last_range_x != @x || @last_range_y != @y ||
  430.        @last_range_d != @direction)
  431.       @last_range_x = @x
  432.       @last_range_y = @y
  433.       @last_range_d = @direction
  434.       check_event_trigger_touch_range
  435.     end
  436.     __RangeEvent__update_stop
  437.   end
  438.   #--------------------------------------------------------------------------
  439.   # ○ 接触イベントの拡大した範囲の起動判定
  440.   #--------------------------------------------------------------------------
  441.   def check_event_trigger_touch_range
  442.     range_list = get_range_list
  443.     return false unless range_list
  444.     return false unless normal_priority? == true
  445.     result = false
  446.     range_list[@direction].each_key do |xy|
  447.       x2 = $game_map.round_x(@x - xy[0])
  448.       y2 = $game_map.round_y(@y - xy[1])
  449.       result = true if check_event_trigger_touch(x2, y2)
  450.     end
  451.     return result
  452.   end
  453.   #--------------------------------------------------------------------------
  454.   # ○ 接触范围内か判定
  455.   #--------------------------------------------------------------------------
  456.   def in_event_range?(x, y, normal)
  457.     range_list = get_range_list
  458.     return false unless range_list
  459.     return false unless normal_priority? == normal
  460.     return range_list[@direction][ [distance_x_from(x), distance_y_from(y)] ]
  461.   end
  462.   #--------------------------------------------------------------------------
  463.   # ○ 接触范围の取得
  464.   #--------------------------------------------------------------------------
  465.   def get_range_list
  466.     return nil unless event_list = get_list
  467.     event_note = Calt.Read_EventNote(event_list)
  468.     range_list = nil
  469.     if event_note[CaltRangeEvent::EVENT_NOTE]
  470.       range_list = CaltRangeEvent::RANGE[$1]
  471.       range_list = CaltRangeEvent.create_range($1) unless range_list
  472.     elsif event_note[CaltRangeEvent::WHOLE_NOTE]
  473.       range_list = CaltRangeEvent::RANGE[$1]
  474.       range_list = CaltRangeEvent.create_range($1) unless range_list
  475.     end
  476.     return range_list
  477.   end
  478. end

  479. #==============================================================================
  480. # ■ Game_Event
  481. #------------------------------------------------------------------------------
  482. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  483. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  484. #==============================================================================
  485. class Game_Event < Game_Character
  486.   #--------------------------------------------------------------------------
  487.   # ● 同位置のイベント起動判定
  488.   #--------------------------------------------------------------------------
  489.   alias :__RangeEvent__check_event_trigger_here :check_event_trigger_here
  490.   def check_event_trigger_here(triggers)
  491.     $game_map.normal_event_range_mode = true
  492.     start_map_event(@x, @y, triggers, true)
  493.     $game_map.normal_event_range_mode = false
  494.     __RangeEvent__check_event_trigger_here(triggers)
  495.   end
  496. end
  497. end
复制代码

作者: Nil2018    时间: 2019-4-11 12:07
  1. #==============================================================================
  2. # ■ 获取注释脚本 (VX Ace用)
  3. #------------------------------------------------------------------------------
  4. # 製作者     : CanariAlternate
  5. # サイト名   : カルトの鳥篭
  6. # サイトURL  : http://canarialt.blog.fc2.com
  7. #------------------------------------------------------------------------------
  8. # ■ 概要 : 注釈を取得する処理を定義する。
  9. #
  10. # ■ 必須 : なし
  11. #
  12. # ■ 位置 : 「Game_Event」より下
  13. #------------------------------------------------------------------------------
  14. # ■ 注釈での設定方法
  15. #   以下の例のように実行内容の1行目から注釈以外のコマンドまでの注釈のどこかに
  16. #   キーワードを記述すると有効(結果を反転してる場合には無効)になります。
  17. #
  18. #             例 : 実行内容
  19. #                   ◆注釈:キーワードA キーワードC
  20. #                   :    :キーワードG キーワードF
  21. #                   :    :キーワードE
  22. #                   ◆注釈:キーワードD
  23. #                   :    :キーワードH キーワードB
  24. #                   ◆変数の操作などの注釈以外のイベントコマンド
  25. #                   ◆注釈:ここ以下に書いても無視される。
  26. #                   ◆
  27. #
  28. # ※キーワードとなる文字列の設定は正規表現です。詳しいことはヘルプを「正規表現」で検索すると出てきます。
  29. #   簡単に言うと / で囲まれた文字列があるかないかで判定します。
  30. #   \ とか ! みたいな記号を使いたい時はヘルプを参照して下さい。
  31. #   設定例、/\[キーワード\]/  #=>  [キーワード]
  32. #
  33. # ※キーワードを記述すると有効と無効が切り替わります。初期状態は無効です。
  34. #   例 : 初期状態を反転, 記述したイベントの全ての頁を反転, 記述した頁のみを反転
  35. #   まず  「初期状態を反転」                  で有効に
  36. #   次に  「記述したイベントの全ての頁を反転」で無効に
  37. #   最後に「記述した頁のみを反転」            で有効に
  38. #------------------------------------------------------------------------------
  39. # 更新履歴 : 2012/10/05 Ver1.00 コードを共通処理スクリプトに統一
  40. #            2012/10/06 Ver1.01 コードを共通処理スクリプトから分離
  41. #            2012/10/08 Ver1.02 コードの整理
  42. #            2013/02/19 Ver1.03 共通処理スクリプトの廃止による変更を施した。
  43. #==============================================================================

  44. $imported ||= {}
  45. $imported[:CanariAlternate_EventNote] = true

  46. #==============================================================================
  47. # ■ Calt
  48. #------------------------------------------------------------------------------
  49. #  CanariAlternateが製作したスクリプトの管理用モジュール
  50. #==============================================================================
  51. module Calt
  52.   #--------------------------------------------------------------------------
  53.   # ● イベントコマンドから注釈を取得 [新規]
  54.   #--------------------------------------------------------------------------
  55.   def self.Read_EventNote(list)
  56.     return String.new unless list && list[i = 0].code == 108
  57.     note = list[i].parameters[0]
  58.     note += "\n#{list[i].parameters[0]}" while [108, 408].include?(list[i += 1].code)
  59.     return note
  60.   end
  61. end

  62. #==============================================================================
  63. # ■ Game_Event
  64. #------------------------------------------------------------------------------
  65. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  66. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  67. #==============================================================================
  68. class Game_Event < Game_Character
  69.   #--------------------------------------------------------------------------
  70.   # ● イベントページの設定をセットアップ [追加]
  71.   #--------------------------------------------------------------------------
  72.   alias setup_page_settings_EventNote setup_page_settings
  73.   def setup_page_settings
  74.     setup_page_settings_EventNote
  75.     setup_note_settings
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● イベントページ更新時に注釈から設定を取得 [新規]
  79.   #--------------------------------------------------------------------------
  80.   def setup_note_settings
  81.     # 注釈の取得処理はここに追加
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 1頁目の注釈にキーワードが含まれているか判定 [新規]
  85.   #--------------------------------------------------------------------------
  86.   def whole_note_include?(keyword)
  87.     return @event.pages[0].event_note =~ keyword ? true : false
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● この頁の注釈にキーワードが含まれているか判定 [新規]
  91.   #--------------------------------------------------------------------------
  92.   def event_note_include?(keyword)
  93.     return @page.event_note =~ keyword ? true : false
  94.   end
  95. end

  96. #==============================================================================
  97. # ■ RPG::Event::Page
  98. #------------------------------------------------------------------------------
  99. #  イベントページのデータクラス。
  100. #==============================================================================
  101. class RPG::Event::Page
  102.   #--------------------------------------------------------------------------
  103.   # ● 取得する注釈内容を変更 [新規]
  104.   #--------------------------------------------------------------------------
  105.   attr_writer   :event_note
  106.   #--------------------------------------------------------------------------
  107.   # ● この頁の注釈を取得 [新規]
  108.   #--------------------------------------------------------------------------
  109.   def event_note
  110.     return @event_note ||= Calt::Read_EventNote(@list)
  111.   end
  112. end
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1