Ejemplo 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));
        }
Ejemplo n.º 2
0
        public static void ResetMap(CommandArgs args)
        {
            TSPlayer tSPlayer = args.Player;

            if (args.Parameters.Count < 1)
            {
                tSPlayer.SendErrorMessage("Invalid syntax! Proper syntax: /resetmap <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;
            }

            if (hubEvent.ResetMap())
            {
                tSPlayer.SendSuccessMessage("The map was successfully reset.");
                return;
            }

            TShock.Log.ConsoleError("The ResetMap method was used but the WorldEdit plugin was not found!");
            tSPlayer.SendErrorMessage("The WorldEdit plugin is required to use this command!");
        }
Ejemplo n.º 3
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));
        }
Ejemplo n.º 4
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));
        }
Ejemplo n.º 5
0
        public static void AddClass(CommandArgs args)
        {
            TSPlayer tSPlayer = args.Player;
            Player   player   = tSPlayer.TPlayer;

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

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

            HubEvent hubEvent = HubEvent.GetEvent(eventName);

            if (hubEvent == null)
            {
                tSPlayer.SendErrorMessage("That is not a valid event!");
                return;
            }

            string className = args.Parameters[0];

            EventClass eventClass = new EventClass
            {
                className = className,
                eventName = hubEvent.eventName,
                maxHealth = player.statLifeMax2,
                maxMana   = player.statManaMax2,
            };

            // Main items, coins, and ammo
            for (int i = 0; i < NetItem.InventorySlots; i++)
            {
                Item item = player.inventory[i];
                if (item.netID == 0)
                {
                    continue;
                }

                ClassItem classItem = new ClassItem()
                {
                    name   = item.Name,
                    stack  = item.stack,
                    prefix = TShock.Utils.GetPrefixById(item.prefix)
                };

                if (i <= (int)ItemSlot.InvRow5Slot10)
                {
                    eventClass.items[i] = classItem;
                }
                else if (i <= (int)ItemSlot.CoinSlot4)
                {
                    int index = i - (int)ItemSlot.CoinSlot1;
                    eventClass.coins[index] = classItem;
                }
                else
                {
                    int index = i - (int)ItemSlot.AmmoSlot1;
                    eventClass.ammo[index] = classItem;
                }
            }

            // Armor, accessories, and their vanity
            for (int i = 0; i < NetItem.ArmorSlots; i++)
            {
                Item item = player.armor[i];
                if (item.netID == 0)
                {
                    continue;
                }

                if (i < (int)InventoryLengths.Armor)
                {
                    eventClass.armor[i] = item.Name;
                }
                else if (i < (int)InventoryLengths.Armor + (int)InventoryLengths.Accessories)
                {
                    int index = i - (int)InventoryLengths.Armor;
                    eventClass.accessories[index] = item.Name;
                }
                else if (i < (int)InventoryLengths.Armor + (int)InventoryLengths.AllAccessories + (int)InventoryLengths.Armor)
                {
                    int index = i - ((int)InventoryLengths.Armor + (int)InventoryLengths.AllAccessories);
                    eventClass.armorVanity[index] = item.Name;
                }
                else
                {
                    int index = i - ((int)InventoryLengths.Armor + (int)InventoryLengths.AllAccessories + (int)InventoryLengths.Armor);
                    eventClass.accessoryVanity[index] = item.Name;
                }
            }

            // Armor and accessory dyes
            for (int i = 0; i < NetItem.DyeSlots; i++)
            {
                Item item = player.dye[i];
                if (item.netID == 0)
                {
                    continue;
                }

                if (i < (int)InventoryLengths.Armor)
                {
                    eventClass.armorDyes[i] = item.Name;
                }
                else
                {
                    int index = i - (int)InventoryLengths.Armor;
                    eventClass.accessoryDyes[index] = item.Name;
                }
            }

            // MiscEquips
            for (int i = 0; i < NetItem.MiscEquipSlots; i++)
            {
                Item item = player.miscEquips[i];
                if (item.netID == 0)
                {
                    continue;
                }

                eventClass.miscEquips[i] = item.Name;
            }

            // MiscEquip Dyes
            for (int i = 0; i < NetItem.MiscEquipSlots; i++)
            {
                Item item = player.miscDyes[i];
                if (item.netID == 0)
                {
                    continue;
                }

                eventClass.miscEquipDyes[i] = item.Name;
            }

            ClassConfig.config.eventClasses.Add(eventClass);

            tSPlayer.SendSuccessMessage("The " + className + " class was successfully added!");
        }