BIS fnc animateFlag: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "<dl class="command_description"> <dt></dt>" to "<dl class="command_description"> <dt></dt>")
m (Some wiki formatting)
 
(13 intermediate revisions by the same user not shown)
Line 2: Line 2:


|game1= arma3
|game1= arma3
|version1= 1.68
|version1= 1.68


Line 11: Line 10:
|eff= global
|eff= global


|descr= Smoothly animates given flag from current position on the flag pole to the given position. When flag animation is done, the scripted event handler "FlagAnimationDone" is called.
|descr= Smoothly animates given flag from current position on the flag pole to the given position. When flag animation is done, the {{Link|Arma 3: Scripted Event Handlers|scripted event handler}} {{Link|Arma 3: Scripted Event Handlers#BIS_fnc_animateFlag|"FlagAnimationDone"}} is called.


{{Feature | important | '''Never''' place this function into an object's init field.}}
|mp= The effect is global, MP compatible and its effect is persistent.
 
|mp= The effect is global, MP compatible and its effect is persistent. |MP info=


|s1= [flag, phase, instant] call [[BIS_fnc_animateFlag]]
|s1= [flag, phase, instant] call [[BIS_fnc_animateFlag]]
Line 21: Line 18:
|p1= flag: [[Object]] - [[flag]] object of the type "FlagCarrier"
|p1= flag: [[Object]] - [[flag]] object of the type "FlagCarrier"


|p2= phase: [[Number]] - desired animation phase 0...1 (0 - bottom of the flag pole, 1 - top of the flag pole)
|p2= phase: [[Number]] - desired animation phase 0..1 (0 - bottom of the flag pole, 1 - top of the flag pole)


|p3= instant (Optional, default [[false]]):  
|p3= instant (Optional, default [[false]]):  
Line 29: Line 26:
|r1= [[Nothing]]
|r1= [[Nothing]]


|x1= <code>[flag1, 0] [[call]] [[BIS_fnc_animateFlag]];</code>
|x1= <sqf>[flag1, 0] call BIS_fnc_animateFlag;</sqf>


|x2= <code>{{cc|Adding the "FlagAnimationDone" EH}}
|x2= <sqf>
[[private]] _eh = [<yourflag>, "FlagAnimationDone", { {{codecomment|/* your code */}} }] [[call]] [[BIS_fnc_addScriptedEventHandler]];</code>
// Adding the "FlagAnimationDone" EH
private _eh = [<yourflag>, "FlagAnimationDone", { /* your code */ }] call BIS_fnc_addScriptedEventHandler;
</sqf>


|seealso= [[flag]], [[flagOwner]], [[setFlagOwner]], [[setFlagSide]], [[setFlagTexture]], [[flagSide]], [[flagTexture]], [[setFlagAnimationPhase]], [[flagAnimationPhase]], [[Arma 3: Flag Textures]]
|seealso= [[flag]] [[flagOwner]] [[setFlagOwner]] [[setFlagSide]] [[setFlagTexture]] [[flagSide]] [[flagTexture]] [[setFlagAnimationPhase]] [[flagAnimationPhase]] [[Arma 3: Flag Textures]]
}}
}}


