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

◆ OnWasDetached()

override void Init::OnWasDetached ( EntityAI parent,
int slot_id )
protected

overrides the base behavior - intentional

Stop energy consumption once lock is detached with active energy manager

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

709 : ItemBase
710{
711 const string MEMPOINT_INSIDE = "inside";
712 const string MEMPOINT_CENTER = "ce_center";
713
714 protected const string ATTACHMENT_SLOT_BATTERY = "BatteryD";
715 protected const string SELECTION_NAME_BACK = "back";
716
719
720 protected bool m_Reversed = false;
721
722 // Sounds
723 private const string CODELOCK_ACCESS_SOUND = "digitalLock_beep_Access_SoundSet";
724 private const string CODELOCK_LOCK_SOUND = "digitalLock_mechanism_Lock_SoundSet";
725 private const string CODELOCK_UNLOCK_SOUND = "digitalLock_mechanism_Unlock_SoundSet";
726 private const string CODELOCK_ERROR_SOUND = "digitalLock_beep_Error_SoundSet";
727 private const string CODELOCK_DIGITS_SOUND = "digitalLock_buttons_Digits_SoundSet";
728 private const string CODELOCK_CLEAR_SOUND = "digitalLock_button_Clear_SoundSet";
729 private const string CODELOCK_CONFIRM_SOUND = "digitalLock_button_Key_confirm_SoundSet";
730
731 void DigitalCodeLock()
732 {
733 Init();
734 }
735
736 protected void Init()
737 {
740
741 RegisterNetSyncVariableInt("m_CodeLockComponent.m_DoorIndex");
742 RegisterNetSyncVariableInt("m_CodeLockComponent.m_Stage");
743 RegisterNetSyncVariableInt("m_CodeLockComponent.m_WrongCodeCount");
744 RegisterNetSyncVariableInt("m_CodeLockComponent.m_UIAction");
745 RegisterNetSyncVariableBool("m_CodeLockComponent.m_IsLocked");
746 RegisterNetSyncVariableBool("m_CodeLockComponent.m_HasPIN");
747 RegisterNetSyncVariableBool("m_CodeLockComponent.m_HasBruteForceProtection");
748 RegisterNetSyncVariableBoolSignal("m_CodeLockComponent.m_HandleBruteForceProtection");
749 RegisterNetSyncVariableBool("m_Reversed");
750 }
751
752 override void EEInit()
753 {
754 super.EEInit();
755
756 // Set visuals on init
758 }
759
760 override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc)
761 {
762 super.EEItemLocationChanged(oldLoc, newLoc);
763
764 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
765 {
766 if (newLoc.GetType() != InventoryLocationType.ATTACHMENT)
767 {
768 if (g_Game.IsDedicatedServer())
769 SetSynchDirty();
770
771 // Force update since animation need too change
773 }
774 }
775 }
776
777 override void EEItemAttached(EntityAI item, string slot_name)
778 {
779 super.EEItemAttached(item, slot_name);
780
781 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
782 {
784 if (slot_name == ATTACHMENT_SLOT_BATTERY)
785 {
786 Battery9V battery = Battery9V.Cast(item);
787 if (battery)
788 {
789 float batteryEnergy = battery.GetCompEM().GetEnergy();
790 if (batteryEnergy > 0 && HasValidParent())
791 {
792 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
793 GetCompEM().SwitchOn();
794 }
795
797 }
798 }
799 }
800 }
801
802 override void EEItemDetached(EntityAI item, string slot_name)
803 {
804 super.EEItemDetached(item, slot_name);
805
806 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
807 {
809 if (slot_name == ATTACHMENT_SLOT_BATTERY)
810 {
811 m_CodeLockComponent.SetStage(CodeLockStage.NONE);
812 GetCompEM().SwitchOff();
813
815 }
816 }
817 }
818
819 override void OnWasAttached(EntityAI parent, int slot_id)
820 {
821 super.OnWasAttached(parent, slot_id);
822
823 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
824 {
826 string slotName = InventorySlots.GetSlotName(slot_id);
827 if (slotName.IndexOf("Att_CodeLock") > -1)
828 {
829 Battery9V battery = GetBattery();
830 if (battery && battery.GetCompEM().GetEnergy() > 0 && !GetCompEM().IsWorking())
831 {
832 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
833 GetCompEM().SwitchOn();
834 }
835
836 if (parent && parent.CanUseConstruction())
837 {
838 BuildingBase buildingBase = BuildingBase.Cast(parent);
839 if (buildingBase)
840 {
841 SetDoorInfoFromSlot(buildingBase, slotName);
842 }
843 }
844 }
845
847 }
848 }
849
850 override void OnWasDetached(EntityAI parent, int slot_id)
851 {
852 super.OnWasDetached(parent, slot_id);
853
854 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
855 {
857 if (GetCompEM().IsWorking())
858 GetCompEM().SwitchOff();
859
860 string slotName = InventorySlots.GetSlotName(slot_id);
861 if (slotName.IndexOf("Att_CodeLock") > -1)
862 {
863 m_Reversed = false;
864 m_CodeLockComponent.StopAllTimers();
865 m_CodeLockComponent.OnParentDetached();
866 }
867
869 }
870 }
871
872 override bool CanDetachAttachment(EntityAI parent)
873 {
874 if (IsLocked())
875 return false;
876
877 return true;
878 }
879
880 protected void SetDoorInfoFromSlot(BuildingBase buildingBase, string slotName)
881 {
882 map<int, ref AdditionalDoorInfo> doorsInfoMap = buildingBase.GetDoorInfoHolder().GetDoorInfoMap();
884 if (doorsInfoMap && doorsInfoMap.Count() > 0)
885 {
886 int doorIndex = -1;
887 AdditionalDoorInfo doorInfo;
888 foreach(int doorInfoIndex, AdditionalDoorInfo doorInfoData: doorsInfoMap)
889 {
890 foreach(string relatedSlotName: doorInfoData.m_RelatedInventorySlotNames)
891 {
892 if (relatedSlotName == slotName)
893 {
894 doorIndex = doorInfoIndex;
895 doorInfo = doorInfoData;
896 break;
897 }
898 }
899
900 if (doorIndex != -1)
901 break;
902 }
903
904 if (doorIndex > -1)
905 {
906 m_CodeLockComponent.SetDoorIndex(doorIndex);
907 }
908
910 Rebuilding rebuilding = Rebuilding.Cast(buildingBase.GetConstructionBasic());
911 if (rebuilding && doorInfo)
912 {
913 ConstructionPart constructionPart = rebuilding.GetConstructionPart(doorInfo.m_DoorConstructionPartName);
914 ConstructionPartRebuildReversibleDoor reversibleDoorPart;
915 if (constructionPart && Class.CastTo(reversibleDoorPart, constructionPart))
916 {
917 m_Reversed = reversibleDoorPart.IsReversedLocal();
918 }
919 }
920 }
921 }
922
924 bool CanDetachCodeLock(notnull PlayerBase player, int componentIndex)
925 {
926 if (HasValidParent() && !IsLocked())
927 {
929 if (!GetReversedState() && !MiscGameplayFunctions.MemPointDirectionalCheck(player, this, DigitalCodeLock.MEMPOINT_CENTER, DigitalCodeLock.MEMPOINT_INSIDE))
930 return false;
931 }
932
933 return true;
934 }
935
936 override void OnWorkStop()
937 {
938 super.OnWorkStop();
939
940 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
941 {
942 m_CodeLockComponent.StopAllTimers();
943 m_CodeLockComponent.OnParentReset(false);
944
946 }
947 }
948
949 override void OnWorkStart()
950 {
951 super.OnWorkStart();
952
953 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
954 {
956 }
957 }
958
959 override void OnWork(float consumed_energy)
960 {
961 super.OnWork(consumed_energy);
962
963 if (g_Game.IsServer() || !g_Game.IsMultiplayer()) // single player or server side multiplayer
964 {
965 Battery9V battery = GetBattery();
966 if (battery)
967 {
968 if (GetCompEM().IsWorking() && battery.GetCompEM().GetEnergy() <= 0)
969 {
970 GetCompEM().SwitchOff();
971 m_CodeLockComponent.SetLockState(false, false);
972 }
973
974 float energyPercent = GetBatteryEnergy();
975 if (m_VisualManager.HasBatteryLevelChanged())
976 {
978 SetSynchDirty();
979 }
980 }
981 }
982 }
983
985 void UnlockOnServer(EntityAI parent)
986 {
987 InventoryLocation inventoryLocation = new InventoryLocation;
988 GetInventory().GetCurrentInventoryLocation(inventoryLocation);
989
990 //drop entity from attachment slot
991 if (g_Game.IsMultiplayer())
992 {
993 parent.GetInventory().DropEntity(InventoryMode.SERVER, parent, this);
994 }
995 else
996 {
997 parent.GetInventory().DropEntity(InventoryMode.LOCAL, parent, this);
998 }
999
1000 vector groundPos;
1001 string slotName = InventorySlots.GetSlotName(inventoryLocation.GetSlot());
1002 if (parent.MemoryPointExists(slotName))
1003 {
1004 groundPos = parent.ModelToWorld(parent.GetMemoryPointPos(slotName));
1005 }
1006 else
1007 {
1008 groundPos = GetPosition();
1009 }
1010
1011 SetPosition(groundPos);
1012 PlaceOnSurface();
1013 }
1014
1016 {
1017 Battery9V battery = Battery9V.Cast(GetInventory().FindAttachment(Battery9V.SLOT_ID));
1018 return battery;
1019 }
1020
1021 bool CanBeLocked()
1022 {
1023 return true;
1024 }
1025
1026 bool CanBeUnlocked()
1027 {
1028 return true;
1029 }
1030
1031 bool CanSetCode()
1032 {
1033 return true;
1034 }
1035
1036 bool HasBattery()
1037 {
1038 return GetBattery() != null;
1039 }
1040
1041 bool NeedBattery()
1042 {
1043 return true;
1044 }
1045
1046 bool HasEnergy()
1047 {
1048 return GetCompEM().IsWorking();
1049 }
1050
1051 bool HasPIN()
1052 {
1053 return m_CodeLockComponent.HasPIN();
1054 }
1055
1056 string GetInputPIN()
1057 {
1058 return m_CodeLockComponent.GetInputPIN();
1059 }
1060
1061 string GetLockPIN()
1062 {
1063 return m_CodeLockComponent.GetLockPIN();
1064 }
1065
1066 void ResetPIN()
1067 {
1068 m_CodeLockComponent.ResetPIN();
1069 }
1070
1071 void SetLockState(bool state)
1072 {
1073 m_CodeLockComponent.SetLockState(state);
1074 }
1075
1077 {
1078 return m_CodeLockComponent;
1079 }
1080
1081 bool IsLocked()
1082 {
1083 return m_CodeLockComponent.IsLocked();
1084 }
1085
1087 {
1088 return m_CodeLockComponent.GetStage();
1089 }
1090
1092 {
1093 return m_CodeLockComponent.HasBruteForceProtection();
1094 }
1095
1097 {
1098 return m_CodeLockComponent.ShouldHandleBruteForce();
1099 }
1100
1101 int GetWrongCodeCount()
1102 {
1103 return m_CodeLockComponent.GetWrongCodeCount();
1104 }
1105
1107 {
1108 return m_CodeLockComponent.GetMinLockPINLength();
1109 }
1110
1111 bool GetReversedState()
1112 {
1113 return m_Reversed;
1114 }
1115
1118 bool IsPlayerOnBackside(PlayerBase player)
1119 {
1120 if (!player)
1121 return false;
1122
1123 if (!MemoryPointExists(MEMPOINT_CENTER) || !MemoryPointExists(MEMPOINT_INSIDE))
1124 return false;
1125
1126 bool playerOnInsideSide = MiscGameplayFunctions.MemPointDirectionalCheck(player, this, MEMPOINT_CENTER, MEMPOINT_INSIDE);
1127
1128 return playerOnInsideSide != GetReversedState();
1129 }
1130
1131 bool HasValidParent()
1132 {
1133 EntityAI hierarchyParent = GetHierarchyRoot();
1134 if (hierarchyParent.CanUseConstruction())
1135 return true;
1136
1137 if (BroadcastedBunker.Cast(hierarchyParent))
1138 return true;
1139
1140 return false;
1141 }
1142
1144 {
1145 return m_VisualManager;
1146 }
1147
1148 float GetBatteryEnergy()
1149 {
1150 Battery9V battery = GetBattery();
1151 if (!battery)
1152 return 0.0;
1153
1154 float energy = battery.GetCompEM().GetEnergy();
1155 float energyMax = battery.GetCompEM().GetEnergyMax();
1156
1157 if (energyMax <= 0)
1158 return 0.0;
1159
1160 return (energy / energyMax) * 100.0;
1161 }
1162
1163 void UpdateVisuals()
1164 {
1165 if (m_VisualManager)
1166 m_VisualManager.UpdateVisuals();
1167 }
1168
1170 {
1171 if (m_VisualManager)
1172 {
1173 m_VisualManager.MarkDirty();
1174 m_VisualManager.UpdateVisuals();
1175 }
1176 }
1177
1178 override void SetActions()
1179 {
1180 super.SetActions();
1181
1183 }
1184
1185 override void OnRPC(PlayerIdentity sender, int rpc_type,ParamsReadContext ctx)
1186 {
1187 super.OnRPC(sender, rpc_type, ctx);
1188
1189 m_CodeLockComponent.OnRPC(sender, rpc_type, ctx);
1190 }
1191
1192 override void OnStoreSave(ParamsWriteContext ctx)
1193 {
1194 super.OnStoreSave(ctx);
1195
1196 m_CodeLockComponent.OnStoreSave(ctx);
1197 }
1198
1199 override bool OnStoreLoad(ParamsReadContext ctx, int version)
1200 {
1201 if (!super.OnStoreLoad(ctx, version))
1202 return false;
1203
1204 if (!m_CodeLockComponent.OnStoreLoad(ctx, version))
1205 return false;
1206
1207 return true;
1208 }
1209
1210 override void AfterStoreLoad()
1211 {
1212 super.AfterStoreLoad();
1213
1214 if (HasBattery())
1215 {
1216 if (HasPIN())
1217 {
1218 m_CodeLockComponent.SetStage(CodeLockStage.NORMAL);
1219 }
1220 else
1221 {
1222 m_CodeLockComponent.SetStage(CodeLockStage.SETTING);
1223 }
1224 }
1225
1227 }
1228
1229 override void EEHealthLevelChanged(int oldLevel, int newLevel, string zone)
1230 {
1231 super.EEHealthLevelChanged(oldLevel,newLevel,zone);
1232
1234 }
1235
1236 override void OnVariablesSynchronized()
1237 {
1238 super.OnVariablesSynchronized();
1239
1241 {
1242 CodeLockUIAction uiAction = m_CodeLockComponent.GetUIAction();
1243 if (uiAction != CodeLockUIAction.NONE)
1244 {
1245 m_CodeLockComponent.CheckUIActionClient();
1246 }
1247 }
1248 }
1249
1250 override bool IsExternalLockType()
1251 {
1252 return true;
1253 }
1254
1255 override void InitItemSounds()
1256 {
1257 super.InitItemSounds();
1258
1259 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_ACCESS, CODELOCK_ACCESS_SOUND);
1260 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_LOCK, CODELOCK_LOCK_SOUND);
1261 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_UNLOCK, CODELOCK_UNLOCK_SOUND);
1262 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_ERROR, CODELOCK_ERROR_SOUND);
1263 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_CONFIRM_INPUT, CODELOCK_CONFIRM_SOUND);
1264 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_CLEAR_INPUT, CODELOCK_CLEAR_SOUND);
1265 GetItemSoundHandler().AddSound(SoundConstants.ITEM_DIGITAL_LOCK_DIGIT_INPUT, CODELOCK_DIGITS_SOUND);
1266 }
1267
1268 //Debug menu Spawn Ground Special
1269 override void OnDebugSpawn()
1270 {
1271 GetInventory().CreateInInventory("Battery9V");
1272 }
1273}
1274
1275class DigitalCodeLock_Bunker : DigitalCodeLock
1276{
1277 override void Init()
1278 {
1279 super.Init();
1280
1281 BunkerBroadcastConfigInstance bunkerConfig = CfgBunkerBroadcastHandler.GetData();
1282 int pinCodeLength = CodeLockComponent.MIN_LOCK_PIN_LENGTH;
1283
1284 if (bunkerConfig && bunkerConfig.bunkerSettings)
1285 {
1287 pinCodeLength = bunkerConfig.bunkerSettings.lockCodeLength;
1288 if (pinCodeLength > CodeLockComponent.MAX_LOCK_PIN_LENGTH)
1289 pinCodeLength = CodeLockComponent.MAX_LOCK_PIN_LENGTH;
1290 }
1291
1292 m_CodeLockComponent.SetMinimalPinCodeLength(pinCodeLength);
1293 }
1294
1295 override bool CanBeLocked()
1296 {
1297 return false;
1298 }
1299
1300 override bool CanSetCode()
1301 {
1302 return false;
1303 }
1304
1305 override bool CanDetachAttachment(EntityAI parent)
1306 {
1307 return false;
1308 }
1309
1311 override void OnWasDetached(EntityAI parent, int slot_id) {}
1312
1313 override bool NeedBattery()
1314 {
1315 return false;
1316 }
1317
1318 override bool HasBattery()
1319 {
1320 return true;
1321 }
1322
1323 override bool HasEnergy()
1324 {
1325 return true;
1326 }
1327
1328 override bool ShowZonesHealth()
1329 {
1330 return true;
1331 }
1332
1333 bool SetLockCode(string pin)
1334 {
1335 return m_CodeLockComponent.SetLockCode(pin);
1336 }
1337
1338 void Disable()
1339 {
1340 m_CodeLockComponent.SetStage(CodeLockStage.NONE);
1341 SetAnimationPhase(CodeLockVisualManager.CODELOCK_ANIMATED_GREEN_LIGHT, 1.0);
1342 SetAnimationPhase(CodeLockVisualManager.CODELOCK_ANIMATED_RED_LIGHT, 1.0);
1343 }
1344}
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