Guest User

Untitled

a guest
Nov 23rd, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <API/ARK/Ark.h>
  3.  
  4. #pragma comment(lib, "ArkApi.lib")
  5.  
  6. DECLARE_HOOK(APrimalStructure_TakeDamage, float, APrimalStructure*, float, FDamageEvent*, AController*, AActor*);
  7.  
  8. float Hook_APrimalStructure_TakeDamage(APrimalStructure* _this, float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser)
  9. {
  10.     if (_this && EventInstigator && !EventInstigator->IsLocalController() && EventInstigator->IsA(AShooterPlayerController::StaticClass()))
  11.     {
  12.         AShooterPlayerController* AttackerShooterController = static_cast<AShooterPlayerController*>(EventInstigator);
  13.         if (AttackerShooterController && AttackerShooterController->PlayerStateField() && AttackerShooterController->GetPlayerCharacter() && AttackerShooterController->GetPlayerCharacter()->CurrentWeaponField() && AttackerShooterController->GetPlayerCharacter()->CurrentWeaponField()->AssociatedPrimalItemField())
  14.         {
  15.             FString WeaponName;
  16.             AttackerShooterController->GetPlayerCharacter()->CurrentWeaponField()->AssociatedPrimalItemField()->GetItemName(&WeaponName, false, true, nullptr);
  17.             if (WeaponName.Contains(L"Flamethrower")) return 0;
  18.         }
  19.     }
  20.     else if (EventInstigator && EventInstigator->CharacterField())
  21.     {
  22.         ACharacter* character = EventInstigator->CharacterField();
  23.         if (character && character->IsA(APrimalDinoCharacter::GetPrivateStaticClass()))
  24.         {
  25.             APrimalDinoCharacter* dino = static_cast<APrimalDinoCharacter*>(character);
  26.             FString descr;
  27.             dino->GetDinoDescriptiveName(&descr);
  28.             if (descr.Contains(L"") || descr.Contains(L"") || descr.Contains(L"") || descr.Contains(L"") || descr.Contains(L"") || descr.Contains(L""))
  29.                 return 0;
  30.         }
  31.     }
  32.     APrimalStructure_TakeDamage_original(_this, Damage, DamageEvent, EventInstigator, DamageCauser);
  33. }
  34.  
  35.  
  36. void Load()
  37. {
  38.     Log::Get().Init("NoNunnaki");
  39.  
  40.     ArkApi::GetHooks().SetHook("APrimalStructure.TakeDamage", &Hook_APrimalStructure_TakeDamage,
  41.         &APrimalStructure_TakeDamage_original);
  42. }
  43.  
  44. void Unload()
  45. {
  46.     ArkApi::GetHooks().DisableHook("APrimalStructure.TakeDamage", &Hook_APrimalStructure_TakeDamage);
  47. }
  48.  
  49. BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
  50. {
  51.     switch (ul_reason_for_call)
  52.     {
  53.     case DLL_PROCESS_ATTACH:
  54.         Load();
  55.         break;
  56.     case DLL_PROCESS_DETACH:
  57.         Unload();
  58.         break;
  59.     }
  60.     return TRUE;
  61. }
Add Comment
Please, Sign In to add comment