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

◆ CreateActionData()

override ActionData GetInputType::CreateActionData ( )

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

337 : ActionReciveData
338{
339 string m_PartType;
340}
341
342class BuildPartActionData : ActionData
343{
344 string m_PartType;
345};
346
348{
349 override void CreateActionComponent()
350 {
351 float time = SetCallbackDuration(m_ActionData.m_MainItem);
352 m_ActionData.m_ActionComponent = new CAContinuousTime(time);
353 }
354
355 float SetCallbackDuration(ItemBase item)
356 {
357 return UATimeSpent.BASEBUILDING_CONSTRUCT_MEDIUM;
358 }
359};
360
362{
363 void ActionBuildPart()
364 {
365 m_CallbackClass = ActionBuildPartCB;
366 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
367 m_FullBody = true;
368 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
369
370 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
371 m_Text = "#build";
372 }
373
374 override void CreateConditionComponents()
375 {
376 m_ConditionItem = new CCINonRuined;
377 m_ConditionTarget = new CCTNone;
378 }
379
380 override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
381 {
382 ConstructionActionData construction_action_data = player.GetConstructionActionData();
383 ConstructionPart constrution_part = construction_action_data.GetBuildPartAtIndex(m_VariantID);
384
385 if (constrution_part)
386 {
387 m_Text = "#build " + constrution_part.GetName();
388 }
389 }
390
391 override bool CanBeUsedLeaning()
392 {
393 return false;
394 }
395
396 override bool CanBeUsedInFreelook()
397 {
398 return false;
399 }
400
401 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
402 {
403 if (player.IsPlacingLocal() || player.IsPlacingServer())
404 return false;
405
406 //Action not allowed if player has broken legs
407 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
408 return false;
409
410 //gate..
411 if (target.GetObject() && (!target.GetObject().CanUseConstructionBuild() || target.GetObject().CanUseHandConstruction()))
412 return false;
413
414 if ((!GetGame().IsDedicatedServer()))
415 {
416 if (MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item, m_VariantID))
417 {
418 return true;
419 }
420 return false;
421 }
422 return true;
423 }
424
425 override bool ActionConditionContinue(ActionData action_data)
426 {
427 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
428 Construction construction = base_building.GetConstruction();
429 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
430 CollisionCheckData check_data = new CollisionCheckData;
431
432 check_data.m_PartName = part_name;
433 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
434
435 bool canBuild = construction.CanBuildPart(part_name, action_data.m_MainItem, true);
436 if (GetGame().IsServer())
437 {
438 bool collides = construction.IsCollidingEx(check_data);
439
440 return !collides && canBuild;
441 }
442 else
443 {
444 return canBuild;
445 }
446 }
447
448 override void OnFinishProgressServer(ActionData action_data)
449 {
450 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
451 Construction construction = base_building.GetConstruction();
452
453 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
454 CollisionCheckData check_data = new CollisionCheckData;
455
456 check_data.m_PartName = part_name;
457 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
458
459 if (!construction.IsCollidingEx(check_data) && construction.CanBuildPart(part_name, action_data.m_MainItem, true)) //redundant at this point?
460 {
461 //build
462 construction.BuildPartServer(action_data.m_Player, part_name, AT_BUILD_PART);
463 //add damage to tool
464 action_data.m_MainItem.DecreaseHealth(UADamageApplied.BUILD, false);
465 }
466 }
467
468 override string GetSoundCategory(ActionData action_data)
469 {
470 return "Base_building";
471 }
472
474 {
475 BuildPartActionData action_data = new BuildPartActionData;
476 return action_data;
477 }
478
479 //setup
480 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL)
481 {
482 if (super.SetupAction(player, target, item, action_data, extra_data))
483 {
485
486 if (!GetGame().IsDedicatedServer())
487 {
488 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
489 BuildPartActionData.Cast(action_data).m_PartType = construction_action_data.GetBuildPartAtIndex(m_VariantID).GetPartName();
490 }
491 return true;
492 }
493
494 return false;
495 }
496
497 protected void SetBuildingAnimation(ItemBase item)
498 {
499 switch (item.Type())
500 {
501 case Pickaxe:
502 case Shovel:
503 case FarmingHoe:
504 case FieldShovel:
505 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DIG;
506 break;
507 case Pliers:
508 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
509 break;
510 case SledgeHammer:
511 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_MINEROCK;
512 break;
513 default:
514 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
515 break;
516 }
517 }
518
519 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
520 {
521 super.WriteToContext(ctx, action_data);
522
523 ctx.Write(BuildPartActionData.Cast(action_data).m_PartType);
524 }
525
526 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
527 {
528 action_recive_data = new BuildPartActionReciveData;
529 super.ReadFromContext(ctx, action_recive_data);
530
531 string part_type;
532 if (ctx.Read(part_type))
533 {
534 BuildPartActionReciveData.Cast(action_recive_data).m_PartType = part_type;
535 return true;
536 }
537 else
538 {
539 return false;
540 }
541 }
542
543 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
544 {
545 super.HandleReciveData(action_recive_data, action_data);
546
547 BuildPartActionData.Cast(action_data).m_PartType = BuildPartActionReciveData.Cast(action_recive_data).m_PartType;
548 }
549
550 override string GetAdminLogMessage(ActionData action_data)
551 {
552 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
553 string partName = BuildPartActionData.Cast(action_data).m_PartType;
554
555 string message = string.Format("Built %1 on %2 with %3", partName, action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName());
556 return message;
557 }
558}
559
560class ActionActionBuildPartNoTool: ActionBuildPart
561{
562 override typename GetInputType()
563 {
564 return ContinuousInteractActionInput;
565 }
566
567 override bool UseMainItem()
568 {
569 return false;
570 }
571
572 override bool HasProgress()
573 {
574 return true;
575 }
576
577 override bool HasAlternativeInterrupt()
578 {
579 return false;
580 }
581}
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.