Exemplo n.º 1
0
        public static void JoinGame(CommandArgs args)
        {
            TSPlayer tSPlayer = args.Player;

            if (HubEvent.GetEventPlayerIn(tSPlayer.Name) != null)
            {
                tSPlayer.SendErrorMessage("You're already in an event! Please use /leave first!");
                return;
            }

            if (args.Parameters.Count < 1)
            {
                tSPlayer.SendErrorMessage("Invalid syntax! Proper syntax: /join <Event Name>");
                return;
            }

            string eventName = string.Join("", args.Parameters).ToLower();

            HubEvent hubEvent = HubEvent.GetEvent(eventName);

            if (hubEvent == null)
            {
                tSPlayer.SendErrorMessage("Invalid syntax! Proper syntax: /forcejoinall <Event Name>");
                return;
            }

            HubEvent.AddPlayerToEvent(tSPlayer, hubEvent);

            hubEvent.TeleportPlayerToSpawn(tSPlayer);

            tSPlayer.SendSuccessMessage(string.Format("You successfully joined {0}!", hubEvent.eventName));
        }
Exemplo n.º 2
0
        public static void ForceJoin(CommandArgs args)
        {
            TSPlayer tSPlayer = args.Player;

            if (args.Parameters.Count < 2)
            {
                tSPlayer.SendErrorMessage("Invalid syntax! Proper syntax: /forcejoin <Player Name> <Event Name>");
                return;
            }

            List <TSPlayer> tSPlayerTargets = TSPlayer.FindByNameOrID(args.Parameters[0]);

            if (tSPlayerTargets.Count == 0)
            {
                tSPlayer.SendErrorMessage("The player specified was not found!");
                return;
            }

            if (tSPlayerTargets.Count > 1)
            {
                tSPlayer.SendErrorMessage("Multiple players with that name were found!");
                return;
            }

            TSPlayer tSPlayerTarget = tSPlayerTargets.First();

            string eventName = string.Join("", args.Parameters.Skip(1)).ToLower();

            HubEvent hubEvent = HubEvent.GetEvent(eventName);

            if (hubEvent == null)
            {
                tSPlayer.SendErrorMessage("The event specified was not found!");
                return;
            }

            // Check if player has already joined an event, and if so, remove them from it
            HubEvent playerHubEvent = HubEvent.GetEventPlayerIn(tSPlayerTarget.Name);

            if (playerHubEvent != null)
            {
                HubEvent.RemovePlayerFromEvent(tSPlayerTarget, playerHubEvent);
            }

            HubEvent.AddPlayerToEvent(tSPlayerTarget, hubEvent);

            tSPlayer.SendSuccessMessage(string.Format("{0} was successfully added to {1}!", tSPlayerTarget.Name, hubEvent.eventName));
        }
Exemplo n.º 3
0
        public static void LeaveGame(CommandArgs args)
        {
            TSPlayer tSPlayer = args.Player;

            HubEvent hubEvent = HubEvent.GetEventPlayerIn(tSPlayer.Name);

            if (hubEvent == null)
            {
                tSPlayer.SendErrorMessage("You are not in an event!");
                return;
            }

            HubEvent.RemovePlayerFromEvent(tSPlayer, hubEvent);

            tSPlayer.SendSuccessMessage("You were successfully removed from " + hubEvent.eventName + "!");
            return;
        }
Exemplo n.º 4
0
        public static void OnServerLeave(LeaveEventArgs args)
        {
            // Kick players out of events if they leave the game.

            TSPlayer tSPlayer = TShock.Players[args.Who];

            HubEvent hubEvent = HubEvent.GetEventPlayerIn(tSPlayer.Name);

            if (hubEvent == null)
            {
                return;
            }

            HubEvent.RemovePlayerFromEvent(tSPlayer, hubEvent);

            Util.spectatingPlayersToTargets.Remove(tSPlayer);
        }
