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

Project1

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

[已经解决] 关于象征遇敌的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2015-1-26
帖子
6
跳转到指定楼层
1
发表于 2015-1-28 12:54:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想要一个怪物能有索敌范围的效果(´・ω・`),也就是平时的时候怪物随机移动,当玩家离怪物到一定距离内的时候怪物会发现玩家并向玩家靠近

这个脚本我在论坛里找到几个类似的,但是效果都和我希望的不是很相近(;´Д`),然后我在《药与魔法与米莉尔》里面找到了这个脚本

名字是叫做 シンボルエンカウント for VX Ace  Ver1.31(*´∀`)效果和我希望的基本一致,包括了怪物的正面、背面索敌范围以及从背后接触、被从背后接触所触发的偷袭状况等(〃∀〃)

我把这个脚本弄到了自己的工程里面进行测试,但是如预料般的错误百出( TдT)不是什么NameERROR就是Nomethoderror,我这个脚本新手根本不知道该怎么解决(゚Д゚≡゚Д゚)

(*´д`)我想要的只是这个象征遇敌脚本最基本的怪物的索敌效果而已,其他的什么效果我不打算要的,但是自己又实在是看不懂这个脚本具体涉及了什么东西・゚( ノд`゚)只好来论坛求帮助了

(σ゚д゚)σ希望大家能帮帮我这个弱渣小白

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2015-1-26
帖子
6
2
 楼主| 发表于 2015-1-28 12:57:02 | 只看该作者
  1. =begin
  2.               シンボルエンカウント for VX Ace   Ver1.31


  3. シンボルエンカウントを使用する場合のRGSSです。
  4. 以下のリストを素材のところに挿入してください。

  5. 変更・追加しているのは以下のクラスです。
  6. RGSS上で影響がある場合は確認して下さい。

  7. 再定義箇所
  8.     Game_Player              def start_map_event
  9. 使用クラス
  10.     Game_Map
  11.     Game_Party
  12.     Game_Player
  13.     Game_Event
  14.     Game_Character
  15.     Game_CharacterBase
  16.     Game_Follower


  17. ●使い方

  18. ★1:
  19.  RGSSリストを挿入します。リスト先頭のパラメータは任意で設定して下さい。
  20. ★2:
  21.  敵のイベントを設定します。
  22.  まず、MAP上にイベントを作成します。
  23.  イベントの名前欄に半角で以下にある文字列を入力します。
  24.  文字列は離さないでくっつけて記入します。意味は以下の通りです。

  25.  ENEMY :これが記入されていると敵イベントと判別。
  26.           [ENEMY]の後ろに警戒範囲の半径XY(マス)。1以上を設定。
  27.  @   :敵の警戒フラグ。これがある場合、向きに関係なく警戒範囲に入った
  28.      段階でプレイヤーに向かってくる(セルフスイッチAがONになる)。
  29.      無い場合、プレイヤーが背後から近づいても警戒しない。
  30.  !     :敵探査範囲フラグ。これがあると探査範囲がひし形になる。
  31.          ない場合は正方形に探索する。
  32.   #     :これがある場合、フキダシが出なくなる(警戒しない敵または常時追跡用)。
  33.   &     :エネミーに発見された時の追跡時間。[&]の後ろに数値(1~**** フレーム)。
  34.           無い場合や0未満は[0]となり、初期値200(ENEMY_FORMING_TIMER)が登録。
  35.   %     :通行禁止リージョンID群の配列NOを指す。[%]の後ろに配列NOを登録。
  36.           記入なしや数値なしの場合は「0」番になる。
  37.   _     :プレイヤーとの能力差が有る場合に反応するモードを指す。
  38.           [_]の後ろに英小文字(a~c)・後にイベントと同じ敵グループNO(1~**)を登録。
  39.           [_]が無い場合や、パラメータ無い場合はモード「a」敵グループ「1」番になる。
  40.           なお、名前欄の敵グループ番号はモードaの場合は機能しない。
  41.         モード解説
  42.           a:デフォルト。今までと同じく能力差関係無しで追ってくる。
  43.           b:能力差があると、敵シンボルが逃げ出す。
  44.           c:能力差があると、敵シンボルは反応せずに通常の移動のままになる。

  45.   ※記入例:
  46.       ENEMY2&300
  47.       ENEMY2!#&300
  48.       ENEMY2&300@
  49.       ENEMY2!@&300
  50.       ENEMY2!@&300%1
  51.       ENEMY2!@&300%1_b16


  52.   ■PLAYERの警戒範囲(視認範囲)が変更できます。
  53.    設定 DISTANCE_TYPE によって視認範囲のモードを変更できます。

  54.    正方形(false)    ひし形(true)
  55.    ●●●●●          ●
  56.    ●●●●●         ●●●
  57.    ●●○●●        ●●○●●
  58.    ●●●●●         ●●●
  59.    ●●●●●         ●


  60. ★3:
  61.  イベントページを5つ作成します。各ページの設定は以下の通りです。
  62.  基本的には以下の通りにすると良いですが、そのほかイベントの組み合わせで
  63.  色々方法が変わりますので試してみて下さい。

  64.  敵のキャラクタはどのページでも同じ方向で設定してください(正面向きがベスト)。
  65.   同じにしないと、意図した動作にならない場合があります。


  66.  ※P1:通常時の敵の行動
  67.   キャラクタ :決めた敵シンボル
  68.   条件    :なし
  69.   自律移動  :タイプ-ランダム 速度-3 頻度-3 (それぞれ任意)
  70.   オプション :移動時アニメのみON
  71.   トリガー  :プレイヤーから接触
  72.                   ▲隊列有る場合はイベントから接触でもOK
  73.   イベント内容:なし


  74.  ※P2:プレイヤーが警戒範囲に接近(視認範囲にいる)
  75.   キャラクタ :決めた敵シンボル
  76.   条件    :セルフスイッチAがON
  77.   自律移動  :タイプ-近づく 速度-5 頻度-6 (それぞれ任意)
  78.          ▲おとなしい敵の場合
  79.          タイプ-ランダム 速度-3 頻度-3 (それぞれ任意)
  80.   オプション :移動時アニメのみON
  81.   トリガー  :イベントから接触
  82.   イベント内容:なし


  83.  ※P3:戦闘状態
  84.   キャラクタ :決めた敵シンボル
  85.   条件    :セルフスイッチBがON
  86.   自律移動 :任意 (固定)
  87.   オプション:任意 (移動時アニメのみON)
  88.   トリガー :自動実行
  89.   イベント内容:バトルの処理(敵グループNOは任意)
  90.                  勝った場合:セルフスイッチの操作:C=ON
  91.                  逃げた場合:セルフスイッチの操作:D=ON
  92.        ▲ 負けた場合:任意(基本はゲームオーバー)

  93.  ※P4:勝利時の状態
  94.   キャラクタ :決めた敵シンボル(または無し)
  95.   条件    :セルフスイッチCがON
  96.   自律移動  :(固定)
  97.   オプション :(すり抜け)
  98.   トリガー  :決定ボタン(復活する予定のある場合)
  99.   イベント内容:イベントの一時消去(復活しない場合)
  100.              ▲または
  101.          なし(復活する予定のある場合)
  102.                  ※基本的にどちらかになるようにして下さい。

  103.  ※P5:逃走時の状態
  104.   キャラクタ :決めた敵シンボル
  105.   条件    :セルフスイッチDがON
  106.   自律移動  :任意 (固定)
  107.   オプション :任意 (すり抜け)
  108.   トリガー  :決定ボタン
  109.   イベント内容:なし

  110. ※P4・P5にて、自律移動で動かす場合は「すり抜け」は設定しない方がいいです。
  111.  壁にめり込むなどのバグが発生しやすいようです。(VXAceでは未確認)
  112. ※復活のON/OFFは任意のスイッチで切替が出来ます。
  113.  詳しくはリストを参照して下さい。


  114. ●先制攻撃・奇襲攻撃などを行いたい場合
  115.   戦闘突入時にツクール内ゲーム変数に先制・奇襲などを行うための数値が
  116.   代入されています(初期値はID:10番)。数値の意味は以下の通りです。
  117.   0:通常  ・正面から当たった場合
  118.   1:先制  ・敵の背後から接触した場合
  119.   2:奇襲  ・敵に背後から接触された場合
  120.   3:ランダム・それ以外の方向からお互い当たった場合
  121.          (ex:PLAYERが↓で敵が→の場合等)

  122.   ※隊列移動をONにしている場合、先頭キャラ以外に敵が接触した時は
  123.     すべて奇襲「2」扱いとなります。

  124.  ※このRGSSには戦闘開始時の先制攻撃などのシステムは付けていません。
  125.   (システムによってまちまちなので対応し切れません)
  126.   別途改造などして準備して下さい。
  127.   無くても、戦闘自体は問題なく動きます。


  128. ●イベントの一時停止
  129.   ツクール内ゲーム変数($game_variables)に以下の数値を
  130.   代入することで各種機能が働きます。
  131.   ウインドウ表示中に敵シンボルを止めたいときなどに使用できます。
  132.   使用の際は「EVENT_CHARACTER_STOP」で指定してある変数ID(初期11)に以下の数値を
  133.   任意に代入してください(イベントコマンドにて入力)。
  134.     0:イベントすべて稼動
  135.     1:敵シンボルのみ停止
  136.     2:動くイベントすべて停止(固定・強制イベントは稼動)


  137. ●リージョンIDによる、敵イベントの進入禁止エリア設定
  138.     リージョンIDを登録することで、進入してほしくないゾーンの設定ができます。
  139.     ENEMY_REGION_SET に進入禁止にしたいリージョンIDを登録します。その後
  140.     [%]の後にその登録配列NOを記入することでその機能が働きます。

  141.     ※イベント接触範囲拡張使用の場合、仕様上、拡張した部分はリージョンに
  142.       入ってしまうので注意。


  143. ●能力差による、敵イベントシンボルの反応変化
  144.     名前欄に追加で記入することで、プレイヤーパーティの能力差に応じて、
  145.     敵が逃げ出したり、反応しなくなったりします。
  146.   ※機能解説------------------------
  147.       a:デフォルト。今までと同じく能力差関係無しで追ってくる。
  148.         (記入無しの場合のデフォルトモードになります)
  149.       b:能力差があると、敵シンボルが逃げ出す。
  150.       c:能力差があると、敵シンボルは反応せずに通常の移動のままになる。

  151.     ※モード[a]の敵イベントの場合は、特に記入する必要はありません。

  152.   比較データ算出方法--------------------------------------------------------
  153.   攻撃(ATK)防御(DEF)魔法(MAT)魔防(MDF)速度(AGI)運(LUK)
  154.   以上の各数値でパーティメンバー、敵グループ双方の中での平均値を出す。
  155.   さらに算出されたそれらの値を全て足したものがそれぞれの合計値となる。
  156.   その後、パーティ値 >= 敵グループ値 * 2.0(GAP_MAGNIFICATION_NO)で検出している

  157. --


  158. ●機能説明
  159.  イベントコマンドにて以下のスクリプトを入力することが出来ます。
  160.  必要に応じて使用して下さい。

  161.  ■$game_map.enemy_all_recover
  162.   MAP上にて倒した敵シンボルが全て復活します。
  163.   MAP切替時の設定は無視され、強制的に復活します。
  164.   ただし「イベント一時消去」をしていると復活しません。
  165.   (厳密にはMAP内のセルフスイッチCがON状態の敵シンボルのみ復活)
  166.   罠とかに使えるかも知れません。

  167.  ■$game_party.all_see? (通常は内部使用のため使わなくても良い)
  168.   指定ステートがメンバー内の誰かにある場合、敵が完全に見える。
  169.   これはその状態を確認する。trueで真、falseで偽。
  170.   条件分岐 : $game_party.all_see? とするなどして使用。

  171.  ■$game_party.no_caution? (通常は内部使用のため使わなくても良い)
  172.   指定ステートがメンバー内の誰かにある場合、敵が警戒しなくなる。
  173.   これはその状態を確認する。trueで真、falseで偽。
  174.   条件分岐 : $game_party.no_caution? とするなどして使用。

  175.  ■$game_party.no_encount?(通常は内部使用のため使わなくても良い)
  176.   指定ステートがメンバー内の誰かにある場合、敵と戦闘しなくなる。
  177.   これはその状態を確認する。trueで真、falseで偽。
  178.   条件分岐 : $game_party.no_encount? とするなどして使用。


  179. ●その他

  180.  ※ツクール内ゲームスイッチ・変数には強制的にフラグや数値が代入されます。
  181.     任意のIDの数値を変更したくない場合は、他のIDを設定してください
  182.     (使用される初期  スイッチID:10・11 )
  183.     (使用される初期      変数ID:10・11 )


  184.  ※「イベント接触範囲拡張 VX Ace 1.02」に対応しています。
  185.   名前欄にて以下のように設定すると使えます。
  186.   必要に応じて活用して下さい(巨大な敵シンボルとか??)

  187.    EVENT_WIDE,1,2,2,ENEMY2@&300

  188.  ★上記の通り、必ず順番の最後に入力して下さい。
  189.     RGSS組み込みのときは シンボルエンカウント → イベント接触範囲拡張
  190.     の順に組み込んでください。

  191.     併用の際は、以下の「EVENT_WIDE_COMBINE」を[true]にしてください(必須)

  192.         ●          ●●●●●
  193.         ●     ●●●●●
  194.     ●●◎●●   ●●◎●●
  195.         ●     ●●●●●
  196.         ●     ●●●●●

  197.   ※例:こんな敵シンボルとかも可能


  198. 履歴
  199. Ver1.00  公開。
  200. Ver1.01  イベントの一時停止機能追加。
  201. Ver1.20  リージョンIDによる進入禁止設定機能追加。
  202. Ver1.30  ステータスの差によって、敵イベントが逃げるようになる機能追加。
  203. Ver1.31  シンボル復活の処理方法変更

  204. =end

  205. #==============================================================================
  206. #各種設定項目
  207. #==============================================================================
  208. # 定数
  209. #==============================================================================
  210. module F_Setting
  211.     FOLLOWER_ENCOUNT_FG = true  #隊列がある場合、隊列接触でイベント発生させるか
  212.                                 #※後列に接触した場合はすべて奇襲となる
  213.     EVENT_WIDE_COMBINE  = false#true  #イベント接触範囲拡張併用時は必ずtrue
  214.                                       #(※エラー対策)
  215. end
  216. #==============================================================================
  217. # ■ Game_Party
  218. #==============================================================================
  219. class Game_Party < Game_Unit
  220.   #以下の機能を使用する場合、それぞれステートID設定(使用不可は0)
  221.   ALL_SEE            = 0  #遠見状態ステートID
  222.   NO_CAUTION         = 51  #敵警戒しないステートID
  223.   NO_ENCOUNT         = 0  #敵戦闘しないステートID
  224.   NO_ALL_BATTLE      = 0  #上記機能3つ全部ある場合のステートID
  225.   ALL_SEE_NO_CAUTION = 0  #遠見&敵警戒しないステートID
  226.   NO_CAUTION_BATTLE  = 0  #敵警戒しない&戦闘無しステートID
  227. end
  228. #==============================================================================
  229. # ■ Game_Character
  230. #==============================================================================
  231. #$game_variables(ツクール内ゲーム変数)の結果格納ID
  232. class Game_Character < Game_CharacterBase
  233.   EVENT_CHARACTER_STOP = 9   #ウインドウ表示時などに敵シンボルを一時停止させる
  234.                             #0:イベントすべて稼動(機能OFF)
  235.                             #1:敵シンボルのみ停止
  236.                             #2:動くイベントすべて停止(固定・強制イベントは稼動)
  237. end
  238. #==============================================================================
  239. # ■ Game_Map
  240. #==============================================================================
  241. class Game_Map
  242.   #それぞれ以下の初期設定をして下さい。
  243.   EVENT_ENEMY_NAME        = "ENEMY"      #イベントにこの名前があると敵シンボル。
  244.   EVENT_ENEMY_NAME_S      = /ENEMY(\d+)/ #範囲取得用。
  245.   ENEMY_FORMING_SWITCH    = "&"          #敵タイマーフラグ
  246.   ENEMY_FORMING_SWITCH_S  = /&(\d+)/     #数値取得用。
  247.   EVENT_ENEMY_CAUTION     = "@"          #敵の警戒フラグ。
  248.   EVENT_ENEMY_WATCH       = "!"          #敵探査範囲フラグ。
  249.   EVENT_ENEMY_BALLOON_OFF = "#"          #フキダシのON/OFF(つけるとOFF)
  250.   EVENT_ENEMY_REGION_SET  = "%"          #移動不可リージョンIDを登録したセットNO
  251.   EVENT_ENEMY_REGION_SET_S = /%(\d+)/    #数値取得用。
  252.   ENEMY_CHANGE_ACTION_GAP  = "_"         #敵イベント反応モード
  253.   ENEMY_CHANGE_ACTION_GAP_S = /_([abc])(\d+)/   #英小文字1字・数値取得用。

  254.   #上記の文字データは変更可能。上記文字の変更時、他のスクリプトで使用する
  255.   #名前や文字・正規表現記号等にかぶらないように注意してください
  256.   #(※正規表現が分からない方は、変えないほうが無難)
  257. end
  258. #==============================================================================
  259. # ■ Game_Event
  260. #==============================================================================
  261. class Game_Event < Game_Character
  262.   #リージョンID登録データベース   ---------------------------------------------
  263.   #敵イベント通行禁止にするリージョンIDを配列内に登録する(1~63の間で複数登録可)
  264.   #EVENT_ENEMY_REGION_SETをセットの際に、配列のNOを記入すると、
  265.   #配列登録されているリージョンの場所は敵イベントが進入しない。
  266.   #記入なしや数値なしの場合は自動的にNO「0」番になる。
  267.   #
  268.   #※イベント接触範囲拡張使用の場合、仕様上、拡張した部分はリージョンに
  269.   #入ってしまうので注意。
  270.   ENEMY_REGION_SET    =  [],       # 0(ここは変更しないでください)
  271.                          [1,2,3],  # 1
  272.                          [4,7,13], # 2
  273.                          [1,2],    #<<<< これをコピペで追加分を登録する
  274.                          [5,9,45] # (ここは一番最後に)
  275. end
  276. #----------------------------------------------------------------------------
  277. class Game_Map
  278.   ENCOUNT_DISTANCE1 = 656     #32 * 5 敵との距離1(これより大きいと透明になる距離)
  279.   ENCOUNT_DISTANCE2 = 656      #32 * 3 敵との距離2(これより大きいと半透明になる距離)
  280.   #距離はMAPパーツの基本の大きさである32を基準に考えると良い (ex: 32 * ?)
  281.   #※ひし形の場合は決めた範囲に+16した方が良いようだ
  282.   CHANGE_OPACITY    = 80      #敵との距離で使用する半透明時の透明度
  283.   DISTANCE_TYPE     = false   # PLAYER視認範囲計測方法
  284.                               #(false = 正方形 true = ひし形)
  285.   DISTANCE_ERASE_MODE  = true #点滅状態時に距離を離すとシンボルが消える  初期ON
  286.   ENEMY_DEATH_COUNT    = 350  #戦闘勝利後シンボルが復活するまでの時間(フレーム)
  287.   ENEMY_ESCAPE_COUNT   = 140  #敵から逃走・シンボル復活時の点滅時間(フレーム)
  288.   ENEMY_FIRST_COUNT    = 30   #MAP切替時の敵シンボル点滅時間(フレーム)
  289.   ENEMY_ESCAPE_OPACITY = 60   #逃走・MAP切替時の半透明状態の透明度
  290.   ENEMY_FORMING_TIMER  = 200  #発見された後エネミーに追跡される基本時間(フレーム)
  291.                               #※数値が未入力または0以下の場合、この値が適用される
  292.   ENEMY_FIND_ICON      = 1    #発見時のフキダシアイコンID
  293.   ENEMY_LOST_ICON      = 7    #見失った時のフキダシアイコンID
  294.   ENEMY_ESCAPE_ICON    = 6    #逃げ切ったときのフキダシアイコンID
  295.   ENEMY_BALLOON_TIMER  = 44   #フキダシ表示時間
  296.   ENEMY_BALLOON_SE     = 'Audio/SE/Decision1'   #発見時のフキダシSE
  297.   ENEMY_BALLOON_VOLUME = 45   #発見時のフキダシSE 音量
  298.   ENEMY_BALLOON_PITCH  = 150  #発見時のフキダシSE ピッチ

  299.   CHANGE_ACTION_GAP_TABLE = {"a" => 0, "b" => 1, "c" => 2 } #モード用テーブル
  300.   GAP_MAGNIFICATION_NO = 1.0  #敵シンボルが逃げ出す、比較用倍率
  301.                               #プレイヤー側が2.0倍以上の大差をつけた場合
  302.                               #(強い場合)に、シンボルが逃げるモードになる

  303. #----------------------------------------------------------------------------
  304.   #$game_switches(ツクール内ゲームスイッチ)の結果格納ID
  305.   ENEMY_REFRESH_NO     = 1   #MAP切替時に敵が全て復活する 初期OFF
  306.   ENEMY_REVIVE_NO      = 2   #倒した敵シンボルが一定時間後に復活する 初期OFF
  307.   #$game_variables(ツクール内ゲーム変数)の結果格納ID
  308.   ENEMY_FIRST_TURN_NO  = 1   #敵戦闘開始時の向き
  309.                               # 0:通常 1:先制 2:奇襲
  310.                               # 3:ランダム(ex:PLAYERが↓で敵が→の場合等)
  311. #----------------------------------------------------------------------------
  312.   # 敵グループ毎の逃走レベル閾値 2013.01.22
  313.   ESCAPE_LEVEL_LUT = [
  314.     1,    # グループ 0 *dummy
  315.   # 0  1  2  3  4  5  6  7  8  9
  316.        4, 4, 4, 4, 4,99,12,12,12,   # 0x
  317.    12,12,18,18,18,99,99,18,99,18,   # 1x
  318.    22,22,22,99,26,26,26,26,26,38,   # 2x
  319.    38,38,38,99,99,99,99,99,99,99,   # 3x
  320.    27,27,27,30,32,32,32,32,35,35,   # 4x
  321.    35, 1, 1, 1, 1, 1, 1, 1, 1, 1,   # 5x
  322.     1, 1, 1, 1, 1, 1, 1, 1, 1       # 6x-68
  323.   ]
  324. #----------------------------------------------------------------------------



  325.   attr_accessor   :enemy_events           #エンカウントする敵イベントID
  326.   attr_accessor   :enemy_forming_flg      #追跡ONフラグ(時間が-1でフラグOFF)
  327.   attr_reader     :enemy_forming_maxtimer #追跡の最大時間
  328.   attr_accessor   :follower_encount_fg    #後列メンバーエンカウントフラグ
  329.   attr_reader     :enemy_notenter_region  #進入禁止リージョンID配列NO
  330.   attr_reader     :change_action_gap_fg   #敵イベント反応モード フラグ
  331.   #--------------------------------------------------------------------------
  332.   # ■ セットアップ
  333.   #     map_id : マップ ID
  334.   #--------------------------------------------------------------------------
  335.   alias wiki2_setup setup
  336.   def setup(map_id)
  337.     # 130219追加:dowsing で切ると間に合わない
  338.     $game_switches[WhiteSnow::WEATHER_BGS_DISABLE] = false
  339.    
  340.     #MAP切替時に敵イベント初期化?(スイッチで切替)
  341.     if $game_switches[ENEMY_REFRESH_NO]
  342.       all_enemy_refresh
  343.     end

  344.     # 呼び戻す
  345.     wiki2_setup(map_id)
  346.     #エンカウントデータ初期化
  347.     @enemy_events = []           #敵イベント
  348.     @enemy_range = []            #警戒距離
  349.     @enemy_distance_type = []    #警戒範囲のタイプ
  350.     @enemy_caution = []          #警戒心強い?
  351.     @enemy_wait = []             #点滅時のウエイト
  352.     @enemy_forming_maxtimer = [] #追跡の最大時間
  353.     @enemy_forming_flg = []      #追跡ONフラグ(時間が-1になるとフラグOFF)
  354.     @flach_fg = -1               #点滅用フラグ
  355.     @anime_wait_fg = []          #フキダシアイコン表示(ウエイト)
  356.     @anime_balloon_end_fg = []   #追跡終了フラグ用
  357.     @enemy_balloon_off = []      #フキダシOFF
  358.     @enemy_notenter_region = []  #進入禁止リージョンID配列NO
  359.     @follower_encount_fg = false #後列メンバーエンカウントした時
  360.     @change_action_gap_fg = []   #敵イベント反応モード フラグ
  361.     #エンカウントデータ取得
  362.     for i in @map.events.values
  363.       if i.name.include?(EVENT_ENEMY_NAME)
  364.         @enemy_events.push(i.id)
  365.       end
  366.     end
  367.     for i in 0...@enemy_events.size
  368.       tmp = ""
  369.       tmp2 = ""
  370.       data = []
  371.       #EVENT_ENEMY_NAME のある文字列を選別
  372.       data = @events[@enemy_events[i]].name.split(/,/)
  373.       data.each_index do |j|
  374.         if data[j].include?(EVENT_ENEMY_NAME)
  375.           tmp = data[j].dup
  376.           break
  377.         end
  378.       end
  379.       EVENT_ENEMY_NAME_S =~ tmp
  380.       tmp2 = [        DISCUZ_CODE_0        ]
  381.       if tmp2 != nil
  382.         tmp.slice!(tmp2)
  383.         tmp2.slice!(EVENT_ENEMY_NAME)
  384.       end
  385.       range = [tmp2.to_i, 1].max
  386.       #リージョンID
  387.       EVENT_ENEMY_REGION_SET_S =~ tmp
  388.       tmp2 = [        DISCUZ_CODE_0        ]
  389.       if tmp2 != nil
  390.         tmp.slice!(tmp2)
  391.         tmp2.slice!(EVENT_ENEMY_REGION_SET)
  392.       end
  393.       @enemy_notenter_region[i] = (tmp2.to_i > 0)? tmp2.to_i : 0
  394.       #追跡最大時間取得・フラグ初期化
  395.       ENEMY_FORMING_SWITCH_S =~ tmp
  396.       tmp2 = [        DISCUZ_CODE_0        ]
  397.       if tmp2 != nil
  398.         tmp.slice!(tmp2)
  399.         tmp2.slice!(ENEMY_FORMING_SWITCH)
  400.       end
  401.       @enemy_forming_maxtimer[i] = (tmp2.to_i > 0)? tmp2.to_i : ENEMY_FORMING_TIMER
  402.       forming_timer_reset(i)
  403.       @anime_wait_fg[i] = 0
  404.       @anime_balloon_end_fg[i] = false
  405.       @enemy_balloon_off[i] = false
  406.       #敵イベント反応モード
  407.       if $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] == 4..5  # 夜は敵が逃走しない
  408.         @change_action_gap_fg[i] = 0
  409.       else
  410.         ENEMY_CHANGE_ACTION_GAP_S =~ tmp
  411.         tmp1 = nil
  412.         c = 0
  413.         tmp2 = [        DISCUZ_CODE_0        ]
  414.         if tmp2 != nil
  415.           tmp.slice!(tmp2)
  416.           tmp1 = $1
  417.           tmp2 = $2
  418.           tmp2.slice!(tmp1)
  419.           tmp2.slice!(ENEMY_CHANGE_ACTION_GAP)
  420.         end
  421.         #テーブル設定-----------------------------
  422.         if tmp1 != nil
  423.           tmp1.strip
  424.           c = CHANGE_ACTION_GAP_TABLE[tmp1]
  425.           trp_no = (tmp2.to_i >= 1)? tmp2.to_i : 1
  426.           if c > 0
  427.   #          c = 0 unless enemy_average_compare_check(trp_no)
  428.              c = 0 unless miriel_level_check(trp_no)  # ミーリエルのレベルで逃走するように変更(2013.01.22)
  429.           end
  430.         end
  431.         #プレイヤーと能力比較した場合の 発見時の移動モード
  432.         # 0:追跡  1:逃げる  2:動きそのまま
  433.         @change_action_gap_fg[i] = c
  434.       end
  435.       #警戒反応モード
  436.       @enemy_caution[i] = (tmp.include?(EVENT_ENEMY_CAUTION))
  437.       #tmp.slice!(EVENT_ENEMY_CAUTION)
  438.       #警戒範囲のタイプ
  439.       @enemy_distance_type[i] = (tmp.include?(EVENT_ENEMY_WATCH))
  440.       #tmp.slice!(EVENT_ENEMY_WATCH)
  441.       #フキダシのOFF
  442.       @enemy_balloon_off[i] = (tmp.include?(EVENT_ENEMY_BALLOON_OFF))
  443.       #tmp.slice!(EVENT_ENEMY_BALLOON_OFF)
  444.       #警戒距離
  445.       range *= 32
  446.       #ひし形の場合16pix余分に足す
  447.       range += 16 if @enemy_distance_type[i]
  448.       @enemy_range.push(range)
  449.     end
  450. #~     #MAP切替時に敵イベント初期化?(スイッチで切替)
  451. #~     if $game_switches[ENEMY_REFRESH_NO]
  452. #~       all_enemy_refresh
  453. #~     end
  454.     #出現用 点滅カウント設定
  455.     for i in 0...@enemy_events.size
  456.       key3 = [@map_id,@enemy_events[i],"C"] #戦闘勝利
  457.       #ENEMY死んでいない場合
  458.       if !$game_self_switches[key3]
  459.         enemy_refresh(@enemy_events[i],true)
  460.         @enemy_wait[i] = ENEMY_FIRST_COUNT
  461.         enemy_switch(@enemy_events[i],"D",true)
  462.       #ENEMY死んでいて、時間復活ある場合
  463.       elsif $game_self_switches[key3] && $game_switches[ENEMY_REVIVE_NO]
  464.         @enemy_wait[i] = ENEMY_DEATH_COUNT
  465.       end
  466.     end
  467.    
  468.     dowsing  #
  469.   end
  470.   #--------------------------------------------------------------------------
  471.   # ■ 敵復活の操作
  472.   #--------------------------------------------------------------------------
  473.   def enemy_all_recover
  474.     #点滅カウント設定
  475.     for i in 0...@enemy_events.size
  476.      # @enemy_wait[i] = 0
  477.       key1 = [@map_id,@enemy_events[i],"A"] #
  478.       key2 = [@map_id,@enemy_events[i],"B"] #戦闘
  479.       key3 = [@map_id,@enemy_events[i],"C"] #戦闘勝利
  480.       key4 = [@map_id,@enemy_events[i],"D"] #逃走
  481.       if $game_self_switches[key3]# or $game_self_switches[key4]
  482.         unless (!$game_self_switches[key1] or $game_self_switches[key1]) &&
  483.             !$game_self_switches[key2] && !$game_self_switches[key3] &&
  484.             !$game_self_switches[key4]
  485.           @enemy_wait[i] = ENEMY_FIRST_COUNT
  486.           forming_timer_reset(i)
  487.           updete_encount_set_sub(i,false)
  488.           enemy_switch(@enemy_events[i],"D",true,true)
  489.         end
  490.         enemy_switch(@enemy_events[i],"B",false,true)
  491.         enemy_switch(@enemy_events[i],"C",false,false)
  492.       end
  493.     end
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ■ セルフスイッチの操作
  497.   #--------------------------------------------------------------------------
  498.   def enemy_switch(event_id,switch,value,mode = false)
  499.     key = [@map_id,event_id,switch]
  500.     $game_self_switches[key] = value
  501.     if mode == false
  502.       $game_map.need_refresh = true
  503.     end
  504.   end
  505.   #--------------------------------------------------------------------------
  506.   # ■ 一つの敵イベントの初期化
  507.   #--------------------------------------------------------------------------
  508.   def enemy_refresh(event_id,mode = false)
  509.     enemy_switch(event_id,"A",false,true)
  510.     enemy_switch(event_id,"B",false,true)
  511.     enemy_switch(event_id,"C",false,true)
  512.     enemy_switch(event_id,"D",false,mode)
  513.   end
  514.   #--------------------------------------------------------------------------
  515.   # ■ 全ての敵イベントの初期化
  516.   #--------------------------------------------------------------------------
  517.   def all_enemy_refresh
  518.     for i in 0...@enemy_events.size
  519.       forming_timer_reset(i)
  520.       enemy_refresh(@enemy_events[i],true)
  521.     end
  522.     $game_map.need_refresh = true
  523.   end
  524.   #--------------------------------------------------------------------------
  525.   # ■ イベントとプレイヤーの距離
  526.   # falseで絶対値を返す
  527.   # mode: 0:通常(絶対値) 1:通常 2:ひし形(マンハッタン距離(絶対値))
  528.   #--------------------------------------------------------------------------
  529.   def event_distance(event_id,px,py,mode = 0)
  530.     xy = []
  531.     xy[0] = (@events[event_id].screen_x - px)
  532.     xy[1] = (@events[event_id].screen_y - py)
  533.     #0、2は絶対値に変換
  534.     if mode == 0 or mode == 2
  535.       xy[0] = xy[0].abs
  536.       xy[1] = xy[1].abs
  537.     end
  538.     #ひし形(マンハッタン距離)
  539.     xy[2] = xy[0] + xy[1] if mode == 2
  540.     #配列で返す
  541.     return xy
  542.   end
  543.   #--------------------------------------------------------------------------
  544.   # ■ 敵イベントフレーム更新
  545.   #--------------------------------------------------------------------------
  546.   #イベントID,警戒距離,反応,探査範囲
  547.   #def update_enemy_event_sub(event_id,range,mode,type,forming,xy,mode2 = false)
  548.   def update_enemy_event(event_id,range,mode,type,forming)
  549.     key1 = [@map_id,event_id,"A"] #警戒範囲
  550.     key3 = [@map_id,event_id,"C"] #戦闘勝利
  551.     key4 = [@map_id,event_id,"D"] #戦闘逃走
  552.     xy = event_distance(event_id,$game_player.screen_x,$game_player.screen_y,2) #敵との距離
  553.     #透明で初期化
  554.     tmp_opacity = 0
  555.     #勝利状態でない場合
  556.     unless $game_self_switches[key3]
  557.       #追跡状態?
  558.       if encount_balloon_wait?(@enemy_events.index(event_id)) or $game_self_switches[key1]
  559.         tmp_opacity = 255
  560.       else
  561.         #正方形範囲
  562.         if !DISTANCE_TYPE
  563.           #距離2(不透明>半透明)
  564.           if xy[0] <= ENCOUNT_DISTANCE2 && xy[1] <= ENCOUNT_DISTANCE2 or $game_party.all_see?
  565.             tmp_opacity = ($game_self_switches[key4]) ? ENEMY_ESCAPE_OPACITY : 255
  566.           #距離1(半透明>透明)
  567.           elsif xy[0] <= ENCOUNT_DISTANCE1 && xy[1] <= ENCOUNT_DISTANCE1
  568.             tmp_opacity = ($game_self_switches[key4]) ? ENEMY_ESCAPE_OPACITY : CHANGE_OPACITY
  569.           #点滅状態?(距離は透明時)
  570.           elsif $game_self_switches[key4] && !DISTANCE_ERASE_MODE
  571.             tmp_opacity = ENEMY_ESCAPE_OPACITY
  572.           end
  573.         #ひし形(マンハッタン距離)
  574.         else
  575.           #距離2(不透明 << 半透明)
  576.           if xy[2] <= ENCOUNT_DISTANCE2 or $game_party.all_see?
  577.             tmp_opacity = ($game_self_switches[key4]) ? ENEMY_ESCAPE_OPACITY : 255
  578.           #距離1(半透明 << 透明)
  579.           elsif xy[2] <= ENCOUNT_DISTANCE1
  580.             tmp_opacity = ($game_self_switches[key4]) ? ENEMY_ESCAPE_OPACITY : CHANGE_OPACITY
  581.           #点滅状態?(距離は透明時)
  582.           elsif $game_self_switches[key4] && !DISTANCE_ERASE_MODE
  583.             tmp_opacity = ENEMY_ESCAPE_OPACITY
  584.           end
  585.         end
  586.       end
  587.     end
  588.     #透明度設定(点滅用)
  589.     if $game_self_switches[key4] && @flach_fg < 2
  590.       @events[event_id].opacity_setting(1)
  591.     else
  592.       @events[event_id].opacity_setting(tmp_opacity)
  593.     end
  594.     #警戒状態
  595.     if !$game_map.interpreter.running? && !$game_player.move_route_forcing &&
  596.                       !$game_self_switches[key3] && !$game_self_switches[key4]
  597.       if forming > -1
  598.         enemy_switch(event_id,"A",true) if !$game_self_switches[key1]
  599.       else
  600.         #警戒範囲制御
  601.         if (!type && xy[0] <= range && xy[1] <= range or type && xy[2] <= range) &&
  602.             !$game_party.no_caution? && (enemy_caution_check(event_id) or mode)
  603.           if !$game_self_switches[key1] && @change_action_gap_fg[@enemy_events.index(event_id)] != 2
  604.             enemy_switch(event_id,"A",true)
  605.             fine_balloon_start(@enemy_events.index(event_id))
  606.           end
  607.         else
  608.           if $game_self_switches[key1]
  609.             enemy_switch(event_id,"A",false)
  610.             lost_balloon_start(@enemy_events.index(event_id)) if @anime_balloon_end_fg[@enemy_events.index(event_id)]
  611.           end
  612.           @anime_balloon_end_fg[@enemy_events.index(event_id)] = false
  613.         end
  614.       end
  615.     end
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ■ 敵警戒状態 範囲チェック
  619.   #--------------------------------------------------------------------------
  620.   def enemy_caution_check(event_id)
  621.     xy = event_distance(event_id,$game_player.screen_x,$game_player.screen_y,1)
  622.     x = xy[0]
  623.     y = xy[1]
  624.     case @events[event_id].direction
  625.     when 2
  626.       return (y <= 0)
  627.     when 4
  628.       return (x >= 0)
  629.     when 6
  630.       return (x <= 0)
  631.     when 8
  632.       return (y >= 0)
  633.     end
  634.     return false
  635.   end
  636.   #--------------------------------------------------------------------------
  637.   # ■ 敵戦闘開始時の向き(イベントコマンドで使用)
  638.   # (ツクール内ゲーム変数 「ENEMY_FIRST_TURN_NO」にID.NO)に以下の返り値
  639.   # 0:通常 1:先制 2:奇襲 3:ランダム(ex:PLAYERが↓で敵が→の場合等)
  640.   #--------------------------------------------------------------------------
  641.   #$game_map.turn_inbattle(@event_id)   <<書式
  642.   def turn_inbattle(event_id)
  643.     t = 0
  644.     #後列に接触?
  645.     if !@follower_encount_fg
  646.       #XY数値検出
  647.       xy = event_distance(event_id,$game_player.screen_x,$game_player.screen_y,1)
  648.       x = xy[0] #比較X
  649.       y = xy[1] #比較Y
  650.       t = 0     #向きのモード 0で初期化
  651.       en = @events[event_id].direction #敵の向き
  652.       pl = $game_player.direction      #PLAYERの向き
  653.       #上下
  654.       if pl == 2 or pl == 8
  655.         if en == 4 or en == 6
  656.           t = 3
  657.         elsif en == 2 && pl == 2
  658.           t = 2 if y < 0
  659.           t = 1 if y > 0
  660.         elsif en == 8 && pl == 8
  661.           t = 2 if y > 0
  662.           t = 1 if y < 0
  663.         end
  664.       #左右
  665.       elsif pl == 4 or pl == 6
  666.         if en == 2 or en == 8
  667.           t = 3
  668.         elsif en == 4 && pl == 4
  669.           t = 2 if x > 0
  670.           t = 1 if x < 0
  671.         elsif en == 6 && pl == 6
  672.           t = 2 if x < 0
  673.           t = 1 if x > 0
  674.         end
  675.       end
  676.     else
  677.       #後列に接触で自動的に奇襲
  678.       t = 2
  679.     end
  680.     @follower_encount_fg = false
  681.     $game_variables[ENEMY_FIRST_TURN_NO] = t
  682.   end
  683.   #--------------------------------------------------------------------------
  684.   # ■ 追跡時間カウンター 操作
  685.   #--------------------------------------------------------------------------
  686.   def forming_timer_set(i,mode)
  687.     if mode
  688.       @enemy_forming_flg[i] = @enemy_forming_maxtimer[i]
  689.     else
  690.       if @enemy_forming_flg[i] < 0
  691.         forming_timer_reset(i)
  692.       else
  693.         @enemy_forming_flg[i] -= 1 if !@events[@enemy_events[i]].message_wait? && !$game_map.interpreter.running?
  694.         @anime_balloon_end_fg[i] = true if @enemy_forming_flg[i] < 0
  695.       end
  696.     end
  697.   end
  698.   #--------------------------------------------------------------------------
  699.   def forming_timer_reset(i)
  700.     @enemy_forming_flg[i] = -1
  701.   end
  702.   #--------------------------------------------------------------------------
  703.   # ■ 追跡開始
  704.   #--------------------------------------------------------------------------
  705.   def fine_balloon_start(i)
  706.     return if @events[@enemy_events[i]].balloon_id > 0
  707.     if !@enemy_balloon_off[i]
  708.       @events[@enemy_events[i]].balloon_id = ENEMY_FIND_ICON
  709.       Audio.se_play(ENEMY_BALLOON_SE, ENEMY_BALLOON_VOLUME, ENEMY_BALLOON_PITCH)
  710.       @anime_wait_fg[i] = ENEMY_BALLOON_TIMER
  711.     end
  712.     forming_timer_set(i,true)
  713.   end
  714.   #--------------------------------------------------------------------------
  715.   # ■ 見失い開始
  716.   #--------------------------------------------------------------------------
  717.   def lost_balloon_start(i)
  718.     return if @events[@enemy_events[i]].balloon_id > 0 or @enemy_balloon_off[i]
  719.     if @change_action_gap_fg[i] == 1
  720.       @events[@enemy_events[i]].balloon_id = ENEMY_ESCAPE_ICON
  721.     else
  722.       @events[@enemy_events[i]].balloon_id = ENEMY_LOST_ICON
  723.     end
  724.     @anime_wait_fg[i] = ENEMY_BALLOON_TIMER
  725.   end
  726.   #--------------------------------------------------------------------------
  727.   # ■ 追跡状態?(フキダシ待ち関連)
  728.   #--------------------------------------------------------------------------
  729.   def encount_balloon_wait?(i)
  730.     return (@events[@enemy_events[i]].balloon_id != 0 or @anime_wait_fg[i] > 0)
  731.    end
  732.   #--------------------------------------------------------------------------
  733.   # ■ エンカウントシンボル 各種数値・フラグ解除
  734.   #--------------------------------------------------------------------------
  735.   def updete_encount_set_sub(i,mode = false)
  736.     unless mode
  737.       @events[@enemy_events[i]].direction_fix_change(false)
  738.       @events[@enemy_events[i]].unlock
  739.       @anime_wait_fg[i] = 0
  740.     end
  741.     forming_timer_reset(i)
  742.     @anime_balloon_end_fg[i] = false
  743.     @events[@enemy_events[i]].balloon_id = 0
  744.   end
  745.   #--------------------------------------------------------------------------
  746.   # ■ エンカウントシンボル 更新
  747.   #--------------------------------------------------------------------------
  748.   def updete_encount_set(i)
  749.     #イベント起動中?
  750.     return if @events[@enemy_events[i]].starting
  751.     key1 = [@map_id,@enemy_events[i],"A"] #警戒範囲
  752.     key3 = [@map_id,@enemy_events[i],"C"] #戦闘勝利
  753.     key4 = [@map_id,@enemy_events[i],"D"] #戦闘逃走
  754.     #敵シンボルが復活する場合
  755.     if $game_self_switches[key3] && $game_switches[ENEMY_REVIVE_NO]
  756.       if @enemy_wait[i] > 0 && !@events[@enemy_events[i]].message_wait? && !$game_map.interpreter.running?
  757.         @enemy_wait[i] -= 1
  758.         if @enemy_wait[i] <= 0 #シンボル復帰処理
  759.           enemy_switch(@enemy_events[i],"C",false)
  760.           enemy_switch(@enemy_events[i],"D",true)
  761.           updete_encount_set_sub(i)
  762.         end
  763.       elsif @enemy_wait[i] <= 0 #シンボル点滅時間、初期化
  764.         @enemy_wait[i] = ENEMY_DEATH_COUNT
  765.       end
  766.     #逃げた時・シンボル復活・MAP切替時の点滅設定処理
  767.     elsif $game_self_switches[key4]
  768.       if @enemy_wait[i] > 0 && !@events[@enemy_events[i]].message_wait? && !$game_map.interpreter.running?
  769.         @enemy_wait[i] -= 1
  770.         if @enemy_wait[i] <= 0
  771.           enemy_refresh(@enemy_events[i])
  772.           @events[@enemy_events[i]].opacity_setting(ENEMY_ESCAPE_OPACITY)
  773.           updete_encount_set_sub(i)
  774.         end
  775.       elsif @enemy_wait[i] <= 0
  776.         @enemy_wait[i] = ENEMY_ESCAPE_COUNT
  777.       end
  778.     #追跡カウンターが0より上の場合
  779.     elsif @anime_wait_fg[i] > 0
  780.       @events[@enemy_events[i]].lock
  781.       @anime_wait_fg[i] -= 1
  782.       @events[@enemy_events[i]].unlock if @anime_wait_fg[i] <= 0
  783.     #セルフスイッチAがONの場合
  784.     elsif $game_self_switches[key1]
  785.       @events[@enemy_events[i]].direction_fix_change(false)
  786.       forming_timer_set(i,(@enemy_forming_flg[i] < 0))
  787.     end
  788.   end
  789.   #--------------------------------------------------------------------------
  790.   # ■ 敵シンボルとプレイヤーキャラの能力比較
  791.   #     パーティメンバーと敵グループの各能力の平均値合計を比較する
  792.   #--------------------------------------------------------------------------
  793.   def enemy_average_compare_check(i)
  794.     #アクター側パーティ平均値取得
  795.     a_comp = average_compare_set($game_party.battle_members)
  796.     #敵グループ平均値取得
  797.     $game_troop.setup(i)
  798.     e_comp = average_compare_set($game_troop.members)
  799.     #合計値の差を比較
  800.     #プレイヤー側が [GAP_MAGNIFICATION_NO] 倍以上の大差をつけた場合(強い場合)に、
  801.     #可となる
  802.     return true if a_comp >= e_comp * GAP_MAGNIFICATION_NO
  803.     return false
  804.   end
  805.   #--------------------------------------------------------------------------
  806.   # ■ 平均値用データ取得
  807.   #--------------------------------------------------------------------------
  808.   #攻撃(ATK)防御(DEF)魔法(MAT)魔防(MDF)速度(AGI)運(LUK)
  809.   #以上の各数値でパーティメンバー、又は敵グループの中での平均値を出す。
  810.   #さらに算出されたそれらの値を全て足したものが合計値となる。
  811.   def average_compare_set(battlers)
  812.     atk = deff = mat = mdf = agi = luk = []
  813.     for battler in battlers
  814.       atk.push(battler.atk)
  815.       deff.push(battler.def)
  816.       mat.push(battler.mat)
  817.       mdf.push(battler.mdf)
  818.       agi.push(battler.agi)
  819.       luk.push(battler.luk)
  820.     end
  821.     return  pram_compare(atk) + pram_compare(deff) + pram_compare(mat) +
  822.             pram_compare(mdf) + pram_compare(luk)
  823.   end
  824.   #--------------------------------------------------------------------------
  825.   # ■ 平均値算出
  826.   #--------------------------------------------------------------------------
  827.   def pram_compare(numbers)
  828.     c = 0
  829.     numbers.each do |item|
  830.       c += item
  831.     end
  832.     return c / numbers.size
  833.   end
  834.   #--------------------------------------------------------------------------
  835.   # ★ イベントの更新
  836.   #--------------------------------------------------------------------------
  837.   alias wiki_update_events update_events
  838.   def update_events
  839.     #呼び戻す
  840.     wiki_update_events
  841.     #敵シンボル イベングループ
  842.     @flach_fg = (@flach_fg < 2)? @flach_fg + 1 : 0
  843.     for i in 0...@enemy_events.size
  844.       update_enemy_event(@enemy_events[i],@enemy_range[i],@enemy_caution[i],
  845.                                   @enemy_distance_type[i],@enemy_forming_flg[i])
  846.       @events[@enemy_events[i]].check_event_trigger_here_encount([1,2]) if !@events[@enemy_events[i]].stopping?
  847.       updete_encount_set(i)
  848.     end
  849.   end
  850.   
  851.   #--------------------------------------------------------------------------
  852.   # 敵グループ逃走のレベル閾値チェック
  853.   # 2013.01.22
  854.   #--------------------------------------------------------------------------
  855.   def miriel_level_check(group_id)
  856.     # 範囲外の敵グループIDならfalse
  857.     if group_id < 1 || group_id >= ESCAPE_LEVEL_LUT.size
  858.       return false
  859.     end
  860.     if $game_actors[1].level >= ESCAPE_LEVEL_LUT[group_id]
  861.       return true
  862.     end
  863.     return false
  864.   end
  865. end

  866. #==============================================================================
  867. # ■ Game_Player
  868. #------------------------------------------------------------------------------
  869. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  870. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  871. #==============================================================================

  872. class Game_Player < Game_Character
  873.   #--------------------------------------------------------------------------
  874.   # ■再定義 マップイベントの起動
  875.   #     triggers : トリガーの配列
  876.   #     normal   : プライオリティ[通常キャラと同じ]かそれ以外か
  877.   #--------------------------------------------------------------------------
  878.   def start_map_event(x, y, triggers, normal)
  879.     flg = false
  880.     if F_Setting::EVENT_WIDE_COMBINE
  881.       #イベント接触範囲拡張
  882.       $game_map.events_range_xy(x, y).each do |event|
  883.         if event.trigger_in?(triggers) && !event.starting &&
  884.               $game_map.enemy_events.include?(event.id) &&
  885.               !$game_self_switches[[$game_map.map_id,event.id,"B"]]
  886.           getn = $game_map.event_name_range_word_check(event.name)
  887.           if (!getn[2] or getn[2] && event.normal_priority? == normal)
  888.             event.encount_switch_set_sub
  889.             event.start
  890.            flg = true
  891.           end
  892.         end
  893.       end
  894.       return flg if flg
  895.     end
  896.     $game_map.events_xy(x, y).each do |event|
  897.       flg = false
  898.       if event.trigger_in?(triggers) && event.normal_priority? == normal
  899.         if $game_map.enemy_events.include?(event.id)
  900.           if !event.starting && event.encount_switch_set
  901.             event.start
  902.             flg = true
  903.           end
  904.         else
  905.           event.start
  906.            flg = true
  907.         end
  908.       end
  909.     end
  910.     return flg
  911.   end
  912.   #--------------------------------------------------------------------------
  913.   # ● マップ通行可能判定
  914.   #     d : 方向(2,4,6,8)
  915.   #--------------------------------------------------------------------------
  916.   alias encount_map_passable? map_passable?
  917.   def map_passable?(x, y, d)
  918.     if F_Setting::EVENT_WIDE_COMBINE
  919.       #flg = false
  920.       $game_map.events_range_xy(x, y).each do |event|
  921.         if event.trigger_in?([0,1,2]) && #!event.starting &&
  922.               $game_map.enemy_events.include?(event.id) &&
  923.               !$game_self_switches[[$game_map.map_id,event.id,"B"]]
  924.           getn = $game_map.event_name_range_word_check(event.name)
  925.           if (!getn[2] or getn[2] && event.normal_priority? == normal)
  926.             return false
  927.           end
  928.         end
  929.       end
  930.       encount_map_passable?(x, y, d)
  931.     else
  932.       encount_map_passable?(x, y, d)
  933.     end
  934.   end
  935.   #--------------------------------------------------------------------------
  936.   # ● 同位置のイベント起動判定
  937.   #--------------------------------------------------------------------------
  938.   alias wiki_check_event_trigger_here check_event_trigger_here
  939.   def check_event_trigger_here(triggers)
  940.     #
  941.     $game_map.follower_encount_fg = false
  942.     wiki_check_event_trigger_here(triggers)
  943.     #
  944.     if F_Setting::FOLLOWER_ENCOUNT_FG
  945.       $game_player.followers.visible_folloers.each do |follower|
  946.         if start_map_event(follower.fx, follower.fy, [1,2], false)
  947.           $game_map.follower_encount_fg = true
  948.         end
  949.       end
  950.     end
  951.   end
  952. end
  953. #==============================================================================
  954. # ■ Game_Follower
  955. #------------------------------------------------------------------------------
  956. #  フォロワーを扱うクラスです。フォロワーとは、隊列歩行で表示する、先頭以外の
  957. # 仲間キャラクターのことです。Game_Followers クラスの内部で参照されます。
  958. #==============================================================================

  959. class Game_Follower < Game_Character
  960.   #--------------------------------------------------------------------------
  961.   # ● オブジェクト初期化
  962.   #--------------------------------------------------------------------------
  963.   alias follower_initialize initialize
  964.   def initialize(member_index, preceding_character)
  965.     follower_initialize(member_index, preceding_character)
  966.     @old_x = @preceding_character.x
  967.     @old_y = @preceding_character.y
  968.   end
  969.   #--------------------------------------------------------------------------
  970.   # ● 先導キャラクターを追う
  971.   #--------------------------------------------------------------------------
  972.   alias follower_chase_preceding_character chase_preceding_character
  973.   def chase_preceding_character
  974.     unless moving?
  975.       @old_x = @preceding_character.x
  976.       @old_y = @preceding_character.y
  977.     end
  978.     follower_chase_preceding_character
  979.   end
  980.   #--------------------------------------------------------------------------
  981.   def fx
  982.     return @old_x
  983.   end
  984.   #--------------------------------------------------------------------------
  985.   def fy
  986.     return @old_y
  987.   end
  988. end

  989. #==============================================================================
  990. # ■ Game_Event
  991. #------------------------------------------------------------------------------
  992. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  993. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  994. #==============================================================================

  995. class Game_Event < Game_Character
  996.   #--------------------------------------------------------------------------
  997.   # ● リフレッシュ
  998.   #--------------------------------------------------------------------------
  999.   alias wiki_refresh refresh
  1000.   def refresh
  1001.     wiki_refresh
  1002.     if @old_opacity != nil
  1003.       @opacity = @old_opacity
  1004.     end
  1005.   end
  1006.   #--------------------------------------------------------------------------
  1007.   # ■ イベント名の取得
  1008.   #--------------------------------------------------------------------------
  1009.   def name
  1010.     return @event.name
  1011.   end
  1012.   #--------------------------------------------------------------------------
  1013.   # ■ 不透明度の変化
  1014.   #--------------------------------------------------------------------------
  1015.   def opacity_setting(opacity)
  1016.     return if @opacity == opacity
  1017.     @old_opacity = opacity
  1018.     @opacity = opacity
  1019.   end
  1020.   #--------------------------------------------------------------------------
  1021.   # ● 接触イベントの起動判定
  1022.   #--------------------------------------------------------------------------
  1023.   alias simbol_check_event_trigger_touch check_event_trigger_touch
  1024.   def check_event_trigger_touch(x, y)
  1025.     #エンカウントIDある?
  1026.     if $game_map.enemy_events.include?(self.id) && $game_self_switches[[@map_id,self.id,"B"]] != true
  1027.       return if $game_map.interpreter.running?
  1028.       #イベント接触範囲拡張 フラグ取得
  1029.       if F_Setting::EVENT_WIDE_COMBINE
  1030.         if $game_map.wide_event.include?(self.id)
  1031.           num = $game_map.wide_event.index(self.id)
  1032.           # トリガー [イベントから接触] が一致した場合
  1033.           tmp = event_number_range_check($game_player.x, $game_player.y,
  1034.               $game_map.wide_parameter[num], $game_map.wide_extend[num]) if @trigger == 2
  1035.           #ジャンプ中では無く、条件が一致した場合
  1036.           if tmp && !jumping? && (!$game_map.wide_priority[num] or
  1037.                                 $game_map.wide_priority[num] && normal_priority?)
  1038.             $game_map.follower_encount_fg = false
  1039.             self.encount_switch_set_sub
  1040.             start
  1041.             return
  1042.           end
  1043.         end
  1044.       end
  1045.       if @trigger == 2 && $game_player.pos?(x, y)
  1046.         if !jumping? && normal_priority?
  1047.           $game_map.follower_encount_fg = false
  1048.           encount_switch_set_sub
  1049.           start
  1050.           return
  1051.         end
  1052.       end
  1053.       if F_Setting::FOLLOWER_ENCOUNT_FG
  1054.         if @trigger == 2 && collide_with_player_characters?(x, y)
  1055.           if !jumping? && normal_priority?
  1056.             $game_map.follower_encount_fg = true
  1057.             encount_switch_set_sub
  1058.             start
  1059.           end
  1060.         end
  1061.       end
  1062.     else
  1063.       simbol_check_event_trigger_touch(x, y)
  1064.     end
  1065.   end
  1066.   #--------------------------------------------------------------------------
  1067.   # ■ 同位置のイベント起動判定
  1068.   #     triggers : トリガーの配列
  1069.   #--------------------------------------------------------------------------
  1070.   def check_event_trigger_here_encount(triggers)
  1071.     if check_event_trigger_here_encount_check($game_player.x,$game_player.y,triggers)
  1072.       $game_map.follower_encount_fg = false
  1073.       return
  1074.     end
  1075.     if F_Setting::FOLLOWER_ENCOUNT_FG
  1076.       $game_player.followers.visible_folloers.each do |follower|
  1077.         if check_event_trigger_here_encount_check(follower.fx,follower.fy,triggers)
  1078.           $game_map.follower_encount_fg = true
  1079.         end
  1080.       end
  1081.     end
  1082.   end
  1083.   #--------------------------------------------------------------------------
  1084.   # ■ 同位置のイベント起動判定 チェック
  1085.   #     triggers : トリガーの配列
  1086.   #--------------------------------------------------------------------------
  1087.   def check_event_trigger_here_encount_check(x,y,triggers)
  1088.     if $game_map.enemy_events.include?(self.id) && $game_self_switches[[@map_id,self.id,"B"]] != true
  1089.       return false if $game_map.interpreter.running?
  1090.       #イベント接触範囲拡張併用?
  1091.       return false unless F_Setting::EVENT_WIDE_COMBINE
  1092.       #フラグ取得
  1093.       if $game_map.wide_event.include?(self.id)
  1094.         num = $game_map.wide_event.index(self.id)
  1095.         # トリガー が一致した場合
  1096.         tmp = event_number_range_check(x, y,$game_map.wide_parameter[num],
  1097.                           $game_map.wide_extend[num]) if trigger_in?(triggers)
  1098.         #ジャンプ中では無く、条件が一致した場合
  1099.         if tmp && !jumping? && (!$game_map.wide_priority[num] or
  1100.                             $game_map.wide_priority[num] && !normal_priority?)
  1101.           encount_switch_set_sub
  1102.           start
  1103.           return true
  1104.         end
  1105.       end
  1106.     end
  1107.     return false
  1108.   end
  1109.   #--------------------------------------------------------------------------
  1110.   # ■ 停止時の更新    一時停止関連 イベント起動していない場合
  1111.   #--------------------------------------------------------------------------
  1112.   alias event_update_stop update_stop
  1113.   def update_stop
  1114.     if message_wait? || $game_map.interpreter.running?
  1115.       if $game_variables[EVENT_CHARACTER_STOP] == 1
  1116.         if !$game_map.enemy_events.include?(self.id)
  1117.           event_update_stop
  1118.           return
  1119.         end
  1120.         super
  1121.         return
  1122.       elsif $game_variables[EVENT_CHARACTER_STOP] == 2
  1123.         super
  1124.         return
  1125.       end
  1126.     end
  1127.     event_update_stop
  1128.   end
  1129.   #--------------------------------------------------------------------------
  1130.   # ■ 通行可能判定
  1131.   #     d : 方向(2,4,6,8)
  1132.   #--------------------------------------------------------------------------
  1133.   def passable?(x, y, d)
  1134.     if $game_map.enemy_events.include?(self.id)
  1135.       #イベント接触範囲拡張 フラグ取得
  1136.       if F_Setting::EVENT_WIDE_COMBINE
  1137.         if $game_map.wide_event.include?(self.id)
  1138.           tmp = false
  1139.           num = $game_map.wide_event.index(self.id)
  1140.           # トリガー [イベントから接触] が一致した場合
  1141.           tmp = event_number_range_check($game_player.x, $game_player.y,
  1142.           $game_map.wide_parameter[num], $game_map.wide_extend[num]) if @trigger == 2
  1143.           return false if tmp && !jumping? && (!$game_map.wide_priority[num] or
  1144.                             $game_map.wide_priority[num] && normal_priority?)
  1145.         end
  1146.       end
  1147.       x2 = $game_map.round_x_with_direction(x, d)
  1148.       y2 = $game_map.round_y_with_direction(y, d)
  1149.       r_id = $game_map.enemy_notenter_region[$game_map.enemy_events.index(self.id)]
  1150.       return false if ENEMY_REGION_SET[r_id].include?($game_map.region_id(x2, y2))
  1151.     end
  1152.     super
  1153.   end
  1154.   #--------------------------------------------------------------------------
  1155.   # ■ 移動タイプ :   離れる
  1156.   #--------------------------------------------------------------------------
  1157.   def move_type_away_from_player
  1158.     if near_the_player?
  1159.       case rand(6)
  1160.       when 0..3;  move_away_from_player
  1161.       when 4;     move_random
  1162.       when 5
  1163.         turn_away_from_player
  1164.         move_forward
  1165.       end
  1166.     else
  1167.       move_random
  1168.     end
  1169.   end
  1170.   #--------------------------------------------------------------------------
  1171.   # ★ 自律移動の更新
  1172.   #--------------------------------------------------------------------------
  1173.   alias wiki_update_self_movement update_self_movement
  1174.   def update_self_movement
  1175.     #イベント能力値による行動変化ある場合
  1176.     if $game_map.enemy_events.include?(self.id) &&
  1177.         $game_map.enemy_forming_flg[$game_map.enemy_events.index(self.id)] >= 0
  1178.       if $game_map.change_action_gap_fg[$game_map.enemy_events.index(self.id)] == 1
  1179.         if near_the_screen? && @stop_count > stop_count_threshold
  1180.           case @move_type
  1181.           when 1;  move_type_random
  1182.           when 2;  move_type_away_from_player
  1183.           when 3;  move_type_custom
  1184.           end
  1185.         end
  1186.         return
  1187.       end
  1188.     end
  1189.     #呼び戻す
  1190.     wiki_update_self_movement
  1191.   end
  1192. end

  1193. #==============================================================================
  1194. # ■ Game_Character
  1195. #------------------------------------------------------------------------------
  1196. #  主に移動ルートなどの処理を追加したキャラクターのクラスです。Game_Player、
  1197. # Game_Follower、GameVehicle、Game_Event のスーパークラスとして使用されます。
  1198. #==============================================================================

  1199. class Game_Character < Game_CharacterBase
  1200.   #--------------------------------------------------------------------------
  1201.   # ● 停止時の更新  イベント起動中の場合
  1202.   #--------------------------------------------------------------------------
  1203.   alias event2_update_stop update_stop
  1204.   def update_stop
  1205.     if message_wait? or $game_map.interpreter.running?
  1206.       if $game_variables[EVENT_CHARACTER_STOP] == 1
  1207.         if self.is_a?(Game_Event) && !$game_map.enemy_events.include?(self.id) &&
  1208.             (@move_route_forcing or $game_map.any_event_starting?)
  1209.           event2_update_stop
  1210.           return
  1211.         end
  1212.         super
  1213.         return
  1214.       elsif $game_variables[EVENT_CHARACTER_STOP] == 2
  1215.         if @move_route_forcing or $game_map.any_event_starting?
  1216.           event2_update_stop
  1217.           return
  1218.         end
  1219.         super
  1220.         return
  1221.       end
  1222.     end
  1223.     event2_update_stop
  1224.   end
  1225.   #--------------------------------------------------------------------------
  1226.   # ■ ウインドウ表示中?
  1227.   #--------------------------------------------------------------------------
  1228.   def message_wait?
  1229.     if  EVENT_CHARACTER_STOP > 0 && $game_variables[EVENT_CHARACTER_STOP] > 0 &&
  1230.                                     $game_variables[EVENT_CHARACTER_STOP] < 3
  1231.       return true if $game_message.visible or $game_message.busy?
  1232.     end
  1233.     return false
  1234.   end
  1235.   #--------------------------------------------------------------------------
  1236.   # ■ エンカウント判定
  1237.   #--------------------------------------------------------------------------
  1238.   def encount_switch_set
  1239.     #エンカウント禁止?
  1240.     return false if $game_party.no_encount?
  1241.     key = [$game_map.map_id, self.id, "B"] #スイッチB
  1242.     if $game_map.enemy_events.include?(self.id) && $game_self_switches[key] != true
  1243.       encount_switch_set_sub
  1244.       return true
  1245.     end
  1246.     return false
  1247.   end
  1248.   #--------------------------------------------------------------------------
  1249.   def encount_switch_set_sub
  1250.     return false if $game_party.no_encount?
  1251.     key = [$game_map.map_id, self.id, "B"] #スイッチB
  1252.     $game_self_switches[key] = true
  1253.     self.direction_fix_change(true)
  1254.     $game_map.turn_inbattle(self.id)
  1255.     $game_map.updete_encount_set_sub($game_map.enemy_events.index(self.id), true)
  1256.   end
  1257. end

  1258. #==============================================================================
  1259. # ■ Game_CharacterBase
  1260. #------------------------------------------------------------------------------
  1261. #  キャラクターを扱う基本のクラスです。全てのキャラクターに共通する、座標やグ
  1262. # ラフィックなどの基本的な情報を保持します。
  1263. #==============================================================================

  1264. class Game_CharacterBase
  1265.   #--------------------------------------------------------------------------
  1266.   # ● 非公開メンバ変数の初期化
  1267.   #--------------------------------------------------------------------------
  1268.   alias wiki_init_private_members init_private_members
  1269.   def init_private_members
  1270.     #呼び戻し
  1271.     wiki_init_private_members
  1272.     @direction_lock = false
  1273.   end
  1274.   #--------------------------------------------------------------------------
  1275.   # ● 指定方向に向き変更
  1276.   #     d : 方向(2,4,6,8)
  1277.   #--------------------------------------------------------------------------
  1278.   alias wiki_set_direction set_direction
  1279.   def set_direction(d)
  1280.     #呼び戻し
  1281.     @stop_count = 0
  1282.     unless @direction_lock
  1283.       wiki_set_direction(d)
  1284.     end
  1285.   end
  1286.   #--------------------------------------------------------------------------
  1287.   # ■ 向き固定フラグ変更
  1288.   #  flg :   true / false
  1289.   #--------------------------------------------------------------------------
  1290.   def direction_fix_change(flg)
  1291.     @direction_lock = flg
  1292.   end
  1293. end

  1294. #==============================================================================
  1295. # ■ Game_Party
  1296. #------------------------------------------------------------------------------
  1297. #  パーティを扱うクラスです。ゴールドやアイテムなどの情報が含まれます。このク
  1298. # ラスのインスタンスは $game_party で参照されます。
  1299. #==============================================================================

  1300. class Game_Party < Game_Unit
  1301.   #--------------------------------------------------------------------------
  1302.   # ■ ステートIDがパーティーにあるか?
  1303.   #--------------------------------------------------------------------------
  1304.   def party_stete?(state_id)
  1305.     if state_id > 0
  1306.       if exists
  1307.         for actor in battle_members
  1308.           #if actor.exist? && actor.state?(state_id)
  1309.           return true if actor.state?(state_id)
  1310.         end
  1311.       end
  1312.     end
  1313.     return false
  1314.   end
  1315.   #--------------------------------------------------------------------------
  1316.   # ■ 遠見状態?
  1317.   #--------------------------------------------------------------------------
  1318.   def all_see?
  1319.     return (party_stete?(NO_ALL_BATTLE) or party_stete?(ALL_SEE_NO_CAUTION) or
  1320.             party_stete?(ALL_SEE))
  1321.   end
  1322.   #--------------------------------------------------------------------------
  1323.   # ■ 敵警戒しない状態?
  1324.   #-------------------------------------------------------------------------
  1325.   def no_caution?
  1326.     return (party_stete?(NO_ALL_BATTLE) or party_stete?(ALL_SEE_NO_CAUTION) or
  1327.             party_stete?(NO_CAUTION_BATTLE) or party_stete?(NO_CAUTION))
  1328.   end
  1329.   #--------------------------------------------------------------------------
  1330.   # ■ エンカウントしない状態?(多分イベントコマンド内でも使用)
  1331.   #--------------------------------------------------------------------------
  1332.   #条件分岐にて : $game_party.no_encount?    << イベントコマンド内書式
  1333.   def no_encount?
  1334.     return (party_stete?(NO_ALL_BATTLE) or party_stete?(NO_CAUTION_BATTLE) or
  1335.             party_stete?(NO_ENCOUNT))
  1336.   end
  1337. end
复制代码
(;´Д`)这就是那个脚本,求大神帮看看有没有什么办法只取用怪物的索敌能力和离开地图后自动刷新这两个功能
谢谢( TдT)
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22928
在线时间
8637 小时
注册时间
2011-12-31
帖子
3367
3
发表于 2015-1-28 13:31:57 | 只看该作者
本帖最后由 tseyik 于 2015-1-28 13:57 编辑

1:可能是日文編碼/簡体字編碼/uncode編碼而導到看来是同一字而其實不是同一字
2:和其他脚本衝突(如WHITE-FLUTE Web的共通脚本)
3:錯誤使用

点评

看楼主的标题,应该是楼主不懂日语,机翻使用说明导致不会用的  发表于 2015-1-30 08:03
VA 无编码问题  发表于 2015-1-30 08:03
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2015-1-26
帖子
6
4
 楼主| 发表于 2015-1-28 13:35:03 | 只看该作者
tseyik 发表于 2015-1-28 14:31
1:可能是日文編碼/簡体字編碼/uncode編碼而導到看来是同一字而其實不是同一字
2:和其他脚本衝突
3:錯誤使用 ...

( TдT)我没有其他的脚本,主要问题应该还是错误使用吧,有办法只取用怪物的索敌效果吗?(;´Д`)
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22928
在线时间
8637 小时
注册时间
2011-12-31
帖子
3367
5
发表于 2015-1-28 14:33:15 | 只看该作者
本帖最后由 tseyik 于 2015-1-28 14:34 编辑
AIipn 发表于 2015-1-28 13:35
( TдT)我没有其他的脚本,主要问题应该还是错误使用吧,有办法只取用怪物的索敌效果吗?(;´Д`) ...


