Chaos Project

RPG Maker => RPG Maker Scripts => RMXP Script Database => Topic started by: ArcaneAlchemy on June 28, 2014, 03:49:01 am

Title: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: ArcaneAlchemy on June 28, 2014, 03:49:01 am
Dynamic Lights by Fabien 3.0(English)
Authors: Fabien
Version: 3.0
Type: Custom Lights
Key Term: Custom Environment System



Introduction

So this is not my script, but I I translated it and man was it an undertaking. Following finalholyknight's suggestion, I went ahead and decided to post this as a new topic. finalholyknight did already contact Fabien and got his permission to share it here. Fabien's contact info is in the script if you would like to contact him. I can help with most questions though since I have been messing with this script pretty intensely for the past few days though.

Fabien's permission to finalholyknight:

Spoiler: ShowHide
(http://i663.photobucket.com/albums/uu358/finalholylight/fabien_script01_zps80afbf30.jpg)



Features




Screenshots

Spoiler: ShowHide
(http://i663.photobucket.com/albums/uu358/finalholylight/dynamic_light01_zps7242530e.jpg)

Spoiler: ShowHide
(http://i663.photobucket.com/albums/uu358/finalholylight/dynamic_light02_zps1e215735.jpg)

Spoiler: ShowHide
(http://i663.photobucket.com/albums/uu358/finalholylight/dynamic_light03_zps5581d492.jpg)

Spoiler: ShowHide
(http://i663.photobucket.com/albums/uu358/finalholylight/dynamic_light04_zps11b8e338.jpg)




Demo

http://s000.tinyupload.com/?file_id=32887480091240890860


Script

Multiple Scripts inside Demo



Instructions
TUTORIALS BELOW

To light yourself a torch/flashlight:

1. Go ahead and locate your picture that you want to use for your flashlight. If using the demo as a ..well ... demo then go ahead and make a note of the location in your folder called Graphics/Pictures/lumieres (lumieres means "lights" btw since I've been reading French for the past f-cking hour). If using the demo, you'll see a whole bunch of names.

2. Go ahead and choose one. I chose "lampe2" for my little flashlight/torch thing. It will work just fine for you too. It kinda looks like a torch or something.

3. Make a parallel process triggered event on a new map and paste in the following script:

wallpaper_night(240)
lum("lampe2",0,255)

Actually what they mean by that is they are taking an image and overlaying it to a closer z index on the screen. The picture is overlapping what is on the map.
the (240) is the opacity. You can change this if you'd like the 'darkness' aka. wallpaper_night to be more or less opaque.

so what about the lum("lampe2",0,255) part? Well it's pretty simple.
the "lum" stands for light. So I just think of the word 'light' or like lumination.
Inside the parenthesis it goes as follows:

lum("name_of_image",event_id,opacity)

the image I used was lampe2. The event_id of 0 is the main character sprite. Opacity is at max(255)

So that's how you get yourself a nice little torch. But what about all the other cool shit with the lamps lighting at the same time?

Here's where it really confused me. So, apparently, if you try to use more than one parallel process to illuminate lamps, the game will shit all over itself for no apparent reason. No matter how much French you learn in one day, it will still be more confusing and less telling than a creepy mime on the corner of the wine bistro.

HOW WE SET UP LIGHTS AND TORCH AT THE SAME TIME:(This is good for a flickering torch-like effect)

Here's the meat and potatoes:

1. If you followed my last rant, then you should already have the torch on your player. You will want to use A SINGLE parallel process for all of this, so I will go ahead and post in the script for both the player torch AND the lamp torches. Add this to a SINGLE event on a blank map. I suggest using a map texture set that has something that resembles a light or torch for visual satisfaction purposes only. In this map, make an event for your parallel process, and make three more for your lamps. I did mine like so:

Spoiler: ShowHide
(http://s17.postimg.org/jzsmfezu3/examplepic.jpg)


here's the script:


wallpaper_night(240)
lum("lampe2",0,255)
lum("lampe2",1,255-rand(50))
lum("lampe2",2,255-rand(50))
lum("lampe2",3,255-rand(50))


You will notice a few things. Firstly, you will see the code for the original stuff. The first two lines make it dark and give your player a lamp(player = event #0) But if you look above, you'll know this. The next three lines are similar. The numbers after the "lampe2" part are the event id numbers. The other thing you will notice is that in the opacity section, it's set to 255-rand(50). This will create a flickering effect, essentially subtracting a random value of 0-49 of opacity.

Anyway, when you're all said and done, run it and it'll look like this:

Spoiler: ShowHide
(http://s9.postimg.org/7iky8w5tn/ex2222.jpg)



HOW TO ILLUMINATE A TILE TYPE AND REPEAT WITHOUT ADDITIONAL SCRIPTING(like in example 2 in demo)

Please use the provided demo here to make this easy for the both of us.

This one really confused me for a bit but I figured it out and man I'm so freaking excited!  :D

Spoiler: ShowHide
(http://s9.postimg.org/vearetq4b/plainmap.jpg)


Step 2. Add in a couple of lamps(take note of the coordinates of one of the tops of your lamps is located)VERY IMPORTANT

Spoiler: ShowHide
(http://s15.postimg.org/k2b0z85nr/coordinates.jpg)


The tip of my lamp in in the picture is at (003,006) x=3 and y=6 *remember this part

Step 3. Set up a parallel process event like so:

Spoiler: ShowHide
(http://s28.postimg.org/89of82j5l/eventpic.jpg)


Here is the code to put in there:

wallpaper_night(220)
lum_tile("lampadaire",3,6,1,255,-60,-16)

Firstly, there is the wallpaper_night(220). This is just to set up the darkness at 220 opacity.

Secondly there is the lum_tile() part and I will break down each section.
The overview is: lum_tile("name_of_light_picture",x_coordinate_of_tile, y_coordinate_of_tile, i_tile, opacity, image_x, image_y)

Phew, so let's look at these:

lum_tile() is the function that will help us do this awesome trick.
the "name_of_light_picture" is the image you're using. Located in Graphics/Pictures/lumieres.
i_tile is the map layer that your tile is on. 0 = layer 1, 1 = layer 2, 2 = layer 3.
the x_coordinate_of_tile part is the x location of a tile on your map. For instance, if it has a picture of a torch or the top of a light post, this is what you want
y_coordinate_of_tile part is the same as the x above, but applies to the y. Notice my x,y coordinates were 3,6 just like in the code. Make your coordinates work properly to suit your map
opacity is pretty basic and is a value from 0-255 as you probably know already.
image_x is just the x coordinate of the image you're using. move as needed
image_y is same as image_x above but y coordinate

Phew.

Step 4. Now that you've figured out where one lamp tip or torch flame should be at, use a proper picture. I used the "lampadaire" image for the lamp post because that's what it's made for.

If all goes well, you'll be able to post lamps over and over with no additional scripting and they will automatically be lit up. This effect will be more like a solid light. For a flickering effect, use this in opacity

255 - rand(50)     You don't have to use 50 in the rand, use whatever you want. you could even wait a few frames in the event to change the effect as well.

Hopefully you ended up with this:

Spoiler: ShowHide
(http://s29.postimg.org/vz7c2uztf/zdone.jpg)


This took a while so you are welcome! Cool Enjoy.

Compatibility

May have Scene_Map or screen tinting issues.


Credits and Thanks




Author's Notes
Title: Re: Dynamic Lights by Fabien 3.0(Translated) [XP]
Post by: finalholylight on June 28, 2014, 04:16:29 am
Nice ! Mod should move this to script database and delete my old topic  :D
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: finalholylight on July 14, 2014, 09:26:29 am
Oh no, I don't think about this before, but now, when I test demo, I found a problem.
After I call script :
@memomap=$game_map.bitmap
ecran_decor(@memomap)
decor("lampe",0,0)
$lum.lums[0].zx=$lum.lums[0].zy=0.8

then use save, error pop up:
Scene_Save line 73
No marshal_dump is defined for class Bitmap

I think script "GAME MAP BITMAP" in this demo cause this problem, but I don't know how to fix it.
I wonder if anyone can fix it.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: Ranquil on July 14, 2014, 04:12:53 pm
I love you.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: ArcaneAlchemy on July 15, 2014, 07:59:52 pm
I'll take a look at that Finalholylight. I'll see if I can recreate the same problem.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: rpg_newbie on September 19, 2014, 05:07:17 pm
It really seems to break the save system. :( Such a shame.

"Script 'Dynamic Lights Version 3.0' line 32: NoMethodError occurred

undefined method 'lums' for nil:NilClass"

On loading save from the map after the beach. Crashes in other areas as well.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: ArcaneAlchemy on September 22, 2014, 06:06:47 pm
I don't think that it breaks the save system, but I can look into it. Have you tried applying this in your own game as well? Yeah man, it's just the Demo and just for you apparently. I think that your are trying to load a map that isn't using the same type of Lum events. I can try to recreate the scenario, but it's not happening for me yet.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: rpg_newbie on September 23, 2014, 03:00:20 am
Well, with my limited scripting skills to figure the issue out/fix it I'm not going to waste my time decorating my own maps with something that breaks the original demo. (I am disappointed cause the results in the demo look very pretty.)

After quitting and re-launching the game, loading any save I made crashes the demo.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: finalholylight on September 23, 2014, 04:43:02 am
I think the reason is because : wallpaper_night(240), this use for init the night filter, and when you shut down the game, this filter will be deleled, then when you continue the game, it will cause error because that filter is NIL, how to resolve: I think you should edit in script, make some variables to save informations of that filter, when load game, these informations will be call, and call wallpaper_night(240) again to avoid error.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: ArcaneAlchemy on September 23, 2014, 08:21:36 pm
Okay, I'm getting the error now with this version I have on here. Let me see what I can do. You are probably right finalholylight. The entire array is nil at load it seems. Only with this demo and not with a new game. That's what's strange..

UPDATE: The first thing that I noticed is that if you open a map, then return to title and load a quest, it doesn't do it. So that's weird.

FIXED: Append this just below your 3 scripts for now. I'll add it to the code on here when I get a chance.
class Scene_Load < Scene_File
  alias dynamic_light_fix_read_save_data read_save_data
  def read_save_data(file)
    characters = Marshal.load(file)
    Graphics.frame_count = Marshal.load(file)
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables     = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party         = Marshal.load(file)
    $game_troop         = Marshal.load(file)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
    if $game_system.magic_number != $data_system.magic_number
      # マップをリロード
      $game_map.setup($game_map.map_id)
      wallpaper_night
      lum(0)
      $game_map.update   
      $game_player.center($game_player.x, $game_player.y)
    end
    $game_party.refresh
  end
end


As you can see finalholylight, it wasn't calling the needed methods between loading the map and then running it.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: rpg_newbie on September 24, 2014, 04:26:14 am
Seems to fix the save issue. Good job!

Edit: Actually saving on the beach map still seems to be broken. I guess it's cause of the Avancement scene variable and multiple pages in the lighting event (EV001).

Example:
AFTER getting the flashlight when I load a save from BEFORE getting the flashlight I get the following:
"line 172: NoMethodError occurred undefined method 'width' for 0:Fixnum"

I actually got another error like before applying the fix on some reload but I can't replicate it now. Loading a save from after getting the flashlight does not reset the protection on trees.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: ArcaneAlchemy on September 24, 2014, 03:05:12 pm
Cool. Well, I'll take another look at it later. I have a history exam today so it'll take me a bit but I hope you enjoy it as much as I do.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: rpg_newbie on September 24, 2014, 03:39:55 pm
Ah yea, in the dark room map loading a save from AFTER switching the light on also breaks it with the old error on line 32. So maybe it didn't get resolved...
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: ArcaneAlchemy on September 24, 2014, 05:46:52 pm
that's interesting. It's just a matter of the methods being run in the loading function I'm sure. Anyway, it's not as broken as you might think. I have used the code(as it was before) with perfect success using even more complex lighting schemes based on this code. I would also suggest that you make a demo from a fresh game for yourself rather than copying events over. That will not only help you to create even cooler maps, it will help you understand what I'm trying to convey. I could send you a demo, but I think that it will benefit you to do some footwork for yourself. Not that I won't help to fix the demo on here, but I just think that it's a good practice.

You remember when you watched the commercial for rmxp and it says "No Scripting Required" in bold letters. Well, that's not true if you want to customize stuff.

So, if you want, try and tinker with the code and if you find any solutions on your own, then that's two heads instead of just one. You might think then of giving some code back to the community.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: KaguraM on April 21, 2015, 03:29:12 pm
Hi,

I don't know how I can resolve this problem : "Script 'Dynamic Lights Version 3.0' line 32: NoMethodError occurred undefined method 'lums' for nil:NilClass"
I try on two differents map and nothing works. I can't go ahead with my game...

(sorry for my bad english, i'm french)
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: ArcaneAlchemy on July 21, 2015, 03:33:54 pm
Sorry for the late reply dude. It's a pretty generic error, but I'm thinking that something is missing either in the level, or a graphic. Make sure you have the lum event on each scene and have it set to parallel process.
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: cdaz on August 10, 2015, 02:44:13 pm
Demo link is gone could you re upload it please?
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: KK20 on August 10, 2015, 02:58:46 pm
It's still there... :uhm:
(http://puu.sh/jwyHE/82300718e2.png)
Title: Re: [XP] Dynamic Lights by Fabien 3.0(Translated)
Post by: cdaz on August 11, 2015, 05:51:26 am
I can download it now might be my Internet problem on that time. :^_^':
Thank you by the way