How to make a zone approachable from the overland map:
Disclaimer:
The requisite for this tutorial is a working zone which you created with the editor and which is loadable with localinit.py:
system.set_app_state(state=global_defines.APP_GAME,map="zones\\<zonename>\\<zonename>")
IMPORTANT: Everything described here is a little bit rough around the edges and not really 100% tested out. It worked for me, so it should work for you also.
If you find any errors or can give me hints how to make something better or different, contact me (vid) on the "The Fall mod forum".
http://www.silver-style.com/forum/viewforum.php?f=33 1. first extract the following ubn files into the <thefallinstalldir>: data.ubn, gui.ubn.
2. load up the overlandmap dds file from <thefallinstalldir>\gui\gui_mission\mappanel.png.dds (eg. with photoshop dds plugin)
3. look for a free space below the map image and nearby all the other location images and there draw your map-icon.
4. get the pixelvalues of your map icon: with the mouse hover above the top-left pixel of your map-icon and write down the pixel values for x and y. do the same with the bottom-right pixel of your map-icon.
5. save your file as png into the very same folder, delete the original mappanel.png.dds here AND in the gui.ubn! (when installed, SSE´s "png2dds.zip" tool will create dds files out of all png files on the next run, BUT it here seems to prefer the still existent mappanel.png.dds file from the gui.ubn, therefor you have to delete it. make a backup copy first!)
6. now load up GUIResourceData.exe and open the file: <thefallinstalldir>\data\guidata\map_icons.gui. With this tool you can give unique ids to specific regions in dds/png files to paste them later into certain gui elements.
7. Add a new ressource, give it a unique Id (look for the other ids in the ressource and choose a different one!) and a descriptor (bezeichner).
8. with the newly created ressource selected, click "new area..." ("neuer bereich...") on the right window.
9. here you have to enter the pixel values your wrote down in step 4.
X1,Y1=top-left, X2,Y2=bottom-right. the width and height is calculated automatically. last on the selection list "texture" choose: mappanel.png (there should be only this single item) and click ok.
10. open up the "LayoutManager.exe" and load the file: <thefallinstalldir>\thefall\data\guidata\layout_mission\mappanel.lay
11. here you can specify the position of your mapicon on the overland map:
With the mouse draw a bounding box (leftclick and hold) into the layout window about where you want your mapicon to be displayed. you can change the exact position later.
12. scroll down in the left list to find a new entry: "unbenanntXX" and select it. now you have to specify its values on top of the selection list.
GUI Ressource Id: is the same Id you gave your mapicon in the GUIResourceData.exe tool.
X1/Y1: Position of the top-left pixel of your boundingbox in the mappanel.
Width/Height(Breite/Höhe): should be the exact values of your mapicon, which you can also get from the GUIResourceData.exe tool.
Descriptor(Bezeichner): this one i just copied from the other descriptors: use "IM_<ZONENAME".
13. you have to create a new area within your first area, with the field GUI Ressource Id left blank, width and height are also unimportant (?)
and give it an discriptor like: "FD_<ZONENAME>"
14. now you have to add you zone to the zonelist in <thefallinstalldir>\scripts\system_py.py.
just create a new listentry on the end of the list like this:
"<zonename": ("zones\\<zonename>\\<zonename>", [xpos on map, ypos on map]),
e.g.
"vidzone_1": ("zones\\vidzone_1\\vidzone_1", [480.00, 450.00]),
the x and ypos on the map are to calculate the red dots which pop up when you are travelling and to get the entry point of the map for your party.
15. now you should be able to access your zone from the overland map, but first you have to enable it ingame from the console with this command:
global_defines.set_zone_enabled("<zonename>",True)
now go to the map and your map-icon should be displayed and selectable.
You should trigger this command from somewhere ingame (eg. a dialog or an event in a different zone).
vid (5.12.2005) vidder@gmx.net
Als Ergänzung vielleicht noch, mit "global_defines.ENTRY_ZONE" läßt sich festlegen, welche Zone beim Start der Kampange geladen wird.
Code:
ENTRY_ZONE = "zones\\zone_1\\zone_1"
in global_defines.py startet zum Beispiel mit Zone 1.