DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
ActionActivateTrap.c
Go to the documentation of this file.
2{
3 override void CreateActionComponent()
4 {
6 }
7
8 override void InitActionComponent()
9 {
10 super.InitActionComponent();
11
12 RegisterAnimationEvent("CraftingAction", UA_IN_CRAFTING);
13 }
14};
15
17{
19 {
21 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CRAFTING;
22 m_FullBody = true;
23 m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH;
24 m_Sound = "craft_universal_0";
26 m_Text = "#activate";
27 }
28
30 {
33 }
34
35 override typename GetInputType()
36 {
38 }
39
40 override bool HasProgress()
41 {
42 return true;
43 }
44
45 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
46 {
47 ItemBase tgt_item = ItemBase.Cast( target.GetObject() );
48 if ( tgt_item && tgt_item.IsBeingPlaced() )
49 return false;
50
51 Object targetObject = target.GetObject();
52 if ( targetObject != NULL )
53 {
54 if ( targetObject.IsInherited( TrapBase ) )
55 {
56 TrapBase trap = TrapBase.Cast( targetObject );
57
58 if ( trap.IsActivable() )
59 {
60 return true;
61 }
62 }
63 else if ( targetObject.IsInherited( TrapSpawnBase ) )
64 {
65 TrapSpawnBase spawnTrap = TrapSpawnBase.Cast( targetObject );
66
67 if ( spawnTrap && !spawnTrap.IsActive() )
68 return spawnTrap.IsPlaceableAtPosition( spawnTrap.GetPosition() );
69 }
70 }
71
72 return false;
73 }
74
75 override void OnStartAnimationLoop( ActionData action_data )
76 {
77 super.OnStartAnimationLoop( action_data );
78
79 if ( !GetGame().IsMultiplayer() || GetGame().IsServer() )
80 {
81 TrapBase trap = TrapBase.Cast( action_data.m_Target.GetObject() );
82 if ( trap )
83 {
84 Param1<bool> play = new Param1<bool>( true );
85 GetGame().RPCSingleParam( trap, SoundTypeTrap.ACTIVATING, play, true );
86 }
87 }
88 }
89
90 override void OnEnd( ActionData action_data )
91 {
92 if ( !GetGame().IsMultiplayer() || GetGame().IsServer() )
93 {
94 TrapBase trap = TrapBase.Cast( action_data.m_Target.GetObject());
95 if ( trap )
96 {
97 Param1<bool> play = new Param1<bool>( false );
98 GetGame().RPCSingleParam( trap, SoundTypeTrap.ACTIVATING, play, true );
99 }
100 }
101 }
102
103 override void OnEndAnimationLoop( ActionData action_data )
104 {
105 super.OnEndAnimationLoop( action_data );
106
107 if ( !GetGame().IsMultiplayer() || GetGame().IsServer() )
108 {
109 TrapBase trap = TrapBase.Cast( action_data.m_Target.GetObject());
110 Param1<bool> play = new Param1<bool>( false );
111 GetGame().RPCSingleParam( trap, SoundTypeTrap.ACTIVATING, play, true );
112 }
113 }
114
115 override void OnFinishProgressServer( ActionData action_data )
116 {
117 Object targetObject = action_data.m_Target.GetObject();
118 if ( targetObject != NULL )
119 {
120 if ( targetObject.IsInherited( TrapBase ) )
121 {
122 TrapBase trap = TrapBase.Cast( targetObject );
123
124 trap.StartActivate( action_data.m_Player );
125
126 return;
127 }
128 else if ( targetObject.IsInherited( TrapSpawnBase ) )
129 {
130 TrapSpawnBase spawnTrap = TrapSpawnBase.Cast( targetObject );
131 Trap_RabbitSnare snareTrap;
132 vector orientation = action_data.m_Player.GetOrientation();
133 vector position = action_data.m_Player.GetPosition();
134 position = position + ( action_data.m_Player.GetDirection() * 0.5 );
135
136 // We want to make sure the snare trap is standing upwards
137 if ( CastTo( snareTrap, spawnTrap ) )
138 {
139 orientation = action_data.m_Player.GetLocalProjectionOrientation();
140
141 vector rotation_matrix[3];
142 float direction[4];
144 InventoryLocation destination = new InventoryLocation;
145
146 Math3D.YawPitchRollMatrix( orientation, rotation_matrix );
147 Math3D.MatrixToQuat( rotation_matrix, direction );
148
149 if ( spawnTrap.GetInventory().GetCurrentInventoryLocation( source ) )
150 {
151 destination.SetGroundEx( spawnTrap, position, direction );
152
153 if ( GetGame().IsMultiplayer() )
154 {
155 action_data.m_Player.ServerTakeToDst(source, destination);
156 }
157 }
158 }
159
160 //Debug.Log("Trap pos : " + spawnTrap.GetPosition() );
161 //Debug.Log("Player pos : " + action_data.m_Player.GetPosition() );
162
163 spawnTrap.OnPlacementComplete( action_data.m_Player, position, orientation );
164
165 return;
166 }
167 }
168 }
169};
protected float m_SpecialtyWeight
Definition ActionBase.c:68
ref CCIBase m_ConditionItem
Definition ActionBase.c:55
ref CCTBase m_ConditionTarget
Definition ActionBase.c:56
protected string m_Text
Definition ActionBase.c:49
protected bool m_FullBody
Definition ActionBase.c:52
protected int m_StanceMask
Definition ActionBase.c:53
class ActionTargets ActionTarget
class DayZCreatureAnimInterface RegisterAnimationEvent(string event_name, string function_name)
EffectSound m_Sound
SoundTypeTrap
Definition TrapBase.c:2
override void InitActionComponent()
override void CreateActionComponent()
override void OnFinishProgressServer(ActionData action_data)
override void OnStartAnimationLoop(ActionData action_data)
override bool HasProgress()
override void CreateConditionComponents()
override void OnEndAnimationLoop(ActionData action_data)
override void OnEnd(ActionData action_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
protected ActionData m_ActionData
PlayerBase m_Player
Definition ActionBase.c:33
ref CABase m_ActionComponent
Definition ActionBase.c:30
ref ActionTarget m_Target
Definition ActionBase.c:32
void RPCSingleParam(Object target, int rpc_type, Param param, bool guaranteed, PlayerIdentity recipient=null)
see CGame.RPC
Definition Game.c:882
proto native bool IsMultiplayer()
InventoryLocation.
proto native void SetGroundEx(EntityAI e, vector pos, float dir[4])
sets current inventory location type to Ground with transformation mat
override void OnPlacementComplete(Man player, vector position="0 0 0", vector orientation="0 0 0")
override bool IsPlaceableAtPosition(vector position)
const float DEFAULT
const float DEFAULT_DEPLOY
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
proto native CGame GetGame()
static proto void MatrixToQuat(vector mat[3], out float d[4])
Converts rotation matrix to quaternion.
static proto void YawPitchRollMatrix(vector ang, out vector mat[3])
Creates rotation matrix from angles.
const int UA_IN_CRAFTING
Definition constants.c:437