Multi Frames
Автор: HopeBree
Версия: 1.0
Тип: Графика
Описание:
Этот скрипт позволяет использовать графику анимации персонажей или монстров любого количества кадров (отличной от 4).
Использование:
- Вставить скрипт между Scene_Debug и Main
- Добавить в название файла f_n, где n количество кадров в анимации.
PHP код:
###############################################################################
# [XP] Multi Frames #
# Версия: 1.0 #
# Автор: HopeBree #
# =========================================================================== #
# Описание: #
# Этот скрипт позволяет использовать графику анимации персонажей #
# или монстров любого количества кадров (отличной от 4). #
# =========================================================================== #
# Инструкция: #
# Добавить в название файла f_n, где n количество кадров в анимации. #
# =========================================================================== #
# Например: #
# Fighter f_6.png #
# =========================================================================== #
# Установка: #
# Вставить скрипт между Scene_Debug и Main #
###############################################################################
class Game_Actor < Game_Battler
def character_frames
@character_name.gsub(/f\_(\d+)/) do
if $1 != @character_name
return $1.to_i
end
end
return 4
end
end
class Sprite_Character < RPG::Sprite
def character_frames
@character_name.gsub(/f\_(\d+)/) do
if $1 != @character_name
return $1.to_i
end
end
return 4
end
end
class Game_Character
def character_frames
@character_name.gsub(/f\_(\d+)/) do
if $1 != @character_name
return $1.to_i
end
end
return 4
end
end
class Game_Character
def update
if jumping?
update_jump
elsif moving?
update_move
else
update_stop
end
if @anime_count > 18 - @move_speed * 2
if not @step_anime and @stop_count > 0
@pattern = @original_pattern
else
@pattern = (@pattern + 1) %
(self.is_a?(Game_Player) ? character_frames : 4)
end
@anime_count = 0
end
if @wait_count > 0
@wait_count -= 1
return
end
if @move_route_forcing
move_type_custom
return
end
if @starting or lock?
return
end
if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
case @move_type
when 1
move_type_random
when 2
move_type_toward_player
when 3
move_type_custom
end
end
end
end
class Sprite_Character
def update
super
if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_hue != @character.character_hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
if @tile_id >= 384
self.bitmap = RPG::Cache.tile($game_map.tileset_name,
@tile_id, @character.character_hue)
self.src_rect.set(0, 0, 32, 32)
self.ox = 16
self.oy = 32
else
self.bitmap = RPG::Cache.character(@character.character_name,
@character.character_hue)
@cw = bitmap.width /
(@character.is_a?(Game_Player) ? character_frames: 4)
@ch = bitmap.height / 4
self.ox = @cw / 2
self.oy = @ch
end
end
self.visible = (not @character.transparent)
if @tile_id == 0
sx = @character.pattern * @cw
sy = (@character.direction - 2) / 2 * @ch
self.src_rect.set(sx, sy, @cw, @ch)
end
self.x = @character.screen_x
self.y = @character.screen_y
self.z = @character.screen_z(@ch)
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
animation(animation, true)
@character.animation_id = 0
end
end
end
class Window_Base < Window
def draw_actor_graphic(actor, x, y)
bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
cw = bitmap.width / actor.character_frames
ch = bitmap.height / 4
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
end
Социальные закладки