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

Project1

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

[已经过期] 会日文的高手看下

[复制链接]

Lv1.梦旅人

梦石
0
星屑
134
在线时间
92 小时
注册时间
2009-4-9
帖子
10
跳转到指定楼层
1
发表于 2010-9-17 20:14:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在日网找到的人物跟随脚本,不知道有没高手帮汉化下
  1. #============================================================================
  2. #
  3. # ■パーティーメンバーの追従 □Ver.3.12 □製作者:月紳士
  4. # ・RPGツクールVX用 RGSS2スクリプト
  5. #
  6. #    ●…書き換えメソッド(競合注意) ◎…メソッドのエイリアス ○…新規メソッド
  7. #
  8. #  ※二次配布禁止!配布元には利用規約があります。必ずそちらを見てください。
  9. #----------------------------------------------------------------------------
  10. # 更新履歴
  11. #   Ver.3.12  イベントコマンド・スクリプト全回復時の更新処理を追加。
  12. #   Ver.3.11  パーティー加入時イベント用動作処理を追加。
  13. #   Ver.3.10  フォローメンバーを隠す機能の強化とゲスト表示機能を強化。
  14. #   Ver.3.01  コマンド追加。
  15. #   Ver.3.00  ゲストキャラクター表示機能を追加。
  16. #   Ver.2.03  戦闘テスト時に起きる不具合を修正。
  17. #   Ver.2.02  不具合再修正と処理軽量化。
  18. #   Ver.2.00  仕様見直しと棺桶未使用時の不具合を修正。
  19. #============================================================================
  20. =begin

  21.  このスクリプトは
  22.  パーティーのメンバーを主人公キャラ(先頭キャラ)の後に着いて歩かせる、
  23.  いわいる「隊列歩行」を実現するスクリプトです。

  24.  ・乗り物への乗り込み動作を再現。

  25.  ・簡単に表示数を増やすことができる構造になっており、
  26.   多人数パーティーなどに対応が容易。

  27.  ・某ゲームのように戦闘不能メンバーを棺おけ表示にしたり出来る。

  28.  ・パーティーには実際に参加せず、追従のみをするゲストキャラクターを設定可能。
  29.   ゲストは最後尾だけでなく、先頭にすることも可能。


  30.  以下に使い方を説明します↓

  31. #----------------------------------------------------------------------------

  32.  ●カスタマイズ項目の説明

  33.  まず、カスタマイズ項目の説明をします。
  34.   
  35.   MOVE_ROUTE_FORCING_FOLLOW
  36.    移動ルートの強制時にもパーティーメンバーを追従させるか?
  37.    カスタマイズ項目での設定は初期設定となります。
  38.    ゲーム中は イベントコマンド・スクリプトにて
  39.   
  40.       $game_player.move_route_forcing_follow = true
  41.   
  42.    (もしくは = false) で変更できます。
  43.    = true で常に追従、= false でキー操作時のみとなります。
  44.   
  45.   
  46.   USE_COFFIN
  47.    戦闘不能時に棺おけにするか?
  48.   
  49.    戦闘不能メンバーは隊列が(表示だけですが)変更されます。
  50.    生存者から先頭に並びます。棺桶はその後ろです。

  51.    ちなみに生存者のうち、先頭キャラの取得の仕方は

  52.       $game_party.existing_members[0]
  53.       
  54.     IDの取得であれば
  55.    
  56.       $game_party.existing_members[0].id
  57.       
  58.     です。生存者数なら
  59.   
  60.       $game_party.existing_members[0].size
  61.       
  62.     と、なります。イベントコマンドでの変数取得や条件分岐に。
  63.   
  64.    
  65.   COFFIN_FILE_NAME
  66.    棺おけに使う画像のファイル名です。
  67.    = "$Coffin"  等と、必ず "" で囲ってください。
  68.   
  69.   
  70.   COFFIN_FILE_INDEX
  71.     棺おけに使う画像ファイルのインデックスです。
  72.    
  73.   
  74.   DISPLAY_MEMBERS
  75.     表示するメンバーの最大数です。
  76.    
  77.     多人数パーティースクリプトなどで数をカスタマイズしている場合は
  78.     戦闘メンバーの数にあわせると良いと思います。
  79.    
  80.     ゲストメンバーを使用する場合は、ゲーム中における
  81.     パーティーメンバー+ゲストメンバーの最大数にしておく必要があります。

  82. #----------------------------------------------------------------------------

  83.  ●イベント時の追従キャラクターの操作

  84.  イベントコマンド・移動ルートの設定やフキダシ表示をメンバーに行うには
  85.  「移動ルートの設定」コマンドより前にイベントコマンド・スクリプトで
  86.  
  87.      change_this_event(1)
  88.      
  89.   と実行すると、各スクリプトでの「このイベント」の対象が
  90.   指定順番(上記括弧内の 1 の部分→追従順で1番=パーティー先頭から2番目)の
  91.  キャラクターへの指示となります。
  92.   ちなみに、0 番は先頭キャラ(プレイヤーへの指示と同じ)、
  93.    -1 で元の「このイベント」に戻ります。
  94.  
  95.    ※ この対象変更設定はページ内のみ有効なので
  96.     別ページならその都度、対象を変更してから行う必要がありますが、
  97.     他ページの為に実行後にいちいち元に戻す、という手間はありません。

  98.  棺桶状態での表示(カスタマイズ項目参照)時、指定はアクターの隊列順番ではなく
  99.  生存者によって並び直した見た目の順番に対して、
  100.  単純に「先頭から何番目に表示されているか」で指定されます。
  101.  (棺桶であっても。change_this_event(1) ならとにかく先頭から2番目のキャラ)
  102.  
  103. #--------------------------------------------------------------------------
  104.  
  105.  ●追従キャラクター非表示

  106.  追従キャラクターを非表示にするには、イベントコマンド・スクリプトにて

  107.      follow_member_off
  108.      
  109.   と記入し実行します。
  110.      
  111.      follow_member_on

  112.  とすれば、追従キャラクターを表示するように戻すことが出来ます。

  113.  また、

  114.      follow_member_off(2)
  115.      
  116.   とすると、「パーティー2番目までを表示」という風に
  117.   表示する人数、隠す人数を調節できます。
  118.   ただし後述の表示最大人数の設定を超えて表示させることは出来ません。
  119.   
  120.     follow_member_off(1) は follow_member_off と同機能、
  121.     follow_member_off(0) は先頭キャラを含めて全員を隠します。
  122.  
  123. #--------------------------------------------------------------------------

  124.  ●ゲストメンバーの表示

  125.  実際にパーティーには加入せず、
  126.  追従表示だけをおこなうキャラクターを設定できます。

  127.  加入させたい時は
  128.  イベントコマンド・スクリプトにて

  129.      add_guest_member("People1", 1)
  130.      
  131.   というようにスクリプト実行させます。

  132.   ( )内にファイル名とインデックスを記入することでキャラクター指定をします。
  133.   "People1" の部分がファイル名です。Charactersフォルダ内のファイルです。
  134.   拡張子はいりませんが、ファイル名を "" で閉じるのを忘れずに。
  135.   その後の半角数字でインデックスを記入します。例だと 1 の部分です。
  136.   
  137.   ゲストキャラクターを外す場合は、

  138.      remove_guest_member("People1", 1)
  139.  
  140.  と実行させます。このコマンドは
  141.  同名・同インデックスのゲストキャラクターがいる場合のみ有効です。
  142.  
  143.      clear_guest_member
  144.      
  145.   とすればゲストキャラクターを一括で消し、初期状態に戻せます。

  146.   ゲストキャラクターを表示できるのは
  147.   追従キャラクターの表示最大数までとなります。
  148.   
  149.   ゲストメンバーはパーティーメンバーの後ろについて行きますが
  150.   ゲストメンバーを先頭に、パーティーメンバーを後に続かせる事も出来ます。
  151.   
  152.      change_guest_member_order
  153.      
  154.   とイベントコマンド・スクリプトを実行すると
  155.   ゲストメンバーとパーティーメンバーの並びが逆転します。
  156.   (再度の実行で元にもどります)

  157. #--------------------------------------------------------------------------

  158.  ●パーティーメンバーを個別に非表示

  159.  パーティーメンバーの歩行画像を「なし」にした場合、
  160.  そのキャラクターの隊列表示はされず、
  161.  それより後ろのパーティーメンバーやゲストが次に続きます。
  162.  
  163.  隊列に参加させたくないアクターは歩行画像を「なし」にしてみてください。

  164. =end

  165. #==============================================================================
  166. # □ カスタマイズ項目
  167. #==============================================================================

  168. module Party_Member_Follow
  169.   
  170.   MOVE_ROUTE_FORCING_FOLLOW = false
  171.   # 移動ルートの強制時にもパーティーメンバーを追従させるか?(初期設定)

  172.   USE_COFFIN = true
  173.   # 戦闘不能時に棺おけにするか?
  174.   
  175.   COFFIN_FILE_NAME = "$Coffin"
  176.   # 棺おけに使う画像のファイル名。
  177.   
  178.   COFFIN_FILE_INDEX = 0
  179.   # 棺おけに使う画像ファイルのインデックス。
  180.   
  181.   DISPLAY_MEMBERS = 4
  182.   # 表示するメンバーの最大数。
  183.   
  184. end
  185.   
  186. #==============================================================================
  187. # ■ Game_Party
  188. #------------------------------------------------------------------------------
  189. #  パーティを扱うクラスです。ゴールドやアイテムなどの情報が含まれます。このク
  190. # ラスのインスタンスは $game_party で参照されます。
  191. #==============================================================================

  192. class Game_Party < Game_Unit
  193.   #--------------------------------------------------------------------------
  194.   # ○ 公開インスタンス変数
  195.   #--------------------------------------------------------------------------
  196.   attr_accessor :follow_member
  197.   attr_reader   :guest_member
  198.   attr_accessor :guest_head
  199.   #--------------------------------------------------------------------------
  200.   # ◎ 初期パーティのセットアップ
  201.   #--------------------------------------------------------------------------
  202.   alias tig_pmf_setup_starting_members setup_starting_members
  203.   def setup_starting_members
  204.     tig_pmf_setup_starting_members
  205.     @guest_member = []
  206.     @guest_head = false
  207.     create_follow_member
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ○ フォローメンバーの作成
  211.   #--------------------------------------------------------------------------
  212.   def create_follow_member
  213.     @follow_member = []
  214.     (Party_Member_Follow::DISPLAY_MEMBERS - 1).times do |i|
  215.       @follow_member.push(Game_Follow_Members.new(i))
  216.     end
  217.     character_graphic_refresh
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ○ パーティーの歩行グラフィックのリフレッシュ
  221.   #--------------------------------------------------------------------------
  222.   def character_graphic_refresh
  223.     $game_player.character_graphic_refresh
  224.     @follow_member.each{|i|i.character_graphic_refresh}
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ○ 歩行表示させるメンバーの取得
  228.   #--------------------------------------------------------------------------
  229.   def display_follow_member
  230.     result = []
  231.     for actor in existing_members
  232.       next if actor.character_name == ""
  233.       result.push(actor)
  234.     end
  235.     if @guest_head
  236.       result = @guest_member + result
  237.     else
  238.       result += @guest_member
  239.     end
  240.     return result
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ○ 表示させるメンバーサイズの取得
  244.   #--------------------------------------------------------------------------
  245.   def display_member_size
  246.     result = []
  247.     for actor in members
  248.       next if actor.character_name == ""
  249.       result.push(actor)
  250.     end
  251.     result += @guest_member
  252.     return result.size
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ○ フォローメンバー追従
  256.   #--------------------------------------------------------------------------
  257.   def follow_member_target_move
  258.     gathered = true
  259.     @follow_member.each{|i|gathered = false unless i.move_toward_target_update}
  260.     if gathered  # 集合が完了した場合
  261.       $game_player.follow_member_gathering = false  # 集合中フラグのオフ
  262.     end
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ○ フォローメンバーをプレイヤーキャラクターに重ねる
  266.   #--------------------------------------------------------------------------
  267.   def follow_member_stack
  268.     @follow_member.each{|i|i.moveto_player}
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ○ ゲストキャラクターをパーティーに加入させる
  272.   #--------------------------------------------------------------------------
  273.   def add_guest_member(file_name, index)
  274.     @guest_member.push(Guest_Members.new(file_name, index))
  275.     character_graphic_refresh
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ○ ゲストキャラクターをパーティーから外す
  279.   #--------------------------------------------------------------------------
  280.   def remove_guest_member(file_name, index)
  281.     for i in 0...@guest_member.size
  282.       if @guest_member[i].character_name == file_name and
  283.          @guest_member[i].character_index == index
  284.         @guest_member[i] = nil
  285.       end
  286.     end
  287.     @guest_member.compact!
  288.     character_graphic_refresh
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ○ ゲストキャラクターをクリアする
  292.   #--------------------------------------------------------------------------
  293.   def clear_guest_member
  294.     @guest_member =[]
  295.     character_graphic_refresh
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ○ ゲストキャラクターとパーティーメンバーの並びを逆転する
  299.   #--------------------------------------------------------------------------
  300.   def change_guest_member_order(order = nil)
  301.     if order == nil
  302.       @guest_head = @guest_head ? false : true # フラグ反転
  303.     else
  304.       @guest_head = order
  305.     end
  306.     character_graphic_refresh
  307.   end
  308. end

  309. #==============================================================================
  310. # ■ Game_Map
  311. #------------------------------------------------------------------------------
  312. #  マップを扱うクラスです。スクロールや通行可能判定などの機能を持っています。
  313. # このクラスのインスタンスは $game_map で参照されます。
  314. #==============================================================================

  315. class Game_Map
  316.   #--------------------------------------------------------------------------
  317.   # ◎ リフレッシュ
  318.   #--------------------------------------------------------------------------
  319.   alias tig_pmf_refresh refresh
  320.   def refresh
  321.     tig_pmf_refresh
  322.     $game_party.character_graphic_refresh
  323.   end
  324. end
  325.   
  326. #==============================================================================
  327. # ■ Game_Character
  328. #------------------------------------------------------------------------------
  329. #  キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event
  330. # クラスのスーパークラスとして使用されます。
  331. #==============================================================================

  332. class Game_Character
  333.   #--------------------------------------------------------------------------
  334.   # ● 通行可能判定
  335.   #     x : X 座標
  336.   #     y : Y 座標
  337.   #--------------------------------------------------------------------------
  338.   def passable?(x, y)
  339.     x = $game_map.round_x(x)                        # 横方向ループ補正
  340.     y = $game_map.round_y(y)                        # 縦方向ループ補正
  341.     return false unless $game_map.valid?(x, y)      # マップ外?
  342.     return true if @through or debug_through?       # すり抜け ON?
  343.     return false unless map_passable?(x, y)         # マップが通行不能?
  344.     return false if collide_with_characters?(x, y)  # キャラクターに衝突?
  345.     return false if collide_with_follow_member(x, y)  ## 追加部分
  346.     return true                                     # 通行可
  347.   end
  348.   #--------------------------------------------------------------------------
  349.   # ○ フォローメンバーとの衝突判定
  350.   #--------------------------------------------------------------------------
  351.   def collide_with_follow_member(x, y)
  352.     return false if self == $game_player
  353.     $game_party.follow_member.each do |follow_member|
  354.       next if follow_member == self
  355.       return true if follow_member.pos_nt?(x, y)
  356.     end
  357.     return false
  358.   end
  359.   #--------------------------------------------------------------------------
  360.   # ○ 指定座標に近づく
  361.   #--------------------------------------------------------------------------
  362.   def move_toward_coordinates(x, y)
  363.     sx = @x - x
  364.     if $game_map.loop_horizontal?         # 横にループしているとき
  365.       if sx.abs > $game_map.width / 2     # 絶対値がマップの半分より大きい?
  366.         sx -= $game_map.width             # マップの幅を引く
  367.       end
  368.     end
  369.     sy = @y - y
  370.     if $game_map.loop_vertical?           # 縦にループしているとき
  371.       if sy.abs > $game_map.height / 2    # 絶対値がマップの半分より大きい?
  372.         sy -= $game_map.height            # マップの高さを引く
  373.       end
  374.     end
  375.     if sx != 0 or sy != 0
  376.       if sx.abs > sy.abs                  # 横の距離のほうが長い
  377.         sx > 0 ? move_left : move_right   # 左右方向を優先
  378.         if @move_failed and sy != 0
  379.           sy > 0 ? move_up : move_down
  380.         end
  381.       else                                # 縦の距離のほうが長いか等しい
  382.         sy > 0 ? move_up : move_down      # 上下方向を優先
  383.         if @move_failed and sx != 0
  384.           sx > 0 ? move_left : move_right
  385.         end
  386.       end
  387.     end
  388.   end
  389.   #--------------------------------------------------------------------------
  390.   # ○ 指定キャラクターに近づく
  391.   #--------------------------------------------------------------------------
  392.   def move_toward_pos(character)
  393.     move_toward_coordinates(character.x, character.y)
  394.   end
  395.   #--------------------------------------------------------------------------
  396.   # ○ プレイヤー正面からパーティー最後尾へ
  397.   #--------------------------------------------------------------------------
  398.   # ※ イベントキャラクターをパーティーに追加する際の演出に。
  399.   #     イベントコマンド・移動ルートの設定内の、スクリプトで実行。
  400.   #     パーティー表示最大数と同じ数だけ実行設定しておく必要あり。
  401.   #     「このイベント」・「移動終了までウエイト」の設定、
  402.   #     実行前にすり抜けONにする、実行後にイベント位置を(必要なら)戻す
  403.   #     等も忘れずに。
  404.   #--------------------------------------------------------------------------
  405.   def party_join
  406.     member = $game_party.follow_member
  407.     return if @x == member[$game_party.display_follow_member.size-1].x and
  408.               @y == member[$game_party.display_follow_member.size-1].y
  409.     ($game_party.display_follow_member.size - 2).downto(0) do |i|
  410.       if @x == member[i].x and @y == member[i].y
  411.         move_toward_pos(member[i+1])
  412.         return
  413.       end
  414.     end
  415.     if @x == $game_player.x and @y == $game_player.y
  416.       move_toward_pos(member[0])
  417.       return
  418.     end
  419.     move_toward_pos($game_player)
  420.   end
  421. end
  422.   
  423. #==============================================================================
  424. # ■ Game_Player
  425. #------------------------------------------------------------------------------
  426. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  427. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  428. #==============================================================================

  429. class Game_Player < Game_Character
  430.   #--------------------------------------------------------------------------
  431.   # ○ 公開インスタンス変数
  432.   #--------------------------------------------------------------------------
  433.   attr_accessor :follow_member_gathering
  434.   attr_reader   :move_speed
  435.   attr_reader   :vehicle_getting_on
  436.   attr_accessor :move_route_forcing_follow
  437.   #--------------------------------------------------------------------------
  438.   # ◎ オブジェクト初期化
  439.   #--------------------------------------------------------------------------
  440.   alias tig_pmf_initialize initialize
  441.   def initialize
  442.     tig_pmf_initialize
  443.     @follow_member_gathering = false
  444.     @move_route_forcing_follow = Party_Member_Follow::MOVE_ROUTE_FORCING_FOLLOW
  445.   end
  446.   #--------------------------------------------------------------------------
  447.   # ◎ フレーム更新
  448.   #--------------------------------------------------------------------------
  449.   alias tig_pmf_pl_update update
  450.   def update
  451.     tig_pmf_pl_update
  452.     $game_party.follow_member_target_move if moving? and @move_route_forcing_follow
  453.   end
  454.   #--------------------------------------------------------------------------
  455.   # ◎ 方向ボタン入力による移動処理
  456.   #--------------------------------------------------------------------------
  457.   alias tig_pmf_move_by_input move_by_input
  458.   def move_by_input
  459.     tig_pmf_move_by_input
  460.     if Input.dir4 != 0
  461.       $game_party.follow_member_target_move if moving? and not @move_route_forcing_follow
  462.     end
  463.   end
  464.   #--------------------------------------------------------------------------
  465.   # ◎ 移動可能判定
  466.   #--------------------------------------------------------------------------
  467.   alias tig_pmf_movable? movable?
  468.   def movable?
  469.     return false unless tig_pmf_movable?
  470.     return false if @follow_member_gathering
  471.     return false if @vehicle_getting_off_wait
  472.     return true
  473.   end
  474.   #--------------------------------------------------------------------------
  475.   # ◎ フレーム更新
  476.   #--------------------------------------------------------------------------
  477.   alias tig_pmf_update update
  478.   def update
  479.     tig_pmf_update
  480.     if @follow_member_gathering
  481.       $game_party.follow_member_target_move
  482.     end
  483.     $game_party.follow_member.each{|i|i.update}
  484.     if @vehicle_getting_on and not moving? and
  485.        now_vehicle and now_vehicle.pos?(@x, @y)
  486.       @vehicle_hide = true
  487.     end
  488.     if @vehicle_getting_off_wait and now_vehicle == nil
  489.       $game_party.follow_member.each{|i|i.transparent = false}
  490.       $game_party.follow_member_stack
  491.       @vehicle_getting_off_wait = false
  492.     end
  493.   end
  494.   #--------------------------------------------------------------------------
  495.   # ○ 透明化の取得
  496.   #--------------------------------------------------------------------------
  497.   def transparent
  498.     return true if @vehicle_hide and not now_vehicle_riding_type?
  499.     return @transparent
  500.   end
  501.   #--------------------------------------------------------------------------
  502.   # ○ 歩行グラフィックのリフレッシュ
  503.   #  ※ 生存者が先頭になるように歩行グラフィックを表示する機能あり。
  504.   #     全員死亡している場合は棺にする
  505.   #--------------------------------------------------------------------------
  506.   def character_graphic_refresh
  507.     @pmf_character_name = ""
  508.     @pmf_character_index = 0
  509.    
  510.     unless Party_Member_Follow::USE_COFFIN
  511.       unless $game_party.display_follow_member.empty?
  512.         @pmf_character_name = $game_party.display_follow_member[0].character_name
  513.         @pmf_character_index = $game_party.display_follow_member[0].character_index
  514.       end
  515.       return
  516.     end
  517.    
  518.     if $game_party.display_follow_member[0] == nil
  519.       if $game_party.display_member_size >= 1
  520.         @pmf_character_name = Party_Member_Follow::COFFIN_FILE_NAME
  521.         @pmf_character_index = Party_Member_Follow::COFFIN_FILE_INDEX
  522.       end
  523.     else
  524.       @pmf_character_name = $game_party.display_follow_member[0].character_name
  525.       @pmf_character_index = $game_party.display_follow_member[0].character_index
  526.     end
  527.   end
  528.   #--------------------------------------------------------------------------
  529.   # ○ 歩行グラフィック ファイル名
  530.   #--------------------------------------------------------------------------
  531.   def character_name
  532.     return @pmf_character_name
  533.   end
  534.   #--------------------------------------------------------------------------
  535.   # ○ 歩行グラフィック インデックス
  536.   #--------------------------------------------------------------------------
  537.   def character_index
  538.     return @pmf_character_index
  539.   end
  540.   #--------------------------------------------------------------------------
  541.   # ◎ 指定位置に移動
  542.   #     x : X 座標
  543.   #     y : Y 座標
  544.   #--------------------------------------------------------------------------
  545.   alias tig_pmf_moveto moveto
  546.   def moveto(x, y)
  547.     tig_pmf_moveto(x, y)
  548.     $game_party.follow_member_stack
  549.   end
  550.   #--------------------------------------------------------------------------
  551.   # ● 乗り物の乗降
  552.   #--------------------------------------------------------------------------
  553.   def get_on_off_vehicle
  554.     return false unless movable?
  555.     if in_vehicle?
  556.       result = get_off_vehicle                    ## 変更部分
  557.       if result                                   ##  結果に合わせてフラグオン
  558.         @vehicle_getting_off_wait = true          ##
  559.         @vehicle_hide = false                     ##
  560.       end                                         ##
  561.       return result
  562.     else
  563.       result = get_on_vehicle                     ## 変更部分
  564.       @follow_member_gathering = true if result   ##  結果に合わせてフラグオン
  565.       return result                               ##
  566.     end
  567.   end
  568.   #--------------------------------------------------------------------------
  569.   # ◎ 乗り物の処理
  570.   #--------------------------------------------------------------------------
  571.   alias tig_pmf_update_vehicle update_vehicle
  572.   def update_vehicle
  573.     return if @follow_member_gathering
  574.     tig_pmf_update_vehicle
  575.   end
  576.   #--------------------------------------------------------------------------
  577.   # ○ 今乗っている乗り物
  578.   #--------------------------------------------------------------------------
  579.   def now_vehicle
  580.     return nil if @vehicle_type == -1
  581.     return $game_map.vehicles[@vehicle_type]
  582.   end
  583.   #--------------------------------------------------------------------------
  584.   # ○ 今乗っている乗り物が騎乗タイプか?(乗り物拡張用ダミー)
  585.   #--------------------------------------------------------------------------
  586.   def now_vehicle_riding_type?
  587.     return false
  588.   end
  589. end

  590. #==============================================================================
  591. # ■ Game_Vehicle
  592. #------------------------------------------------------------------------------
  593. #  乗り物を扱うクラスです。このクラスは Game_Map クラスの内部で使用されます。
  594. # 現在のマップに乗り物がないときは、マップ座標 (-1,-1) に設定されます。
  595. #==============================================================================

  596. class Game_Vehicle < Game_Character
  597.   #--------------------------------------------------------------------------
  598.   # ● フレーム更新
  599.   #--------------------------------------------------------------------------
  600.   def update
  601.     super
  602.     if @type == 2               # 飛行船の場合
  603.       if @driving
  604.         return if $game_player.follow_member_gathering  ### 追加部分
  605.         if @altitude < MAX_ALTITUDE
  606.           @altitude += 1        # 高度を上げる
  607.         end
  608.       elsif @altitude > 0
  609.         @altitude -= 1          # 高度を下げる
  610.         if @altitude == 0
  611.           @priority_type = 0    # プライオリティを「通常キャラの下」に戻す
  612.         end
  613.       end
  614.     end
  615.   end
  616. end

  617. #==============================================================================
  618. # □ Game_Follow_Members
  619. #------------------------------------------------------------------------------
  620. #  主人公キャラ(先頭キャラ)の後を追従するパーティーメンバーを扱うクラスです。
  621. #==============================================================================

  622. class Game_Follow_Members < Game_Character
  623.   #--------------------------------------------------------------------------
  624.   # ○ 公開インスタンス変数
  625.   #--------------------------------------------------------------------------
  626.   attr_reader   :index
  627.   #--------------------------------------------------------------------------
  628.   # ○ オブジェクト初期化
  629.   #--------------------------------------------------------------------------
  630.   def initialize(order)
  631.     super()
  632.     @order = order
  633.     @target_x = $game_player.x
  634.     @target_y = $game_player.y
  635.     @next_target_x = $game_player.x
  636.     @next_target_y = $game_player.y
  637.   end
  638.   #--------------------------------------------------------------------------
  639.   # ○ 歩行グラフィックのリフレッシュ
  640.   #  ※ 生存者が先頭になるように歩行グラフィックを表示する機能あり。
  641.   #     全員死亡している場合は棺にする
  642.   #--------------------------------------------------------------------------
  643.   def character_graphic_refresh
  644.     @pmf_character_name = ""
  645.     @pmf_character_index = 0
  646.    
  647.     unless Party_Member_Follow::USE_COFFIN
  648.       if $game_party.display_follow_member[@order+1]
  649.         @pmf_character_name = $game_party.display_follow_member[@order+1].character_name
  650.         @pmf_character_index = $game_party.display_follow_member[@order+1].character_index
  651.       end
  652.       return
  653.     end
  654.    
  655.     if $game_party.display_follow_member[@order+1] == nil
  656.       if $game_party.display_member_size >= @order+2
  657.         @pmf_character_name = Party_Member_Follow::COFFIN_FILE_NAME
  658.         @pmf_character_index = Party_Member_Follow::COFFIN_FILE_INDEX
  659.       end
  660.     else
  661.       @pmf_character_name = $game_party.display_follow_member[@order+1].character_name
  662.       @pmf_character_index = $game_party.display_follow_member[@order+1].character_index
  663.     end
  664.   end
  665.   #--------------------------------------------------------------------------
  666.   # ○ 歩行グラフィック ファイル名
  667.   #--------------------------------------------------------------------------
  668.   def character_name
  669.     return @pmf_character_name
  670.   end
  671.   #--------------------------------------------------------------------------
  672.   # ○ 歩行グラフィック インデックス
  673.   #--------------------------------------------------------------------------
  674.   def character_index
  675.     return @pmf_character_index
  676.   end
  677.   #--------------------------------------------------------------------------
  678.   # ○ フレーム更新
  679.   #--------------------------------------------------------------------------
  680.   def update
  681.     if $game_player.vehicle_getting_on and not moving? and
  682.        $game_player.now_vehicle and $game_player.now_vehicle.pos?(@x, @y)
  683.       @transparent = true
  684.     end
  685.     @move_speed = $game_player.move_speed
  686.     super
  687.   end
  688.   #--------------------------------------------------------------------------
  689.   # ● 座標一致と「すり抜け OFF」判定 (nt = No Through)
  690.   #--------------------------------------------------------------------------
  691.   def pos_nt?(x, y)
  692.     return false if @transparent
  693.     return (pos?(x, y) and not @through)
  694.   end
  695.   #--------------------------------------------------------------------------
  696.   # ○ ダッシュ状態判定
  697.   #--------------------------------------------------------------------------
  698.   def dash?
  699.     return false if @move_route_forcing
  700.     return false if $game_player.follow_member_gathering
  701.     return $game_player.dash?
  702.   end
  703.   #--------------------------------------------------------------------------
  704.   # ○ プレイヤーの位置とそろえる
  705.   #--------------------------------------------------------------------------
  706.   def moveto_player
  707.     moveto($game_player.x, $game_player.y)
  708.     @target_x = $game_player.x
  709.     @target_y = $game_player.y
  710.     @next_target_x = $game_player.x
  711.     @next_target_y = $game_player.y
  712.     @direction = $game_player.direction
  713.   end
  714.   #--------------------------------------------------------------------------
  715.   # ○ 追従するキャラクターの取得
  716.   #--------------------------------------------------------------------------
  717.   def target_character
  718.     if @order == 0
  719.       return $game_player
  720.     else
  721.       return $game_party.follow_member[@order-1]
  722.     end
  723.   end
  724.   #--------------------------------------------------------------------------
  725.   # ○ 追従の更新
  726.   #  ※ 追従が完了している場合は true を返す
  727.   #--------------------------------------------------------------------------
  728.   def move_toward_target_update
  729.     return false if moving?
  730.     if @x == target_character.x and @x == @next_target_x and
  731.        @y == target_character.y and @y == @next_target_y
  732.       return true
  733.     end
  734.     if $game_player.move_route_forcing and
  735.        not $game_player.move_route_forcing_follow
  736.       return true
  737.     end
  738.     @target_x = @next_target_x
  739.     @target_y = @next_target_y
  740.     @next_target_x = target_character.x
  741.     @next_target_y = target_character.y
  742.     if @target_x == @next_target_x and @target_y == @next_target_y
  743.       return if target_character.moving?
  744.     end      
  745.     move_toward_target
  746.     return false
  747.   end
  748.   #--------------------------------------------------------------------------
  749.   # ○ 追従すべきポイントへの X 距離計算
  750.   #--------------------------------------------------------------------------
  751.   def distance_x_target
  752.     sx = @x - @target_x
  753.     if $game_map.loop_horizontal?         # 横にループしているとき
  754.       if sx.abs > $game_map.width / 2     # 絶対値がマップの半分より大きい?
  755.         sx += $game_map.width             # マップの幅を足す
  756.       end
  757.     end
  758.     return sx
  759.   end
  760.   #--------------------------------------------------------------------------
  761.   # ○ 追従すべきポイントへの Y 距離計算
  762.   #--------------------------------------------------------------------------
  763.   def distance_y_target
  764.     sy = @y - @target_y
  765.     if $game_map.loop_vertical?           # 縦にループしているとき
  766.       if sy.abs > $game_map.height / 2    # 絶対値がマップの半分より大きい?
  767.         sy += $game_map.height            # マップの高さを足す
  768.       end
  769.     end
  770.     return sy
  771.   end
  772.   #--------------------------------------------------------------------------
  773.   # ○ 追従すべきポイントへ近づく
  774.   #--------------------------------------------------------------------------
  775.   def move_toward_target
  776.     @through = true                       # 追従歩行中はすり抜け判定
  777.     sx = distance_x_target
  778.     sy = distance_y_target
  779.     if sx != 0 or sy != 0
  780.       if sx.abs > sy.abs                  # 横の距離のほうが長い
  781.         sx > 0 ? move_left : move_right   # 左右方向を優先
  782.         if @move_failed and sy != 0
  783.           sy > 0 ? move_up : move_down
  784.         end
  785.       else                                # 縦の距離のほうが長いか等しい
  786.         sy > 0 ? move_up : move_down      # 上下方向を優先
  787.         if @move_failed and sx != 0
  788.           sx > 0 ? move_left : move_right
  789.         end
  790.       end
  791.     end
  792.     @through = $game_player.through
  793.   end
  794.   #--------------------------------------------------------------------------
  795.   # ● 接触イベントの起動判定
  796.   #--------------------------------------------------------------------------
  797.   def check_event_trigger_touch(x, y)
  798.     return false
  799.   end
  800.   #--------------------------------------------------------------------------
  801.   # ○ プレイヤーの対面に移動
  802.   #--------------------------------------------------------------------------
  803.   def set_pos_player_facing
  804.     x = $game_map.x_with_direction($game_player.x, $game_player.direction)
  805.     y = $game_map.y_with_direction($game_player.y, $game_player.direction)
  806.     moveto(x, y)
  807.     @direction = 10 - $game_player.direction
  808.   end
  809. end

  810. #==============================================================================
  811. # □ Guest_Members
  812. #------------------------------------------------------------------------------
  813. #  歩行表示のみをするゲストメンバーを扱うクラスです。
  814. #==============================================================================

  815. class Guest_Members
  816.   #--------------------------------------------------------------------------
  817.   # ○ 公開インスタンス変数
  818.   #--------------------------------------------------------------------------
  819.   attr_reader   :character_name           # 歩行グラフィック ファイル名
  820.   attr_reader   :character_index          # 歩行グラフィック インデックス
  821.   #--------------------------------------------------------------------------
  822.   # ○ オブジェクト初期化
  823.   #--------------------------------------------------------------------------
  824.   def initialize(file_name, index)
  825.     @character_name = file_name
  826.     @character_index = index
  827.   end
  828. end

  829. #==============================================================================
  830. # ■ Spriteset_Map
  831. #------------------------------------------------------------------------------
  832. #  マップ画面のスプライトやタイルマップなどをまとめたクラスです。このクラスは
  833. # Scene_Map クラスの内部で使用されます。
  834. #==============================================================================

  835. class Spriteset_Map
  836.   #--------------------------------------------------------------------------
  837.   # ● キャラクタースプライトの作成
  838.   #--------------------------------------------------------------------------
  839.   def create_characters
  840.     @character_sprites = []
  841.     for i in $game_map.events.keys.sort
  842.       sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
  843.       @character_sprites.push(sprite)
  844.     end
  845.     for vehicle in $game_map.vehicles
  846.       sprite = Sprite_Character.new(@viewport1, vehicle)
  847.       @character_sprites.push(sprite)
  848.     end
  849.    
  850.     create_follow_members    ### 追加部分
  851.    
  852.     @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
  853.   end
  854.   #--------------------------------------------------------------------------
  855.   # ○ キャラクタースプライトの作成
  856.   #--------------------------------------------------------------------------
  857.   def create_follow_members
  858.     for members in $game_party.follow_member.reverse
  859.       sprite = Sprite_Character.new(@viewport1, members)
  860.       @character_sprites.push(sprite)
  861.     end
  862.   end
  863. end

  864. #==============================================================================
  865. # ■ Game_Interpreter
  866. #------------------------------------------------------------------------------
  867. #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
  868. # Game_Troop クラス、Game_Event クラスの内部で使用されます。
  869. #==============================================================================

  870. class Game_Interpreter
  871.   #--------------------------------------------------------------------------
  872.   # ◎ イベントのセットアップ
  873.   #     list     : 実行内容
  874.   #     event_id : イベント ID
  875.   #--------------------------------------------------------------------------
  876.   alias tig_pmf_clear clear
  877.   def clear
  878.     tig_pmf_clear
  879.     @this_event = -1
  880.   end
  881.   #--------------------------------------------------------------------------
  882.   # ◎ ステートの変更
  883.   #--------------------------------------------------------------------------
  884.   alias tig_pmf_command_313 command_313
  885.   def command_313
  886.     tig_pmf_command_313
  887.     $game_party.character_graphic_refresh
  888.     return true
  889.   end
  890.   #--------------------------------------------------------------------------
  891.   # ◎ 全回復
  892.   #--------------------------------------------------------------------------
  893.   alias tig_pmf_command_314 command_314
  894.   def command_314
  895.     tig_pmf_command_314
  896.     $game_party.character_graphic_refresh
  897.     return true
  898.   end
  899.   #--------------------------------------------------------------------------
  900.   # ● キャラクターの取得
  901.   #--------------------------------------------------------------------------
  902.   def get_character(param)
  903.     case param
  904.     when -1   # プレイヤー
  905.       return $game_player
  906.     when 0    # このイベント
  907.       case @this_event
  908.       when -1
  909.         events = $game_map.events
  910.         return events == nil ? nil : events[@event_id]
  911.       when 0
  912.         return $game_player
  913.       else
  914.         return $game_party.follow_member[@this_event-1]
  915.       end
  916.     else      # 特定のイベント
  917.       events = $game_map.events
  918.       return events == nil ? nil : events[param]
  919.     end
  920.   end
  921.   #--------------------------------------------------------------------------
  922.   # ○ 「このイベント」の対象変更
  923.   #--------------------------------------------------------------------------
  924.   def change_this_event(number)
  925.     @this_event = number
  926.   end
  927.   #--------------------------------------------------------------------------
  928.   # ○ 追従キャラクターの表示
  929.   #--------------------------------------------------------------------------
  930.   def follow_member_on
  931.     $game_player.transparent = false
  932.     $game_party.follow_member.each{|i|i.transparent = false}
  933.   end
  934.   #--------------------------------------------------------------------------
  935.   # ○ 追従キャラクターの非表示
  936.   #--------------------------------------------------------------------------
  937.   def follow_member_off(n = nil)
  938.     if n == nil
  939.       $game_player.transparent = false
  940.       $game_party.follow_member.each{|i|i.transparent = true}
  941.     else
  942.       case n
  943.       when 0
  944.         $game_player.transparent = true
  945.         $game_party.follow_member.each{|i|i.transparent = true}
  946.       when 1
  947.         $game_player.transparent = false
  948.         $game_party.follow_member.each{|i|i.transparent = true}
  949.       else
  950.         $game_player.transparent = false
  951.         $game_party.follow_member.each{|i|i.transparent = true}
  952.         for i in 0..(n-2)
  953.           $game_party.follow_member[i].transparent = false
  954.         end
  955.       end
  956.     end
  957.   end
  958.   #--------------------------------------------------------------------------
  959.   # ○ ゲストキャラクターをパーティーに加入させる
  960.   #--------------------------------------------------------------------------
  961.   def add_guest_member(file_name, index)
  962.     $game_party.add_guest_member(file_name, index)
  963.   end
  964.   #--------------------------------------------------------------------------
  965.   # ○ ゲストキャラクターをパーティーから外す
  966.   #--------------------------------------------------------------------------
  967.   def remove_guest_member(file_name, index)
  968.     $game_party.remove_guest_member(file_name, index)
  969.   end
  970.   #--------------------------------------------------------------------------
  971.   # ○ ゲストキャラクターをクリアする
  972.   #--------------------------------------------------------------------------
  973.   def clear_guest_member
  974.     $game_party.clear_guest_member
  975.   end
  976.   #--------------------------------------------------------------------------
  977.   # ○ ゲストキャラクターとパーティーメンバーの並びを逆転する
  978.   #--------------------------------------------------------------------------
  979.   #  引数を省略した場合、並びが逆転。
  980.   #   true 指定でゲストが先頭、false 指定でゲストが後ろ。
  981.   #--------------------------------------------------------------------------
  982.   def change_guest_member_order(order = nil)
  983.     $game_party.change_guest_member_order(order)
  984.   end
  985.   #--------------------------------------------------------------------------
  986.   # ○ 追従メンバーを集合させる
  987.   #--------------------------------------------------------------------------
  988.   def follow_member_gathering
  989.     $game_player.follow_member_gathering = true
  990.   end
  991. end
复制代码

Lv1.梦旅人

水土火风重逢处

梦石
0
星屑
234
在线时间
691 小时
注册时间
2010-7-17
帖子
3042
2
发表于 2010-9-17 20:15:39 | 只看该作者
在线翻译那么多,LZ不会去用?
独坐望城,望断天涯
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
134
在线时间
92 小时
注册时间
2009-4-9
帖子
10
3
 楼主| 发表于 2010-9-17 20:31:03 | 只看该作者
在线翻译,翻出来的也不全看得懂.........
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
44 小时
注册时间
2010-6-17
帖子
74
4
发表于 2010-9-17 20:50:18 | 只看该作者
在线翻译翻出来的还不如直接看日文
说不定还能看懂一些
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 14:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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