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

Thanks . :smiley:

Is there a to add node for unloading level instance?

Yes or No, is still Awesome! Thanks!

Hi , maybe you missed the question I posted on 04-10-2017. I see you have released a new version of your awesome plug-in.

4.15 Build

VictoryBPFunctionLibrary.cpp
line 4651
RawColorArray NULL
Exception thrown at 0x000007FEDF347110 (UE4Editor-Core.dll) in UE4Editor.exe: 0xC0000005: Access violation reading location 0x0000000000000002.

not work Victory_GetPixelFromT2D in 4.15 Build

Victory_GetPixelsArrayFromT2D

PixelArray.Add(RawColorArray[x * TextureWidth + y]); -> PixelArray.Add(RawColorArray[y * TextureWidth + x]);

Hi, Everybody. Everything ok ? I hope yes.

So, I just install the UE 4.16. I’m loving it, but I need rebuild my Victory Plugin Plugin to run into UE 4.16. How can I make it ? Somebody it has a tutorial ?

Thank You

Hi,

I downloaded the latest version of the plugin and get an error that looks very much like Sarlack’s problem. I get an error when packaging to win64, using 4.15.1.
The packaging fails when nativization is enabled for blueprints that use plugin’s nodes.


...\epic games\ue_4.15\engine\source\runtime\umg\public\Components/SlateWrapperTypes.h(10): fatal error C1083: Cannot open include file: 'SlateWrapperTypes.generated.h': No such file or directory

looks very similar to Sarlack’s problem, which it seems got solved with the latest plugin version.
Thank you very much :slight_smile: Your plugin is love, your plugin is life

Another nativization?

I wonder if we can solve it the same way…

I’ve got problem. My UE version 15.2, I try latest build which made for UE 15.1. I’ve extracted folder and place it on Engine/Plugins/Runtime I can see it available in the Plugin management and I’ve enabled it but there are no any new blueprint function.

My machine is MAC is it relates ?

Oh, now I know I have to add Mac to WhitelistPlatforms list

I actually still can’t package with nativization enabled. It errors on the Array_Sort and TEnumAsByte, but I’m not sure if these are related to the victory plugin or not. I am using the Sort function from the Victory plugin.

Hi, I’m having issues installing the plugin. Your installation instructions say to do the following:

However, I feel like is oversimplified because I see posts about installing plugins and they mention compiling C++ code, messing with the .uproject files, and messing with .ini files. The plugin does not appear in the plugins list. I’m using 4.15, if it matters.

Hee hee!

Thanks for the message @BlackHawk17 !

:heart:

These nodes is currently in the plugin now!

Also you don’t really need to use the nodes

**Just drag off from the kismet level instance ptr and set ShouldBeLoaded to false :slight_smile:
**

is one of the only parts of the engine that works way, where you can just set a bool that the engine auto checks each tick, rather than having to call a function

:slight_smile:

Hi.
First of great work! :slight_smile:
[HR][/HR]
I’m trying to port my game to Linux, using cross platform tools. Packing goes well, but when I try to run game on Linux I’m getting error in terminal.


[2017.05.22-11.12.02:360]  0]LogProperty:Error: Struct type unknown for property 'StructProperty /Game/Blueprints/VRPlayerController.VRPlayerController_C:ExecuteUbergraph_VRPlayerController.CallFunc_VictoryGetAllActionKeyBindings_Bindings.CallFunc_VictoryGetAllActionKeyBindings_Bindings'; perhaps the USTRUCT() was renamed or deleted?

I’m using UE4.14, windows version of game works well.

@any thought about the voice capture node :slight_smile: , just being able to capture and process it into a sound node would be great. thanks

@AndyRomerosnoop

Here you go latest updated to 4.16 with header change to.

https://cp.sync.com/dl/e1427ee40#4tw5h2jy-bz3nbvat-sarwuuqf-ra53r5kj

Hey !
Firstly your plugin is awesome!
I also bought your save plugin, **** good plugin!
I got one quick question.
I was looking for a way to spawn actor in sublevels, and I saw your plugin supports that.
However, you can’t pass parameters like original SpawnActorFromClass did.
I did some research, and it is possible to archive what I wanted but I need to modify engine source code and recompile engine.
Since other members of my team use precompiled version from Launcher so the only option for me is to write a plugin.
But I found that if I write a plugin, I need to access UGameplayStatics.h which is not possible.
So is a dead end, right?

My question is, is it possible to write a plugin let original SpawnActorFromClass supports spawning in sublevels?

