Draws triangles on the screen of random sizes/opacities and fades them in & out. I made it for an underwater area, but the moonlight weather effects from Warcraft 3 are fairly similar if you've played that.
Here are some screenshots on really bad maps. You are not supposed to use this script on a bad map, they are examples to show you why. :P
Works best when they are subtle. Not recommended with panoramas or enclosed spaces unless you integrate it into Spriteset_Map and play with z coordinates/priorities. I won't help you with that, but it's not difficult if you know how.
Play with the numbers in the script as well as changing how the opacity/colors/triangle work and you can get some really neat results. I use it with a different angle and whiter at the top, but that wouldn't suit the RTP maps well.
If you have problems PLEASE DO NOT BUG OTHER SCRIPTERS TO HELP YOU
Send me a private message and maybe I'll help.
This is a prototype version I later integrated into rewritten systems. Again, depending on what you're trying to do, you might want to stick it into Spriteset_Map or something.
Troubleshooting Halp:
- Use Sunray.reset if you want to get rid of them warping around the same map.
- This version's disappear if you change scenes. You can see how I tried to fix that (commented out), but it doesn't work.
- If you have conflicts with other scripts, try getting rid of the whole Game_Player section.
- Lagging? Make sure you have waits in your parallel processes. 25+ is highly recommended
Here are some screenshots on really bad maps. You are not supposed to use this script on a bad map, they are examples to show you why. :P
http://www.gamebaker.com/junk/sunray4.bmp[/IMG]http://www.gamebaker.com/junk/sunray2.bmp[/IMG]http://www.gamebaker.com/junk/sunray1.bmp[/IMG]
^ It looks a lot better on the flowers & over the rocks. Used badly on purpose, don't do this.
^ It looks a lot better on the flowers & over the rocks. Used badly on purpose, don't do this.
Works best when they are subtle. Not recommended with panoramas or enclosed spaces unless you integrate it into Spriteset_Map and play with z coordinates/priorities. I won't help you with that, but it's not difficult if you know how.
Sunray.create (uses default RGB settings at top of script)
Sunray.create(R,G,B)
To create a sunray, use parallel process events:
http://www.gamebaker.com/junk/sunray3.bmp[/IMG]
(2nd screenshot's example)
http://www.gamebaker.com/junk/sunray5.bmp[/IMG]
(1st screenshot's example)
Max Width Base = How many pixels out it can stretch from the top to the right
Sunray.create(R,G,B)
To create a sunray, use parallel process events:
http://www.gamebaker.com/junk/sunray3.bmp[/IMG]
(2nd screenshot's example)
http://www.gamebaker.com/junk/sunray5.bmp[/IMG]
(1st screenshot's example)
Max Width Base = How many pixels out it can stretch from the top to the right
Code:
# Sunray script (beta version) by sandgolem
# For use only with good mapping :>
SG_Sunray_MaxStartOpacity = 15
SG_Sunray_MaxOpacity = 160
SG_Sunray_MaxHeight = 340
SG_Sunray_MaxWidth = 70
SG_Sunray_AppearTime = 150
SG_Sunray_FadeTime = 275
SG_Sunray_MaxWidthBase = 8
SG_Sunray_RGB = [155,220,255]
class SG_Sunray
def initialize
reset
end
def reset
@sunrays.each{|i| i.dispose if !i.disposed?} if @sunrays && @sunrays != []
@sunrays = []
@duration = []
end
# def pause
# return if @sunrays == []
# for i in 0...@sunrays.size
# @sunrays[i].visible = false
# end
# end
# def resume
# return if @sunrays == []
# for i in 0...@sunrays.size
# @sunrays[i].visible = true
# end
# end
def create(r = SG_Sunray_RGB[0],g = SG_Sunray_RGB[1],b = SG_Sunray_RGB[2])
@r = r; @g = g; @b = b
this = @sunrays.size
@sunrays += [Sprite.new]
ray_height = 100 + rand(SG_Sunray_MaxHeight - 99)
ray_width = 12 + rand(SG_Sunray_MaxWidth - 11)
@sunrays[this].bitmap = Bitmap.new(ray_width,ray_height)
@opacity = 180 + rand(76)
basex = 2 + rand(SG_Sunray_MaxWidthBase - 2)
for i in 0...ray_height
opacity = (@opacity * ((ray_height - i) * 100 / ray_height) / 100) + 10
color = Color.new(@r,@g,@b,opacity)
k = (ray_width * (i * 100 / ray_height) / 100) + basex
for j in 0...k
@sunrays[this].bitmap.set_pixel(j,i,color)
end
end
@sunrays[this].x = rand(640 - ray_width)
@sunrays[this].y = rand(480 - ray_height)
@duration[this] = rand(60)
@sunrays[this].opacity = 2 + rand(SG_Sunray_MaxStartOpacity - 2)
end
def move(x,y)
return if @sunrays == []
for i in 0...@sunrays.size
@sunrays[i].x += x
@sunrays[i].y += y
end
end
def update
return if @sunrays == [] or !$scene.is_a?(Scene_Map)
for i in 0...@duration.size
@duration[i] += 1
if @duration[i] < SG_Sunray_AppearTime
x = rand(2)
if x == 1 && @sunrays[i].opacity < SG_Sunray_MaxOpacity
@sunrays[i].opacity += 1
end
elsif @duration[i] > SG_Sunray_FadeTime
@sunrays[i].opacity -= 1
if @sunrays[i].opacity == 0
@sunrays[i] = nil
@duration[i] = nil
end
end
end
@sunrays.compact!
@duration.compact!
end
end
class Game_Player
alias sandgolem_sunray_down move_down
alias sandgolem_sunray_up move_up
alias sandgolem_sunray_left move_left
alias sandgolem_sunray_right move_right
def move_down
sandgolem_sunray_down
Sunray.move(0,-1) if moving? && @y % 2 == 0
end
def move_up
sandgolem_sunray_up
Sunray.move(0,1) if moving? && @y % 2 == 0
end
def move_left
sandgolem_sunray_left
Sunray.move(1,0) if moving? && @x % 2 == 0
end
def move_right
sandgolem_sunray_right
Sunray.move(-1,0) if moving? && @x % 2 == 0
end
end
class Game_Map
alias sandgolem_sunray_update update
alias sandgolem_sunray_setup setup
def setup(map_id)
sandgolem_sunray_setup(map_id)
Sunray.reset
end
def update
Sunray.update
sandgolem_sunray_update
end
end
#class Scene_Map
# alias sandgolem_sunray_main main
# def main
# Sunray.resume
# sandgolem_sunray_main
# Sunray.pause
# end
#end
Sunray = SG_Sunray.new
Play with the numbers in the script as well as changing how the opacity/colors/triangle work and you can get some really neat results. I use it with a different angle and whiter at the top, but that wouldn't suit the RTP maps well.
If you have problems PLEASE DO NOT BUG OTHER SCRIPTERS TO HELP YOU
Send me a private message and maybe I'll help.
This is a prototype version I later integrated into rewritten systems. Again, depending on what you're trying to do, you might want to stick it into Spriteset_Map or something.
Troubleshooting Halp:
- Use Sunray.reset if you want to get rid of them warping around the same map.
- This version's disappear if you change scenes. You can see how I tried to fix that (commented out), but it doesn't work.
- If you have conflicts with other scripts, try getting rid of the whole Game_Player section.
- Lagging? Make sure you have waits in your parallel processes. 25+ is highly recommended