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

Project1

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

[已经解决] 求黑暗圣剑传说2的路牌提示脚本。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
389 小时
注册时间
2010-7-10
帖子
76
跳转到指定楼层
1
发表于 2014-7-5 02:33:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 a5f001 于 2014-7-5 12:47 编辑

柳大的黑暗圣剑传说2中的那种。
ace版的demo链接失效了无法下载,谁还有保存的求发一下。
谢谢。
听说最新的VA fuki 好像也有类似的功能?
可是它发布网站又上不去。有范例的哥们求传啊。
再次感谢!

效果截图

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
9971
在线时间
5019 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2014-7-5 02:46:10 | 只看该作者
具体什么效果,这游戏我没玩过。不懂啊。要不你发个截图?

点评

于是,我的做法与楼下一样  发表于 2014-7-5 13:56
截图已发  发表于 2014-7-5 13:45
截图已给出  发表于 2014-7-5 12:47
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
54
在线时间
409 小时
注册时间
2012-5-14
帖子
615
3
发表于 2014-7-5 09:17:42 | 只看该作者
VIPArcher 发表于 2014-7-5 02:46
具体什么效果,这游戏我没玩过。不懂啊。要不你发个截图?

靠近路牌事件后,该事件自动气泡显示制定内容(如:↑ 召唤师峡谷),当玩家远离路牌事件后,气泡自动消失。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22032
在线时间
8575 小时
注册时间
2011-12-31
帖子
3362
4
发表于 2014-7-5 10:20:42 | 只看该作者
本帖最后由 tseyik 于 2014-7-5 11:20 编辑

活用這二個脚本就可做到近似効果
注釈取得
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 注釈取得スクリプト (VX Ace用)
  3. #------------------------------------------------------------------------------
  4. # 製作者     : CanariAlternate
  5. # サイト名   : カルトの鳥篭
  6. # サイトURL  : [url]http://canarialt.blog.fc2.com[/url]
  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.  
  45. $imported ||= {}
  46. $imported[:CanariAlternate_EventNote] = true
  47.  
  48. #==============================================================================
  49. # ■ Calt
  50. #------------------------------------------------------------------------------
  51. #  CanariAlternateが製作したスクリプトの管理用モジュール
  52. #==============================================================================
  53. module Calt
  54.   #--------------------------------------------------------------------------
  55.   # ● イベントコマンドから注釈を取得 [新規]
  56.   #--------------------------------------------------------------------------
  57.   def self.Read_EventNote(list)
  58.     return String.new unless list && list[i = 0].code == 108
  59.     note = list[i].parameters[0]
  60.     note += "\n#{list[i].parameters[0]}" while [108, 408].include?(list[i += 1].code)
  61.     return note
  62.   end
  63. end
  64.  
  65. #==============================================================================
  66. # ■ Game_Event
  67. #------------------------------------------------------------------------------
  68. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  69. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  70. #==============================================================================
  71. class Game_Event < Game_Character
  72.   #--------------------------------------------------------------------------
  73.   # ● イベントページの設定をセットアップ [追加]
  74.   #--------------------------------------------------------------------------
  75.   alias setup_page_settings_EventNote setup_page_settings
  76.   def setup_page_settings
  77.     setup_page_settings_EventNote
  78.     setup_note_settings
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● イベントページ更新時に注釈から設定を取得 [新規]
  82.   #--------------------------------------------------------------------------
  83.   def setup_note_settings
  84.     # 注釈の取得処理はここに追加
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 1頁目の注釈にキーワードが含まれているか判定 [新規]
  88.   #--------------------------------------------------------------------------
  89.   def whole_note_include?(keyword)
  90.     return @event.pages[0].event_note =~ keyword ? true : false
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● この頁の注釈にキーワードが含まれているか判定 [新規]
  94.   #--------------------------------------------------------------------------
  95.   def event_note_include?(keyword)
  96.     return @page.event_note =~ keyword ? true : false
  97.   end
  98. end
  99.  
  100. #==============================================================================
  101. # ■ RPG::Event::Page
  102. #------------------------------------------------------------------------------
  103. #  イベントページのデータクラス。
  104. #==============================================================================
  105. class RPG::Event::Page
  106.   #--------------------------------------------------------------------------
  107.   # ● 取得する注釈内容を変更 [新規]
  108.   #--------------------------------------------------------------------------
  109.   attr_writer   :event_note
  110.   #--------------------------------------------------------------------------
  111.   # ● この頁の注釈を取得 [新規]
  112.   #--------------------------------------------------------------------------
  113.   def event_note
  114.     return @event_note ||= Calt::Read_EventNote(@list)
  115.   end
  116. end

