RGSS3_8direction_move_v1.01
번역 해서 얻어냈습니당~
VX 처럼 8방향으루 가는 스크립트 >.<
대시는 없네영...ㅜㅜ
RGSS3_8direction_move_v1.01.txt
┌
#==============================================================================
# ■ RGSS3 8 방향 이동 스크립트 Ver1.01 by 成石, Transplant 쿠쿠밥솥
#------------------------------------------------------------------------------
# 플레이어 캐릭터의 8 방향 이동을 가능하게 합니다.
# 그 외, 플레이어의 이동에 관한 일부 기능에 대해 설정할 수 있습니다.
# 기본적으로 기능확장 의뢰나 경합 대응은 받아들이고 있지 않습니다.양해 바랍니다.
#
# 갱신 이력
# Ver1.01 불필요한 기술 일점을 삭제.
# 스윗치 변환에 의한 대시 금지 기능을 추가.
#==============================================================================
module MOVE_CONTROL
#이 번호의 스윗치가 ON때, 8 방향 이동을 금지해, 4 방향 이동에만 합니다.
FOUR_MOVE_SWITCH = 51
#이 번호의 스윗치가 ON때, 플레이어 캐릭터의 조작을 금지합니다.
MOVE_SEAL_SWITCH = 52
#이 번호의 스윗치가 ON때, 대시 판정이 역전합니다.
#(평상시가 대시, 대시 키를 누르고 있는 상태로 통상 보행이 됩니다)
DASH_REV = 53
#이 번호의 스윗치가 ON때, 대시를 사용할 수 없게 됩니다.
#(스윗치를 바꾸는 일로, 동일 맵으로
# 대시의 할 수 있는 장소와 그렇지 않은 장소를 나눌 수 있습니다)
DASH_SEAL = 54
#이 번호의 변수가 0보다 클 때, 대시 때의 속도가 더욱 증가합니다.
DASH_PLUS = 19
end
class Game_CharacterBase
#--------------------------------------------------------------------------
# ● 이동 속도의 취득(대시를 고려)
#--------------------------------------------------------------------------
alias real_move_speed_8direction real_move_speed
def real_move_speed
if $game_variables[MOVE_CONTROL::DASH_PLUS] > 0
dash_plus = 1 + ($game_variables[MOVE_CONTROL::DASH_PLUS] * 0.1)
@move_speed + (dash? ? dash_plus : 0)
else
real_move_speed_8direction
end
end
end
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# ● 대시 상태 판정
#--------------------------------------------------------------------------
alias dash_rev? dash?
def dash?
return false if $game_switches[MOVE_CONTROL::DASH_SEAL] == true
if $game_switches[MOVE_CONTROL::DASH_REV] == true
return false if @move_route_forcing
return false if $game_map.disable_dash?
return false if vehicle
return false if Input.press?(:A)
return true
else
dash_rev?
end
end
#--------------------------------------------------------------------------
# ● 방향 버튼 입력에 의한 이동 처리
#--------------------------------------------------------------------------
alias move_by_input_8direction move_by_input
def move_by_input
return if $game_switches[MOVE_CONTROL::MOVE_SEAL_SWITCH] == true
if $game_switches[MOVE_CONTROL::FOUR_MOVE_SWITCH] == true
move_by_input_8direction
return
end
return if !movable? || $game_map.interpreter.running?
if Input.press?(:LEFT) && Input.press?(:DOWN)
if passable?(@x, @y, 4) && passable?(@x, @y, 2) &&
passable?(@x - 1, @y, 2) && passable?(@x, @y + 1, 4) &&
passable?(@x - 1, @y + 1, 6) && passable?(@x - 1, @y + 1, 8)
move_diagonal(4, 2)
elsif @direction == 4
if passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
move_straight(2)
elsif passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
move_straight(4)
end
elsif @direction == 2
if passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
move_straight(4)
elsif passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
move_straight(2)
else
move_straight(Input.dir4) if Input.dir4 > 0
end
else
move_straight(Input.dir4) if Input.dir4 > 0
end
elsif Input.press?(:RIGHT) && Input.press?(:DOWN)
if passable?(@x, @y, 6) && passable?(@x, @y, 2) &&
passable?(@x + 1, @y, 2) && passable?(@x, @y + 1, 6) &&
passable?(@x + 1, @y + 1, 4) && passable?(@x + 1, @y + 1, 8)
move_diagonal(6, 2)
elsif @direction == 6
if passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
move_straight(2)
elsif passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
move_straight(6)
end
elsif @direction == 2
if passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
move_straight(6)
elsif passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
move_straight(2)
else
move_straight(Input.dir4) if Input.dir4 > 0
end
else
move_straight(Input.dir4) if Input.dir4 > 0
end
elsif Input.press?(:LEFT) && Input.press?(:UP)
if passable?(@x, @y, 4) && passable?(@x, @y, 8) &&
passable?(@x - 1, @y, 8) && passable?(@x, @y - 1, 4) &&
passable?(@x - 1, @y - 1, 2) && passable?(@x - 1, @y - 1, 6)
move_diagonal(4, 8)
elsif @direction == 4
if passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
move_straight(8)
elsif passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
move_straight(4)
else
move_straight(Input.dir4) if Input.dir4 > 0
end
elsif @direction == 8
if passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
move_straight(4)
elsif passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
move_straight(8)
else
move_straight(Input.dir4) if Input.dir4 > 0
end
else
move_straight(Input.dir4) if Input.dir4 > 0
end
elsif Input.press?(:RIGHT) && Input.press?(:UP)
if passable?(@x, @y, 6) && passable?(@x, @y, 8) &&
passable?(@x + 1, @y, 8) && passable?(@x, @y - 1, 6) &&
passable?(@x + 1, @y - 1, 2) && passable?(@x + 1, @y - 1, 4)
move_diagonal(6, 8)
elsif @direction == 6
if passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
move_straight(8)
elsif passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
move_straight(6)
else
move_straight(Input.dir4) if Input.dir4 > 0
end
elsif @direction == 8
if passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
move_straight(6)
elsif passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
move_straight(8)
else
move_straight(Input.dir4) if Input.dir4 > 0
end
else
move_straight(Input.dir4) if Input.dir4 > 0
end
else
move_straight(Input.dir4) if Input.dir4 > 0
end
unless moving?
@direction = Input.dir4 unless Input.dir4 == 0
end
end
end
┘스크립트 여기까지