DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
TrapTrigger.c
Go to the documentation of this file.
3{
5
6 #ifdef DEVELOPER
7 bool m_CanSendDbg = true;
8 #endif
9
11 {
12 if (GetGame().IsServer())
13 {
14 m_ParentObj = obj;
15 }
16 }
17
18 override protected bool CanAddObjectAsInsider(Object object)
19 {
20 return object.IsInherited(EntityAI) && m_ParentObj && m_ParentObj.IsActive();
21 }
22
23 override protected void OnEnterServerEvent(TriggerInsider insider)
24 {
25 #ifdef DEVELOPER
26 m_CanSendDbg = false;
27 #endif
28
29 if (m_ParentObj && m_ParentObj.IsActive())
30 {
31 m_ParentObj.SnapOnObject(EntityAI.Cast(insider.GetObject()));
32 }
33 }
34
35 override protected void OnLeaveServerEvent(TriggerInsider insider)
36 {
37 if (m_ParentObj && m_ParentObj.IsActive())
38 {
39 m_ParentObj.RemoveFromObject(EntityAI.Cast(insider.GetObject()));
40 }
41 }
42
43 #ifdef DEVELOPER
44
45 override void DebugSendDmgTrigger()
46 {
47 if ( m_CanSendDbg )
48 super.DebugSendDmgTrigger();
49 }
50
51 #endif
52}
53
54// Used for tripwire type traps, where we want to allow players to go through
55class TripWireTrigger : TrapTrigger
56{
57 override protected void OnEnterServerEvent( TriggerInsider insider )
58 {
59 PlayerBase playerInsider = PlayerBase.Cast(insider.GetObject());
60
61 if (playerInsider)
62 {
63 // If the player is jogging / sprinting while standing with or without hands raised, tripwire will trigger
64 bool isErect = ( playerInsider.m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_ERECT || playerInsider.m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDERECT || playerInsider.m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDCROUCH );
65 bool isJogging = ( playerInsider.m_MovementState.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_RUN || playerInsider.m_MovementState.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_SPRINT );
66 if (isJogging && isErect)
67 {
68 super.OnEnterServerEvent(insider);
69 return;
70 }
71
72 // Special handling of crouch sprint
73 if ( playerInsider.m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_CROUCH && playerInsider.m_MovementState.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_SPRINT )
74 {
75 super.OnEnterServerEvent(insider);
76 return;
77 }
78 }
79 else
80 {
81 super.OnEnterServerEvent(insider);
82 }
83 }
84}
Trigger used by traps.
Definition TrapTrigger.c:3
TrapBase m_ParentObj
Definition TrapTrigger.c:4
override protected void OnEnterServerEvent(TriggerInsider insider)
Definition TrapTrigger.c:23
void SetParentObject(TrapBase obj)
Definition TrapTrigger.c:10
override protected void OnLeaveServerEvent(TriggerInsider insider)
Definition TrapTrigger.c:35
override protected bool CanAddObjectAsInsider(Object object)
Definition TrapTrigger.c:18
Scripted Trigger.
Definition Hologram.c:1538
The object which is in a trigger and its metadata.
Definition Trigger.c:3
Object GetObject()
Definition Trigger.c:28
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
proto native CGame GetGame()