DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
TLRLight.c
См. документацию.
1class TLRLight extends Switchable_Base
2{
3 PistollightLight m_Light;
4
5 static int REFLECTOR_ID = 1;
6 static int GLASS_ID = 0;
7
8 static string LIGHT_OFF_GLASS = "dz\\gear\\tools\\data\\flashlight_glass.rvmat";
9 static string LIGHT_OFF_REFLECTOR = "dz\\weapons\\attachments\\data\\TLS3.rvmat";
10 static string LIGHT_ON_GLASS = "dz\\gear\\tools\\data\\flashlight_glass_on.rvmat";
11 static string LIGHT_ON_REFLECTOR = "dz\\weapons\\attachments\\data\\TLS3_on.rvmat";
12
14 {
15 return m_Light;
16 }
17
18 override bool CanPutAsAttachment( EntityAI parent )
19 {
20 if(!super.CanPutAsAttachment(parent)) {return false;}
21 if ( !parent.IsKindOf("PlateCarrierHolster") && !parent.IsKindOf("PlateCarrierComplete") && !parent.IsKindOf("CarrierHolsterSolo") && !parent.IsKindOf("ChestHolster") )
22 {
23 return true;
24 }
25
26 return false;
27 }
28
29 override void OnWorkStart()
30 {
31 if ( !GetGame().IsServer() || !GetGame().IsMultiplayer() ) // Client side
32 {
33 m_Light = PistollightLight.Cast( ScriptedLightBase.CreateLight(PistollightLight, "0 0 0", 0.08) ); // Position is zero because light is attached on parent immediately.
34 m_Light.AttachOnMemoryPoint(this, "beamStart", "beamEnd");
35 SetObjectMaterial(GLASS_ID, LIGHT_ON_GLASS);
36 SetObjectMaterial(REFLECTOR_ID, LIGHT_ON_REFLECTOR);
37 }
38 }
39
40 override void OnWork( float consumed_energy )
41 {
42 if ( !GetGame().IsServer() || !GetGame().IsMultiplayer() ) // Client side
43 {
44 Battery9V battery = Battery9V.Cast( GetCompEM().GetEnergySource() );
45
46 if (battery && m_Light)
47 {
48 float efficiency = battery.GetEfficiency0To1();
49
50 if ( efficiency < 1 )
51 {
52 m_Light.SetIntensity( efficiency, GetCompEM().GetUpdateInterval() );
53 }
54 else
55 {
56 m_Light.SetIntensity( 1, 0 );
57 }
58 }
59 }
60 }
61
62 override void OnWorkStop()
63 {
64 if ( !GetGame().IsServer() || !GetGame().IsMultiplayer() ) // Client side
65 {
66 if (m_Light)
67 m_Light.FadeOut();
68
69 m_Light = NULL;
70
71 SetObjectMaterial(GLASS_ID, LIGHT_OFF_GLASS);
72 SetObjectMaterial(REFLECTOR_ID, LIGHT_OFF_REFLECTOR);
73 }
74 }
75
76 // Inventory manipulation
77 override void OnInventoryExit(Man player)
78 {
79 super.OnInventoryExit(player);
80
81 if ( GetCompEM().IsWorking() )
82 {
83 if (player)
84 {
85 vector ori_rotate = player.GetOrientation();
86 ori_rotate = ori_rotate + Vector(270,0,0);
87 SetOrientation(ori_rotate);
88 }
89 }
90 }
91
92 override void SetActions()
93 {
94 super.SetActions();
97 }
98
99 override bool IsLightSource()
100 {
101 return true;
102 }
103}
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
float GetEfficiency0To1()
Returns efficiency of this battery. The value is synchronized from server to all clients and is accur...
Определения Battery9V.c:13
Определения Battery9V.c:2
Определения Building.c:6
override void OnWork(float consumed_energy)
Определения TLRLight.c:40
static string LIGHT_OFF_GLASS
Определения TLRLight.c:8
override void OnInventoryExit(Man player)
Определения TLRLight.c:77
override ScriptedLightBase GetLight()
Определения TLRLight.c:13
override void OnWorkStart()
Определения TLRLight.c:29
static int GLASS_ID
Определения TLRLight.c:6
override void SetActions()
Определения TLRLight.c:92
PistollightLight m_Light
Определения TLRLight.c:3
override void OnWorkStop()
Определения TLRLight.c:62
static int REFLECTOR_ID
Определения TLRLight.c:5
static string LIGHT_OFF_REFLECTOR
Определения TLRLight.c:9
static string LIGHT_ON_GLASS
Определения TLRLight.c:10
static string LIGHT_ON_REFLECTOR
Определения TLRLight.c:11
override bool CanPutAsAttachment(EntityAI parent)
Определения TLRLight.c:18
override bool IsLightSource()
Определения TLRLight.c:99
Определения Chainsaw.c:2
Определения EnConvert.c:106
proto native CGame GetGame()
proto native vector Vector(float x, float y, float z)
Vector constructor from components.