Advertisement
Dimitri_UA

gta_sa CPlayerInfo::WorkOutEnergyFromHunger

Jul 30th, 2016
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.81 KB | None | 0 0
  1. void __thiscall CPlayerInfo::WorkOutEnergyFromHunger(CPlayerInfo *this)
  2. {
  3.   CPlayerInfo *info; // esi@1
  4.   CPed *player; // ecx@10
  5.   char v3; // dl@12
  6.   __int16 v4; // ax@13
  7.   CPad *pad; // eax@18
  8.   char *text; // eax@19
  9.   char bDecreaseHealth; // bl@20
  10.  
  11.   info = this;
  12.   if ( !CCheat::m_aCheatsActive.NeverGetHungry )
  13.   {
  14.     if ( !(dword_B9B8F4 & 1) )
  15.     {
  16.       dword_B9B8F4 |= 1u;
  17.       gLastTimeHungryStateProcessed = CClock::ms_nGameClockHours;
  18.     }
  19.     if ( !CPad::GetPad(0)->DisablePlayerControls
  20.       && !CMenuSystem::num_menus_in_use
  21.       && !TheCamera.m_bWideScreenOn
  22.       && !CCutsceneMgr::ms_running
  23.       && !CGameLogic::IsCoopGameGoingOn()
  24.       && !info->m_pRemoteControlledCar )
  25.     {
  26.       player = info->m_pPed;
  27.       if ( info->m_pPed )
  28.       {
  29.         if ( !player->physical.m_pAttachedTo )
  30.         {
  31.           v3 = gLastTimeHungryStateProcessed;
  32.           if ( CClock::ms_nGameClockHours != gLastTimeHungryStateProcessed )
  33.           {
  34.             v4 = info->m_nNumHoursNotEating;
  35.             if ( !v4 )
  36.               gLastHungryState = 0;
  37.             info->m_nNumHoursNotEating = v4 + 1;
  38.           }
  39.           if ( info->m_nNumHoursNotEating <= 48 )
  40.           {
  41.             bHungryMessageShown = 0;
  42.           }
  43.           else
  44.           {
  45.             if ( CClock::ms_nGameClockHours == v3 )
  46.               return;
  47.             CPed::Say(player, 337, 0, 1.0, 0, 0, 0);
  48.             pad = CPad::GetPad(0);
  49.             CPad::StartShake(pad, 400, 110u, 0);
  50.             if ( bHungryMessageShown )
  51.             {
  52.               bDecreaseHealth = 0;
  53.               if ( CStats::GetStatValue(21u) > 0.0 )
  54.               {
  55.                 CStats::DecrementStat(21u, 25.0);
  56.                 CStats::DisplayScriptStatUpdateMessage(0, 21u, 25.0);
  57.                 bDecreaseHealth = 1;
  58.                 if ( !gLastHungryState )
  59.                   gLastHungryState = LOBYTE(info->m_nNumHoursNotEating) + 24;
  60.               }
  61.               if ( CStats::GetStatValue(23u) <= 0.0
  62.                 || info->m_nNumHoursNotEating <= (unsigned __int8)gLastHungryState && gLastHungryState )
  63.               {
  64.                 if ( !bDecreaseHealth )
  65.                   info->m_pPed->m_fHealth = info->m_pPed->m_fHealth - 2.0;
  66.               }
  67.               else
  68.               {
  69.                 CStats::DecrementStat(23u, 25.0);
  70.                 CStats::DisplayScriptStatUpdateMessage(0, 23u, 25.0);
  71.               }
  72.             }
  73.             else
  74.             {
  75.               text = CText::Get(&TheText, "NOTEAT");
  76.               CHud::SetHelpMessage(text, 1, 0, 1);
  77.               bHungryMessageShown = 1;
  78.             }
  79.           }
  80.           if ( CClock::ms_nGameClockHours != gLastTimeHungryStateProcessed )
  81.             gLastTimeHungryStateProcessed = CClock::ms_nGameClockHours;
  82.         }
  83.       }
  84.     }
  85.   }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement