DayZ 1.28
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 строка 423

424 {
425 #ifdef DIAG_DEVELOPER
426 if (m_StaminaDisabled)
427 return;
428 #endif
429
430 if (m_Player)
431 {
432 bool isServerOrSingleplayer = GetGame().IsServer() || !GetGame().IsMultiplayer();
433 // Calculates actual max stamina based on player's load
434 if (isServerOrSingleplayer)
435 {
437 m_PlayerLoad = m_Player.GetWeightEx();
438
440 if (m_PlayerLoad >= CfgGameplayHandler.GetStaminaWeightLimitThreshold())
441 {
442 m_StaminaCap = Math.Max((CfgGameplayHandler.GetStaminaMax() - (((m_PlayerLoad - CfgGameplayHandler.GetStaminaWeightLimitThreshold())/GameConstants.STAMINA_KG_TO_GRAMS) * CfgGameplayHandler.GetStaminaKgToStaminaPercentPenalty())),CfgGameplayHandler.GetStaminaMinCap());
443 }
444 else
445 {
446 m_StaminaCap = CfgGameplayHandler.GetStaminaMax();
447 }
448 }
449
450 // Calculates stamina gain/loss based on movement and load
451 m_Player.GetMovementState(m_State);
452
453 switch (m_State.m_CommandTypeId)
454 {
455 case DayZPlayerConstants.COMMANDID_MOVE:
457 break;
458 case DayZPlayerConstants.COMMANDID_LADDER:
460 break;
461 case DayZPlayerConstants.COMMANDID_SWIM:
463 break;
464 case DayZPlayerConstants.COMMANDID_FALL:
465 case DayZPlayerConstants.COMMANDID_MELEE2:
466 case DayZPlayerConstants.COMMANDID_CLIMB:
467 break;
468 default:
469 if (!m_IsInCooldown)
470 {
471 m_StaminaDelta = GameConstants.STAMINA_GAIN_IDLE_PER_SEC;
472 }
473 break;
474 }
475
476 //Sets current stamina & stores + syncs data with client
477 float temp = m_StaminaDelta * deltaT;
478 if (temp < 0)
479 {
481 }
482 else
483 {
485 }
486
487 m_Stamina = Math.Max(0, Math.Min((m_Stamina + temp), m_StaminaCap));
489
490 if (isServerOrSingleplayer)
491 {
492 m_Player.GetStatStamina().Set(m_Stamina);
493 m_Time += deltaT;
494
495 if (m_Time >= GameConstants.STAMINA_SYNC_RATE)
496 {
497 m_Time = 0;
499 }
500 }
501
502 #ifndef SERVER
504 #endif
505
508
509 m_StaminaDelta = 0;
510 m_StaminaDepletion = 0; // resets depletion modifier
511
512 }
513 }
proto native bool IsMultiplayer()
proto native bool IsServer()
float m_StaminaDepletionMultiplier
Определения StaminaHandler.c:268
void StaminaProcessor_Ladder(HumanMovementState pHumanMovementState)
Определения StaminaHandler.c:621
ref HumanMovementState m_State
Определения StaminaHandler.c:272
void StaminaProcessor_Swimming(HumanMovementState pHumanMovementState)
Определения StaminaHandler.c:646
float m_StaminaRecoveryMultiplier
Определения StaminaHandler.c:269
void CheckStaminaState()
check if the stamina is completely depleted
Определения StaminaHandler.c:835
PlayerBase m_Player
Определения StaminaHandler.c:274
float m_StaminaSynced
Определения StaminaHandler.c:265
float m_StaminaDepletion
Определения StaminaHandler.c:267
void ApplyExhaustion()
Определения StaminaHandler.c:808
float m_StaminaCap
Определения StaminaHandler.c:266
void StaminaProcessor_Move(HumanMovementState pHumanMovementState)
Определения StaminaHandler.c:558
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:908
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().