/// <inheritdoc/> public override Grenade Spawn(Vector3 position, Vector3 velocity, float fuseTime = 3, ItemType grenadeType = ItemType.GrenadeFrag, Player player = null) { if (player == null) { player = Server.Host; } GrenadeManager grenadeManager = player.GrenadeManager; GrenadeSettings settings = grenadeManager.availableGrenades.FirstOrDefault(g => g.inventoryID == grenadeType); Grenade grenade = GameObject.Instantiate(settings.grenadeInstance).GetComponent <Grenade>(); grenade.FullInitData(grenadeManager, position, Quaternion.Euler(grenade.throwStartAngle), velocity, grenade.throwAngularVelocity, player == Server.Host ? Team.RIP : player.Team); grenade.NetworkfuseTime = NetworkTime.time + fuseTime; Tracked.Add(grenade.gameObject); GameObject grenadeObject = grenade.gameObject; UnityEngine.Object.Destroy(grenadeObject.GetComponent <Scp018Grenade>()); grenadeObject.AddComponent <Components.Rock>().Init(player.GameObject, player.Side, FriendlyFire, ThrownDamage); NetworkServer.Spawn(grenadeObject); if (ExplodeOnCollision) { grenade.gameObject.AddComponent <CollisionHandler>().Init(player.GameObject, grenade); } return(grenade); }
CallbackResult onMenu(byte[] data, CallbackResult prevResult) { if (first) { first = false; return(CallbackResult.Normal); } PacketReader pr = new PacketReader(data); pr.Skip(3); dialogID = pr.ReadUInt32(); menuid = pr.ReadUInt16(); int length = pr.ReadByte(); pr.Skip(length); int responses = pr.ReadByte(); for (int i = 0; i < responses; i++) { pr.Skip(4); length = pr.ReadByte(); Tracked.Add(pr.ReadAnsiString(length)); } printTrackList(); Core.UnregisterServerMessageCallback(0x7C, onMenu); PacketWriter pw = new PacketWriter(0x7D); pw.Write(dialogID); pw.Write(menuid); pw.Write(fake); pw.Write(fake); pw.Write(fake); Core.SendToServer(pw.GetBytes()); Core.SendToClient(pw.GetBytes()); dialogID = 0; menuid = 0; Core.UnregisterServerMessageCallback(0x7C, onMenu); return(CallbackResult.Sent); //TODO Track hlasky pri .. }