Pomogła: 1 raz Dołączyła: 26 Wrz 2009 Posty: 88 Skąd: Stumilowy Las
Wysłany: Sro 28 Paź, 2009 09:08
Ruch w 8 kierunkach
Cześć Ultimowicze
Dzisiaj skrypt, który umożliwia poruszanie się bohatera, nie jak dotychczas w 4 kierunkach a w ośmiu. Do standardowych prawa, lewa, góry i dołu dochodzą skosy. Skrypt ten w oryginale został znaleziony na jednej z japońskich stron. Ja go jedynie lekko uprościłam.
alias initialize_KGC_Dash_8DirMove initialize
def initialize
initialize_KGC_Dash_8DirMove
@temp_dash_speed = nil
@temp_walk_speed = nil
end
end
# www.ultimateam.pl
class Game_Party < Game_Unit
def decrease_steps
@steps -= 1
end
end
class Game_Character
def direction_8dir
return @direction
end
alias set_direction_KGC_Dash_8DirMove set_direction
def set_direction(direction)
last_dir = @direction
set_direction_KGC_Dash_8DirMove(direction)
if !@direction_fix && direction != 0
@direction_8dir = direction
end
end
alias move_lower_left_KGC_Dash_8DirMove move_lower_left
def move_lower_left
move_lower_left_KGC_Dash_8DirMove
@direction_8dir = 1 unless @direction_fix
end
alias move_lower_right_KGC_Dash_8DirMove move_lower_right
def move_lower_right
move_lower_right_KGC_Dash_8DirMove
@direction_8dir = 3 unless @direction_fix
end
alias move_upper_left_KGC_Dash_8DirMove move_upper_left
def move_upper_left
move_upper_left_KGC_Dash_8DirMove
@direction_8dir = 7 unless @direction_fix
end
alias move_upper_right_KGC_Dash_8DirMove move_upper_right
def move_upper_right
move_upper_right_KGC_Dash_8DirMove
@direction_8dir = 9 unless @direction_fix
end
end
class Game_Player < Game_Character
alias initialize_KGC_Dash_8DirMove initialize
def initialize
initialize_KGC_Dash_8DirMove
reset_move_speed
end
def direction_8dir
@direction_8dir = @direction if @direction_8dir == nil
return @direction_8dir
end
def reset_move_speed
@move_speed = KGC::Dash_8DirMove::DEFAULT_WALK_SPEED
end
# www.ultimateam.pl
if KGC::Dash_8DirMove::ENABLE_8DIR
def move_by_input
return unless movable?
return if $game_map.interpreter.running?
if @reserved_move != nil
case @reserved_move
when :down
move_down if passable_l?(2)
when :left
move_left if passable_l?(4)
when :right
move_right if passable_l?(6)
when :up
move_up if passable_l?(8)
end
@reserved_move = nil
return
end
last_steps = $game_party.steps
case Input.dir8
when 1
if !passable_l?(2) && passable_l?(4)
move_up
move_right
end
@direction = 8
else
return
end
@direction_8dir = Input.dir8
if $game_party.steps - last_steps == 2
$game_party.decrease_steps
end
end
def passable_l?(d)
if $imported["TilesetExtension"]
return passable?(@x, @y, d)
else
case d
when 1
return passable?(@x-1, @y+1)
when 2
return passable?(@x, @y+1)
when 3
return passable?(@x+1, @y+1)
when 4
return passable?(@x-1, @y)
when 6
return passable?(@x+1, @y)
when 7
return passable?(@x-1, @y-1)
when 8
return passable?(@x, @y-1)
when 9
return passable?(@x+1, @y-1)
end
end
return false
end
end
dir = @character.direction_8dir
case dir % 2
when 0
if @last_slant
self.bitmap = Cache.character(@character_name)
@last_slant = false
end
else
unless @last_slant
self.bitmap = Cache.character(@character_name_slant)
@last_slant = true
end
dir = SLANT_ANIME_TABLE[dir]
end
sy = (index / 4 * 4 + (dir - 2) / 2) * @ch
self.src_rect.set(sx, sy, @cw, @ch)
end
end
end
# www.ultimateam.pl
Fajne, dużo lepiej chodzi się po mapie. Przydałby się jeszcze jakiś char z różnymi kierunkami żeby widać było że idzie na ukos. Ale skrypcik konkretny i nie kłóci się z tymi 10 co mam do tej pory :PP
CC, widzę, że masz battlery z kaduki :D
Skrypt dobry, użyłbym go, chociaż wtedy do kilku postaci musiałbym dodać charset, co dałoby łącznie 4 charsety na jedną postać... ale to nie problem, bardziej przeszkadza to, że faktycznie jakoś dziwnie się porusza + postać może poruszać się tam, gdzie normalnie nie mogłaby (utrudnia pracę mapmakerowi :D)
________________________
(╯°□°)╯︵ ┻━┻
"A jeśli... Boga nie ma, to co z ciebie za szatan?"
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum