DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
UndergroundTrigger.c
Go to the documentation of this file.
1
3class UndergroundTriggerCarrier extends UndergroundTriggerCarrierBase
4{
6 UndergroundTrigger m_Trigger;
7
9 {
10 RegisterNetSyncVariableInt("m_TriggerIndex", -1, 255);
11 }
12
14 {
15 if (m_Trigger && !m_Trigger.IsSetForDeletion() && GetGame())
16 {
17 //RemoveChild(m_Trigger);
18 m_Trigger.Delete();
19 }
20 }
21
23 {
24 super.OnVariablesSynchronized();
25 if (!m_Trigger)
26 {
28 }
29 }
30
32 {
33 return UndergroundAreaLoader.m_JsonData && m_TriggerIndex != -1;
34 }
35
37 {
38 //Print("RequestDelayedTriggerSpawn() " + this);
40 }
41
43 {
44
45 if (!CanSpawnTrigger())
46 {
48 return;
49 }
50
52 {
54 UndergroundTrigger trigger = UndergroundTrigger.Cast(GetGame().CreateObjectEx( "UndergroundTrigger", GetPosition(), ECE_LOCAL ));
55 if (trigger)
56 {
57 #ifdef DEVELOPER
58 trigger.m_Local = true;
59 #endif
60 trigger.SetPosition(vector.Zero);
61 if (GetOrientation() != vector.Zero)
62 trigger.SetOrientation(GetOrientation());
63 AddChild(trigger,-1);
64 trigger.Init(data);
65
66 m_Trigger = trigger;
67 }
68 }
69 }
70
71}
72
73enum EUndergroundTriggerType
74{
78 INNER
79}
80
81class UndergroundTrigger : ManTrigger
82{
84
85 EUndergroundTriggerType m_Type;
88
90 {
91 m_Data = data;
92 //Print("Spawning trigger " + this + "at pos: " + GetPosition());
93 vector extMax = data.GetSize() * 0.5;
94 vector extMin = -extMax;
95 SetExtents(extMin, extMax);
98
99 if (data.Breadcrumbs && data.Breadcrumbs.Count() > 0) //TODO: simpler check
100 {
101 if (data.Breadcrumbs.Count() > 32)
102 {
103 ErrorEx("max 'Breadcrumb' count is 32, found: " + data.Breadcrumbs.Count());
104 }
105 m_Type = EUndergroundTriggerType.TRANSITIONING;
106 }
107 else
108 {
109 if (m_Accommodation == 1)
110 {
111 m_Type = EUndergroundTriggerType.OUTER;
112 }
113 else
114 {
115 m_Type = EUndergroundTriggerType.INNER;
116 }
117 }
118 }
119
120 override protected bool CanAddObjectAsInsider(Object object)
121 {
122 if (!super.CanAddObjectAsInsider(object))
123 {
124 return false;
125 }
126
127 PlayerBase player = PlayerBase.Cast(object);
128 return player.IsControlledPlayer();
129 }
130
131
132 override void EOnInit(IEntity other, int extra)
133 {
134 //disable parent behaviour
135 }
136 override protected void OnEnterClientEvent(TriggerInsider insider)
137 {
138 //Print("OnEnterClientEvent " + this);
139 //return;
140 PlayerBase player = PlayerBase.Cast(insider.GetObject());
141 if (player)
142 {
143 UndergroundHandlerClient handler = player.GetUndergroundHandler();
144 if (handler)
145 {
146 handler.OnTriggerEnter(this);
147 }
148 }
149 }
150
151 override protected void OnLeaveClientEvent(TriggerInsider insider)
152 {
153 //Print("OnLeaveClientEvent " + this);
154 //return;
155 PlayerBase player = PlayerBase.Cast(insider.GetObject());
156 if (player)
157 {
158 UndergroundHandlerClient handler = player.GetUndergroundHandler();
159 if (handler)
160 {
161 handler.OnTriggerLeave(this);
162 }
163 }
164 }
165 #ifdef DEVELOPER
166 override protected void OnEnterServerEvent(TriggerInsider insider)
167 {
168 #ifndef SERVER//to make it work in single during development
169 OnEnterClientEvent(insider);
170 #endif
171 }
172 override protected void OnLeaveServerEvent(TriggerInsider insider)
173 {
174 #ifndef SERVER//to make it work in single during development
175 OnLeaveClientEvent(insider);
176 #endif
177 }
178 #endif
179};
eBleedingSourceType m_Type
vector GetOrientation()
const int ECE_LOCAL
override Widget Init()
Definition DayZGame.c:122
class JsonUndergroundAreaTriggerData GetPosition
void UndergroundHandlerClient(PlayerBase player)
class UndergroundTriggerCarrier extends UndergroundTriggerCarrierBase UNDEFINED
class UndergroundTriggerCarrier extends UndergroundTriggerCarrierBase OUTER
float m_Accommodation
class UndergroundTriggerCarrier extends UndergroundTriggerCarrierBase TRANSITIONING
float m_InterpolationSpeed
override ScriptCallQueue GetCallQueue(int call_category)
Definition DayZGame.c:1153
ref array< ref JsonUndergroundAreaBreadcrumb > Breadcrumbs
ref array< ref JsonUndergroundAreaTriggerData > Triggers
Trigger only accepting Object which IsMan()
Definition ManTrigger.c:3
override void EOnInit(IEntity other, int extra)
Definition ManTrigger.c:4
override protected bool CanAddObjectAsInsider(Object object)
Definition ManTrigger.c:9
proto void CallLater(func fn, int delay=0, bool repeat=false, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
adds call into the queue with given parameters and arguments (arguments are held in memory until the ...
protected void OnEnterClientEvent(TriggerInsider insider)
protected void OnLeaveClientEvent(TriggerInsider insider)
protected void OnEnterServerEvent(TriggerInsider insider)
protected void OnLeaveServerEvent(TriggerInsider insider)
void SetExtents(vector mins, vector maxs)
Set the size of the Trigger, avoid using SetCollisionBox directly.
Definition Trigger.c:116
The object which is in a trigger and its metadata.
Definition Trigger.c:3
Object GetObject()
Definition Trigger.c:28
static ref JsonUndergroundTriggers m_JsonData
ref JsonUndergroundAreaTriggerData m_Data
static const vector Zero
Definition EnConvert.c:110
proto native CGame GetGame()
enum ShapeType ErrorEx
const int CALL_CATEGORY_SYSTEM
Definition tools.c:8
proto native void AddChild(Widget child, bool immedUpdate=true)