#Willing to pay for help to a UE C++ GAS issue.
1 messages · Page 1 of 1 (latest)
Did you solve this? Do you want to show the code where you retrieve the setbycaller data?
Hey, this is maybe wayyyy late.
But I noticed you're doing a setbycallertag. If your gameplayeffect value "tag" is being set in the constructor, which it likely is, and you seem to be using some sort of tag library. The timing of the library might not have been loaded yet and there might actually not be a tag set on it.
Try to use the "SetByCallerName" Instead
For example:
FGameplayEffectSpecHandle SpecHandle = ASC->MakeOutgoingSpec(UDamageEffect::StaticClass(), 1.0f, Handle);
SpecHandle.Data->SetByCallerNameMagnitudes = { {GameplayTags.Effect_DamageValue.GetTagName(), (PhysicalPower * DamageFactor * -1.f) * (1 - (Armor / 100))} };
This is set in my ability. Im using an FGameplayTag.GetTagName() So really this value is the same as doing a FName("My.Tag.Here")
This is because in the effect in c++:
FSetByCallerFloat SetByCaller;
// Do this:
SetByCaller.DataName = FName("Effect.Damage.Value");
// Dont do this:
// SetByCaller.DataTag = GameplayTags.DamageTag
Modifier.ModifierMagnitude = FGameplayEffectModifierMagnitude(SetByCaller);
I beat my head about this for awhile. But I think the issue is using a tag in the constructor like that returns "None" because it hasnt been set or created yet by the time the effect constructor triggers