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 ((!
g_Game.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 (!
g_Game.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
ref CCIBase m_ConditionItem
ref CCTBase m_ConditionTarget
float SetCallbackDuration(ItemBase item)
override void CreateActionComponent()
override void OnFinishProgressServer(ActionData action_data)
override bool CanBeUsedLeaning()
override bool ActionConditionContinue(ActionData action_data)
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
void SetBuildingAnimation(ItemBase item)
override string GetAdminLogMessage(ActionData action_data)
override ActionData CreateActionData()
override bool CanBeUsedInFreelook()
override void CreateConditionComponents()
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
override string GetSoundCategory(ActionData action_data)
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
bool HasAlternativeInterrupt()
void ActionContinuousBase()
ConstructionPart GetBuildPartAtIndex(int idx)
Base Param Class with no parameters.
proto bool Write(void value_out)
proto bool Read(void value_in)
const float BASEBUILDING_CONSTRUCT_MEDIUM
void CollisionCheckData()
void Construction(BaseBuildingBase parent)
DayZPlayerConstants
defined in C++
Serializer ParamsReadContext
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.