XML:BINA/OBJC/TRGV: Difference between revisions

From OniGalore
< XML:BINA‎ | OBJC
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 7: Line 7:




'''XML structure'''
'''XML structure'''<br>for onisplit v0.9.59.0
  <?xml version="1.0" encoding="utf-8"?>
  <?xml version="1.0" encoding="utf-8"?>
  <Oni Version="0.9.28.0">
  <Oni>
     <ObjectCollection>
     <Objects>
         '''''[...]'''''
         '''''[...]'''''
     </ObjectCollection>
     </Objects>
</Oni>
</Oni>


'''''[...]''''' means at least one trigger volumen. Paste all tv data into there (this includes '''<font color="#0A0"><Object ...></font>''' and '''<font color="#0A0"></Object></font>''' tag).
'''''[...]''''' means at least one trigger volumen. Paste all tv data into there (this includes '''<font color="#0A0"><TRGV Id="..."></font>''' and '''<font color="#0A0"></TRGV></font>''' tag).


'''example'''
'''example'''
Line 28: Line 28:
* chr_location 0 ''x y z''</small>
* chr_location 0 ''x y z''</small>
|}
|}
         '''<font color="#0A0"><Object Id="8749" Type="TRGV"></font>'''
         '''<font color="#0A0"><TRGV Id="7383"></font>'''
             <Header>
             <Header>
                 <Flags>1</Flags>
                 <Flags>1</Flags>
Line 46: Line 46:
                 <ParentId>0</ParentId>
                 <ParentId>0</ParentId>
                 <Notes></Notes>
                 <Notes></Notes>
                 <Flags>128</Flags>
                 <Flags>PlayerOnly</Flags>
             </OSD>
             </OSD>
         '''<font color="#0A0"></Object></font>'''
         '''<font color="#0A0"></TRGV></font>'''


  start      + size = end
  start      + size = end
Line 81: Line 81:
* <Notes> : (space for 128 characters)
* <Notes> : (space for 128 characters)
* <Flags>
* <Flags>
:: 1 - "entry" function called only once (otherwise called every time character enters the TV)
:: OneTimeEnter - entry function called only once (otherwise called every time character enters the TV)
:: 2 - "inside" function called only once (otherwise called at every frame while character is in the TV)
:: OneTimeInside - inside function called only once (otherwise called at every frame while character is in the TV)
:: 4 - "exit" function called only once (otherwise called every time character leaves the TV)
:: OneTimeExit - exit function called only once (otherwise called every time character leaves the TV)
:: 8 - "entry" function disabled (can be enabled with "trigvolume_enable ''tv_name'' entry 1")
:: EnterDisabled - entry function disabled (can be enabled with "trigvolume_enable ''tv_name'' entry 1")
:: 16 - "inside" function disabled (can be enabled with "trigvolume_enable ''tv_name'' inside 1")
:: InsideDisabled - inside function disabled (can be enabled with "trigvolume_enable ''tv_name'' inside 1")
:: 32 - "exit" function disabled (can be enabled with "trigvolume_enable ''tv_name'' exit 1")
:: ExitDisabled - exit function disabled (can be enabled with "trigvolume_enable ''tv_name'' exit 1")
:: 64 - all 3 functions disabled (master switch, can be enabled with "trigvolume_enable ''tv_name'' all 1")
:: Disabled - all 3 functions disabled (master switch, can be enabled with "trigvolume_enable ''tv_name'' all 1")
:: 128 - only player characters can fire off the TV
:: PlayerOnly - only player characters can fire off the TV




'''Resetting the trigger volume'''
'''Resetting the trigger volume'''
:'''trigvolume_reset(string tv_name)''' resets the TV to its preset state. The primary use of this is to re-enable "entry", "inside" or "exit" calls once the TV has been triggered (only necessary if the respective trigger-only-once flags are set of course). Note that some or all the TV functions are disabled at level load, you'll have to enable them manually after resetting the TV.
:'''trigvolume_reset(string tv_name)''' resets the TV to its preset state. The primary use of this is to re-enable "entry", "inside" or "exit" calls once the TV has been triggered (only necessary if the respective trigger-only-once flags are set of course). Note that some or all the TV functions are disabled at level load, you'll have to enable them manually after resetting the TV.

