Пример #1
0
        /// <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);
        }
Пример #2
0
        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 ..
        }