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

Project1

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

[已经过期] 关于视野限制脚本

[复制链接]

Lv2.观梦者

梦石
0
星屑
330
在线时间
57 小时
注册时间
2018-8-3
帖子
7
跳转到指定楼层
1
发表于 2019-7-14 16:31:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在测试的时候出现了报错。
之前也有过这种情况。不知道问题出在什么地方。
几次都是在中途出现的。对代码不清楚。是不是因为画面中敌人数量多了......还是别的什么。
先提前感谢大家——!
(附上截图和原代码)
RUBY 代码复制
  1. =begin
  2.       RGSS3
  3.       
  4.       ★ シンボルエンカウント補助 ★
  5.  
  6.       イベントでのシンボルエンカウントの動作を補助します。
  7.       
  8.       ● 仕様 ●==========================================================
  9.       シンボルエンカウント有効後は、
  10.       イベントページの自律移動の項で設定されたものは全て無効になります。
  11.       --------------------------------------------------------------------
  12.       一度有効になったシンボルエンカウントを無効にするには、
  13.       シンボルエンカウント設定のないイベントページに切り替えてください。
  14.       ====================================================================
  15.       
  16.       ● 機能 ●==========================================================
  17.       シンボルエンカウントイベントから戦闘を起動した場合、
  18.       シンボルとプレイヤーの位置関係により先制攻撃or不意打ちが発生します。
  19.           ・イベントの背後を取った場合           => 先制攻撃
  20.           ・イベントに背後を取られた場合         => 不意打ち
  21.           ・イベントが隊列の最後尾に接触した場合 => 不意打ち
  22.       --------------------------------------------------------------------
  23.       プレイヤーとの距離が一定内になるとプレイヤーを追跡するようになります。
  24.       --------------------------------------------------------------------
  25.       プレイヤーとの距離によりシンボルの透明度を変化させることができます。
  26.       --------------------------------------------------------------------
  27.       プレイヤーのレベルによりシンボルが逃走したりします。
  28.       --------------------------------------------------------------------
  29.       ダッシュしているとシンボルが反応しやすくなったりします。
  30.       --------------------------------------------------------------------
  31.       シンボルが反応した瞬間フキダシアイコンが表示されたりします。
  32.       --------------------------------------------------------------------
  33.       シンボルが反応しなくなるアイテムやスキルを作ることができます。
  34.       --------------------------------------------------------------------
  35.       シンボルが通行できないリージョンを設定することができます。
  36.       ====================================================================
  37.       
  38.       ● シンボルエンカウントイベントの設定方法 ●========================
  39.       シンボルの動作を設定箇所にてあらかじめ定義しておきます。
  40.       --------------------------------------------------------------------
  41.       イベント>自律移動>頻度を最高に設定してください。
  42.       --------------------------------------------------------------------
  43.       イベント>自律移動>カスタム>移動ルート>スクリプトに
  44.         enable_symbol_encount(id)
  45.       と記述します。idには設定箇所で定義したものを指定します。
  46.       --------------------------------------------------------------------
  47.       後はイベントのトリガーを"イベントから接触"にして戦闘を起動するだけ!
  48.       ====================================================================
  49.       
  50.       ● ステルス機能について ●==========================================
  51.       メモ欄に「ステルス:n」と記述されたスキル・アイテムを使用すると
  52.       ステルス状態となり、一定期間シンボルが反応しなくなります。
  53.       nにはステルス状態が維持されるプレイヤーの歩数を指定します。
  54.       --------------------------------------------------------------------
  55.       イベントのスクリプトから下記のコードを実行することで、
  56.       ステルスを強制的に解除することができます。
  57.         reset_stealth
  58.       --------------------------------------------------------------------
  59.       操作キャラクターの変更時や、シナリオ上で長い時間が経過した際などに
  60.       使用してください。
  61.       ====================================================================
  62.       
  63.       ● 注意 ●==========================================================
  64.       ニューゲームから始めないとエラーを吐きます。
  65.       ====================================================================
  66.       
  67.       ver1.01
  68.  
  69.       Last Update : 2012/03/04
  70.       03/04 : 追跡中のイベントが存在する際にイベントが発生すると、
  71.               追跡状態がおかしくなる不具合を修正
  72.       ----------------------2012--------------------------
  73.       12/23 : RGSS2からの移植
  74.       ----------------------2011--------------------------
  75.       
  76.       ろかん   http://kaisou-ryouiki.sakura.ne.jp/
  77. =end
  78.  
  79. #===================================
  80. #  ●設定箇所
  81. #===================================
  82. module SymbolEncount
  83.   # 隊列がシンボルと接触した場合、イベントを起動するかどうか
  84.   FOLLOWER_CONTACT = true
  85.  
  86.   # シンボルエンカウントの設定をあらかじめ定義
  87.   SYMBOL_SETTING_LIST = {
  88.     #-----------------------------------------------------------
  89.     0 => [
  90.           # シンボルが逃げるプレイヤーレベル
  91.           #   0が設定されている場合逃走しません
  92.           0,
  93.           # プレイヤーレベルの判断種別
  94.           #   0:平均レベル、1:最大レベル、2:先頭メンバーのレベル
  95.           0,
  96.           # シンボルが反応するプレイヤーとの距離
  97.           3,
  98.           # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  99.           6,
  100.           # プレイヤーに反応していない時の移動パターン
  101.           #   0:ランダム移動、1:停止
  102.           0,
  103.           # 透明度の変化するプレイヤーとの距離
  104.           #   ここで指定した距離よりもシンボルから遠ざかることで
  105.           #   シンボルが少しずつ見えにくくなっていきます。
  106.           #   0が設定されている場合この機能は無効になります。
  107.           0,
  108.           # 反応前の移動速度
  109.           #   1:1/8倍速、2:1/4倍速、3:1/2倍速、4:標準速、5:2倍速、6:4倍速
  110.           3,
  111.           # 反応後の移動速度
  112.           #   1:1/8倍速、2:1/4倍速、3:1/2倍速、4:標準速、5:2倍速、6:4倍速
  113.           4,
  114.           # 反応前の移動頻度
  115.           #   1:最低、2:低、3:通常、4:高、5:最高
  116.           5,
  117.           # 反応後の移動頻度
  118.           #   1:最低、2:低、3:通常、4:高、5:最高
  119.           5,
  120.           # 反応時に再生するフキダシアイコンID
  121.           #   0が設定されている場合この機能は無効になります。
  122.           1,
  123.           # シンボルが通行することのできないリージョンID
  124.           # 配列形式で指定してください。
  125.           []
  126.          ],
  127.     #警備兵------------------------------------------------
  128.     1 => [
  129.           0, # シンボルが逃げるプレイヤーレベル
  130.           0, # プレイヤーレベルの判断種別
  131.           6, # シンボルが反応するプレイヤーとの距離
  132.           6, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  133.           1, # プレイヤーに反応していない時の移動パターン
  134.           0, # 透明度の変化するプレイヤーとの距離
  135.           3, # 反応前の移動速度
  136.           6, # 反応後の移動速度
  137.           5, # 反応前の移動頻度
  138.           5, # 反応後の移動頻度
  139.           1, # 反応時に再生するフキダシアイコンID
  140.           [] # シンボルが移動することのできないリージョンID
  141.          ],
  142.     #番兵-------------------------------
  143.     2 => [
  144.           0, # シンボルが逃げるプレイヤーレベル
  145.           0, # プレイヤーレベルの判断種別
  146.           6, # シンボルが反応するプレイヤーとの距離
  147.           6, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  148.           0, # プレイヤーに反応していない時の移動パターン
  149.           0, # 透明度の変化するプレイヤーとの距離
  150.           5, # 反応前の移動速度
  151.           6, # 反応後の移動速度
  152.           5, # 反応前の移動頻度
  153.           5, # 反応後の移動頻度
  154.           1, # 反応時に再生するフキダシアイコンID
  155.           [] # シンボルが移動することのできないリージョンID
  156.          ],
  157.     #Lv10までのモンスター----------------------------------------------------
  158.     3 => [
  159.           10, # シンボルが逃げるプレイヤーレベル
  160.           0, # プレイヤーレベルの判断種別
  161.           3, # シンボルが反応するプレイヤーとの距離
  162.           5, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  163.           0, # プレイヤーに反応していない時の移動パターン
  164.           0, # 透明度の変化するプレイヤーとの距離
  165.           3, # 反応前の移動速度
  166.           4, # 反応後の移動速度
  167.           5, # 反応前の移動頻度
  168.           5, # 反応後の移動頻度
  169.           1, # 反応時に再生するフキダシアイコンID
  170.           [] # シンボルが移動することのできないリージョンID
  171.          ],
  172.     #Lv18までのモンスター----------------------------------------------------
  173.     4 => [
  174.           18, # シンボルが逃げるプレイヤーレベル
  175.           0, # プレイヤーレベルの判断種別
  176.           3, # シンボルが反応するプレイヤーとの距離
  177.           5, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  178.           0, # プレイヤーに反応していない時の移動パターン
  179.           0, # 透明度の変化するプレイヤーとの距離
  180.           3, # 反応前の移動速度
  181.           4, # 反応後の移動速度
  182.           5, # 反応前の移動頻度
  183.           5, # 反応後の移動頻度
  184.           1, # 反応時に再生するフキダシアイコンID
  185.           [] # シンボルが移動することのできないリージョンID
  186.          ],
  187.     #Lv27までのモンスター----------------------------------------------------
  188.     5 => [
  189.           27, # シンボルが逃げるプレイヤーレベル
  190.           0, # プレイヤーレベルの判断種別
  191.           3, # シンボルが反応するプレイヤーとの距離
  192.           5, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  193.           0, # プレイヤーに反応していない時の移動パターン
  194.           0, # 透明度の変化するプレイヤーとの距離
  195.           3, # 反応前の移動速度
  196.           4, # 反応後の移動速度
  197.           5, # 反応前の移動頻度
  198.           5, # 反応後の移動頻度
  199.           1, # 反応時に再生するフキダシアイコンID
  200.           [] # シンボルが移動することのできないリージョンID
  201.          ],
  202.     #Lv35までのモンスター----------------------------------------------------
  203.     6 => [
  204.           35, # シンボルが逃げるプレイヤーレベル
  205.           0, # プレイヤーレベルの判断種別
  206.           3, # シンボルが反応するプレイヤーとの距離
  207.           5, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  208.           0, # プレイヤーに反応していない時の移動パターン
  209.           0, # 透明度の変化するプレイヤーとの距離
  210.           3, # 反応前の移動速度
  211.           4, # 反応後の移動速度
  212.           5, # 反応前の移動頻度
  213.           5, # 反応後の移動頻度
  214.           1, # 反応時に再生するフキダシアイコンID
  215.           [] # シンボルが移動することのできないリージョンID
  216.          ],
  217.     #制限なしモンスター----------------------------------------------------
  218.     7 => [
  219.           0, # シンボルが逃げるプレイヤーレベル
  220.           0, # プレイヤーレベルの判断種別
  221.           3, # シンボルが反応するプレイヤーとの距離
  222.           5, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  223.           0, # プレイヤーに反応していない時の移動パターン
  224.           0, # 透明度の変化するプレイヤーとの距離
  225.           3, # 反応前の移動速度
  226.           4, # 反応後の移動速度
  227.           5, # 反応前の移動頻度
  228.           5, # 反応後の移動頻度
  229.           1, # 反応時に再生するフキダシアイコンID
  230.           [] # シンボルが移動することのできないリージョンID
  231.          ],
  232.     #山賊----------------------------------------------------
  233.     8 => [
  234.           0, # シンボルが逃げるプレイヤーレベル
  235.           0, # プレイヤーレベルの判断種別
  236.           3, # シンボルが反応するプレイヤーとの距離
  237.           5, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  238.           0, # プレイヤーに反応していない時の移動パターン
  239.           0, # 透明度の変化するプレイヤーとの距離
  240.           3, # 反応前の移動速度
  241.           5, # 反応後の移動速度
  242.           5, # 反応前の移動頻度
  243.           5, # 反応後の移動頻度
  244.           1, # 反応時に再生するフキダシアイコンID
  245.           [] # シンボルが移動することのできないリージョンID
  246.          ],
  247.     #ノトーリアスモンスター-----------------------------------
  248.     9 => [
  249.           0, # シンボルが逃げるプレイヤーレベル
  250.           0, # プレイヤーレベルの判断種別
  251.           3, # シンボルが反応するプレイヤーとの距離
  252.           5, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  253.           0, # プレイヤーに反応していない時の移動パターン
  254.           0, # 透明度の変化するプレイヤーとの距離
  255.           2, # 反応前の移動速度
  256.           4, # 反応後の移動速度
  257.           5, # 反応前の移動頻度
  258.           5, # 反応後の移動頻度
  259.           1, # 反応時に再生するフキダシアイコンID
  260.           [] # シンボルが移動することのできないリージョンID
  261.          ],
  262.     #警備兵(徘徊)------------------------------------------------
  263.     10 => [
  264.           0, # シンボルが逃げるプレイヤーレベル
  265.           0, # プレイヤーレベルの判断種別
  266.           5, # シンボルが反応するプレイヤーとの距離
  267.           5, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  268.           0, # プレイヤーに反応していない時の移動パターン
  269.           0, # 透明度の変化するプレイヤーとの距離
  270.           2, # 反応前の移動速度
  271.           5, # 反応後の移動速度
  272.           5, # 反応前の移動頻度
  273.           5, # 反応後の移動頻度
  274.           1, # 反応時に再生するフキダシアイコンID
  275.           [] # シンボルが移動することのできないリージョンID
  276.          ],
  277.     #Lv42までのモンスター----------------------------------------------------
  278.     11 => [
  279.           42, # シンボルが逃げるプレイヤーレベル
  280.           0, # プレイヤーレベルの判断種別
  281.           3, # シンボルが反応するプレイヤーとの距離
  282.           5, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  283.           0, # プレイヤーに反応していない時の移動パターン
  284.           0, # 透明度の変化するプレイヤーとの距離
  285.           3, # 反応前の移動速度
  286.           4, # 反応後の移動速度
  287.           5, # 反応前の移動頻度
  288.           5, # 反応後の移動頻度
  289.           1, # 反応時に再生するフキダシアイコンID
  290.           [] # シンボルが移動することのできないリージョンID
  291.          ],
  292.     #看守------------------------------------------------
  293.     12 => [
  294.           0, # シンボルが逃げるプレイヤーレベル
  295.           0, # プレイヤーレベルの判断種別
  296.           3, # シンボルが反応するプレイヤーとの距離
  297.           6, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  298.           1, # プレイヤーに反応していない時の移動パターン
  299.           0, # 透明度の変化するプレイヤーとの距離
  300.           3, # 反応前の移動速度
  301.           4, # 反応後の移動速度
  302.           5, # 反応前の移動頻度
  303.           5, # 反応後の移動頻度
  304.           1, # 反応時に再生するフキダシアイコンID
  305.           [] # シンボルが移動することのできないリージョンID
  306.          ],
  307.     #高速接近------------------------------------------------
  308.     13 => [
  309.           0, # シンボルが逃げるプレイヤーレベル
  310.           0, # プレイヤーレベルの判断種別
  311.           3, # シンボルが反応するプレイヤーとの距離
  312.           3, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  313.           0, # プレイヤーに反応していない時の移動パターン
  314.           0, # 透明度の変化するプレイヤーとの距離
  315.           5, # 反応前の移動速度
  316.           5, # 反応後の移動速度
  317.           5, # 反応前の移動頻度
  318.           5, # 反応後の移動頻度
  319.           1, # 反応時に再生するフキダシアイコンID
  320.           [] # シンボルが移動することのできないリージョンID
  321.          ],
  322.     #宝飾店店主------------------------------------------------
  323.     14 => [
  324.           0, # シンボルが逃げるプレイヤーレベル
  325.           0, # プレイヤーレベルの判断種別
  326.           4, # シンボルが反応するプレイヤーとの距離
  327.           4, # シンボルが反応するプレイヤーとの距離(プレイヤーダッシュ時)
  328.           1, # プレイヤーに反応していない時の移動パターン
  329.           0, # 透明度の変化するプレイヤーとの距離
  330.           5, # 反応前の移動速度
  331.           6, # 反応後の移動速度
  332.           5, # 反応前の移動頻度
  333.           5, # 反応後の移動頻度
  334.           1, # 反応時に再生するフキダシアイコンID
  335.           [] # シンボルが移動することのできないリージョンID
  336.          ],
  337.   }
  338. end
  339. #===================================
  340. #  ここまで
  341. #===================================
  342.  
  343. $rsi ||= {}
  344. $rsi["シンボルエンカウント補助"] = true
  345.  
  346. class RPG::UsableItem < RPG::BaseItem
  347.   def stealth_obj_count
  348.     self.note.each_line{|line|
  349.       return $1.to_i if line =~ /ステルス:(\d+)/i
  350.     }
  351.     0
  352.   end
  353. end
  354.  
  355. class << BattleManager
  356.   #--------------------------------------------------------------------------
  357.   # ● モジュールのインスタンス変数
  358.   #--------------------------------------------------------------------------
  359.   attr_writer   :run_event
  360.   @run_event = nil # 戦闘を呼び出したイベント
  361.   #--------------------------------------------------------------------------
  362.   # ● セットアップ
  363.   #--------------------------------------------------------------------------
  364.   alias _symbol_encount_setup setup
  365.   def setup(troop_id, can_escape = true, can_lose = false)
  366.     _symbol_encount_setup(troop_id, can_escape, can_lose)
  367.     set_battle_condition
  368.   end
  369.   #--------------------------------------------------------------------------
  370.   # ● シンボルエンカウントイベントから戦闘が呼び出されている場合の処理
  371.   #--------------------------------------------------------------------------
  372.   def set_battle_condition
  373.     if @run_event && @run_event.symbol_encount
  374.       @run_event.set_contact_condition
  375.       case @run_event.contact_condition
  376.       when 1
  377.         @preemptive = true
  378.       when 2
  379.         @surprise = true
  380.       end
  381.     end
  382.     @run_event = nil
  383.   end
  384. end
  385.  
  386. class Game_Actor < Game_Battler
  387.   #--------------------------------------------------------------------------
  388.   # ● スキル/アイテムの使用
  389.   #--------------------------------------------------------------------------
  390.   def use_item(item)
  391.     stealth_effect(item)
  392.     super
  393.   end
  394.   #--------------------------------------------------------------------------
  395.   # ● ステルス効果の適用
  396.   #--------------------------------------------------------------------------
  397.   def stealth_effect(item)
  398.     result = item.stealth_obj_count
  399.     $game_player.stealth_count = result if result > 0
  400.   end
  401. end
  402.  
  403. class Game_Party < Game_Unit
  404.   #--------------------------------------------------------------------------
  405.   # ● プレイヤーレベルの取得
  406.   #--------------------------------------------------------------------------
  407.   def get_player_level(type)
  408.     case type
  409.     when 0
  410.       members.inject(0){|r, actor| r += actor.level} / members.size
  411.     when 1
  412.       members.max_by{|actor| actor.level}
  413.     when 2
  414.       $game_party.members.first.level
  415.     end
  416.   end
  417. end
  418.  
  419. class Game_Character < Game_CharacterBase
  420.   #--------------------------------------------------------------------------
  421.   # ● 非公開メンバ変数の初期化
  422.   #--------------------------------------------------------------------------
  423.   alias _symbol_init_private_members init_private_members
  424.   def init_private_members
  425.     _symbol_init_private_members
  426.     @origin_opacity = @opacity
  427.   end
  428.   #--------------------------------------------------------------------------
  429.   # ● 移動コマンドの処理
  430.   #--------------------------------------------------------------------------
  431.   alias _symbol_process_move_command process_move_command
  432.   def process_move_command(command)
  433.     params = command.parameters
  434.     @origin_opacity = params[0] if command.code == ROUTE_CHANGE_OPACITY
  435.     _symbol_process_move_command(command)
  436.   end
  437.   #--------------------------------------------------------------------------
  438.   # ● 指定キャラクターとの位置関係を取得(接触していることを前提)
  439.   #--------------------------------------------------------------------------
  440.   def positional_relationship(character)
  441.     if character.real_x == real_x
  442.       character.real_y > real_y ? 1 : 0
  443.     elsif character.real_y == real_y
  444.       character.real_x > real_x ? 2 : 3
  445.     else
  446.       -1
  447.     end
  448.   end
  449.   #--------------------------------------------------------------------------
  450.   # ● シンボルエンカウント関連処理による透明度の更新
  451.   #--------------------------------------------------------------------------
  452.   def update_symbol_opacity
  453.   end
  454.   #--------------------------------------------------------------------------
  455.   # ● フレーム更新
  456.   #--------------------------------------------------------------------------
  457.   alias _symbol_opacity_update update
  458.   def update
  459.     _symbol_opacity_update
  460.     update_symbol_opacity
  461.   end
  462. end
  463.  
  464. class Game_Player < Game_Character
  465.   #--------------------------------------------------------------------------
  466.   # ● 公開インスタンス変数
  467.   #--------------------------------------------------------------------------
  468.   attr_writer :stealth_count
  469.   #--------------------------------------------------------------------------
  470.   # ● 公開メンバ変数の初期化
  471.   #--------------------------------------------------------------------------
  472.   def init_public_members
  473.     super
  474.     reset_stealth
  475.   end
  476.   #--------------------------------------------------------------------------
  477.   # ● ステルス状態の初期化
  478.   #--------------------------------------------------------------------------
  479.   def reset_stealth
  480.     @stealth_count = 0
  481.   end
  482.   #--------------------------------------------------------------------------
  483.   # ● ステルス判定
  484.   #--------------------------------------------------------------------------
  485.   def stealth?
  486.     !@stealth_count.zero?
  487.   end
  488.   #--------------------------------------------------------------------------
  489.   # ● 歩数増加
  490.   #--------------------------------------------------------------------------
  491.   alias _increase_stealth_count increase_steps
  492.   def increase_steps
  493.     _increase_stealth_count
  494.     @stealth_count -= 1 if stealth?
  495.   end
  496.   #--------------------------------------------------------------------------
  497.   # ● シンボルエンカウント関連処理による透明度の更新
  498.   #--------------------------------------------------------------------------
  499.   def update_symbol_opacity
  500.     if stealth? && !$game_map.interpreter.running?
  501.       @opacity = 64 #規定値 128
  502.     else
  503.       @opacity = @origin_opacity
  504.     end
  505.   end
  506. end
  507.  
  508. class Game_Follower < Game_Character
  509.   #--------------------------------------------------------------------------
  510.   # ● 公開インスタンス変数
  511.   #--------------------------------------------------------------------------
  512.   attr_reader :member_index
  513. end
  514.  
  515. class Game_Event < Game_Character
  516.   #--------------------------------------------------------------------------
  517.   # ● インクルード SymbolEncount
  518.   #--------------------------------------------------------------------------
  519.   include SymbolEncount
  520.   #--------------------------------------------------------------------------
  521.   # ● 公開インスタンス変数
  522.   #--------------------------------------------------------------------------
  523.   attr_reader :symbol_encount
  524.   attr_reader :contact_condition
  525.   #--------------------------------------------------------------------------
  526.   # ● 非公開メンバ変数の初期化
  527.   #--------------------------------------------------------------------------
  528.   alias _symbol_encount_ini init_private_members
  529.   def init_private_members
  530.     _symbol_encount_ini
  531.     init_symbol_encount
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # ● イベントページのセットアップ
  535.   #--------------------------------------------------------------------------
  536.   alias _symbol_encount_setup_page setup_page
  537.   def setup_page(new_page)
  538.     init_symbol_encount
  539.     _symbol_encount_setup_page(new_page)
  540.   end
  541.   #--------------------------------------------------------------------------
  542.   # ● シンボルエンカウントの初期化
  543.   #--------------------------------------------------------------------------
  544.   def init_symbol_encount
  545.     @forming = false
  546.     @symbol_encount = false
  547.     @symbol_away_level = 0
  548.     @symbol_away_level_type = 0
  549.     @reaction_distance = 0
  550.     @reaction_distance_with_dash = 0
  551.     @nonreaction_move_type = 0
  552.     @visibility_distance = 0
  553.     @reaction_before_speed = 0
  554.     @reaction_after_speed = 0
  555.     @reaction_before_speed = 0
  556.     @reaction_after_frequency = 0
  557.     @reaction_balloon_id = 0
  558.     @unpassable_region = []
  559.     @contact_index = -1
  560.     @contact_condition = 0
  561.   end
  562.   #--------------------------------------------------------------------------
  563.   # ● シンボルエンカウントを有効化
  564.   #--------------------------------------------------------------------------
  565.   def enable_symbol_encount(id)
  566.     data = SYMBOL_SETTING_LIST[id]
  567.     @symbol_encount = true
  568.     @symbol_away_level = data[0]
  569.     @symbol_away_level_type = data[1]
  570.     @reaction_distance = data[2]
  571.     @reaction_distance_with_dash = data[3]
  572.     @nonreaction_move_type = data[4]
  573.     @visibility_distance = data[5]
  574.     @reaction_before_speed = data[6]
  575.     @reaction_after_speed = data[7]
  576.     @reaction_before_frequency = data[8]
  577.     @reaction_after_frequency = data[9]
  578.     @reaction_balloon_id = data[10]
  579.     @unpassable_region = data[11].dup
  580.   end
  581.   #--------------------------------------------------------------------------
  582.   # ● 通行可能判定
  583.   #--------------------------------------------------------------------------
  584.   def passable?(x, y, d)
  585.     if @symbol_encount
  586.       x2 = $game_map.round_x_with_direction(x, d)
  587.       y2 = $game_map.round_y_with_direction(y, d)
  588.       return false if @unpassable_region.include?($game_map.region_id(x2, y2))
  589.     end
  590.     super
  591.   end
  592.   #--------------------------------------------------------------------------
  593.   # ● ロック(実行中のイベントが立ち止まる処理) ※再定義
  594.   #--------------------------------------------------------------------------
  595.   def lock
  596.     unless @locked
  597.       @prelock_direction = @direction
  598.       turn_toward_player unless @symbol_encount
  599.       @locked = true
  600.     end
  601.   end
  602.   #--------------------------------------------------------------------------
  603.   # ● プレイヤーレベルの取得
  604.   #--------------------------------------------------------------------------
  605.   def player_level
  606.     $game_party.get_player_level(@symbol_away_level_type)
  607.   end
  608.   #--------------------------------------------------------------------------
  609.   # ● プレイヤーからの距離を取得
  610.   #--------------------------------------------------------------------------
  611.   def distance_from_player
  612.     distance_x_from($game_player.x).abs + distance_y_from($game_player.y).abs
  613.   end
  614.   #--------------------------------------------------------------------------
  615.   # ● 指定キャラクターからの距離を取得
  616.   #--------------------------------------------------------------------------
  617.   def distance_from_character(character)
  618.     distance_x_from(character.x).abs + distance_y_from(character.y).abs
  619.   end
  620.   #--------------------------------------------------------------------------
  621.   # ● 反応するプレイヤーからの距離を取得
  622.   #--------------------------------------------------------------------------
  623.   def reaction_distance
  624.     if @forming
  625.       @reaction_distance_with_dash.next
  626.     elsif $game_player.dash? && $game_player.moving?
  627.       @reaction_distance_with_dash
  628.     else
  629.       @reaction_distance
  630.     end
  631.   end
  632.   #--------------------------------------------------------------------------
  633.   # ● シンボルエンカウントを動作させるか
  634.   #--------------------------------------------------------------------------
  635.   def active_symbol_encount?
  636.     if $game_map.interpreter.running?
  637.       false
  638.     elsif @erased || $game_player.stealth?
  639.       @forming = false
  640.       false
  641.     else
  642.       true
  643.     end
  644.   end
  645.   #--------------------------------------------------------------------------
  646.   # ● プレイヤーと同じ方向を向いているか
  647.   #--------------------------------------------------------------------------
  648.   def direction_as_player?
  649.     direction == $game_player.direction
  650.   end
  651.   #--------------------------------------------------------------------------
  652.   # ● 指定キャラクターとの簡易接触判定
  653.   #--------------------------------------------------------------------------
  654.   def contact?(character)
  655.     distance_from_character(character) <= 1
  656.   end
  657.   #--------------------------------------------------------------------------
  658.   # ● プレイヤーへの反応判定
  659.   #--------------------------------------------------------------------------
  660.   def reaction?
  661.     distance_from_player <= reaction_distance
  662.   end
  663.   #--------------------------------------------------------------------------
  664.   # ● プレイヤーからの逃走判定
  665.   #--------------------------------------------------------------------------
  666.   def away?
  667.     player_level > @symbol_away_level
  668.   end
  669.   #--------------------------------------------------------------------------
  670.   # ● 接触状況の判断
  671.   #--------------------------------------------------------------------------
  672.   def set_contact_condition
  673.     @contact_index = -1
  674.     @contact_condition = 0
  675.     if contact?($game_player)
  676.       @contact_index = 0
  677.     elsif FOLLOWER_CONTACT
  678.       $game_player.followers.visible_folloers.each{|follower|
  679.         @contact_index = follower.member_index if contact?(follower)
  680.       }
  681.     end
  682.     if @contact_index.zero?
  683.       @contact_condition = direction_and_positional
  684.     elsif $game_player.followers.visible_folloers.size == @contact_index
  685.       @contact_condition = 2
  686.     else
  687.       @contact_condition = 0
  688.     end
  689.   end
  690.   #--------------------------------------------------------------------------
  691.   # ● プレイヤーとの位置と向き関係から接触状況を取得
  692.   #--------------------------------------------------------------------------
  693.   def direction_and_positional
  694.     position = positional_relationship($game_player)
  695.     if position == -1
  696.       0
  697.     else
  698.       case direction
  699.       when 2
  700.         direction_as_player? ? (position == 0 ? 1 : 2) : 0
  701.       when 4
  702.         direction_as_player? ? (position == 2 ? 1 : 2) : 0
  703.       when 6
  704.         direction_as_player? ? (position == 3 ? 1 : 2) : 0
  705.       when 8
  706.         direction_as_player? ? (position == 1 ? 1 : 2) : 0
  707.       else
  708.         0
  709.       end
  710.     end
  711.   end
  712.   #--------------------------------------------------------------------------
  713.   # ● 接触イベントの起動判定
  714.   #--------------------------------------------------------------------------
  715.   alias _symbol_encount_trigger check_event_trigger_touch
  716.   def check_event_trigger_touch(x, y)
  717.     if @symbol_encount && FOLLOWER_CONTACT
  718.       unless $game_map.interpreter.running?
  719.         if @trigger == 2 && collide_with_player_characters?(x, y)
  720.           start unless jumping?
  721.         end
  722.       end
  723.     else
  724.       _symbol_encount_trigger(x, y)
  725.     end
  726.   end
  727.   #--------------------------------------------------------------------------
  728.   # ● 追跡の開始
  729.   #--------------------------------------------------------------------------
  730.   def start_forming
  731.     @move_speed = @reaction_after_speed
  732.     @move_frequency = @reaction_after_frequency
  733.     unless @reaction_balloon_id.zero?
  734.       Audio.se_play('Audio/SE/Decision1', 50, 150)
  735.       @balloon_id = @reaction_balloon_id
  736.     end
  737.   end
  738.   #--------------------------------------------------------------------------
  739.   # ● 追跡の終了(見失う)
  740.   #--------------------------------------------------------------------------
  741.   def end_forming
  742.     @move_speed = @reaction_before_speed
  743.     @move_frequency = @reaction_before_frequency
  744.   end
  745.   #--------------------------------------------------------------------------
  746.   # ● 反応している時の移動処理
  747.   #--------------------------------------------------------------------------
  748.   def reaction_movement
  749.     @move_speed = @reaction_after_speed
  750.     @move_frequency = @reaction_after_frequency
  751.     if @symbol_away_level.zero?
  752.       move_type_toward_player
  753.     elsif away?
  754.       move_away_from_player
  755.     else
  756.       move_type_toward_player
  757.     end
  758.   end
  759.   #--------------------------------------------------------------------------
  760.   # ● 反応していない時の移動処理
  761.   #--------------------------------------------------------------------------
  762.   def nonreaction_movement
  763.     @move_speed = @reaction_before_speed
  764.     @move_frequency = @reaction_before_frequency
  765.     case @nonreaction_move_type
  766.     when 0
  767.       move_type_random
  768.     when 1
  769.     end
  770.   end
  771.   #--------------------------------------------------------------------------
  772.   # ● フレーム更新
  773.   #--------------------------------------------------------------------------
  774.   alias _update_with_symbol update
  775.   def update
  776.     update_symbol_reaction if @symbol_encount && @wait_count <= 0 && !@move_route_forcing
  777.     _update_with_symbol
  778.   end
  779.   #--------------------------------------------------------------------------
  780.   # ● プレイヤーへの反応判定を更新
  781.   #--------------------------------------------------------------------------
  782.   def update_symbol_reaction
  783.     if active_symbol_encount?
  784.       if !@forming && reaction?
  785.         start_forming
  786.       elsif @forming && !reaction?
  787.         end_forming
  788.       end
  789.       @forming = reaction?
  790.     end
  791.   end
  792.   #--------------------------------------------------------------------------
  793.   # ● シンボルエンカウント関連処理による透明度の更新
  794.   #--------------------------------------------------------------------------
  795.   def update_symbol_opacity
  796.     if @visibility_distance.zero?
  797.       @opacity = @origin_opacity
  798.     else
  799.       @opacity = @origin_opacity - 50 * (distance_from_player - @visibility_distance)
  800.     end
  801.   end
  802.   #--------------------------------------------------------------------------
  803.   # ● 自律移動の更新
  804.   #--------------------------------------------------------------------------
  805.   alias _update_self_movement_with_symbol update_self_movement
  806.   def update_self_movement
  807.     if @symbol_encount
  808.       update_symbol_movement if near_the_screen? && @stop_count > stop_count_threshold
  809.     else
  810.       _update_self_movement_with_symbol
  811.     end
  812.   end
  813.   #--------------------------------------------------------------------------
  814.   # ● シンボルの動作を更新
  815.   #--------------------------------------------------------------------------
  816.   def update_symbol_movement
  817.     if near_the_screen? && @stop_count > stop_count_threshold
  818.       if active_symbol_encount?
  819.         @forming ? reaction_movement : nonreaction_movement
  820.       else
  821.         nonreaction_movement
  822.       end
  823.     end
  824.   end
  825. end
  826.  
  827. class Game_Interpreter
  828.   #--------------------------------------------------------------------------
  829.   # ● バトルの処理
  830.   #--------------------------------------------------------------------------
  831.   alias _command_301_with_symbol_encount command_301
  832.   def command_301
  833.     unless $game_party.in_battle
  834.       BattleManager.run_event = $game_map.events[@event_id]
  835.       _command_301_with_symbol_encount
  836.     end
  837.   end
  838.   #--------------------------------------------------------------------------
  839.   # ● ステルス状態の解除
  840.   #--------------------------------------------------------------------------
  841.   def reset_stealth
  842.     $game_player.reset_stealth
  843.   end
  844. end

