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

◆ ActionCondition()

override bool GetInputType::ActionCondition ( PlayerBase player,
ActionTarget target,
ItemBase item )

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

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