private void Shoot(int spreadFactor) { var weaponFired = WeaponFired.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered); weaponFired.WeaponId = weapon.Id; weaponFired.Entity = weapon.Player; weaponFired.Send(); var weaponSound = WeaponSound.Create(GlobalTargets.Everyone, ReliabilityModes.Unreliable); weaponSound.Position = transform.position; weaponSound.Label = weapon.Label; weaponSound.Player = player.entity; weaponSound.Send(); var dir = Spread(spreadFactor); if (!Physics.Raycast(cameraTransform.transform.position, dir, out var hit, 100)) { return; } if (hit.transform.CompareTag("Stalin")) { AudioSource soundSource = hit.transform.GetComponent <AudioSource>(); if (!soundSource.isPlaying) { soundSource.Play(); } } var boltEntity = hit.transform.GetComponent <BoltEntity>(); if (boltEntity != null && boltEntity.GetState <IPlayer>() != null) { var playerHit = PlayerHit.Create(GlobalTargets.OnlyServer); playerHit.Target = boltEntity; playerHit.PlayerWhoShot = player.state.Username; playerHit.WeaponName = weapon.Label; playerHit.Damage = weapon.Damage; playerHit.Send(); var applyHitIndicator = ApplyHitIndicator.Create(ReliabilityModes.Unreliable); applyHitIndicator.Message = "Damage: " + weapon.Damage; applyHitIndicator.Position = hit.point; applyHitIndicator.Send(); } else { var impactEffect = ImpactEffect.Create(ReliabilityModes.Unreliable); impactEffect.Position = hit.point; impactEffect.Send(); } }
public override void Fire() { if (!entity.IsOwner()) { return; } if (CanFire()) { GameObject projectile = BoltNetwork.Instantiate(projectilePrefab, muzzleSpawnPos.position, Quaternion.identity); Projectile projectileScript = projectile.GetComponent <Projectile>(); if (projectileScript) { projectileScript.SetData(damage, GetDirection(), owner); } WeaponFired.Create(entity).Send(); } }
private void Shoot() { //spawn projectile var throwSponge = ThrowSponge.Create(GlobalTargets.Everyone, ReliabilityModes.ReliableOrdered); throwSponge.Position = player.playerCamera.transform.position + player.playerCamera.transform.forward * .5f; throwSponge.Direction = player.playerCamera.transform.forward; throwSponge.Force = weapon.Force; throwSponge.SpongeId = new Guid(); throwSponge.Player = player.entity; throwSponge.Send(); var weaponFired = WeaponFired.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered); weaponFired.WeaponId = weapon.Id; weaponFired.Entity = weapon.Player; weaponFired.Send(); player.ChangeWeaponIndex(player.weaponSystem.FindNextWeaponIndex(player.state.ActiveWeaponIndex)); }