Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float Hook_APrimalStructure_TakeDamage(APrimalStructure* _this, float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser)
- {
- if (_this) // APrimalStructure != NULL
- {
- uint64 attacked_tribeid = _this->TargetingTeamField();
- if (DamageCauser) //DamageCauser != NULL
- {
- uint64 attacking_tribeid = DamageCauser->TargetingTeamField();
- if (EventInstigator && EventInstigator->IsA(APlayerController::GetPrivateStaticClass())) //EventInstigator != NULL
- {
- uint64 steam_id = ArkApi::GetApiUtils().GetSteamIdFromController(EventInstigator);
- AShooterPlayerController* player = ArkApi::GetApiUtils().FindPlayerFromSteamId(steam_id);
- if (IsAdmin(steam_id))
- {
- return APrimalStructure_TakeDamage_original(_this, Damage, DamageEvent, EventInstigator, DamageCauser);
- }
- if (IsPlayerProtected(player))
- {
- if (!NewPlayerProtection::AllowNewPlayersToDamageEnemyStructures)
- {
- if (attacked_tribeid < 100000 || attacked_tribeid == attacking_tribeid)
- {
- return APrimalStructure_TakeDamage_original(_this, Damage, DamageEvent, EventInstigator, DamageCauser);
- }
- if (NewPlayerProtection::TimerProt::Get().IsNextMessageReady(steam_id))
- {
- ArkApi::GetApiUtils().SendNotification(player, NewPlayerProtection::MessageColor, NewPlayerProtection::MessageTextSize, NewPlayerProtection::MessageDisplayDelay, nullptr, *NewPlayerProtection::NewPlayerDoingDamageMessage);
- }
- return 0;
- }
- }
- else
- {
- if (IsTribeProtected(attacked_tribeid))
- {
- if (NewPlayerProtection::TimerProt::Get().IsNextMessageReady(steam_id))
- {
- ArkApi::GetApiUtils().SendNotification(player, NewPlayerProtection::MessageColor, NewPlayerProtection::MessageTextSize, NewPlayerProtection::MessageDisplayDelay, nullptr, *NewPlayerProtection::NewPlayerStructureTakingDamageMessage);
- }
- return 0;
- }
- }
- }
- else //EventInstigator == NULL
- {
- if (attacked_tribeid == attacking_tribeid)
- {
- return APrimalStructure_TakeDamage_original(_this, Damage, DamageEvent, EventInstigator, DamageCauser);
- }
- if (IsTribeProtected(attacked_tribeid))
- {
- auto online_players_ = NewPlayerProtection::TimerProt::Get().GetOnlinePlayers();
- for (const auto& onlineData : online_players_)
- {
- if (onlineData->tribe_id == attacking_tribeid)
- {
- if (NewPlayerProtection::TimerProt::Get().IsNextMessageReady(onlineData->steam_id))
- {
- auto tribe_player = ArkApi::GetApiUtils().FindPlayerFromSteamId(onlineData->steam_id);
- if (!ArkApi::GetApiUtils().IsPlayerDead(tribe_player))
- {
- ArkApi::GetApiUtils().SendNotification(tribe_player, NewPlayerProtection::MessageColor, NewPlayerProtection::MessageTextSize, NewPlayerProtection::MessageDisplayDelay, nullptr, *NewPlayerProtection::NewPlayerStructureTakingDamageFromUnknownTribemateMessage);
- }
- }
- }
- }
- return 0;
- }
- if (IsTribeProtected(attacking_tribeid) && !NewPlayerProtection::AllowNewPlayersToDamageEnemyStructures)
- {
- return 0;
- }
- }
- }
- else //DamageCauser == NULL
- {
- if (IsTribeProtected(attacked_tribeid))
- {
- return 0;
- }
- }
- }
- return APrimalStructure_TakeDamage_original(_this, Damage, DamageEvent, EventInstigator, DamageCauser);
- }
Advertisement
Add Comment
Please, Sign In to add comment