截图未命名.jpg (16.75 KB, 下载次数: 20)

截图未命名.jpg

截图未命名2.jpg (52.94 KB, 下载次数: 21)

截图未命名2.jpg

Lv6.析梦学徒

老鹰

梦石
40
星屑
33407
在线时间
6552 小时
注册时间
2012-5-26
帖子
3178

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

2
发表于 2019-7-14 17:52:51 | 只看该作者
看起来不像是这个脚本的问题啊?
你确定在去掉这个脚本后,再调用角色心情气泡时就没有问题了吗?(事件指令-显示心情气泡,或者事件指令-移动路线-脚本:@balloon_id=1,来显示第二行的心情气泡)

一般来说这个精灵并不会在中途被释放掉,你是否还使用了其他对角色、事件的地图行走图进行修改的脚本?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
330
在线时间
57 小时
注册时间
2018-8-3
帖子
7
3
 楼主| 发表于 2019-7-14 21:58:20 | 只看该作者
本帖最后由 兔翔 于 2019-7-14 22:04 编辑
百里_飞柳 发表于 2019-7-14 17:52
看起来不像是这个脚本的问题啊?
你确定在去掉这个脚本后,再调用角色心情气泡时就没有问题了吗?(事件指 ...


我测了一下...暂时没有发现问题。
其他脚本的问题我也不是很清楚。我试试把工程发出来吧?(在楼下了)
先行谢过!!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
330
在线时间
57 小时
注册时间
2018-8-3
帖子
7
4
 楼主| 发表于 2019-7-14 22:02:15 | 只看该作者
链接:https://pan.baidu.com/s/1MYpSiXa2_j_qe0uu4GySHg
提取码:bzfq
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 16:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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