コード例 #1
0
        public override void Use(Player p, string message)
        {
            if (message == "")
            {
                Help(p); return;
            }

            if (message == "list" || message == "liste")
            {
                if (listGame.Count == 0)
                {
                    Player.SendMessage(p, "Aucun jeu ne propose de statistiques");
                }

                string li = "";
                foreach (string g in listGame)
                {
                    li += g + ", ";
                }
                Player.SendMessage(p, "Jeux avec statistiques : " + li.Remove(li.Length - 2));
                return;
            }

            if (message.Split(' ').Length < 2)
            {
                Help(p); return;
            }

            switch (message.Split(' ')[0])
            {
            case "top":
                switch (message.Split(' ')[1])
                {
                case "bomberman":
                    BombermanGame.top(p);
                    break;

                case "ctf":
                    CTFGame2.top(p);
                    break;

                case "infection":
                    InfectionGame.top(p);
                    break;

                default:
                    Player.SendMessage(p, "Le jeu '" + message.Split(' ')[1] + "' n'a pas de statistiques");
                    break;
                }
                break;

            case "reset":
                if (p.group.Permission < LevelPermission.Admin)
                {
                    Player.SendMessage(p, "Tu n'a pas les permissions de faire ca");
                }
                if (!listGame.Exists(m => m == message.Split(' ')[1]))
                {
                    Player.SendMessage(p, "Le jeu '" + message.Split(' ')[1] + "' n'a pas de statistiques");
                }
                if (message.Split(' ').Length == 2)     //resetjeu
                {
                    BaseGame.resetGame(message.Split(' ')[1]);
                    Player.SendMessage(p, "Statistiques du jeu '" + message.Split(' ')[1] + "' reinitialise");
                }
                else
                {
                    BaseGame.resetPlayer(message.Split(' ')[2], message.Split(' ')[1]);
                    Player.SendMessage(p, "Statistique de '" + message.Split(' ')[2] + "' reset sur '" + message.Split(' ')[1] + "'");
                }
                break;

            case "bomberman":
                BombermanGame.stats(p, message.Split(' ')[1]);
                break;

            case "ctf":
                CTFGame2.stats(p, message.Split(' ')[1]);
                break;

            case "infection":
                InfectionGame.stats(p, message.Split(' ')[1]);
                break;

            default:
                Player.SendMessage(p, "Le jeu '" + message.Split(' ')[0] + "' n'a pas de statistiques");
                break;
            }
        }
