O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Script de Correção de Sprites

Iniciado por Raizen, 05/03/2013 às 21:57

Correção de Sprites

Compativel com: RMVX Ace
Compatibilidade :boa
Facilidade de uso: fácil
Lag gerado: baixo
[box class=titlebg]
Condições de Uso
[/box]
  Não especificado pelo autor.

[box class=titlebg]
Para que serve o script
[/box]
  Sabe aquele bug chato, aonde chars acima de 32px, ao estarem presentes entre um tile abaixo dele e outro acima, da uma impressão bem feia? pois bem esse script corrigi isso :D.

[box class=titlebg]
Script
[/box]

#==============================================================================
#
# ▼ 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 mobychan@gmx.de 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


[box class=titlebg]
Imagens
[/box]

antes


depois


[box class=titlebg]
Créditos e Avisos
[/box]

Mobychan

Nossa, Raizen  :rei:, já tinha quebrado a cabeça aqui com esse problema.

(Muito² . Obrigado³) . 2 =  :wow:

Vixe, o ACE ta cheio de falhas em, mas enfim, belo script man +ouro

Spoiler

OFF: É, daqui a pouco vamos ter que montar um pack para correções xD
[close]

Valeu ai

@Brittus: sim achei na comu gringa e achei super interessante que tive que trazer para cá *--*, bom vlws o comment ai :D

@Ronin: Na verdade isso é crônico em todos os rpg makers x.x, tem no VX e acredito eu no XP também, depois monto um pack com correções :D

06/03/2013 às 15:34 #4 Última edição: 08/03/2013 às 15:55 por LuRocha
eu te amo raizen !!!  :*-*:
valeu man eu tava ferrado com isso, ainda mais porque meu sistema de batalha é por eventos
os malditos sempre ficam com esse erro horrível.

EDIT:
Eu testei o script e encontrei um erro gravíssimo, ao exibir uma imagem alguns tiles marcados com "estrelinha" ficam por cima delas.
Clique e conheça o meu canal - Canal RPG Maker Zone