Revision as of 13:40, 27 August 2011

BINA/OBJC/TRGV: trigger volumes (TV)

Template:XMLModdingHints

general information

  • BINACJBOTrigger Volume.oni is level specific. (It can be found in edition/GameDataFolder/levelXX_... )


XML structure
for onisplit v0.9.59.0

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

</Oni>

[...] means at least one trigger volumen. Paste all tv data into there (this includes <TRGV Id="..."> and </TRGV> tag).

example

trigger_volume_preview.jpg

used BSL commands in screen shot:

  • debug_triggers = 1
  • chr_nocollision 0 1
  • chr_debug_characters = 1
  • chr_location 0 x y z
       <TRGV Id="7383">
           <Header>
               <Flags>1</Flags>
               <Position>-651.5666 -298 -633.4166</Position>
               <Rotation>0 0 0</Rotation>
           </Header>
           <OSD>
               <Name>trigger_volume_46</Name>
               <Scripts>
                   <Entry>train_block2</Entry>
                   <Inside></Inside>
                   <Exit>block_path</Exit>
               </Scripts>
               <Teams>255</Teams>
               <Size>46 31 46</Size>
               <TriggerVolumeId>46</TriggerVolumeId>
               <ParentId>0</ParentId>
               <Notes></Notes>
               <Flags>PlayerOnly</Flags>
           </OSD>
       </TRGV>
start      + size = end
- 651.5666 + 46   = -605.5666 = x_blue_line_end
- 298      + 31   = -267      = y_blue_line_end
- 633.4166 + 46   = -587.4166 = z_blue_line_end

tags

  • <Flags> : (unknown)
  • <Position> : (a volume corner)
  • <Rotation> : (xyz-rataion in degrees)
  • <Name> : (can have up to 63 characters)
  • <Scripts> : (BSL functions; each can have up to 32 characters)
<Entry> : (called up when character enters the TV)
<Inside> : (called while character is inside the TV)
(This one is triggered at every frame (60 times per second) unless the trigger-only-once flag is set. Continuous triggering is typically needed for fire or gas damage.)
<Exit> : (called up when character leaves the TV)
  • <Teams>
1 - Konoko
2 - TCTF
4 - Syndicate
8 - Neutral
16 - SecurityGuard
32 - RogueKonoko
64 - Switzerland
128 - SyndicateAccessory
(every combination is possible)
255 - all teams (1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255)
  • <Size> : (volume)
  • <TriggerVolumeId> : (used by BSL command "trigvolume_corpse ID")
  • <ParentId> : ...
  • <Notes> : (space for 128 characters)
  • <Flags>
OneTimeEnter - entry function called only once (otherwise called every time character enters the TV)
OneTimeInside - inside function called only once (otherwise called at every frame while character is in the TV)
OneTimeExit - exit function called only once (otherwise called every time character leaves the TV)
EnterDisabled - entry function disabled (can be enabled with "trigvolume_enable tv_name entry 1")
InsideDisabled - inside function disabled (can be enabled with "trigvolume_enable tv_name inside 1")
ExitDisabled - exit function disabled (can be enabled with "trigvolume_enable tv_name exit 1")
Disabled - all 3 functions disabled (master switch, can be enabled with "trigvolume_enable tv_name all 1")
PlayerOnly - only player characters can fire off the TV


Resetting the trigger volume

trigvolume_reset(string tv_name) resets the TV to its preset state. The primary use of this is to re-enable "entry", "inside" or "exit" calls once the TV has been triggered (only necessary if the respective trigger-only-once flags are set of course). Note that some or all the TV functions are disabled at level load, you'll have to enable them manually after resetting the TV.