Guest User

Untitled

a guest
Mar 18th, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.37 KB | None | 0 0
  1. float Hook_APrimalStructure_TakeDamage(APrimalStructure* _this, float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser)
  2. {
  3.     if (_this) // APrimalStructure != NULL
  4.     {
  5.         uint64 attacked_tribeid = _this->TargetingTeamField();
  6.  
  7.         if (DamageCauser) //DamageCauser != NULL
  8.         {
  9.             uint64 attacking_tribeid = DamageCauser->TargetingTeamField();
  10.  
  11.             if (EventInstigator && EventInstigator->IsA(APlayerController::GetPrivateStaticClass())) //EventInstigator != NULL
  12.             {
  13.                 uint64 steam_id = ArkApi::GetApiUtils().GetSteamIdFromController(EventInstigator);
  14.                 AShooterPlayerController* player = ArkApi::GetApiUtils().FindPlayerFromSteamId(steam_id);
  15.                
  16.                 if (IsAdmin(steam_id))
  17.                 {
  18.                     return APrimalStructure_TakeDamage_original(_this, Damage, DamageEvent, EventInstigator, DamageCauser);
  19.                 }
  20.  
  21.                 if (IsPlayerProtected(player))
  22.                 {
  23.                     if (!NewPlayerProtection::AllowNewPlayersToDamageEnemyStructures)
  24.                     {
  25.                         if (attacked_tribeid < 100000 || attacked_tribeid == attacking_tribeid)
  26.                         {
  27.                             return APrimalStructure_TakeDamage_original(_this, Damage, DamageEvent, EventInstigator, DamageCauser);
  28.                         }
  29.                         if (NewPlayerProtection::TimerProt::Get().IsNextMessageReady(steam_id))
  30.                         {
  31.                             ArkApi::GetApiUtils().SendNotification(player, NewPlayerProtection::MessageColor, NewPlayerProtection::MessageTextSize, NewPlayerProtection::MessageDisplayDelay, nullptr, *NewPlayerProtection::NewPlayerDoingDamageMessage);
  32.                         }
  33.                         return 0;
  34.                     }
  35.                 }
  36.                 else
  37.                 {
  38.                     if (IsTribeProtected(attacked_tribeid))
  39.                     {
  40.                         if (NewPlayerProtection::TimerProt::Get().IsNextMessageReady(steam_id))
  41.                         {
  42.                             ArkApi::GetApiUtils().SendNotification(player, NewPlayerProtection::MessageColor, NewPlayerProtection::MessageTextSize, NewPlayerProtection::MessageDisplayDelay, nullptr, *NewPlayerProtection::NewPlayerStructureTakingDamageMessage);
  43.                         }
  44.                         return 0;
  45.                     }
  46.                 }
  47.             }
  48.             else //EventInstigator == NULL
  49.             {
  50.                 if (attacked_tribeid == attacking_tribeid)
  51.                 {
  52.                     return APrimalStructure_TakeDamage_original(_this, Damage, DamageEvent, EventInstigator, DamageCauser);
  53.                 }
  54.                 if (IsTribeProtected(attacked_tribeid))
  55.                 {
  56.                     auto online_players_ = NewPlayerProtection::TimerProt::Get().GetOnlinePlayers();
  57.  
  58.                     for (const auto& onlineData : online_players_)
  59.                     {
  60.                         if (onlineData->tribe_id == attacking_tribeid)
  61.                         {
  62.                             if (NewPlayerProtection::TimerProt::Get().IsNextMessageReady(onlineData->steam_id))
  63.                             {
  64.                                 auto tribe_player = ArkApi::GetApiUtils().FindPlayerFromSteamId(onlineData->steam_id);
  65.                                 if (!ArkApi::GetApiUtils().IsPlayerDead(tribe_player))
  66.                                 {
  67.                                     ArkApi::GetApiUtils().SendNotification(tribe_player, NewPlayerProtection::MessageColor, NewPlayerProtection::MessageTextSize, NewPlayerProtection::MessageDisplayDelay, nullptr, *NewPlayerProtection::NewPlayerStructureTakingDamageFromUnknownTribemateMessage);
  68.                                 }
  69.                             }
  70.                         }
  71.                     }
  72.                     return 0;
  73.                 }
  74.                 if (IsTribeProtected(attacking_tribeid) && !NewPlayerProtection::AllowNewPlayersToDamageEnemyStructures)
  75.                 {
  76.                     return 0;
  77.                 }
  78.             }
  79.         }
  80.         else //DamageCauser == NULL
  81.         {
  82.             if (IsTribeProtected(attacked_tribeid))
  83.             {
  84.                 return 0;
  85.             }
  86.         }
  87.     }  
  88.     return APrimalStructure_TakeDamage_original(_this, Damage, DamageEvent, EventInstigator, DamageCauser);
  89. }
Advertisement
Add Comment
Please, Sign In to add comment