Not (I wish), but I tried the same thing as you. In my experience you have two options.

  1. Copy the code from the VictoryPlugin, for the spawn node, in your own C++ function library and modify it:



AC_Building* UC_FunctionLibrary::SpawnBuildingIntoLevel(UObject* WorldContextObject, TSubclassOf<AC_Building> BuildingType, ESpawnActorCollisionHandlingMethod CollisionOverride, FTransform const SpawnTransform, int32 CityIndex, EBuildingTier BuildingTier, bool IsAlive, bool PhysicsEnabled, bool IsTwin, AActor* Owner)
{
	if (!GEngine)
	{
		UE_LOG(LogCore, Error, TEXT("FAILED: %s - SpawnBuildingIntoLevel -> GEngine is not valid!"), *WorldContextObject->GetName());
		return nullptr;
	}
	if (!BuildingType)
	{
		UE_LOG(LogCore, Error, TEXT("FAILED: %s - SpawnBuildingIntoLevel -> BuildingType is not valid!"), *WorldContextObject->GetName());
		return nullptr;
	}

	//using a context  to get the world!
	UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject);

	if (!World)
	{
		UE_LOG(LogCore, Error, TEXT("FAILED: %s - SpawnBuildingIntoLevel -> World is not valid!"), *WorldContextObject->GetName());
		return nullptr;
	}

	//Create SpawnParameters
	FActorSpawnParameters SpawnParameters;
	SpawnParameters.SpawnCollisionHandlingOverride = CollisionOverride;
	SpawnParameters.bDeferConstruction = true;
	SpawnParameters.bAllowDuringConstructionScript = false;
	SpawnParameters.Owner = Owner;


	//Get Level from Name based on CityIndex.
	ULevel* FoundLevel = nullptr;

	FString LevelName = GetGameSettings()->CityPrefix;
	LevelName += DoubleDigitInt(CityIndex);


	for (const ULevelStreaming* EachLevel : World->StreamingLevels)
	{
		if (!EachLevel) continue;
		//~~~~~~~~~~~~~~~~

		ULevel* LevelPtr = EachLevel->GetLoadedLevel();

		//Valid?
		if (!LevelPtr) continue;
		FString x = EachLevel->GetWorldAssetPackageName();
		//
		x = x.Right(7);

		if (x == LevelName)
		{
			FoundLevel = LevelPtr;
			break;
		}
	}
	//~~~~~~~~~~~~~~~~~~~~~
	if (FoundLevel)
	{
		SpawnParameters.OverrideLevel = FoundLevel;
	}
	//~~~~~~~~~~~~~~~~~~~~~

	AC_Building* SpawnedBuilding = nullptr;
	//World->SpawnActorDeferred<BuildingType>(BuildingType, &, &, nullptr, nullptr, false);


	//World->SpawnActor(SpawnParameters);

	SpawnedBuilding = World->SpawnActor<AC_Building>(BuildingType, SpawnTransform.GetLocation(), SpawnTransform.Rotator(), SpawnParameters);


	//SpawnedBuilding = World->SpawnActorDeferred<AC_Building>(BuildingType, SpawnTransform);

	if (SpawnedBuilding)
	{	
		SpawnedBuilding->SetCityIndex(CityIndex);
		SpawnedBuilding->BuildingTier = BuildingTier;
		SpawnedBuilding->isAlive = IsAlive;
		SpawnedBuilding->isBuildingTwin = IsTwin;
		SpawnedBuilding->PhysicsEnabled = PhysicsEnabled;

		UGameplayStatics::FinishSpawningActor(SpawnedBuilding, SpawnTransform);
	}
	else
	{
		UE_LOG(LogCore, Error, TEXT("FAILED: %s - SpawnBuildingIntoLevel -> SpawnedBuilding failed to spawn!"), *WorldContextObject->GetName());

		return nullptr;
	}
	return SpawnedBuilding;
}




  1. Use the default spawning node and assign an actor that already is in that sublevel as the ā€œOwnerā€. will set the spawn actor as part of that sublevel as well. <- I did by accident and seemed to work.

Thought I’d mention that there are some warnings when building a project:

"UnrealBuildTool: H:\Unreal Projects\MyGame\Plugins\VictoryPlugin\Source\VictoryBPLibrary\Public\VictoryBPFunctionLibrary.h(867): warning C4996: ā€˜FBox::FBox’: Use ForceInit constructor instead. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
"