# ============================================================================= # TheoAllen - Animated Battleback # Version : 1.0b # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com # (English Documentation) # ============================================================================= ($imported ||= {})[:Theo_AnimBattleBack] = true # ============================================================================= # Change Logs: # ----------------------------------------------------------------------------- # 2014.07.15 - Fixed bug where you couldn't put unanimated battleback # 2013.10.28 - Finished script # ============================================================================= =begin ------------------------------------------------------------------------ Introduction : ------------------------------------------------------------------------ Want some animated battleback? Well, this script may grant your wish. I hope so ------------------------------------------------------------------------ How to use : ------------------------------------------------------------------------ Put this script below material but above main. Create a folder inside folder Graphics. Name it "AnimBatleBack" Prepare the background image for battleback, name it with format "filename_01.png". Prepare the next frame image and name it with "filename_02.png". You may insert as many as you like. Remember to include frame number in the image filename. ("_02.png _03.png" etc ...) In order to use animated battleback in a certain map, use a notetag where "animation_key" is a "key" which located at configuration below. Remember, the notetag doesn't require quotes ("") to write. Just put ------------------------------------------------------------------------ Terms of use : ------------------------------------------------------------------------ Credit me, TheoAllen. You are free to edit this script by your own. As long as you don't claim it yours. For commercial purpose, don't forget to give me a free copy of the game. =end # ============================================================================= # Configuration # ============================================================================= module Theo module AnimBB # -------------------------------------------------------------------------- # Animated Battleback Database # -------------------------------------------------------------------------- # Manuals : # # Key --> A keyword that to be used in map notetag # Name --> Graphics file name (without "_01.png") # Frame --> Max frame for animation # Rate --> Refresh rate. The lower value, the faster animation will be # shown # -------------------------------------------------------------------------- List = { # "Key" => ["Name" , Frame, Rate], "mansion" => ["mansion" , 8, 4], "dtown" => ["deserttown", 7, 10], # Add by yourself } # <-- Don't touch at all cost! end end # ============================================================================= # End of Configuration # ============================================================================= class << Cache def animbattleback(filename, index) file = filename + sprintf("_%02d", index) load_bitmap("Graphics/AnimBattleBack/", file) end end class Game_System attr_accessor :anim_bb alias theo_animbb_init initialize def initialize theo_animbb_init @anim_bb = "" end end class Game_Map alias theo_animbb_setup setup def setup(map_id) theo_animbb_setup(map_id) setup_animbb end def setup_animbb $game_system.anim_bb = "" @map.note.split(/[\r\n]+/).each do |line| if line =~ /<(?:anim bb|anim_bb):[ ]*(.+)>/i $game_system.anim_bb = $1.to_s end end end end class AnimBB < Sprite attr_reader :name attr_reader :index def initialize(viewport) super(viewport) init_member end def init_member @name = $game_system.anim_bb @count = 0 @index = 1 refresh_bitmap end def refresh_bitmap if name.empty? self.bitmap = Cache.empty_bitmap else self.bitmap = Cache.animbattleback(file, index) end end def file Theo::AnimBB::List[name][0] end def max_index Theo::AnimBB::List[name][1] end def rate Theo::AnimBB::List[name][2] end def need_refresh? @count % rate == 0 && !name.empty? end def change_index @index += 1 if @index == max_index @index = 1 end refresh_bitmap end def update super return if name.empty? @count += 1 change_index if need_refresh? end end class Spriteset_Battle alias theo_animbb_create_viewports create_viewports def create_viewports theo_animbb_create_viewports create_animbb end def create_animbb @animbb = AnimBB.new(@viewport1) @animbb.z = 5 center_sprite(@animbb) end alias theo_animbb_update update def update theo_animbb_update @animbb.update end alias theo_animbb_dispose dispose def dispose theo_animbb_dispose @animbb.dispose end end