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

◆ OnFinishProgressServer()

override void GetInputType::OnFinishProgressServer ( ActionData action_data)

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

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