XML:Expert tutorial: Difference between revisions

From OniGalore
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 2: Line 2:




==Possible candidates==
Expert-level modding, huh?
 
That's when you not just design XML data that depend on each other but when you also have to consider special behavior of how some files types/data get packed or processed.
 
 
===Patch mods===
[[Making_a_patch_mod|Patching XML files]] with code fragments or special instructions can combine features and avoid conflicts.
 
 
====Example: Rifle Sprinting====
There was a compatibility problem between and "51000 Rifle Sprinting" and "54000 New Combat Moves for Konoko".
 
Both packages modify TRAC files whereby 54000 with its higher value has priority so 51000 is broken when both are installed at the same time.
 
To avoid conflicts 51000 needs to be XML patch mod (*.oni-patch) - now the code from 51000 is injected into the files of 54000 (or any other package that comes with the same file (names)).
 
Note how Rifle Sprinting uses the '''oni''' folder for new content and the '''patches''' folder for code injections.
 
 
'''Old structure:'''
 
AE\AEInstaller\packages\51000Rifle_Sprinting\'''oni'''\common\level0_Final
TRACkonokolev1_animations.oni
TRACkonoko_animations.oni
TRACkonokocore_animations.oni
TRAMKONSPRPISrun_lt.oni
TRAMKONSPRPISrun_rt.oni
TRAMKONSPRRIFrun_lt.oni
TRAMKONSPRRIFrun_rt.oni
 
 
'''New structure:'''
 
AE\AEInstaller\packages\51000Rifle_Sprinting\'''oni'''\common\level0_Final
TRAMKONSPRPISrun_lt.oni
TRAMKONSPRPISrun_rt.oni
TRAMKONSPRRIFrun_lt.oni
TRAMKONSPRRIFrun_rt.oni
 
 
AE\AEInstaller\packages\51000Rifle_Sprinting\'''patches'''\common\level0_Final
TRACkonokocore_animations.oni-patch
TRACninja_animations.oni-patch
TRACstrikercore_animations.oni-patch
 
 
The lines inside the TRAC file are now reduced to new animations instead of holding approximately 500 animations:
 
'''TRACkonokocore_animations.oni-patch'''
@XML_TOOLS Version "2.0"
@ADD_INSIDE_NODES ElementName "Animations"
<xml>
            <TRACAnimation>
                <Weight>100</Weight>
                <Animation>TRAMKONSPRPISrun_lt</Animation>
            </TRACAnimation>
            <TRACAnimation>
                <Weight>100</Weight>
                <Animation>TRAMKONSPRPISrun_rt</Animation>
            </TRACAnimation>
            <TRACAnimation>
                <Weight>100</Weight>
                <Animation>TRAMKONSPRRIFrun_lt</Animation>
            </TRACAnimation>
            <TRACAnimation>
                <Weight>100</Weight>
                <Animation>TRAMKONSPRRIFrun_rt</Animation>
            </TRACAnimation>
</xml>
 
 
 
'''Special note on TRAMs'''
 
In order to register the new anims in the "core" TRAC the parent TRAC file had to be delivered as well.
 
: TRACkonokolev1_animations -> TRACkonoko_animations.oni -> TRACkonokocore_animations (holds new run animations)
 
But since these 3 TRAC files are Vanilla game data (always present) and the '''XML patcher can directly modify the one interesting TRACkonokocore_animations'''.oni file we don't all 3 files anymore - just one patch.
 
 
'''The possibilities of XML patching'''
 
script10k's XmlTools is very powerful. It can not only '''add''' but also '''remove''' and '''modify''' nodes based on XPath expressions - and it can even run custom JS code.
 
Learn more '''[[XmlTools|HERE]]'''.
 
 
==Other candidates==
Actually all of them should be written down.
Actually all of them should be written down.


===TRAM sharing===




Line 18: Line 105:




===Patch mods===
[[Making_a_patch_mod|Patching XML files]] with code fragments or special instructions can combine features and avoid conflicts.


: ''I find the patch page not very helpful for the starters. It's very theoretical with a wall-of-text design but maybe that just my own opinion.'' -_- [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 14:59, 14 May 2020 (CEST)


[[Category:Modding tutorials]]
[[Category:Modding tutorials]]

Revision as of 15:32, 14 May 2020

Unfinished building-60px.jpg

This page is unfinished. Can you fill in any missing information?
If it is not clear which part of the page is unfinished, ask on the talk page.


Expert-level modding, huh?

That's when you not just design XML data that depend on each other but when you also have to consider special behavior of how some files types/data get packed or processed.


Patch mods

Patching XML files with code fragments or special instructions can combine features and avoid conflicts.


Example: Rifle Sprinting

There was a compatibility problem between and "51000 Rifle Sprinting" and "54000 New Combat Moves for Konoko".

Both packages modify TRAC files whereby 54000 with its higher value has priority so 51000 is broken when both are installed at the same time.

To avoid conflicts 51000 needs to be XML patch mod (*.oni-patch) - now the code from 51000 is injected into the files of 54000 (or any other package that comes with the same file (names)).

Note how Rifle Sprinting uses the oni folder for new content and the patches folder for code injections.


Old structure:

AE\AEInstaller\packages\51000Rifle_Sprinting\oni\common\level0_Final

TRACkonokolev1_animations.oni
TRACkonoko_animations.oni
TRACkonokocore_animations.oni
TRAMKONSPRPISrun_lt.oni
TRAMKONSPRPISrun_rt.oni
TRAMKONSPRRIFrun_lt.oni
TRAMKONSPRRIFrun_rt.oni


New structure:

AE\AEInstaller\packages\51000Rifle_Sprinting\oni\common\level0_Final

TRAMKONSPRPISrun_lt.oni
TRAMKONSPRPISrun_rt.oni
TRAMKONSPRRIFrun_lt.oni
TRAMKONSPRRIFrun_rt.oni


AE\AEInstaller\packages\51000Rifle_Sprinting\patches\common\level0_Final

TRACkonokocore_animations.oni-patch
TRACninja_animations.oni-patch
TRACstrikercore_animations.oni-patch


The lines inside the TRAC file are now reduced to new animations instead of holding approximately 500 animations:

TRACkonokocore_animations.oni-patch

@XML_TOOLS Version "2.0"

@ADD_INSIDE_NODES ElementName "Animations"
<xml>
           <TRACAnimation>
               <Weight>100</Weight>
               <Animation>TRAMKONSPRPISrun_lt</Animation>
           </TRACAnimation>
           <TRACAnimation>
               <Weight>100</Weight>
               <Animation>TRAMKONSPRPISrun_rt</Animation>
           </TRACAnimation>
           <TRACAnimation>
               <Weight>100</Weight>
               <Animation>TRAMKONSPRRIFrun_lt</Animation>
           </TRACAnimation>
           <TRACAnimation>
               <Weight>100</Weight>
               <Animation>TRAMKONSPRRIFrun_rt</Animation>
           </TRACAnimation>
</xml>


Special note on TRAMs

In order to register the new anims in the "core" TRAC the parent TRAC file had to be delivered as well.

TRACkonokolev1_animations -> TRACkonoko_animations.oni -> TRACkonokocore_animations (holds new run animations)

But since these 3 TRAC files are Vanilla game data (always present) and the XML patcher can directly modify the one interesting TRACkonokocore_animations.oni file we don't all 3 files anymore - just one patch.


The possibilities of XML patching

script10k's XmlTools is very powerful. It can not only add but also remove and modify nodes based on XPath expressions - and it can even run custom JS code.

Learn more HERE.


Other candidates

Actually all of them should be written down.


ONIE modifications

Alarm consoles

Reading material: