DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
UndergroundTrigger.c
См. документацию.
1
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 DIAG_DEVELOPER
58 trigger.m_Local = true;
59 #endif
60 trigger.SetPosition(vector.Zero);
61 AddChild(trigger,-1);
62 trigger.Init(data);
63
64 m_Trigger = trigger;
65 }
66 }
67 }
68
69}
70
71enum EUndergroundTriggerType
72{
76 INNER
77}
78
79class UndergroundTrigger : ManTrigger
80{
82
83 EUndergroundTriggerType m_Type;
86
88 {
89 m_Data = data;
90 //Print("Spawning trigger " + this + "at pos: " + GetPosition());
91 vector extMax = data.GetSize() * 0.5;
92 vector extMin = -extMax;
93 SetExtents(extMin, extMax);
96
97 if (data.Breadcrumbs && data.Breadcrumbs.Count() > 0) //TODO: simpler check
98 {
99 if (data.Breadcrumbs.Count() > 32)
100 {
101 ErrorEx("max 'Breadcrumb' count is 32, found: " + data.Breadcrumbs.Count());
102 }
103 m_Type = EUndergroundTriggerType.TRANSITIONING;
104 }
105 else
106 {
107 if (m_Accommodation == 1)
108 {
109 m_Type = EUndergroundTriggerType.OUTER;
110 }
111 else
112 {
113 m_Type = EUndergroundTriggerType.INNER;
114 }
115 }
116 }
117
118 override protected bool CanAddObjectAsInsider(Object object)
119 {
120 if (!super.CanAddObjectAsInsider(object))
121 {
122 return false;
123 }
124
125 return ManBase.Cast(object).IsControlledPlayer();
126 }
127
128
129 override void EOnInit(IEntity other, int extra)
130 {
131 //disable parent behaviour
132 }
133
134
135
136
137 #ifdef DEVELOPER
138 override protected void OnEnterServerEvent(TriggerInsider insider)
139 {
140 #ifndef SERVER//to make it work in single during development
141 OnEnterClientEvent(insider);
142 #endif
143 }
144 override protected void OnLeaveServerEvent(TriggerInsider insider)
145 {
146 #ifndef SERVER//to make it work in single during development
147 OnLeaveClientEvent(insider);
148 #endif
149 }
150 #endif
151
152 override protected void OnEnterClientEvent(TriggerInsider insider)
153 {
154 //Print("OnEnterClientEvent " + this);
155 //return;
156 PlayerBase player = PlayerBase.Cast(insider.GetObject());
157 if (player)
158 {
159 UndergroundHandlerClient handler = player.GetUndergroundHandler();
160 if (handler)
161 {
162 handler.OnTriggerEnter(this);
163 }
164 }
165 }
166
167 override protected void OnLeaveClientEvent(TriggerInsider insider)
168 {
169 //Print("OnLeaveClientEvent " + this);
170 //return;
171 PlayerBase player = PlayerBase.Cast(insider.GetObject());
172 if (player)
173 {
174 UndergroundHandlerClient handler = player.GetUndergroundHandler();
175 if (handler)
176 {
177 handler.OnTriggerLeave(this);
178 }
179 }
180 }
181
182};
eBleedingSourceType m_Type
Определения BleedingSource.c:25
void SetExtents(vector mins, vector maxs)
Определения AreaDamageManager.c:233
override void OnLeaveClientEvent(TriggerInsider insider)
Определения AreaDamageManager.c:183
override void OnLeaveServerEvent(TriggerInsider insider)
Определения AreaDamageManager.c:179
override void OnEnterServerEvent(TriggerInsider insider)
Определения AreaDamageManager.c:107
override void OnEnterClientEvent(TriggerInsider insider)
Определения AreaDamageManager.c:111
const int ECE_LOCAL
Определения CentralEconomy.c:24
class DayZProfilesOptions UNDEFINED
override Widget Init()
Определения DayZGame.c:127
override void EOnInit(IEntity other, int extra)
Определения TestFramework.c:235
bool CanAddObjectAsInsider(Object object)
Определения TrapTrigger.c:93
void UndergroundHandlerClient(PlayerBase player)
Определения UndergroundHandlerClient.c:36
@ TRANSITIONING
Определения UndergroundHandlerClient.c:5
@ OUTER
Определения UndergroundHandlerClient.c:4
float m_Accommodation
Определения UndergroundTrigger.c:84
float m_InterpolationSpeed
Определения UndergroundTrigger.c:85
string m_Data
Определения UniversalTemperatureSource.c:257
override ScriptCallQueue GetCallQueue(int call_category)
Определения DayZGame.c:1187
Определения EnEntity.c:165
ref array< ref JsonUndergroundAreaBreadcrumb > Breadcrumbs
Определения UndergroundAreaLoader.c:45
ref array< ref JsonUndergroundAreaTriggerData > Triggers
Определения UndergroundAreaLoader.c:3
Определения PlayerBase.c:2
Trigger only accepting Object which IsMan()
Определения ManTrigger.c:3
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
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 ...
Object GetObject()
Определения Trigger.c:28
The object which is in a trigger and its metadata.
Определения Trigger.c:3
static ref JsonUndergroundTriggers m_JsonData
Определения UndergroundAreaLoader.c:54
ref JsonUndergroundAreaTriggerData m_Data
Определения UndergroundTrigger.c:5
void RequestDelayedTriggerSpawn()
Определения UndergroundTrigger.c:36
void UndergroundTriggerCarrier()
Определения UndergroundTrigger.c:8
override void OnVariablesSynchronized()
Определения UndergroundTrigger.c:22
void ~UndergroundTriggerCarrier()
Определения UndergroundTrigger.c:13
UndergroundTrigger m_Trigger
Определения UndergroundTrigger.c:6
static const vector Zero
Определения EnConvert.c:110
Определения EnConvert.c:106
proto native CGame GetGame()
enum ShapeType ErrorEx
class JsonUndergroundAreaTriggerData GetPosition
Определения UndergroundAreaLoader.c:9
const int CALL_CATEGORY_SYSTEM
Определения tools.c:8
proto native void AddChild(Widget child, bool immedUpdate=true)