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

◆ ShouldHandleBruteForce()

bool Init::ShouldHandleBruteForce ( )
protected

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

955 : ItemBase
956{
957 const string MEMPOINT_INSIDE = "inside";
958 const string MEMPOINT_CENTER = "ce_center";
959
960 protected const string ATTACHMENT_SLOT_BATTERY = "BatteryD";
961 protected const string SELECTION_NAME_BACK = "back";
962
965
966 protected bool m_Reversed = false;
967
968 // Sounds
969 private const string CODELOCK_ACCESS_SOUND = "digitalLock_beep_Access_SoundSet";
970 private const string CODELOCK_LOCK_SOUND = "digitalLock_mechanism_Lock_SoundSet";
971 private const string CODELOCK_UNLOCK_SOUND = "digitalLock_mechanism_Unlock_SoundSet";
972 private const string CODELOCK_ERROR_SOUND = "digitalLock_beep_Error_SoundSet";
973 private const string CODELOCK_DIGITS_SOUND = "digitalLock_buttons_Digits_SoundSet";
974 private const string CODELOCK_CLEAR_SOUND = "digitalLock_button_Clear_SoundSet";
975 private const string CODELOCK_CONFIRM_SOUND = "digitalLock_button_Key_confirm_SoundSet";
976
977 void DigitalCodeLock()
978 {
979 Init();
980 }
981
982 protected void Init()
983 {
986
987 RegisterNetSyncVariableInt("m_CodeLockComponent.m_DoorIndex");
988 RegisterNetSyncVariableInt("m_CodeLockComponent.m_Stage");
989 RegisterNetSyncVariableInt("m_CodeLockComponent.m_WrongCodeCount");
990 RegisterNetSyncVariableInt("m_CodeLockComponent.m_UIAction");
991 RegisterNetSyncVariableBool("m_CodeLockComponent.m_IsLocked");
992 RegisterNetSyncVariableBool("m_CodeLockComponent.m_HasPIN");
993 RegisterNetSyncVariableBool("m_CodeLockComponent.m_HasBruteForceProtection");
994 RegisterNetSyncVariableBoolSignal("m_CodeLockComponent.m_HandleBruteForceProtection");
995 RegisterNetSyncVariableBool("m_Reversed");
996 }
997
998 override void EEInit()
999 {
1000 super.EEInit();
1001
1002 // Set visuals on init
1004 }
1005
1006 override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc)
1007 {
1008 super.EEItemLocationChanged(oldLoc, newLoc);
1009
1010 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1011 {
1012 if (newLoc.GetType() != InventoryLocationType.ATTACHMENT)
1013 {
1014 if (g_Game.IsDedicatedServer())
1015 SetSynchDirty();
1016
1017 // Force update since animation need too change
1018 UpdateVisuals();
1019 }
1020 }
1021 }
1022
1023 override void EEItemAttached(EntityAI item, string slot_name)
1024 {
1025 super.EEItemAttached(item, slot_name);
1026
1027 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1028 {
1030 if (slot_name == ATTACHMENT_SLOT_BATTERY)
1031 {
1032 Battery9V battery = Battery9V.Cast(item);
1033 if (battery)
1034 {
1035 float batteryEnergy = battery.GetCompEM().GetEnergy();
1036 if (batteryEnergy > 0 && HasValidParent())
1037 {
1038 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
1039 GetCompEM().SwitchOn();
1040 }
1041
1042 UpdateVisuals();
1043 }
1044 }
1045 }
1046 }
1047
1048 override void EEItemDetached(EntityAI item, string slot_name)
1049 {
1050 super.EEItemDetached(item, slot_name);
1051
1052 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1053 {
1055 if (slot_name == ATTACHMENT_SLOT_BATTERY)
1056 {
1057 m_CodeLockComponent.SetStage(CodeLockStage.NONE);
1058 GetCompEM().SwitchOff();
1059
1060 UpdateVisuals();
1061 }
1062 }
1063 }
1064
1065 override void OnWasAttached(EntityAI parent, int slot_id)
1066 {
1067 super.OnWasAttached(parent, slot_id);
1068
1069 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1070 {
1072 string slotName = InventorySlots.GetSlotName(slot_id);
1073 if (slotName.IndexOf("Att_CodeLock") > -1)
1074 {
1075 Battery9V battery = GetBattery();
1076 if (battery && battery.GetCompEM().GetEnergy() > 0 && !GetCompEM().IsWorking())
1077 {
1078 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
1079 GetCompEM().SwitchOn();
1080 }
1081
1082 if (parent && parent.CanUseConstruction())
1083 {
1084 BuildingBase buildingBase = BuildingBase.Cast(parent);
1085 if (buildingBase)
1086 {
1087 SetDoorInfoFromSlot(buildingBase, slotName);
1088 }
1089 }
1090 }
1091
1092 UpdateVisuals();
1093 }
1094 }
1095
1096 override void OnWasDetached(EntityAI parent, int slot_id)
1097 {
1098 super.OnWasDetached(parent, slot_id);
1099
1100 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1101 {
1103 if (GetCompEM().IsWorking())
1104 GetCompEM().SwitchOff();
1105
1106 string slotName = InventorySlots.GetSlotName(slot_id);
1107 if (slotName.IndexOf("Att_CodeLock") > -1)
1108 {
1109 m_Reversed = false;
1110 m_CodeLockComponent.StopAllTimers();
1111 m_CodeLockComponent.OnParentDetached();
1112 }
1113
1114 UpdateVisuals();
1115 }
1116 }
1117
1118 override bool CanDetachAttachment(EntityAI parent)
1119 {
1120 if (IsLocked())
1121 return false;
1122
1123 return true;
1124 }
1125
1126 protected void SetDoorInfoFromSlot(BuildingBase buildingBase, string slotName)
1127 {
1128 map<int, ref AdditionalDoorInfo> doorsInfoMap = buildingBase.GetDoorInfoHolder().GetDoorInfoMap();
1130 if (doorsInfoMap && doorsInfoMap.Count() > 0)
1131 {
1132 int doorIndex = -1;
1133 AdditionalDoorInfo doorInfo;
1134 foreach(int doorInfoIndex, AdditionalDoorInfo doorInfoData: doorsInfoMap)
1135 {
1136 foreach(string relatedSlotName: doorInfoData.m_RelatedInventorySlotNames)
1137 {
1138 if (relatedSlotName == slotName)
1139 {
1140 doorIndex = doorInfoIndex;
1141 doorInfo = doorInfoData;
1142 break;
1143 }
1144 }
1145
1146 if (doorIndex != -1)
1147 break;
1148 }
1149
1150 if (doorIndex > -1)
1151 {
1152 m_CodeLockComponent.SetDoorIndex(doorIndex);
1153 }
1154
1156 Rebuilding rebuilding = Rebuilding.Cast(buildingBase.GetConstructionBasic());
1157 if (rebuilding && doorInfo)
1158 {
1159 ConstructionPart constructionPart = rebuilding.GetConstructionPart(doorInfo.m_DoorConstructionPartName);
1160 ConstructionPartRebuildReversibleDoor reversibleDoorPart;
1161 if (constructionPart && Class.CastTo(reversibleDoorPart, constructionPart))
1162 {
1163 m_Reversed = reversibleDoorPart.IsReversedLocal();
1164 }
1165 }
1166 }
1167 }
1168
1170 bool CanDetachCodeLock(notnull PlayerBase player, int componentIndex)
1171 {
1172 if (HasValidParent() && !IsLocked())
1173 {
1175 if (!GetReversedState() && !MiscGameplayFunctions.MemPointDirectionalCheck(player, this, DigitalCodeLock.MEMPOINT_CENTER, DigitalCodeLock.MEMPOINT_INSIDE))
1176 return false;
1177 }
1178
1179 return true;
1180 }
1181
1182 override void OnWorkStop()
1183 {
1184 super.OnWorkStop();
1185
1186 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1187 {
1188 m_CodeLockComponent.StopAllTimers();
1189 m_CodeLockComponent.OnParentReset(false);
1190
1192 }
1193 }
1194
1195 override void OnWorkStart()
1196 {
1197 super.OnWorkStart();
1198
1199 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1200 {
1201 UpdateVisuals();
1202 }
1203 }
1204
1205 override void OnWork(float consumed_energy)
1206 {
1207 super.OnWork(consumed_energy);
1208
1209 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1210 {
1211 Battery9V battery = GetBattery();
1212 if (battery)
1213 {
1214 if (GetCompEM().IsWorking() && battery.GetCompEM().GetEnergy() <= 0)
1215 {
1216 GetCompEM().SwitchOff();
1217 m_CodeLockComponent.SetLockState(false, false);
1218 }
1219
1220 float energyPercent = GetBatteryEnergy();
1221 if (m_VisualManager.HasBatteryLevelChanged())
1222 {
1223 UpdateVisuals();
1224 SetSynchDirty();
1225 }
1226 }
1227 }
1228 }
1229
1231 void UnlockOnServer(EntityAI parent)
1232 {
1233 InventoryLocation inventoryLocation = new InventoryLocation;
1234 GetInventory().GetCurrentInventoryLocation(inventoryLocation);
1235
1236 //drop entity from attachment slot
1237 if (g_Game.IsMultiplayer())
1238 {
1239 parent.GetInventory().DropEntity(InventoryMode.SERVER, parent, this);
1240 }
1241 else
1242 {
1243 parent.GetInventory().DropEntity(InventoryMode.LOCAL, parent, this);
1244 }
1245
1246 vector groundPos;
1247 string slotName = InventorySlots.GetSlotName(inventoryLocation.GetSlot());
1248 if (parent.MemoryPointExists(slotName))
1249 {
1250 groundPos = parent.ModelToWorld(parent.GetMemoryPointPos(slotName));
1251 }
1252 else
1253 {
1254 groundPos = GetPosition();
1255 }
1256
1257 SetPosition(groundPos);
1258 PlaceOnSurface();
1259 }
1260
1262 {
1263 Battery9V battery = Battery9V.Cast(GetInventory().FindAttachment(Battery9V.SLOT_ID));
1264 return battery;
1265 }
1266
1267 bool CanBeLocked()
1268 {
1269 return true;
1270 }
1271
1272 bool CanBeUnlocked()
1273 {
1274 return true;
1275 }
1276
1277 bool CanSetCode()
1278 {
1279 return true;
1280 }
1281
1282 bool HasBattery()
1283 {
1284 return GetBattery() != null;
1285 }
1286
1287 bool NeedBattery()
1288 {
1289 return true;
1290 }
1291
1292 bool HasEnergy()
1293 {
1294 return GetCompEM().IsWorking();
1295 }
1296
1297 bool HasPIN()
1298 {
1299 return m_CodeLockComponent.HasPIN();
1300 }
1301
1302 string GetInputPIN()
1303 {
1304 return m_CodeLockComponent.GetInputPIN();
1305 }
1306
1307 string GetLockPIN()
1308 {
1309 return m_CodeLockComponent.GetLockPIN();
1310 }
1311
1312 void ResetPIN()
1313 {
1314 m_CodeLockComponent.ResetPIN();
1315 }
1316
1317 void SetLockState(bool state)
1318 {
1319 m_CodeLockComponent.SetLockState(state);
1320 }
1321
1323 {
1324 return m_CodeLockComponent;
1325 }
1326
1327 bool IsLocked()
1328 {
1329 return m_CodeLockComponent.IsLocked();
1330 }
1331
1333 {
1334 return m_CodeLockComponent.GetStage();
1335 }
1336
1338 {
1339 return m_CodeLockComponent.HasBruteForceProtection();
1340 }
1341
1343 {
1344 return m_CodeLockComponent.ShouldHandleBruteForce();
1345 }
1346
1347 int GetWrongCodeCount()
1348 {
1349 return m_CodeLockComponent.GetWrongCodeCount();
1350 }
1351
1353 {
1354 return m_CodeLockComponent.GetMinLockPINLength();
1355 }
1356
1357 bool GetReversedState()
1358 {
1359 return m_Reversed;
1360 }
1361
1364 bool IsPlayerOnBackside(PlayerBase player)
1365 {
1366 if (!player)
1367 return false;
1368
1369 if (!MemoryPointExists(MEMPOINT_CENTER) || !MemoryPointExists(MEMPOINT_INSIDE))
1370 return false;
1371
1372 bool playerOnInsideSide = MiscGameplayFunctions.MemPointDirectionalCheck(player, this, MEMPOINT_CENTER, MEMPOINT_INSIDE);
1373
1374 return playerOnInsideSide != GetReversedState();
1375 }
1376
1377 bool HasValidParent()
1378 {
1379 EntityAI hierarchyParent = GetHierarchyRoot();
1380 if (hierarchyParent.CanUseConstruction())
1381 return true;
1382
1383 if (BroadcastedBunker.Cast(hierarchyParent))
1384 return true;
1385
1386 return false;
1387 }
1388
1390 {
1391 return m_VisualManager;
1392 }
1393
1394 float GetBatteryEnergy()
1395 {
1396 Battery9V battery = GetBattery();
1397 if (!battery)
1398 return 0.0;
1399
1400 float energy = battery.GetCompEM().GetEnergy();
1401 float energyMax = battery.GetCompEM().GetEnergyMax();
1402
1403 if (energyMax <= 0)
1404 return 0.0;
1405
1406 return (energy / energyMax) * 100.0;
1407 }
1408
1409 void UpdateVisuals()
1410 {
1411 if (m_VisualManager)
1412 m_VisualManager.UpdateVisuals();
1413 }
1414
1416 {
1417 if (m_VisualManager)
1418 {
1419 m_VisualManager.MarkDirty();
1420 m_VisualManager.UpdateVisuals();
1421 }
1422 }
1423
1424 override void SetActions()
1425 {
1426 super.SetActions();
1427
1429 }
1430
1431 override void OnRPC(PlayerIdentity sender, int rpc_type,ParamsReadContext ctx)
1432 {
1433 super.OnRPC(sender, rpc_type, ctx);
1434
1435 m_CodeLockComponent.OnRPC(sender, rpc_type, ctx);
1436 }
1437
1438 override void OnStoreSave(ParamsWriteContext ctx)
1439 {
1440 super.OnStoreSave(ctx);
1441
1442 m_CodeLockComponent.OnStoreSave(ctx);
1443 }
1444
1445 override bool OnStoreLoad(ParamsReadContext ctx, int version)
1446 {
1447 if (!super.OnStoreLoad(ctx, version))
1448 return false;
1449
1450 if (!m_CodeLockComponent.OnStoreLoad(ctx, version))
1451 return false;
1452
1453 return true;
1454 }
1455
1456 override void AfterStoreLoad()
1457 {
1458 super.AfterStoreLoad();
1459
1460 if (HasBattery())
1461 {
1462 if (HasPIN())
1463 {
1464 m_CodeLockComponent.SetStage(CodeLockStage.NORMAL);
1465 }
1466 else
1467 {
1468 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
1469 }
1470 }
1471
1473 }
1474
1475 override void EEHealthLevelChanged(int oldLevel, int newLevel, string zone)
1476 {
1477 super.EEHealthLevelChanged(oldLevel,newLevel,zone);
1478
1480 }
1481
1482 override void OnVariablesSynchronized()
1483 {
1484 super.OnVariablesSynchronized();
1485
1487 {
1488 CodeLockUIAction uiAction = m_CodeLockComponent.GetUIAction();
1489 if (uiAction != CodeLockUIAction.NONE)
1490 {
1491 m_CodeLockComponent.CheckUIActionClient();
1492 }
1493 }
1494 }
1495
1496 override bool IsExternalLockType()
1497 {
1498 return true;
1499 }
1500
1501 override void InitItemSounds()
1502 {
1503 super.InitItemSounds();
1504
1505 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_ACCESS, CODELOCK_ACCESS_SOUND);
1506 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_LOCK, CODELOCK_LOCK_SOUND);
1507 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_UNLOCK, CODELOCK_UNLOCK_SOUND);
1508 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_ERROR, CODELOCK_ERROR_SOUND);
1509 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_CONFIRM_INPUT, CODELOCK_CONFIRM_SOUND);
1510 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_CLEAR_INPUT, CODELOCK_CLEAR_SOUND);
1511 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_DIGIT_INPUT, CODELOCK_DIGITS_SOUND);
1512 }
1513
1514 //Debug menu Spawn Ground Special
1515 override void OnDebugSpawn()
1516 {
1517 GetInventory().CreateInInventory("Battery9V");
1518 }
1519}
1520
1521class DigitalCodeLock_Bunker : DigitalCodeLock
1522{
1523 override void Init()
1524 {
1525 super.Init();
1526
1527 BunkerBroadcastConfigInstance bunkerConfig = CfgBunkerBroadcastHandler.GetData();
1528 int pinCodeLength = CodeLockComponent.MIN_LOCK_PIN_LENGTH;
1529
1530 if (bunkerConfig && bunkerConfig.bunkerSettings)
1531 {
1533 pinCodeLength = bunkerConfig.bunkerSettings.lockCodeLength;
1534 if (pinCodeLength > CodeLockComponent.MAX_LOCK_PIN_LENGTH)
1535 pinCodeLength = CodeLockComponent.MAX_LOCK_PIN_LENGTH;
1536 }
1537
1538 m_CodeLockComponent.SetMinimalPinCodeLength(pinCodeLength);
1539 }
1540
1541 override bool CanBeLocked()
1542 {
1543 return false;
1544 }
1545
1546 override bool CanSetCode()
1547 {
1548 return false;
1549 }
1550
1551 override bool CanDetachAttachment(EntityAI parent)
1552 {
1553 return false;
1554 }
1555
1557 override void OnWasDetached(EntityAI parent, int slot_id) {}
1558
1559 override bool NeedBattery()
1560 {
1561 return false;
1562 }
1563
1564 override bool HasBattery()
1565 {
1566 return true;
1567 }
1568
1569 override bool HasEnergy()
1570 {
1571 return true;
1572 }
1573
1574 override bool ShowZonesHealth()
1575 {
1576 return true;
1577 }
1578
1579 bool SetLockCode(string pin)
1580 {
1581 return m_CodeLockComponent.SetLockCode(pin);
1582 }
1583
1584 void Disable()
1585 {
1586 m_CodeLockComponent.SetStage(CodeLockStage.NONE);
1587 SetAnimationPhase(CodeLockVisualManager.CODELOCK_ANIMATED_GREEN_LIGHT, 1.0);
1588 SetAnimationPhase(CodeLockVisualManager.CODELOCK_ANIMATED_RED_LIGHT, 1.0);
1589 }
1590}
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