Exemplo n.º 5
0
        public static void ForceJoinAll(CommandArgs args)
        {
            TSPlayer tSPlayer = args.Player;

            if (args.Parameters.Count < 1)
            {
                tSPlayer.SendErrorMessage("Invalid syntax! Proper syntax: /forcejoinall <Event Name>");
                return;
            }

            string eventName = string.Join("", args.Parameters).ToLower();

            HubEvent hubEvent = HubEvent.GetEvent(eventName);

            if (hubEvent == null)
            {
                tSPlayer.SendErrorMessage("The event specified was not found!");
                return;
            }

            string players = "";

            foreach (TSPlayer tSP in TShock.Players)
            {
                if (tSP == null)
                {
                    continue;
                }

                // Check if player has already joined an event, and if so, remove them from it
                HubEvent playerHubEvent = HubEvent.GetEventPlayerIn(tSP.Name);
                if (playerHubEvent != null)
                {
                    HubEvent.RemovePlayerFromEvent(tSP, playerHubEvent);
                }

                HubEvent.AddPlayerToEvent(tSP, hubEvent);

                players += tSP.Name + ", ";
            }

            players = players.Trim(' ', ',');

            tSPlayer.SendSuccessMessage(string.Format("{0} was successfully added to {1}!", players, hubEvent.eventName));
        }
Exemplo n.º 6
0
        public static void ForceStartGame(CommandArgs args)
        {
            TSPlayer tSPlayer = args.Player;

            HubEvent hubEvent = HubEvent.GetEventPlayerIn(tSPlayer.Name);

            if (hubEvent == null)
            {
                tSPlayer.SendErrorMessage("You are not in an event!");
                return;
            }

            tSPlayer.SendSuccessMessage("You successfully started the event!");

            TShock.Utils.Broadcast("An admin has forcibly started the event!", Color.Aquamarine);

            hubEvent.StartEventCountdown();
        }
Exemplo n.º 7
0
        public static void StartGame(CommandArgs args)
        {
            TSPlayer tSPlayer = args.Player;

            HubEvent hubEvent = HubEvent.GetEventPlayerIn(tSPlayer.Name);

            if (hubEvent == null)
            {
                tSPlayer.SendErrorMessage("You are not in an event!");
                return;
            }

            tSPlayer.SendSuccessMessage("You successfully started a vote to start the event!");

            VotingSystem votingSystem = new VotingSystem("Should the game start?",
                                                         60000,
                                                         hubEvent,
                                                         new OptionInfo("Yes", hubEvent.StartEventCountdown),
                                                         new OptionInfo("No"));

            votingSystem.Start();
        }
