Raven Administrateur
Messages postés : 1338 Date d'inscription : 20/04/2013 Jauge LPC :
| Sujet: [Résolu] RMXP - Tag des terrains Dim 7 Juin 2015 - 19:52 | |
| Yo ! J'viens vous voir parce qu'après mon bug de lumière (que j'ai toujours pas réussit à résoudre, mais soit x), j'ai un probleme avec ma pluie. J'ai en effet ajouté ce script pour faire un truc un peu plus "réaliste" et plus ambiancé. - Code:
-
#============================================================================== # ** Sprite_Rain #------------------------------------------------------------------------------ # This sprite is used to display animations at the water's surface during # raining. #============================================================================== class Sprite_Rain < Sprite TERRAIN_TAG = 1 # Choose the terrain tag # This scipt need a picture named "wave" 20x18 #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(viewport) super(viewport) self.bitmap = Bitmap.new(640,480) @waves = [] end #-------------------------------------------------------------------------- # * Dispose #-------------------------------------------------------------------------- def dispose if self.bitmap != nil self.bitmap.dispose end super end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super self.bitmap.clear return if $game_screen.weather_max == 0 or $game_screen.weather_type == 3 x = $game_map.display_x/128 y = $game_map.display_y/128 for i in x...x+20 for j in y...y+15 if $game_map.terrain_tag(i,j) == TERRAIN_TAG r = rand(1000) if r < $game_screen.weather_max/2 x2 = 32*i + 12 + r/5 y2 = 32*j + 12 + r/5 down = $game_map.terrain_tag(i,j+1) != TERRAIN_TAG up = $game_map.terrain_tag(i,j-1) != TERRAIN_TAG next if up and down y2 -= 16 if down y2 += 4 if up @waves.push(Wave.new(x2,y2)) end end end end for i in 0...@waves.size @waves[i].life += 1 life = @waves[i].life if life == 10 @waves[i] = nil else rect = Rect.new(@waves[i].x-$game_map.display_x/4-life/2, @waves[i].y-$game_map.display_y/4-life/2, 5+life,5+life) self.bitmap.stretch_blt(rect, RPG::Cache.picture("wave"), Rect.new(0,0,20,18),255-25*life) end end @waves.compact! end end #============================================================================== # ** Wave #============================================================================== class Wave attr_accessor :life, :x, :y #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(x,y) @life = 0 @x = x @y = y end end module RPG class Weather def initialize(viewport = nil) @type = 0 @max = 0 @ox = 0 @oy = 0 color1 = Color.new(200, 200, 255, 255) color2 = Color.new(255, 255, 255, 128) @rain_bitmap = Bitmap.new(2, @rain_bitmap.fill_rect(0, 4, 1, 4, color1) @rain_bitmap.fill_rect(1, 0, 1, 4, color1) @storm_bitmap = Bitmap.new(3, 12) @storm_bitmap.fill_rect(2, 0, 1, 4, color2) @storm_bitmap.fill_rect(1, 4, 1, 4, color1) @storm_bitmap.fill_rect(0, 8, 1, 4, color2) @snow_bitmap = Bitmap.new(4, 4) @snow_bitmap.fill_rect(0, 1, 4, 2, color2) @snow_bitmap.fill_rect(1, 0, 2, 4, color2) @snow_bitmap.fill_rect(1, 1, 2, 2, color1) @sprites = [] for i in 1..40 sprite = Sprite.new(viewport) sprite.z = 1000 sprite.visible = false sprite.opacity = 0 @sprites.push(sprite) end end def update return if @type == 0 for i in 1..@max sprite = @sprites[i] if sprite == nil break end if @type == 1 sprite.x -= 2 sprite.y += 20 sprite.opacity -= 8 end if @type == 2 sprite.x -= 5 sprite.y += 16 sprite.opacity -= 12 end if @type == 3 sprite.x -= 1 sprite.y += 6 sprite.opacity -= 3 end x = sprite.x - @ox y = sprite.y - @oy if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500 sprite.x = rand(800) - 50 + @ox sprite.y = rand(800) - 200 + @oy sprite.opacity = 255 end end 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 #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize # Make viewports @viewport1 = Viewport.new(0, 0, 640, 480) @viewport2 = Viewport.new(0, 0, 640, 480) @viewport3 = Viewport.new(0, 0, 640, 480) @viewport2.z = 200 @viewport3.z = 5000 # Make tilemap @tilemap = Tilemap.new(@viewport1) @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name) for i in 0..6 autotile_name = $game_map.autotile_names[i] @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name) end @tilemap.map_data = $game_map.data @tilemap.priorities = $game_map.priorities # Make panorama plane @panorama = Plane.new(@viewport1) @panorama.z = -1000 # Make fog plane @fog = Plane.new(@viewport1) @fog.z = 3000 # Make rain bitmap @rain = Sprite_Rain.new(@viewport1) @rain.z = 0 # Make character sprites @character_sprites = [] for i in $game_map.events.keys.sort sprite = Sprite_Character.new(@viewport1, $game_map.events[i]) @character_sprites.push(sprite) end @character_sprites.push(Sprite_Character.new(@viewport1, $game_player)) # Make weather @weather = RPG::Weather.new(@viewport1) # Make picture sprites @picture_sprites = [] for i in 1..50 @picture_sprites.push(Sprite_Picture.new(@viewport2, $game_screen.pictures[i])) end # Make timer sprite @timer_sprite = Sprite_Timer.new # Frame update update end #-------------------------------------------------------------------------- # * Dispose #-------------------------------------------------------------------------- def dispose # Dispose of tilemap @tilemap.tileset.dispose for i in 0..6 @tilemap.autotiles[i].dispose end @tilemap.dispose # Dispose of panorama plane @panorama.dispose # Dispose of fog plane @fog.dispose # Dispose of rain bitmap @rain.dispose # Dispose of character sprites for sprite in @character_sprites sprite.dispose end # Dispose of weather @weather.dispose # Dispose of picture sprites for sprite in @picture_sprites sprite.dispose end # Dispose of timer sprite @timer_sprite.dispose # Dispose of viewports @viewport1.dispose @viewport2.dispose @viewport3.dispose end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # If panorama is different from current one if @panorama_name != $game_map.panorama_name or @panorama_hue != $game_map.panorama_hue @panorama_name = $game_map.panorama_name @panorama_hue = $game_map.panorama_hue if @panorama.bitmap != nil @panorama.bitmap.dispose @panorama.bitmap = nil end if @panorama_name != "" @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue) end Graphics.frame_reset end # If fog is different than current fog if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue @fog_name = $game_map.fog_name @fog_hue = $game_map.fog_hue if @fog.bitmap != nil @fog.bitmap.dispose @fog.bitmap = nil end if @fog_name != "" @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue) end Graphics.frame_reset end # Update rain @rain.update # Update tilemap @tilemap.ox = $game_map.display_x / 4 @tilemap.oy = $game_map.display_y / 4 @tilemap.update # Update panorama plane @panorama.ox = $game_map.display_x / 8 @panorama.oy = $game_map.display_y / 8 # Update fog plane @fog.zoom_x = $game_map.fog_zoom / 100.0 @fog.zoom_y = $game_map.fog_zoom / 100.0 @fog.opacity = $game_map.fog_opacity @fog.blend_type = $game_map.fog_blend_type @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy @fog.tone = $game_map.fog_tone # Update character sprites for sprite in @character_sprites sprite.update end # Update weather graphic @weather.type = $game_screen.weather_type @weather.max = $game_screen.weather_max @weather.ox = $game_map.display_x / 4 @weather.oy = $game_map.display_y / 4 @weather.update # Update picture sprites for sprite in @picture_sprites sprite.update end # Update timer sprite @timer_sprite.update # Set screen color tone and shake position @viewport1.tone = $game_screen.tone @viewport1.ox = $game_screen.shake # Set screen flash color @viewport3.color = $game_screen.flash_color # Update viewports @viewport1.update @viewport3.update end end Seulement voilà, ça m'fait ce bug ci que je ne comprends pas : Quelqu'un saurait pourquoi svp? x)
Dernière édition par Raven le Dim 7 Juin 2015 - 20:21, édité 1 fois |
|
Atwars Modérateur en chef
Messages postés : 1569 Date d'inscription : 11/04/2012 Jauge LPC :
| Sujet: Re: [Résolu] RMXP - Tag des terrains Dim 7 Juin 2015 - 19:57 | |
| Essaie ">=" ou "=>" ! Attention je ne promets rien, c'est l'amateur de code qui parle |
|
Raven Administrateur
Messages postés : 1338 Date d'inscription : 20/04/2013 Jauge LPC :
| Sujet: Re: [Résolu] RMXP - Tag des terrains Dim 7 Juin 2015 - 20:07 | |
| Nope ! Ca fonctionne pas. x) |
|
Invité Invité
| Sujet: Re: [Résolu] RMXP - Tag des terrains Dim 7 Juin 2015 - 20:10 | |
| Ça je crois que c'est parce que t'as redimensionné ton tileset et que sur ta map il reste un ancien tile en dehors du nouveau tileset quelque part. |
|
Raven Administrateur
Messages postés : 1338 Date d'inscription : 20/04/2013 Jauge LPC :
| Sujet: Re: [Résolu] RMXP - Tag des terrains Dim 7 Juin 2015 - 20:21 | |
| Effectivement, j'ai essayé de cleané la map, j'ai plus le soucis, merci ! |
|
Zexion Administrateur
Messages postés : 6228 Date d'inscription : 04/01/2012 Jauge LPC :
| Sujet: Re: [Résolu] RMXP - Tag des terrains Dim 7 Juin 2015 - 23:57 | |
| Encore des points pour Zeus. :3 |
|
Contenu sponsorisé
| Sujet: Re: [Résolu] RMXP - Tag des terrains | |
| |
|