Пример #1
0
        public static bool Execute(ClientInfo sender, List <string> arguments)
        {
            World world = GameManager.Instance.World;

            if (arguments.Count < 2)
            {
                ChatManager.Message(sender, "[85144b]You ugly bitch [FF4136]/start mapId spawnGroup (teamCount)");
                return(false);
            }

            string mapId = arguments[0].Trim();

            if (!VariableContainer.MapExists(mapId))
            {
                ChatManager.Message(sender, string.Format("[FF4136]Map [FF851B]{0} [FF4136]does not exist", mapId));
                return(false);
            }

            int teamCount = 2;

            try
            {
                teamCount = int.Parse(arguments[2]);
            }
            catch (Exception) { }

            string spawnGroup = arguments[1].Trim();
            Map    map        = VariableContainer.GetMap(mapId);

            if (!map.spawns.ContainsKey(spawnGroup))
            {
                ChatManager.Message(sender, string.Format("[FF4136]Group [FF851B]{0}[FF4136] does not exist at [FF851B]{1}", spawnGroup, mapId));
                return(false);
            }

            if (map.spawns[spawnGroup].Count < teamCount)
            {
                ChatManager.Message(sender, string.Format("[FF4136]Group [FF851B]{0}[FF4136] ([FF851B]{1}[FF4136] spawns) is to small for [FF851B]{2}[FF4136] teams",
                                                          spawnGroup,
                                                          map.spawns[spawnGroup].Count,
                                                          teamCount
                                                          ));
                return(false);
            }

            List <ClientInfo> playersToSplit = new List <ClientInfo>();

            foreach (EntityPlayer entityPlayer in world.Players.list)
            {
                ClientInfo client = ConnectionManager.Instance.Clients.ForEntityId(entityPlayer.entityId);
                playersToSplit.Add(client);
            }

            TeamMaker.SplitPlayers(playersToSplit, teamCount);

            VariableContainer.selectedMap = mapId;

            foreach (string teamName in TeamMaker.Teams.Keys)
            {
                Vector3 spawn = map.GetFreeSpawn(spawnGroup);
                TeamMaker.Teams[teamName].spawn = spawn;

                // Regenreate map after player spawn
                foreach (Team.Member player in TeamMaker.Teams[teamName].members)
                {
                    // Respawn event will give items
                    VariableContainer.SetPlayerState(player.pId, ModState.START_GAME);

                    // Kill player
                    Log.Out("Killing bc of start: " + player.nick);
                    player.EntityPlayer().DamageEntity(new DamageSource(EnumDamageSource.Internal, EnumDamageTypes.Suicide), 99999, false, 1f);
                }
            }
            return(false);
        }
Пример #2
0
        public static bool Execute(ClientInfo sender, List <string> arguments)
        {
            World        world        = GameManager.Instance.World;
            EntityPlayer entityPlayer = world.Players.dict[sender.entityId];

            Vector3 playerLocation = entityPlayer.getBellyPosition();
            string  xyz            = string.Format("X: [FFDC00]{0}[DDDDDD], Y: [FFDC00]{1}[DDDDDD], Z: [FFDC00]{2}",
                                                   playerLocation.x,
                                                   playerLocation.y,
                                                   playerLocation.z
                                                   );

            // Prints current position
            if (arguments.Count == 0)
            {
                string msg = string.Format("[DDDDDD]Player: [FFDC00]{0}[DDDDDD], {1}",
                                           sender.playerName.Trim(),
                                           xyz
                                           );

                ChatManager.Message(sender, msg);
                return(false);
            }
            // Lobby or map
            else if (arguments.Count >= 1)
            {
                if (arguments[0] == "lobby")
                {
                    VariableContainer.SetLobbyPosition(playerLocation);

                    string msg = string.Format("[DDDDDD]New pos for: [FFDC00]Lobby[DDDDDD], {0}", xyz);

                    ChatManager.Message(sender, msg);
                    return(false);
                }

                // Must be map id
                string mapId = arguments[0].Trim();

                if (!VariableContainer.MapExists(mapId))
                {
                    VariableContainer.AddMap(new Map(mapId));
                    ChatManager.Message(sender, "[DDDDDD]Created new Map: [FFDC00]" + mapId);
                }

                Map map = VariableContainer.GetMap(mapId);

                string spawnFor = "team";

                if (arguments.Count >= 2)
                {
                    spawnFor = arguments[1].Trim();
                }

                if (arguments.Count >= 3)
                {
                    if (arguments[2].Trim() == "-d")
                    {
                        if (!map.spawns.ContainsKey(spawnFor))
                        {
                            ChatManager.Message(sender, string.Format("[DDDDDD]Group [FFDC00]{0} [DDDDDD]does not exist", spawnFor));
                            return(false);
                        }

                        // Delete latest
                        int index = map.spawns[spawnFor].Count - 1;

                        if (arguments.Count == 4)
                        {
                            try
                            {
                                index = int.Parse(arguments[3].Trim());
                            } catch { }
                        }

                        map.spawns[spawnFor].RemoveAt(index);
                        if (map.spawns[spawnFor].Count == 0)
                        {
                            map.spawns.Remove(spawnFor);
                            ChatManager.Message(sender, string.Format("[DDDDDD]Group [FFDC00]{0}[DDDDDD] at map [FFDC00]{1}[DDDDDD] has been deleted", spawnFor, mapId));
                        }
                        else
                        {
                            ChatManager.Message(sender, string.Format("[DDDDDD]Removed spawn for group [FFDC00]{0}[DDDDDD] at map [FFDC00]{1}", spawnFor, mapId));
                        }
                    }
                    else
                    {
                        ChatManager.Message(sender, "[DDDDDD]Usage: /pos mapId spawnGroup [FFDC00]-d [index]");
                        return(false);
                    }
                }
                else
                {
                    // Add spawn for group
                    map.AddSpawn(spawnFor, playerLocation);
                    ChatManager.Message(sender, string.Format("[DDDDDD]New pos for: [FFDC00]{0} ({1})[DDDDDD], {2}", mapId, spawnFor, xyz));
                }

                // Save
                VariableContainer.SetMap(map);
                Configs.Save();
                return(false);
            }
            else
            {
                ChatManager.Message(sender, "[DDDDDD]Usage: [FFDC00]/pos [lobby/mapId] [spawnGroup] [-d [index]]");
                return(false);
            }
        }