XML:OPge: Difference between revisions

From OniGalore
Jump to navigation Jump to search
m (no need to mention AE here, is there?)
m (link fix)
 
(4 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 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>