Hello,
I’m creating a default weapon spawning for my game, and I made the actor spawning on the server, but for some reason, if the code is executed on the server side, it spawns 1 weapon, but for the client, it spawns two actors. Can’t explain that to myself.
Here’s the setup:
void ABaseHero::EventSpawnDefaultWeapons()
{
if (HasAuthority())
{
SpawnDefaultWeapons(this);
}
else
{
ServerSpawnDefaultWeapons(this);
}
}
void ABaseHero::ServerSpawnDefaultWeapons_Implementation(ABaseHero* Hero)
{
SpawnDefaultWeapons(Hero);
}
void ABaseHero::SpawnDefaultWeapons(ABaseHero* Hero)
{
// get transform
FTransform Transform = Hero->GetActorTransform();
//spawn params
FActorSpawnParameters Params;
Params.Instigator = Hero;
Params.Owner = Hero;
//Spawn first weapon
AWeapon* WeaponTemp = GetWorld()->SpawnActor<AWeapon>(DefaultPrimaryWeapon, Transform, Params);
WeaponTemp->bHasBeenPickedUp = true;
FAttachmentTransformRules rules = FAttachmentTransformRules(EAttachmentRule::SnapToTarget, false);
if (WeaponTemp)
{
Hero->Inventory->PrimaryWeaponSlot = WeaponTemp;
Hero->Inventory->PrimaryWeaponSlot->SetOwner(Hero);
Hero->Inventory->PrimaryWeaponSlot->AttachToComponent(Hero->GetMesh(), rules, TEXT("GunSocket"));
}
//Spawn second weapon
//WeaponTemp = nullptr;
//
//WeaponTemp = GetWorld()->SpawnActor<AWeapon>(DefaultSecondaryWeapon, Transform, Params);
//WeaponTemp->bHasBeenPickedUp = true;
//
//if (WeaponTemp)
//{
// Hero->Inventory->SecondaryWeaponSlot = WeaponTemp;
// Hero->Inventory->SecondaryWeaponSlot->SetOwner(Hero);
// Hero->Inventory->SecondaryWeaponSlot->AttachToComponent(Hero->GetMesh(), rules, TEXT("WeaponHolsterSecondary"));
//}
this->HudDisplayMessage = "";
}
Any ideas why?