Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- #
- # ▼ Moby's Script System - Correct Sprite Display V1.0
- # -- Last Updated: 2012.06.26
- #
- #==============================================================================
- $imported = {} if $imported.nil?
- $imported["MSS-Correct_Sprite_Display"] = 1.0
- #==============================================================================
- # ▼ Updates
- # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- # N/A
- #
- #==============================================================================
- # ▼ Introduction
- # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- # This script corrects how sprites will be displayed, to prevent errors
- # happening when the sprite is higher than 32px and the tile above it is set
- # to star passability.
- #
- #==============================================================================
- # ▼ Instructions
- # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- # To install this script, open up your script editor and copy/paste this script
- # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
- #
- #
- # If you have any questions, bugs you want to report or anything else,
- # please contact me at [email protected] or via my profile on
- # http://forums.rpgmakerweb.com (mobychan).
- #
- #
- # This script is Plug and Play.
- # It automatically checks if the Sprite is bigger then 32px and adjust the
- # tiles around that sprite accordingly.
- # If you're using Anaryu's Particle Engine (ported by Yami)
- # there won't be any issues.
- #
- #==============================================================================
- # ▼ Compatibility
- # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
- # it will run with RPG Maker VX without adjusting.
- #
- #==============================================================================
- #
- #==============================================================================
- # ▼ Compatibility Issues
- # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- # N/A
- #
- #==============================================================================
- #==============================================================================
- # ** Spriteset_Map
- #------------------------------------------------------------------------------
- # This class brings together map screen sprites, tilemaps, etc. It's used
- # within the Scene_Map class.
- #==============================================================================
- class Spriteset_Map
- #--------------------------------------------------------------------------
- # * Update Character Sprite
- #--------------------------------------------------------------------------
- alias msscsd_update_characters update_characters unless $@
- def update_characters
- msscsd_update_characters
- @character_sprites.each do |curr_sprite|
- if curr_sprite.character.class.name == "Game_Event" ||
- curr_sprite.character.class.name == "Game_Player" ||
- curr_sprite.character.class.name == "Game_Follower"
- height = get_height(curr_sprite)
- if height > 1
- x = curr_sprite.character.x
- curr_sprite.viewport = @viewport1
- id = $game_map.data[x, curr_sprite.character.y, 2]
- flag_pos = $game_map.tileset.flags[id]
- if (!(flag_pos & 0x10 != 0) || id == 0)
- for i in 2..height
- y = curr_sprite.character.y - (i - 1)
- if !$game_map.data[x, y, 2].nil?
- flag = $game_map.tileset.flags[$game_map.data[x, y, 2]]
- if flag & 0x10 != 0 && # [☆]: No effect on passage
- $game_map.data[x, y, 2] != 0
- curr_sprite.viewport = @viewport2
- break
- else
- curr_sprite.viewport = @viewport1
- end
- end
- end
- end
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # * Gets the given Sprites height
- #--------------------------------------------------------------------------
- def get_height(curr_sprite)
- height = 0
- if curr_sprite.character.character_name.scan(/$/)
- height = (curr_sprite.bitmap.height / 4) / 32
- height += 1 if (curr_sprite.bitmap.height / 4) % 32 > 0
- else
- height = (curr_sprite.bitmap.height / 8) / 32
- height += 1 if (curr_sprite.bitmap.height / 8) % 32 > 0
- end
- return height
- end
- #--------------------------------------------------------------------------
- # * Add Particle
- #--------------------------------------------------------------------------
- def add_particle(target, name, blend, setting, offset, v = nil, a = nil)
- particle = Particle.new(@viewport2, target, name, blend, setting, offset, v, a)
- @particles.push(particle)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement