Project1
标题:
会日文的高手看下
[打印本页]
作者:
2671689
时间:
2010-9-17 20:14
标题:
会日文的高手看下
在日网找到的人物跟随脚本,不知道有没高手帮汉化下
#============================================================================
#
# ■パーティーメンバーの追従 □Ver.3.12 □製作者:月紳士
# ・RPGツクールVX用 RGSS2スクリプト
#
# ●…書き換えメソッド(競合注意) ◎…メソッドのエイリアス ○…新規メソッド
#
# ※二次配布禁止!配布元には利用規約があります。必ずそちらを見てください。
#----------------------------------------------------------------------------
# 更新履歴
# Ver.3.12 イベントコマンド・スクリプト全回復時の更新処理を追加。
# Ver.3.11 パーティー加入時イベント用動作処理を追加。
# Ver.3.10 フォローメンバーを隠す機能の強化とゲスト表示機能を強化。
# Ver.3.01 コマンド追加。
# Ver.3.00 ゲストキャラクター表示機能を追加。
# Ver.2.03 戦闘テスト時に起きる不具合を修正。
# Ver.2.02 不具合再修正と処理軽量化。
# Ver.2.00 仕様見直しと棺桶未使用時の不具合を修正。
#============================================================================
=begin
このスクリプトは
パーティーのメンバーを主人公キャラ(先頭キャラ)の後に着いて歩かせる、
いわいる「隊列歩行」を実現するスクリプトです。
・乗り物への乗り込み動作を再現。
・簡単に表示数を増やすことができる構造になっており、
多人数パーティーなどに対応が容易。
・某ゲームのように戦闘不能メンバーを棺おけ表示にしたり出来る。
・パーティーには実際に参加せず、追従のみをするゲストキャラクターを設定可能。
ゲストは最後尾だけでなく、先頭にすることも可能。
以下に使い方を説明します↓
#----------------------------------------------------------------------------
●カスタマイズ項目の説明
まず、カスタマイズ項目の説明をします。
MOVE_ROUTE_FORCING_FOLLOW
移動ルートの強制時にもパーティーメンバーを追従させるか?
カスタマイズ項目での設定は初期設定となります。
ゲーム中は イベントコマンド・スクリプトにて
$game_player.move_route_forcing_follow = true
(もしくは = false) で変更できます。
= true で常に追従、= false でキー操作時のみとなります。
USE_COFFIN
戦闘不能時に棺おけにするか?
戦闘不能メンバーは隊列が(表示だけですが)変更されます。
生存者から先頭に並びます。棺桶はその後ろです。
ちなみに生存者のうち、先頭キャラの取得の仕方は
$game_party.existing_members[0]
IDの取得であれば
$game_party.existing_members[0].id
です。生存者数なら
$game_party.existing_members[0].size
と、なります。イベントコマンドでの変数取得や条件分岐に。
COFFIN_FILE_NAME
棺おけに使う画像のファイル名です。
= "$Coffin" 等と、必ず "" で囲ってください。
COFFIN_FILE_INDEX
棺おけに使う画像ファイルのインデックスです。
DISPLAY_MEMBERS
表示するメンバーの最大数です。
多人数パーティースクリプトなどで数をカスタマイズしている場合は
戦闘メンバーの数にあわせると良いと思います。
ゲストメンバーを使用する場合は、ゲーム中における
パーティーメンバー+ゲストメンバーの最大数にしておく必要があります。
#----------------------------------------------------------------------------
●イベント時の追従キャラクターの操作
イベントコマンド・移動ルートの設定やフキダシ表示をメンバーに行うには
「移動ルートの設定」コマンドより前にイベントコマンド・スクリプトで
change_this_event(1)
と実行すると、各スクリプトでの「このイベント」の対象が
指定順番(上記括弧内の 1 の部分→追従順で1番=パーティー先頭から2番目)の
キャラクターへの指示となります。
ちなみに、0 番は先頭キャラ(プレイヤーへの指示と同じ)、
-1 で元の「このイベント」に戻ります。
※ この対象変更設定はページ内のみ有効なので
別ページならその都度、対象を変更してから行う必要がありますが、
他ページの為に実行後にいちいち元に戻す、という手間はありません。
棺桶状態での表示(カスタマイズ項目参照)時、指定はアクターの隊列順番ではなく
生存者によって並び直した見た目の順番に対して、
単純に「先頭から何番目に表示されているか」で指定されます。
(棺桶であっても。change_this_event(1) ならとにかく先頭から2番目のキャラ)
#--------------------------------------------------------------------------
●追従キャラクター非表示
追従キャラクターを非表示にするには、イベントコマンド・スクリプトにて
follow_member_off
と記入し実行します。
follow_member_on
とすれば、追従キャラクターを表示するように戻すことが出来ます。
また、
follow_member_off(2)
とすると、「パーティー2番目までを表示」という風に
表示する人数、隠す人数を調節できます。
ただし後述の表示最大人数の設定を超えて表示させることは出来ません。
follow_member_off(1) は follow_member_off と同機能、
follow_member_off(0) は先頭キャラを含めて全員を隠します。
#--------------------------------------------------------------------------
●ゲストメンバーの表示
実際にパーティーには加入せず、
追従表示だけをおこなうキャラクターを設定できます。
加入させたい時は
イベントコマンド・スクリプトにて
add_guest_member("People1", 1)
というようにスクリプト実行させます。
( )内にファイル名とインデックスを記入することでキャラクター指定をします。
"People1" の部分がファイル名です。Charactersフォルダ内のファイルです。
拡張子はいりませんが、ファイル名を "" で閉じるのを忘れずに。
その後の半角数字でインデックスを記入します。例だと 1 の部分です。
ゲストキャラクターを外す場合は、
remove_guest_member("People1", 1)
と実行させます。このコマンドは
同名・同インデックスのゲストキャラクターがいる場合のみ有効です。
clear_guest_member
とすればゲストキャラクターを一括で消し、初期状態に戻せます。
ゲストキャラクターを表示できるのは
追従キャラクターの表示最大数までとなります。
ゲストメンバーはパーティーメンバーの後ろについて行きますが
ゲストメンバーを先頭に、パーティーメンバーを後に続かせる事も出来ます。
change_guest_member_order
とイベントコマンド・スクリプトを実行すると
ゲストメンバーとパーティーメンバーの並びが逆転します。
(再度の実行で元にもどります)
#--------------------------------------------------------------------------
●パーティーメンバーを個別に非表示
パーティーメンバーの歩行画像を「なし」にした場合、
そのキャラクターの隊列表示はされず、
それより後ろのパーティーメンバーやゲストが次に続きます。
隊列に参加させたくないアクターは歩行画像を「なし」にしてみてください。
=end
#==============================================================================
# □ カスタマイズ項目
#==============================================================================
module Party_Member_Follow
MOVE_ROUTE_FORCING_FOLLOW = false
# 移動ルートの強制時にもパーティーメンバーを追従させるか?(初期設定)
USE_COFFIN = true
# 戦闘不能時に棺おけにするか?
COFFIN_FILE_NAME = "$Coffin"
# 棺おけに使う画像のファイル名。
COFFIN_FILE_INDEX = 0
# 棺おけに使う画像ファイルのインデックス。
DISPLAY_MEMBERS = 4
# 表示するメンバーの最大数。
end
#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
# パーティを扱うクラスです。ゴールドやアイテムなどの情報が含まれます。このク
# ラスのインスタンスは $game_party で参照されます。
#==============================================================================
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :follow_member
attr_reader :guest_member
attr_accessor :guest_head
#--------------------------------------------------------------------------
# ◎ 初期パーティのセットアップ
#--------------------------------------------------------------------------
alias tig_pmf_setup_starting_members setup_starting_members
def setup_starting_members
tig_pmf_setup_starting_members
@guest_member = []
@guest_head = false
create_follow_member
end
#--------------------------------------------------------------------------
# ○ フォローメンバーの作成
#--------------------------------------------------------------------------
def create_follow_member
@follow_member = []
(Party_Member_Follow::DISPLAY_MEMBERS - 1).times do |i|
@follow_member.push(Game_Follow_Members.new(i))
end
character_graphic_refresh
end
#--------------------------------------------------------------------------
# ○ パーティーの歩行グラフィックのリフレッシュ
#--------------------------------------------------------------------------
def character_graphic_refresh
$game_player.character_graphic_refresh
@follow_member.each{|i|i.character_graphic_refresh}
end
#--------------------------------------------------------------------------
# ○ 歩行表示させるメンバーの取得
#--------------------------------------------------------------------------
def display_follow_member
result = []
for actor in existing_members
next if actor.character_name == ""
result.push(actor)
end
if @guest_head
result = @guest_member + result
else
result += @guest_member
end
return result
end
#--------------------------------------------------------------------------
# ○ 表示させるメンバーサイズの取得
#--------------------------------------------------------------------------
def display_member_size
result = []
for actor in members
next if actor.character_name == ""
result.push(actor)
end
result += @guest_member
return result.size
end
#--------------------------------------------------------------------------
# ○ フォローメンバー追従
#--------------------------------------------------------------------------
def follow_member_target_move
gathered = true
@follow_member.each{|i|gathered = false unless i.move_toward_target_update}
if gathered # 集合が完了した場合
$game_player.follow_member_gathering = false # 集合中フラグのオフ
end
end
#--------------------------------------------------------------------------
# ○ フォローメンバーをプレイヤーキャラクターに重ねる
#--------------------------------------------------------------------------
def follow_member_stack
@follow_member.each{|i|i.moveto_player}
end
#--------------------------------------------------------------------------
# ○ ゲストキャラクターをパーティーに加入させる
#--------------------------------------------------------------------------
def add_guest_member(file_name, index)
@guest_member.push(Guest_Members.new(file_name, index))
character_graphic_refresh
end
#--------------------------------------------------------------------------
# ○ ゲストキャラクターをパーティーから外す
#--------------------------------------------------------------------------
def remove_guest_member(file_name, index)
for i in 0...@guest_member.size
if @guest_member[i].character_name == file_name and
@guest_member[i].character_index == index
@guest_member[i] = nil
end
end
@guest_member.compact!
character_graphic_refresh
end
#--------------------------------------------------------------------------
# ○ ゲストキャラクターをクリアする
#--------------------------------------------------------------------------
def clear_guest_member
@guest_member =[]
character_graphic_refresh
end
#--------------------------------------------------------------------------
# ○ ゲストキャラクターとパーティーメンバーの並びを逆転する
#--------------------------------------------------------------------------
def change_guest_member_order(order = nil)
if order == nil
@guest_head = @guest_head ? false : true # フラグ反転
else
@guest_head = order
end
character_graphic_refresh
end
end
#==============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
# マップを扱うクラスです。スクロールや通行可能判定などの機能を持っています。
# このクラスのインスタンスは $game_map で参照されます。
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# ◎ リフレッシュ
#--------------------------------------------------------------------------
alias tig_pmf_refresh refresh
def refresh
tig_pmf_refresh
$game_party.character_graphic_refresh
end
end
#==============================================================================
# ■ Game_Character
#------------------------------------------------------------------------------
# キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event
# クラスのスーパークラスとして使用されます。
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ● 通行可能判定
# x : X 座標
# y : Y 座標
#--------------------------------------------------------------------------
def passable?(x, y)
x = $game_map.round_x(x) # 横方向ループ補正
y = $game_map.round_y(y) # 縦方向ループ補正
return false unless $game_map.valid?(x, y) # マップ外?
return true if @through or debug_through? # すり抜け ON?
return false unless map_passable?(x, y) # マップが通行不能?
return false if collide_with_characters?(x, y) # キャラクターに衝突?
return false if collide_with_follow_member(x, y) ## 追加部分
return true # 通行可
end
#--------------------------------------------------------------------------
# ○ フォローメンバーとの衝突判定
#--------------------------------------------------------------------------
def collide_with_follow_member(x, y)
return false if self == $game_player
$game_party.follow_member.each do |follow_member|
next if follow_member == self
return true if follow_member.pos_nt?(x, y)
end
return false
end
#--------------------------------------------------------------------------
# ○ 指定座標に近づく
#--------------------------------------------------------------------------
def move_toward_coordinates(x, y)
sx = @x - x
if $game_map.loop_horizontal? # 横にループしているとき
if sx.abs > $game_map.width / 2 # 絶対値がマップの半分より大きい?
sx -= $game_map.width # マップの幅を引く
end
end
sy = @y - y
if $game_map.loop_vertical? # 縦にループしているとき
if sy.abs > $game_map.height / 2 # 絶対値がマップの半分より大きい?
sy -= $game_map.height # マップの高さを引く
end
end
if sx != 0 or sy != 0
if sx.abs > sy.abs # 横の距離のほうが長い
sx > 0 ? move_left : move_right # 左右方向を優先
if @move_failed and sy != 0
sy > 0 ? move_up : move_down
end
else # 縦の距離のほうが長いか等しい
sy > 0 ? move_up : move_down # 上下方向を優先
if @move_failed and sx != 0
sx > 0 ? move_left : move_right
end
end
end
end
#--------------------------------------------------------------------------
# ○ 指定キャラクターに近づく
#--------------------------------------------------------------------------
def move_toward_pos(character)
move_toward_coordinates(character.x, character.y)
end
#--------------------------------------------------------------------------
# ○ プレイヤー正面からパーティー最後尾へ
#--------------------------------------------------------------------------
# ※ イベントキャラクターをパーティーに追加する際の演出に。
# イベントコマンド・移動ルートの設定内の、スクリプトで実行。
# パーティー表示最大数と同じ数だけ実行設定しておく必要あり。
# 「このイベント」・「移動終了までウエイト」の設定、
# 実行前にすり抜けONにする、実行後にイベント位置を(必要なら)戻す
# 等も忘れずに。
#--------------------------------------------------------------------------
def party_join
member = $game_party.follow_member
return if @x == member[$game_party.display_follow_member.size-1].x and
@y == member[$game_party.display_follow_member.size-1].y
($game_party.display_follow_member.size - 2).downto(0) do |i|
if @x == member[i].x and @y == member[i].y
move_toward_pos(member[i+1])
return
end
end
if @x == $game_player.x and @y == $game_player.y
move_toward_pos(member[0])
return
end
move_toward_pos($game_player)
end
end
#==============================================================================
# ■ Game_Player
#------------------------------------------------------------------------------
# プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
# 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
#==============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :follow_member_gathering
attr_reader :move_speed
attr_reader :vehicle_getting_on
attr_accessor :move_route_forcing_follow
#--------------------------------------------------------------------------
# ◎ オブジェクト初期化
#--------------------------------------------------------------------------
alias tig_pmf_initialize initialize
def initialize
tig_pmf_initialize
@follow_member_gathering = false
@move_route_forcing_follow = Party_Member_Follow::MOVE_ROUTE_FORCING_FOLLOW
end
#--------------------------------------------------------------------------
# ◎ フレーム更新
#--------------------------------------------------------------------------
alias tig_pmf_pl_update update
def update
tig_pmf_pl_update
$game_party.follow_member_target_move if moving? and @move_route_forcing_follow
end
#--------------------------------------------------------------------------
# ◎ 方向ボタン入力による移動処理
#--------------------------------------------------------------------------
alias tig_pmf_move_by_input move_by_input
def move_by_input
tig_pmf_move_by_input
if Input.dir4 != 0
$game_party.follow_member_target_move if moving? and not @move_route_forcing_follow
end
end
#--------------------------------------------------------------------------
# ◎ 移動可能判定
#--------------------------------------------------------------------------
alias tig_pmf_movable? movable?
def movable?
return false unless tig_pmf_movable?
return false if @follow_member_gathering
return false if @vehicle_getting_off_wait
return true
end
#--------------------------------------------------------------------------
# ◎ フレーム更新
#--------------------------------------------------------------------------
alias tig_pmf_update update
def update
tig_pmf_update
if @follow_member_gathering
$game_party.follow_member_target_move
end
$game_party.follow_member.each{|i|i.update}
if @vehicle_getting_on and not moving? and
now_vehicle and now_vehicle.pos?(@x, @y)
@vehicle_hide = true
end
if @vehicle_getting_off_wait and now_vehicle == nil
$game_party.follow_member.each{|i|i.transparent = false}
$game_party.follow_member_stack
@vehicle_getting_off_wait = false
end
end
#--------------------------------------------------------------------------
# ○ 透明化の取得
#--------------------------------------------------------------------------
def transparent
return true if @vehicle_hide and not now_vehicle_riding_type?
return @transparent
end
#--------------------------------------------------------------------------
# ○ 歩行グラフィックのリフレッシュ
# ※ 生存者が先頭になるように歩行グラフィックを表示する機能あり。
# 全員死亡している場合は棺にする
#--------------------------------------------------------------------------
def character_graphic_refresh
@pmf_character_name = ""
@pmf_character_index = 0
unless Party_Member_Follow::USE_COFFIN
unless $game_party.display_follow_member.empty?
@pmf_character_name = $game_party.display_follow_member[0].character_name
@pmf_character_index = $game_party.display_follow_member[0].character_index
end
return
end
if $game_party.display_follow_member[0] == nil
if $game_party.display_member_size >= 1
@pmf_character_name = Party_Member_Follow::COFFIN_FILE_NAME
@pmf_character_index = Party_Member_Follow::COFFIN_FILE_INDEX
end
else
@pmf_character_name = $game_party.display_follow_member[0].character_name
@pmf_character_index = $game_party.display_follow_member[0].character_index
end
end
#--------------------------------------------------------------------------
# ○ 歩行グラフィック ファイル名
#--------------------------------------------------------------------------
def character_name
return @pmf_character_name
end
#--------------------------------------------------------------------------
# ○ 歩行グラフィック インデックス
#--------------------------------------------------------------------------
def character_index
return @pmf_character_index
end
#--------------------------------------------------------------------------
# ◎ 指定位置に移動
# x : X 座標
# y : Y 座標
#--------------------------------------------------------------------------
alias tig_pmf_moveto moveto
def moveto(x, y)
tig_pmf_moveto(x, y)
$game_party.follow_member_stack
end
#--------------------------------------------------------------------------
# ● 乗り物の乗降
#--------------------------------------------------------------------------
def get_on_off_vehicle
return false unless movable?
if in_vehicle?
result = get_off_vehicle ## 変更部分
if result ## 結果に合わせてフラグオン
@vehicle_getting_off_wait = true ##
@vehicle_hide = false ##
end ##
return result
else
result = get_on_vehicle ## 変更部分
@follow_member_gathering = true if result ## 結果に合わせてフラグオン
return result ##
end
end
#--------------------------------------------------------------------------
# ◎ 乗り物の処理
#--------------------------------------------------------------------------
alias tig_pmf_update_vehicle update_vehicle
def update_vehicle
return if @follow_member_gathering
tig_pmf_update_vehicle
end
#--------------------------------------------------------------------------
# ○ 今乗っている乗り物
#--------------------------------------------------------------------------
def now_vehicle
return nil if @vehicle_type == -1
return $game_map.vehicles[@vehicle_type]
end
#--------------------------------------------------------------------------
# ○ 今乗っている乗り物が騎乗タイプか?(乗り物拡張用ダミー)
#--------------------------------------------------------------------------
def now_vehicle_riding_type?
return false
end
end
#==============================================================================
# ■ Game_Vehicle
#------------------------------------------------------------------------------
# 乗り物を扱うクラスです。このクラスは Game_Map クラスの内部で使用されます。
# 現在のマップに乗り物がないときは、マップ座標 (-1,-1) に設定されます。
#==============================================================================
class Game_Vehicle < Game_Character
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
if @type == 2 # 飛行船の場合
if @driving
return if $game_player.follow_member_gathering ### 追加部分
if @altitude < MAX_ALTITUDE
@altitude += 1 # 高度を上げる
end
elsif @altitude > 0
@altitude -= 1 # 高度を下げる
if @altitude == 0
@priority_type = 0 # プライオリティを「通常キャラの下」に戻す
end
end
end
end
end
#==============================================================================
# □ Game_Follow_Members
#------------------------------------------------------------------------------
# 主人公キャラ(先頭キャラ)の後を追従するパーティーメンバーを扱うクラスです。
#==============================================================================
class Game_Follow_Members < Game_Character
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :index
#--------------------------------------------------------------------------
# ○ オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(order)
super()
@order = order
@target_x = $game_player.x
@target_y = $game_player.y
@next_target_x = $game_player.x
@next_target_y = $game_player.y
end
#--------------------------------------------------------------------------
# ○ 歩行グラフィックのリフレッシュ
# ※ 生存者が先頭になるように歩行グラフィックを表示する機能あり。
# 全員死亡している場合は棺にする
#--------------------------------------------------------------------------
def character_graphic_refresh
@pmf_character_name = ""
@pmf_character_index = 0
unless Party_Member_Follow::USE_COFFIN
if $game_party.display_follow_member[@order+1]
@pmf_character_name = $game_party.display_follow_member[@order+1].character_name
@pmf_character_index = $game_party.display_follow_member[@order+1].character_index
end
return
end
if $game_party.display_follow_member[@order+1] == nil
if $game_party.display_member_size >= @order+2
@pmf_character_name = Party_Member_Follow::COFFIN_FILE_NAME
@pmf_character_index = Party_Member_Follow::COFFIN_FILE_INDEX
end
else
@pmf_character_name = $game_party.display_follow_member[@order+1].character_name
@pmf_character_index = $game_party.display_follow_member[@order+1].character_index
end
end
#--------------------------------------------------------------------------
# ○ 歩行グラフィック ファイル名
#--------------------------------------------------------------------------
def character_name
return @pmf_character_name
end
#--------------------------------------------------------------------------
# ○ 歩行グラフィック インデックス
#--------------------------------------------------------------------------
def character_index
return @pmf_character_index
end
#--------------------------------------------------------------------------
# ○ フレーム更新
#--------------------------------------------------------------------------
def update
if $game_player.vehicle_getting_on and not moving? and
$game_player.now_vehicle and $game_player.now_vehicle.pos?(@x, @y)
@transparent = true
end
@move_speed = $game_player.move_speed
super
end
#--------------------------------------------------------------------------
# ● 座標一致と「すり抜け OFF」判定 (nt = No Through)
#--------------------------------------------------------------------------
def pos_nt?(x, y)
return false if @transparent
return (pos?(x, y) and not @through)
end
#--------------------------------------------------------------------------
# ○ ダッシュ状態判定
#--------------------------------------------------------------------------
def dash?
return false if @move_route_forcing
return false if $game_player.follow_member_gathering
return $game_player.dash?
end
#--------------------------------------------------------------------------
# ○ プレイヤーの位置とそろえる
#--------------------------------------------------------------------------
def moveto_player
moveto($game_player.x, $game_player.y)
@target_x = $game_player.x
@target_y = $game_player.y
@next_target_x = $game_player.x
@next_target_y = $game_player.y
@direction = $game_player.direction
end
#--------------------------------------------------------------------------
# ○ 追従するキャラクターの取得
#--------------------------------------------------------------------------
def target_character
if @order == 0
return $game_player
else
return $game_party.follow_member[@order-1]
end
end
#--------------------------------------------------------------------------
# ○ 追従の更新
# ※ 追従が完了している場合は true を返す
#--------------------------------------------------------------------------
def move_toward_target_update
return false if moving?
if @x == target_character.x and @x == @next_target_x and
@y == target_character.y and @y == @next_target_y
return true
end
if $game_player.move_route_forcing and
not $game_player.move_route_forcing_follow
return true
end
@target_x = @next_target_x
@target_y = @next_target_y
@next_target_x = target_character.x
@next_target_y = target_character.y
if @target_x == @next_target_x and @target_y == @next_target_y
return if target_character.moving?
end
move_toward_target
return false
end
#--------------------------------------------------------------------------
# ○ 追従すべきポイントへの X 距離計算
#--------------------------------------------------------------------------
def distance_x_target
sx = @x - @target_x
if $game_map.loop_horizontal? # 横にループしているとき
if sx.abs > $game_map.width / 2 # 絶対値がマップの半分より大きい?
sx += $game_map.width # マップの幅を足す
end
end
return sx
end
#--------------------------------------------------------------------------
# ○ 追従すべきポイントへの Y 距離計算
#--------------------------------------------------------------------------
def distance_y_target
sy = @y - @target_y
if $game_map.loop_vertical? # 縦にループしているとき
if sy.abs > $game_map.height / 2 # 絶対値がマップの半分より大きい?
sy += $game_map.height # マップの高さを足す
end
end
return sy
end
#--------------------------------------------------------------------------
# ○ 追従すべきポイントへ近づく
#--------------------------------------------------------------------------
def move_toward_target
@through = true # 追従歩行中はすり抜け判定
sx = distance_x_target
sy = distance_y_target
if sx != 0 or sy != 0
if sx.abs > sy.abs # 横の距離のほうが長い
sx > 0 ? move_left : move_right # 左右方向を優先
if @move_failed and sy != 0
sy > 0 ? move_up : move_down
end
else # 縦の距離のほうが長いか等しい
sy > 0 ? move_up : move_down # 上下方向を優先
if @move_failed and sx != 0
sx > 0 ? move_left : move_right
end
end
end
@through = $game_player.through
end
#--------------------------------------------------------------------------
# ● 接触イベントの起動判定
#--------------------------------------------------------------------------
def check_event_trigger_touch(x, y)
return false
end
#--------------------------------------------------------------------------
# ○ プレイヤーの対面に移動
#--------------------------------------------------------------------------
def set_pos_player_facing
x = $game_map.x_with_direction($game_player.x, $game_player.direction)
y = $game_map.y_with_direction($game_player.y, $game_player.direction)
moveto(x, y)
@direction = 10 - $game_player.direction
end
end
#==============================================================================
# □ Guest_Members
#------------------------------------------------------------------------------
# 歩行表示のみをするゲストメンバーを扱うクラスです。
#==============================================================================
class Guest_Members
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :character_name # 歩行グラフィック ファイル名
attr_reader :character_index # 歩行グラフィック インデックス
#--------------------------------------------------------------------------
# ○ オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(file_name, index)
@character_name = file_name
@character_index = index
end
end
#==============================================================================
# ■ Spriteset_Map
#------------------------------------------------------------------------------
# マップ画面のスプライトやタイルマップなどをまとめたクラスです。このクラスは
# Scene_Map クラスの内部で使用されます。
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# ● キャラクタースプライトの作成
#--------------------------------------------------------------------------
def create_characters
@character_sprites = []
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
@character_sprites.push(sprite)
end
for vehicle in $game_map.vehicles
sprite = Sprite_Character.new(@viewport1, vehicle)
@character_sprites.push(sprite)
end
create_follow_members ### 追加部分
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
end
#--------------------------------------------------------------------------
# ○ キャラクタースプライトの作成
#--------------------------------------------------------------------------
def create_follow_members
for members in $game_party.follow_member.reverse
sprite = Sprite_Character.new(@viewport1, members)
@character_sprites.push(sprite)
end
end
end
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
# イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ◎ イベントのセットアップ
# list : 実行内容
# event_id : イベント ID
#--------------------------------------------------------------------------
alias tig_pmf_clear clear
def clear
tig_pmf_clear
@this_event = -1
end
#--------------------------------------------------------------------------
# ◎ ステートの変更
#--------------------------------------------------------------------------
alias tig_pmf_command_313 command_313
def command_313
tig_pmf_command_313
$game_party.character_graphic_refresh
return true
end
#--------------------------------------------------------------------------
# ◎ 全回復
#--------------------------------------------------------------------------
alias tig_pmf_command_314 command_314
def command_314
tig_pmf_command_314
$game_party.character_graphic_refresh
return true
end
#--------------------------------------------------------------------------
# ● キャラクターの取得
#--------------------------------------------------------------------------
def get_character(param)
case param
when -1 # プレイヤー
return $game_player
when 0 # このイベント
case @this_event
when -1
events = $game_map.events
return events == nil ? nil : events[@event_id]
when 0
return $game_player
else
return $game_party.follow_member[@this_event-1]
end
else # 特定のイベント
events = $game_map.events
return events == nil ? nil : events[param]
end
end
#--------------------------------------------------------------------------
# ○ 「このイベント」の対象変更
#--------------------------------------------------------------------------
def change_this_event(number)
@this_event = number
end
#--------------------------------------------------------------------------
# ○ 追従キャラクターの表示
#--------------------------------------------------------------------------
def follow_member_on
$game_player.transparent = false
$game_party.follow_member.each{|i|i.transparent = false}
end
#--------------------------------------------------------------------------
# ○ 追従キャラクターの非表示
#--------------------------------------------------------------------------
def follow_member_off(n = nil)
if n == nil
$game_player.transparent = false
$game_party.follow_member.each{|i|i.transparent = true}
else
case n
when 0
$game_player.transparent = true
$game_party.follow_member.each{|i|i.transparent = true}
when 1
$game_player.transparent = false
$game_party.follow_member.each{|i|i.transparent = true}
else
$game_player.transparent = false
$game_party.follow_member.each{|i|i.transparent = true}
for i in 0..(n-2)
$game_party.follow_member[i].transparent = false
end
end
end
end
#--------------------------------------------------------------------------
# ○ ゲストキャラクターをパーティーに加入させる
#--------------------------------------------------------------------------
def add_guest_member(file_name, index)
$game_party.add_guest_member(file_name, index)
end
#--------------------------------------------------------------------------
# ○ ゲストキャラクターをパーティーから外す
#--------------------------------------------------------------------------
def remove_guest_member(file_name, index)
$game_party.remove_guest_member(file_name, index)
end
#--------------------------------------------------------------------------
# ○ ゲストキャラクターをクリアする
#--------------------------------------------------------------------------
def clear_guest_member
$game_party.clear_guest_member
end
#--------------------------------------------------------------------------
# ○ ゲストキャラクターとパーティーメンバーの並びを逆転する
#--------------------------------------------------------------------------
# 引数を省略した場合、並びが逆転。
# true 指定でゲストが先頭、false 指定でゲストが後ろ。
#--------------------------------------------------------------------------
def change_guest_member_order(order = nil)
$game_party.change_guest_member_order(order)
end
#--------------------------------------------------------------------------
# ○ 追従メンバーを集合させる
#--------------------------------------------------------------------------
def follow_member_gathering
$game_player.follow_member_gathering = true
end
end
复制代码
作者:
429259591
时间:
2010-9-17 20:15
在线翻译那么多,LZ不会去用?
作者:
2671689
时间:
2010-9-17 20:31
在线翻译,翻出来的也不全看得懂.........
作者:
ashion
时间:
2010-9-17 20:50
在线翻译翻出来的还不如直接看日文
说不定还能看懂一些
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1