Exemplo n.º 8
0
        public static void ChooseClass(CommandArgs args)
        {
            TSPlayer tSPlayer = args.Player;
            Player   player   = tSPlayer.TPlayer;

            if (!TShock.ServerSideCharacterConfig.Enabled)
            {
                tSPlayer.SendErrorMessage("SSC is not enabled so choosing classes has been disabled.");
                return;
            }

            HubEvent hubEvent = HubEvent.GetEventPlayerIn(tSPlayer.Name);

            if (hubEvent == null)
            {
                tSPlayer.SendErrorMessage("You are not in an event!");
                return;
            }

            IEnumerable <EventClass> eventClasses = ClassConfig.config.eventClasses.Where(c => c.eventName == hubEvent.eventName);

            if (eventClasses.Count() < 1)
            {
                tSPlayer.SendErrorMessage("This event has no classes.");
                return;
            }

            if (args.Parameters.Count < 1)
            {
                tSPlayer.SendErrorMessage("Invalid syntax! Proper syntax: /chooseclass <Class Name>");

                string classesFormatted = "";
                foreach (EventClass eventClass in eventClasses)
                {
                    classesFormatted += eventClass.className + ", ";
                }
                classesFormatted = classesFormatted.TrimEnd(',', ' ');

                tSPlayer.SendInfoMessage(string.Format("The available classes for {0} are: {1}.", hubEvent.eventName, classesFormatted));

                return;
            }

            string className = args.Parameters[0].ToLower();

            IEnumerable <EventClass> classes = eventClasses.Where(c => c.className.ToLower() == className);

            if (classes.Count() < 1)
            {
                tSPlayer.SendErrorMessage("No classes with that name were found!");

                string classesFormatted = "";
                foreach (EventClass eventClass in eventClasses)
                {
                    classesFormatted += eventClass.className + ", ";
                }
                classesFormatted = classesFormatted.TrimEnd(',', ' ');

                tSPlayer.SendInfoMessage(string.Format("Try \"/chooseclass [c/FFFF00: {0}] instead.\"", classesFormatted));
                return;
            }

            if (classes.Count() > 1)
            {
                tSPlayer.SendErrorMessage("Multiple classes with that name were found!");
                return;
            }

            EventClass chosenClass = classes.First();

            tSPlayer.ResetPlayer(chosenClass.maxHealth, chosenClass.maxMana);

            // Main items
            for (int i = 0; i < (int)InventoryLengths.Main; i++)
            {
                if (!chosenClass.items.TryGetValue(i, out ClassItem classItem))
                {
                    continue;
                }
                Item item = TShock.Utils.GetItemByIdOrName(classItem.name).First();
                item.stack  = classItem.stack;
                item.prefix = (byte)TShock.Utils.GetPrefixByIdOrName(classItem.prefix).First();

                player.inventory[i] = item;
                NetMessage.SendData((int)PacketTypes.PlayerSlot, -1, -1, NetworkText.Empty, tSPlayer.Index, i);
            }

            // Coins
            for (int i = 0; i < (int)InventoryLengths.Coins; i++)
            {
                if (!chosenClass.coins.TryGetValue(i, out ClassItem classItem))
                {
                    continue;
                }
                Item item = TShock.Utils.GetItemByIdOrName(classItem.name).First();
                item.stack  = classItem.stack;
                item.prefix = (byte)TShock.Utils.GetPrefixByIdOrName(classItem.prefix).First();

                player.inventory[(int)ItemSlot.CoinSlot1 + i] = item;
                NetMessage.SendData((int)PacketTypes.PlayerSlot, -1, -1, NetworkText.Empty, tSPlayer.Index, (int)ItemSlot.CoinSlot1 + i);
            }

            // Ammo
            for (int i = 0; i < (int)InventoryLengths.Ammo; i++)
            {
                if (!chosenClass.ammo.TryGetValue(i, out ClassItem classItem))
                {
                    continue;
                }
                Item item = TShock.Utils.GetItemByIdOrName(classItem.name).First();
                item.stack  = classItem.stack;
                item.prefix = (byte)TShock.Utils.GetPrefixByIdOrName(classItem.prefix).First();

                player.inventory[(int)ItemSlot.AmmoSlot1 + i] = item;
                NetMessage.SendData((int)PacketTypes.PlayerSlot, -1, -1, NetworkText.Empty, tSPlayer.Index, (int)ItemSlot.AmmoSlot1 + i);
            }

            // Armor
            for (int i = 0; i < (int)InventoryLengths.Armor; i++)
            {
                if (!chosenClass.armor.TryGetValue(i, out string itemName))
                {
                    continue;
                }
                Item item = TShock.Utils.GetItemByIdOrName(itemName).First();

                player.armor[i] = item;
                NetMessage.SendData((int)PacketTypes.PlayerSlot, -1, -1, NetworkText.Empty, tSPlayer.Index, (int)ItemSlot.ArmorHeadSlot + i);
            }

            // Accessories
            for (int i = 0; i < (int)InventoryLengths.Accessories; i++)
            {
                if (!chosenClass.accessories.TryGetValue(i, out string itemName))
                {
                    continue;
                }
                Item item = TShock.Utils.GetItemByIdOrName(itemName).First();

                player.armor[(int)InventoryLengths.Armor + i] = item;
                NetMessage.SendData((int)PacketTypes.PlayerSlot, -1, -1, NetworkText.Empty, tSPlayer.Index, (int)ItemSlot.AccessorySlot1 + i);
            }

            // Armor Vanity
            for (int i = 0; i < (int)InventoryLengths.Armor; i++)
            {
                if (!chosenClass.armorVanity.TryGetValue(i, out string itemName))
                {
                    continue;
                }
                Item item = TShock.Utils.GetItemByIdOrName(itemName).First();

                player.armor[(int)InventoryLengths.Armor + (int)InventoryLengths.AllAccessories + i] = item;
                NetMessage.SendData((int)PacketTypes.PlayerSlot, -1, -1, NetworkText.Empty, tSPlayer.Index, (int)ItemSlot.VanityHeadSlot + i);
            }

            // Accessory Vanity
            for (int i = 0; i < (int)InventoryLengths.Accessories; i++)
            {
                if (!chosenClass.accessoryVanity.TryGetValue(i, out string itemName))
                {
                    continue;
                }
                Item item = TShock.Utils.GetItemByIdOrName(itemName).First();

                player.armor[(int)InventoryLengths.Armor + (int)InventoryLengths.AllAccessories + (int)InventoryLengths.Armor + i] = item;
                NetMessage.SendData((int)PacketTypes.PlayerSlot, -1, -1, NetworkText.Empty, tSPlayer.Index, (int)ItemSlot.SocialAccessorySlot1 + i);
            }

            // Armor Dyes
            for (int i = 0; i < (int)InventoryLengths.Armor; i++)
            {
                if (!chosenClass.armorDyes.TryGetValue(i, out string itemName))
                {
                    continue;
                }
                Item item = TShock.Utils.GetItemByIdOrName(itemName).First();

                player.dye[i] = item;
                NetMessage.SendData((int)PacketTypes.PlayerSlot, -1, -1, NetworkText.Empty, tSPlayer.Index, (int)ItemSlot.DyeHeadSlot + i);
            }

            // Accessory Dyes
            for (int i = 0; i < (int)InventoryLengths.Accessories; i++)
            {
                if (!chosenClass.accessoryDyes.TryGetValue(i, out string itemName))
                {
                    continue;
                }
                Item item = TShock.Utils.GetItemByIdOrName(itemName).First();

                player.dye[(int)InventoryLengths.Armor + i] = item;
                NetMessage.SendData((int)PacketTypes.PlayerSlot, -1, -1, NetworkText.Empty, tSPlayer.Index, (int)ItemSlot.DyeAccessorySlot1 + i);
            }

            // Misc Equips
            for (int i = 0; i < (int)InventoryLengths.MiscEquips; i++)
            {
                if (!chosenClass.miscEquips.TryGetValue(i, out string itemName))
                {
                    continue;
                }
                Item item = TShock.Utils.GetItemByIdOrName(itemName).First();

                player.miscEquips[i] = item;
                NetMessage.SendData((int)PacketTypes.PlayerSlot, -1, -1, NetworkText.Empty, tSPlayer.Index, (int)ItemSlot.EquipmentSlot1 + i);
            }

            // Misc Equip Dyes
            for (int i = 0; i < (int)InventoryLengths.MiscEquips; i++)
            {
                if (!chosenClass.miscEquipDyes.TryGetValue(i, out string itemName))
                {
                    continue;
                }
                Item item = TShock.Utils.GetItemByIdOrName(itemName).First();

                player.miscDyes[i] = item;
                NetMessage.SendData((int)PacketTypes.PlayerSlot, -1, -1, NetworkText.Empty, tSPlayer.Index, (int)ItemSlot.DyeEquipmentSlot1 + i);
            }

            tSPlayer.SendSuccessMessage(string.Format("{0} class chosen!", chosenClass.className));
        }