Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- X4: Foundations Sector Creation Tutorial 1.00
- This is a tutorial for adding a new sector to the game.
- I will be using the initialism xymn a lot here, it stands for x your mod name, replace it with the
- name of your mod.
- If you haven't already then unpack your game files. https://forum.egosoft.com/viewtopic.php?t=402452
- I recommend reading and editing your .xml files with Notepad++ https://notepad-plus-plus.org/
- Credit to:
- enenra for this tutorial https://github.com/enenra/x4modding/wiki/Universe-Creation
- Dr Reed for their mod New Horizons / Old Lands I learned from https://forum.egosoft.com/viewtopic.php?t=441685
- Sheglov for their mod XPANed Sectors Advanced I also learned from https://forum.egosoft.com/viewtopic.php?t=441236
- Roguey for their brilliant site https://roguey.co.uk/x4/universe/
- euclid for this mod that sped up checking sectors in-game https://forum.egosoft.com/viewtopic.php?t=406885
- iseeu0 for cheatz https://www.moddb.com/mods/iseeu0-cheat/downloads/x4-foundations-cheat-menu-no-player-mods
- This site for converting between quaternions and Euler angles https://quaternions.online/
- Part 0: The absolutely necessary content.xml file
- Create a content.xml file under extensions\xymn\ and put this in it:
- <?xml version="1.0" encoding="utf-8"?>
- <content id="xymn" name="X Your Mod Name" description="Adds a cluster and sector" author="You" version="1.00" date="20XX-XX-XX" save="1" enabled="1">
- </content>
- Part 1: Adding a cluster, a sector, a zone, and naming them.
- Create the following files in the root directory:
- extensions\xymn\index\macros.xml
- extensions\xymn\libraries\mapdefaults.xml
- extensions\xymn\maps\xu_ep2_universe\galaxy.xml
- extensions\xymn\maps\xu_ep2_universe\xymn_clusters.xml
- extensions\xymn\maps\xu_ep2_universe\xymn_sectors.xml
- extensions\xymn\maps\xu_ep2_universe\xymn_zones.xml
- extensions\xymn\t\0001.xml
- 1.1
- In galaxy.xml add the following:
- <?xml version="1.0" encoding="utf-8"?>
- <diff>
- <add sel="/macros/macro[@name='XU_EP2_universe_macro']/connections">
- <!-- XYMN Cluster -->
- <connection name="xymn_cluster_xymnc001_connection" ref="clusters">
- <offset>
- <position x="-240000000" y="0" z="0"/>
- </offset>
- <macro ref="xymn_cluster_xymnc001_macro" connection="galaxy"/>
- </connection>
- </add>
- </diff>
- This is an XML patch, it will add in this section of code when the mod is turned on, you can learn
- more about XML patches here https://forum.egosoft.com/viewtopic.php?t=354310 and here
- https://forum.egosoft.com/viewtopic.php?t=347831.
- In short, 'diff' means you're making some difference to the base game's files, and 'add' means
- you're adding something, 'sel' is the location of the base game file as well as the location in
- that file that will be temporarily altered when the mod is turned on.
- Anything between a <!-- and a --> is a comment and will be ignored by the game, useful for keeping
- a note on what bits of code mean.
- In the line under the comment is the connection alias for the cluster we're adding, basically it's
- a code name for the cluster we use when we're "connecting" the universe together, clusters "connect"
- to sectors, sectors "connect" to zones. The base game and DLC files all use the _connection suffix
- to distinguish them and I'll be doing the same here.
- What is the rest of the name before the suffix though? The first part is something to mark these
- entries as something we're adding, xymn here standing for x your mod name, change this to something
- else short that relates to the name of your mod. For the second part I simply write out what it is
- we're talking about, in this case a cluster. Lastly (aside from the suffix) I've put xymn followed
- by c001, which to me tells me it's the first cluster I'm adding in the xymn mod, if this was the
- first sector in this first cluster I'd use xymnc001xymns001, why use xymn there twice? Well,
- sometimes I'm adding a zone to a vanilla sector already in the game, and when I do that, I would use
- something like the specification vanc001vans001xymnz001, for a zone added to a DLC sector I might
- use splc001spls001xymnz001, terc001ters001xymnz001, or pirc001pirs001xymnz001, depending on the DLC.
- At a glance I can then see where these zones reside.
- Position is the location on the map the cluster will appear, but because the map uses hexagons the
- co-ordinates can be a little unintuitive to work with. To make it as simple as possible: for every
- step east (north-east or south-east) or west (north-west or south-west) you want to move away from
- 0,0 (Grand Exchange) multiply it by 15000 to get the X value, and for every step north or south
- multiply it by 8860 to get the Z value; moving directly north or south counts as two steps; a change
- of 17320 (2 * 8860).
- The map co-ordinates are actually just an every-other-column offset of a simple x/y plot.
- -4 -3 -2 -1 0 1 2 3 4
- [-3 , 2] [-1 , 2] [+1 , 2] [+3 , 2]
- 2
- [-4 , 2] [-2 , 2] [ 0 , 2] [+2 , 2] [+4 , 2]
- [-3 , 1] [-1 , 1] [+1 , 1] [+3 , 1]
- 1
- [-4 , 1] [-2 , 1] [ 0 , 1] [+2 , 1] [+4 , 1]
- |
- [-3 , 0] [-1 , 0] | [+1 , 0] [+3 , 0]
- 0 \ | /
- [-4 , 0] [-2 , 0] [ 0 , 0] [+2 , 0] [+4 , 0]
- / | \
- [-3 ,-1] [-1 ,-1] | [+1 ,-1] [+3 ,-1]
- -1 |
- [-4 ,-1] [-2 ,-1] [ 0 ,-1] [+2 ,-1] [+4 ,-1]
- [-3 ,-2] [-1 ,-2] [+1 ,-2] [+3 ,-2]
- -2
- [-4 ,-2] [-2 ,-2] [ 0 ,-2] [+2 ,-2] [+4 ,-2]
- If you want to move from 0,0 which is <position x="0" y="0" z="0"/> to 3,1 then you'd move 3 * 15000
- = 45000 for X, and 1 * 8860 = 8860 for Z giving you <position x="45000" y="0" z="8860"/>.
- <position x="-240000000" y="0" z="0"/> as I've used is -12,0 in the far west near the terran DLC
- sectors.
- The next line of interest after position mentions a macro and a connection, this is similar to the
- connection alias, and you can see the difference is simply that I've put a _macro suffix on the end
- instead of a _connection suffix, I believe this alias directs the game to look in the macros.xml file
- to tell it where to look for things related to the cluster.
- 1.2
- In xymn_clusters.xml add the following:
- <?xml version="1.0" encoding="utf-8"?>
- <macros>
- <!-- XYMN Cluster -->
- <macro name="xymn_cluster_xymnc001_macro" class="cluster">
- <component ref="standardcluster"/>
- <connections>
- <!-- XYMN Sector -->
- <connection name="xymn_sector_xymnc001xymns001_connection" ref="sectors">
- <macro ref="xymn_sector_xymnc001xymns001_macro" connection="cluster"/>
- </connection>
- <connection ref="content">
- <macro>
- <component connection="space" ref="xymn_cluster_xymnc001"/>
- </macro>
- </connection>
- </connections>
- </macro>
- </macros>
- You'll notice we seem to be adding the cluster again; for clusters, sectors, zones, and regions,
- there will be two corresponding entries that "connect" together, notice we're adding the first
- half of the code we need to add for the sector in this xymn_clusters.xml file, in the sectors file
- we'll be adding the second half, and also the first half of the zones code for zones in that sector.
- The second <connection> block connects the sector to... space? Without this block your sector wont
- appear on the map, that's about as much as I know.
- 1.3
- In xymn_sectors.xml add the following:
- <?xml version="1.0" encoding="utf-8"?>
- <macros>
- <!-- XYMN Sector -->
- <macro name="xymn_sector_xymnc001xymns001_macro" class="sector">
- <component ref="standardsector"/>
- <connections>
- <!-- XYMN Zone -->
- <connection name="xymn_zone_xymnc001xymns001xymnz001_connection" ref="zones">
- <offset>
- <position x="0" y="0" z="0"/>
- </offset>
- <macro ref="xymn_zone_xymnc001xymns001xymnz001_macro" connection="sector"/>
- </connection>
- </connections>
- </macro>
- </macros>
- Very much the same as xymn_clusters.xml, but here we get to define where the zone will be, 0,0,0
- being the centre, these numbers are in meters, if you want to place your gates in the middle of
- your zones you may want to place your zone accordingly. 100000 is a good distance from the centre,
- +x is east, -x is west, +z is north, -z is south, +y is upwards, -y is downwards.
- 1.4
- In xymn_zones.xml add the following:
- <?xml version="1.0" encoding="utf-8"?>
- <macros xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <!-- XYMN Zone -->
- <macro name="xymn_zone_xymnc001xymns001xymnz001_macro" class="zone">
- <component ref="standardzone"/>
- <connections>
- </connections>
- </macro>
- </macros>
- Similar again, just without anything smaller to connect to.
- 1.5
- In macros.xml add the following:
- <?xml version="1.0" encoding="utf-8"?>
- <index>
- <entry name="xymn_galaxy_macro" value="extensions\xymn\maps\XU_ep2_universe\galaxy"/>
- <entry name="xymn_cluster*" value="extensions\xymn\maps\XU_ep2_universe\xymn_clusters"/>
- <entry name="xymn_sector*" value="extensions\xymn\maps\XU_ep2_universe\xymn_sectors"/>
- <entry name="xymn_zone*" value="extensions\xymn\maps\XU_ep2_universe\xymn_zones"/>
- </index>
- This file helps connect things together, or something, I think when the game reads a line like
- <macro ref="xymn_zone_xymnc001xymns001xymnz001_macro" connection="sector"/> then it knows to look at
- the macros.xml file to find where xymn_zone_xymnc001xymns001xymnz001_macro points to, in this case
- reading xymn_zone... in xymn_clusters sends it to xymn_zones.xml.
- The * is a wildcard, use this so it doesn't require an exact match, xymn_zone* will match anything
- that starts with xymn_zone.
- 1.6
- In mapdefaults.xml add the following:
- <?xml version="1.0" encoding="utf-8"?>
- <defaults xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="libraries.xsd">
- <!-- XYMN Cluster -->
- <dataset macro="xymn_cluster_xymnc001_macro">
- <properties>
- <identification name="{900001,100001}" description="{900001,100002}"/>
- <area sunlight="1.0" economy="0.0" security="0.0"/>
- <system>
- </system>
- </properties>
- </dataset>
- <!-- XYMN Sector -->
- <dataset macro="xymn_sector_xymnc001xymns001_macro">
- <properties>
- <identification name="{900001,100003}" description="{900001,100004}"/>
- <area sunlight="1.0" economy="0.0" security="0.0"/>
- <system>
- </system>
- </properties>
- </dataset>
- </defaults>
- You can see the first bit is for the cluster, and the second bit is for the sector, this file partly
- names each, but also defines its sunlight, economy, and security numbers in the encyclopaedia.
- 900001,100001 isn't much of a name though, right? These numbers point to something in the 0001.xml
- file, so let's open that up.
- 1.7
- In 0001.xml add the following:
- <?xml version="1.0" encoding="utf-8"?>
- <diff>
- <add sel="/language">
- <page id="900001" voice="no">
- <t id="100001">Cluster Name</t>
- <t id="100002">Description for Cluster.</t>
- <t id="100003">Sector Name</t>
- <t id="100004">Description for Sector.</t>
- </page>
- </add>
- </diff>
- Replace 'Cluster Name' with what you want to call your cluster, and 'Sector Name' with what you want
- to call your sector, and fill in the descriptions too.
- Part 2: Gates
- Open up these files:
- xymn\maps\xu_ep2_universe\galaxy.xml
- xymn\maps\xu_ep2_universe\xymn_zones.xml
- Create and open this:
- xymn\md\setup_xymn.xml
- 2.1
- In xymn_zones.xml we're going to insert the following:
- <!-- XYMN Gate to ??? -->
- <connection name="xymn_gate_xymnc001xymns001xymnz001_???_connection" ref="gates">
- <offset>
- <position x="0" y="0" z="0"/>
- <rotation yaw="0" pitch="0" roll="0"/>
- </offset>
- <macro ref="props_gates_anc_gate_macro" connection="space"/>
- </connection>
- ... and we're going to insert it between <connections> and </connections> ...
- <?xml version="1.0" encoding="utf-8"?>
- <macros xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <!-- XYMN Zone -->
- <macro name="xymn_zone_xymnc001xymns001xymnz001_macro" class="zone">
- <component ref="standardzone"/>
- <connections>
- </connections>
- </macro>
- </macros>
- ... to get ...
- <?xml version="1.0" encoding="utf-8"?>
- <macros xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <!-- XYMN Zone -->
- <macro name="xymn_zone_xymnc001xymns001xymnz001_macro" class="zone">
- <component ref="standardzone"/>
- <connections>
- <!-- XYMN Gate to ??? -->
- <connection name="xymn_gate_xymnc001xymns001xymnz001_???_connection" ref="gates">
- <offset>
- <position x="0" y="0" z="0"/>
- <rotation yaw="0" pitch="0" roll="0"/>
- </offset>
- <macro ref="props_gates_anc_gate_macro" connection="space"/>
- </connection>
- </connections>
- </macro>
- </macros>
- Now we have a gate in the zone we made earlier, this gate however is going nowhere, we need to make
- another one to connect it to, before that you might want to change the direction this gate faces;
- the numbers of yaw="0" pitch="0" roll="0" are in degrees. 0 yaw for a south gate, 90 yaw for a west
- gate, 180 for north, 270 for east. Also, you can turn gates into accelerators; simply switch out
- props_gates_anc_gate_macro with props_gates_orb_accelerator_01_macro.
- 2.2
- Where do you want to link your sector to? If it's a vanilla sector then create these files:
- extensions\xymn\maps\xu_ep2_universe\sectors.xml
- extensions\xymn\maps\xu_ep2_universe\zones.xml
- If it's a Split Vendetta sector then create these files:
- extensions\xymn\extensions\ego_dlc_split\maps\xu_ep2_universe\dlc4_sectors.xml
- extensions\xymn\extensions\ego_dlc_split\maps\xu_ep2_universe\dlc4_zones.xml
- If it's a Cradle of Humanity sector then create these files:
- extensions\xymn\extensions\ego_dlc_terran\maps\xu_ep2_universe\dlc_terran_sectors.xml
- extensions\xymn\extensions\ego_dlc_terran\maps\xu_ep2_universe\dlc_terran_zones.xml
- If it's a Tides of Avarice sector then create these files:
- extensions\xymn\extensions\ego_dlc_pirate\maps\xu_ep2_universe\dlc_pirate_sectors.xml
- extensions\xymn\extensions\ego_dlc_pirate\maps\xu_ep2_universe\dlc_pirate_zones.xml
- How can you tell which DLC a sector belongs to? There are a few ways if you search around, but one
- way is to look up the sector on Roguey's incredibly helpful site https://roguey.co.uk/x4/universe/
- and look at the url, if the cluster is a three digit number such as 104 then it's a DLC sector, if
- that three digit number starts with a 1 then it's a Cradle of Humanity cluster, if it starts with a
- 4 it's a Split Vendetta cluster, and if it starts with a 5 then it's a Tides of Avarice cluster.
- 2.3
- Open up the sectors.xml/dlc4_sectors.xml/dlc_terran_sectors.xml/dlc_pirate_sectors.xml file you
- just made and add:
- <?xml version="1.0" encoding="utf-8"?>
- <diff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
- <!-- Grand Exchange I Sector -->
- <add sel="//macros/macro[@name='Cluster_01_Sector001_macro']/connections">
- <!-- Grand Exchange I Zone -->
- <connection name="xymn_zone_vanc001vans001xymnz001_connection" ref="zones">
- <offset>
- <position x="0" y="0" z="0"/>
- </offset>
- <macro ref="xymn_zone_vanc001vans001xymnz001_macro" connection="sector"/>
- </connection>
- </add>
- </diff>
- This will add a zone to Grand Exchange I, you will likely want to change it to another sector,
- look up the sector you want on Roguey's fantastically amazing site https://roguey.co.uk/x4/universe/
- and note down the url; for example, Getsu Fune's sector's url is:
- https://roguey.co.uk/x4/universe/cluster_48_macro/cluster_48_sector001_macro/
- To change where we're putting this zone, we need to change this line:
- <add sel="//macros/macro[@name='Cluster_01_Sector001_macro']/connections">
- Specifically, this part: Cluster_01_Sector001_macro, or even more specifically: Cluster_01_Sector001.
- You can probably already see what we'll change it to, if we want the zone to be in Getsu Fune.
- Replace Cluster_01_Sector001 with Cluster_48_Sector001 and we get:
- <add sel="//macros/macro[@name='Cluster_48_Sector001_macro']/connections">
- Adjust the connection and macro entries beneath this; for Getsu Fune I would enter:
- xymn_zone_vanc048vans001xymnz001_connection and xymn_zone_vanc001vans048xymnz001_macro
- 2.4
- Now open the zones.xml file and add:
- <?xml version="1.0" encoding="utf-8"?>
- <diff>
- <!-- Grand Exchange I Zone -->
- <add sel="/macros" silent="true">
- <macro name="xymn_zone_vanc001vans001xymnz001_macro" class="zone">
- <component ref="standardzone"/>
- <connections>
- <!-- Grand Exchange I Gate to XYMN Sector -->
- <connection name="xymn_gate_vanc001vans001xymnz001_xymnc001xymns001xymnz001_connection" ref="gates">
- <offset>
- <position x="0" y="0" z="0"/>
- <rotation yaw="0" pitch="0" roll="0"/>
- </offset>
- <macro ref="props_gates_anc_gate_macro" connection="space"/>
- </connection>
- </connections>
- </macro>
- </add>
- </diff>
- Can you see what to change here? If we're creating a gate in Getsu Fune let's change each instance
- of vanc001 to vanc048. Let's look at why that connection name is so long too, it seems to specify
- two zones, well, the first long string is where I'm putting the gate, and the second string is the
- destination zone, it makes it easy to understand at a glance what's going on, you don't have to use
- this naming convention, I just find it intuitive.
- 2.5
- Let's go back to xymn_zones.xml, If we want to go to Grand Exchange I let's change those ???s:
- <?xml version="1.0" encoding="utf-8"?>
- <macros xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <!-- XYMN Zone -->
- <macro name="xymn_zone_xymnc001xymns001xymnz001_macro" class="zone">
- <component ref="standardzone"/>
- <connections>
- <!-- XYMN Gate to Grand Exchange I -->
- <connection name="xymn_gate_xymnc001xymns001xymnz001_vanc001vans001xymnz001_connection" ref="gates">
- <offset>
- <position x="0" y="0" z="0"/>
- <rotation yaw="0" pitch="0" roll="0"/>
- </offset>
- <macro ref="props_gates_anc_gate_macro" connection="space"/>
- </connection>
- </connections>
- </macro>
- </macros>
- Remember to change vanc001vans001 to vanc048vans001 for Getsu Fune, or to whatever number is right
- for the sector you're using.
- 2.6
- These gates are as yet unconnected, so let's connect them in galaxy.xml, insert this:
- <!-- Gate Connection: XYMN Sector to Grand Exchange I -->
- <connection name="xymn_gate_xymnc001xymns001xymnz001_vanc001vans001xymnz001" ref="destination" path="../xymn_cluster_xymnc001_connection/xymn_sector_xymnc001xymns001_connection/xymn_zone_xymnc001xymns001xymnz001_connection/xymn_gate_xymnc001xymns001xymnz001_vanc001vans001xymnz001_connection">
- <macro connection="destination" path="../../../../../Cluster_01_connection/Cluster_01_Sector001_connection/xymn_zone_vanc001vans001xymnz001_connection/xymn_gate_vanc001vans001xymnz001_xymnc001xymns001xymnz001_connection"/>
- </connection>
- ... between </connection> and </add> ...
- <?xml version="1.0" encoding="utf-8"?>
- <diff>
- <add sel="/macros/macro[@name='XU_EP2_universe_macro']/connections">
- <!-- XYMN Cluster -->
- <connection name="xymn_cluster_xymnc001_connection" ref="clusters">
- <offset>
- <position x="-240000000" y="0" z="0"/>
- </offset>
- <macro ref="xymn_cluster_xymnc001_macro" connection="galaxy"/>
- </connection>
- </add>
- </diff>
- ... to get ...
- <?xml version="1.0" encoding="utf-8"?>
- <diff>
- <add sel="/macros/macro[@name='XU_EP2_universe_macro']/connections">
- <!-- XYMN Cluster -->
- <connection name="xymn_cluster_xymnc001_connection" ref="clusters">
- <offset>
- <position x="-240000000" y="0" z="0"/>
- </offset>
- <macro ref="xymn_cluster_xymnc001_macro" connection="galaxy"/>
- </connection>
- <!-- Gate Connection: XYMN Sector to Grand Exchange I -->
- <connection name="xymn_gate_xymnc001xymns001xymnz001_vanc001vans001xymnz001" ref="destination" path="../xymn_cluster_xymnc001_connection/xymn_sector_xymnc001xymns001_connection/xymn_zone_xymnc001xymns001xymnz001_connection/xymn_gate_xymnc001xymns001xymnz001_vanc001vans001xymnz001_connection">
- <macro connection="destination" path="../../../../../Cluster_01_connection/Cluster_01_Sector001_connection/xymn_zone_vanc001vans001xymnz001_connection/xymn_gate_vanc001vans001xymnz001_xymnc001xymns001xymnz001_connection"/>
- </connection>
- </add>
- </diff>
- 2.7
- We need to connect them in setup_xymn.xml too, so add this:
- <?xml version="1.0" encoding="utf-8"?>
- <mdscript name="Setup_xymn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="md.xsd">
- <cues>
- <!-- Find Clusters -->
- <cue name="xymn_Start" checktime="0.1s" checkinterval="0.5s" version="2">
- <check_all>
- <event_game_loaded/>
- </check_all>
- <actions>
- <find_zone name="md.$xymn_zone_xymnc001xymns001xymnz001" macro="macro.xymn_zone_xymnc001xymns001xymnz001_macro"/>
- <find_zone name="md.$xymn_zone_vanc001vans001xymnz001" macro="macro.xymn_zone_vanc001vans001xymnz001_macro"/>
- </actions>
- </cue>
- <!-- Activate Gates between XYMN Sector and Grand Exchange I -->
- <cue name="ActivateGate_xymnc001xymns001xymnz001_vanc001vans001xymnz001">
- <conditions>
- <check_all>
- <event_cue_signalled cue="xymn_Start"/>
- </check_all>
- </conditions>
- <cues>
- <cue name="ActivateGate_Wait" checkinterval="0.1s">
- <actions>
- <find_object groupname="$Gates" class="class.gate" space="md.$xymn_zone_xymnc001xymns001xymnz001" required="true"/>
- <find_object groupname="$Gates" class="class.gate" space="md.$xymn_zone_vanc001vans001xymnz001" required="true"/>
- <do_all exact="$Gates.count" counter="$i">
- <set_value name="$Gate" exact="$Gates.{$i}"/>
- <do_if value="not $Gate.isactive and $Gate.exit.exists">
- <debug_text text="player.module + ': Activating Jumpgate between ' + $Gate.cluster.knownname + ' and ' + $Gate.exit.cluster.knownname"/>
- <set_object_active object="$Gate" activate="true"/>
- </do_if>
- </do_all>
- </actions>
- </cue>
- </cues>
- </cue>
- </cues>
- </mdscript>
- Change what you need to; the <find_zone> name value and <find_object> space value must be the same,
- the <find_zone> macro value is your zones' macro alias. If you want to add more gates you can add
- more <find_zone> entries within the same <actions> block, but you also need to add a new 22 line cue
- block (23 including a comment) too, it would look something like this:
- <?xml version="1.0" encoding="utf-8"?>
- <mdscript name="Setup_xymn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="md.xsd">
- <cues>
- <!-- Find Clusters -->
- <cue name="xymn_Start" checktime="0.1s" checkinterval="0.5s" version="2">
- <check_all>
- <event_game_loaded/>
- </check_all>
- <actions>
- <find_zone name="md.$xymn_zone_xymnc001xymns001xymnz001" macro="macro.xymn_zone_xymnc001xymns001xymnz001_macro"/>
- <find_zone name="md.$xymn_zone_vanc001vans001xymnz001" macro="macro.xymn_zone_vanc001vans001xymnz001_macro"/>
- <find_zone name="md.$xymn_zone_xymnc001xymns001xymnz002" macro="macro.xymn_zone_xymnc001xymns001xymnz002_macro"/>
- <find_zone name="md.$xymn_zone_vanc001vans002xymnz001" macro="macro.xymn_zone_vanc001vans002xymnz001_macro"/>
- </actions>
- </cue>
- <!-- Activate Gates between XYMN Sector and Grand Exchange I -->
- <cue name="ActivateGate_xymnc001xymns001xymnz001_vanc001vans001xymnz001">
- <conditions>
- <check_all>
- <event_cue_signalled cue="xymn_Start"/>
- </check_all>
- </conditions>
- <cues>
- <cue name="ActivateGate_Wait" checkinterval="0.1s">
- <actions>
- <find_object groupname="$Gates" class="class.gate" space="md.$xymn_zone_xymnc001xymns001xymnz001" required="true"/>
- <find_object groupname="$Gates" class="class.gate" space="md.$xymn_zone_vanc001vans001xymnz001" required="true"/>
- <do_all exact="$Gates.count" counter="$i">
- <set_value name="$Gate" exact="$Gates.{$i}"/>
- <do_if value="not $Gate.isactive and $Gate.exit.exists">
- <debug_text text="player.module + ': Activating Jumpgate between ' + $Gate.cluster.knownname + ' and ' + $Gate.exit.cluster.knownname"/>
- <set_object_active object="$Gate" activate="true"/>
- </do_if>
- </do_all>
- </actions>
- </cue>
- </cues>
- </cue>
- <!-- Activate Gates between XYMN Sector and Grand Exchange II -->
- <cue name="ActivateGate_xymnc001xymns001xymnz002_vanc001vans002xymnz001">
- <conditions>
- <check_all>
- <event_cue_signalled cue="xymn_Start"/>
- </check_all>
- </conditions>
- <cues>
- <cue name="ActivateGate_Wait" checkinterval="0.1s">
- <actions>
- <find_object groupname="$Gates" class="class.gate" space="md.$xymn_zone_xymnc001xymns001xymnz002" required="true"/>
- <find_object groupname="$Gates" class="class.gate" space="md.$xymn_zone_vanc001vans002xymnz001" required="true"/>
- <do_all exact="$Gates.count" counter="$i">
- <set_value name="$Gate" exact="$Gates.{$i}"/>
- <do_if value="not $Gate.isactive and $Gate.exit.exists">
- <debug_text text="player.module + ': Activating Jumpgate between ' + $Gate.cluster.knownname + ' and ' + $Gate.exit.cluster.knownname"/>
- <set_object_active object="$Gate" activate="true"/>
- </do_if>
- </do_all>
- </actions>
- </cue>
- </cues>
- </cue>
- </cues>
- </mdscript>
- Part 3: Background
- 3.1
- Create these files:
- extensions\xymn\assets\environments\cluster\xymn_env_cluster_xymnc001.xml
- extensions\xymn\assets\environments\cluster\macros\xymn_env_cluster_xymnc001_macro.xml
- extensions\xymn\index\components.xml
- Create this directory:
- extensions\xymn\assets\environments\cluster\xymn_env_cluster_xymnc001_data\
- Put this in xymn_env_cluster_xymnc001.xml:
- <?xml version="1.0"?>
- <components>
- <component name="xymn_cluster_xymnc001" class="celestialbody">
- <source geometry="extensions\xymn\assets\environments\cluster\xymn_env_cluster_xymnc001_data"/>
- </component>
- </components>
- Put this in xymn_env_cluster_xymnc001_macro.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <macros>
- <macro name="xymn_cluster_xymnc001_macro" class="celestialbody">
- <component ref="xymn_cluster_xymnc001"/>
- <properties>
- <identification unique="0"/>
- </properties>
- </macro>
- </macros>
- Remember to change the numbers.
- 3.2
- Open components.xml and add:
- <?xml version="1.0" encoding="utf-8"?>
- <diff>
- <add sel="/index">
- <entry name="xymn_cluster_xymnc001" value="extensions\xymn\assets\environments\cluster\xymn_env_cluster_xymnc001"/>
- </add>
- </diff>
- 3.3
- Let's go shopping.
- See any sectors you like the look of? I'm going to copy Getsu Fune's look. Let's look in this
- directory unpacked\assets\environments\cluster for some files related to cluster 48.
- We'll need:
- unpacked\assets\environments\cluster\Cluster_48.xml
- unpacked\assets\environments\cluster\Cluster_48_data\anim_moon_v1-collision.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\anim_moon_v1-lod0.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\assets_environments_cluster_cluster_48-collision.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\assets_environments_cluster_cluster_48-lod0.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\atmosphere001-collision.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\atmosphere001-lod0.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\background-collision.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\background-lod0.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\bigstar001-collision.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\bigstar001-lod0.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\mediumstar001-collision.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\mediumstar001-lod0.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\nebula001-collision.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\nebula001-lod0.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\part_c14_bg-collision.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\part_c14_bg-lod0.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\planet001c-collision.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\planet001c-lod0.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\smallstar001-collision.xmf
- unpacked\assets\environments\cluster\Cluster_48_data\smallstar001-lod0.xmf
- First let's copy all those .xmf files into the directory you made:
- extensions\xymnn\assets\environments\cluster\xymn_env_cluster_xymnc001_data\
- Now let's open up both Cluster_48.xml and xymn_env_cluster_xymnc001.xml
- Copy everything in Cluster_48.xml from line 5 ...
- <layers>
- ... to line 217 ...
- </connections>
- ... and insert it into xymn_env_cluster_xymnc001.xml after the 'source' line ...
- <?xml version="1.0"?>
- <components>
- <component name="xymn_cluster_xymnc001" class="celestialbody">
- <source geometry="extensions\xymn\assets\environments\cluster\xymn_env_cluster_xymnc001_data"/>
- </component>
- </components>
- ... to get ...
- <?xml version="1.0"?>
- <components>
- <component name="xymn_cluster_xymnc001" class="celestialbody">
- <source geometry="extensions\xymn\assets\environments\cluster\xymn_env_cluster_xymnc001_data"/>
- <layers>
- lots of stuff here
- </connections>
- </component>
- </components>
- Have a look at each block of code, at the top you can see between <lights> and </lights> is the
- lighting, there are values for the colour, the range, the range it creates shadows, and some other
- effects.
- Between <connection> and </connection> after that you can see various stars and moons you'll be able
- to see in your sector, try moving them around or making them bigger or smaller by adjusting their
- values. The 'ref' value refers to the .xmf file, if you want a star or planet etc. from another
- cluster then copy the .xmf files from another unpacked\assets\environments\cluster\Cluster_??_data\
- directory and copy the related code from unpacked\assets\environments\cluster\Cluster_??.xml.
- Part 4: An Image
- 4.1
- Create a directory here: extensions\xymn\assets\fx\gui\textures\encyclopedia\systems\ and add an
- image called something like xymn_img_xymnc001.tga to it, you can use a progam like GIMP 2 to turn
- an image into a .tga, just save it as a .tga when exporting the image.
- 4.2
- Create the file icons.xml in extensions\xymn\libraries\ and add this to it
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE icons SYSTEM "icons.dtd" >
- <icons>
- <icon name="xymn_img_xymnc001" texture="extensions\xymn\assets\fx\gui\textures\encyclopedia\systems\xymn_img_xymnc001.tga" height="256" width="256"/>
- </icons>
- 4.3
- Open mapdefaults.xml and after the description parts of the identification lines add
- image="xymn_img_xymnc001".
- Before:
- <?xml version="1.0" encoding="utf-8"?>
- <defaults xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="libraries.xsd">
- <!-- XYMN Cluster -->
- <dataset macro="xymn_sector_xymnc001_macro">
- <properties>
- <identification name="{900001,100001}" description="{900001,100002}"/>
- <area sunlight="1.0" economy="0.0" security="0.0"/>
- <system>
- </system>
- </properties>
- </dataset>
- <!-- XYMN Sector -->
- <dataset macro="xymn_sector_xymnc001xymns001_macro">
- <properties>
- <identification name="{900001,100003}" description="{900001,100004}"/>
- <area sunlight="1.0" economy="0.0" security="0.0"/>
- <system>
- </system>
- </properties>
- </dataset>
- </defaults>
- After:
- <?xml version="1.0" encoding="utf-8"?>
- <defaults xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="libraries.xsd">
- <!-- XYMN Cluster -->
- <dataset macro="xymn_cluster_xymnc001_macro">
- <properties>
- <identification name="{900001,100001}" description="{900001,100002}" image="xymn_img_xymnc001"/>
- <area sunlight="1.0" economy="0.0" security="0.0"/>
- <system>
- </system>
- </properties>
- </dataset>
- <!-- XYMN Sector -->
- <dataset macro="xymn_sector_xymnc001xymns001_macro">
- <properties>
- <identification name="{900001,100003}" description="{900001,100004}" image="xymn_img_xymnc001"/>
- <area sunlight="1.0" economy="0.0" security="0.0"/>
- <system>
- </system>
- </properties>
- </dataset>
- </defaults>
- Part 5: Regions, asteroids, fog, and debris
- 5.1
- Create these files:
- extensions\xymn\libraries\region_definitions.xml
- extensions\xymn\libraries\regionobjectgroups.xml
- extensions\xymn\libraries\regionyields.xml
- extensions\xymn\assets\environments\asteroids\xymn_env_ast_ore_xxl_01.xml
- extensions\xymn\assets\environments\asteroids\macros\xymn_env_ast_ore_xxl_01_macro.xml
- extensions\xymn\assets\environments\fog\xymn_env_fog_01.xml
- extensions\xymn\assets\environments\fog\macros\xymn_env_fog_01_macro.xml
- extensions\xymn\assets\environments\debris\xymn_env_debris_xenon_xxl_01.xml
- extensions\xymn\assets\environments\debris\macros\xymn_env_debris_xenon_xxl_01_macro.xml
- Create these directories:
- extensions\xymn\assets\environments\asteroids\xymn_env_ast_ore_xxl_01_data
- extensions\xymn\assets\environments\fog\xymn_env_fog_01_data
- extensions\xymn\assets\environments\debris\xymn_env_debris_xenon_xxl_01_data
- I've picked xxl sized ore asteroids and xenon debris here, you can pick a different size, just
- remember to change it from xxl consistently, the naming scheme here doesn't actually change the
- sizes that will appear in the game, but you probably want what it's called to match what it looks
- like.
- 5.2
- Open xymn_clusters.xml and create a new region by inserting this:
- <connection name="xymn_region_xymnc001xymnr001_connection" ref="regions">
- <offset>
- <position x="0" y="0" z="0"/>
- </offset>
- <macro name="xymn_region_xymnc001xymnr001_macro">
- <component connection="cluster" ref="standardregion"/>
- <properties>
- <region ref="xymn_region_xymnc001xymnr001"/>
- </properties>
- </macro>
- </connection>
- ... as a new <connection> block between </connection> and <connection ref="content"> ...
- <?xml version="1.0" encoding="utf-8"?>
- <macros>
- <!-- XYMN Cluster -->
- <macro name="xymn_cluster_xymnc001_macro" class="cluster">
- <component ref="standardcluster"/>
- <connections>
- <!-- XYMN Sector -->
- <connection name="xymn_sector_xymnc001xymns001_connection" ref="sectors">
- <macro ref="xymn_sector_xymnc001xymns001_macro" connection="cluster"/>
- </connection>
- <connection ref="content">
- <macro>
- <component connection="space" ref="xymn_cluster_xymnc001"/>
- </macro>
- </connection>
- </connections>
- </macro>
- </macros>
- ... to get ...
- <?xml version="1.0" encoding="utf-8"?>
- <macros>
- <!-- XYMN Cluster -->
- <macro name="xymn_cluster_xymnc001_macro" class="cluster">
- <component ref="standardcluster"/>
- <connections>
- <!-- XYMN Sector -->
- <connection name="xymn_sector_xymnc001xymns001_connection" ref="sectors">
- <macro ref="xymn_sector_xymnc001xymns001_macro" connection="cluster"/>
- </connection>
- <connection name="xymn_region_xymnc001xymnr001_connection" ref="regions">
- <offset>
- <position x="0" y="0" z="0"/>
- </offset>
- <macro name="xymn_region_xymnc001xymnr001_macro">
- <component connection="cluster" ref="standardregion"/>
- <properties>
- <region ref="xymn_region_xymnc001xymnr001"/>
- </properties>
- </macro>
- </connection>
- <connection ref="content">
- <macro>
- <component connection="space" ref="xymn_cluster_xymnc001"/>
- </macro>
- </connection>
- </connections>
- </macro>
- </macros>
- 5.3
- Open region_definitions.xml and add:
- <?xml version="1.0" encoding="utf-8"?>
- <diff>
- <add sel="/regions">
- <region name="xymn_region_xymnc001xymnr001" density="0.1" rotation="0" noisescale="0" seed="0" minnoisevalue="0" maxnoisevalue="1">
- <boundaries>
- <boundary class="sphere">
- <position x="0" y="0" z="0"/>
- <size r="100000"/>
- </boundary>
- </boundaries>
- <falloff>
- <radial>
- <step position="0.0" value="0.0"/>
- <step position="0.1" value="0.0"/>
- <step position="0.1" value="1.0"/>
- <step position="1.0" value="1.0"/>
- </radial>
- </falloff>
- <fields>
- <asteroid groupref="xymn_asteroid_ore_xxl" lodrule="asteroidxl" densityfactor="1" rotation="360" rotationvariation="0" noisescale="1" seed="0" minnoisevalue="0" maxnoisevalue="1"/>
- <nebula ref="xymn_env_fog_01_macro" localred="0" localgreen="0" localblue="0" localdensity="0" uniformred="0" uniformgreen="0" uniformblue="0" uniformdensity="0" backgroundfog="false" resources="hydrogen"/>
- <debris groupref="xymn_debris_xenon_xxl" densityfactor="1" rotation="360" rotationvariation="0" noisescale="1" seed="1" minnoisevalue="0" maxnoisevalue="1"/>
- </fields>
- <resources>
- <resource ware="ore" yield="xymnyield"/>
- <resource ware="hydrogen" yield="xymnyield"/>
- <resource ware="rawscrap" yield="xymnyield"/>
- </resources>
- </region>
- </add>
- </diff>
- Look in region_definitions.xsd for useful information on what some of these fields do. Falloff
- controls where the asteroids will appear within the region, here there are no asteroids from 0.0
- to 0.1 (ten percent) between the centre of the sphere and 10% of its radius in all directions, then
- from 0.1 to 1.0 (90%) is full of asteroids to the specified density level - this means that you'll
- get a ball of an asteroid field with a small area right in the middle that's empty.
- 5.4
- Open macros.xml and insert:
- <entry name="xymn_region*" value="extensions\xymn\libraries\region_definitions"/>
- <entry name="xymn_env_ast_ore_xxl_01*" value="extensions\xymn\assets\environments\asteroids\macros\xymn_env_ast_ore_xxl_01_macro"/>
- <entry name="xymn_env_debris_xenon_xxl_01*" value="extensions\xymn\assets\environments\debris\macros\xymn_env_debris_xenon_xxl_01_macro"/>
- ... as a new entry block ...
- <?xml version="1.0" encoding="utf-8"?>
- <index>
- <entry name="xymn_galaxy_macro" value="extensions\xymn\maps\XU_ep2_universe\galaxy"/>
- <entry name="xymn_cluster*" value="extensions\xymn\maps\XU_ep2_universe\xymn_clusters"/>
- <entry name="xymn_sector*" value="extensions\xymn\maps\XU_ep2_universe\xymn_sectors"/>
- <entry name="xymn_zone*" value="extensions\xymn\maps\XU_ep2_universe\xymn_zones"/>
- </index>
- ... to get ...
- <?xml version="1.0" encoding="utf-8"?>
- <index>
- <entry name="xymn_galaxy_macro" value="extensions\xymn\maps\XU_ep2_universe\galaxy"/>
- <entry name="xymn_cluster*" value="extensions\xymn\maps\XU_ep2_universe\xymn_clusters"/>
- <entry name="xymn_sector*" value="extensions\xymn\maps\XU_ep2_universe\xymn_sectors"/>
- <entry name="xymn_zone*" value="extensions\xymn\maps\XU_ep2_universe\xymn_zones"/>
- <entry name="xymn_region*" value="extensions\xymn\libraries\region_definitions"/>
- <entry name="xymn_env_ast_ore_xxl_01*" value="extensions\xymn\assets\environments\asteroids\macros\xymn_env_ast_ore_xxl_01_macro"/>
- <entry name="xymn_env_debris_xenon_xxl_01*" value="extensions\xymn\assets\environments\debris\macros\xymn_env_debris_xenon_xxl_01_macro"/>
- </index>
- 5.5
- Open regionobjectgroups.xml and add:
- <?xml version="1.0" encoding="utf-8"?>
- <diff>
- <add sel="//groups">
- <group name="xymn_asteroid_ore_xxl" resource="ore" yield="1" yieldvariation="0">
- <select macro="xymn_env_ast_ore_xxl_01_macro"/>
- </group>
- <group name="xymn_debris_xenon_xxl" resource="rawscrap" yield="1" yieldvariation="0">
- <select macro="xymn_env_debris_xenon_xxl_01_macro"/>
- </group>
- </add>
- </diff>
- The <group> name value here is the <asteroid>/<debris> groupref value from region_definitions.xml.
- Yield is the minimum amount of... well... yield something will spawn with, if you set it higher you
- can concentrate higher yields into fewer asteroids or debris, but other asteroids and debris will
- become empty, the overall amount of resources stays the same, to raise the overall amount you need
- to change the next file. Gas resources don't use this file.
- 5.6
- Open regionyields.xml and add:
- <?xml version="1.0" encoding="utf-8"?>
- <diff>
- <add sel="/regionyields/resource[@ware='ore']">
- <yield name="xymnyield" resourcedensity="0.999" replenishtime="10000" scaneffect="scfx_dynamic_highyield_01" scaneffectdensity="0.01" scaneffectintensity="1.0"/>
- </add>
- <add sel="/regionyields/resource[@ware='helium']">
- <yield name="xymnyield" resourcedensity="100000" replenishtime="10000" gatherspeedfactor="5.0" scaneffect="scfx_dynamic_highyield_01" scaneffectdensity="0.01" scaneffectintensity="1.0"/>
- </add>
- <add sel="/regionyields/resource[@ware='rawscrap']">
- <yield name="xymnyield" resourcedensity="0.999 " replenishtime="10000" scaneffect="scfx_dynamic_highyield_01" scaneffectdensity="0.01" scaneffectintensity="1.0"/>
- </add>
- </diff>
- The <yield> name value here is the <resource> yield value in region_definitions.xml, you could skip
- the step of making this file and just use the presets from lowest to veryhigh in the
- region_definitions.xml file if you want.
- Change resourcedensity to change the... well you get it, the density of resources, a bigger number
- is more overall resources, the numbers I've used create a field with asteroids and debris with
- 1000/2000 yield each respectively, gas resources work differently, which is why their numbers are so
- different in scale.
- 5.7.1
- Put this in xymn_env_ast_ore_xxl_01.xml:
- <?xml version="1.0"?>
- <components>
- <component name="xymn_env_ast_ore_xxl_01" class="asteroid">
- <source geometry="extensions\xymn\assets\environments\asteroids\xymn_env_ast_ore_xxl_01_data"/>
- </component>
- </components>
- 5.7.2
- Put this in xymn_env_ast_ore_xxl_01_macro.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <macros>
- <macro name="xymn_env_ast_ore_xxl_01_macro" class="asteroid">
- <component ref="xymn_env_ast_ore_xxl_01"/>
- <properties>
- <identification name="{20001,801}" description="{20001,802}"/>
- <hull max="100000"/>
- </properties>
- </macro>
- </macros>
- 5.7.3
- Put this in xymn_env_debris_xenon_xxl_01.xml:
- <?xml version="1.0"?>
- <components>
- <component name="xymn_env_debris_xenon_xxl_01" class="recyclable">
- <source geometry="extensions\xymn\assets\environments\debris\xymn_env_debris_xenon_xxl_01_data"/>
- </component>
- </components>
- 5.7.4
- Put this in xymn_env_debris_xenon_xxl_01_macro.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <macros>
- <macro name="xymn_env_debris_xenon_xxl_01_macro" class="recyclable">
- <component ref="xymn_env_debris_xenon_xxl_01" />
- <properties>
- <identification name="{20109,5301}" />
- </properties>
- </macro>
- </macros>
- 5.7.5
- Put this in xymn_env_fog_01.xml:
- <?xml version="1.0"?>
- <components>
- <component name="xymn_env_fog_01" class="fogvolume">
- <source geometry="extensions\xymn\assets\environments\fog\xymn_env_fog_01_data"/>
- </component>
- </components>
- 5.7.6
- Put this in xymn_env_fog_01_macro.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <macros>
- <macro name="xymn_env_fog_01_macro" class="fogvolume">
- <component ref="xymn_env_fog_01"/>
- </macro>
- </macros>
- 5.8
- Open components.xml and add
- <entry name="xymn_env_ast_ore_xxl_01" value="extensions\xymn\assets\environments\asteroids\xymn_env_ast_ore_xxl_01"/>
- <entry name="xymn_env_fog_01" value="extensions\xymn\assets\environments\fog\xymn_env_fog_01"/>
- <entry name="xymn_env_debris_xenon_xxl_01" value="extensions\xymn\assets\environments\debris\xymn_env_debris_xenon_xxl_01"/>
- ... as new <entry> blocks after the first one ...
- <?xml version="1.0" encoding="utf-8"?>
- <diff>
- <add sel="/index">
- <entry name="xymn_cluster_xymnc001" value="extensions\xymn\assets\environments\cluster\xymn_env_cluster_xymnc001"/>
- </add>
- </diff>
- ... to get ...
- <?xml version="1.0" encoding="utf-8"?>
- <diff>
- <add sel="/index">
- <entry name="xymn_cluster_xymnc001" value="extensions\xymn\assets\environments\cluster\xymn_env_cluster_xymnc001"/>
- <entry name="xymn_env_ast_ore_xxl_01" value="extensions\xymn\assets\environments\asteroids\xymn_env_ast_ore_xxl_01"/>
- <entry name="xymn_env_fog_01" value="extensions\xymn\assets\environments\fog\xymn_env_fog_01"/>
- <entry name="xymn_env_debris_xenon_xxl_01" value="extensions\xymn\assets\environments\debris\xymn_env_debris_xenon_xxl_01"/>
- </add>
- </diff>
- 5.9.1
- Shopping time.
- Let's have a look at unpacked\assets\environments\asteroids at all the ore xxl files.
- unpacked\assets\environments\asteroids\macros\env_ast_ore_xxl_01.xml
- unpacked\assets\environments\asteroids\macros\env_ast_ore_xxl_01_macro.xml
- unpacked\assets\environments\asteroids\env_ast_ore_xxl_01_data\assets_environments_asteroids_env_ast_ore_xxl_01-collision.xmf
- unpacked\assets\environments\asteroids\env_ast_ore_xxl_01_data\assets_environments_asteroids_env_ast_ore_xxl_01-lod0.xmf
- unpacked\assets\environments\asteroids\env_ast_ore_xxl_01_data\part_main-collision.xmf
- unpacked\assets\environments\asteroids\env_ast_ore_xxl_01_data\part_main-lod0.xmf
- unpacked\assets\environments\asteroids\env_ast_ore_xxl_01_data\part_main-lod1.xmf
- unpacked\assets\environments\asteroids\env_ast_ore_xxl_01_data\part_main-lod2.xmf
- We can copy those .xmf files to extensions\xymn\assets\environments\asteroids\xymn_env_ast_ore_xxl_01_data
- Next open up both env_ast_ore_xxl_01.xml and xymn_env_ast_ore_xxl_01.xml and copy everything in
- env_ast_ore_xxl_01.xml from line 5 ...
- <layers>
- ... to line 52 ...
- </connections>
- ... and insert it into xymn_env_ast_ore_xxl_01.xml after the 'source' line ...
- <?xml version="1.0"?>
- <components>
- <component name="xymn_env_ast_ore_xxl_01" class="asteroid">
- <source geometry="extensions\xymn\assets\environments\asteroids\xymn_env_ast_ore_xxl_01_data"/>
- </component>
- </components>
- ... to get ...
- <?xml version="1.0"?>
- <components>
- <component name="xymn_env_ast_ore_xxl_01" class="asteroid">
- <source geometry="extensions\xymn\assets\environments\asteroids\xymn_env_ast_ore_xxl_01_data"/>
- <layers>
- lots of stuff here
- </connections>
- </component>
- </components>
- Open env_ast_ore_xxl_01_macro.xml and you'll see something that we don't have in our
- xymn_env_ast_ore_xxl_01_macro.xml file: <drop ref="asteroid_ore_xl"/>
- Copy that over if you want to, you'll find more information on drops in unpacked\libraries\drops.xml
- 5.9.2
- Do the same thing with debris, I picked env_debris_xenon_xxl_01
- 5.9.3
- Do the same thing with fog, I picked fogpattern_v3
- Part 6: Test it and tweak it
- I recommend using iseeu0's cheat mod (the so called "x4-foundations CHEAT MENU NO PLAYER MODS"
- version) to uncover the map so you can jump to your new sector quickly to see it.
- https://www.moddb.com/mods/iseeu0-cheat/downloads/x4-foundations-cheat-menu-no-player-mods
- If you've spotted any mistakes in this tutorial, please don't hesitate to pick me up on it, you can
- get in touch with me on the https://forum.egosoft.com website, my username is Oganesson, you can
- either message me directly or post in this thread https://forum.egosoft.com/viewtopic.php?t=450155.
- Happy modding.
- Og.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement