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

◆ CanDetachCodeLock()

bool Init::CanDetachCodeLock ( notnull PlayerBase player,
int componentIndex )
protected

Condition check called from ActionTakeItem and ActionTakeItemToHands.

GetReversedState is used to check if code lock is mounted on reversible doors

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

783 : ItemBase
784{
785 const string MEMPOINT_INSIDE = "inside";
786 const string MEMPOINT_CENTER = "ce_center";
787
788 protected const string ATTACHMENT_SLOT_BATTERY = "BatteryD";
789 protected const string SELECTION_NAME_BACK = "back";
790
793
794 protected bool m_Reversed = false;
795
796 // Sounds
797 private const string CODELOCK_ACCESS_SOUND = "digitalLock_beep_Access_SoundSet";
798 private const string CODELOCK_LOCK_SOUND = "digitalLock_mechanism_Lock_SoundSet";
799 private const string CODELOCK_UNLOCK_SOUND = "digitalLock_mechanism_Unlock_SoundSet";
800 private const string CODELOCK_ERROR_SOUND = "digitalLock_beep_Error_SoundSet";
801 private const string CODELOCK_DIGITS_SOUND = "digitalLock_buttons_Digits_SoundSet";
802 private const string CODELOCK_CLEAR_SOUND = "digitalLock_button_Clear_SoundSet";
803 private const string CODELOCK_CONFIRM_SOUND = "digitalLock_button_Key_confirm_SoundSet";
804
805 void DigitalCodeLock()
806 {
807 Init();
808 }
809
810 protected void Init()
811 {
814
815 RegisterNetSyncVariableInt("m_CodeLockComponent.m_DoorIndex");
816 RegisterNetSyncVariableInt("m_CodeLockComponent.m_Stage");
817 RegisterNetSyncVariableInt("m_CodeLockComponent.m_WrongCodeCount");
818 RegisterNetSyncVariableInt("m_CodeLockComponent.m_UIAction");
819 RegisterNetSyncVariableBool("m_CodeLockComponent.m_IsLocked");
820 RegisterNetSyncVariableBool("m_CodeLockComponent.m_HasPIN");
821 RegisterNetSyncVariableBool("m_CodeLockComponent.m_HasBruteForceProtection");
822 RegisterNetSyncVariableBoolSignal("m_CodeLockComponent.m_HandleBruteForceProtection");
823 RegisterNetSyncVariableBool("m_Reversed");
824 }
825
826 override void EEInit()
827 {
828 super.EEInit();
829
830 // Set visuals on init
832 }
833
834 override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc)
835 {
836 super.EEItemLocationChanged(oldLoc, newLoc);
837
838 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
839 {
840 if (newLoc.GetType() != InventoryLocationType.ATTACHMENT)
841 {
842 if (g_Game.IsDedicatedServer())
843 SetSynchDirty();
844
845 // Force update since animation need too change
847 }
848 }
849 }
850
851 override void EEItemAttached(EntityAI item, string slot_name)
852 {
853 super.EEItemAttached(item, slot_name);
854
855 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
856 {
858 if (slot_name == ATTACHMENT_SLOT_BATTERY)
859 {
860 Battery9V battery = Battery9V.Cast(item);
861 if (battery)
862 {
863 float batteryEnergy = battery.GetCompEM().GetEnergy();
864 if (batteryEnergy > 0 && HasValidParent())
865 {
866 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
867 GetCompEM().SwitchOn();
868 }
869
871 }
872 }
873 }
874 }
875
876 override void EEItemDetached(EntityAI item, string slot_name)
877 {
878 super.EEItemDetached(item, slot_name);
879
880 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
881 {
883 if (slot_name == ATTACHMENT_SLOT_BATTERY)
884 {
885 m_CodeLockComponent.SetStage(CodeLockStage.NONE);
886 GetCompEM().SwitchOff();
887
889 }
890 }
891 }
892
893 override void OnWasAttached(EntityAI parent, int slot_id)
894 {
895 super.OnWasAttached(parent, slot_id);
896
897 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
898 {
900 string slotName = InventorySlots.GetSlotName(slot_id);
901 if (slotName.IndexOf("Att_CodeLock") > -1)
902 {
903 Battery9V battery = GetBattery();
904 if (battery && battery.GetCompEM().GetEnergy() > 0 && !GetCompEM().IsWorking())
905 {
906 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
907 GetCompEM().SwitchOn();
908 }
909
910 if (parent && parent.CanUseConstruction())
911 {
912 BuildingBase buildingBase = BuildingBase.Cast(parent);
913 if (buildingBase)
914 {
915 SetDoorInfoFromSlot(buildingBase, slotName);
916 }
917 }
918 }
919
921 }
922 }
923
924 override void OnWasDetached(EntityAI parent, int slot_id)
925 {
926 super.OnWasDetached(parent, slot_id);
927
928 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
929 {
931 if (GetCompEM().IsWorking())
932 GetCompEM().SwitchOff();
933
934 string slotName = InventorySlots.GetSlotName(slot_id);
935 if (slotName.IndexOf("Att_CodeLock") > -1)
936 {
937 m_Reversed = false;
938 m_CodeLockComponent.StopAllTimers();
939 m_CodeLockComponent.OnParentDetached();
940 }
941
943 }
944 }
945
946 override bool CanDetachAttachment(EntityAI parent)
947 {
948 if (IsLocked())
949 return false;
950
951 return true;
952 }
953
954 protected void SetDoorInfoFromSlot(BuildingBase buildingBase, string slotName)
955 {
956 map<int, ref AdditionalDoorInfo> doorsInfoMap = buildingBase.GetDoorInfoHolder().GetDoorInfoMap();
958 if (doorsInfoMap && doorsInfoMap.Count() > 0)
959 {
960 int doorIndex = -1;
961 AdditionalDoorInfo doorInfo;
962 foreach(int doorInfoIndex, AdditionalDoorInfo doorInfoData: doorsInfoMap)
963 {
964 foreach(string relatedSlotName: doorInfoData.m_RelatedInventorySlotNames)
965 {
966 if (relatedSlotName == slotName)
967 {
968 doorIndex = doorInfoIndex;
969 doorInfo = doorInfoData;
970 break;
971 }
972 }
973
974 if (doorIndex != -1)
975 break;
976 }
977
978 if (doorIndex > -1)
979 {
980 m_CodeLockComponent.SetDoorIndex(doorIndex);
981 }
982
984 Rebuilding rebuilding = Rebuilding.Cast(buildingBase.GetConstructionBasic());
985 if (rebuilding && doorInfo)
986 {
987 ConstructionPart constructionPart = rebuilding.GetConstructionPart(doorInfo.m_DoorConstructionPartName);
988 ConstructionPartRebuildReversibleDoor reversibleDoorPart;
989 if (constructionPart && Class.CastTo(reversibleDoorPart, constructionPart))
990 {
991 m_Reversed = reversibleDoorPart.IsReversedLocal();
992 }
993 }
994 }
995 }
996
998 bool CanDetachCodeLock(notnull PlayerBase player, int componentIndex)
999 {
1000 if (HasValidParent() && !IsLocked())
1001 {
1003 if (!GetReversedState() && !MiscGameplayFunctions.MemPointDirectionalCheck(player, this, DigitalCodeLock.MEMPOINT_CENTER, DigitalCodeLock.MEMPOINT_INSIDE))
1004 return false;
1005 }
1006
1007 return true;
1008 }
1009
1010 override void OnWorkStop()
1011 {
1012 super.OnWorkStop();
1013
1014 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1015 {
1016 m_CodeLockComponent.StopAllTimers();
1017 m_CodeLockComponent.OnParentReset(false);
1018
1020 }
1021 }
1022
1023 override void OnWorkStart()
1024 {
1025 super.OnWorkStart();
1026
1027 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1028 {
1029 UpdateVisuals();
1030 }
1031 }
1032
1033 override void OnWork(float consumed_energy)
1034 {
1035 super.OnWork(consumed_energy);
1036
1037 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
1038 {
1039 Battery9V battery = GetBattery();
1040 if (battery)
1041 {
1042 if (GetCompEM().IsWorking() && battery.GetCompEM().GetEnergy() <= 0)
1043 {
1044 GetCompEM().SwitchOff();
1045 m_CodeLockComponent.SetLockState(false, false);
1046 }
1047
1048 float energyPercent = GetBatteryEnergy();
1049 if (m_VisualManager.HasBatteryLevelChanged())
1050 {
1051 UpdateVisuals();
1052 SetSynchDirty();
1053 }
1054 }
1055 }
1056 }
1057
1059 void UnlockOnServer(EntityAI parent)
1060 {
1061 InventoryLocation inventoryLocation = new InventoryLocation;
1062 GetInventory().GetCurrentInventoryLocation(inventoryLocation);
1063
1064 //drop entity from attachment slot
1065 if (g_Game.IsMultiplayer())
1066 {
1067 parent.GetInventory().DropEntity(InventoryMode.SERVER, parent, this);
1068 }
1069 else
1070 {
1071 parent.GetInventory().DropEntity(InventoryMode.LOCAL, parent, this);
1072 }
1073
1074 vector groundPos;
1075 string slotName = InventorySlots.GetSlotName(inventoryLocation.GetSlot());
1076 if (parent.MemoryPointExists(slotName))
1077 {
1078 groundPos = parent.ModelToWorld(parent.GetMemoryPointPos(slotName));
1079 }
1080 else
1081 {
1082 groundPos = GetPosition();
1083 }
1084
1085 SetPosition(groundPos);
1086 PlaceOnSurface();
1087 }
1088
1090 {
1091 Battery9V battery = Battery9V.Cast(GetInventory().FindAttachment(Battery9V.SLOT_ID));
1092 return battery;
1093 }
1094
1095 bool CanBeLocked()
1096 {
1097 return true;
1098 }
1099
1100 bool CanBeUnlocked()
1101 {
1102 return true;
1103 }
1104
1105 bool CanSetCode()
1106 {
1107 return true;
1108 }
1109
1110 bool HasBattery()
1111 {
1112 return GetBattery() != null;
1113 }
1114
1115 bool NeedBattery()
1116 {
1117 return true;
1118 }
1119
1120 bool HasEnergy()
1121 {
1122 return GetCompEM().IsWorking();
1123 }
1124
1125 bool HasPIN()
1126 {
1127 return m_CodeLockComponent.HasPIN();
1128 }
1129
1130 string GetInputPIN()
1131 {
1132 return m_CodeLockComponent.GetInputPIN();
1133 }
1134
1135 string GetLockPIN()
1136 {
1137 return m_CodeLockComponent.GetLockPIN();
1138 }
1139
1140 void ResetPIN()
1141 {
1142 m_CodeLockComponent.ResetPIN();
1143 }
1144
1145 void SetLockState(bool state)
1146 {
1147 m_CodeLockComponent.SetLockState(state);
1148 }
1149
1151 {
1152 return m_CodeLockComponent;
1153 }
1154
1155 bool IsLocked()
1156 {
1157 return m_CodeLockComponent.IsLocked();
1158 }
1159
1161 {
1162 return m_CodeLockComponent.GetStage();
1163 }
1164
1166 {
1167 return m_CodeLockComponent.HasBruteForceProtection();
1168 }
1169
1171 {
1172 return m_CodeLockComponent.ShouldHandleBruteForce();
1173 }
1174
1175 int GetWrongCodeCount()
1176 {
1177 return m_CodeLockComponent.GetWrongCodeCount();
1178 }
1179
1181 {
1182 return m_CodeLockComponent.GetMinLockPINLength();
1183 }
1184
1185 bool GetReversedState()
1186 {
1187 return m_Reversed;
1188 }
1189
1192 bool IsPlayerOnBackside(PlayerBase player)
1193 {
1194 if (!player)
1195 return false;
1196
1197 if (!MemoryPointExists(MEMPOINT_CENTER) || !MemoryPointExists(MEMPOINT_INSIDE))
1198 return false;
1199
1200 bool playerOnInsideSide = MiscGameplayFunctions.MemPointDirectionalCheck(player, this, MEMPOINT_CENTER, MEMPOINT_INSIDE);
1201
1202 return playerOnInsideSide != GetReversedState();
1203 }
1204
1205 bool HasValidParent()
1206 {
1207 EntityAI hierarchyParent = GetHierarchyRoot();
1208 if (hierarchyParent.CanUseConstruction())
1209 return true;
1210
1211 if (BroadcastedBunker.Cast(hierarchyParent))
1212 return true;
1213
1214 return false;
1215 }
1216
1218 {
1219 return m_VisualManager;
1220 }
1221
1222 float GetBatteryEnergy()
1223 {
1224 Battery9V battery = GetBattery();
1225 if (!battery)
1226 return 0.0;
1227
1228 float energy = battery.GetCompEM().GetEnergy();
1229 float energyMax = battery.GetCompEM().GetEnergyMax();
1230
1231 if (energyMax <= 0)
1232 return 0.0;
1233
1234 return (energy / energyMax) * 100.0;
1235 }
1236
1237 void UpdateVisuals()
1238 {
1239 if (m_VisualManager)
1240 m_VisualManager.UpdateVisuals();
1241 }
1242
1244 {
1245 if (m_VisualManager)
1246 {
1247 m_VisualManager.MarkDirty();
1248 m_VisualManager.UpdateVisuals();
1249 }
1250 }
1251
1252 override void SetActions()
1253 {
1254 super.SetActions();
1255
1257 }
1258
1259 override void OnRPC(PlayerIdentity sender, int rpc_type,ParamsReadContext ctx)
1260 {
1261 super.OnRPC(sender, rpc_type, ctx);
1262
1263 m_CodeLockComponent.OnRPC(sender, rpc_type, ctx);
1264 }
1265
1266 override void OnStoreSave(ParamsWriteContext ctx)
1267 {
1268 super.OnStoreSave(ctx);
1269
1270 m_CodeLockComponent.OnStoreSave(ctx);
1271 }
1272
1273 override bool OnStoreLoad(ParamsReadContext ctx, int version)
1274 {
1275 if (!super.OnStoreLoad(ctx, version))
1276 return false;
1277
1278 if (!m_CodeLockComponent.OnStoreLoad(ctx, version))
1279 return false;
1280
1281 return true;
1282 }
1283
1284 override void AfterStoreLoad()
1285 {
1286 super.AfterStoreLoad();
1287
1288 if (HasBattery())
1289 {
1290 if (HasPIN())
1291 {
1292 m_CodeLockComponent.SetStage(CodeLockStage.NORMAL);
1293 }
1294 else
1295 {
1296 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
1297 }
1298 }
1299
1301 }
1302
1303 override void EEHealthLevelChanged(int oldLevel, int newLevel, string zone)
1304 {
1305 super.EEHealthLevelChanged(oldLevel,newLevel,zone);
1306
1308 }
1309
1310 override void OnVariablesSynchronized()
1311 {
1312 super.OnVariablesSynchronized();
1313
1315 {
1316 CodeLockUIAction uiAction = m_CodeLockComponent.GetUIAction();
1317 if (uiAction != CodeLockUIAction.NONE)
1318 {
1319 m_CodeLockComponent.CheckUIActionClient();
1320 }
1321 }
1322 }
1323
1324 override bool IsExternalLockType()
1325 {
1326 return true;
1327 }
1328
1329 override void InitItemSounds()
1330 {
1331 super.InitItemSounds();
1332
1333 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_ACCESS, CODELOCK_ACCESS_SOUND);
1334 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_LOCK, CODELOCK_LOCK_SOUND);
1335 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_UNLOCK, CODELOCK_UNLOCK_SOUND);
1336 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_ERROR, CODELOCK_ERROR_SOUND);
1337 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_CONFIRM_INPUT, CODELOCK_CONFIRM_SOUND);
1338 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_CLEAR_INPUT, CODELOCK_CLEAR_SOUND);
1339 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_DIGIT_INPUT, CODELOCK_DIGITS_SOUND);
1340 }
1341
1342 //Debug menu Spawn Ground Special
1343 override void OnDebugSpawn()
1344 {
1345 GetInventory().CreateInInventory("Battery9V");
1346 }
1347}
1348
1349class DigitalCodeLock_Bunker : DigitalCodeLock
1350{
1351 override void Init()
1352 {
1353 super.Init();
1354
1355 BunkerBroadcastConfigInstance bunkerConfig = CfgBunkerBroadcastHandler.GetData();
1356 int pinCodeLength = CodeLockComponent.MIN_LOCK_PIN_LENGTH;
1357
1358 if (bunkerConfig && bunkerConfig.bunkerSettings)
1359 {
1361 pinCodeLength = bunkerConfig.bunkerSettings.lockCodeLength;
1362 if (pinCodeLength > CodeLockComponent.MAX_LOCK_PIN_LENGTH)
1363 pinCodeLength = CodeLockComponent.MAX_LOCK_PIN_LENGTH;
1364 }
1365
1366 m_CodeLockComponent.SetMinimalPinCodeLength(pinCodeLength);
1367 }
1368
1369 override bool CanBeLocked()
1370 {
1371 return false;
1372 }
1373
1374 override bool CanSetCode()
1375 {
1376 return false;
1377 }
1378
1379 override bool CanDetachAttachment(EntityAI parent)
1380 {
1381 return false;
1382 }
1383
1385 override void OnWasDetached(EntityAI parent, int slot_id) {}
1386
1387 override bool NeedBattery()
1388 {
1389 return false;
1390 }
1391
1392 override bool HasBattery()
1393 {
1394 return true;
1395 }
1396
1397 override bool HasEnergy()
1398 {
1399 return true;
1400 }
1401
1402 override bool ShowZonesHealth()
1403 {
1404 return true;
1405 }
1406
1407 bool SetLockCode(string pin)
1408 {
1409 return m_CodeLockComponent.SetLockCode(pin);
1410 }
1411
1412 void Disable()
1413 {
1414 m_CodeLockComponent.SetStage(CodeLockStage.NONE);
1415 SetAnimationPhase(CodeLockVisualManager.CODELOCK_ANIMATED_GREEN_LIGHT, 1.0);
1416 SetAnimationPhase(CodeLockVisualManager.CODELOCK_ANIMATED_RED_LIGHT, 1.0);
1417 }
1418}
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