Menu

Connexion



Retenir ?

Mot de passe oublié ?
Eclipso logo
Merry Christmas !
23/10/2019 21:23:41

2k3 < VX < Ace < XP

Script ombre [résolue]

hassen

Amateur
hassen
  • Messages : 74

Script ombre [résolue]


mar. 10 juin 2014 - 20h40

Vous connaisez sans doute tous le célébre script sur rpg maker xp "Shadow-sprite" qui met un jolie ombre qui suit le hero (seulemen) en mettant la lettre "s" sur la source de la lumiére (comme une bougie par exemple) bref, moi je veux mettre cet ombre la sur d'autres événements, c'est possible ? Vous imaginez le hero qui a son ombre mais pas les personnages autour de lui ? Alors aidez moi

Voila le script :

#==============================================================================
# ¡ Sprite_Shadow (Sprite_Ombre )
# Based on Genzai Kawakami's shadows, dynamisme&features by Rataime, extra features Boushy
#==============================================================================

CATERPILLAR_COMPATIBLE = true

class Game_Party
attr_reader :characters
end

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
sy = (@character.direction - 2) / 2 * @ch
if self.angle>90 or angle<-90
if @character.direction== 6
sy = ( 4- 2) / 2 * @ch
end
if @character.direction== 4
sy = ( 6- 2) / 2 * @ch
end
if @character.direction== 2
sy = ( 8- 2) / 2 * @ch
end
if @character.direction== 8
sy = ( 2- 2) / 2 * @ch
end
end
self.src_rect.set(sx, sy, @cw, @ch)
end
self.x = @character.screen_x
self.y = @character.screen_y-5
self.z = @character.screen_z(@ch)-1
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
@deltax=@source.x-self.x
@deltay= @source.y-self.y
self.angle = 57.3*Math.atan2(@deltax, @deltay )
@angle_trigo=self.angle+90
if @angle_trigo<0
@angle_trigo=360+@angle_trigo
end
self.color = Color.new(0, 0, 0)
@distance = ((@deltax ** 2) + (@deltay ** 2))
if$game_map.shadows==-1
self.opacity = 0
else
self.opacity = 1200000/(@distance+6000)
end
@distance = @distance ** 0.5
if @distancemax !=0 and @distance>=@distancemax
self.opacity=0
end
if @anglemin !=0 or @anglemax !=0
if (@angle_trigo<@anglemin or @angle_trigo>@anglemax) and @anglemin<@anglemax
self.opacity=0
end
if (@angle_trigo<@anglemin and @angle_trigo>@anglemax) and @anglemin>@anglemax
self.opacity=0
end
end
end
end

#===================================================
# ¥ CLASS Sprite_Character edit
#===================================================

class Sprite_Character < RPG::Sprite
alias shadow_initialize initialize

def initialize(viewport, character = nil)
@character = character
super(viewport)
@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[i].is_a?(Game_Event) and $game_map.events[i].list!=nil and $game_map.events[i].list[0].code == 108 and $game_map.events[i].list[0].parameters == ["o"]
@ombrelist[i+1] = Sprite_Shadow.new(viewport, $game_map.events[i],self,@anglemin,@anglemax,@distancemax)
end
end
@ombrelist[1] = Sprite_Shadow.new(viewport, $game_player,self,@anglemin,@anglemax,@distancemax)
#===================================================
# œ Compatibility with fukuyama's caterpillar script
#===================================================
if CATERPILLAR_COMPATIBLE and $game_party.characters!=nil

for member in $game_party.characters
@ombrelist.push(Sprite_Shadow.new(viewport, member,self,@anglemin,@anglemax,@distancemax))
end

end
#===================================================
# œ End of the compatibility
#===================================================
end
shadow_initialize(viewport, @character)
end

alias shadow_update update

def update
shadow_update
if @ombrelist!=[]
for i in 1..@ombrelist.size
if @ombrelist[i]!=nil
@ombrelist[i].update
end
end
end
end

end

#===================================================
# ¥ CLASS Scene_Save edit
#===================================================
class Scene_Save < Scene_File

alias shadows_write_save_data write_save_data

def write_save_data(file)
$game_map.shadows = nil
shadows_write_save_data(file)
end
end

#===================================================
# ¥ CLASS Game_Map edit
#===================================================
class Game_Map
attr_accessor :shadows
end

Delta

Star
Delta
  • Messages : 2420

Script ombre [résolue]


mar. 10 juin 2014 - 22h53

Pour mettre une ombre aux autres événements characters tu mets en commentaire "o" sans les guillemets et ils ont leur ombre. En extérieur si tu mets "sun" tu as le soleil sur toute la map.

Par contre si tu as un script de chenille il ne gére que le premier héros. De plus avec sun tous les charas ont une ombre mais toujours dans la même direction (vers le haut ) à condition pour tous les charas de mettre o en commentaire.

Par contre les ombres fonctionnent mal pour les animaux car étant de travers elle ne colle pas à leurs quatre pattes et le rendu est moyen. Donc les animaux n'auront pas d'ombre.



Mon site perso et la démo http://deltaproduction.free-h.net/index.html
Téléchargez Yggdrasil la quête du dragon de sang: (05/08/2016) 28 Heures de jeu


Nouvelle démo Sentinelles du (20/07/2016) Environ 6H de jeu


Nouvelle démo La Chute d'Atalanta du (18/06/2016) Environ 1H30 de jeu

hassen

Amateur
hassen
  • Messages : 74

Script ombre [résolue]


jeu. 12 juin 2014 - 02h00

Merci a toi delta, ta réponse est éxactement ce qu'il me manquait, probléme résolue grace a toi, quoi que je me demande comment t'a fait pour connaitre tout ça ? jai beau lire le script ais je n'ai rien trouver

Delta

Star
Delta
  • Messages : 2420

Script ombre [résolue]


jeu. 12 juin 2014 - 18h35

C'est un script que j'utilise tout simplement.



Mon site perso et la démo http://deltaproduction.free-h.net/index.html
Téléchargez Yggdrasil la quête du dragon de sang: (05/08/2016) 28 Heures de jeu


Nouvelle démo Sentinelles du (20/07/2016) Environ 6H de jeu


Nouvelle démo La Chute d'Atalanta du (18/06/2016) Environ 1H30 de jeu