01-12-2010, 06:04 AM
Light Effects
Version: 3
by Jaime 'Near Fantastica' Webster
Not DerVVulfman
Version: 3
by Jaime 'Near Fantastica' Webster
Not DerVVulfman
By the poster
I didn't create the original scripts, and as of now the links that Near Fantastica put up are down (and he can't get to them) and his RMXP system is down. Given that he posted the original (though broken) demo links here, there should be no problem to post the script.
Screenshot
Script
Code:
#================================
# ? Light Effects
#================================
# ?By: Near Fantastica
# Date: 28.06.05
# Version: 3
#================================
#==========INSTRUCTIONS==========
#The first Comment event command in an event should read "Light Effects". The
#comment event command immediately following it should read "Ground", "Fire",
#"Lamppost", "LeftLantern", or "RightLantern".
#================================
class Spriteset_Map
#--------------------------------------------------------------
alias les_spriteset_map_initalize initialize
alias les_spriteset_map_dispose dispose
alias les_spriteset_map_update update
#--------------------------------------------------------------
def initialize
@light_effects = []
setup_lights
les_spriteset_map_initalize
update
end
#--------------------------------------------------------------
def dispose
les_spriteset_map_dispose
for effect in @light_effects
effect.light.dispose
end
@light_effects = []
end
#--------------------------------------------------------------
def update
les_spriteset_map_update
update_light_effects
end
#--------------------------------------------------------------
def setup_lights
for event in $game_map.events.values
next if event.list == nil
for i in 0...event.list.size
if event.list[i].code == 108 and event.list[i].parameters == ["Light Effects"]
type = event.list[i+1].parameters.to_s
case type.upcase!
when "GROUND"
light_effects = Light_Effect.new(event,type)
light_effects.light.zoom_x = 200 / 100.0
light_effects.light.zoom_y = 200 / 100.0
light_effects.light.opacity = 51
@light_effects.push(light_effects)
when "FIRE"
light_effects = Light_Effect.new(event,type)
light_effects.light.zoom_x = 300 / 100.0
light_effects.light.zoom_y = 300 / 100.0
light_effects.light.opacity = 85
@light_effects.push(light_effects)
when "LAMPPOST"
light_effects = Light_Effect.new(event,"LEFT LAMP POST")
light_effects.light.opacity = 51
@light_effects.push(light_effects)
light_effects = Light_Effect.new(event,"RIGHT LAMP POST")
light_effects.light.opacity = 51
@light_effects.push(light_effects)
when "LEFTLANTERN"
light_effects = Light_Effect.new(event,type)
light_effects.light.opacity = 150
@light_effects.push(light_effects)
when "RIGHTLANTERN"
light_effects = Light_Effect.new(event,type)
light_effects.light.opacity = 150
@light_effects.push(light_effects)
end
end
end
end
for effect in @light_effects
case effect.type
when "GROUND"
effect.light.x = (effect.event.real_x - 200 - $game_map.display_x) / 4
effect.light.y = (effect.event.real_y - 200 - $game_map.display_y) / 4
when "FIRE"
effect.light.x = (effect.event.real_x - 300 - $game_map.display_x) / 4
effect.light.y = (effect.event.real_y - 300 - $game_map.display_y) / 4
when "LEFT LAMP POST"
effect.light.x = (-0.25 * $game_map.display_x) + (effect.event.x * 32) - 5
effect.light.y = (-0.25 * $game_map.display_y) + (effect.event.y * 32) - 15
when "RIGHT LAMP POST"
effect.light.x = (-0.25 * $game_map.display_x) + (effect.event.x * 32) - 25
effect.light.y = (-0.25 * $game_map.display_y) + (effect.event.y * 32) - 15
when "LEFTLANTERN"
effect.light.x = (-0.25 * $game_map.display_x) + (effect.event.x * 32) - 20
effect.light.y = (-0.25 * $game_map.display_y) + (effect.event.y * 32) - 5
when "RIGHTLANTERN"
effect.light.x = (-0.25 * $game_map.display_x) + (effect.event.x * 32) - 10
effect.light.y = (-0.25 * $game_map.display_y) + (effect.event.y * 32) - 5
end
end
end
#--------------------------------------------------------------
def update_light_effects
for effect in @light_effects
next if not in_range?(effect.event)
case effect.type
when "GROUND"
effect.light.x = (effect.event.real_x - 200 - $game_map.display_x) / 4
effect.light.y = (effect.event.real_y - 200 - $game_map.display_y) / 4
when "FIRE"
effect.light.x = (effect.event.real_x - 300 - $game_map.display_x) / 4
effect.light.y = (effect.event.real_y - 300 - $game_map.display_y) / 4
when "LEFT LAMP POST"
effect.light.x = (-0.25 * $game_map.display_x) + (effect.event.x * 32) - 5
effect.light.y = (-0.25 * $game_map.display_y) + (effect.event.y * 32) - 15
when "RIGHT LAMP POST"
effect.light.x = (-0.25 * $game_map.display_x) + (effect.event.x * 32) - 25
effect.light.y = (-0.25 * $game_map.display_y) + (effect.event.y * 32) - 15
when "LEFTLANTERN"
effect.light.x = (-0.25 * $game_map.display_x) + (effect.event.x * 32) - 20
effect.light.y = (-0.25 * $game_map.display_y) + (effect.event.y * 32) - 5
when "RIGHTLANTERN"
effect.light.x = (-0.25 * $game_map.display_x) + (effect.event.x * 32) - 10
effect.light.y = (-0.25 * $game_map.display_y) + (effect.event.y * 32) - 5
end
end
end
#--------------------------------------------------------------
def in_range?(object)
screne_x = $game_map.display_x
screne_x -= 256
screne_y = $game_map.display_y
screne_y -= 256
screne_width = $game_map.display_x
screne_width += 2816
screne_height = $game_map.display_y
screne_height += 2176
return false if object.real_x <= screne_x
return false if object.real_x >= screne_width
return false if object.real_y <= screne_y
return false if object.real_y >= screne_height
return true
end
end
#================================
# ? Light Effects Class
#================================
class Light_Effect
#--------------------------------------------------------------
attr_accessor :light
attr_accessor :event
attr_accessor :type
#--------------------------------------------------------------
def initialize(event, type)
@light = Sprite.new
@light.bitmap = RPG::Cache.picture("LE.PNG")
@light.visible = true
@light.z = 1000
@event = event
@type = type
end
end
Instructions
Plug and play. Place above Main. You will need this image for it to work though.
Rename as LE.png
Place that in the "/Graphics/Pictures" folder.
Say you wanted to get a light on one of your fireplaces.
First create the event with the fire graphic and place it in a fireplace.
Next open your event commands window and create two comments. The first comment should say "Light Effects" (without the quotations.) The second comment will specify which type of light you want (fire, ground, lamppost, lantern.) Since we're creating a fireplace the comment should read "Fire" (without the quotations.) The trigger can just be left at action button and you want to check your "stop animation box" (since it's a fire we want it to move right?) Anyway that should do it.
Test play and it should look like the screenshot.
The comments for the other light types are in the script.
Compatability
Designed for RPGMaker XP. Shouldn't have any problems with other scripts.
Take Care,
Near
Enjoy,
Mike aka DerVVulfman