Maire Lv.9
Age : 29 Inscrit le : 06/06/2011 Messages : 373
| Sujet: Problème avec le script TDS sprite reflect Sam 4 Aoû 2012 - 23:57 | |
| Alors voila j'utilise ce script : - Spoiler:
- Code:
-
#============================================================================== # ** TDS Sprite Reflect # Version: 1.0 #------------------------------------------------------------------------------ # 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) #-------------------------------------------------------------------------- def initialize(viewport = nil, character = nil, offset = nil) super(viewport) @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 @cw = bitmap.width / 12 @ch = bitmap.height / 8 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) self.ox = 16 if @character.is_a?(Game_Player) self.oy = 38 + $game_player.reflect_offset else self.oy = 38 + @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 #-------------------------------------------------------------------------- alias tds_sprite_reflection_create_characters create_characters def create_characters tds_sprite_reflection_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 update_tilemap update_parallax update_characters update_shadow update_weather update_pictures update_timer update_viewports 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 #-------------------------------------------------------------------------- # * 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 #-------------------------------------------------------------------------- # * Clear Starting Flag #-------------------------------------------------------------------------- def name return @event.name 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 end
Qui est censé m'afficher les "reflets" des persos dans l'eau. Or dès qu'il s'agit d'un personnage nommé dans le dossier character : $Machin Il ne m'affiche que la moitié de celui-ci : J'utilise le SBS Tankentai 3.4d Merci d'avance si vous trouvez un moyen d'y remédier. |
|
Admindictatrice
Age : 34 Inscrit le : 27/02/2009 Messages : 2855
| Sujet: Re: Problème avec le script TDS sprite reflect Lun 6 Aoû 2012 - 14:25 | |
| La solution la plus simple à mon avis est de faire des planches de chara normales et donc ne pas avoir besoin du $ qui semble ne pas être compris par le script.
Mais si un scripteur sais comment faire en sorte que le scripte comprenne le $ je suppose que c'est mieux. |
|
Maire Lv.9
Age : 29 Inscrit le : 06/06/2011 Messages : 373
| Sujet: Re: Problème avec le script TDS sprite reflect Mar 7 Aoû 2012 - 6:45 | |
| Oui ce serait mieux parce que comme je le disais dans mon message de base j'utilise le SBS ^^ |
|
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: Problème avec le script TDS sprite reflect Ven 10 Aoû 2012 - 18:16 | |
| Essaye d'envoyer un MP à S4suk3. Je sais qu'il a réalisé un tel script. Il se peut qu'il accepte de te le passer. |
|
Maire Lv.9
Age : 29 Inscrit le : 06/06/2011 Messages : 373
| Sujet: Re: Problème avec le script TDS sprite reflect Ven 10 Aoû 2012 - 19:31 | |
| Ok merci du conseil Zang' |
|
| Sujet: Re: Problème avec le script TDS sprite reflect | |
| |
|