赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 675 |
最后登录 | 2013-2-13 |
在线时间 | 36 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 36 小时
- 注册时间
- 2012-9-14
- 帖子
- 8
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 wei19840826 于 2012-9-18 22:39 编辑
下载了这个整合系统 http://rpg.blue/thread-243669-1-1.html
开始游戏就跳错误框
完全不懂脚本 求破!!!!- #==============================================================================
- # ■ Game_Character_re
- #------------------------------------------------------------------------------
- # キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event
- # クラスのスーパークラスとして使用されます。(再定義)
- #==============================================================================
- class Game_Character
- #--------------------------------------------------------------------------
- # ● キャラクター衝突判定
- # x : X 座標
- # y : Y 座標
- # プレイヤーと乗り物を含め、通常キャラの衝突を検出する。
- #--------------------------------------------------------------------------
- def collide_with_characters?(x, y)
- for event in $game_map.events_xy(x, y) # イベントの座標と一致
- unless event.through # すり抜け OFF?
- return true if self.is_a?(Game_Event) # 自分がイベント
- return true if event.priority_type == 1 # 相手が通常キャラ
- end
- end
- if @priority_type == 1 # 自分が通常キャラ
- return true if $game_player.pos_nt?(x, y) # プレイヤーの座標と一致
- return true if $game_subplayer1.pos_nt?(x,y) # サブプレイヤーの座標と一致#追加
- return true if $game_subplayer2.pos_nt?(x,y) # サブプレイヤーの座標と一致#追加
- return true if $game_subplayer3.pos_nt?(x,y) # サブプレイヤーの座標と一致#追加
- return true if $game_map.boat.pos_nt?(x, y) # 小型船の座標と一致
- return true if $game_map.ship.pos_nt?(x, y) # 大型船の座標と一致
- end
- return false
- end
- end
- #==============================================================================
- # ■ Game_Player_re
- #------------------------------------------------------------------------------
- # プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
- # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
- # (再定義)
- #==============================================================================
- class Game_Player < Game_Character
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_reader :gather_on # メンバー集合フラグ #追加
- attr_reader :member # 強制動作を行うプレイヤー番号(0:全員)#追加
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- super
- @vehicle_type = -1
- @vehicle_getting_on = false # 乗る動作の途中フラグ
- @vehicle_getting_off = false # 降りる動作の途中フラグ
- @transferring = false # 場所移動フラグ
- @new_map_id = 0 # 移動先 マップ ID
- @new_x = 0 # 移動先 X 座標
- @new_y = 0 # 移動先 Y 座標
- @new_direction = 0 # 移動後の向き
- @walking_bgm = nil # 歩行時の BGM 記憶用
- @gather_on = false # 追加
- @gather_count = 0 # 集合用カウンター #追加
- @member = 0
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- if $game_party.members.size == 0
- @character_name = ""
- @character_index = 0
- else
- actor = $game_party.members[0] # 先頭のアクターを取得
- @character_name = actor.character_name
- @character_index = actor.character_index
- end
- $game_subplayer1.refresh(1)#追加
- $game_subplayer2.refresh(2)#追加
- $game_subplayer3.refresh(3)#追加
- end
- #--------------------------------------------------------------------------
- # ● 乗り物の処理
- #--------------------------------------------------------------------------
- def update_vehicle
- return unless in_vehicle?
- vehicle = $game_map.vehicles[@vehicle_type]
- if @vehicle_getting_on # 乗る途中?
- if not moving?
- @direction = vehicle.direction # 向きを変更
- @move_speed = vehicle.speed # 移動速度を変更
- @vehicle_getting_on = false # 乗る動作終了
- @transparent = true # 透明化
- $game_subplayer1.transparent = true # 透明化 #追加
- $game_subplayer2.transparent = true # 透明化 #追加
- $game_subplayer3.transparent = true # 透明化 #追加
- end
- elsif @vehicle_getting_off # 降りる途中?
- if not moving? and vehicle.altitude == 0
- @vehicle_getting_off = false # 降りる動作終了
- @vehicle_type = -1 # 乗り物タイプ消去
- @transparent = false # 透明を解除
- $game_subplayer1.moveto($game_player.x,$game_player.y) #追加
- $game_subplayer1.transparent = false # 透明を解除 #追加
- $game_subplayer2.moveto($game_player.x,$game_player.y) #追加
- $game_subplayer2.transparent = false # 透明を解除 #追加
- $game_subplayer3.moveto($game_player.x,$game_player.y) #追加
- $game_subplayer3.transparent = false # 透明を解除 #追加
- end
- else # 乗り物に乗っている
- vehicle.sync_with_player # プレイヤーと同時に動かす
- end
- end
- #--------------------------------------------------------------------------
- # ● 乗り物から降りる
- # 現在乗り物に乗っていることが前提。
- #--------------------------------------------------------------------------
- def get_off_vehicle
- if in_airship? # 飛行船
- return unless airship_land_ok?(@x, @y) # 着陸できない?
- else # 小型船・大型船
- front_x = $game_map.x_with_direction(@x, @direction)
- front_y = $game_map.y_with_direction(@y, @direction)
- return unless can_walk?(front_x, front_y) # 接岸できない?
- end
- $game_map.vehicles[@vehicle_type].get_off # 降りる処理
- if in_airship? # 飛行船
- @direction = 2 # 下を向く
- else # 小型船・大型船
- force_move_forward # 一歩前進
- @transparent = false # 透明を解除
- end
- @vehicle_getting_off = true # 降りる動作の開始
- @move_speed = 4 # 移動速度を戻す
- $game_subplayer1.move_speed = 4 # 移動速度を戻す# 追加
- $game_subplayer2.move_speed = 4 # 移動速度を戻す# 追加
- $game_subplayer3.move_speed = 4 # 移動速度を戻す# 追加
- @through = false # すり抜け OFF
- @walking_bgm.play # 歩行時の BGM 復帰
- make_encounter_count # エンカウント初期化
- end
- #--------------------------------------------------------------------------
- # ● 下に移動
- # turn_ok : その場での向き変更を許可
- #--------------------------------------------------------------------------
- def move_down(turn_ok = true)
- pos = [] #追加
- if passable?(@x, @y+1) # 通行可能
- turn_down
- pos.push(@x,@y) #追加
- @y = $game_map.round_y(@y+1)
- @real_y = (@y-1)*256
- $game_subplayer1.move(pos) #追加
- increase_steps
- @move_failed = false
- else # 通行不可能
- turn_down if turn_ok
- check_event_trigger_touch(@x, @y+1) # 接触イベントの起動判定
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 左に移動
- # turn_ok : その場での向き変更を許可
- #--------------------------------------------------------------------------
- def move_left(turn_ok = true)
- pos = [] #追加
- if passable?(@x-1, @y) # 通行可能
- turn_left
- pos.push(@x,@y) #追加
- @x = $game_map.round_x(@x-1)
- @real_x = (@x+1)*256
- $game_subplayer1.move(pos) #追加
- increase_steps
- @move_failed = false
- else # 通行不可能
- turn_left if turn_ok
- check_event_trigger_touch(@x-1, @y) # 接触イベントの起動判定
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 右に移動
- # turn_ok : その場での向き変更を許可
- #--------------------------------------------------------------------------
- def move_right(turn_ok = true)
- pos = [] #追加
- if passable?(@x+1, @y) # 通行可能
- turn_right
- pos.push(@x,@y) #追加
- @x = $game_map.round_x(@x+1)
- @real_x = (@x-1)*256
- $game_subplayer1.move(pos) #追加
- increase_steps
- @move_failed = false
- else # 通行不可能
- turn_right if turn_ok
- check_event_trigger_touch(@x+1, @y) # 接触イベントの起動判定
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 上に移動
- # turn_ok : その場での向き変更を許可
- #--------------------------------------------------------------------------
- def move_up(turn_ok = true)
- pos = [] #追加
- if passable?(@x, @y-1) # 通行可能
- turn_up
- pos.push(@x,@y) #追加
- @y = $game_map.round_y(@y-1)
- @real_y = (@y+1)*256
- $game_subplayer1.move(pos) #追加
- increase_steps
- @move_failed = false
- else # 通行不可能
- turn_up if turn_ok
- check_event_trigger_touch(@x, @y-1) # 接触イベントの起動判定
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 左下に移動
- #--------------------------------------------------------------------------
- def move_lower_left
- pos = [] #追加
- unless @direction_fix
- @direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
- end
- if (passable?(@x, @y+1) and passable?(@x-1, @y+1)) or
- (passable?(@x-1, @y) and passable?(@x-1, @y+1))
- pos.push(@x,@y) #追加
- @x -= 1
- @y += 1
- $game_subplayer1.move(pos) #追加
- increase_steps
- @move_failed = false
- else
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 右下に移動
- #--------------------------------------------------------------------------
- def move_lower_right
- pos = [] #追加
- unless @direction_fix
- @direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
- end
- if (passable?(@x, @y+1) and passable?(@x+1, @y+1)) or
- (passable?(@x+1, @y) and passable?(@x+1, @y+1))
- pos.push(@x,@y) #追加
- @x += 1
- @y += 1
- $game_subplayer1.move(pos) #追加
- increase_steps
- @move_failed = false
- else
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 左上に移動
- #--------------------------------------------------------------------------
- def move_upper_left
- pos = [] #追加
- unless @direction_fix
- @direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
- end
- if (passable?(@x, @y-1) and passable?(@x-1, @y-1)) or
- (passable?(@x-1, @y) and passable?(@x-1, @y-1))
- pos.push(@x,@y) #追加
- @x -= 1
- @y -= 1
- $game_subplayer1.move(pos) #追加
- increase_steps
- @move_failed = false
- else
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 右上に移動
- #--------------------------------------------------------------------------
- def move_upper_right
- pos = [] #追加
- unless @direction_fix
- @direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
- end
- if (passable?(@x, @y-1) and passable?(@x+1, @y-1)) or
- (passable?(@x+1, @y) and passable?(@x+1, @y-1))
- pos.push(@x,@y) #追加
- @x += 1
- @y -= 1
- $game_subplayer1.move(pos) #追加
- increase_steps
- @move_failed = false
- else
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● キャラクター衝突判定
- # x : X 座標
- # y : Y 座標
- #--------------------------------------------------------------------------
- def collide_with_characters?(x, y)
- for event in $game_map.events_xy(x, y) # イベントの座標と一致
- unless event.through # すり抜け OFF?
- return true if self.is_a?(Game_Event) # 自分がイベント
- return true if event.priority_type == 1 # 相手が通常キャラ
- end
- end
- if @priority_type == 1 # 自分が通常キャラ
- return true if $game_map.boat.pos_nt?(x, y) # 小型船の座標と一致
- return true if $game_map.ship.pos_nt?(x, y) # 大型船の座標と一致
- end
- return false
- end
- #--------------------------------------------------------------------------
- # ● 移動タイプ : カスタム
- #--------------------------------------------------------------------------
- def move_type_custom
- if stopping?
- command = @move_route.list[@move_route_index] # 移動コマンドを取得
- @move_failed = false
- if command.code == 0 # リストの最後
- if @move_route.repeat # [動作を繰り返す]
- @move_route_index = 0
- elsif @move_route_forcing # 移動ルート強制中
- @move_route_forcing = false # 強制を解除
- @move_route = @original_move_route # オリジナルを復帰
- @move_route_index = @original_move_route_index
- @original_move_route = nil
- end
- else
- case command.code
- when 1 # 下に移動
- move_down
- when 2 # 左に移動
- move_left
- when 3 # 右に移動
- move_right
- when 4 # 上に移動
- move_up
- when 5 # 左下に移動
- move_lower_left
- when 6 # 右下に移動
- move_lower_right
- when 7 # 左上に移動
- move_upper_left
- when 8 # 右上に移動
- move_upper_right
- when 9 # ランダムに移動
- move_random
- when 10 # プレイヤーに近づく
- move_toward_player
- when 11 # プレイヤーから遠ざかる
- move_away_from_player
- when 12 # 一歩前進
- move_forward
- when 13 # 一歩後退
- move_backward
- when 14 # ジャンプ
- #以下変更
- if command.parameters[0]==0 && command.parameters[1]==0
- if @member==1
- jump(command.parameters[0], command.parameters[1])
- elsif @member==2
- $game_subplayer1.jump(command.parameters[0], command.parameters[1])
- elsif @member==3
- $game_subplayer2.jump(command.parameters[0], command.parameters[1])
- elsif @member==4
- $game_subplayer3.jump(command.parameters[0], command.parameters[1])
- elsif @member==0
- $game_subplayer3.jump(command.parameters[0], command.parameters[1])
- $game_subplayer2.jump(command.parameters[0], command.parameters[1])
- $game_subplayer1.jump(command.parameters[0], command.parameters[1])
- jump(command.parameters[0], command.parameters[1])
- end
- else
- $game_subplayer3.jump(command.parameters[0], command.parameters[1])
- $game_subplayer2.jump(command.parameters[0], command.parameters[1])
- $game_subplayer1.jump(command.parameters[0], command.parameters[1])
- jump(command.parameters[0], command.parameters[1])
- end
- #ここまで
- when 15 # ウェイト
- @wait_count = command.parameters[0] - 1
- when 16 # 下を向く
- #以下変更
- if @member==1
- turn_down
- elsif @member==2
- $game_subplayer1.turn_down
- elsif @member==3
- $game_subplayer2.turn_down
- elsif @member==4
- $game_subplayer3.turn_down
- elsif @member==0
- $game_subplayer3.turn_down
- $game_subplayer2.turn_down
- $game_subplayer1.turn_down
- turn_down
- end
- #ここまで
- when 17 # 左を向く
- #以下変更
- if @member==1
- turn_left
- elsif @member==2
- $game_subplayer1.turn_left
- elsif @member==3
- $game_subplayer2.turn_left
- elsif @member==4
- $game_subplayer3.turn_left
- elsif @member==0
- $game_subplayer3.turn_left
- $game_subplayer2.turn_left
- $game_subplayer1.turn_left
- turn_left
- end
- #ここまで
- when 18 # 右を向く
- #以下変更
- if @member==1
- turn_right
- elsif @member==2
- $game_subplayer1.turn_right
- elsif @member==3
- $game_subplayer2.turn_right
- elsif @member==4
- $game_subplayer3.turn_right
- elsif @member==0
- $game_subplayer3.turn_right
- $game_subplayer2.turn_right
- $game_subplayer1.turn_right
- turn_right
- end
- #ここまで
- when 19 # 上を向く
- #以下変更
- if @member==1
- turn_up
- elsif @member==2
- $game_subplayer1.turn_up
- elsif @member==3
- $game_subplayer2.turn_up
- elsif @member==4
- $game_subplayer3.turn_up
- elsif @member==0
- $game_subplayer3.turn_up
- $game_subplayer2.turn_up
- $game_subplayer1.turn_up
- turn_up
- end
- #ここまで
- when 20 # 右に 90 度回転
- #以下変更
- if @member==1
- turn_right_90
- elsif @member==2
- $game_subplayer1.turn_right_90
- elsif @member==3
- $game_subplayer2.turn_right_90
- elsif @member==4
- $game_subplayer3.turn_right_90
- elsif @member==0
- $game_subplayer3.turn_right_90
- $game_subplayer2.turn_right_90
- $game_subplayer1.turn_right_90
- turn_right_90
- end
- #ここまで
- when 21 # 左に 90 度回転
- #以下変更
- if @member==1
- turn_left_90
- elsif @member==2
- $game_subplayer1.turn_left_90
- elsif @member==3
- $game_subplayer2.turn_left_90
- elsif @member==4
- $game_subplayer3.turn_left_90
- elsif @member==0
- $game_subplayer3.turn_left_90
- $game_subplayer2.turn_left_90
- $game_subplayer1.turn_left_90
- turn_left_90
- end
- #ここまで
- when 22 # 180 度回転
- #以下変更
- if @member==1
- turn_180
- elsif @member==2
- $game_subplayer1.turn_180
- elsif @member==3
- $game_subplayer2.turn_180
- elsif @member==4
- $game_subplayer3.turn_180
- elsif @member==0
- $game_subplayer3.turn_180
- $game_subplayer2.turn_180
- $game_subplayer1.turn_180
- turn_180
- end
- #ここまで
- when 23 # 右か左に 90 度回転
- #以下変更
- if @member==1
- turn_right_or_left_90
- elsif @member==2
- $game_subplayer1.turn_right_or_left_90
- elsif @member==3
- $game_subplayer2.turn_right_or_left_90
- elsif @member==4
- $game_subplayer3.turn_right_or_left_90
- elsif @member==0
- $game_subplayer3.turn_right_or_left_90
- $game_subplayer2.turn_right_or_left_90
- $game_subplayer1.turn_right_or_left_90
- turn_right_or_left_90
- end
- #ここまで
- when 24 # ランダムに方向転換
- #以下変更
- if @member==1
- turn_random
- elsif @member==2
- $game_subplayer1.turn_random
- elsif @member==3
- $game_subplayer2.turn_random
- elsif @member==4
- $game_subplayer3.turn_random
- elsif @member==0
- $game_subplayer3.turn_random
- $game_subplayer2.turn_random
- $game_subplayer1.turn_random
- turn_random
- end
- #ここまで
- when 25 # プレイヤーの方を向く
- #以下変更
- if @member==1
- turn_toward_player
- elsif @member==2
- $game_subplayer1.turn_toward_player
- elsif @member==3
- $game_subplayer2.turn_toward_player
- elsif @member==4
- $game_subplayer3.turn_toward_player
- elsif @member==0
- $game_subplayer3.turn_toward_player
- $game_subplayer2.turn_toward_player
- $game_subplayer1.turn_toward_player
- turn_toward_player
- end
- #ここまで
- when 26 # プレイヤーの逆を向く
- #以下変更
- if @member==1
- turn_away_from_player
- elsif @member==2
- $game_subplayer1.turn_away_from_player
- elsif @member==3
- $game_subplayer2.turn_away_from_player
- elsif @member==4
- $game_subplayer3.turn_away_from_player
- elsif @member==0
- $game_subplayer3.turn_away_from_player
- $game_subplayer2.turn_away_from_player
- $game_subplayer1.turn_away_from_player
- turn_away_from_player
- end
- #ここまで
- when 27 # スイッチ ON
- $game_switches[command.parameters[0]] = true
- $game_map.need_refresh = true
- when 28 # スイッチ OFF
- $game_switches[command.parameters[0]] = false
- $game_map.need_refresh = true
- when 29 # 移動速度の変更
- #以下変更
- @move_speed = command.parameters[0]
- $game_subplayer1.move_speed = command.parameters[0]
- $game_subplayer2.move_speed = command.parameters[0]
- $game_subplayer3.move_speed = command.parameters[0]
- #ここまで
- when 30 # 移動頻度の変更
- @move_frequency = command.parameters[0]
- when 31 # 歩行アニメ ON
- #以下変更
- if @member==1
- @walk_anime = true
- elsif @member==2
- $game_subplayer1.walk_anime = true
- elsif @member==3
- $game_subplayer2.walk_anime = true
- elsif @member==4
- $game_subplayer3.walk_anime = true
- elsif @member==0
- $game_subplayer3.walk_anime = true
- $game_subplayer2.walk_anime = true
- $game_subplayer1.walk_anime = true
- @walk_anime = true
- end
- #ここまで
- when 32 # 歩行アニメ OFF
- #以下変更
- if @member==1
- @walk_anime = false
- elsif @member==2
- $game_subplayer1.walk_anime = false
- elsif @member==3
- $game_subplayer2.walk_anime = false
- elsif @member==4
- $game_subplayer3.walk_anime = false
- elsif @member==0
- $game_subplayer3.walk_anime = false
- $game_subplayer2.walk_anime = false
- $game_subplayer1.walk_anime = false
- @walk_anime = false
- end
- #ここまで
- when 33 # 足踏みアニメ ON
- #以下変更
- if @member==1
- @step_anime = true
- elsif @member==2
- $game_subplayer1.step_anime = true
- elsif @member==3
- $game_subplayer2.step_anime = true
- elsif @member==4
- $game_subplayer3.step_anime = true
- elsif @member==0
- $game_subplayer3.step_anime = true
- $game_subplayer2.step_anime = true
- $game_subplayer1.step_anime = true
- @step_anime = true
- end
- #ここまで
- when 34 # 足踏みアニメ OFF
- #以下変更
- if @member==1
- @step_anime = false
- elsif @member==2
- $game_subplayer1.step_anime = false
- elsif @member==3
- $game_subplayer2.step_anime = false
- elsif @member==4
- $game_subplayer3.step_anime = false
- elsif @member==0
- $game_subplayer3.step_anime = false
- $game_subplayer2.step_anime = false
- $game_subplayer1.step_anime = false
- @step_anime = false
- end
- #ここまで
- when 35 # 向き固定 ON
- #以下変更
- if @member==1
- @direction_fix = true
- elsif @member==2
- $game_subplayer1.direction_fix = true
- elsif @member==3
- $game_subplayer2.direction_fix = true
- elsif @member==4
- $game_subplayer3.direction_fix = true
- elsif @member==0
- $game_subplayer3.direction_fix = true
- $game_subplayer2.direction_fix = true
- $game_subplayer1.direction_fix = true
- @direction_fix = true
- end
- #ここまで
- when 36 # 向き固定 OFF
- #以下変更
- if @member==1
- @direction_fix = false
- elsif @member==2
- $game_subplayer1.direction_fix = false
- elsif @member==3
- $game_subplayer2.direction_fix = false
- elsif @member==4
- $game_subplayer3.direction_fix = false
- elsif @member==0
- $game_subplayer3.direction_fix = false
- $game_subplayer2.direction_fix = false
- $game_subplayer1.direction_fix = false
- @direction_fix = false
- end
- #ここまで
- when 37 # すり抜け ON
- #以下変更
- @through = true
- $game_subplayer1.through = true
- $game_subplayer2.through = true
- $game_subplayer3.through = true
- #ここまで
- when 38 # すり抜け OFF
- #以下変更
- @through = false
- $game_subplayer1.through = false
- $game_subplayer2.through = false
- $game_subplayer3.through = false
- #ここまで
- when 39 # 透明化 ON
- #以下変更
- if @member==1
- @transparent = true
- elsif @member==2
- $game_subplayer1.transparent = true
- elsif @member==3
- $game_subplayer2.transparent = true
- elsif @member==4
- $game_subplayer3.transparent = true
- elsif @member==0
- $game_subplayer3.transparent = true
- $game_subplayer2.transparent = true
- $game_subplayer1.transparent = true
- @transparent = true
- end
- #ここまで
- when 40 # 透明化 OFF
- #以下変更
- if @member==1
- @transparent = false
- elsif @member==2
- $game_subplayer1.transparent = false
- elsif @member==3
- $game_subplayer2.transparent = false
- elsif @member==4
- $game_subplayer3.transparent = false
- elsif @member==0
- $game_subplayer3.transparent = false
- $game_subplayer2.transparent = false
- $game_subplayer1.transparent = false
- @transparent = false
- end
- #ここまで
- when 41 # グラフィック変更
- #以下変更
- if @member==1
- set_graphic(command.parameters[0], command.parameters[1])
- elsif @member==2
- $game_subplayer1.set_graphic(command.parameters[0], command.parameters[1])
- elsif @member==3
- $game_subplayer2.set_graphic(command.parameters[0], command.parameters[1])
- elsif @member==4
- $game_subplayer3.set_graphic(command.parameters[0], command.parameters[1])
- elsif @member==0
- $game_subplayer3.set_graphic(command.parameters[0], command.parameters[1])
- $game_subplayer2.set_graphic(command.parameters[0], command.parameters[1])
- $game_subplayer1.set_graphic(command.parameters[0], command.parameters[1])
- set_graphic(command.parameters[0], command.parameters[1])
- end
- #ここまで
- when 42 # 不透明度の変更
- #以下変更
- if @member==1
- @opacity = command.parameters[0]
- elsif @member==2
- $game_subplayer1.opacity = command.parameters[0]
- elsif @member==3
- $game_subplayer2.opacity = command.parameters[0]
- elsif @member==4
- $game_subplayer3.opacity = command.parameters[0]
- elsif @member==0
- $game_subplayer3.opacity = command.parameters[0]
- $game_subplayer2.opacity = command.parameters[0]
- $game_subplayer1.opacity = command.parameters[0]
- @opacity = command.parameters[0]
- end
- #ここまで
- when 43 # 合成方法の変更
- #以下変更
- if @member==1
- @blend_type = command.parameters[0]
- elsif @member==2
- $game_subplayer1.blend_type = command.parameters[0]
- elsif @member==3
- $game_subplayer2.blend_type = command.parameters[0]
- elsif @member==4
- $game_subplayer3.blend_type = command.parameters[0]
- elsif @member==0
- $game_subplayer3.blend_type = command.parameters[0]
- $game_subplayer2.blend_type = command.parameters[0]
- $game_subplayer1.blend_type = command.parameters[0]
- @blend_type = command.parameters[0]
- end
- #ここまで
- when 44 # SE の演奏
- command.parameters[0].play
- when 45 # スクリプト
- eval(command.parameters[0])
- end
- if not @move_route.skippable and @move_failed
- return # [移動できない場合は無視] OFF & 移動失敗
- end
- @move_route_index += 1
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 移動可能判定
- #--------------------------------------------------------------------------
- def movable?
- return false if moving? # 移動中
- return false if @move_route_forcing # 移動ルート強制中
- return false if @vehicle_getting_on # 乗る動作の途中
- return false if @vehicle_getting_off # 降りる動作の途中
- return false if $game_message.visible # メッセージ表示中
- return false if @gather_on # 集合中 #追加
- return false if in_airship? and not $game_map.airship.movable?
- return true
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- last_real_x = @real_x
- last_real_y = @real_y
- last_moving = moving?
- move_by_input
-
- #以下スーパークラスのupdateメソッドをコピー
- if jumping? # ジャンプ中
- update_jump
- elsif moving? # 移動中
- update_move
- else # 停止中
- update_stop
- end
- if @wait_count > 0 # ウェイト中
- @wait_count -= 1
- elsif @gather_on # 追加
- update_gather # 追加
- elsif @move_route_forcing # 移動ルート強制中
- move_type_custom
- elsif not @locked # ロック中以外
- update_self_movement
- end
- update_animation
- #ここまで
-
- update_scroll(last_real_x, last_real_y)
- update_vehicle
- update_nonmoving(last_moving)
- end
- #--------------------------------------------------------------------------
- # ● サブキャラクター集合メソッド(これを,スクリプトにより呼び出す) #追加
- #--------------------------------------------------------------------------
- def gather
- @gather_on = true
- end
- #--------------------------------------------------------------------------
- # ● サブキャラクター集合更新 #追加
- #--------------------------------------------------------------------------
- def update_gather
- return unless @gather_on
- return if $game_subplayer3.moving?
- pos = []
- pos.push(@x,@y)
- if(@gather_count==0)
- $game_subplayer1.move(pos);@gather_count+=1
- elsif(@gather_count==1)
- $game_subplayer2.move(pos);@gather_count+=1
- elsif(@gather_count==2)
- $game_subplayer3.move(pos);@gather_count+=1
- elsif(@gather_count==3)
- @gather_count=0;@gather_on=false
- end
- end
- #--------------------------------------------------------------------------
- # ● 強制行動キャラクタを選択する(これを,スクリプトにより呼び出す) #追加
- #--------------------------------------------------------------------------
- def set_member(x)
- @member = x
- end
- end
- #==============================================================================
- # ■ Game_Interpreter_re
- #------------------------------------------------------------------------------
- # イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
- # Game_Troop クラス、Game_Event クラスの内部で使用されます。(再定義)
- #==============================================================================
- class Game_Interpreter
- #--------------------------------------------------------------------------
- # ● 場所移動
- #--------------------------------------------------------------------------
- def command_201
- return true if $game_temp.in_battle
- if $game_player.transfer? or # 場所移動中
- $game_message.visible # メッセージ表示中
- return false
- end
- if @params[0] == 0 # 直接指定
- map_id = @params[1]
- x = @params[2]
- y = @params[3]
- direction = @params[4]
- else # 変数で指定
- map_id = $game_variables[@params[1]]
- x = $game_variables[@params[2]]
- y = $game_variables[@params[3]]
- direction = @params[4]
- end
- $game_player.reserve_transfer(map_id, x, y, direction)
- $game_subplayer1.reserve_transfer(map_id, x, y, direction) #追加
- $game_subplayer2.reserve_transfer(map_id, x, y, direction) #追加
- $game_subplayer3.reserve_transfer(map_id, x, y, direction) #追加
- @index += 1
- return false
- end
- #--------------------------------------------------------------------------
- # ● 透明状態の変更
- #--------------------------------------------------------------------------
- def command_211
- $game_player.transparent = (@params[0] == 0)
- $game_subplayer1.transparent = (@params[0] == 0) #追加
- $game_subplayer2.transparent = (@params[0] == 0) #追加
- $game_subplayer3.transparent = (@params[0] == 0) #追加
- return true
- end
- #--------------------------------------------------------------------------
- # ● アニメーションの表示
- #--------------------------------------------------------------------------
- def command_212
- character = get_character(@params[0])
- if character == $game_player
- if $game_player.member == 0
- $game_player.animation_id = @params[1]
- $game_subplayer1.animation_id = @params[1]
- $game_subplayer2.animation_id = @params[1]
- $game_subplayer3.animation_id = @params[1]
- elsif $game_player.member == 1
- $game_player.animation_id = @params[1]
- elsif $game_player.member == 2
- $game_subplayer1.animation_id = @params[1]
- elsif $game_player.member == 3
- $game_subplayer2.animation_id = @params[1]
- elsif $game_player.member == 4
- $game_subplayer3.animation_id = @params[1]
- end
- elsif character != nil
- character.animation_id = @params[1]
- end
- return true
- end
- #--------------------------------------------------------------------------
- # ● フキダシアイコンの表示
- #--------------------------------------------------------------------------
- def command_213
- character = get_character(@params[0])
- if character == $game_player
- if $game_player.member == 0
- $game_player.balloon_id = @params[1]
- $game_subplayer1.balloon_id = @params[1]
- $game_subplayer2.balloon_id = @params[1]
- $game_subplayer3.balloon_id = @params[1]
- elsif $game_player.member == 1
- $game_player.balloon_id = @params[1]
- elsif $game_player.member == 2
- $game_subplayer1.balloon_id = @params[1]
- elsif $game_player.member == 3
- $game_subplayer2.balloon_id = @params[1]
- elsif $game_player.member == 4
- $game_subplayer3.balloon_id = @params[1]
- end
- elsif character != nil
- character.balloon_id = @params[1]
- end
- return true
- end
- end
- #==============================================================================
- # ■ Scene_File
- #------------------------------------------------------------------------------
- # ファイル画面の処理を行うクラスです。
- #==============================================================================
- class Scene_File < Scene_Base
- #--------------------------------------------------------------------------
- # ● セーブデータの書き込み
- # file : 書き込み用ファイルオブジェクト (オープン済み)
- #--------------------------------------------------------------------------
- def write_save_data(file)
- characters = []
- for actor in $game_party.members
- characters.push([actor.character_name, actor.character_index])
- end
- $game_system.save_count += 1
- $game_system.version_id = $data_system.version_id
- @last_bgm = RPG::BGM::last
- @last_bgs = RPG::BGS::last
- Marshal.dump(characters, file)
- Marshal.dump(Graphics.frame_count, file)
- Marshal.dump(@last_bgm, file)
- Marshal.dump(@last_bgs, file)
- Marshal.dump($game_system, file)
- Marshal.dump($game_message, file)
- Marshal.dump($game_switches, file)
- Marshal.dump($game_variables, file)
- Marshal.dump($game_self_switches, file)
- Marshal.dump($game_actors, file)
- Marshal.dump($game_party, file)
- Marshal.dump($game_troop, file)
- Marshal.dump($game_map, file)
- Marshal.dump($game_player, file)
- Marshal.dump($game_subplayer1, file) #追加
- Marshal.dump($game_subplayer2, file) #追加
- Marshal.dump($game_subplayer3, file) #追加
- end
- #--------------------------------------------------------------------------
- # ● セーブデータの読み込み
- # file : 読み込み用ファイルオブジェクト (オープン済み)
- #--------------------------------------------------------------------------
- def read_save_data(file)
- characters = Marshal.load(file)
- Graphics.frame_count = Marshal.load(file)
- @last_bgm = Marshal.load(file)
- @last_bgs = Marshal.load(file)
- $game_system = Marshal.load(file)
- $game_message = Marshal.load(file)
- $game_switches = Marshal.load(file)
- $game_variables = Marshal.load(file)
- $game_self_switches = Marshal.load(file)
- $game_actors = Marshal.load(file)
- $game_party = Marshal.load(file)
- $game_troop = Marshal.load(file)
- $game_map = Marshal.load(file)
- $game_player = Marshal.load(file)
- $game_subplayer1 = Marshal.load(file) #追加
- $game_subplayer2 = Marshal.load(file) #追加
- $game_subplayer3 = Marshal.load(file) #追加
- if $game_system.version_id != $data_system.version_id
- $game_map.setup($game_map.map_id)
- $game_player.center($game_player.x, $game_player.y)
- end
- end
- end
- #==============================================================================
- # ■ Scene_Map_re
- #------------------------------------------------------------------------------
- # マップ画面の処理を行うクラスです。(再定義)
- #==============================================================================
- class Scene_Map < Scene_Base
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- super
- $game_map.interpreter.update # インタプリタを更新
- $game_map.update # マップを更新
- $game_player.update # プレイヤーを更新
- $game_subplayer1.update # サブプレイヤーを更新 #追加
- $game_subplayer2.update # サブプレイヤーを更新 #追加
- $game_subplayer3.update # サブプレイヤーを更新 #追加
- $game_system.update # タイマーを更新
- @spriteset.update # スプライトセットを更新
- @message_window.update # メッセージウィンドウを更新
- unless $game_message.visible # メッセージ表示中以外
- update_transfer_player
- update_encounter
- update_call_menu
- update_call_debug
- update_scene_change
- end
- end
- #--------------------------------------------------------------------------
- # ● 場所移動の処理
- #--------------------------------------------------------------------------
- def update_transfer_player
- return unless $game_player.transfer?
- fade = (Graphics.brightness > 0)
- fadeout(30) if fade
- @spriteset.dispose # スプライトセットを解放
- $game_player.perform_transfer # 場所移動の実行
- $game_subplayer1.perform_transfer # 場所移動の実行 #追加
- $game_subplayer2.perform_transfer # 場所移動の実行 #追加
- $game_subplayer3.perform_transfer # 場所移動の実行 #追加
- $game_map.autoplay # BGM と BGS の自動切り替え
- $game_map.update
- Graphics.wait(15)
- @spriteset = Spriteset_Map.new # スプライトセットを再作成
- fadein(30) if fade
- Input.update
- end
- end
- #==============================================================================
- # ■ Scene_Title_re
- #------------------------------------------------------------------------------
- # タイトル画面の処理を行うクラスです。(再定義)
- #==============================================================================
- class Scene_Title < Scene_Base
- #--------------------------------------------------------------------------
- # ● 各種ゲームオブジェクトの作成
- #--------------------------------------------------------------------------
- def create_game_objects
- $game_temp = Game_Temp.new
- $game_message = Game_Message.new
- $game_system = Game_System.new
- $game_switches = Game_Switches.new
- $game_variables = Game_Variables.new
- $game_self_switches = Game_SelfSwitches.new
- $game_actors = Game_Actors.new
- $game_party = Game_Party.new
- $game_troop = Game_Troop.new
- $game_map = Game_Map.new
- $game_player = Game_Player.new
- $game_subplayer1 = Game_Subplayer.new #追加
- $game_subplayer2 = Game_Subplayer.new #追加
- $game_subplayer3 = Game_Subplayer.new #追加
- end
-
- #--------------------------------------------------------------------------
- # ● コマンド : ニューゲーム
- #--------------------------------------------------------------------------
- def command_new_game
- confirm_player_location
- Sound.play_decision
- $game_party.setup_starting_members # 初期パーティ
- $game_map.setup($data_system.start_map_id) # 初期位置のマップ
- $game_player.moveto($data_system.start_x, $data_system.start_y)
- $game_player.refresh
- $game_subplayer1.moveto($data_system.start_x, $data_system.start_y)#追加
- $game_subplayer1.refresh(1) #追加
- $game_subplayer2.moveto($data_system.start_x, $data_system.start_y)#追加
- $game_subplayer2.refresh(2) #追加
- $game_subplayer3.moveto($data_system.start_x, $data_system.start_y)#追加
- $game_subplayer3.refresh(3) #追加
- $scene = Scene_Map.new
- RPG::BGM.fade(1500)
- close_command_window
- Graphics.fadeout(60)
- Graphics.wait(40)
- Graphics.frame_count = 0
- RPG::BGM.stop
- $game_map.autoplay
- end
- end
- #==============================================================================
- # ■ Spriteset_Map_re
- #------------------------------------------------------------------------------
- # マップ画面のスプライトやタイルマップなどをまとめたクラスです。このクラスは
- # 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
- @character_sprites.push(Sprite_Character.new(@viewport1, $game_subplayer3))#追加
- @character_sprites.push(Sprite_Character.new(@viewport1, $game_subplayer2))#追加
- @character_sprites.push(Sprite_Character.new(@viewport1, $game_subplayer1))#追加
- @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
- end
- end
- #==============================================================================
- # ■ Game_Subplayer
- #------------------------------------------------------------------------------
- # サブプレイヤーを扱うクラスです。
- # このクラスのインスタンスは $game_subplayer1~3で参照されます。
- # Game_Playerクラスを元に作っています
- #==============================================================================
- class Game_Subplayer < Game_Character
- #--------------------------------------------------------------------------
- # ● 定数
- #--------------------------------------------------------------------------
- CENTER_X = (544 / 2 - 16) * 8 # 画面中央の X 座標 * 8
- CENTER_Y = (416 / 2 - 16) * 8 # 画面中央の Y 座標 * 8
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :move_speed # 移動速度
- attr_accessor :walk_anime # 歩行アニメ
- attr_accessor :step_anime # 足踏みアニメ
- attr_accessor :direction_fix # 向き固定
- attr_accessor :through # すり抜け
- attr_accessor :opacity # 不透明度
- attr_accessor :blend_type # 合成方法
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- super
- @transferring = false # 場所移動フラグ
- @new_map_id = 0 # 移動先 マップ ID
- @new_x = 0 # 移動先 X 座標
- @new_y = 0 # 移動先 Y 座標
- @new_direction = 0 # 移動後の向き
- @number = 0 # 何番目のキャラか
- end
- #--------------------------------------------------------------------------
- # ● 場所移動の予約
- # map_id : マップ ID
- # x : X 座標
- # y : Y 座標
- # direction : 移動後の向き
- #--------------------------------------------------------------------------
- def reserve_transfer(map_id, x, y, direction)
- @transferring = true
- @new_map_id = map_id
- @new_x = x
- @new_y = y
- @new_direction = direction
- end
- #--------------------------------------------------------------------------
- # ● 場所移動の実行
- #--------------------------------------------------------------------------
- def perform_transfer
- return unless @transferring
- @transferring = false
- set_direction(@new_direction)
- if $game_map.map_id != @new_map_id
- $game_map.setup(@new_map_id) # 別マップへ移動
- end
- moveto(@new_x, @new_y)
- end
- #--------------------------------------------------------------------------
- # ● ダッシュ状態判定
- #--------------------------------------------------------------------------
- def dash?
- return false if $game_player.move_route_forcing
- return false if $game_map.disable_dash?
- return false if $game_player.gather_on # 集合中
- return Input.press?(Input::A)
- end
- #--------------------------------------------------------------------------
- # ● デバッグすり抜け状態判定
- #--------------------------------------------------------------------------
- def debug_through?
- return false unless $TEST
- return Input.press?(Input::CTRL)
- end
- #--------------------------------------------------------------------------
- # ● 画面中央に来るようにマップの表示位置を設定
- # x : X 座標
- # y : Y 座標
- #--------------------------------------------------------------------------
- def center(x, y)
- display_x = x * 256 - CENTER_X # 座標を計算
- unless $game_map.loop_horizontal? # 横にループしない?
- max_x = ($game_map.width - 17) * 256 # 最大値を計算
- display_x = [0, [display_x, max_x].min].max # 座標を修正
- end
- display_y = y * 256 - CENTER_Y # 座標を計算
- unless $game_map.loop_vertical? # 縦にループしない?
- max_y = ($game_map.height - 13) * 256 # 最大値を計算
- display_y = [0, [display_y, max_y].min].max # 座標を修正
- end
- $game_map.set_display_pos(display_x, display_y) # 表示位置変更
- end
- #--------------------------------------------------------------------------
- # ● 指定位置に移動
- # x : X 座標
- # y : Y 座標
- #--------------------------------------------------------------------------
- def moveto(x, y)
- super
- center(x, y) # センタリング
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh(number)
- @number = number
- if $game_party.members.size <= number
- @character_name = ""
- @character_index = 0
- else
- actor = $game_party.members[number] # アクターを取得
- @character_name = actor.character_name
- @character_index = actor.character_index
- end
- end
- #--------------------------------------------------------------------------
- # ● 動き
- #--------------------------------------------------------------------------
- def move(xy)
- if @x==xy[0] && @y==xy[1]
- return
- elsif @x==xy[0]+1 && @y==xy[1]
- move_left
- elsif @x==xy[0]-1 && @y==xy[1]
- move_right
- elsif @x==xy[0] && @y==xy[1]+1
- move_up
- elsif @x==xy[0] && @y==xy[1]-1
- move_down
- elsif @x==xy[0]+1 && @y==xy[1]+1
- move_upper_left
- elsif @x==xy[0]-1 && @y==xy[1]+1
- move_upper_right
- elsif @x==xy[0]+1 && @y==xy[1]-1
- move_lower_left
- elsif @x==xy[0]-1 && @y==xy[1]-1
- move_lower_right
- #画面ループの端っこの時
- elsif @x==0 && xy[0]>@x+1 && @y==xy[1]
- move_left
- elsif xy[0]==0 && @x+1>xy[0] && @y==xy[1]
- move_right
- elsif @x==xy[0] && @y==0 && xy[1]>@y+1
- move_up
- elsif @x==xy[0] && xy[1]==0 && @y+1>xy[1]
- move_down
- #画面ループの端っこで,ナナメ移動の場合
- elsif @x<0 || @y<0
- temp_x = $game_map.round_x(@x)
- temp_y = $game_map.round_y(@y)
- if temp_x==xy[0]+1 && @y==xy[1]
- move_left
- elsif temp_x==xy[0]-1 && @y==xy[1]
- move_right
- elsif @x==xy[0] && temp_y==xy[1]+1
- move_up
- elsif @x==xy[0] && temp_y==xy[1]-1
- move_down
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 下に移動
- # turn_ok : その場での向き変更を許可
- #--------------------------------------------------------------------------
- def move_down(turn_ok = true)
- pos = []
- if passable?(@x, @y+1) # 通行可能
- turn_down
- pos.push(@x,@y)
- @y = $game_map.round_y(@y+1)
- @real_y = (@y-1)*256
- if @number == 1
- $game_subplayer2.move(pos)
- elsif @number == 2
- $game_subplayer3.move(pos)
- end
- @move_failed = false
- else # 通行不可能
- turn_down if turn_ok
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 左に移動
- # turn_ok : その場での向き変更を許可
- #--------------------------------------------------------------------------
- def move_left(turn_ok = true)
- pos = []
- if passable?(@x-1, @y) # 通行可能
- turn_left
- pos.push(@x,@y)
- @x = $game_map.round_x(@x-1)
- @real_x = (@x+1)*256
- if @number == 1
- $game_subplayer2.move(pos)
- elsif @number == 2
- $game_subplayer3.move(pos)
- end
- @move_failed = false
- else # 通行不可能
- turn_left if turn_ok
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 右に移動
- # turn_ok : その場での向き変更を許可
- #--------------------------------------------------------------------------
- def move_right(turn_ok = true)
- pos = []
- if passable?(@x+1, @y) # 通行可能
- turn_right
- pos.push(@x,@y)
- @x = $game_map.round_x(@x+1)
- @real_x = (@x-1)*256
- if @number == 1
- $game_subplayer2.move(pos)
- elsif @number == 2
- $game_subplayer3.move(pos)
- end
- @move_failed = false
- else # 通行不可能
- turn_right if turn_ok
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 上に移動
- # turn_ok : その場での向き変更を許可
- #--------------------------------------------------------------------------
- def move_up(turn_ok = true)
- pos = []
- if passable?(@x, @y-1) # 通行可能
- turn_up
- pos.push(@x,@y)
- @y = $game_map.round_y(@y-1)
- @real_y = (@y+1)*256
- if @number == 1
- $game_subplayer2.move(pos)
- elsif @number == 2
- $game_subplayer3.move(pos)
- end
- @move_failed = false
- else # 通行不可能
- turn_up if turn_ok
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 左下に移動
- #--------------------------------------------------------------------------
- def move_lower_left
- pos = []
- unless @direction_fix
- @direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
- end
- if (passable?(@x, @y+1) and passable?(@x-1, @y+1)) or
- (passable?(@x-1, @y) and passable?(@x-1, @y+1))
- pos.push(@x,@y)
- @x -= 1
- @y += 1
- if @number == 1
- $game_subplayer2.move(pos)
- elsif @number == 2
- $game_subplayer3.move(pos)
- end
- @move_failed = false
- else
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 右下に移動
- #--------------------------------------------------------------------------
- def move_lower_right
- pos = []
- unless @direction_fix
- @direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
- end
- if (passable?(@x, @y+1) and passable?(@x+1, @y+1)) or
- (passable?(@x+1, @y) and passable?(@x+1, @y+1))
- pos.push(@x,@y)
- @x += 1
- @y += 1
- if @number == 1
- $game_subplayer2.move(pos)
- elsif @number == 2
- $game_subplayer3.move(pos)
- end
- @move_failed = false
- else
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 左上に移動
- #--------------------------------------------------------------------------
- def move_upper_left
- pos = []
- unless @direction_fix
- @direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
- end
- if (passable?(@x, @y-1) and passable?(@x-1, @y-1)) or
- (passable?(@x-1, @y) and passable?(@x-1, @y-1))
- pos.push(@x,@y)
- @x -=1
- @y -=1
- if @number == 1
- $game_subplayer2.move(pos)
- elsif @number == 2
- $game_subplayer3.move(pos)
- end
- @move_failed = false
- else
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 右上に移動
- #--------------------------------------------------------------------------
- def move_upper_right
- pos = []
- unless @direction_fix
- @direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
- end
- if (passable?(@x, @y-1) and passable?(@x+1, @y-1)) or
- (passable?(@x+1, @y) and passable?(@x+1, @y-1))
- pos.push(@x,@y)
- @x += 1
- @y -= 1
- if @number == 1
- $game_subplayer2.move(pos)
- elsif @number == 2
- $game_subplayer3.move(pos)
- end
- @move_failed = false
- else
- @move_failed = true
- end
- end
- #--------------------------------------------------------------------------
- # ● キャラクター衝突判定
- # x : X 座標
- # y : Y 座標
- #--------------------------------------------------------------------------
- def collide_with_characters?(x, y)
- for event in $game_map.events_xy(x, y) # イベントの座標と一致
- unless event.through # すり抜け OFF?
- return true if self.is_a?(Game_Event) # 自分がイベント
- return true if event.priority_type == 1 # 相手が通常キャラ
- end
- end
- if @priority_type == 1 # 自分が通常キャラ
- return true if $game_map.boat.pos_nt?(x, y) # 小型船の座標と一致
- return true if $game_map.ship.pos_nt?(x, y) # 大型船の座標と一致
- end
- return false
- end
- end
复制代码 |
|