コード例 #2
0
        public override void Use(Player p, string message)
        {
            if (p == null)
            {
                Player.SendMessage(p, "Impossible depuis la console ou l'irc"); return;
            }


            BaseGame      gameInfo = Server.allGames.Find(g => g.lvl == p.level);
            InfectionGame InfInfo  = null;

            if (gameInfo != null)
            {
                if (gameInfo.typeGame == "infection")
                {
                    InfInfo = (InfectionGame)gameInfo;
                }
            }

            string key = "";

            if (message == "")
            {
                ;
            }
            else if (message.IndexOf(' ') == -1)
            {
                key = message; message = "";
            }
            else
            {
                key = message.Split(' ')[0]; message = message.Substring(message.IndexOf(' ') + 1);
            }

            switch (key.ToLower())
            {
            case "start":
                if (!verif(gameInfo, p))
                {
                    return;
                }
                if (InfInfo.gameOn)
                {
                    Player.SendMessage(p, "Le jeu est deja lance"); return;
                }
                InfInfo.startGame(p);
                break;

            case "stop":
                if (!verif(gameInfo, p))
                {
                    return;
                }
                if (!InfInfo.gameOn)
                {
                    Player.SendMessage(p, "Le jeu n'est pas lance"); return;
                }
                InfInfo.gameOn = false;
                InfInfo.stopGame(p);
                break;

            case "info":
                if (gameInfo == null)
                {
                    Player.SendMessage(p, "Il y a aucune partie en cours sur la map"); return;
                }
                if (gameInfo.typeGame.ToLower() != "infection")
                {
                    Player.SendMessage(p, "L'infection n'est pas actif sur cette map"); return;
                }
                InfInfo.GameInfo(p);
                break;

            case "list":
                BaseGame.listSave(p, "ctf");
                break;

            case "save":
                if (!verif(gameInfo, p))
                {
                    return;
                }
                if (InfInfo.gameOn)
                {
                    Player.SendMessage(p, "Impossible de sauvegarder les configurations quand l'infection est lance"); return;
                }
                InfInfo.saveGame(p, message);
                break;

            case "load":
                if (!verif(gameInfo, p))
                {
                    return;
                }
                if (InfInfo.gameOn)
                {
                    Player.SendMessage(p, "Impossible de charger une configuration quand l'infection est lance"); return;
                }
                InfInfo.loadGame(p, message);
                break;

            case "blocs":
            case "blocks":
                if (!verif(gameInfo, p))
                {
                    return;
                }
                int nbBlocs = 0;
                Int32.TryParse(message, out nbBlocs);
                if (nbBlocs <= 0)
                {
                    Player.SendMessage(p, "Vous devez choisir un nombre de blocs superieur a 0 !"); return;
                }
                InfInfo.nbBlocsAllow = nbBlocs;
                Player.SendMessage(p, "Le nombre de blocs posable a ete mis a " + nbBlocs);
                break;

            case "time":
            case "temps":
                if (!verif(gameInfo, p))
                {
                    return;
                }
                int nbMins = 0;
                Int32.TryParse(message, out nbMins);
                if (nbMins <= 0)
                {
                    Player.SendMessage(p, "Vous devez choisir un temps superieur a 0 !"); return;
                }
                if (nbMins >= 30)
                {
                    Player.SendMessage(p, "Vous devez choisir un temps de moins de 30 min !"); return;
                }
                InfInfo.time = nbMins;
                Player.SendMessage(p, "Le temps d'une partie est regle a " + nbMins + " minutes");
                break;

            default:
                if (gameInfo == null)
                {
                    if (p.level.world != p.name.ToLower() && p.group.Permission < LevelPermission.Operator)
                    {
                        Player.SendMessage(p, "Vous ne pouvez pas lancer de jeu dans ce monde"); return;
                    }

                    if (Server.allGames.Count > Server.maxGames)
                    {
                        Player.SendMessage(p, "Le maximum de jeux en simultanees est attein");
                        Player.SendMessage(p, "Attendez qu'une partie se finisse avant d'en lancer une autre");
                        return;
                    }
                    InfectionGame infection = new InfectionGame(p.level);
                    infection.owner = p;

                    if (key == "")
                    {
                        Player.SendMessage(p, "Vous devez donner un nom a la partie"); return;
                    }
                    if (message != "")
                    {
                        Player.SendMessage(p, "Le nom de la partie doit etre fait d'un seul mot"); return;
                    }
                    infection.name = key;

                    if (!BaseGame.addGame(infection))
                    {
                        Player.SendMessage(p, "Impossible de creer le jeu, reessayez !"); return;
                    }

                    Player.SendMessage(p, "Creation du ctf termine");
                    Player.GlobalMessage("Une infection vas bientot demarrer sur &b" + infection.lvl.name + Server.DefaultColor + " du monde &b" + infection.lvl.world);
                    return;
                }

                if (gameInfo.typeGame.ToLower() != "infection")
                {
                    Player.SendMessage(p, "Un jeu est deja actif sur cette map"); return;
                }

                if (gameInfo != null)
                {
                    if (p != gameInfo.owner || p.group.Permission < LevelPermission.Operator)
                    {
                        Player.SendMessage(p, "Vous n'etes pas le maitre de la partie"); return;
                    }
                    if (gameInfo.gameOn)
                    {
                        Player.SendMessage(p, "Arettez la partie avant de desactiver l'infection"); return;
                    }

                    gameInfo.deleteGame(p);

                    Player.GlobalMessageLevel(p.level, "Infection desactive");
                    return;
                }
                break;
            }
        }