DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
Headtorch_ColorBase.c
См. документацию.
1class Headtorch_ColorBase extends Clothing
2{
3 HeadtorchLight m_Light;
4
5 static int REFLECTOR_ID = 4;
6 static int GLASS_ID = 5;
7
8 static string LIGHT_OFF_GLASS = "dz\\characters\\headgear\\data\\HeadTorchGlass.rvmat";
9 static string LIGHT_OFF_REFLECTOR = "dz\\characters\\headgear\\data\\HeadTorch.rvmat";
10 static string LIGHT_ON_GLASS = "dz\\characters\\headgear\\data\\HeadTorchGlass_on.rvmat";
11 static string LIGHT_ON_GLASS_RED = "dz\\characters\\headgear\\data\\HeadTorchGlass_on_red.rvmat";
12 static string LIGHT_ON_REFLECTOR = "dz\\characters\\headgear\\data\\HeadTorch_ON.rvmat";
13 static string LIGHT_ON_REFLECTOR_RED = "dz\\characters\\headgear\\data\\HeadTorch_ON_red.rvmat";
14
15 static vector m_OnHeadLocalPos = Vector(0.12,0.15,0);
16 static vector m_OnHeadLocalOri = Vector(0,90,0);
17 static string m_OffHeadLightPoint = "beamStart";
18 static string m_OffHeadLightTarget = "beamEnd";
19
21
23 {
24 if (g_Game.IsServer())
25 {
26 if (!m_Timer)
28
29 m_Timer.Run(1 , this, "CheckParent", NULL, false);
30 }
31 }
32
33 override protected void InitGlobalExclusionValues()
34 {
35 super.InitGlobalExclusionValues();
36 AddSingleExclusionValueGlobal(EAttExclusions.EXCLUSION_HEADSTRAP_0);
37 }
38
40 {
41 EntityAI owner = GetHierarchyParent();
42
43 // Spawn a battery in the headtorch if it's attached on a zombie and switch it on
44 if (owner && owner.IsZombie())
45 {
46 GetInventory().CreateAttachment("Battery9V");
47 GetCompEM().SwitchOn();
48 }
49
50 if (m_Timer)
51 m_Timer.Stop();
52
53 m_Timer = null;
54 }
55
56 override void OnWorkStart()
57 {
58 super.OnWorkStart();
59
60 if (!g_Game.IsServer() || !g_Game.IsMultiplayer()) // Client side
61 {
63 }
64
65 if (IsInherited(Headtorch_Black))
66 {
67 SetObjectMaterial(GLASS_ID, LIGHT_ON_GLASS_RED);
68 SetObjectMaterial(REFLECTOR_ID, LIGHT_ON_REFLECTOR_RED);
69 }
70 else
71 {
72 SetObjectMaterial(GLASS_ID, LIGHT_ON_GLASS);
73 SetObjectMaterial(REFLECTOR_ID, LIGHT_ON_REFLECTOR);
74 }
75 }
76
77 override void OnWorkStop()
78 {
79 super.OnWorkStop();
80
81 if (!g_Game.IsServer() || !g_Game.IsMultiplayer()) // Client side
82 {
83 if (m_Light)
84 m_Light.FadeOut();
85
86 m_Light = NULL;
87 }
88
89 SetObjectMaterial(GLASS_ID, LIGHT_OFF_GLASS);
90 SetObjectMaterial(REFLECTOR_ID, LIGHT_OFF_REFLECTOR);
91 }
92
93 override void OnWork(float consumed_energy)
94 {
95 super.OnWork(consumed_energy);
96
97 if (!g_Game.IsServer() || !g_Game.IsMultiplayer()) // Client side
98 {
99 Battery9V battery = Battery9V.Cast(GetCompEM().GetEnergySource());
100
101 if (battery && m_Light)
102 {
103 float efficiency = battery.GetEfficiency0To1();
104
105 if (efficiency < 1)
106 {
107 m_Light.SetIntensity(efficiency, GetCompEM().GetUpdateInterval());
108 }
109 else
110 {
111 m_Light.SetIntensity(1, 0);
112 }
113 }
114 }
115 }
116
118 {
119 m_Light.SetColorToWhite();
120 }
121
123 {
124 if (!m_Light)
125 m_Light = HeadtorchLight.Cast(ScriptedLightBase.CreateLight( HeadtorchLight, "0 0 0"));
126
128
129 m_Light.PerformVisibilityCheck(this);
130
131 EntityAI owner = GetHierarchyParent();
132
133 if (owner)
134 {
135 if (owner.IsPlayer())
136 {
137 PlayerBase owner_PB = PlayerBase.Cast(owner);
138 ItemBase att_item = owner_PB.GetItemOnSlot("Eyewear");
139
140 if (att_item == this)
141 {
142 AttachLightOnHead(owner_PB);
143 }
144 else
145 {
146 m_Light.AttachOnMemoryPoint(this, m_OffHeadLightPoint, m_OffHeadLightTarget);
147 }
148 }
149 else if (owner.IsZombie())
150 {
151 int slot_id = InventorySlots.GetSlotIdFromString("Eyewear");
152 EntityAI item_EAI = owner.GetInventory().FindAttachment(slot_id);
153 ItemBase item_IB = ItemBase.Cast(item_EAI);
154
155 if (item_IB == this)
156 {
157 AttachLightOnHead(owner);
158 }
159 }
160 }
161 else
162 {
163 m_Light.AttachOnMemoryPoint(this, m_OffHeadLightPoint, m_OffHeadLightTarget);
164 }
165 }
166
168 {
169 int boneIdx;
170
171 if (person.IsPlayer())
172 {
173 PlayerBase player = PlayerBase.Cast(person);
174 boneIdx = player.GetBoneIndexByName("Head");
175
176 if (boneIdx != -1)
177 {
178 if (m_Light.GetParent())
179 m_Light.DetachFromParent();
180
181 m_Light.SetPosition(m_OnHeadLocalPos);
182 m_Light.SetOrientation(m_OnHeadLocalOri);
183
184 player.AddChild(m_Light, boneIdx);
185 }
186 }
187 else if (person.IsZombie())
188 {
189 ZombieBase zombie = ZombieBase.Cast(person); // infected, not zombies
190 boneIdx = zombie.GetBoneIndexByName("Head");
191
192 if (boneIdx != -1)
193 {
194 if (m_Light.GetParent())
195 m_Light.DetachFromParent();
196
197 m_Light.SetPosition(m_OnHeadLocalPos);
198 m_Light.SetOrientation(m_OnHeadLocalOri);
199
200 person.AddChild(m_Light, boneIdx);
201 }
202 }
203 }
204
205 override void OnWasAttached(EntityAI parent, int slot_id)
206 {
207 super.OnWasAttached(parent, slot_id);
208
209 PlayerBase player = PlayerBase.Cast(parent);
210
211 if (player)
212 {
213 if (m_Light)
214 {
215 AttachLightOnHead(player);
216 }
217 }
218 }
219
220 override void OnWasDetached(EntityAI parent, int slot_id)
221 {
222 super.OnWasDetached(parent, slot_id);
223
224 if (parent && (parent.IsPlayer() || parent.IsZombie()))
225 {
226 if (m_Light)
227 {
228 m_Light.DetachFromParent();
229 m_Light.AttachOnMemoryPoint(this, m_OffHeadLightPoint, m_OffHeadLightTarget);
230 }
231 }
232 }
233
242
243 override bool IsLightSource()
244 {
245 return true;
246 }
247
249 {
250 return this;
251 }
252
253 override void OnInvisibleSet(bool invisible)
254 {
255 if (m_Light)
256 {
257 m_Light.SetEnabled(!invisible);
258 }
259 }
260};
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
DayZGame g_Game
Определения DayZGame.c:4074
float GetEfficiency0To1()
Returns efficiency of this battery. The value is synchronized from server to all clients and is accur...
Определения Battery9V.c:15
Определения Battery9V.c:2
HeadtorchLight m_Light
Определения Headtorch_ColorBase.c:3
static string LIGHT_ON_GLASS
Определения Headtorch_ColorBase.c:10
static string m_OffHeadLightTarget
Определения Headtorch_ColorBase.c:18
static string LIGHT_OFF_REFLECTOR
Определения Headtorch_ColorBase.c:9
static int GLASS_ID
Определения Headtorch_ColorBase.c:6
void AttachLightOnHead(EntityAI person)
Определения Headtorch_ColorBase.c:167
void InitGlobalExclusionValues()
Определения Headtorch_ColorBase.c:33
void OnLightCreated()
Определения Headtorch_ColorBase.c:117
void CheckParent()
Определения Headtorch_ColorBase.c:39
static string LIGHT_ON_REFLECTOR_RED
Определения Headtorch_ColorBase.c:13
override void OnWork(float consumed_energy)
Определения Headtorch_ColorBase.c:93
override void OnWorkStart()
Определения Headtorch_ColorBase.c:56
override void OnInvisibleSet(bool invisible)
Определения Headtorch_ColorBase.c:253
static string LIGHT_ON_REFLECTOR
Определения Headtorch_ColorBase.c:12
void CreateHeadtorchLight()
Определения Headtorch_ColorBase.c:122
void Headtorch_ColorBase()
Определения Headtorch_ColorBase.c:22
override void OnWorkStop()
Определения Headtorch_ColorBase.c:77
override void OnWasAttached(EntityAI parent, int slot_id)
Определения Headtorch_ColorBase.c:205
override ItemBase GetLightSourceItem()
Определения Headtorch_ColorBase.c:248
static vector m_OnHeadLocalOri
Определения Headtorch_ColorBase.c:16
static string LIGHT_OFF_GLASS
Определения Headtorch_ColorBase.c:8
override bool IsLightSource()
Определения Headtorch_ColorBase.c:243
static string m_OffHeadLightPoint
Определения Headtorch_ColorBase.c:17
override void SetActions()
Определения Headtorch_ColorBase.c:234
static int REFLECTOR_ID
Определения Headtorch_ColorBase.c:5
static vector m_OnHeadLocalPos
Определения Headtorch_ColorBase.c:15
override void OnWasDetached(EntityAI parent, int slot_id)
Определения Headtorch_ColorBase.c:220
ref Timer m_Timer
Определения Headtorch_ColorBase.c:20
static string LIGHT_ON_GLASS_RED
Определения Headtorch_ColorBase.c:11
Определения Armband_ColorBase.c:2
Определения Headtorch_Black.c:2
static proto native int GetSlotIdFromString(string slot_name)
converts string to slot_id
provides access to slot configuration
Определения InventorySlots.c:6
Определения PlayerBaseClient.c:2
Определения DayZPlayerImplement.c:39
Определения ZombieFemaleBase.c:2
Определения EnConvert.c:119
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
const int CALL_CATEGORY_SYSTEM
Определения 3_Game/DayZ/tools/tools.c:8