RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
Correct Sprite Display ignores screen tint

0 Members and 1 Guest are viewing this topic.

***
Rep:
Level 77
RMRK Junior
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:


Code: [Select]


    #==============================================================================
    #
    # ? 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.

**
Rep:
Level 68
RMIDans ~
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 :