#Willing to pay for help to a UE C++ GAS issue.

1 messages · Page 1 of 1 (latest)

olive peak
#

did you manage to find the problem already? if not did you simply put some debug messages in your ifs to see if you at least enter them? same in your set function, maybe output some values to narrow down were it goes wrong. 🙂

onyx fox
#

Did you solve this? Do you want to show the code where you retrieve the setbycaller data?

icy tinsel
#

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