DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
TrapTrigger.c
См. документацию.
3{
4 bool m_Enabled = false;
6
7 #ifdef DEVELOPER
8 bool m_CanSendDbg = true;
9 #endif
10
12 {
13 int mask = GetEventMask();
14 mask &= ~EntityEvent.INIT;
15 SetEventMask(mask);
16 }
17
19 {
20 if (GetGame().IsServer())
21 {
22 m_ParentObj = obj;
23 }
24 }
25
26 override protected bool CanAddObjectAsInsider(Object object)
27 {
28 return m_Enabled && object.IsInherited(EntityAI) && m_ParentObj && m_ParentObj.IsActive() && m_ParentObj.GetTrapTrigger() == this;
29 }
30
31 override protected void OnEnterServerEvent(TriggerInsider insider)
32 {
33 #ifdef DEVELOPER
34 m_CanSendDbg = false;
35 #endif
36
37 if (m_ParentObj && m_ParentObj.IsActive())
38 {
39 m_ParentObj.SnapOnObject(EntityAI.Cast(insider.GetObject()));
40 }
41 }
42
43 override protected void OnLeaveServerEvent(TriggerInsider insider)
44 {
45 if (m_ParentObj && m_ParentObj.IsActive())
46 {
47 m_ParentObj.RemoveFromObject(EntityAI.Cast(insider.GetObject()));
48 }
49 }
50
53 {
54 m_Enabled = true;
55 }
56
57 #ifdef DEVELOPER
58 override void DebugSendDmgTrigger()
59 {
60 if ( m_CanSendDbg )
61 super.DebugSendDmgTrigger();
62 }
63
64 #endif
65}
66
67// Used for tripwire type traps, where we want to allow players to go through
68class TripWireTrigger : TrapTrigger
69{
70 override protected void OnEnterServerEvent( TriggerInsider insider )
71 {
72 PlayerBase playerInsider = PlayerBase.Cast(insider.GetObject());
73
74 if (playerInsider)
75 {
76 // If the player is jogging / sprinting while standing with or without hands raised, tripwire will trigger
77 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 );
78 bool isJogging = ( playerInsider.m_MovementState.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_RUN || playerInsider.m_MovementState.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_SPRINT );
79 if (isJogging && isErect)
80 {
81 super.OnEnterServerEvent(insider);
82 return;
83 }
84
85 // Special handling of crouch sprint
86 if ( playerInsider.m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_CROUCH && playerInsider.m_MovementState.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_SPRINT )
87 {
88 super.OnEnterServerEvent(insider);
89 return;
90 }
91 }
92 else
93 {
94 super.OnEnterServerEvent(insider);
95 }
96 }
97}
Определения Building.c:6
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
Определения Trap_Bear.c:2
TrapBase m_ParentObj
Определения TrapTrigger.c:5
void OnEnterServerEvent(TriggerInsider insider)
Определения TrapTrigger.c:31
bool m_Enabled
Определения TrapTrigger.c:4
void TrapTrigger()
Определения TrapTrigger.c:11
void SetEnabled()
prevents insider adding in the wrong position, HOTFIX
Определения TrapTrigger.c:52
void SetParentObject(TrapBase obj)
Определения TrapTrigger.c:18
bool CanAddObjectAsInsider(Object object)
Определения TrapTrigger.c:26
void OnLeaveServerEvent(TriggerInsider insider)
Определения TrapTrigger.c:43
Trigger used by traps.
Определения TrapTrigger.c:3
void Trigger()
ctor
Определения Trigger.c:53
Object GetObject()
Определения Trigger.c:28
The object which is in a trigger and its metadata.
Определения Trigger.c:3
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native CGame GetGame()
EntityEvent
Entity events for event-mask, or throwing event from code.
Определения EnEntity.c:45