67 if (player.IsPlacingLocal() || player.IsPlacingServer())
71 if (player.GetBrokenLegs() ==
eBrokenLegs.BROKEN_LEGS)
75 if (target.GetObject() && (!target.GetObject().CanUseConstructionBuild() || target.GetObject().CanUseHandConstruction()))
78 if ((!
GetGame().IsDedicatedServer()))
80 if (MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item,
m_VariantID))
92 Construction construction = base_building.GetConstruction();
93 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
96 check_data.m_PartName = part_name;
97 check_data.m_AdditionalExcludes.
Insert(action_data.m_Player);
99 bool canBuild = construction.CanBuildPart(part_name, action_data.m_MainItem,
true);
102 bool collides = construction.IsCollidingEx(check_data);
104 return !collides && canBuild;
115 Construction construction = base_building.GetConstruction();
117 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
120 check_data.m_PartName = part_name;
121 check_data.m_AdditionalExcludes.
Insert(action_data.m_Player);
123 if (!construction.IsCollidingEx(check_data) && construction.CanBuildPart(part_name, action_data.m_MainItem,
true))
126 construction.BuildPartServer(action_data.m_Player, part_name,
AT_BUILD_PART);
134 return "Base_building";
139 BuildPartActionData action_data =
new BuildPartActionData;
146 if (super.SetupAction(player, target, item, action_data, extra_data))
150 if (!
GetGame().IsDedicatedServer())
185 super.WriteToContext(ctx, action_data);
187 ctx.
Write(BuildPartActionData.Cast(action_data).m_PartType);
193 super.ReadFromContext(ctx, action_recive_data);
196 if (ctx.
Read(part_type))
209 super.HandleReciveData(action_recive_data, action_data);
217 string partName = BuildPartActionData.Cast(action_data).m_PartType;
219 string message =
string.Format(
"Built %1 on %2 with %3", partName, action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName());
BuildPartActionReciveData m_PartType
override bool HasProgress()
override bool UseMainItem()
class ActionTargets ActionTarget
void CollisionCheckData()
void Construction(BaseBuildingBase parent)
ref CCIBase m_ConditionItem
ref CCTBase m_ConditionTarget
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
override bool CanBeUsedInFreelook()
override bool CanBeUsedLeaning()
override void CreateConditionComponents()
override string GetSoundCategory(ActionData action_data)
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
void SetBuildingAnimation(ItemBase item)
override bool ActionConditionContinue(ActionData action_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
override ActionData CreateActionData()
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
override string GetAdminLogMessage(ActionData action_data)
override void OnFinishProgressServer(ActionData action_data)
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
float SetCallbackDuration(ItemBase item)
override void CreateActionComponent()
bool HasAlternativeInterrupt()
void ActionContinuousBase()
ConstructionPart GetBuildPartAtIndex(int idx)
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
proto bool Write(void value_out)
proto bool Read(void value_in)
const float BASEBUILDING_CONSTRUCT_MEDIUM
DayZPlayerConstants
defined in C++
Serializer ParamsReadContext
proto native CGame GetGame()
Serializer ParamsWriteContext
proto void Insert(int index, string input)
Inserts a string into the n-th index, increasing the string length by the size of the input.