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

◆ ActionConditionContinue()

override bool GetInputType::ActionConditionContinue ( ActionData action_data)

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

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