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

◆ DismantleCondition()

bool ActionDismantlePart::DismantleCondition ( PlayerBase player,
ActionTarget target,
ItemBase item,
bool camera_check )
inlineprotected

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

145 {
146 if (player && !player.IsPlacingLocal() && !player.IsPlacingServer())
147 {
148 Object targetObject = target.GetObject();
149 EntityAI targetEntity;
150 if (targetObject && targetObject.CanUseConstruction())
151 {
152 //invalid if is gate and is locked
153 if (Class.CastTo(targetEntity, targetObject) && (targetEntity.FindAttachmentBySlotName("Att_CombinationLock") || targetEntity.FindAttachmentBySlotName("Material_FPole_Flag")) )
154 return false;
155
156 string partName = targetObject.GetActionComponentName(target.GetComponentIndex());
157
158 BaseBuildingBase baseBuilding = BaseBuildingBase.Cast(targetObject);
159 Construction construction = baseBuilding.GetConstruction();
160 ConstructionPart constructionPart = construction.GetConstructionPartToDismantle(partName, item);
161
162 if (constructionPart)
163 {
164
165 //invalid on gate if the gate is opened
166 if (constructionPart.IsGate() && baseBuilding.IsOpened())
167 return false;
168
169 //camera and position checks
170 bool checked = false;
171
172 if (constructionPart.IsBase())
173 checked = true;
174
175 if (!checked && baseBuilding.IsPlayerInside(player, partName))
176 {
177 //Camera check (client-only)
178 if (camera_check)
179 {
180 if (GetGame() && (!GetGame().IsDedicatedServer()))
181 {
182 if (baseBuilding.IsFacingCamera(partName))
183 return false;
184 }
185 }
186
187 checked = true;
188 }
189
190 if (checked)
191 {
192 ConstructionActionData constructionActionData = player.GetConstructionActionData();
193 constructionActionData.SetTargetPart(constructionPart);
194
195 return true;
196 }
197 }
198 }
199 }
200
201 return false;
202 }
class LogManager EntityAI
void BaseBuildingBase()
Определения BaseBuildingBase.c:1328
void Construction(BaseBuildingBase parent)
Определения Construction.c:26
override bool IsPlayerInside(PlayerBase player, string selection)
Определения Fence.c:615
override bool IsOpened()
Определения Fence.c:110
override bool IsFacingCamera(string selection)
Определения Fence.c:678
void SetTargetPart(ConstructionPart target_part)
Определения ConstructionActionData.c:88
bool IsGate()
Определения ConstructionPart.c:70
bool IsBase()
Определения ConstructionPart.c:65
class LOD Object
proto native CGame GetGame()

Перекрестные ссылки ActionTarget, Class::CastTo(), Construction(), GetGame(), ConstructionPart::IsBase(), BaseBuildingBase::IsFacingCamera(), ConstructionPart::IsGate(), BaseBuildingBase::IsOpened(), BaseBuildingBase::IsPlayerInside() и ConstructionActionData::SetTargetPart().

Используется в ActionCondition() и ActionConditionContinue().