XML:BINA/OBJC/PATR: Difference between revisions
Jump to navigation
Jump to search
Paradox-01 (talk | contribs) mNo edit summary |
m (copy-edit) |
||
(11 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
= | {{XML_OBJC_Header | prev=PART | type=PATR | next=PWRU | name=Patrol Path}} | ||
==General information== | |||
* The XML on this page is based on OniSplit '''v0.9.61.0'''. | |||
* "BINACJBOPatrol Path" is level-specific (level''x''_Final.dat). | |||
* A path can have at most 64 points. | |||
''' | ;Corrupting BSL code in patrol scripts | ||
:I ([[User:Paradox-01|Paradox]]) suspect that ''instantly'' played BSL code breaks patrol paths. Example: patrolscript0001 contains a sleep command and patrolscript0002 will be played. 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.) | |||
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== | |||
* <font color="#777777">ai2_showpaths = 1</font> | * <font color="#777777">ai2_showpaths = 1</font> | ||
* ai2_dopath ''ai_name path_name'' | * ai2_dopath ''ai_name path_name'' | ||
==File structure== | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||
<Oni | <Oni> | ||
< | <Objects> | ||
'''''[...]''''' | '''''[...]''''' | ||
</ | </Objects> | ||
</Oni> | </Oni> | ||
'''''[...]''''' means at least one patrol block. Paste all your patrol data in there (this includes the <PATR Id="..."> and </PATR> tag). | |||
''''' | '''Example''' | ||
<PATR Id="8283"> | |||
< | |||
<Header> | <Header> | ||
<Flags> | <Flags></Flags> | ||
<Position>-408.598755 60.1162872 -1402.20361</Position> | <Position>-408.598755 60.1162872 -1402.20361</Position> | ||
<Rotation>0 0 0</Rotation> | <Rotation>0 0 0</Rotation> | ||
Line 52: | Line 74: | ||
</Points> | </Points> | ||
</OSD> | </OSD> | ||
</ | </PATR> | ||
{| class="wikitable" width="100%" | |||
!width=400px| XML tag | |||
!width=100px| Content type | |||
! Description | |||
|- | |||
| <PATR Id="..."> | |||
| integer | |||
| ID doesn't matter | |||
|- | |||
| <Flags> | |||
| flag | |||
| Unknown | |||
|- | |||
| <Position> | |||
| float x3 | |||
| XYZ position, unused | |||
|- | |||
| <Rotation> | |||
| float x3 | |||
| XYZ rotation, unused | |||
|- | |||
| <Name> | |||
| string | |||
| Used by BSL command "ai2_dopath" | |||
|- | |||
| <PatrolId> | |||
| integer | |||
| Used in [[XML:BINA/OBJC/CHAR|BINA/OBJC/CHAR]] | |||
|- | |||
|valign=top| <ReturnToNearest> | |||
|valign=top| flag | |||
| | |||
: 1 (Yes) | |||
: 0 (No) | |||
|- | |||
| <Points> | |||
| - | |||
| Holds the actual path data (up to 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 this loop tag. | |||
|- | |||
|valign=top| <MovementMode Mode="..." /> | |||
|valign=top| flag | |||
| | |||
: ByAlertLevel | |||
: Stop | |||
: Crouch | |||
: Creep | |||
: WalkNoAim | |||
: Walk | |||
: RunNoAim | |||
: Run | |||
|- | |||
| <MoveToPoint X="..." Y="..." Z="..." /> | |||
| float x3 | |||
| | |||
|- | |||
|valign=top| <LockFacing Facing="..." /> | |||
|valign=top| flag | |||
| | |||
: Forward | |||
: Backward | |||
: Left | |||
: Right | |||
: Stopped | |||
|- | |||
| <MoveThroughFlag FlagId="..." Distance="..." /> | |||
| integer, float | |||
| | |||
|- | |||
|valign=top| <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 | |||
| | |||
|- | |||
|valign=top| <CallScript ScriptId="..." /> | |||
| integer | |||
|Calls a BSL function by ID. For example if the ID is 1 then the BSL function is named "patrolscript0001". | |||
|- | |||
|valign=top| <ForkScript ScriptId="..." /> | |||
| integer | |||
|Forks a BSL function by ID. For example if the ID is 2 then the BSL function is named "patrolscript0002". | |||
|- | |||
|valign=top| <IgnorePlayer Value="..." /> | |||
|valign=top| flag | |||
| | |||
: No | |||
: Yes | |||
|- | |||
| <FaceToFlagAndFire FlagId="..." Frames="..." Spread="..." /> | |||
| integer x2, float | |||
| | |||
|} | |||
{{XML}} | |||
Latest revision as of 01:21, 3 April 2021
PATR : Patrol Path | ||
---|---|---|
XML
AKEV << Other file types >> CONS TMBD << Other BINA >> ONIE PART << Other OBJC >> PWRU |
General information
- The XML on this page is based on OniSplit v0.9.61.0.
- "BINACJBOPatrol Path" is level-specific (levelx_Final.dat).
- A path can have at most 64 points.
- Corrupting BSL code in patrol scripts
- I (Paradox) suspect that instantly played BSL code breaks patrol paths. Example: patrolscript0001 contains a sleep command and patrolscript0002 will be played. 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.)
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 your patrol data in there (this includes the <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 | Unknown |
<Position> | float x3 | XYZ position, unused |
<Rotation> | float x3 | XYZ rotation, unused |
<Name> | string | Used by BSL command "ai2_dopath" |
<PatrolId> | integer | Used in BINA/OBJC/CHAR |
<ReturnToNearest> | flag |
|
<Points> | - | Holds the actual path data (up to 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 this loop tag. | |
<MovementMode Mode="..." /> | flag |
|
<MoveToPoint X="..." Y="..." Z="..." /> | float x3 | |
<LockFacing Facing="..." /> | flag |
|
<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 the ID is 1 then the BSL function is named "patrolscript0001". |
<ForkScript ScriptId="..." /> | integer | Forks a BSL function by ID. For example if the ID is 2 then the BSL function is named "patrolscript0002". |
<IgnorePlayer Value="..." /> | flag |
|
<FaceToFlagAndFire FlagId="..." Frames="..." Spread="..." /> | integer x2, float |