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; }
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); }