RMRK is retiring.
Server is paid up for the rest of 2026, but the forum may go after that. See here for more information. Please archive or save anything you would like to keep before 2027.
Main Menu
  • Welcome to The RPG Maker Resource Kit.

Correct Sprite Display ignores screen tint

Started by Wiimeiser, September 13, 2013, 02:07:48 PM

0 Members and 1 Guest are viewing this topic.

Wiimeiser

It seems Moby's Correct Sprite Display works by redrawing the sprite, as can be seen in the attached screenshot.


The script code is here:




    #==============================================================================
    #
    # ? 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]
              id = id.to_i if id == nil
              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



Don't really see anything suggesting a complete redraw on a new layer the tint script doesn't take into account.

TheoAllen

Have you contact the original scripter?
The instruction said that if you found a bug you may contact Moby in RMweb.
However, I know where's the issue. The problem is whether he gives permission to edit his script or not
My scripts collection :
http://theolized.blogspot.com/
Sorry if I made it in Indonesian

Supporter of :


Make your own party composition based on 20 playable characters :