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

◆ UpdateTrapEnviroMask()

int InitCatchMethodMask::UpdateTrapEnviroMask ( )
protected

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

389{
394 protected float m_CumulativeTrappingSuccess;
395 protected int m_AttemptsCount;
396 protected ItemBase m_Bait;
397
398 override protected void DeserializeData(Param par)
399 {
401 if (Class.CastTo(p,par))
402 {
403 m_MainItem = p.param1;
404 m_AttemptsCount = p.param2;
405 }
406 }
407
408 override protected void CreateResultDataStructure()
409 {
411
412 super.CreateResultDataStructure();
413 }
414
415 override protected void ClearCatchingItemData()
416 {
417 super.ClearCatchingItemData();
418
420 m_QualityBaseMod = 0.0;
423 }
424
425 override protected void InitItemValues(EntityAI item)
426 {
427 //skip ruined or deleted items entirely
428 if (item.IsRuined() || item.IsSetForDeletion())
429 return;
430
431 string path = "" + CFG_VEHICLESPATH + " " + item.GetType() + " Trapping";
432 if (GetGame().ConfigIsExisting(path))
433 {
434 if (GetGame().ConfigIsExisting(path + " baitTypes") && GetGame().ConfigIsExisting(path + " baitTypeChances"))
435 {
440 int count = CachedObjectsArrays.ARRAY_INT.Count();
441 if (count == CachedObjectsArrays.ARRAY_FLOAT.Count())
442 {
443 int key;
444 float value;
445 for (int i = 0; i < count; i++)
446 {
449 if (!m_BaitCompatibilityMap.Contains(key) || (m_BaitCompatibilityMap.Get(key).m_BaseProbability < value))
450 {
451 m_BaitCompatibilityMap.Set(key,new BaitData(value,item));
452 }
453 }
454 }
455 else
456 {
457 ErrorEx("'baitTypes' and 'baitTypeChances' arrray counts of " + item.GetType() + " do not match!",ErrorExSeverity.INFO);
458 }
459 }
460 if (GetGame().ConfigIsExisting(path + " resultQuantityBaseMod"))
461 m_QualityBaseMod += GetGame().ConfigGetFloat(path + " resultQuantityBaseMod");
462 if (GetGame().ConfigIsExisting(path + " resultQuantityDispersionMin"))
463 m_QualityDispersionMinMod += GetGame().ConfigGetFloat(path + " resultQuantityDispersionMin");
464 if (GetGame().ConfigIsExisting(path + " resultQuantityDispersionMax"))
465 m_QualityDispersionMaxMod += GetGame().ConfigGetFloat(path + " resultQuantityDispersionMax");
466 }
467 }
468
471 {
472 float ret = 1.0;
473 ItemBase ib;
474 if (Class.CastTo(ib,item))
475 {
476 //ret *= ib.GetBaitEffectivity(); //disconnected for the Time Being
477 }
478
479 return ret;
480 }
481
482 override protected void InitCatchEnviroMask()
483 {
484 vector pos = m_MainItem.GetPosition();
485 if (GetGame().SurfaceIsSea(pos[0], pos[2]))
487 else if (GetGame().SurfaceIsPond( pos[0], pos[2]))
489 else
491 }
492
493 override protected void Init(Param par)
494 {
495 super.Init(par);
496
498 }
499
500 override protected void SetupInitialTypes()
501 {
502 #ifdef DEVELOPER
503 if (IsCLIParam("catchingLogs"))
504 {
505 Print("********************"); //just for debug purposes to track the start
506 Print("dbgTrapz | START");
507 Print("********************");
508 }
509 #endif
510
511 super.SetupInitialTypes();
512
513 #ifdef DEVELOPER
514 if (IsCLIParam("catchingLogs"))
515 {
516 Print("***"); //just for debug purposes to track the start
517 }
518 #endif
519 }
520
521 void UpdateDataAndMasks()
522 {
524 InitCatchMethodMask(); //bait check
525 //InitCatchEnviroMask(); //skipping, raycasts are unreliable outside network bubbles
528 }
529
531 {
533 return GetCatchEnviroMask();
534 }
535
536 void SetTrapEnviroMask(int value)
537 {
538 m_EnviroMask = value;
539 }
540
542 void UpdateUsedBait(ECatchingBaitCategories type)
543 {
544 m_Bait = null;
545 if (type != ECatchingBaitCategories.BAIT_TYPE_EMPTY)
546 {
547 BaitData dta = m_BaitCompatibilityMap.Get(type);
548 if (dta)
549 {
550 ItemBase potentialBait = ItemBase.Cast(dta.m_Owner);
551 if (potentialBait != m_MainItem)
552 m_Bait = potentialBait;
553 }
554 else
555 ErrorEx("failed to acquire BaitData from type: " + type);
556 }
557
558 #ifdef DEVELOPER
559 if (IsCLIParam("catchingLogs"))
560 {
561 if (m_Bait)
562 Print("dbgTrapz | UpdateUsedBait to: " + m_Bait + " | with base bait probability used: " + m_BaitCompatibilityMap.Get(type).m_BaseProbability);
563 else
564 Print("dbgTrapz | UpdateUsedBait to 'null'!");
565 }
566 #endif
567 }
568
569 override void UpdateBaseProbability(YieldItemBase yItem)
570 {
571 int baitType = ECatchingBaitCategories.BAIT_TYPE_EMPTY;
572 int usedType = -1;
573 float probability = -1;
574 float highestProbability = 0.0;
575 int count = m_BaitCompatibilityMap.Count();
576 for (int i = 0; i < count; i++)
577 {
578 baitType = m_BaitCompatibilityMap.GetKey(i);
579 probability = m_BaitCompatibilityMap.Get(baitType).m_BaseProbability * yItem.GetBaitTypeSensitivity(baitType);
580 if (probability > highestProbability)
581 {
582 highestProbability = probability;
583 usedType = baitType;
584 }
585 }
586
587 m_CumulativeTrappingSuccess = Math.Clamp(highestProbability,0,1);
588 #ifdef DEVELOPER
589 if (IsCLIParam("catchingLogs"))
590 {
591 //Print("********************");
592 Print("dbgTrapz | using bait type: " + baitType + " to catch: " + yItem);
593 }
594 #endif
595 UpdateUsedBait(usedType);
596
597 #ifdef DEVELOPER
598 if (IsCLIParam("catchingLogs"))
599 {
600 float dbgProb;
602 Print("dbgTrapz | starting catching of " + yItem + " | at probability: " + dbgProb + " | with target success: " + m_CumulativeTrappingSuccess);
603 }
604 #endif
605 }
606
607 override bool ModifySignalProbability(inout float probability)
608 {
609 probability = 1 - Math.Pow((1 - m_CumulativeTrappingSuccess),(1/m_AttemptsCount));
610
611 return true;
612 }
613
614 void RemoveBait()
615 {
616 if (m_Bait)
617 m_Bait.DeleteSafe();
618 }
619
620 void ReduceBaitQty(float qtyNorm)
621 {
622 if (m_Bait)
623 {
624 if (m_Bait.HasQuantity() && !m_Bait.IsSplitable())
625 m_Bait.SetQuantityNormalized((m_Bait.GetQuantityNormalized() - qtyNorm));
626 else
627 m_Bait.DeleteSafe();
628 }
629 }
630}
631
632class CatchingContextTrapFishSmall : CatchingContextTrapsBase
633{
634 override protected void InitCatchMethodMask()
635 {
636 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_SMALL;
637 }
638}
639
641{
642 override protected void InitCatchMethodMask()
643 {
644 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_LARGE;
645 }
646}
647
648class CatchingContextTrapLandSnare : CatchingContextTrapsBase
649{
650 override protected void InitCatchMethodMask()
651 {
652 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_LANDTRAP_SNARE;
653 }
654}
ItemBase m_Bait
Определения ActionFishingNew.c:57
int GetCatchEnviroMask()
Определения CatchingContextBase.c:164
float m_QualityBaseMod
Определения CatchingContextBase.c:20
ref map< int, ref BaitData > m_BaitCompatibilityMap
Определения CatchingContextBase.c:23
class BaitData m_MainItem
Определения ActionBase.c:36
ref CatchingResultBasic m_Result
Определения CatchingContextBase.c:27
void GenerateResult()
Определения CatchingContextBase.c:257
int m_MethodMask
Определения CatchingContextBase.c:18
float m_QualityDispersionMinMod
Определения CatchingContextBase.c:21
void InitCatchingItemData()
Определения CatchingContextBase.c:217
void CatchingContextBase(Param par)
Определения CatchingContextBase.c:29
float m_QualityDispersionMaxMod
Определения CatchingContextBase.c:22
int m_EnviroMask
Определения CatchingContextBase.c:19
void SetupProbabilityArray()
Определения CatchingContextBase.c:97
void SetupInitialTypes()
Определения CatchingContextTraps.c:358
void InitItemValues(EntityAI item)
override to init context-specific values
Определения CatchingContextTraps.c:283
void RemoveBait()
Определения CatchingContextTraps.c:472
float AdjustBaitItemChance(EntityAI item)
Allows for adjustment of all catch probabilities from item qualities (damage, qty....
Определения CatchingContextTraps.c:328
void SetTrapEnviroMask(int value)
Определения CatchingContextTraps.c:394
CatchingContextTrapsBase CatchingContextBase InitCatchMethodMask()
Определения CatchingContextTraps.c:247
int UpdateTrapEnviroMask()
Определения CatchingContextTraps.c:388
void UpdateDataAndMasks()
Определения CatchingContextTraps.c:379
void UpdateUsedBait(ECatchingBaitCategories type)
if non-empty bait type is used, some 'Bait' attachment is picked as an active bait (currently no dire...
Определения CatchingContextTraps.c:400
void ClearCatchingItemData()
Определения CatchingContextTraps.c:273
void InitCatchEnviroMask()
Определения CatchingContextTraps.c:340
void CreateResultDataStructure()
Определения CatchingContextTraps.c:266
void DeserializeData(Param par)
Определения CatchingContextTraps.c:256
override bool ModifySignalProbability(inout float probability)
Определения CatchingContextTraps.c:465
void ReduceBaitQty(float qtyNorm)
Определения CatchingContextTraps.c:478
int m_AttemptsCount
Определения CatchingContextTraps.c:253
float m_CumulativeTrappingSuccess
after N attempts, the chance to catch should be this. Only highest one applies. @NOTE: Take care,...
Определения CatchingContextTraps.c:252
override void UpdateBaseProbability(YieldItemBase yItem)
updates base probability when catching the specific item (some context subclasses only)
Определения CatchingContextTraps.c:427
override Widget Init()
Определения DayZGame.c:127
string path
Определения OptionSelectorMultistate.c:142
static const int MASK_ENVIRO_POND
Определения CatchingConstants.c:11
static const int MASK_ENVIRO_LAND_ALL
Определения CatchingConstants.c:16
static const int MASK_ENVIRO_SEA
Определения CatchingConstants.c:12
EntityAI m_Owner
Определения CatchingContextBase.c:4
Определения CatchingContextBase.c:2
proto native float ConfigGetFloat(string path)
Get float value from config on path.
proto native void ConfigGetIntArray(string path, out TIntArray values)
Get array of integers from config on path.
proto native void ConfigGetFloatArray(string path, out TFloatArray values)
Get array of floats from config on path.
static ref TIntArray ARRAY_INT
Определения UtilityClasses.c:51
static ref TFloatArray ARRAY_FLOAT
Определения UtilityClasses.c:50
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения Building.c:6
Определения InventoryItem.c:731
Определения EnMath.c:7
Определения PPEConstants.c:68
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
float GetBaitTypeSensitivity(ECatchingBaitCategories type)
Определения CatchYieldItemBase.c:53
Определения EnConvert.c:106
proto native CGame GetGame()
ErrorExSeverity
Определения EnDebug.c:62
proto void Print(void var)
Prints content of variable to console/log.
enum ShapeType ErrorEx
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
static proto float Pow(float v, float power)
Return power of v ^ power.
const string CFG_VEHICLESPATH
Определения constants.c:220
proto native bool IsCLIParam(string param)
Returns if command line argument is present.

Используется в ItemBase::OnPlacementComplete() и ItemBase::SetActive().