Anarion Les scripts
|
![]() |
Ombre |
||||||
| Julien | Posté le : 12 Déc, 2007 à 14:57:53 | |||||
Messages :30
|
Allez dans l'éditeur de script ( F11 ) et Remplacez le script " Sprite_Character " par ceci: Utilisation : lors, tout les places que vous voulez avoir votre lumière, vous placer un évènement qui a comme commentaire s. Pour donner à un évènement une ombre, ajoutez un commentaire o. Pour l'imiter la source, ajoutez s'y 2 autre commentaire avec chacun un chiffre qui définie un angle. C'est l'angle de la lumière projetée. Par exemple une lumière qui donne de la lumière seulement vers la droite et non vers la gauche. Et un 4ème commentaire qui est écrit un chiffre entre 500 et 1000, qui son la longueur en pixel pour l'ombre. Pour l'extérieur ne faites que placé un commentaire sun. Pour limiter le soleil, le degré c'est encore la même chose et pour le foncé ou pâle, ces entre 30 et 200, dont 200 ces très claire. PS: Le héros a déjà son ombre. Si vous mettez pas de degré ni de longueur, il va s'adapté à celle par défaut dans le script. Code : #============================================================================== # ¦ Sprite_Character modifié (See Sprite_Shadow and Sprite_Sun) #============================================================================== class Sprite_Character < RPG::Sprite attr_accessor :character def initialize(viewport, character = nil) super(viewport) @character = character #------Sun edit---------- @sunlist=[] if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["sun"]) if (character.list[1]!=nil and character.list[1].code == 108) @self_angle=character.list[1].parameters[0] else @self_angle=45 end if (character.list[2]!=nil and character.list[2].code == 108) @self_opacity=character.list[2].parameters[0] else @self_opacity=128 end for i in $game_map.events.keys.sort if ($game_map.events.is_a?(Game_Event) and $game_map.events.list!=nil and $game_map.events.list[0].code == 108 and $game_map.events.list[0].parameters == ["o"]) @sunlist[i+1] = Sprite_Sun.new(viewport, $game_map.events,@self_angle,@self_opacity) end end @sunlist[1] = Sprite_Sun.new(viewport, $game_player,@self_angle,@self_opacity) end #------/Sun edit---------- #------Shadows edit--------- @ombrelist=[] if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["s"]) if (character.list[1]!=nil and character.list[1].code == 108) @anglemin=character.list[1].parameters[0] end if (character.list[2]!=nil and character.list[2].code == 108) @anglemax=character.list[2].parameters[0] end if (character.list[3]!=nil and character.list[3].code == 108) @distancemax=character.list[3].parameters[0] end for i in $game_map.events.keys.sort if ($game_map.events.is_a?(Game_Event) and $game_map.events.list!=nil and $game_map.events.list[0].code == 108 and $game_map.events.list[0].parameters == ["o"]) @ombrelist[i+1] = Sprite_Shadow.new(viewport, $game_map.events,self,@anglemin,@anglemax,@distancemax) end end @ombrelist[1] = Sprite_Shadow.new(viewport, $game_player,self,@anglemin,@anglemax,@distancemax) end #------/Shadows edit---------- update end def update super if @tile_id != @character.tile_id or @character_name != @character.character_name or @character_hue != @character.character_hue @tile_id = @character.tile_id @character_name = @character.character_name @character_hue = @character.character_hue if @tile_id >= 384 self.bitmap = RPG::Cache.tile($game_map.tileset_name, @tile_id, @character.character_hue) self.src_rect.set(0, 0, 32, 32) self.ox = 16 self.oy = 32 else self.bitmap = RPG::Cache.character(@character.character_name, @character.character_hue) @cw = bitmap.width / 4 @ch = bitmap.height / 4 self.ox = @cw / 2 self.oy = @ch end end self.visible = (not @character.transparent) if @tile_id == 0 sx = @character.pattern * @cw sy = (@character.direction - 2) / 2 * @ch self.src_rect.set(sx, sy, @cw, @ch) end self.x = @character.screen_x self.y = @character.screen_y self.z = @character.screen_z(@ch) self.opacity = @character.opacity self.blend_type = @character.blend_type self.bush_depth = @character.bush_depth if @character.animation_id != 0 animation = $data_animations[@character.animation_id] animation(animation, true) @character.animation_id = 0 end #------Shadows edit---------- if @ombrelist!=[] for i in 1..@ombrelist.size if @ombrelist!=nil @ombrelist.update end end end #------/Shadows edit---------- #------Shadows edit---------- if @sunlist!=[] for i in 1..@sunlist.size if @sunlist!=nil @sunlist.update end end end #------/Shadows edit---------- end end Ensuite faites un nouveau script au dessus de Main et nommé le Sprite_Shadow et collez s'y ceci: #============================================================================== # ¦ Sprit_Ombre (Sprite_Ombre ) # Based on Genzai Kawakami's shadows, dynamisme by Rataime, extra features Boushy #============================================================================== class Sprite_Shadow < RPG::Sprite attr_accessor :character # ?????? def initialize(viewport, character = nil,source = nil,anglemin=0,anglemax=0,distancemax=0) super(viewport) @anglemin=anglemin.to_f @anglemax=anglemax.to_f @distancemax=distancemax.to_f @character = character @source = source update end def update super if @tile_id != @character.tile_id or @character_name != @character.character_name or @character_hue != @character.character_hue @tile_id = @character.tile_id @character_name = @character.character_name @character_hue = @character.character_hue if @tile_id >= 384 self.bitmap = RPG::Cache.tile($game_map.tileset_name, @tile_id, @character.character_hue) self.src_rect.set(0, 0, 32, 32) self.ox = 16 self.oy = 32 else self.bitmap = RPG::Cache.character(@character.character_name, @character.character_hue) @cw = bitmap.width / 4 @ch = bitmap.height / 4 self.ox = @cw / 2 self.oy = @ch end end self.visible = (not @character.transparent) if @tile_id == 0 sx = @character.pattern * @cw @direct=@character.direction if self.angle>90 or angle= 384 self.bitmap = RPG::Cache.tile($game_map.tileset_name, @tile_id, @character.character_hue) self.src_rect.set(0, 0, 32, 32) self.ox = 16 self.oy = 32 else self.bitmap = RPG::Cache.character(@character.character_name, @character.character_hue) @cw = bitmap.width / 4 @ch = bitmap.height / 4 self.ox = @cw / 2 self.oy = @ch end end self.visible = (not @character.transparent) if @tile_id == 0 sx = @character.pattern * @cw @direct=@character.direction if self.angle>90 or angle --Message édité par le 12-12-07 à 14:58:43-- |
|||||
| Sujets complémentaires : | ||||||
| ||||||
Anarion Les scripts
|
![]() |