XML:BINA/OBJC/PATR: Difference between revisions

From OniGalore
< XML:BINA‎ | OBJC
m (Edition -> AE)
m (no need to mention AE here, is there?)
Line 4: Line 4:
===general information===
===general information===
* The xml code on this page is based on onisplit '''v0.9.61.0'''
* The xml code on this page is based on onisplit '''v0.9.61.0'''
* '''BINACJBOPatrol Path.oni''' is level specific. (It can be found in AE/GameDataFolder/level''XX''_... )
* '''BINACJBOPatrol Path.oni''' is level specific. (It can be found in GameDataFolder/level''XX''_Final.dat)
* A path can have at most 64 points.
* A path can have at most 64 points.
* if an update is needed extract '''[http://paradox.oni2.net/OniGalore/BINACJBOPatrol%20Path.oni this]''' file
* if an update is needed extract '''[http://paradox.oni2.net/OniGalore/BINACJBOPatrol%20Path.oni this]''' file

Revision as of 13:26, 18 April 2013

PATR : Patrol Path collection
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

AKEV << Other file types >> CONS

TMBD << Other BINA >> ONIE

PART << Other OBJC >> PWRU

switch to OBD page


general information

  • The xml code on this page is based on onisplit v0.9.61.0
  • BINACJBOPatrol Path.oni is level specific. (It can be found in GameDataFolder/levelXX_Final.dat)
  • A path can have at most 64 points.
  • if an update is needed extract this file


Corrupting BSL code in patrolscripts
I suspect that instantly played BSL code breaks patrol paths.
example:
patrolscript0001 contains a sleep command and patrolscript0002 will be played.
But if you remove the sleep command the patrol path will break.
(This was tested in level 1 SP1 with A_t48 and his patrol_48.) --paradox-01 (talk) 17:47, 10 November 2012 (CET)


XML code - patrolscript points:

<Points>
   <ScriptId ScriptId="1" />
   <ScriptId ScriptId="2" />
   <ScriptId ScriptId="3" />
</Points>

BSL code:

func patrolscript0001
{
	dmsg "1"
	chr_animate 0 KONOKOpowerup
	sleep 1
}
func patrolscript0002
{
	dmsg "2"
}
func patrolscript0003
{
	dmsg "3"
}


BSL support

  • ai2_showpaths = 1
  • ai2_dopath ai_name path_name


file structure

<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <Objects>
           [...]
   </Objects>
</Oni>

[...] means at least one patrol block. Paste all a patrol data into there (this includes <PATR Id="..."> and </PATR> tag).


example

       <PATR Id="8283">
           <Header>
               <Flags></Flags>
               <Position>-408.598755 60.1162872 -1402.20361</Position>
               <Rotation>0 0 0</Rotation>
           </Header>
           <OSD>
               <Name>patrol_32</Name>
               <PatrolId>32</PatrolId>
               <ReturnToNearest>1</ReturnToNearest>
               <Points>
                   <IgnorePlayer Value="Yes" />
                   <MovementMode Mode="Run" />
                   <MoveToFlag FlagId="545" />
                   <Loop>
                       <MoveToFlagLookAndWait Frames="120" FlagId="545" Rotation="5" />
                       <IgnorePlayer Value="No" />
                       <MoveThroughFlag FlagId="145" Distance="0" />
                       <MovementMode Mode="ByAlertLevel" />
                       <MoveToFlagLookAndWait Frames="300" FlagId="144" Rotation="60" />
                       <MoveThroughFlag FlagId="145" Distance="0" />
                       <MoveToFlagLookAndWait Frames="300" FlagId="146" Rotation="90" />
                   </Loop>
               </Points>
           </OSD>
       </PATR>


XML tag content type description
<PATR Id="..."> integer Id doesn't matter
<Flags> flag whatever this is good for ...
<Position> float x3 x y z position, useless here
<Rotation> float x3 x y z rotation, useless here
<Name> string for BSL command "ai2_dopath"
<PatrolId> integer used in BINA/OBJC/CHAR
<ReturnToNearest> flag
1 (Yes)
0 (No)
<Points> - Holds actual content. A path can have at most 64 points.
<MoveToFlag FlagId="..." /> integer
<Stop /> -
<Pause Frames="..." /> integer
<LookAtFlag FlagId="..." /> integer
<LookAtPoint X="..." Y="..." Z="..." /> float x3
<MoveAndFaceFlag FlagId="..." /> integer
<Loop>...</Loop> Patrol path tags can be enclosed by that loop tag.
<MovementMode Mode="..." /> flag
ByAlertLevel
Stop
Crouch
Creep
WalkNoAim
Walk
RunNoAim
Run
<MoveToPoint X="..." Y="..." Z="..." /> float x3 ?
<LockFacing Facing="..." /> flag
Forward
Backward
Left
Right
Stopped
<MoveThroughFlag FlagId="..." Distance="..." /> integer, float
<MoveThroughPoint X="..." Y="..." Z="..." Distance="..." /> float x4
<StopLooking /> -
<FreeFacing /> -
<GlanceAtFlagFor FlagId="..." Frames="..." /> integer x2
<MoveNearFlag FlagId="..." Distance="..." /> integer, float
<Scan Frames="..." Rotation="..." /> integer, float
<StopScanning /> -
<MoveToFlagLookAndWait Frames="..." FlagId="..." Rotation="..." /> integer x2, float
<CallScript ScriptId="..." /> integer Calls a BSL function by Id. For example if Id is 1 then BSL function is named "patrolscript0001"
<ForkScript ScriptId="..." /> integer Forks a BSL function by Id. For example if Id is 2 then BSL function is named "patrolscript0002"
<IgnorePlayer Value="..." /> flag
No
Yes
<FaceToFlagAndFire FlagId="..." Frames="..." Spread="..." /> integer x2, float