24 if ( entity_for_placing.IsBasebuildingKit() )
37 vector ground_position = position;
38 ground_position[1] =
GetGame().
SurfaceY(ground_position[0],ground_position[2]);
42 if ( entity_for_placing.GetInventory().GetCurrentInventoryLocation( source ) )
44 destination.
SetGroundEx( entity_for_placing, position, direction );
50 if ( entity_for_placing.GetInventory().GetCurrentInventoryLocation( source ) )
52 destination.
SetGroundEx( entity_for_placing, ground_position, direction );
93 return "#deploy_object";
102 if (player.m_BrokenLegState ==
eBrokenLegs.BROKEN_LEGS)
105 if ( player.IsPlacingLocal() )
107 if ( !player.GetHologramLocal().IsColliding() )
109 if ( item.
CanBePlaced(player, player.GetHologramLocal().GetProjectionEntity().GetPosition()) )
140 if (action_data.
m_Player.IsPlacingServer())
143 if ( !action_data.
m_Player.GetHologramServer().IsColliding() )
158 PlaceObjectActionData action_data =
new PlaceObjectActionData;
164 if ( super.SetupAction(player, target, item, action_data, extra_data ))
166 PlaceObjectActionData poActionData;
167 poActionData = PlaceObjectActionData.Cast(action_data);
168 poActionData.m_AlreadyPlaced =
false;
171 Hologram hologram = player.GetHologramLocal();
174 poActionData.m_Position = player.GetHologramLocal().GetProjectionPosition();
175 poActionData.m_Orientation = player.GetHologramLocal().GetProjectionOrientation();
177 poActionData.m_Player.SetLocalProjectionPosition( poActionData.m_Position );
178 poActionData.m_Player.SetLocalProjectionOrientation( poActionData.m_Orientation );
186 if ( !action_data.m_MainItem )
197 PlaceObjectActionData poActionData;
198 poActionData = PlaceObjectActionData.Cast(action_data);
200 if ( !poActionData ) {
return; }
203 action_data.
m_Player.PlacingCompleteLocal();
208 if (
GetGame().IsMultiplayer() )
210 PlaceObjectActionData poActionData;
211 poActionData = PlaceObjectActionData.Cast(action_data);
213 if ( !poActionData ) {
return; }
216 poActionData.m_Player.SetLocalProjectionPosition( poActionData.m_Position );
217 poActionData.m_Player.SetLocalProjectionOrientation( poActionData.m_Orientation );
221 poActionData.m_Player.PlacingStartServer(action_data.
m_MainItem);
224 action_data.
m_MainItem.SetIsBeingPlaced(
true );
231 action_data.
m_Player.GetHologramLocal().SetUpdatePosition(
false );
232 action_data.
m_MainItem.SetIsBeingPlaced(
true );
238 PlaceObjectActionData poActionData;
239 poActionData = PlaceObjectActionData.Cast(action_data);
241 if ( !poActionData ) {
return; }
244 vector position = action_data.
m_Player.GetLocalProjectionPosition();
245 vector orientation = action_data.
m_Player.GetLocalProjectionOrientation();
247 poActionData.m_AlreadyPlaced =
true;
249 entity_for_placing.OnPlacementComplete( action_data.
m_Player, position, orientation);
254 PlaceObjectActionData poActionData;
255 poActionData = PlaceObjectActionData.Cast(action_data);
257 if ( !poActionData ) {
return; }
261 vector position = action_data.
m_Player.GetLocalProjectionPosition();
262 vector orientation = action_data.
m_Player.GetLocalProjectionOrientation();
265 if (action_data.
m_Player.GetHologramServer().IsColliding())
270 action_data.
m_Player.GetHologramServer().PlaceEntity( entity_for_placing );
272 if (
GetGame().IsMultiplayer() )
273 action_data.
m_Player.GetHologramServer().CheckPowerSource();
275 action_data.
m_Player.PlacingCompleteServer();
276 entity_for_placing.OnPlacementComplete( action_data.
m_Player, position, orientation );
280 action_data.
m_MainItem.SetIsBeingPlaced(
false );
282 poActionData.m_AlreadyPlaced =
true;
283 action_data.
m_MainItem.SoundSynchRemoteReset();
288 PlaceObjectActionData poActionData;
289 poActionData = PlaceObjectActionData.Cast(action_data);
290 if ( !poActionData.m_AlreadyPlaced )
293 action_data.
m_Player.PlacingCancelLocal();
294 action_data.
m_Player.PredictiveTakeEntityToHands( entity_for_placing );
295 action_data.
m_Player.LockHandsUntilItemHeld();
304 PlaceObjectActionData poActionData;
305 poActionData = PlaceObjectActionData.Cast(action_data);
306 if ( !poActionData.m_AlreadyPlaced )
310 action_data.
m_MainItem.SetIsBeingPlaced(
false );
312 if (
GetGame().IsMultiplayer() )
314 action_data.
m_Player.PlacingCancelServer();
316 action_data.
m_MainItem.SoundSynchRemoteReset();
321 action_data.
m_Player.PlacingCancelLocal();
322 action_data.
m_Player.PlacingCancelServer();
327 if ( action_data.
m_MainItem.GetInventory().GetCurrentInventoryLocation( source ) )
330 action_data.
m_Player.GetDayZPlayerInventory().RedirectToHandEvent(
InventoryMode.LOCAL, source, destination);
340 action_data.
m_MainItem.SetIsDeploySound(
false );
341 action_data.
m_MainItem.SetIsPlaceSound(
false );
342 action_data.
m_MainItem.SoundSynchRemoteReset();
359 if ( action_data.
m_Player.GetItemInHands() )
371 super.WriteToContext(ctx, action_data);
373 PlaceObjectActionData poActionData;
374 poActionData = PlaceObjectActionData.Cast(action_data);
376 ctx.
Write( poActionData.m_Position );
377 ctx.
Write( poActionData.m_Orientation );
382 if(!action_recive_data)
386 super.ReadFromContext(ctx, action_recive_data );
389 vector entity_position =
"0 0 0";
390 vector entity_orientation =
"0 0 0";
391 if (!ctx.
Read(entity_position))
393 if (!ctx.
Read(entity_orientation))
404 super.HandleReciveData(action_recive_data, action_data);
407 PlaceObjectActionData action_data_po = PlaceObjectActionData.Cast(action_data);
409 action_data_po.m_Position = recive_data_po.
m_Position;
418 vector rotation_matrix[3];
426 if ( entity_for_placing.GetInventory().GetCurrentInventoryLocation( source ) )
428 destination.
SetGroundEx( entity_for_placing, position, direction );
430 if (
GetGame().IsMultiplayer() )
432 action_data.
m_Player.ServerTakeToDst(source, destination);
451 if ( item.IsHeavyBehaviour() )
455 else if ( item.IsOneHandedBehaviour() )
459 else if ( item.IsTwoHandedBehaviour() )
465 Print(
"Error: check " + item +
" behaviour");
470 if ( item.IsHeavyBehaviour() )
474 else if ( item.IsOneHandedBehaviour() )
478 else if ( item.IsTwoHandedBehaviour() )
484 Print(
"Error: check " + item +
" behaviour");