<dl class="command_description">
{{Note
 
|user= Killzone_Kid
<dt></dt>
|timestamp= 20161212200200
<dd class="notedate">Posted on December 12, 2016 - 20:02 (UTC)</dd>
|text= Flag Demo (https://www.youtube.com/watch?v=sJtQfRML0cc)
<dt class="note">[[User:Killzone Kid|Killzone Kid]]</dt>
<sqf>
<dd class="note"><code>{{cc|Flag Demo (https://www.youtube.com/watch?v{{=}}sJtQfRML0cc)}}
 
fnc_addFlagAction =
fnc_addFlagAction =
{
{
_this [[addAction]]
_this addAction
[
[
"Pull The Cord",
"Pull The Cord",
{
{
[[player]] [[playAction]] "PutDown";
player playAction "PutDown";
[[sleep]] 0.5;
sleep 0.5;
[_this [[select]] 0, [[flagAnimationPhase]] (_this [[select]] 0) + 0.2, 0.2] [[call]] [[BIS_fnc_animateFlag]];
[_this select 0, flagAnimationPhase (_this select 0) + 0.2, 0.2] call BIS_fnc_animateFlag;
_this [[select]] 0 [[removeAction]] (_this [[select]] 2);
_this select 0 removeAction (_this select 2);
},
},
"",
"",
10,
10,
[[true]],
true,
[[true]],
true,
"",
"",
"_this [[distance2D]] _target < 2"
"_this distance2D _target < 2"
];
];
};
};


[[private]] _flag = [[createVehicle]] ["Flag_BI_F", [[player]] [[getRelPos]] [10, 0], [], 0, "CAN_COLLIDE"];
private _flag = createVehicle ["Flag_BI_F", player getRelPos [10, 0], [], 0, "CAN_COLLIDE"];
[_flag, 0, [[true]]] [[call]] [[BIS_fnc_animateFlag]];
[_flag, 0, true] call BIS_fnc_animateFlag;
_flag [[call]] fnc_addFlagAction;
_flag call fnc_addFlagAction;


[
[
Line 72: Line 69:
"FlagAnimationDone",
"FlagAnimationDone",
{
{
[[if]] (_this [[select]] 1 > 0.9) [[exitWith]]
if (_this select 1 > 0.9) exitWith
{
{
[_this [[select]] 0, "FlagAnimationDone"] [[call]] [[BIS_fnc_removeAllScriptedEventHandlers]];
[_this select 0, "FlagAnimationDone"] call BIS_fnc_removeAllScriptedEventHandlers;
[[removeAllActions]] (_this [[select]] 0);
removeAllActions (_this select 0);
};
};
_this [[select]] 0 [[call]] fnc_addFlagAction;
_this select 0 call fnc_addFlagAction;
}
}
]
]
[[call]] [[BIS_fnc_addScriptedEventHandler]];
call BIS_fnc_addScriptedEventHandler;
</code>
</sqf>
 
}}
</dd>
</dl>

Latest revision as of 22:39, 30 May 2024

Hover & click on the images for description

Description

Description:
Smoothly animates given flag from current position on the flag pole to the given position. When flag animation is done, the scripted event handler "FlagAnimationDone" is called.
Execution:
call
Multiplayer:
The effect is global, MP compatible and its effect is persistent.
Groups:
Object Manipulation

Syntax

Syntax:
[flag, phase, instant] call BIS_fnc_animateFlag
Parameters:
flag: Object - flag object of the type "FlagCarrier"
phase: Number - desired animation phase 0..1 (0 - bottom of the flag pole, 1 - top of the flag pole)
instant (Optional, default false):
  • Boolean - when true, animation is instant ("FlagAnimationDone" EH is not called in this case)
  • Number - animation duration multiplier
Return Value:
Nothing

Examples

Example 1:
[flag1, 0] call BIS_fnc_animateFlag;
Example 2:
// Adding the "FlagAnimationDone" EH private _eh = [<yourflag>, "FlagAnimationDone", { /* your code */ }] call BIS_fnc_addScriptedEventHandler;

Additional Information

See also:
flag flagOwner setFlagOwner setFlagSide setFlagTexture flagSide flagTexture setFlagAnimationPhase flagAnimationPhase Arma 3: Flag Textures

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
Killzone_Kid - c
Posted on Dec 12, 2016 - 20:02 (UTC)
Flag Demo (https://www.youtube.com/watch?v=sJtQfRML0cc)
fnc_addFlagAction = { _this addAction [ "Pull The Cord", { player playAction "PutDown"; sleep 0.5; [_this select 0, flagAnimationPhase (_this select 0) + 0.2, 0.2] call BIS_fnc_animateFlag; _this select 0 removeAction (_this select 2); }, "", 10, true, true, "", "_this distance2D _target < 2" ]; }; private _flag = createVehicle ["Flag_BI_F", player getRelPos [10, 0], [], 0, "CAN_COLLIDE"]; [_flag, 0, true] call BIS_fnc_animateFlag; _flag call fnc_addFlagAction; [ _flag, "FlagAnimationDone", { if (_this select 1 > 0.9) exitWith { [_this select 0, "FlagAnimationDone"] call BIS_fnc_removeAllScriptedEventHandlers; removeAllActions (_this select 0); }; _this select 0 call fnc_addFlagAction; } ] call BIS_fnc_addScriptedEventHandler;