DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ OnWork()

override void Init::OnWork ( float consumed_energy)
protected

См. определение в файле CodeLock.c строка 818

818 : ItemBase
819{
820 const string MEMPOINT_INSIDE = "inside";
821 const string MEMPOINT_CENTER = "ce_center";
822
823 protected const string ATTACHMENT_SLOT_BATTERY = "BatteryD";
824 protected const string SELECTION_NAME_BACK = "back";
825
828
829 protected bool m_Reversed = false;
830
831 // Sounds
832 private const string CODELOCK_ACCESS_SOUND = "digitalLock_beep_Access_SoundSet";
833 private const string CODELOCK_LOCK_SOUND = "digitalLock_mechanism_Lock_SoundSet";
834 private const string CODELOCK_UNLOCK_SOUND = "digitalLock_mechanism_Unlock_SoundSet";
835 private const string CODELOCK_ERROR_SOUND = "digitalLock_beep_Error_SoundSet";
836 private const string CODELOCK_DIGITS_SOUND = "digitalLock_buttons_Digits_SoundSet";
837 private const string CODELOCK_CLEAR_SOUND = "digitalLock_button_Clear_SoundSet";
838 private const string CODELOCK_CONFIRM_SOUND = "digitalLock_button_Key_confirm_SoundSet";
839
840 void DigitalCodeLock()
841 {
842 Init();
843 }
844
845 protected void Init()
846 {
849
850 RegisterNetSyncVariableInt("m_CodeLockComponent.m_DoorIndex");
851 RegisterNetSyncVariableInt("m_CodeLockComponent.m_Stage");
852 RegisterNetSyncVariableInt("m_CodeLockComponent.m_WrongCodeCount");
853 RegisterNetSyncVariableInt("m_CodeLockComponent.m_UIAction");
854 RegisterNetSyncVariableBool("m_CodeLockComponent.m_IsLocked");
855 RegisterNetSyncVariableBool("m_CodeLockComponent.m_HasPIN");
856 RegisterNetSyncVariableBool("m_CodeLockComponent.m_HasBruteForceProtection");
857 RegisterNetSyncVariableBoolSignal("m_CodeLockComponent.m_HandleBruteForceProtection");
858 RegisterNetSyncVariableBool("m_Reversed");
859 }
860
861 override void EEInit()
862 {
863 super.EEInit();
864
865 // Set visuals on init
867 }
868
869 override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc)
870 {
871 super.EEItemLocationChanged(oldLoc, newLoc);
872
873 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
874 {
875 if (newLoc.GetType() != InventoryLocationType.ATTACHMENT)
876 {
877 if (g_Game.IsDedicatedServer())
878 SetSynchDirty();
879
880 // Force update since animation need too change
882 }
883 }
884 }
885
886 override void EEItemAttached(EntityAI item, string slot_name)
887 {
888 super.EEItemAttached(item, slot_name);
889
890 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
891 {
893 if (slot_name == ATTACHMENT_SLOT_BATTERY)
894 {
895 Battery9V battery = Battery9V.Cast(item);
896 if (battery)
897 {
898 float batteryEnergy = battery.GetCompEM().GetEnergy();
899 if (batteryEnergy > 0 && HasValidParent())
900 {
901 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
902 GetCompEM().SwitchOn();
903 }
904
906 }
907 }
908 }
909 }
910
911 override void EEItemDetached(EntityAI item, string slot_name)
912 {
913 super.EEItemDetached(item, slot_name);
914
915 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
916 {
918 if (slot_name == ATTACHMENT_SLOT_BATTERY)
919 {
920 m_CodeLockComponent.SetStage(CodeLockStage.NONE);
921 GetCompEM().SwitchOff();
922
924 }
925 }
926 }
927
928 override void OnWasAttached(EntityAI parent, int slot_id)
929 {
930 super.OnWasAttached(parent, slot_id);
931
932 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
933 {
935 string slotName = InventorySlots.GetSlotName(slot_id);
936 if (slotName.IndexOf("Att_CodeLock") > -1)
937 {
938 Battery9V battery = GetBattery();
939 if (battery && battery.GetCompEM().GetEnergy() > 0 && !GetCompEM().IsWorking())
940 {
941 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
942 GetCompEM().SwitchOn();
943 }
944
945 if (parent && parent.CanUseConstruction())
946 {
947 BuildingBase buildingBase = BuildingBase.Cast(parent);
948 if (buildingBase)
949 {
950 SetDoorInfoFromSlot(buildingBase, slotName);
951 }
952 }
953 }
954
956 }
957 }
958
959 override void OnWasDetached(EntityAI parent, int slot_id)
960 {
961 super.OnWasDetached(parent, slot_id);
962
963 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
964 {
966 if (GetCompEM().IsWorking())
967 GetCompEM().SwitchOff();
968
969 string slotName = InventorySlots.GetSlotName(slot_id);
970 if (slotName.IndexOf("Att_CodeLock") > -1)
971 {
972 m_Reversed = false;
973 m_CodeLockComponent.StopAllTimers();
974 m_CodeLockComponent.OnParentDetached();
975 }
976
978 }
979 }
980
981 override bool CanDetachAttachment(EntityAI parent)
982 {
983 if (IsLocked())
984 return false;
985
986 return true;
987 }
988
989 protected void SetDoorInfoFromSlot(BuildingBase buildingBase, string slotName)
990 {
991 map<int, ref AdditionalDoorInfo> doorsInfoMap = buildingBase.GetDoorInfoHolder().GetDoorInfoMap();
993 if (doorsInfoMap && doorsInfoMap.Count() > 0)
994 {
995 int doorIndex = -1;
996 AdditionalDoorInfo doorInfo;
997 foreach(int doorInfoIndex, AdditionalDoorInfo doorInfoData: doorsInfoMap)
998 {
999 foreach(string relatedSlotName: doorInfoData.m_RelatedInventorySlotNames)
1000 {
1001 if (relatedSlotName == slotName)
1002 {
1003 doorIndex = doorInfoIndex;
1004 doorInfo = doorInfoData;
1005 break;
1006 }
1007 }
1008
1009 if (doorIndex != -1)
1010 break;
1011 }
1012
1013 if (doorIndex > -1)
1014 {
1015 m_CodeLockComponent.SetDoorIndex(doorIndex);
1016 }
1017
1019 Rebuilding rebuilding = Rebuilding.Cast(buildingBase.GetConstructionBasic());
1020 if (rebuilding && doorInfo)
1021 {
1022 ConstructionPart constructionPart = rebuilding.GetConstructionPart(doorInfo.m_DoorConstructionPartName);
1023 ConstructionPartRebuildReversibleDoor reversibleDoorPart;
1024 if (constructionPart && Class.CastTo(reversibleDoorPart, constructionPart))
1025 {
1026 m_Reversed = reversibleDoorPart.IsReversedLocal();
1027 }
1028 }
1029 }
1030 }
1031
1033 bool CanDetachCodeLock(notnull PlayerBase player, int componentIndex)
1034 {
1035 if (HasValidParent() && !IsLocked())
1036 {
1038 if (!GetReversedState() && !MiscGameplayFunctions.MemPointDirectionalCheck(player, this, DigitalCodeLock.MEMPOINT_CENTER, DigitalCodeLock.MEMPOINT_INSIDE))
1039 return false;
1040 }
1041
1042 return true;
1043 }
1044
1045 override void OnWorkStop()
1046 {
1047 super.OnWorkStop();
1048
1049 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1050 {
1051 m_CodeLockComponent.StopAllTimers();
1052 m_CodeLockComponent.OnParentReset(false);
1053
1055 }
1056 }
1057
1058 override void OnWorkStart()
1059 {
1060 super.OnWorkStart();
1061
1062 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1063 {
1064 UpdateVisuals();
1065 }
1066 }
1067
1068 override void OnWork(float consumed_energy)
1069 {
1070 super.OnWork(consumed_energy);
1071
1072 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1073 {
1074 Battery9V battery = GetBattery();
1075 if (battery)
1076 {
1077 if (GetCompEM().IsWorking() && battery.GetCompEM().GetEnergy() <= 0)
1078 {
1079 GetCompEM().SwitchOff();
1080 m_CodeLockComponent.SetLockState(false, false);
1081 }
1082
1083 float energyPercent = GetBatteryEnergy();
1084 if (m_VisualManager.HasBatteryLevelChanged())
1085 {
1086 UpdateVisuals();
1087 SetSynchDirty();
1088 }
1089 }
1090 }
1091 }
1092
1094 void UnlockOnServer(EntityAI parent)
1095 {
1096 InventoryLocation inventoryLocation = new InventoryLocation;
1097 GetInventory().GetCurrentInventoryLocation(inventoryLocation);
1098
1099 //drop entity from attachment slot
1100 if (g_Game.IsMultiplayer())
1101 {
1102 parent.GetInventory().DropEntity(InventoryMode.SERVER, parent, this);
1103 }
1104 else
1105 {
1106 parent.GetInventory().DropEntity(InventoryMode.LOCAL, parent, this);
1107 }
1108
1109 vector groundPos;
1110 string slotName = InventorySlots.GetSlotName(inventoryLocation.GetSlot());
1111 if (parent.MemoryPointExists(slotName))
1112 {
1113 groundPos = parent.ModelToWorld(parent.GetMemoryPointPos(slotName));
1114 }
1115 else
1116 {
1117 groundPos = GetPosition();
1118 }
1119
1120 SetPosition(groundPos);
1121 PlaceOnSurface();
1122 }
1123
1125 {
1126 Battery9V battery = Battery9V.Cast(GetInventory().FindAttachment(Battery9V.SLOT_ID));
1127 return battery;
1128 }
1129
1130 bool CanBeLocked()
1131 {
1132 return true;
1133 }
1134
1135 bool CanBeUnlocked()
1136 {
1137 return true;
1138 }
1139
1140 bool CanSetCode()
1141 {
1142 return true;
1143 }
1144
1145 bool HasBattery()
1146 {
1147 return GetBattery() != null;
1148 }
1149
1150 bool NeedBattery()
1151 {
1152 return true;
1153 }
1154
1155 bool HasEnergy()
1156 {
1157 return GetCompEM().IsWorking();
1158 }
1159
1160 bool HasPIN()
1161 {
1162 return m_CodeLockComponent.HasPIN();
1163 }
1164
1165 string GetInputPIN()
1166 {
1167 return m_CodeLockComponent.GetInputPIN();
1168 }
1169
1170 string GetLockPIN()
1171 {
1172 return m_CodeLockComponent.GetLockPIN();
1173 }
1174
1175 void ResetPIN()
1176 {
1177 m_CodeLockComponent.ResetPIN();
1178 }
1179
1180 void SetLockState(bool state)
1181 {
1182 m_CodeLockComponent.SetLockState(state);
1183 }
1184
1186 {
1187 return m_CodeLockComponent;
1188 }
1189
1190 bool IsLocked()
1191 {
1192 return m_CodeLockComponent.IsLocked();
1193 }
1194
1196 {
1197 return m_CodeLockComponent.GetStage();
1198 }
1199
1201 {
1202 return m_CodeLockComponent.HasBruteForceProtection();
1203 }
1204
1206 {
1207 return m_CodeLockComponent.ShouldHandleBruteForce();
1208 }
1209
1210 int GetWrongCodeCount()
1211 {
1212 return m_CodeLockComponent.GetWrongCodeCount();
1213 }
1214
1216 {
1217 return m_CodeLockComponent.GetMinLockPINLength();
1218 }
1219
1220 bool GetReversedState()
1221 {
1222 return m_Reversed;
1223 }
1224
1227 bool IsPlayerOnBackside(PlayerBase player)
1228 {
1229 if (!player)
1230 return false;
1231
1232 if (!MemoryPointExists(MEMPOINT_CENTER) || !MemoryPointExists(MEMPOINT_INSIDE))
1233 return false;
1234
1235 bool playerOnInsideSide = MiscGameplayFunctions.MemPointDirectionalCheck(player, this, MEMPOINT_CENTER, MEMPOINT_INSIDE);
1236
1237 return playerOnInsideSide != GetReversedState();
1238 }
1239
1240 bool HasValidParent()
1241 {
1242 EntityAI hierarchyParent = GetHierarchyRoot();
1243 if (hierarchyParent.CanUseConstruction())
1244 return true;
1245
1246 if (BroadcastedBunker.Cast(hierarchyParent))
1247 return true;
1248
1249 return false;
1250 }
1251
1253 {
1254 return m_VisualManager;
1255 }
1256
1257 float GetBatteryEnergy()
1258 {
1259 Battery9V battery = GetBattery();
1260 if (!battery)
1261 return 0.0;
1262
1263 float energy = battery.GetCompEM().GetEnergy();
1264 float energyMax = battery.GetCompEM().GetEnergyMax();
1265
1266 if (energyMax <= 0)
1267 return 0.0;
1268
1269 return (energy / energyMax) * 100.0;
1270 }
1271
1272 void UpdateVisuals()
1273 {
1274 if (m_VisualManager)
1275 m_VisualManager.UpdateVisuals();
1276 }
1277
1279 {
1280 if (m_VisualManager)
1281 {
1282 m_VisualManager.MarkDirty();
1283 m_VisualManager.UpdateVisuals();
1284 }
1285 }
1286
1287 override void SetActions()
1288 {
1289 super.SetActions();
1290
1292 }
1293
1294 override void OnRPC(PlayerIdentity sender, int rpc_type,ParamsReadContext ctx)
1295 {
1296 super.OnRPC(sender, rpc_type, ctx);
1297
1298 m_CodeLockComponent.OnRPC(sender, rpc_type, ctx);
1299 }
1300
1301 override void OnStoreSave(ParamsWriteContext ctx)
1302 {
1303 super.OnStoreSave(ctx);
1304
1305 m_CodeLockComponent.OnStoreSave(ctx);
1306 }
1307
1308 override bool OnStoreLoad(ParamsReadContext ctx, int version)
1309 {
1310 if (!super.OnStoreLoad(ctx, version))
1311 return false;
1312
1313 if (!m_CodeLockComponent.OnStoreLoad(ctx, version))
1314 return false;
1315
1316 return true;
1317 }
1318
1319 override void AfterStoreLoad()
1320 {
1321 super.AfterStoreLoad();
1322
1323 if (HasBattery())
1324 {
1325 if (HasPIN())
1326 {
1327 m_CodeLockComponent.SetStage(CodeLockStage.NORMAL);
1328 }
1329 else
1330 {
1331 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
1332 }
1333 }
1334
1336 }
1337
1338 override void EEHealthLevelChanged(int oldLevel, int newLevel, string zone)
1339 {
1340 super.EEHealthLevelChanged(oldLevel,newLevel,zone);
1341
1343 }
1344
1345 override void OnVariablesSynchronized()
1346 {
1347 super.OnVariablesSynchronized();
1348
1350 {
1351 CodeLockUIAction uiAction = m_CodeLockComponent.GetUIAction();
1352 if (uiAction != CodeLockUIAction.NONE)
1353 {
1354 m_CodeLockComponent.CheckUIActionClient();
1355 }
1356 }
1357 }
1358
1359 override bool IsExternalLockType()
1360 {
1361 return true;
1362 }
1363
1364 override void InitItemSounds()
1365 {
1366 super.InitItemSounds();
1367
1368 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_ACCESS, CODELOCK_ACCESS_SOUND);
1369 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_LOCK, CODELOCK_LOCK_SOUND);
1370 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_UNLOCK, CODELOCK_UNLOCK_SOUND);
1371 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_ERROR, CODELOCK_ERROR_SOUND);
1372 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_CONFIRM_INPUT, CODELOCK_CONFIRM_SOUND);
1373 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_CLEAR_INPUT, CODELOCK_CLEAR_SOUND);
1374 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_DIGIT_INPUT, CODELOCK_DIGITS_SOUND);
1375 }
1376
1377 //Debug menu Spawn Ground Special
1378 override void OnDebugSpawn()
1379 {
1380 GetInventory().CreateInInventory("Battery9V");
1381 }
1382}
1383
1384class DigitalCodeLock_Bunker : DigitalCodeLock
1385{
1386 override void Init()
1387 {
1388 super.Init();
1389
1390 BunkerBroadcastConfigInstance bunkerConfig = CfgBunkerBroadcastHandler.GetData();
1391 int pinCodeLength = CodeLockComponent.MIN_LOCK_PIN_LENGTH;
1392
1393 if (bunkerConfig && bunkerConfig.bunkerSettings)
1394 {
1396 pinCodeLength = bunkerConfig.bunkerSettings.lockCodeLength;
1397 if (pinCodeLength > CodeLockComponent.MAX_LOCK_PIN_LENGTH)
1398 pinCodeLength = CodeLockComponent.MAX_LOCK_PIN_LENGTH;
1399 }
1400
1401 m_CodeLockComponent.SetMinimalPinCodeLength(pinCodeLength);
1402 }
1403
1404 override bool CanBeLocked()
1405 {
1406 return false;
1407 }
1408
1409 override bool CanSetCode()
1410 {
1411 return false;
1412 }
1413
1414 override bool CanDetachAttachment(EntityAI parent)
1415 {
1416 return false;
1417 }
1418
1420 override void OnWasDetached(EntityAI parent, int slot_id) {}
1421
1422 override bool NeedBattery()
1423 {
1424 return false;
1425 }
1426
1427 override bool HasBattery()
1428 {
1429 return true;
1430 }
1431
1432 override bool HasEnergy()
1433 {
1434 return true;
1435 }
1436
1437 override bool ShowZonesHealth()
1438 {
1439 return true;
1440 }
1441
1442 bool SetLockCode(string pin)
1443 {
1444 return m_CodeLockComponent.SetLockCode(pin);
1445 }
1446
1447 void Disable()
1448 {
1449 m_CodeLockComponent.SetStage(CodeLockStage.NONE);
1450 SetAnimationPhase(CodeLockVisualManager.CODELOCK_ANIMATED_GREEN_LIGHT, 1.0);
1451 SetAnimationPhase(CodeLockVisualManager.CODELOCK_ANIMATED_RED_LIGHT, 1.0);
1452 }
1453}
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
class LogManager EntityAI
void BuildingBase()
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
PlayerSpawnPreset slotName
override void EEItemDetached(EntityAI item, string slot_name)
Определения CodeLock.c:661
override void OnStoreSave(ParamsWriteContext ctx)
Определения CodeLock.c:1051
void UpdateVisuals()
Определения CodeLock.c:1022
override void SetActions()
Определения CodeLock.c:1037
void Disable()
Определения CodeLock.c:630
override void EEItemAttached(EntityAI item, string slot_name)
Определения CodeLock.c:636
override void OnWasDetached(EntityAI parent, int slot_id)
overrides the base behavior - intentional
Определения CodeLock.c:709
const string CODELOCK_UNLOCK_SOUND
Определения CodeLock.c:584
void UnlockOnServer(EntityAI parent)
Unlock AND drop.
Определения CodeLock.c:844
override void OnWorkStop()
Определения CodeLock.c:795
Battery9V GetBattery()
Определения CodeLock.c:874
CodeLockVisualManager GetVisualManager()
Определения CodeLock.c:1002
bool HasBattery()
Определения CodeLock.c:895
bool HasBruteForceProtection()
Определения CodeLock.c:950
const string SELECTION_NAME_BACK
Определения CodeLock.c:574
const string MEMPOINT_INSIDE
Определения CodeLock.c:570
void DigitalCodeLock()
Определения CodeLock.c:590
string GetLockPIN()
Определения CodeLock.c:920
override void OnWork(float consumed_energy)
Определения CodeLock.c:818
const string CODELOCK_DIGITS_SOUND
Определения CodeLock.c:586
bool NeedBattery()
Определения CodeLock.c:900
bool CanBeUnlocked()
Определения CodeLock.c:885
bool SetLockCode(string pin)
Определения CodeLock.c:625
bool HasPIN()
Определения CodeLock.c:910
bool IsPlayerOnBackside(PlayerBase player)
Определения CodeLock.c:977
override void EEInit()
Определения CodeLock.c:611
override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc)
Определения CodeLock.c:619
bool IsLocked()
Определения CodeLock.c:940
override bool OnStoreLoad(ParamsReadContext ctx, int version)
Определения CodeLock.c:1058
const string CODELOCK_CONFIRM_SOUND
Определения CodeLock.c:588
void SetLockState(bool state)
Определения CodeLock.c:930
bool CanSetCode()
Определения CodeLock.c:890
void ForceFullVisualsUpdate()
Определения CodeLock.c:1028
bool CanBeLocked()
Определения CodeLock.c:880
bool HasEnergy()
Определения CodeLock.c:905
bool CanDetachCodeLock(notnull PlayerBase player, int componentIndex)
Condition check called from ActionTakeItem and ActionTakeItemToHands.
Определения CodeLock.c:783
ref CodeLockVisualManager m_VisualManager
Определения CodeLock.c:577
override void OnWasAttached(EntityAI parent, int slot_id)
Определения CodeLock.c:678
void ResetPIN()
Определения CodeLock.c:925
bool ShouldHandleBruteForce()
Определения CodeLock.c:955
ref CodeLockComponent m_CodeLockComponent
Определения CodeLock.c:576
bool GetReversedState()
Определения CodeLock.c:970
float GetBatteryEnergy()
Определения CodeLock.c:1007
override void InitItemSounds()
Определения CodeLock.c:1114
bool m_Reversed
Определения CodeLock.c:579
int GetWrongCodeCount()
Определения CodeLock.c:960
bool HasValidParent()
Определения CodeLock.c:990
override bool CanDetachAttachment(EntityAI parent)
Определения CodeLock.c:731
string GetInputPIN()
Определения CodeLock.c:915
void SetDoorInfoFromSlot(BuildingBase buildingBase, string slotName)
Определения CodeLock.c:739
const string MEMPOINT_CENTER
Определения CodeLock.c:571
override void OnRPC(PlayerIdentity sender, int rpc_type, ParamsReadContext ctx)
Определения CodeLock.c:1044
override void OnVariablesSynchronized()
Определения CodeLock.c:1095
CodeLockComponent GetCodeLockComponent()
Определения CodeLock.c:935
override void AfterStoreLoad()
Определения CodeLock.c:1069
const string CODELOCK_CLEAR_SOUND
Определения CodeLock.c:587
override bool IsExternalLockType()
Определения CodeLock.c:1109
CodeLockStage GetStage()
Определения CodeLock.c:945
const string ATTACHMENT_SLOT_BATTERY
Определения CodeLock.c:573
DigitalCodeLock ItemBase Init()
single position related to each particular attachment group
Определения CodeLock.c:569
const string CODELOCK_ERROR_SOUND
Определения CodeLock.c:585
int GetMinLockPINLength()
Определения CodeLock.c:965
const string CODELOCK_ACCESS_SOUND
Определения CodeLock.c:582
override void OnDebugSpawn()
Определения CodeLock.c:1128
override void EEHealthLevelChanged(int oldLevel, int newLevel, string zone)
Определения CodeLock.c:1088
const string CODELOCK_LOCK_SOUND
Определения CodeLock.c:583
override void OnWorkStart()
Определения CodeLock.c:808
void CodeLockComponent(notnull EntityAI parent, int minLockPinLength=MIN_LOCK_PIN_LENGTH)
Определения CodeLockComponent.c:51
CodeLockStage
Определения CodeLockComponent.c:5
void CodeLockVisualManager(DigitalCodeLock codeLock, CodeLockComponent component)
Определения CodeLockVisualManager.c:63
DayZGame g_Game
Определения DayZGame.c:4074
InventoryLocationType
types of Inventory Location
Определения InventoryLocation.c:4
ItemSoundHandler GetItemSoundHandler()
Определения ItemBase.c:4407
string m_DoorConstructionPartName
memory point name for limiting open/close actions on the door/window
Определения AdditionalDoorsInfo.c:9
Single door info.
Определения AdditionalDoorsInfo.c:3
static int SLOT_ID
Определения Battery9V.c:3
Определения Battery9V.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
Instanced construction part data classes for dynamic data, statics now stored on EntityType level in ...
Определения ConstructionPart.c:4
void Init()
Определения CodeLock.c:28
bool HasBattery()
Определения CodeLock.c:328
bool CanBeLocked()
Определения CodeLock.c:313
bool HasEnergy()
Определения CodeLock.c:338
const string MEMPOINT_INSIDE
Определения CodeLock.c:3
bool CanSetCode()
Определения CodeLock.c:323
const string MEMPOINT_CENTER
Определения CodeLock.c:4
bool NeedBattery()
Определения CodeLock.c:333
override void OnWasDetached(EntityAI parent, int slot_id)
Определения CodeLock.c:142
override bool CanDetachAttachment(EntityAI parent)
Определения CodeLock.c:164
Определения CodeLock.c:2
proto native int GetSlot()
returns slot id if current type is Attachment
InventoryLocation.
Определения InventoryLocation.c:30
static proto native owned string GetSlotName(int id)
converts slot_id to string
provides access to slot configuration
Определения InventorySlots.c:6
override bool ShowZonesHealth()
Определения PlayerBaseClient.c:2
The class that will be instanced (moddable)
Определения gameplay.c:389
Определения Rebuilding.c:2
Определения Transport.c:70
Определения EnConvert.c:119
Serializer ParamsReadContext
Определения gameplay.c:15
Serializer ParamsWriteContext
Определения gameplay.c:16
proto native void SetPosition(vector position)
Set the world position of the Effect.
Определения Effect.c:463
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
vector GetPosition()
Get the world position of the Effect.
Определения Effect.c:473