(39) 's Extra Blueprint Nodes for You as a Plugin, No C++ Required!

Do you mean your own custom project version that you define?

Oops :slight_smile:

Fixed!

:heart:

Hey, thanks for super useful plugin . I got a question about packaging the project. Iā€™m trying to package a win64 development build. But I keep getting errors.

Iā€™ve tried hard to solve by reading the forum, and to some success. I seem to have figured out that I needed to put the plugin folders inside the respective folder in the UE_4.20 engine folder instead of having it inside the project folder itself. Hope that is correct. But after getting rid of those errors I seem to be hitting a wall when trying to package.

is the error that got me perplexed:
ERROR: Unable to determine module type for F:\Program Files\Epic Games\UE_4.20\Engine\Source\VictoryBPLibrary\VictoryBPLibrary.Build.cs
UATHelper: Packaging (Windows (64-bit)): (referenced via DTH.uproject -> VictoryBPLibrary.uplugin)

I attached the full output log in the post.

Would greatly appreciate any assistance on .
P.S. Itā€™s a UE 4.20.3 blueprint project and Iā€™m only using the node ā€œVictory load texture 2D from fileā€ if that is of any importance.

Thanks!

UPDATE: I was able to solve by packaging the project as a ā€œshipping buildā€ instead of a ā€œdevelopment buildā€. Hope can be of help for someone else!

Hello .
First of , let me thank you for the great help you have provided to of us with your Victory!
Iā€™ve seen you load texture from file nodes, and Iā€™m wondering if there are any nodes that load the image files from a folder, and then add them to an array or something? For example, I would provide the Folder location and Name, and then I might be able to read the contents of that folder ( Files and images included ?).
Thanks.

That would not be too hard to add, I will work on that as soon as I can, but that might be awhile since I am deep in development my physics based multiplayer game :slight_smile:

Welcome to the UE4 forums! And thanks for posting your solution!

:heart:


**Upgrade to 4.21 Is Underway**

In process!

ā™„

4.21 Is Live!

Yes!!!

**4.21 **(win32, win64, editor, dev packaged, and shipping)

[SPOILER]You know you want it!!![/SPOILER]

:heart:

Can someone upload 4.15 version please? link is broken.

I just want to make a suggestion: I have added Append to the to the Save String Text to File functions. I am by no means a programmer but these do work and I make sure to add them every I use Victory. You just need to replace the functions in 2 files and recompile. Its just a slightly easier way instead of appending an array and overwriting.
VictoryBPFunctionLibrary.cpp:


bool UVictoryBPFunctionLibrary::FileIO__SaveStringTextToFile(
    FString SaveDirectory,
    FString JoyfulFileName,
    FString SaveText,
    bool AllowOverWriting,
    bool Append
) {
    if (!FPlatformFileManager::Get().GetPlatformFile().CreateDirectoryTree(*SaveDirectory))
    {
        //Could not make the specified directory
        return false;
        //~~~~~~~~~~~~~~~~~~~~~~
    }

    //get complete file path
    SaveDirectory += "\\";
    SaveDirectory += JoyfulFileName;

    //No over-writing?
    if (!AllowOverWriting)
    {
        //Check if file exists already
        if (FPlatformFileManager::Get().GetPlatformFile().FileExists(*SaveDirectory))
        {
            //no overwriting
            return false;
        }
    }
    if (!Append)
    {
        return FFileHelper::SaveStringToFile(SaveText, *SaveDirectory);
    }

    return FFileHelper::SaveStringToFile(SaveText, *SaveDirectory, FFileHelper::EEncodingOptions::AutoDetect, &IFileManager::Get(), EFileWrite::FILEWRITE_Append);
}
bool UVictoryBPFunctionLibrary::FileIO__SaveStringArrayToFile(FString SaveDirectory, FString JoyfulFileName, TArray<FString> SaveText, bool AllowOverWriting, bool Append)
{
    //Dir Exists?
    if (!VCreateDirectory(SaveDirectory))
    {
        //Could not make the specified directory
        return false;
        //~~~~~~~~~~~~~~~~~~~~~~
    }

    //get complete file path
    SaveDirectory += "\\";
    SaveDirectory += JoyfulFileName;

    //No over-writing?
    if (!AllowOverWriting)
    {
        //Check if file exists already
        if (FPlatformFileManager::Get().GetPlatformFile().FileExists(*SaveDirectory))
        {
            //no overwriting
            return false;
        }
    }

    FString FinalStr = "";
    for (FString& Each : SaveText)
    {
        FinalStr += Each;
        FinalStr += LINE_TERMINATOR;
    }

    if (!Append)
    {
        return FFileHelper::SaveStringToFile(FinalStr, *SaveDirectory);
    }

    return FFileHelper::SaveStringToFile(FinalStr, *SaveDirectory, FFileHelper::EEncodingOptions::AutoDetect, &IFileManager::Get(), EFileWrite::FILEWRITE_Append);

}

VictoryBPFunctionLibrary.h:


    /** Saves text to filename of your choosing, make sure include whichever file extension you want in the filename, ex: SelfNotes.txt . Make sure to include the entire file path in the save directory, ex: C:\MyGameDir\BPSavedTextFiles */
    UFUNCTION(BlueprintCallable, Category = "Victory BP Library|File IO")
        static bool FileIO__SaveStringTextToFile(FString SaveDirectory, FString JoyfulFileName, FString SaveText, bool AllowOverWriting = false, bool Append = false);

    /** Saves multiple Strings to filename of your choosing, with each string on its own line! Make sure include whichever file extension you want in the filename, ex: SelfNotes.txt . Make sure to include the entire file path in the save directory, ex: C:\MyGameDir\BPSavedTextFiles */
    UFUNCTION(BlueprintCallable, Category = "Victory BP Library|File IO")
        static bool FileIO__SaveStringArrayToFile(FString SaveDirectory, FString JoyfulFileName, TArray<FString> SaveText, bool AllowOverWriting = false, bool Append = false);



Not , but I can answer . Yes. The node Joy File IO Get Files will get files in a given directory with optional ext filter. That will give you an array of strings that you could ForLoop through and load them into a Texture2D array. I set our Load location through the Game.ini and used Get Custom Config Var String to set the given directory for the Get Files

is there a way to uninstall plugin? when i disable it , i cant open editor cause crashes

If you installed it in your project simply remove the directory from your plugin folder. Check your .uproject file too and make sure its not listed thereā€¦ I think thatā€™s itā€¦!

teak

I did it , when editor restarts it crashes )=

Does it crash on ANY project that you load? Or, just the project that had the plugin?

Thanks, I shall be doing so!

Yes thank you!

Just want to write a thanks, . Reading through thread, you got a billion people pulling at you and asking you questions- but you got under control, and always up to date in such a professional manner. Kudos,

Happy Thanksgiving Everyone!!

:slight_smile:

Youā€™re welcome! :slight_smile:
ā€‹ā€‹ā€‹

Hee hee, thanks!

:heart:

Quick comment on version for 4.21 as it applies to Android. I get errors during compile, but was able to correct.

I did by commenting out include ā€œDestructibleComponent.hā€ in VictoryBPFUnctionLibrary.cpp as well as the ENTIRE function (same file): bool UVictoryBPFunctionLibrary::VictoryDestructible_DestroyChunk(UDestructibleComponent* DestructibleComp, int32 HitItem)
Begin the comment out before the Bool UVictoryBPFunctionLibrary and after the last fence after the return false.

As most everyone knows doesnā€™t do Apex destruct, it builds. :wink:

I do note did best to try to #if / #endif these out to not conflict with Android, but it needed a bit more snipping. Perhaps moving those around instead of commenting would work as well. I just got it to compile, havenā€™t actually tested the Blueprints, but it looks like a boon to me - Iā€™m getting for the first to load runtime textures; wish me luck on figuring it out! I do note too that the code is well commented, but wonder (no, I havenā€™t read of these comments, perhaps I missed it) if there is any readme or documentation?

Thanks for the functions!

Rob Milliken

2 Likes

Sorry for delay and thanks for answer , it only happends on project .

Hey have you thought of making exposed variables and functions for your Victory plugin? That would be awesome