#===============================================================================
# Prosty mechanizm 8-kierunkowego ruchu / Simple 8-Directional Movement
# Autor: Jet10985 (Jet)
# Tłumaczenie: Avara
#===============================================================================
# Skrypt ten umożliwia graczowi poruszanie się po przekątnej, jeśli naciśnie
# dwa przyciski kierunkowe (strzałki) w tym samym czasie.
# Przyciski są w tym samym czasie.
# Skrypt ten posiada: 2 opcje konfiguracji.
#===============================================================================
# Nadpisane metody:
# Brak
#-------------------------------------------------------------------------------
# Dopiski do metod:
# Game_Player: increase_steps, move_(up, left, down, right)
#===============================================================================
module Jet8Dir
# Czy chcesz aby była wykorzystywana dodatkowa grafika podczas ruchu gracza
# po przekątnej?
USE_8DIR_SPRITES = true # true - tak ; false - nie
# Jeśli powyższa opcja jest ustawiona na true, wówczas podczas ruchu po
# przekątnej, wykorzystywana jest grafika przypisana do ID pierwszej postaci
# w drużynie. Przypisujemy dodatkową grafikę do postaci w następujący sposób:
# ID_postaci => ["nazwa grafiki", ID_grafiki]
# Po każdej takiej linijce kodu (oprócz ostatniej) musisz wstawić przecinek.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Od Avary: Dodatkowe grafiki umieść w folderze Graphics/Characters.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DIAG_CHAR_SPRITES = {
1 => ["$DiagSprite (1)", 0], # przecinek
2 => ["$DiagSprite (2)", 0] # brak przecinka w ostatniej linijce
}
end
#===============================================================================
# DALEJ NIE EDYTUJ, CHYBA ŻE WIESZ CO ROBISZ!
#===============================================================================
class Game_Player
attr_accessor :diag_walk
%w[move_up move_down move_left move_right].each {|a|
aStr = %Q{
alias jet9031_#{a} #{a} unless $@
def #{a}(*args, &block)
@diag_walk = false
jet9031_#{a}(*args, &block)
end
}
eval(aStr)
}
def move_by_input
return unless movable?
return if $game_map.interpreter.running?
case Input.dir8
when 1; move_lower_left
when 2; move_down
when 3; move_lower_right
when 4; move_left
when 6; move_right
when 7; move_upper_left
when 8; move_up
when 9; move_upper_right
end
end
alias jet6742_increase_steps increase_steps unless $@
def increase_steps(*args, &block)
jet6742_increase_steps(*args, &block)
@diag_walk ||= false
update_diag_sprite
end
def move_lower_left(*args, &block)
@diag_walk = passable?(self.x - 1, self.y + 1)
super(*args, &block)
@direction = 2
if @move_failed
move_down
move_left(false) unless $game_map.interpreter.running?
end
end
def move_lower_right(*args, &block)
@diag_walk = passable?(self.x + 1, self.y + 1)
super(*args, &block)
@direction = 6
if @move_failed
move_down
move_right(false) unless $game_map.interpreter.running?
end
end
def move_upper_left(*args, &block)
@diag_walk = passable?(self.x - 1, self.y - 1)
super(*args, &block)
@direction = 4
if @move_failed
move_up
move_left(false) unless $game_map.interpreter.running?
end
end
def move_upper_right(*args, &block)
@diag_walk = passable?(self.x + 1, self.y - 1)
super(*args, &block)
@direction = 8
if @move_failed
move_up
move_right(false) unless $game_map.interpreter.running?
end
end
def update_diag_sprite
return unless Jet8Dir::USE_8DIR_SPRITES
if @diag_walk
f = Jet8Dir::DIAG_CHAR_SPRITES
set_graphic(*f[$game_party.members[0].id]) rescue nil
else
f = $game_party.members[0]
set_graphic(f.character_name, f.character_index)
end
end
end