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

◆ CanBeUsedInFreelook()

override bool GetInputType::CanBeUsedInFreelook ( )

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

260 : ActionReciveData
261{
262 string m_PartType;
263}
264
265class BuildPartActionData : ActionData
266{
267 string m_PartType;
268};
269
271{
272 override void CreateActionComponent()
273 {
274 float time = SetCallbackDuration(m_ActionData.m_MainItem);
275 m_ActionData.m_ActionComponent = new CAContinuousTime(time);
276 }
277
278 float SetCallbackDuration(ItemBase item)
279 {
280 return UATimeSpent.BASEBUILDING_CONSTRUCT_MEDIUM;
281 }
282};
283
285{
286 void ActionBuildPart()
287 {
288 m_CallbackClass = ActionBuildPartCB;
289 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
290 m_FullBody = true;
291 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
292
293 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
294 m_Text = "#build";
295 }
296
297 override void CreateConditionComponents()
298 {
299 m_ConditionItem = new CCINonRuined;
300 m_ConditionTarget = new CCTNone;
301 }
302
303 override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
304 {
305 ConstructionActionData construction_action_data = player.GetConstructionActionData();
306 ConstructionPart constrution_part = construction_action_data.GetBuildPartAtIndex(m_VariantID);
307
308 if (constrution_part)
309 {
310 m_Text = "#build " + constrution_part.GetName();
311 }
312 }
313
314 override bool CanBeUsedLeaning()
315 {
316 return false;
317 }
318
319 override bool CanBeUsedInFreelook()
320 {
321 return false;
322 }
323
324 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
325 {
326 if (player.IsPlacingLocal() || player.IsPlacingServer())
327 return false;
328
329 //Action not allowed if player has broken legs
330 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
331 return false;
332
333 //gate..
334 if (target.GetObject() && (!target.GetObject().CanUseConstructionBuild() || target.GetObject().CanUseHandConstruction()))
335 return false;
336
337 if ((!GetGame().IsDedicatedServer()))
338 {
339 if (MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item, m_VariantID))
340 {
341 return true;
342 }
343 return false;
344 }
345 return true;
346 }
347
348 override bool ActionConditionContinue(ActionData action_data)
349 {
350 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
351 Construction construction = base_building.GetConstruction();
352 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
353 CollisionCheckData check_data = new CollisionCheckData;
354
355 check_data.m_PartName = part_name;
356 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
357
358 bool canBuild = construction.CanBuildPart(part_name, action_data.m_MainItem, true);
359 if (GetGame().IsServer())
360 {
361 bool collides = construction.IsCollidingEx(check_data);
362
363 return !collides && canBuild;
364 }
365 else
366 {
367 return canBuild;
368 }
369 }
370
371 override void OnFinishProgressServer(ActionData action_data)
372 {
373 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
374 Construction construction = base_building.GetConstruction();
375
376 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
377 CollisionCheckData check_data = new CollisionCheckData;
378
379 check_data.m_PartName = part_name;
380 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
381
382 if (!construction.IsCollidingEx(check_data) && construction.CanBuildPart(part_name, action_data.m_MainItem, true)) //redundant at this point?
383 {
384 //build
385 construction.BuildPartServer(action_data.m_Player, part_name, AT_BUILD_PART);
386 //add damage to tool
387 action_data.m_MainItem.DecreaseHealth(UADamageApplied.BUILD, false);
388 }
389 }
390
391 override string GetSoundCategory(ActionData action_data)
392 {
393 return "Base_building";
394 }
395
397 {
398 BuildPartActionData action_data = new BuildPartActionData;
399 return action_data;
400 }
401
402 //setup
403 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL)
404 {
405 if (super.SetupAction(player, target, item, action_data, extra_data))
406 {
408
409 if (!GetGame().IsDedicatedServer())
410 {
411 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
412 BuildPartActionData.Cast(action_data).m_PartType = construction_action_data.GetBuildPartAtIndex(m_VariantID).GetPartName();
413 }
414 return true;
415 }
416
417 return false;
418 }
419
420 protected void SetBuildingAnimation(ItemBase item)
421 {
422 switch (item.Type())
423 {
424 case Pickaxe:
425 case Shovel:
426 case FarmingHoe:
427 case FieldShovel:
428 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DIG;
429 break;
430 case Pliers:
431 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
432 break;
433 case SledgeHammer:
434 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_MINEROCK;
435 break;
436 default:
437 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
438 break;
439 }
440 }
441
442 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
443 {
444 super.WriteToContext(ctx, action_data);
445
446 ctx.Write(BuildPartActionData.Cast(action_data).m_PartType);
447 }
448
449 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
450 {
451 action_recive_data = new BuildPartActionReciveData;
452 super.ReadFromContext(ctx, action_recive_data);
453
454 string part_type;
455 if (ctx.Read(part_type))
456 {
457 BuildPartActionReciveData.Cast(action_recive_data).m_PartType = part_type;
458 return true;
459 }
460 else
461 {
462 return false;
463 }
464 }
465
466 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
467 {
468 super.HandleReciveData(action_recive_data, action_data);
469
470 BuildPartActionData.Cast(action_data).m_PartType = BuildPartActionReciveData.Cast(action_recive_data).m_PartType;
471 }
472
473 override string GetAdminLogMessage(ActionData action_data)
474 {
475 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
476 string partName = BuildPartActionData.Cast(action_data).m_PartType;
477
478 string message = string.Format("Built %1 on %2 with %3", partName, action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName());
479 return message;
480 }
481}
482
483class ActionActionBuildPartNoTool: ActionBuildPart
484{
485 override typename GetInputType()
486 {
487 return ContinuousInteractActionInput;
488 }
489
490 override bool UseMainItem()
491 {
492 return false;
493 }
494
495 override bool HasProgress()
496 {
497 return true;
498 }
499
500 override bool HasAlternativeInterrupt()
501 {
502 return false;
503 }
504}
const int AT_BUILD_PART
Определения _constants.c:6
ActionBase ActionData
Определения ActionBase.c:30
BuildPartActionReciveData m_PartType
override bool HasProgress()
Определения ActionBuildPart.c:236
override bool UseMainItem()
Определения ActionBuildPart.c:231
class ActionTargets ActionTarget
void BaseBuildingBase()
Определения BaseBuildingBase.c:1328
void CollisionCheckData()
Определения Construction.c:1329
void Construction(BaseBuildingBase parent)
Определения Construction.c:26
eBrokenLegs
Определения EBrokenLegs.c:2
class GP5GasMask extends MaskBase ItemBase
float m_SpecialtyWeight
Определения ActionBase.c:77
int m_StanceMask
Определения ActionBase.c:62
string m_Text
Определения ActionBase.c:58
int m_VariantID
Определения ActionBase.c:68
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
bool m_FullBody
Определения ActionBase.c:61
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
ActionData m_ActionData
Определения AnimatedActionBase.c:3
void ActionBuildPart()
Определения ActionBuildPart.c:27
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionBuildPart.c:144
override bool CanBeUsedInFreelook()
Определения ActionBuildPart.c:60
override bool CanBeUsedLeaning()
Определения ActionBuildPart.c:55
override void CreateConditionComponents()
Определения ActionBuildPart.c:38
override string GetSoundCategory(ActionData action_data)
Определения ActionBuildPart.c:132
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionBuildPart.c:190
void SetBuildingAnimation(ItemBase item)
Определения ActionBuildPart.c:161
override bool ActionConditionContinue(ActionData action_data)
Определения ActionBuildPart.c:89
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBuildPart.c:65
override ActionData CreateActionData()
Определения ActionBuildPart.c:137
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionBuildPart.c:183
override string GetAdminLogMessage(ActionData action_data)
Определения ActionBuildPart.c:214
override void OnFinishProgressServer(ActionData action_data)
Определения ActionBuildPart.c:112
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionBuildPart.c:207
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBuildPart.c:44
float SetCallbackDuration(ItemBase item)
Определения ActionBuildPart.c:19
override void CreateActionComponent()
Определения ActionBuildPart.c:13
override GetInputType()
Определения ActionContinuousBase.c:179
bool HasAlternativeInterrupt()
Определения ActionContinuousBase.c:147
int m_CommandUID
Определения AnimatedActionBase.c:143
ConstructionPart GetBuildPartAtIndex(int idx)
Определения ConstructionActionData.c:184
string GetPartName()
Определения ConstructionPart.c:30
string GetName()
Определения ConstructionPart.c:24
proto bool Write(void value_out)
proto bool Read(void value_in)
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
Serializer ParamsWriteContext
Определения gameplay.c:16
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.