TDS Sprite Reflect
Introduction
Found it here and I want to share with you all that all.
Features
Reflects the characters sprite on the water.
Screenshots
http://img216.imageshack.us/img216/5311 ... kilqc2.png[/img]
Demo
http://www.mediafire.com/?50usgzg232k
Script
Fixed and shortened the code, please update script on demo with this one
Code:
Instructions
Create "Areas" on the maps where the player walks and it will reflect below him, and remember to call those areas Reflect so that other normal monster areas wont reflect.
All characters must have Reflect as part of it's name in order to reflect.
Another small add on is the "/OFFSET
* " that I added into event names.
Using "/OFFSET
* " will change how far is the reflection is displayed from it's original starting point.
Example: NPC Name Reflect /OFFSET[15]
That will display the NPCs reflection 15 pixels below it.
Using this "$game_player.reflect_offset = #" you will be able to change the mains characters offset.
Example:
Using a call script you will be able to change the value of this variable.
$game_player.reflect_offset = 15
That will display the characters reflection 15 pixels below the original standing point.
If you wish to use the small wave effect on the water simple go this line on the script.
Code:
WATER_WAVE_EFFECT
And switch it's value to true or false
Example:
Code:
WATER_WAVE_EFFECT = true
Compatibility
None that I know of.
Credits and Thanks
Well pretty much him TDS
Introduction
Found it here and I want to share with you all that all.
Features
Reflects the characters sprite on the water.
Screenshots
http://img216.imageshack.us/img216/5311 ... kilqc2.png[/img]
Demo
http://www.mediafire.com/?50usgzg232k
Script
Fixed and shortened the code, please update script on demo with this one
Code:
Code:
#==============================================================================
# ** TDS Sprite Reflect
# Version: 1.8
#------------------------------------------------------------------------------
# This script makes specially desigated areas reflect the character sprite and
# events.
#==============================================================================
# Instructions:
#
# Create areas using the area creator of the map editor and call them "Reflect".
#
# For events you can use these two commands in part of their name.
#
# Reflect
#
# Any event with "Reflect" as part of it's name will have the reflect effect on
# the special areas of the map.
#
#
# /OFFSET[#]
#
# [#] = Numerical value of the offset.
#
# Example:
# /OFFSET[10]
#
# Offset changes the Y offset of the sprite in the water.(How far is the
# Reflection from the characters original standing point)
#
#
# $game_player.reflect_offset = #
#
# # = Value of the character offset.
#
# Just the same as the event offset except this one handles the characters
# offset reflection.
#==============================================================================
#--------------------------------------------------------------------------
# * Constants for activating the wave effect on the water
#--------------------------------------------------------------------------
WATER_WAVE_EFFECT = true
#==============================================================================
# ** Sprite_Character
#------------------------------------------------------------------------------
# This sprite is used to display characters. It observes a instance of the
# Game_Character class and automatically changes sprite conditions.
#==============================================================================
class Sprite_Reflect < Sprite_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :character
#--------------------------------------------------------------------------
# * Object Initialization
# viewport : viewport
# character : character (Game_Character)
# offset : offset value from the characters starting point.
#--------------------------------------------------------------------------
def initialize(viewport = nil, character = nil, offset = nil)
super(viewport)
self.visible = false
@character = character
@player_offset = $game_player.reflect_offset
@offset = (@character.is_a?(Game_Player) ? @player_offset : offset)
sprite_setup
update
end
#--------------------------------------------------------------------------
# * Sprite Setup
#--------------------------------------------------------------------------
def sprite_setup
self.bitmap = Cache.character(@character.character_name)
self.angle = 180
self.mirror = true
self.opacity = 120
sign = @character.character_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
@cw = bitmap.width / 3
@ch = bitmap.height / 4
else
@cw = bitmap.width / 12
@ch = bitmap.height / 8
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
index = @character.character_index
pattern = @character.pattern < 3 ? @character.pattern : 1
sx = (index % 4 * 3 + pattern) * @cw
sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
self.src_rect.set(sx, sy, @cw, @ch)
if @character.is_a?(Game_Player)
self.ox = @cw / 2
self.oy = 8 + @ch + $game_player.reflect_offset
else
self.ox = @cw / 2
self.oy = 8 + @ch + @offset
end
self.x = @character.screen_x
self.y = @character.screen_y
self.z = @character.screen_z
if WATER_WAVE_EFFECT == true
self.wave_amp = 1
self.wave_length = 1
self.wave_speed = 3
end
end
end
#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
# This class brings together map screen sprites, tilemaps, etc. It's used
# within the Scene_Map class.
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# * Create Character Sprite
# Note: Removed alias because it causes a transfer error.
#--------------------------------------------------------------------------
def create_characters
@character_sprites = []
@event_reflection_sprite = []
@reflecting_events = []
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
@character_sprites.push(sprite)
end
for vehicle in $game_map.vehicles
sprite = Sprite_Character.new(@viewport1, vehicle)
@character_sprites.push(sprite)
end
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
for i in $game_map.events.keys.sort
@event_name_offset = $game_map.events[i].name
@event_name_offset[ /\/OFFSET\[(.*?)\]/ ]
sprite = Sprite_Reflect.new(@viewport1, $game_map.events[i], $1 != nil ? $1.to_i : 0)
if $game_map.events[i].name.include?("Reflect")
@event_reflection_sprite.push(sprite)
@reflecting_events.push($game_map.events[i])
end
end
@reflection_sprite = Sprite_Reflect.new(@viewport1, $game_player, 0)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
alias tds_sprite_reflection_update update
def update
tds_sprite_reflection_update
if $game_player.current_area_name == "Reflect"
if $game_player.moving? == false
@reflection_sprite.visible = true
end
else
@reflection_sprite.visible = false
end
for i in 0...@reflecting_events.size
if @reflecting_events[i].current_area_name == "Reflect"
if @reflecting_events[i].moving? == false
@event_reflection_sprite[i].visible = true
end
else
@event_reflection_sprite[i].visible = false
end
end
if @reflection_sprite.visible == true
@reflection_sprite.update
end
for i in 0...@event_reflection_sprite.size
if @event_reflection_sprite[i].visible == true
@event_reflection_sprite[i].update
end
end
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
dispose_tilemap
dispose_parallax
dispose_characters
dispose_shadow
dispose_weather
dispose_pictures
dispose_timer
dispose_viewports
for i in 0...@reflecting_events.size
@event_reflection_sprite[i].dispose
end
@reflection_sprite.dispose
end
end
#==============================================================================
# ** Game_Character
#------------------------------------------------------------------------------
# This class deals with characters. It's used as a superclass of the
# Game_Player and Game_Event classes.
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :reflect_offset # Character Reflection Offset
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias tds_sprite_reflection_initialize initialize
def initialize
tds_sprite_reflection_initialize
@reflect_offset = 0
end
#--------------------------------------------------------------------------
# * Determine if in Area
# area : Area data (RPG::Area)
#--------------------------------------------------------------------------
def in_area?(area)
return false if area == nil
return false if $game_map.map_id != area.map_id
return false if @x < area.rect.x
return false if @y < area.rect.y
return false if @x >= area.rect.x + area.rect.width
return false if @y >= area.rect.y + area.rect.height
return true
end
#--------------------------------------------------------------------------
# * Current Area Name
#--------------------------------------------------------------------------
def current_area_name
# Checks the areas in the maps
for area in $data_areas.values
# If the character is currently on an area
if in_area?(area) == true
# Give the value of the name of the area to the return variable
return_area_name = area.name
# Break loop
break
end
end
return return_area_name
end
end
#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
# This class deals with events. It handles functions including event page
# switching via condition determinants, and running parallel process events.
# It's used within the Game_Map class.
#==============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# * Return Even Name
#--------------------------------------------------------------------------
def name
return @event.name
end
end
Instructions
Create "Areas" on the maps where the player walks and it will reflect below him, and remember to call those areas Reflect so that other normal monster areas wont reflect.
All characters must have Reflect as part of it's name in order to reflect.
Another small add on is the "/OFFSET
* " that I added into event names.
Using "/OFFSET
* " will change how far is the reflection is displayed from it's original starting point.
Example: NPC Name Reflect /OFFSET[15]
That will display the NPCs reflection 15 pixels below it.
Using this "$game_player.reflect_offset = #" you will be able to change the mains characters offset.
Example:
Using a call script you will be able to change the value of this variable.
$game_player.reflect_offset = 15
That will display the characters reflection 15 pixels below the original standing point.
If you wish to use the small wave effect on the water simple go this line on the script.
Code:
WATER_WAVE_EFFECT
And switch it's value to true or false
Example:
Code:
WATER_WAVE_EFFECT = true
Compatibility
None that I know of.
Credits and Thanks
Well pretty much him TDS