事件接触範囲を拡大
  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 全ての頁に適用(1頁目に記述)
  50.   #
  51.   #     ◆注釈:<接触範囲: 前方4 >
  52.   #
  53.   #      例1、例2は予め定義してある接触範囲図の接触範囲が適用されます。
  54.   #
  55.   #
  56.   #  例3 図を使用して範囲を指定
  57.   #
  58.   #     ◆注釈:[接触範囲:
  59.   #           :□□■
  60.   #           :■★■
  61.   #           :■□■
  62.   #           :■□■■
  63.   #           :■□■
  64.   #     ◆注釈:■■□■■]
  65.   #
  66.   #      例3のように接触範囲図を直接記述することも出来ます。
  67.   #
  68.   #----------------------------------------------------------------------------
  69.   # ▼ 接触範囲図の定義
  70.   #  イベントの位置を基準にして接触範囲を図で定義します。
  71.   #  注釈に接触範囲図を直接記述できますが多用する接触範囲はここで定義することを
  72.   #  推奨します。
  73.   #
  74.   #  各記号の意味
  75.   #  ■ : 接触する
  76.   #  □ : 接触しない
  77.   #  ★ : 基準(向きに関係なく固定)
  78.   #  ▲ : 基準(向きに合わせて回転。図は上が前。※8方向には非対応)
  79.   #  ※基準となる ★ または ▲ は必ず1つ必要です。
  80.   #
  81.   # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  82.   # ◇ 接触範囲図のハッシュを生成
  83.   RANGE_DIAGRAM = {}
  84.   #
  85.   # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  86.   # ◇ 接触範囲図 1
  87.   RANGE_DIAGRAM["1"] =
  88.   "□■□
  89.    ■★■
  90.    □■□"
  91.   #
  92.   # ◇ 接触範囲図 2
  93.   RANGE_DIAGRAM["2"] =
  94.   "□□■□□
  95.    □■■■□
  96.    ■■★■■
  97.    □■■■□
  98.    □□■□□"
  99.   #
  100.   # ◇ 接触範囲図 3
  101.   RANGE_DIAGRAM["3"] =
  102.   "□□□■□□□
  103.    □□■■■□□
  104.    □■■■■■□
  105.    ■■■★■■■
  106.    □■■■■■□
  107.    □□■■■□□
  108.    □□□■□□□"
  109.   #
  110.   # ◇ 接触範囲図 4
  111.   RANGE_DIAGRAM["4"] =
  112.   "□□□□■□□□□
  113.    □□□■■■□□□
  114.    □□■■■■■□□
  115.    □■■■■■■■□
  116.    ■■■■★■■■■
  117.    □■■■■■■■□
  118.    □□■■■■■□□
  119.    □□□■■■□□□
  120.    □□□□■□□□□"
  121.   #
  122.   # ◇ 接触範囲図 5
  123.   RANGE_DIAGRAM["5"] =
  124.   "□□□□□■□□□□□
  125.    □□□□■■■□□□□
  126.    □□□■■■■■□□□
  127.    □□■■■■■■■□□
  128.    □■■■■■■■■■□
  129.    ■■■■■★■■■■■
  130.    □■■■■■■■■■□
  131.    □□■■■■■■■□□
  132.    □□□■■■■■□□□
  133.    □□□□■■■□□□□
  134.    □□□□□■□□□□□"
  135.   #
  136.   # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  137.   # ◇ 接触範囲図 前方4
  138.   RANGE_DIAGRAM["前方4"] =
  139.   "■■■■■■■■■
  140.    □■■■■■■■□
  141.    □□■■■■■□□
  142.    □□□■■■□□□
  143.    □□□□▲□□□□"
  144.   #
  145.   # ◇ 接触範囲図 前方5
  146.   RANGE_DIAGRAM["前方5"] =
  147.   "■■■■■■■■■■■
  148.    □■■■■■■■■■□
  149.    □□■■■■■■■□□
  150.    □□□■■■■■□□□
  151.    □□□□■■■□□□□
  152.    □□□□□▲□□□□□"
  153.   #
  154.   # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  155.   # ◇ 接触範囲図 全方向を別々に定義
  156.   RANGE_DIAGRAM["全方向を別々に定義"] = diagrams = Array.new(10, "★")
  157.   # 下
  158.   diagrams[2] =
  159.   "□■□
  160.    ■★■
  161.    □□□"
  162.   # 左
  163.   diagrams[4] =
  164.   "□■□
  165.    ■★□
  166.    □□□"
  167.   # 右
  168.   diagrams[6] =
  169.   "□■□
  170.    ■★■
  171.    ■□□"
  172.   # 上
  173.   diagrams[8] =
  174.   "□□□
  175.    ■★■
  176.    □□□"
  177.   #
  178.   #----------------------------------------------------------------------------
  179. end

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

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

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

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

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

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

  480. #==============================================================================
  481. # ■ Game_Event
  482. #------------------------------------------------------------------------------
  483. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  484. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  485. #==============================================================================
  486. class Game_Event < Game_Character
  487.   #--------------------------------------------------------------------------
  488.   # ● 同位置のイベント起動判定
  489.   #--------------------------------------------------------------------------
  490.   alias :__RangeEvent__check_event_trigger_here :check_event_trigger_here
  491.   def check_event_trigger_here(triggers)
  492.     $game_map.normal_event_range_mode = true
  493.     start_map_event(@x, @y, triggers, true)
  494.     $game_map.normal_event_range_mode = false
  495.     __RangeEvent__check_event_trigger_here(triggers)
  496.   end
  497. end
  498. end
