map.ini is a text file in the same folder as your map. It is available to this map only. You may, however, copy your map.ini to another map's folder to use it again. A map.ini file is read by Zero Hour when the map starts. It is read once, and only once.
You create a map.ini file by right-clicking in the folder of the map you are working on, then choosing new, then text file. You open it by double clicking it. You then can either type or paste copied text into it. Once done, save it. Then rename the file to 'map.ini'. Windows will warn you "Are you sure you want to change the file extension?" Answer yes.
You can make Windows associate .ini files with notepad. You do this by double clicking an .ini file. Windows will tell you it doesn't know how to open it, and allow you to choose an application to open it with. Choose Notepad, and check the box that says 'always open this kind of file with this program'. After you've done this, you can double click any .ini file, and notepad will open it so that you can read/edit it.
With a map.ini file, you do these things and more:
Show snow or rain (the sound effects for thunder and lightning is a seperate script (an .scb file)
Define a train (it's speed, it's acceleration, it's stopping distance, it's sounds, etc.)
Color the water on your map (lakes, rivers and streams)
You can do all three of these things in one map.ini file. Each section has a section title that separates it from the other sections. For example, you can have it raining on your map, and have a train that you have defined.
A good way to organize separate .ini files is to create a folder under My Documents\Command and Conquer Generals Zero Hour Data. Make a new folder called MapIni Files. Then copy succcessful map.ini files to this folder and name them according to what they do:
snow.ini
rain.ini
traindefinition.ini
watercolor.ini
You can then copy the desired .ini to the map directory that you're working on. Just change the name to map.ini in your map's folder.
The train and weather map.ini files need scripts to go along with them. The rain needs a flash of lightning (usually) and sound effects (lightning and thunder), and the train needs script code to tell it when to sound it's horn. These scripts have the extension .scb. They are created when a user exports his successfully working code. The key word is successfully. Make sure it works before you export the scripts.
You can organize your .scb files too. Make a new folder under My Documents\Command and Conquer Generals Zero Hour Data and name it SCB files. You can then import the script from the Edit\Scripts menu item in Worldbuilder.
Name your scripts accordingly. For example, I have these weather .scb files
Rain - Distant thunder no lightning.scb
Rain - Full Thunder and lightning.scb
Rain - Just rain.scb
Snow light.scb
Snow thick.scb
To wrap it all up, map.ini files are local to your map. This means that the map.ini file must reside in the same folder as your map. You can organize them for reuse by copying them to a folder: My Documents\Command and Conquer Generals Zero Hour Data\MapIni Files. Name them here according to what they do so that you know which one to copy to a new map's folder, then rename it in that folder to map.ini
Script exports (.scb files) can be used again and again if they're generic enough. Simply create the folder: My Documents\Command and Conquer Generals Zero Hour Data\SCB Files, and export the scripts there with a name that tells you what they do.
One other thing. You've seen countless map.str files. These, too,are text files. Each item of text is listed this way:
MapIntro:Number (where number is an actual number), such as MapIntro:01.
You can do other things to display text strings. Include these in the map.str file. I have a map that has civilians placed in it. If one is killed, a script plays a sound and displays the appropriate string. For a working example, download my map LG GoldRushCanyon 3 and play it, then look at the map.str file. You'll find the MapIntro:Number items and you'll find strings named MinerKilled:Number. In other words, you're not limited to the name "MapIntro".
To my knowledge nobody has compiled a library of useful, generic map.ini files and .scb files. It would be nice if someone did this. I'd like to find a link: Map.ini files and .scb files, with a list of each, and a description of what the .ini or .scb file does.