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

◆ Update()

void StaminaHandler::Update ( float deltaT,
int pCurrentCommandID )
inlineprotected

gets the actual players load

StaminaCap calculation starts when PlayerLoad exceeds STAMINA_WEIGHT_LIMIT_THRESHOLD

processed on event

processed on event

processed on event

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

423 {
424 #ifdef DIAG_DEVELOPER
425 if (m_StaminaDisabled)
426 return;
427 #endif
428
429 if (m_Player)
430 {
431 bool isServerOrSingleplayer = GetGame().IsServer() || !GetGame().IsMultiplayer();
432 // Calculates actual max stamina based on player's load
433 if (isServerOrSingleplayer)
434 {
436 m_PlayerLoad = m_Player.GetWeightEx();
437
439 if (m_PlayerLoad >= CfgGameplayHandler.GetStaminaWeightLimitThreshold())
440 {
441 m_StaminaCap = Math.Max((CfgGameplayHandler.GetStaminaMax() - (((m_PlayerLoad - CfgGameplayHandler.GetStaminaWeightLimitThreshold())/GameConstants.STAMINA_KG_TO_GRAMS) * CfgGameplayHandler.GetStaminaKgToStaminaPercentPenalty())),CfgGameplayHandler.GetStaminaMinCap());
442 }
443 else
444 {
445 m_StaminaCap = CfgGameplayHandler.GetStaminaMax();
446 }
447 }
448
449 // Calculates stamina gain/loss based on movement and load
450 m_Player.GetMovementState(m_State);
451
452 switch (m_State.m_CommandTypeId)
453 {
454 case DayZPlayerConstants.COMMANDID_MOVE:
456 break;
457 case DayZPlayerConstants.COMMANDID_LADDER:
459 break;
460 case DayZPlayerConstants.COMMANDID_SWIM:
462 break;
463 case DayZPlayerConstants.COMMANDID_FALL:
464 case DayZPlayerConstants.COMMANDID_MELEE2:
465 case DayZPlayerConstants.COMMANDID_CLIMB:
466 break;
467 default:
468 if (!m_IsInCooldown)
469 {
470 m_StaminaDelta = GameConstants.STAMINA_GAIN_IDLE_PER_SEC;
471 }
472 break;
473 }
474
475 //Sets current stamina & stores + syncs data with client
476 float temp = m_StaminaDelta * deltaT;
477 if (temp < 0)
478 {
480 }
481 else
482 {
484 }
485
486 m_Stamina = Math.Max(0, Math.Min((m_Stamina + temp), m_StaminaCap));
488
489 if (isServerOrSingleplayer)
490 {
491 m_Player.GetStatStamina().Set(m_Stamina);
492 m_Time += deltaT;
493
494 if (m_Time >= GameConstants.STAMINA_SYNC_RATE)
495 {
496 m_Time = 0;
498 }
499 }
500
501 #ifndef SERVER
503 #endif
504
507
508 m_StaminaDelta = 0;
509 m_StaminaDepletion = 0; // resets depletion modifier
510
511 }
512 }
proto native bool IsMultiplayer()
proto native bool IsServer()
float m_StaminaDepletionMultiplier
Определения StaminaHandler.c:268
void StaminaProcessor_Ladder(HumanMovementState pHumanMovementState)
Определения StaminaHandler.c:620
ref HumanMovementState m_State
Определения StaminaHandler.c:272
void StaminaProcessor_Swimming(HumanMovementState pHumanMovementState)
Определения StaminaHandler.c:645
float m_StaminaRecoveryMultiplier
Определения StaminaHandler.c:269
void CheckStaminaState()
check if the stamina is completely depleted
Определения StaminaHandler.c:834
PlayerBase m_Player
Определения StaminaHandler.c:274
float m_StaminaSynced
Определения StaminaHandler.c:265
float m_StaminaDepletion
Определения StaminaHandler.c:267
void ApplyExhaustion()
Определения StaminaHandler.c:807
float m_StaminaCap
Определения StaminaHandler.c:266
void StaminaProcessor_Move(HumanMovementState pHumanMovementState)
Определения StaminaHandler.c:557
float m_StaminaDelta
Определения StaminaHandler.c:263
float m_Time
Определения StaminaHandler.c:270
float m_PlayerLoad
Определения StaminaHandler.c:262
float m_Stamina
Определения StaminaHandler.c:264
void SetStamina(float stamina_value)
Определения StaminaHandler.c:907
bool m_IsInCooldown
Определения StaminaHandler.c:286
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native CGame GetGame()

Перекрестные ссылки ApplyExhaustion(), CheckStaminaState(), GetGame(), CfgGameplayHandler::GetStaminaKgToStaminaPercentPenalty(), CfgGameplayHandler::GetStaminaMax(), CfgGameplayHandler::GetStaminaMinCap(), CfgGameplayHandler::GetStaminaWeightLimitThreshold(), CGame::IsMultiplayer(), CGame::IsServer(), m_IsInCooldown, m_Player, m_PlayerLoad, m_Stamina, m_StaminaCap, m_StaminaDelta, m_StaminaDepletion, m_StaminaDepletionMultiplier, m_StaminaRecoveryMultiplier, m_StaminaSynced, m_State, m_Time, Math::Max(), Math::Min(), SetStamina(), GameConstants::STAMINA_GAIN_IDLE_PER_SEC, GameConstants::STAMINA_KG_TO_GRAMS, GameConstants::STAMINA_SYNC_RATE, StaminaProcessor_Ladder(), StaminaProcessor_Move() и StaminaProcessor_Swimming().