XML:OPge: Difference between revisions

From OniGalore
(+ temp + cat)
m (link fix)
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{XML_File_Header | type=OPge | prev=ONWC | next=OSBD | name=Objective Page }}
{{XML_File_Header | prev=ONWC | type=OPge | next=PNTA | name=Objective Page}}


===general notes===
==General notes==
* The xml code on this page is compatible with onisplit '''v0.9.61.0'''
* The XML on this page is compatible with OniSplit '''v0.9.61.0'''.
* '''OPge*.oni''' are level specific. (They can be found in edition/GameDataFolder/level''XX''_...)
* '''OPge*.oni''' files are level-specific (they can be found in AE/AEInstaller/vanilla/level'''X'''_Final.dat).
* Objective pages can be called via BSL command "objective_set ''page_number''" or "objective_set ''page_number'' silent".
* Objective pages can be called via the BSL command "objective_set ''page_number''" or "objective_set ''page_number'' silent".


 
==XML structure==
===XML structure===
Think of "instances" (#N) as file sections; they go from 1 to N. 0 is the header (it defines the file type, here "OPge").
Think of "instances" (#N) as file sections, they go from 1 to N. 0 is the header (it defines the file type, here "OPge").


: Every OPge contains one instance of type IGPA.
: Every OPge contains one instance of type IGPA.
Line 15: Line 14:
: Every IGSA contains a number of instances of type IGSt.
: Every IGSA contains a number of instances of type IGSt.


: IGPA means a page array (think of it as a little book)
: IGPA means a page array (think of it as a little book).
: IGPG means a page
: IGPG means a page.
: IGSA means a (text) string array
: IGSA means a (text) string array.
: IGSt means a (text) string
: IGSt means a (text) string.
 
:Take care of the structure and the cake is yours.


:Be mindful of the structure and it's a piece of cake.


example on "OPgelevel_21.xml":
Example from "OPgelevel_21.xml":


: #0  (OPge instance) links to #1 (IGPA instance)
: #0  (OPge instance) links to #1 (IGPA instance)
Line 30: Line 28:
: #3  (IGSA instance) links from #4 up to #6 (IGSt instances)
: #3  (IGSA instance) links from #4 up to #6 (IGSt instances)
: #7  (IGSA instance) links to #8 (IGSt instance)
: #7  (IGSA instance) links to #8 (IGSt instance)


===XML tags and options===
===XML tags and options===
Line 49: Line 46:
::: '''Bold'''
::: '''Bold'''
::: ''Italic''
::: ''Italic''
:: <Color> ([[wikipedia:RGB_color_model#The_24-bit_RGB_representation|RGB]] range, e.g. <Color>255 0 77</Color>)
:: <Color> ([[wikipedia:RGB_color_model#Numeric_representations|RGB]] range, e.g. <Color>255 0 77</Color>)
:: <Size> (10 and 12 are usually used)
:: <Size> (10 and 12 are usually used)
: <Image> (links to a TXMP or PSpc file)
: <Image> (links to a TXMP or PSpc file)
Line 69: Line 66:
:: <Color>
:: <Color>
:: <Size>
:: <Size>
:: <Flags> (Every IGSt can use own properties. The <Flag> tag let you enable these. Add "Size" when you want to get a new font size, add "Color" when you want to get a new font color, etc..)
:: <Flags> (Every IGSt can have its own properties. The <Flag> tag let you enable these. Add "Size" when you want to get a new font size, add "Color" when you want to get a new font color, etc.)
::: <font style="color:#777">Family</font>
::: <font style="color:#777">Family</font>
::: Style
::: Style
::: Color
::: Color
::: Size
::: Size
:: <Text> (contains the actual text but can also create a bare paragraph (see example at instance #5))
:: <Text> (Contains the actual text, but can also create a bare paragraph (see example at instance #5))
 


===example===
===Example===
{| border=0 cellspacing=20 cellpadding=0 style="float:right"
[[Image:XML_OPge_modded.jpg|400px|right|thumb]]
| [http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/OPge.png http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/OPge_preview.png]
|}


  <?xml version="1.0" encoding="utf-8"?>
  <?xml version="1.0" encoding="utf-8"?>
Line 94: Line 88:
     </IGPA>
     </IGPA>


You can display a little image if you use the image tag in the IGPG instance. (Either non-animated TXMP or [[XML:PSpc|PSpc]].)
You can display a small image if you use the <Image> tag in the IGPG instance. (Either non-animated TXMP or [[XML:PSpc|PSpc]].)


<Text2> is used for the hint field -- see screenshot ("page 1B - hint text").
<Text2> is used for the hint field see screenshot ("page 1B - hint text").


     <IGPG id="2">
     <IGPG id="2">
Line 111: Line 105:
     </IGPG>
     </IGPG>


Instance #5 has a space between the text tags (<Text> </Text>) to produce a new paragraph. The import ignores that so far but you can fix it by writing "<Text xml:space="preserve"> </Text>".
Instance #5 has a space between the text tags (<Text> </Text>) to produce a new paragraph. OniSplit's import ignores that currently, but you can fix it by writing "<Text xml:space="preserve"> </Text>".


     <IGSA id="3">
     <IGSA id="3">

Latest revision as of 14:43, 31 March 2021

OPge : Objective Page
XML modding tips
See HERE to start learning about XML modding.
See HERE if you are searching for information on how to handle object coordinates.
See HERE for some typical modding errors and their causes.
XML.png
XML

ONWC << Other file types >> PNTA

switch to OBD page

General notes

  • The XML on this page is compatible with OniSplit v0.9.61.0.
  • OPge*.oni files are level-specific (they can be found in AE/AEInstaller/vanilla/levelX_Final.dat).
  • Objective pages can be called via the BSL command "objective_set page_number" or "objective_set page_number silent".

XML structure

Think of "instances" (#N) as file sections; they go from 1 to N. 0 is the header (it defines the file type, here "OPge").

Every OPge contains one instance of type IGPA.
Every IGPA contains a number of instances of type IGPG.
Every IGPG contains a number of instances of type IGSA.
Every IGSA contains a number of instances of type IGSt.
IGPA means a page array (think of it as a little book).
IGPG means a page.
IGSA means a (text) string array.
IGSt means a (text) string.
Be mindful of the structure and it's a piece of cake.

Example from "OPgelevel_21.xml":

#0 (OPge instance) links to #1 (IGPA instance)
#1 (IGPA instance) links to #2 (IGPG instance)
#2 (IGPG instance) links to #3 and #7 (IGSA instances)
#3 (IGSA instance) links from #4 up to #6 (IGSt instances)
#7 (IGSA instance) links to #8 (IGSt instance)

XML tags and options

OPge instance tags

<LevelNumber> (the page won't show up if this tag has the wrong number)
<Pages> (link to IGPA instance)

IGPA instance tags

<Pages> (every link represents a page, be aware of it for BSL command "objective_set")
<Link> (links to an IGPG instance)

IGPG instance tags

<Font> (defines the font in case it isn't defined in the IGSt instance; the style is bold by default)
<Family>
TSFFTahoma
<Style>
Normal
Bold
Italic
<Color> (RGB range, e.g. <Color>255 0 77</Color>)
<Size> (10 and 12 are usually used)
<Image> (links to a TXMP or PSpc file)
<Text1> (links to an IGSA instance)
<Text2> (links to an IGSA instance (hint field))

IGSA instance tags

<Strings>
<Link> (links to an IGSt instance)

IGSt instance tags

<Font>
<Family>
TSFFTahoma
<Style>
Normal
Bold
Italic
<Color>
<Size>
<Flags> (Every IGSt can have its own properties. The <Flag> tag let you enable these. Add "Size" when you want to get a new font size, add "Color" when you want to get a new font color, etc.)
Family
Style
Color
Size
<Text> (Contains the actual text, but can also create a bare paragraph (see example at instance #5))

Example

XML OPge modded.jpg
<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <OPge id="0">
       <LevelNumber>21</LevelNumber>
       <Pages>#1</Pages>
   </OPge>
   <IGPA id="1">
       <Pages>
           <Link>#2</Link>
       </Pages>
   </IGPA>

You can display a small image if you use the <Image> tag in the IGPG instance. (Either non-animated TXMP or PSpc.)

<Text2> is used for the hint field — see screenshot ("page 1B - hint text").

   <IGPG id="2">
       <Font>
           <Family></Family>
           <Style>Normal</Style>
           <Color>0 0 0 0</Color>
           <Size>0</Size>
           <Flags></Flags>
       </Font>
       <Image>TXMPmc_big_ware_room</Image>
       <Text1>#3</Text1>
       <Text2>#7</Text2>
   </IGPG>

Instance #5 has a space between the text tags (<Text> </Text>) to produce a new paragraph. OniSplit's import ignores that currently, but you can fix it by writing "<Text xml:space="preserve"> </Text>".

   <IGSA id="3">
       <Strings>
           <Link>#4</Link>
           <Link>#5</Link>
           <Link>#6</Link>
       </Strings>
   </IGSA>
   <IGSt id="4">
       <Font>
           <Family></Family>
           <Style>Normal</Style>
           <Color>191 0 0</Color>
           <Size>0</Size>
           <Flags>Color</Flags>
       </Font>
       <Text>page 1A - caption</Text>
   </IGSt>
   <IGSt id="5">
       <Font>
           <Family></Family>
           <Style>Normal</Style>
           <Color>0 0 0 0</Color>
           <Size>0</Size>
           <Flags></Flags>
       </Font>
       <Text xml:space="preserve"> </Text>
   </IGSt>
   <IGSt id="6">
       <Font>
           <Family></Family>
           <Style>Normal</Style>
           <Color>0 0 0 0</Color>
           <Size>0</Size>
           <Flags>Style</Flags>
       </Font>
       <Text>page 1A - text</Text>
   </IGSt>
   <IGSA id="7">
       <Strings>
           <Link>#8</Link>
       </Strings>
   </IGSA>
   <IGSt id="8">
       <Font>
           <Family></Family>
           <Style>Normal</Style>
           <Color>0 0 0 0</Color>
           <Size>0</Size>
           <Flags>Style</Flags>
       </Font>
       <Text>page 1B - hint text</Text>
   </IGSt>
</Oni>