Guild icon
Ark Server Api
── ( Tutorials | Guides ) ── / 【🔷】ᴘʟᴜɢɪɴ-ʀᴇꜰꜱ
Avatar
Ark Api Hook Generator is a tool that will easily create hooks for you and copy it to the clipboard ready to be pasted directly into your project making hooking in game functions should a simple process now (edited)
9:49 AM
9:50 AM
9:50 AM
Avatar
@WETBATMAN
Avatar
wow
10:57 AM
massive thanks
Avatar
Hah, well unfortunately none of those channels answer my question. :(
10:38 PM
Anyone know the easy way to add new classes to the library that mirror the UE ones? Or is it just hand written?
Avatar
have you tried dumping them with IDA ? 😄
10:39 PM
or do you want to add non ark ones ?
Avatar
I'm using ghidra, Ida can do that for free?
10:42 PM
Atlas classes mostly
Avatar
well i have a cracked version of IDA x64 and i use that for decompiling ark
10:44 PM
and i'm pretty sure other devs do the same aswell 😄
Avatar
Hah, maybe I can write something
Avatar
ok... thought this was #【💬】ɢʟᴏʙᴀʟ-ɢᴇɴᴇʀᴀʟ.. my bad
Avatar
i used a very poor written python script for ida to dump classes 😃
Avatar
ATLAS GPS coords of actor on the world map static FVector2D VectorGPS(FVector loc) { // Get server grid const auto grid = static_cast<UShooterGameInstance*>( ArkApi::GetApiUtils().GetWorld()->OwningGameInstanceField())-> GridInfoField(); // Convert to GPS coords FVector2D gps; grid->ServerLocationToGPSLocation(&gps, grid->GetCurrentServerId(), loc); return gps; }; static FVector2D ActorGPS(AActor* a) { // Get actor location return VectorGPS(a->RootComponentField()->RelativeLocationField()); }; (edited)
thumbsup 1
Avatar
GormusSenex 3/3/2020 2:45 PM
How to get structures within a sphere (Kindly described by @WETBATMAN) const int MinFoundations = 30; // could be any number UWorld* world = ArkApi::GetApiUtils().GetWorld(); TArray<AActor*> new_actors; TArray<AActor*> actors_ignore; TArray<TEnumAsByte<enum EObjectTypeQuery>> types; UKismetSystemLibrary::SphereOverlapActors_NEW( world, _this->RootComponentField()->RelativeLocationField(), static_cast<float>((MinFoundations * 300)), &types, APrimalStructure::GetPrivateStaticClass(), &actors_ignore, &new_actors); Notes: 1. where is searches 2. sphere starting position 3. sphere radius 4. actor types 5. actors of which class it looks for 6. actors which are ignored 7. TArray which will get populated with the found actors (edited)
2:46 PM
hope its ok. i need that for later 😉
Avatar
How to unlock all engrams except tek engrams (works with S+ structures because it checks the prereqs of the engram entry to make sure it cant be manually unlocked) struct FEngramEntries { TArray<struct UClass*> EngramEntries; }; bool CanUnlock(UPrimalEngramEntry* Engram) { if (!Engram->bCanBeManuallyUnlocked().Get()) { return false; } auto EngramRequirementSets = Engram->EngramRequirementSetsField(); for (auto&& E : Engram->EngramRequirementSetsField()) { for (auto&& F : E.EngramEntries) { if (!CanUnlock((UPrimalEngramEntry*)F->GetDefaultObject(true))) { return false; } } } return true; } void UnlockEngrams_Cmd(AShooterPlayerController* PlayerController, FString* message, int mode) { auto Singleton = (UPrimalGlobals*)Globals::GEngine().Get()->GameSingletonField(); auto GameData = Singleton->PrimalGameDataOverrideField() ? Singleton->PrimalGameDataOverrideField() : Singleton->PrimalGameDataField(); auto EngramClasses = GameData->EngramBlueprintEntriesField(); for (auto&& Engram : EngramClasses) { if (CanUnlock(Engram)) { ((AShooterPlayerState*)PlayerController->PlayerStateField())->ServerUnlockEngram(Engram->BluePrintEntryField(), true, true); } } }
👍 7
Avatar
How to get Blueprint path of any UObject. Credits to Michidu FString GetBlueprint(UObjectBase* object) { if (object != nullptr && object->ClassField() != nullptr) { FString path_name; object->ClassField()->GetDefaultObject(true)->GetFullName(&path_name, nullptr); if (int find_index = 0; path_name.FindChar(' ', find_index)) { path_name = "Blueprint'" + path_name.Mid(find_index + 1, path_name.Len() - (find_index + (path_name.EndsWith( "_C", ESearchCase:: CaseSensitive) ? 3 : 1))) + "'"; return path_name.Replace(L"Default__", L"", ESearchCase::CaseSensitive); } } return FString(""); }
GOGHEART1 2
Avatar
How to get UPrimalGameData pointer: UPrimalGameData* Game_Data = static_cast<UPrimalGameData*>(static_cast<UPrimalGlobals*>(Globals::GEngine()()->GameSingletonField())->PrimalGameDataOverrideField());
💯 1
Avatar
as I noticed the tools were moved to the new repository: https://github.com/ownprox/Tools
Tools i have made to make stuff a heck of a lot easier. - GitHub - ownprox/Tools: Tools i have made to make stuff a heck of a lot easier.
Avatar
Avatar
anton
as I noticed the tools were moved to the new repository: https://github.com/ownprox/Tools
just import the project into the development environment and on the Form1.resx file in the properties, click the "unblock" checkbox (edited)
Avatar
Avatar
anton
just import the project into the development environment and on the Form1.resx file in the properties, click the "unblock" checkbox (edited)
☑️ 2
Exported 29 message(s)
Timezone: UTC+1