你可試試這脚本
用法
    #在事件名里添加<SensorX>(X = 视野范围)
    #例子: EV001<Sensor4>(事件和主角距離4格内會使D自用開関on)
    #事件第一頁是設定移動方法
 #事件第二頁如D自用開関on成立,設定,靠近玩家戦鬥
  1.     ,#==============================================================================
  2.     # +++ MOG - Event Sensor Range (v1.0) +++
  3.     #==============================================================================
  4.     # By Moghunter
  5.     # http://www.atelier-rgss.com
  6.     #==============================================================================
  7.     # Permite que o evento tenha dois comportamentos, de curta distância e de
  8.     # longa distância.
  9.     #===============================================================================
  10.     #
  11.     #在事件名里添加<SensorX>(X = 视野范围)
  12.     #例子: EV001<Sensor2>
  13.     #
  14.     #===============================================================================
  15.     module MOG_EVENT_SENSOR
  16.       #进入视野以后开启的独立开关
  17.       SENSOR_SELF_SWITCH = "D"
  18.     end

  19.     #===============================================================================
  20.     # ■ GAME EVENT
  21.     #===============================================================================
  22.     class Game_Event < Game_Character
  23.       
  24.       attr_reader   :sensor_range
  25.       
  26.       #--------------------------------------------------------------------------
  27.       # ● Initialize
  28.       #--------------------------------------------------------------------------            
  29.       alias mog_event_sensor_initialize initialize
  30.       def initialize(map_id, event)
  31.           mog_event_sensor_initialize(map_id, event)
  32.           setup_event_sensor
  33.       end
  34.       
  35.       #--------------------------------------------------------------------------
  36.       # ● Setup Event Sensor
  37.       #--------------------------------------------------------------------------         
  38.       def setup_event_sensor
  39.           @sensor_range =  @event.name =~ /<Sensor(\d+)>/ ? $1.to_i : 0
  40.       end  
  41.       
  42.       #--------------------------------------------------------------------------
  43.       # ● Update
  44.       #--------------------------------------------------------------------------            
  45.       alias mog_event_sensor_update update
  46.       def update
  47.           mog_event_sensor_update
  48.           update_event_sensor
  49.       end  
  50.       
  51.       #--------------------------------------------------------------------------
  52.       # ● Update Sensor
  53.       #--------------------------------------------------------------------------        
  54.       def update_event_sensor
  55.           return if @sensor_range == 0
  56.           distance = ($game_player.x - self.x).abs + ($game_player.y - self.y).abs
  57.           enable   = (distance <= @sensor_range)
  58.           key = [$game_map.map_id, self.id, MOG_EVENT_SENSOR::SENSOR_SELF_SWITCH]
  59.           last_enable = $game_self_switches[key]
  60.           execute_sensor_effect(enable,key) if enable != last_enable
  61.         end

  62.       #--------------------------------------------------------------------------
  63.       # ● Execute_Sensor Effect
  64.       #--------------------------------------------------------------------------            
  65.       def execute_sensor_effect(enable,key)      
  66.           @pattern = 0
  67.           @pattern_count = 0               
  68.           $game_self_switches[key] = enable
  69.           self.refresh
  70.       end
  71.       
  72.     end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2015-1-26
