示例#1
0
        private bool CallHeliForPlayer(BasePlayer player)
        {
            var   playerPos = player.transform.position;
            float mapWidth  = (TerrainMeta.Size.x / 2) - 50f;
            var   heliPos   = new Vector3(
                playerPos.x < 0 ? -mapWidth : mapWidth,
                30,
                playerPos.z < 0 ? -mapWidth : mapWidth
                );

            BaseHelicopter heli = GameManager.server.CreateEntity("assets/prefabs/npc/patrol helicopter/patrolhelicopter.prefab", new Vector3(), new Quaternion(), true) as BaseHelicopter;

            if (!heli)
            {
                return(false);
            }
            PatrolHelicopterAI heliAI = heli.GetComponent <PatrolHelicopterAI>();

            heli.Spawn();
            heli.transform.position = heliPos;
            var component = heli.gameObject.AddComponent <PersonalHeliComponent>();

            component.Init(this, player);
            foreach (var p in BasePlayer.activePlayerList)
            {
                SendReply(p, _("PlayerCalled", p.UserIDString, $"<color=#63ff64>{player.displayName}</color>"));
            }
            return(true);
        }
        private void SpawnHelicopter(int num)
        {
            bool lifetime = false;

            if (ConVar.PatrolHelicopter.lifetimeMinutes == 0)
            {
                ConVar.PatrolHelicopter.lifetimeMinutes = 1;
                lifetime = true;
            }

            for (int i = 0; i < num; i++)
            {
                BaseHelicopter entity = (BaseHelicopter)GameManager.server.CreateEntity("assets/prefabs/npc/patrol helicopter/patrolhelicopter.prefab", new Vector3(), new Quaternion(), true);
                entity.enableSaving = false;
                entity.Spawn();
                var component = entity.gameObject.AddComponent <CSHelicopter>();
                component.SpawnHelicopter(GetDestination(), adjMainRotorHealth, adjTailRotorHealth, adjEngineHealth, adjHeliHealth, adjHeliBulletDamage);
                CSHelicopters.Add(component);
                if (entity == null)
                {
                    Puts("null heli");
                }
            }
            if (lifetime)
            {
                timer.Once(5f, () => ConVar.PatrolHelicopter.lifetimeMinutes = 0);
            }
            ConVar.PatrolHelicopter.bulletAccuracy = adjHeliAccuracy;
        }
示例#3
0
            private IEnumerator SpawnRoundHelicopters()
            {
                int helicoptersToSpawn = Mathf.Max(1, Mathf.RoundToInt((float)maxHelicopters * ((float)currentRound / (float)rounds)));

                for (int i = 0; i < helicoptersToSpawn; i++)
                {
                    Vector3 destination = _spawnSelectorA.GetSpawnPoint();
                    Vector2 random      = (UnityEngine.Random.insideUnitCircle.normalized * Configuration.MaxTravelDistance);

                    Vector3 position = destination + new Vector3(random.x, 50f, random.y);

                    BaseHelicopter baseHelicopter = GameManager.server.CreateEntity(HELICOPTER_PREFAB, position) as BaseHelicopter;
                    baseHelicopter.enableSaving = false;
                    baseHelicopter.Spawn();

                    EventHelicopter eventHelicopter = baseHelicopter.gameObject.AddComponent <EventHelicopter>();
                    eventHelicopter.OnHelicopterSpawned(this, i + 1);

                    eventHelicopter.Entity.health = heliHealth;
                    eventHelicopter.Entity.SendNetworkUpdate(BasePlayer.NetworkQueue.Update);

                    eventHelicopters.Add(eventHelicopter);

                    yield return(CoroutineEx.waitForSeconds(1f));

                    eventHelicopter.SetPositionDestination(position, destination);
                }
            }
        public static bool ExecuteCommand(BasePlayer player, string command)
        {
            string[] args = command.Split(' ');

            if (player == null || args.Length == 0 || !playerInfo.ContainsKey(player.userID))
            {
                return(false);
            }

            PlayerInfo info = playerInfo[player.userID];

            switch (args[0])
            {
            // Add subscriptions
            // syntax: subscription <name> <duration in seconds>
            case "subscription":
                if (args.Length != 3)
                {
                    return(false);
                }

                info.AddSubscription(Convert.ToString(args[1]), Convert.ToInt32(args[2]));
                break;

            // Give item
            // syntax: give <itemname> [amount] [inventory]
            case "give":
                if (args.Length == 1)
                {
                    return(false);
                }

                // Parameters
                int           amount    = args.Length == 3 ? Convert.ToInt32(args[2]) : 1;
                ItemContainer inventory = player.inventory.containerMain;
                if (args.Length == 4 && Convert.ToString(args[3]) == "belt")
                {
                    inventory = player.inventory.containerBelt;
                }
                else if (args.Length == 4 && Convert.ToString(args[3]) == "wear")
                {
                    inventory = player.inventory.containerWear;
                }

                ItemDefinition definition = ItemManager.FindItemDefinition(Convert.ToString(args[1]));
                if (definition == null)
                {
                    return(false);
                }

                Item item = ItemManager.CreateByItemID(definition.itemid, amount);

                if (inventory.itemList.Count >= 24)
                {
                    item.Drop(player.transform.position, new Vector3(0, 1f, 0));
                }
                else
                {
                    player.inventory.GiveItem(ItemManager.CreateByItemID(definition.itemid, amount), inventory);
                }
                break;

            // Call the helicopter to the caller
            // syntax: helicopter
            case "helicopter":
                BaseHelicopter helicopter = (BaseHelicopter)GameManager.server.CreateEntity("assets/prefabs/npc/patrol helicopter/patrolhelicopter.prefab", new Vector3(), new Quaternion(), true);
                if (helicopter == null)
                {
                    return(false);
                }

                var ai = helicopter?.GetComponent <PatrolHelicopterAI>() ?? null;
                if (ai == null)
                {
                    return(false);
                }

                ai.SetInitialDestination(player.transform.position + new Vector3(0, 25f, 0));

                helicopter.Spawn();
                break;
            }

            return(true);
        }