switchMove: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - " <!-- (DIS)?CONTINUE Notes -->" to "")
m (Text replacement - "</dl> <dl class="command_description"> " to "")
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{RV|type=command
{{RV|type=command


| ofp
|game1= ofp
|version1= 1.00


|1.00
|game2= ofpe
|version2= 1.00
 
|game3= arma1
|version3= 1.00
 
|game4= arma2
|version4= 1.00
 
|game5= arma2oa
|version5= 1.50
 
|game6= tkoh
|version6= 1.00
 
|game7= arma3
|version7= 0.50


|arg= local
|arg= local
Line 11: Line 28:
|gr1= Animations
|gr1= Animations


| Applies given animation to a unit. When used on a person, the given move is started immediately (there is no transition). Use {{ic|_unit [[switchMove]] "";}} to reset animation. For a smooth transition use [[playMove]].
|descr= Immediately applies given animation to the unit. For a smooth transition from the current animation, use [[playMove]].
{{Feature | Informative | see [[:Category:Moves]] for respective games animations.}}
{{Feature | Informative | see [[:Category:Moves]] for respective games animations.}}
This command first resets the unit's animation states (including aiming state, gesture state, etc.) then puts the unit in the first frame of the animation (therefore showing no transition).
If an invalid animation is provided, the unit's animations will be reset but no new animation will be played (see {{HashLink|#Example 3}}).


|mp= This command has global effect when executed locally to the unit and will sync for JIP. In this case the animation on the executing machine is immediate while on remote machines it will be transitional. In order for the animation to change immediately on every PC in multiplayer, use global remote execution (see [[#Examples|example 2]]). When the argument is remote, the animation change on the executing PC is only temporary.
|mp= This command has global effect when executed locally to the unit and will sync for JIP. In this case the animation on the executing machine is immediate while on remote machines it will be transitional. In order for the animation to change immediately on every PC in multiplayer, use global remote execution (see {{HashLink|#Example 2}}). When the argument is remote, the animation change on the executing PC is only temporary.


| person [[switchMove]] moveName
|s1= person [[switchMove]] moveName


|p1= person: [[Object]] - unit
|p1= person: [[Object]] - unit


|p2= moveName: [[String]] - unit animation (see [[animationState]])
|p2= moveName: [[String]] - animation state (see [[animationState]])
 
|r1= [[Nothing]]


| [[Nothing]]
 
|x1= Prone: <code>[[player]] [[switchMove]] "AmovPpneMstpSrasWrflDnon";</code>
|x1= Prone: <code>[[player]] [[switchMove]] "AmovPpneMstpSrasWrflDnon";</code>


|x2= Sit player immediately and globally: <code>[<nowiki/>[[player]], "AmovPsitMstpSlowWrflDnon"] [[remoteExec]] ["switchMove", 0];</code>
|x2= Sit player immediately and globally: <code>[<nowiki/>[[player]], "AmovPsitMstpSlowWrflDnon"] [[remoteExec]] ["switchMove", 0];</code>
|x3= Resets unit's animation: <code>_unit [[switchMove]] "";</code>


|seealso= [[playMove]], [[playMoveNow]], [[switchAction]], [[playAction]], [[playActionNow]]
|seealso= [[playMove]], [[playMoveNow]], [[switchAction]], [[playAction]], [[playActionNow]]
Line 32: Line 53:


<dl class="command_description">
<dl class="command_description">
<dt><dt>
<dt><dt>
<dd class="notedate">Posted on March 25, 2007 - 23:48</dd>
<dd class="notedate">Posted on March 25, 2007 - 23:48</dd>
Line 37: Line 59:
<dd class="note">
<dd class="note">
In some cases the movement won't stay. I.e. AI hostages that put their hands behind their heads (_hostage [[switchMove]] "AmovPercMstpSsurWnonDnon") won't hold their hands up, unless you first use [[disableAI]] "autoTarget" on them. They mostly put their hands down because they 'noticed' unknown objects.
In some cases the movement won't stay. I.e. AI hostages that put their hands behind their heads (_hostage [[switchMove]] "AmovPercMstpSsurWnonDnon") won't hold their hands up, unless you first use [[disableAI]] "autoTarget" on them. They mostly put their hands down because they 'noticed' unknown objects.
</dd>
<dt><dt>
<dt><dt>
<dd class="notedate">Posted on August 03, 2008 - 22:43</dd>
<dd class="notedate">Posted on August 03, 2008 - 22:43</dd>
Line 42: Line 66:
<dd class="note">
<dd class="note">
This command will not cause an [[ArmA:_Event_Handlers#AnimChanged|AnimChanged]] or [[ArmA:_Event_Handlers#AnimDone|AnimDone]] event. However, [[playMove]] will.
This command will not cause an [[ArmA:_Event_Handlers#AnimChanged|AnimChanged]] or [[ArmA:_Event_Handlers#AnimDone|AnimDone]] event. However, [[playMove]] will.
</dd>
<dt><dt>
<dt><dt>
<dd class="notedate">Posted on November 12, 2016 - 20:11 (UTC)</dd>
<dd class="notedate">Posted on November 12, 2016 - 20:11 (UTC)</dd>
Line 47: Line 73:
<dd class="note">
<dd class="note">
When using this command on the [[player]] unit outside [[Scheduler#Unscheduled_Environment|unscheduled]] UI contexts, it will cause a minor camera glitch for a single frame.<br>
When using this command on the [[player]] unit outside [[Scheduler#Unscheduled_Environment|unscheduled]] UI contexts, it will cause a minor camera glitch for a single frame.<br>
For example,  [[Arma_3:_Event_Handlers/addMissionEventHandler#Draw3D|Draw3D]] and [[displayAddEventHandler|KeyDown]] are UI contexts and so are not affected by the glitch, but [[Arma_3:_Event_Handlers/addMissionEventHandler#EachFrame|EachFrame]] and [[Scheduler#Scheduled_Environment|scheduled]] scripts are not UI contexts and are affected by the glitch.
For example,  [[Arma 3: Mission Event Handlers#Draw3D|Draw3D]] and [[displayAddEventHandler|KeyDown]] are UI contexts and so are not affected by the glitch, but [[Arma 3: Mission Event Handlers#EachFrame|EachFrame]] and [[Scheduler#Scheduled_Environment|scheduled]] scripts are not UI contexts and are affected by the glitch.
</dd>
 
<dt></dt>
<dd class="notedate">Posted on August 8, 2021 - 15:59 (UTC)</dd>
<dt class="note">[[User:Leopard20|Leopard20]]</dt>
<dd class="note">
If the animation you're trying to use with this command has no connection/interpolation to the unit's base animation (usually "AmovPercMstpSrasWrflDnon"), the move might not play using [[switchMove]] alone. In such cases you have to do this:
<code>_unit [[switchMove]] _move; _unit [[playMoveNow]] _move;</code>
This must run in the [[Scheduler|'''unscheduled environment''']] (see [[isNil]])
</dd>
</dd>
</dl>
</dl>
{{GameCategory|arma1|Scripting Commands}}
{{GameCategory|arma2|Scripting Commands}}
{{GameCategory|arma3|Scripting Commands}}
{{GameCategory|tkoh|Scripting Commands}}

Revision as of 14:31, 9 August 2021

Hover & click on the images for description

Description

Description:
Immediately applies given animation to the unit. For a smooth transition from the current animation, use playMove.
see Category:Moves for respective games animations.

This command first resets the unit's animation states (including aiming state, gesture state, etc.) then puts the unit in the first frame of the animation (therefore showing no transition).

If an invalid animation is provided, the unit's animations will be reset but no new animation will be played (see Example 3).
Multiplayer:
This command has global effect when executed locally to the unit and will sync for JIP. In this case the animation on the executing machine is immediate while on remote machines it will be transitional. In order for the animation to change immediately on every PC in multiplayer, use global remote execution (see Example 2). When the argument is remote, the animation change on the executing PC is only temporary.
Groups:
Animations

Syntax

Syntax:
person switchMove moveName
Parameters:
person: Object - unit
moveName: String - animation state (see animationState)
Return Value:
Nothing

Examples

Example 1:
Prone: player switchMove "AmovPpneMstpSrasWrflDnon";
Example 2:
Sit player immediately and globally: [player, "AmovPsitMstpSlowWrflDnon"] remoteExec ["switchMove", 0];
Example 3:
Resets unit's animation: _unit switchMove "";

Additional Information

See also:
playMoveplayMoveNowswitchActionplayActionplayActionNow

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Posted on March 25, 2007 - 23:48
Hurricane
In some cases the movement won't stay. I.e. AI hostages that put their hands behind their heads (_hostage switchMove "AmovPercMstpSsurWnonDnon") won't hold their hands up, unless you first use disableAI "autoTarget" on them. They mostly put their hands down because they 'noticed' unknown objects.
Posted on August 03, 2008 - 22:43
Killswitch
This command will not cause an AnimChanged or AnimDone event. However, playMove will.
Posted on November 12, 2016 - 20:11 (UTC)
AgentRev
When using this command on the player unit outside unscheduled UI contexts, it will cause a minor camera glitch for a single frame.
For example, Draw3D and KeyDown are UI contexts and so are not affected by the glitch, but EachFrame and scheduled scripts are not UI contexts and are affected by the glitch.
Posted on August 8, 2021 - 15:59 (UTC)
Leopard20
If the animation you're trying to use with this command has no connection/interpolation to the unit's base animation (usually "AmovPercMstpSrasWrflDnon"), the move might not play using switchMove alone. In such cases you have to do this: _unit switchMove _move; _unit playMoveNow _move; This must run in the unscheduled environment (see isNil)