帖子
6
6
 楼主| 发表于 2015-1-28 18:05:39 | 只看该作者
tseyik 发表于 2015-1-28 15:33
你可試試這脚本
用法
    #在事件名里添加(X = 视野范围)

这个我曾经在论坛里找到过,但是效果和我希望的不是很相似(;´Д`)
我希望是怪物能有他正面的索敌范围和背面的索敌范围,这个脚本没能实现

点评

5樓的腳本是四面索敌的.正面,左面,右面,背面都索~~  发表于 2015-1-28 18:48
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21604
在线时间
9411 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

7
发表于 2015-1-28 18:31:37 | 只看该作者

点评

谢谢!刚才试了试,虽然不是很懂但是确实可以使用,非常感谢!  发表于 2015-1-29 13:43
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22928
在线时间
8637 小时
注册时间
2011-12-31
帖子
3367
8
发表于 2015-1-28 19:11:53 | 只看该作者
本帖最后由 tseyik 于 2015-1-28 19:44 编辑
AIipn 发表于 2015-1-28 18:05
这个我曾经在论坛里找到过,但是效果和我希望的不是很相似(;´Д`)
我希望是怪物能有他正面的索敌范围和 ...


http://tamurarpgvx.blog137.fc2.com/category8-3.html
イベントの接触エリアを拡大
追加スクリプト 視野
可做到前後不同視界距離
更有設定障害物形成死角



http://canarialt.blog.fc2.com/blog-entry-79.html
WideRangeEvent - イベントの接触範囲を拡大 -
也可做到前後不同視界距離
◆注釈:[接触範囲:
   :■■■
   :■□■
   :■■■
   :■★■
   :■□■
◆注釈:■■■]

点评

谢谢!问题已经得到了解决,非常感谢你的热心帮助!  发表于 2015-1-29 13:44

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-12 05:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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