复制代码
簡單範例(文字用了ネームポップ,比較簡單,改用 fuki 就會華麗一些)
Project22.rar (308.02 KB, 下载次数: 98)

点评

十分感谢,勉强达到了想要的效果!  发表于 2014-7-5 12:56
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
389 小时
注册时间
2010-7-10
帖子
76
5
 楼主| 发表于 2014-7-5 14:02:45 | 只看该作者
tseyik 发表于 2014-7-5 10:20
活用這二個脚本就可做到近似効果
注釈取得
#=========================================================== ...

用另一个对话框脚本与范例结合的效果。

有个小问题。。。如何关闭这对话框?

不是这个指令吗。。?

点评

那个判定在第一页,这是第二页触发判定后的执行  发表于 2014-7-5 14:41
你没用到那个事件接触範囲を拡大触发的脚本  发表于 2014-7-5 14:05
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22032
在线时间
8575 小时
注册时间
2011-12-31
帖子
3362
6
发表于 2014-7-5 14:25:34 | 只看该作者
本帖最后由 tseyik 于 2014-7-5 14:28 编辑

其實用[<拡張> ピクチャの操作]做文字表示更好,
http://cacaosoft.web.fc2.com/tkool/script/rgss3/picex.html
[<拡張> ピクチャの操作]功能範本
http://cacaosoft.webcrow.jp/sample/file/rgss/picex_vx.zip

点评

日语苦手,给跪了。范例中窗口似乎是显示在画面上?那在地图滚动时不就不会跟着滚动了吗? 做成在地图上的提示多少有些违和感。总之先感谢大大~   发表于 2014-7-5 15:12
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
9971
在线时间
5019 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

7
发表于 2014-7-18 01:44:44 | 只看该作者
本帖最后由 VIPArcher 于 2014-7-18 01:49 编辑

楼主我这里提供一个做法,你可以试试:先上脚本
NPC视野
详细做法是

点评

十分感谢你,我想要的效果目前已经能表现的差不多了。  发表于 2014-7-18 16:35

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-16 21:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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