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

◆ Init()

void InitCatchMethodMask::Init ( Param par)
protected

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

352{
357 protected float m_CumulativeTrappingSuccess;
358 protected int m_AttemptsCount;
359 protected ItemBase m_Bait;
360
361 override protected void DeserializeData(Param par)
362 {
364 if (Class.CastTo(p,par))
365 {
366 m_MainItem = p.param1;
367 m_AttemptsCount = p.param2;
368 }
369 }
370
371 override protected void CreateResultDataStructure()
372 {
374
375 super.CreateResultDataStructure();
376 }
377
378 override protected void ClearCatchingItemData()
379 {
380 super.ClearCatchingItemData();
381
383 m_QualityBaseMod = 0.0;
386 }
387
388 override protected void InitItemValues(EntityAI item)
389 {
390 //skip ruined or deleted items entirely
391 if (item.IsRuined() || item.IsSetForDeletion())
392 return;
393
394 string path = "" + CFG_VEHICLESPATH + " " + item.GetType() + " Trapping";
395 if (GetGame().ConfigIsExisting(path))
396 {
397 if (GetGame().ConfigIsExisting(path + " baitTypes") && GetGame().ConfigIsExisting(path + " baitTypeChances"))
398 {
403 int count = CachedObjectsArrays.ARRAY_INT.Count();
404 if (count == CachedObjectsArrays.ARRAY_FLOAT.Count())
405 {
406 int key;
407 float value;
408 for (int i = 0; i < count; i++)
409 {
412 if (!m_BaitCompatibilityMap.Contains(key) || (m_BaitCompatibilityMap.Get(key).m_BaseProbability < value))
413 {
414 m_BaitCompatibilityMap.Set(key,new BaitData(value,item));
415 }
416 }
417 }
418 else
419 {
420 ErrorEx("'baitTypes' and 'baitTypeChances' arrray counts of " + item.GetType() + " do not match!",ErrorExSeverity.INFO);
421 }
422 }
423 if (GetGame().ConfigIsExisting(path + " resultQuantityBaseMod"))
424 m_QualityBaseMod += GetGame().ConfigGetFloat(path + " resultQuantityBaseMod");
425 if (GetGame().ConfigIsExisting(path + " resultQuantityDispersionMin"))
426 m_QualityDispersionMinMod += GetGame().ConfigGetFloat(path + " resultQuantityDispersionMin");
427 if (GetGame().ConfigIsExisting(path + " resultQuantityDispersionMax"))
428 m_QualityDispersionMaxMod += GetGame().ConfigGetFloat(path + " resultQuantityDispersionMax");
429 }
430 }
431
434 {
435 float ret = 1.0;
436 ItemBase ib;
437 if (Class.CastTo(ib,item))
438 {
439 //ret *= ib.GetBaitEffectivity(); //disconnected for the Time Being
440 }
441
442 return ret;
443 }
444
445 override protected void InitCatchEnviroMask()
446 {
447 vector pos = m_MainItem.GetPosition();
448 if (GetGame().SurfaceIsSea(pos[0], pos[2]))
450 else if (GetGame().SurfaceIsPond( pos[0], pos[2]))
452 else
454 }
455
456 override protected void Init(Param par)
457 {
458 super.Init(par);
459
461 }
462
463 override protected void SetupInitialTypes()
464 {
465 #ifdef DEVELOPER
466 if (IsCLIParam("catchingLogs"))
467 {
468 Print("********************"); //just for debug purposes to track the start
469 Print("dbgTrapz | START");
470 Print("********************");
471 }
472 #endif
473
474 super.SetupInitialTypes();
475
476 #ifdef DEVELOPER
477 if (IsCLIParam("catchingLogs"))
478 {
479 Print("***"); //just for debug purposes to track the start
480 }
481 #endif
482 }
483
484 void UpdateDataAndMasks()
485 {
487 InitCatchMethodMask(); //bait check
488 //InitCatchEnviroMask(); //skipping, raycasts are unreliable outside network bubbles
491 }
492
494 {
496 return GetCatchEnviroMask();
497 }
498
499 void SetTrapEnviroMask(int value)
500 {
501 m_EnviroMask = value;
502 }
503
505 void UpdateUsedBait(ECatchingBaitCategories type)
506 {
507 m_Bait = null;
508 if (type != ECatchingBaitCategories.BAIT_TYPE_EMPTY)
509 {
510 BaitData dta = m_BaitCompatibilityMap.Get(type);
511 if (dta)
512 {
513 ItemBase potentialBait = ItemBase.Cast(dta.m_Owner);
514 if (potentialBait != m_MainItem)
515 m_Bait = potentialBait;
516 }
517 else
518 ErrorEx("failed to acquire BaitData from type: " + type);
519 }
520
521 #ifdef DEVELOPER
522 if (IsCLIParam("catchingLogs"))
523 {
524 if (m_Bait)
525 Print("dbgTrapz | UpdateUsedBait to: " + m_Bait + " | with base bait probability used: " + m_BaitCompatibilityMap.Get(type).m_BaseProbability);
526 else
527 Print("dbgTrapz | UpdateUsedBait to 'null'!");
528 }
529 #endif
530 }
531
532 override void UpdateBaseProbability(YieldItemBase yItem)
533 {
534 int baitType = ECatchingBaitCategories.BAIT_TYPE_EMPTY;
535 int usedType = -1;
536 float probability = -1;
537 float highestProbability = 0.0;
538 int count = m_BaitCompatibilityMap.Count();
539 for (int i = 0; i < count; i++)
540 {
541 baitType = m_BaitCompatibilityMap.GetKey(i);
542 probability = m_BaitCompatibilityMap.Get(baitType).m_BaseProbability * yItem.GetBaitTypeSensitivity(baitType);
543 if (probability > highestProbability)
544 {
545 highestProbability = probability;
546 usedType = baitType;
547 }
548 }
549
550 m_CumulativeTrappingSuccess = Math.Clamp(highestProbability,0,1);
551 #ifdef DEVELOPER
552 if (IsCLIParam("catchingLogs"))
553 {
554 //Print("********************");
555 Print("dbgTrapz | using bait type: " + baitType + " to catch: " + yItem);
556 }
557 #endif
558 UpdateUsedBait(usedType);
559
560 #ifdef DEVELOPER
561 if (IsCLIParam("catchingLogs"))
562 {
563 float dbgProb;
565 Print("dbgTrapz | starting catching of " + yItem + " | at probability: " + dbgProb + " | with target success: " + m_CumulativeTrappingSuccess);
566 }
567 #endif
568 }
569
570 override bool ModifySignalProbability(inout float probability)
571 {
572 probability = 1 - Math.Pow((1 - m_CumulativeTrappingSuccess),(1/m_AttemptsCount));
573
574 return true;
575 }
576
577 void RemoveBait()
578 {
579 if (m_Bait)
580 m_Bait.DeleteSafe();
581 }
582
583 void ReduceBaitQty(float qtyNorm)
584 {
585 if (m_Bait)
586 {
587 if (m_Bait.HasQuantity() && !m_Bait.IsSplitable())
588 m_Bait.SetQuantityNormalized((m_Bait.GetQuantityNormalized() - qtyNorm));
589 else
590 m_Bait.DeleteSafe();
591 }
592 }
593}
594
595class CatchingContextTrapFishSmall : CatchingContextTrapsBase
596{
597 override protected void InitCatchMethodMask()
598 {
599 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_SMALL;
600 }
601}
602
604{
605 override protected void InitCatchMethodMask()
606 {
607 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_FISHTRAP_LARGE;
608 }
609}
610
611class CatchingContextTrapLandSnare : CatchingContextTrapsBase
612{
613 override protected void InitCatchMethodMask()
614 {
615 m_MethodMask = AnimalCatchingConstants.MASK_METHOD_LANDTRAP_SNARE;
616 }
617}
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.