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

◆ AfterStoreLoad()

override void Init::AfterStoreLoad ( )
protected

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

1069 : ItemBase
1070{
1071 const string MEMPOINT_INSIDE = "inside";
1072 const string MEMPOINT_CENTER = "ce_center";
1073
1074 protected const string ATTACHMENT_SLOT_BATTERY = "BatteryD";
1075 protected const string SELECTION_NAME_BACK = "back";
1076
1079
1080 protected bool m_Reversed = false;
1081
1082 // Sounds
1083 private const string CODELOCK_ACCESS_SOUND = "digitalLock_beep_Access_SoundSet";
1084 private const string CODELOCK_LOCK_SOUND = "digitalLock_mechanism_Lock_SoundSet";
1085 private const string CODELOCK_UNLOCK_SOUND = "digitalLock_mechanism_Unlock_SoundSet";
1086 private const string CODELOCK_ERROR_SOUND = "digitalLock_beep_Error_SoundSet";
1087 private const string CODELOCK_DIGITS_SOUND = "digitalLock_buttons_Digits_SoundSet";
1088 private const string CODELOCK_CLEAR_SOUND = "digitalLock_button_Clear_SoundSet";
1089 private const string CODELOCK_CONFIRM_SOUND = "digitalLock_button_Key_confirm_SoundSet";
1090
1091 void DigitalCodeLock()
1092 {
1093 Init();
1094 }
1095
1096 protected void Init()
1097 {
1100
1101 RegisterNetSyncVariableInt("m_CodeLockComponent.m_DoorIndex");
1102 RegisterNetSyncVariableInt("m_CodeLockComponent.m_Stage");
1103 RegisterNetSyncVariableInt("m_CodeLockComponent.m_WrongCodeCount");
1104 RegisterNetSyncVariableInt("m_CodeLockComponent.m_UIAction");
1105 RegisterNetSyncVariableBool("m_CodeLockComponent.m_IsLocked");
1106 RegisterNetSyncVariableBool("m_CodeLockComponent.m_HasPIN");
1107 RegisterNetSyncVariableBool("m_CodeLockComponent.m_HasBruteForceProtection");
1108 RegisterNetSyncVariableBoolSignal("m_CodeLockComponent.m_HandleBruteForceProtection");
1109 RegisterNetSyncVariableBool("m_Reversed");
1110 }
1111
1112 override void EEInit()
1113 {
1114 super.EEInit();
1115
1116 // Set visuals on init
1118 }
1119
1120 override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc)
1121 {
1122 super.EEItemLocationChanged(oldLoc, newLoc);
1123
1124 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1125 {
1126 if (newLoc.GetType() != InventoryLocationType.ATTACHMENT)
1127 {
1128 if (g_Game.IsDedicatedServer())
1129 SetSynchDirty();
1130
1131 // Force update since animation need too change
1132 UpdateVisuals();
1133 }
1134 }
1135 }
1136
1137 override void EEItemAttached(EntityAI item, string slot_name)
1138 {
1139 super.EEItemAttached(item, slot_name);
1140
1141 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1142 {
1144 if (slot_name == ATTACHMENT_SLOT_BATTERY)
1145 {
1146 Battery9V battery = Battery9V.Cast(item);
1147 if (battery)
1148 {
1149 float batteryEnergy = battery.GetCompEM().GetEnergy();
1150 if (batteryEnergy > 0 && HasValidParent())
1151 {
1152 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
1153 GetCompEM().SwitchOn();
1154 }
1155
1156 UpdateVisuals();
1157 }
1158 }
1159 }
1160 }
1161
1162 override void EEItemDetached(EntityAI item, string slot_name)
1163 {
1164 super.EEItemDetached(item, slot_name);
1165
1166 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1167 {
1169 if (slot_name == ATTACHMENT_SLOT_BATTERY)
1170 {
1171 m_CodeLockComponent.SetStage(CodeLockStage.NONE);
1172 GetCompEM().SwitchOff();
1173
1174 UpdateVisuals();
1175 }
1176 }
1177 }
1178
1179 override void OnWasAttached(EntityAI parent, int slot_id)
1180 {
1181 super.OnWasAttached(parent, slot_id);
1182
1183 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1184 {
1186 string slotName = InventorySlots.GetSlotName(slot_id);
1187 if (slotName.IndexOf("Att_CodeLock") > -1)
1188 {
1189 Battery9V battery = GetBattery();
1190 if (battery && battery.GetCompEM().GetEnergy() > 0 && !GetCompEM().IsWorking())
1191 {
1192 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
1193 GetCompEM().SwitchOn();
1194 }
1195
1196 if (parent && parent.CanUseConstruction())
1197 {
1198 BuildingBase buildingBase = BuildingBase.Cast(parent);
1199 if (buildingBase)
1200 {
1201 SetDoorInfoFromSlot(buildingBase, slotName);
1202 }
1203 }
1204 }
1205
1206 UpdateVisuals();
1207 }
1208 }
1209
1210 override void OnWasDetached(EntityAI parent, int slot_id)
1211 {
1212 super.OnWasDetached(parent, slot_id);
1213
1214 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1215 {
1217 if (GetCompEM().IsWorking())
1218 GetCompEM().SwitchOff();
1219
1220 string slotName = InventorySlots.GetSlotName(slot_id);
1221 if (slotName.IndexOf("Att_CodeLock") > -1)
1222 {
1223 m_Reversed = false;
1224 m_CodeLockComponent.StopAllTimers();
1225 m_CodeLockComponent.OnParentDetached();
1226 }
1227
1228 UpdateVisuals();
1229 }
1230 }
1231
1232 override bool CanDetachAttachment(EntityAI parent)
1233 {
1234 if (IsLocked())
1235 return false;
1236
1237 return true;
1238 }
1239
1240 protected void SetDoorInfoFromSlot(BuildingBase buildingBase, string slotName)
1241 {
1242 map<int, ref AdditionalDoorInfo> doorsInfoMap = buildingBase.GetDoorInfoHolder().GetDoorInfoMap();
1244 if (doorsInfoMap && doorsInfoMap.Count() > 0)
1245 {
1246 int doorIndex = -1;
1247 AdditionalDoorInfo doorInfo;
1248 foreach(int doorInfoIndex, AdditionalDoorInfo doorInfoData: doorsInfoMap)
1249 {
1250 foreach(string relatedSlotName: doorInfoData.m_RelatedInventorySlotNames)
1251 {
1252 if (relatedSlotName == slotName)
1253 {
1254 doorIndex = doorInfoIndex;
1255 doorInfo = doorInfoData;
1256 break;
1257 }
1258 }
1259
1260 if (doorIndex != -1)
1261 break;
1262 }
1263
1264 if (doorIndex > -1)
1265 {
1266 m_CodeLockComponent.SetDoorIndex(doorIndex);
1267 }
1268
1270 Rebuilding rebuilding = Rebuilding.Cast(buildingBase.GetConstructionBasic());
1271 if (rebuilding && doorInfo)
1272 {
1273 ConstructionPart constructionPart = rebuilding.GetConstructionPart(doorInfo.m_DoorConstructionPartName);
1274 ConstructionPartRebuildReversibleDoor reversibleDoorPart;
1275 if (constructionPart && Class.CastTo(reversibleDoorPart, constructionPart))
1276 {
1277 m_Reversed = reversibleDoorPart.IsReversedLocal();
1278 }
1279 }
1280 }
1281 }
1282
1284 bool CanDetachCodeLock(notnull PlayerBase player, int componentIndex)
1285 {
1286 if (HasValidParent() && !IsLocked())
1287 {
1289 if (!GetReversedState() && !MiscGameplayFunctions.MemPointDirectionalCheck(player, this, DigitalCodeLock.MEMPOINT_CENTER, DigitalCodeLock.MEMPOINT_INSIDE))
1290 return false;
1291 }
1292
1293 return true;
1294 }
1295
1296 override void OnWorkStop()
1297 {
1298 super.OnWorkStop();
1299
1300 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1301 {
1302 m_CodeLockComponent.StopAllTimers();
1303 m_CodeLockComponent.OnParentReset(false);
1304
1306 }
1307 }
1308
1309 override void OnWorkStart()
1310 {
1311 super.OnWorkStart();
1312
1313 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1314 {
1315 UpdateVisuals();
1316 }
1317 }
1318
1319 override void OnWork(float consumed_energy)
1320 {
1321 super.OnWork(consumed_energy);
1322
1323 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1324 {
1325 Battery9V battery = GetBattery();
1326 if (battery)
1327 {
1328 if (GetCompEM().IsWorking() && battery.GetCompEM().GetEnergy() <= 0)
1329 {
1330 GetCompEM().SwitchOff();
1331 m_CodeLockComponent.SetLockState(false, false);
1332 }
1333
1334 float energyPercent = GetBatteryEnergy();
1335 if (m_VisualManager.HasBatteryLevelChanged())
1336 {
1337 UpdateVisuals();
1338 SetSynchDirty();
1339 }
1340 }
1341 }
1342 }
1343
1345 void UnlockOnServer(EntityAI parent)
1346 {
1347 InventoryLocation inventoryLocation = new InventoryLocation;
1348 GetInventory().GetCurrentInventoryLocation(inventoryLocation);
1349
1350 //drop entity from attachment slot
1351 if (g_Game.IsMultiplayer())
1352 {
1353 parent.GetInventory().DropEntity(InventoryMode.SERVER, parent, this);
1354 }
1355 else
1356 {
1357 parent.GetInventory().DropEntity(InventoryMode.LOCAL, parent, this);
1358 }
1359
1360 vector groundPos;
1361 string slotName = InventorySlots.GetSlotName(inventoryLocation.GetSlot());
1362 if (parent.MemoryPointExists(slotName))
1363 {
1364 groundPos = parent.ModelToWorld(parent.GetMemoryPointPos(slotName));
1365 }
1366 else
1367 {
1368 groundPos = GetPosition();
1369 }
1370
1371 SetPosition(groundPos);
1372 PlaceOnSurface();
1373 }
1374
1376 {
1377 Battery9V battery = Battery9V.Cast(GetInventory().FindAttachment(Battery9V.SLOT_ID));
1378 return battery;
1379 }
1380
1381 bool CanBeLocked()
1382 {
1383 return true;
1384 }
1385
1386 bool CanBeUnlocked()
1387 {
1388 return true;
1389 }
1390
1391 bool CanSetCode()
1392 {
1393 return true;
1394 }
1395
1396 bool HasBattery()
1397 {
1398 return GetBattery() != null;
1399 }
1400
1401 bool NeedBattery()
1402 {
1403 return true;
1404 }
1405
1406 bool HasEnergy()
1407 {
1408 return GetCompEM().IsWorking();
1409 }
1410
1411 bool HasPIN()
1412 {
1413 return m_CodeLockComponent.HasPIN();
1414 }
1415
1416 string GetInputPIN()
1417 {
1418 return m_CodeLockComponent.GetInputPIN();
1419 }
1420
1421 string GetLockPIN()
1422 {
1423 return m_CodeLockComponent.GetLockPIN();
1424 }
1425
1426 void ResetPIN()
1427 {
1428 m_CodeLockComponent.ResetPIN();
1429 }
1430
1431 void SetLockState(bool state)
1432 {
1433 m_CodeLockComponent.SetLockState(state);
1434 }
1435
1437 {
1438 return m_CodeLockComponent;
1439 }
1440
1441 bool IsLocked()
1442 {
1443 return m_CodeLockComponent.IsLocked();
1444 }
1445
1447 {
1448 return m_CodeLockComponent.GetStage();
1449 }
1450
1452 {
1453 return m_CodeLockComponent.HasBruteForceProtection();
1454 }
1455
1457 {
1458 return m_CodeLockComponent.ShouldHandleBruteForce();
1459 }
1460
1461 int GetWrongCodeCount()
1462 {
1463 return m_CodeLockComponent.GetWrongCodeCount();
1464 }
1465
1467 {
1468 return m_CodeLockComponent.GetMinLockPINLength();
1469 }
1470
1471 bool GetReversedState()
1472 {
1473 return m_Reversed;
1474 }
1475
1478 bool IsPlayerOnBackside(PlayerBase player)
1479 {
1480 if (!player)
1481 return false;
1482
1483 if (!MemoryPointExists(MEMPOINT_CENTER) || !MemoryPointExists(MEMPOINT_INSIDE))
1484 return false;
1485
1486 bool playerOnInsideSide = MiscGameplayFunctions.MemPointDirectionalCheck(player, this, MEMPOINT_CENTER, MEMPOINT_INSIDE);
1487
1488 return playerOnInsideSide != GetReversedState();
1489 }
1490
1491 bool HasValidParent()
1492 {
1493 EntityAI hierarchyParent = GetHierarchyRoot();
1494 if (hierarchyParent.CanUseConstruction())
1495 return true;
1496
1497 if (BroadcastedBunker.Cast(hierarchyParent))
1498 return true;
1499
1500 return false;
1501 }
1502
1504 {
1505 return m_VisualManager;
1506 }
1507
1508 float GetBatteryEnergy()
1509 {
1510 Battery9V battery = GetBattery();
1511 if (!battery)
1512 return 0.0;
1513
1514 float energy = battery.GetCompEM().GetEnergy();
1515 float energyMax = battery.GetCompEM().GetEnergyMax();
1516
1517 if (energyMax <= 0)
1518 return 0.0;
1519
1520 return (energy / energyMax) * 100.0;
1521 }
1522
1523 void UpdateVisuals()
1524 {
1525 if (m_VisualManager)
1526 m_VisualManager.UpdateVisuals();
1527 }
1528
1530 {
1531 if (m_VisualManager)
1532 {
1533 m_VisualManager.MarkDirty();
1534 m_VisualManager.UpdateVisuals();
1535 }
1536 }
1537
1538 override void SetActions()
1539 {
1540 super.SetActions();
1541
1543 }
1544
1545 override void OnRPC(PlayerIdentity sender, int rpc_type,ParamsReadContext ctx)
1546 {
1547 super.OnRPC(sender, rpc_type, ctx);
1548
1549 m_CodeLockComponent.OnRPC(sender, rpc_type, ctx);
1550 }
1551
1552 override void OnStoreSave(ParamsWriteContext ctx)
1553 {
1554 super.OnStoreSave(ctx);
1555
1556 m_CodeLockComponent.OnStoreSave(ctx);
1557 }
1558
1559 override bool OnStoreLoad(ParamsReadContext ctx, int version)
1560 {
1561 if (!super.OnStoreLoad(ctx, version))
1562 return false;
1563
1564 if (!m_CodeLockComponent.OnStoreLoad(ctx, version))
1565 return false;
1566
1567 return true;
1568 }
1569
1570 override void AfterStoreLoad()
1571 {
1572 super.AfterStoreLoad();
1573
1574 if (HasBattery())
1575 {
1576 if (HasPIN())
1577 {
1578 m_CodeLockComponent.SetStage(CodeLockStage.NORMAL);
1579 }
1580 else
1581 {
1582 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
1583 }
1584 }
1585
1587 }
1588
1589 override void EEHealthLevelChanged(int oldLevel, int newLevel, string zone)
1590 {
1591 super.EEHealthLevelChanged(oldLevel,newLevel,zone);
1592
1594 }
1595
1596 override void OnVariablesSynchronized()
1597 {
1598 super.OnVariablesSynchronized();
1599
1601 {
1602 CodeLockUIAction uiAction = m_CodeLockComponent.GetUIAction();
1603 if (uiAction != CodeLockUIAction.NONE)
1604 {
1605 m_CodeLockComponent.CheckUIActionClient();
1606 }
1607 }
1608 }
1609
1610 override bool IsExternalLockType()
1611 {
1612 return true;
1613 }
1614
1615 override void InitItemSounds()
1616 {
1617 super.InitItemSounds();
1618
1619 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_ACCESS, CODELOCK_ACCESS_SOUND);
1620 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_LOCK, CODELOCK_LOCK_SOUND);
1621 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_UNLOCK, CODELOCK_UNLOCK_SOUND);
1622 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_ERROR, CODELOCK_ERROR_SOUND);
1623 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_CONFIRM_INPUT, CODELOCK_CONFIRM_SOUND);
1624 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_CLEAR_INPUT, CODELOCK_CLEAR_SOUND);
1625 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_DIGIT_INPUT, CODELOCK_DIGITS_SOUND);
1626 }
1627
1628 //Debug menu Spawn Ground Special
1629 override void OnDebugSpawn()
1630 {
1631 GetInventory().CreateInInventory("Battery9V");
1632 }
1633}
1634
1635class DigitalCodeLock_Bunker : DigitalCodeLock
1636{
1637 override void Init()
1638 {
1639 super.Init();
1640
1641 BunkerBroadcastConfigInstance bunkerConfig = CfgBunkerBroadcastHandler.GetData();
1642 int pinCodeLength = CodeLockComponent.MIN_LOCK_PIN_LENGTH;
1643
1644 if (bunkerConfig && bunkerConfig.bunkerSettings)
1645 {
1647 pinCodeLength = bunkerConfig.bunkerSettings.lockCodeLength;
1648 if (pinCodeLength > CodeLockComponent.MAX_LOCK_PIN_LENGTH)
1649 pinCodeLength = CodeLockComponent.MAX_LOCK_PIN_LENGTH;
1650 }
1651
1652 m_CodeLockComponent.SetMinimalPinCodeLength(pinCodeLength);
1653 }
1654
1655 override bool CanBeLocked()
1656 {
1657 return false;
1658 }
1659
1660 override bool CanSetCode()
1661 {
1662 return false;
1663 }
1664
1665 override bool CanDetachAttachment(EntityAI parent)
1666 {
1667 return false;
1668 }
1669
1671 override void OnWasDetached(EntityAI parent, int slot_id) {}
1672
1673 override bool NeedBattery()
1674 {
1675 return false;
1676 }
1677
1678 override bool HasBattery()
1679 {
1680 return true;
1681 }
1682
1683 override bool HasEnergy()
1684 {
1685 return true;
1686 }
1687
1688 override bool ShowZonesHealth()
1689 {
1690 return true;
1691 }
1692
1693 bool SetLockCode(string pin)
1694 {
1695 return m_CodeLockComponent.SetLockCode(pin);
1696 }
1697
1698 void Disable()
1699 {
1700 m_CodeLockComponent.SetStage(CodeLockStage.NONE);
1701 SetAnimationPhase(CodeLockVisualManager.CODELOCK_ANIMATED_GREEN_LIGHT, 1.0);
1702 SetAnimationPhase(CodeLockVisualManager.CODELOCK_ANIMATED_RED_LIGHT, 1.0);
1703 }
1704}
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