Пример #1
0
        public void AboutBlockchange(Player p, ushort x, ushort y, ushort z, byte type)
        {
            if (!p.staticCommands)
            {
                p.ClearBlockchange();
            }
            byte b = p.level.GetTile(x, y, z);

            if (b == Block.Zero)
            {
                Player.SendMessage(p, "Bloc invalide (" + x + "," + y + "," + z + ")!"); return;
            }
            p.SendBlockchange(x, y, z, b);

            string message = "Block (" + x + "," + y + "," + z + "): ";

            message += "&f" + b + " = " + Block.Name(b);
            Player.SendMessage(p, message + Server.DefaultColor + ".");
            message = p.level.foundInfo(x, y, z);
            if (message != "")
            {
                Player.SendMessage(p, "Physiques informations: &a" + message);
            }

            DataTable Blocks = MySQL.fillData("SELECT * FROM `Block" + p.level.name + "." + p.level.world + "` WHERE X=" + (int)x + " AND Y=" + (int)y + " AND Z=" + (int)z);

            string Username, TimePerformed, BlockUsed;
            bool   Deleted, foundOne = false;

            for (int i = 0; i < Blocks.Rows.Count; i++)
            {
                foundOne      = true;
                Username      = Blocks.Rows[i]["Username"].ToString();
                TimePerformed = DateTime.Parse(Blocks.Rows[i]["TimePerformed"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
                BlockUsed     = Block.Name((byte)Blocks.Rows[i]["Type"]).ToString();
                Deleted       = (bool)Blocks.Rows[i]["Deleted"];

                if (!Deleted)
                {
                    Player.SendMessage(p, "&3Cree par " + Server.FindColor(Username.Trim()) + Username.Trim() + Server.DefaultColor + ", using &3" + BlockUsed);
                }
                else
                {
                    Player.SendMessage(p, "&4Detruit par " + Server.FindColor(Username.Trim()) + Username.Trim() + Server.DefaultColor + ", using &3" + BlockUsed);
                }
                Player.SendMessage(p, "Date et heure de modifications: &2" + TimePerformed);
            }

            List <Level.BlockPos> inCache = p.level.blockCache.FindAll(bP => bP.x == x && bP.y == y && bP.z == z);

            for (int i = 0; i < inCache.Count; i++)
            {
                foundOne      = true;
                Deleted       = inCache[i].deleted;
                Username      = inCache[i].name;
                TimePerformed = inCache[i].TimePerformed.ToString("yyyy-MM-dd HH:mm:ss");
                BlockUsed     = Block.Name(inCache[i].type);

                if (!Deleted)
                {
                    Player.SendMessage(p, "&3Cree par " + Server.FindColor(Username.Trim()) + Username.Trim() + Server.DefaultColor + ", using &3" + BlockUsed);
                }
                else
                {
                    Player.SendMessage(p, "&4detruit par " + Server.FindColor(Username.Trim()) + Username.Trim() + Server.DefaultColor + ", using &3" + BlockUsed);
                }
                Player.SendMessage(p, "Date et heure de modifications: &2" + TimePerformed);
            }

            if (!foundOne)
            {
                Player.SendMessage(p, "Ce bloc n'a jamais ete modifie.");
            }

            Blocks.Dispose();

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
Пример #2
0
        public override void Use(Player p, string message)
        {
            if (message == "")
            {
                Help(p); return;
            }

            int    pos = message.IndexOf(' ');
            Player who = Player.Find(message.Split(' ')[0]);

            if (who == null)
            {
                Player.SendMessage(p, "Impossible de trouver le joueur."); return;
            }

            if (p != null)
            {
                if (p.group.Permission <= LevelPermission.Vip && p != who)
                {
                    Player.SendMessage(p, "Vous ne pouvez pas changer le titre d'un autre joueur"); return;
                }
            }

            string query;
            string newTitle = "";

            if (message.Split(' ').Length > 1)
            {
                newTitle = message.Substring(pos + 1);
            }
            else
            {
                who.title = "";
                who.SetPrefix();
                Player.GlobalChat(null, who.color + who.Name() + Server.DefaultColor + " a perdu son titre.", false);
                query = "UPDATE Players SET Title = '' WHERE Name = '" + who.name + "'";
                MySQL.executeQuery(query);
                return;
            }

            if (newTitle != "")
            {
                newTitle = newTitle.ToString().Trim().Replace("[", "");
                newTitle = newTitle.Replace("]", "");
            }

            if (newTitle.Length > 17)
            {
                Player.SendMessage(p, "Le titre doit avoir 17 caracteres maximum."); return;
            }
            if (!Server.devs.Contains(who.name) && newTitle.ToLower() == "dev")
            {
                Player.SendMessage(p, "Vous ne pouvez pas faire ca."); return;
            }

            newTitle = newTitle.Replace("'", " ");
            if (newTitle != "")
            {
                Player.GlobalChat(null, who.color + who.Name() + Server.DefaultColor + " a gagne le titre de &b[" + newTitle + "]", false);
            }
            else
            {
                Player.GlobalChat(null, who.color + who.prefix + who.Name() + Server.DefaultColor + " a perdu son titre.", false);
            }

            if (newTitle == "")
            {
                query = "UPDATE Players SET Title = '' WHERE Name = '" + who.name + "'";
            }
            else
            {
                query = "UPDATE Players SET Title = '" + newTitle.Replace("'", "\'") + "' WHERE Name = '" + who.name + "'";
            }
            MySQL.executeQuery(query);
            who.title = newTitle;
            who.SetPrefix();
        }
Пример #3
0
        public static void top(Player p)
        {
            DataTable maxDb = MySQL.fillData("SELECT MAX(nbPoints), MAX(nbKills), MAX(nbDeaths), MAX(nbFlags), MAX(nbJeux), MAX(nbWins), MAX(nbLooses) FROM ctf");

            int maxKill   = int.Parse(maxDb.Rows[0]["MAX(nbKills)"].ToString());
            int maxDeath  = int.Parse(maxDb.Rows[0]["MAX(nbDeaths)"].ToString());
            int maxPoint  = int.Parse(maxDb.Rows[0]["MAX(nbPoints)"].ToString());
            int maxFlag   = int.Parse(maxDb.Rows[0]["MAX(nbFlags)"].ToString());
            int maxJeux   = int.Parse(maxDb.Rows[0]["MAX(nbJeux)"].ToString());
            int maxWins   = int.Parse(maxDb.Rows[0]["MAX(nbWins)"].ToString());
            int maxLooses = int.Parse(maxDb.Rows[0]["MAX(nbLooses)"].ToString());

            maxDb.Dispose();

            Player.SendMessage(p, "CTF - le top :");
            DataTable namePoints = MySQL.fillData("SELECT Name FROM ctf WHERE nbPoints=" + maxPoint);

            if (namePoints.Rows.Count != 0)
            {
                Player.SendMessage(p, "Joueur ayant le plus de points : &2" + namePoints.Rows[0]["name"] + " (" + maxPoint + ")");
            }
            namePoints.Dispose();

            DataTable nameGames = MySQL.fillData("SELECT Name FROM ctf WHERE nbJeux=" + maxJeux);

            if (namePoints.Rows.Count != 0)
            {
                Player.SendMessage(p, "Joueur participe au plus de parties : &2" + nameGames.Rows[0]["name"] + " (" + maxJeux + ")");
            }
            namePoints.Dispose();

            DataTable nameWin = MySQL.fillData("SELECT Name FROM ctf WHERE nbWins=" + maxWins);

            if (namePoints.Rows.Count != 0)
            {
                Player.SendMessage(p, "Joueur le plus victorieux : &2" + nameWin.Rows[0]["name"] + " (" + maxWins + ")");
            }
            namePoints.Dispose();

            DataTable nameLooses = MySQL.fillData("SELECT Name FROM ctf WHERE nbLooses=" + maxLooses);

            if (namePoints.Rows.Count != 0)
            {
                Player.SendMessage(p, "Joueur ayant accumule le plus de defaites : &2" + nameLooses.Rows[0]["name"] + " (" + maxLooses + ")");
            }
            namePoints.Dispose();

            DataTable nameFlags = MySQL.fillData("SELECT Name FROM ctf WHERE nbFlags=" + maxFlag);

            if (namePoints.Rows.Count != 0)
            {
                Player.SendMessage(p, "Joueur ayant le plus de points : &2" + nameFlags.Rows[0]["name"] + " (" + maxFlag + ")");
            }
            namePoints.Dispose();

            DataTable nameKills = MySQL.fillData("SELECT Name FROM ctf WHERE nbKills=" + maxKill);

            if (nameKills.Rows.Count != 0)
            {
                Player.SendMessage(p, "Joueur ayant le plus de kills : &2" + nameKills.Rows[0]["name"] + " (" + maxKill + ")");
            }
            nameKills.Dispose();

            DataTable nameDeaths = MySQL.fillData("SELECT Name FROM ctf WHERE nbDeaths=" + maxDeath);

            if (nameDeaths.Rows.Count != 0)
            {
                Player.SendMessage(p, "Joueur ayant le plus de morts : &2" + nameDeaths.Rows[0]["name"] + " (" + maxDeath + ")");
            }
            nameDeaths.Dispose();
        }
Пример #4
0
 public void savePlayer(pinfo pi)
 {
     MySQL.executeQuery("UPDATE ctf SET nbKills= " + pi.nbKills + ", nbDeaths= " + pi.nbDeaths + ", nbJeux= " + pi.nbGames + ", nbWins= " + pi.nbWin + ", nbLooses= " + pi.nbLoose + ", nbFlags= " + pi.nbFlags + ", nbPoints=" + pi.nbPoints + " WHERE Name='" + pi.p.name + "'");
 }
Пример #5
0
        public void Start()
        {
            shuttingDown = false;
            Log("Starting Server");

            if (!Directory.Exists("properties"))
            {
                Directory.CreateDirectory("properties");
            }
            if (!Directory.Exists("bots"))
            {
                Directory.CreateDirectory("bots");
            }
            if (!Directory.Exists("text"))
            {
                Directory.CreateDirectory("text");
            }
            if (!File.Exists("text/rulesAccepted.txt"))
            {
                File.Create("text/rulesAccepted.txt");
            }
            if (!File.Exists("text/MapsPlayers.txt"))
            {
                File.Create("text/MapsPlayers.txt");
            }

            if (!Directory.Exists("extra"))
            {
                Directory.CreateDirectory("extra");
            }
            if (!Directory.Exists("extra/undo"))
            {
                Directory.CreateDirectory("extra/undo");
            }
            if (!Directory.Exists("extra/undoPrevious"))
            {
                Directory.CreateDirectory("extra/undoPrevious");
            }
            if (!Directory.Exists("extra/copy/"))
            {
                Directory.CreateDirectory("extra/copy/");
            }
            if (!Directory.Exists("extra/copyBackup/"))
            {
                Directory.CreateDirectory("extra/copyBackup/");
            }

            try
            {
                if (File.Exists("server.properties"))
                {
                    File.Move("server.properties", "properties/server.properties");
                }
                if (File.Exists("rules.txt"))
                {
                    File.Move("rules.txt", "text/rules.txt");
                }
                if (File.Exists("welcome.txt"))
                {
                    File.Move("welcome.txt", "text/welcome.txt");
                }
                if (File.Exists("messages.txt"))
                {
                    File.Move("messages.txt", "text/messages.txt");
                }
                if (File.Exists("externalurl.txt"))
                {
                    File.Move("externalurl.txt", "text/externalurl.txt");
                }
                if (File.Exists("autoload.txt"))
                {
                    File.Move("autoload.txt", "text/autoload.txt");
                }
                if (File.Exists("IRC_Controllers.txt"))
                {
                    File.Move("IRC_Controllers.txt", "ranks/IRC_Controllers.txt");
                }
                if (Server.useWhitelist)
                {
                    if (File.Exists("whitelist.txt"))
                    {
                        File.Move("whitelist.txt", "ranks/whitelist.txt");
                    }
                }
            } catch { }

            Properties.Load("properties/server.properties");

            Group.InitAll();
            Command.InitAll();
            GrpCommands.fillRanks();
            Block.SetBlocks();
            Awards.Load();
            loadDeaths();

            if (File.Exists("text/emotelist.txt"))
            {
                foreach (string s in File.ReadAllLines("text/emotelist.txt"))
                {
                    Player.emoteList.Add(s);
                }
            }
            else
            {
                File.Create("text/emotelist.txt");
            }

            timeOnline = DateTime.Now;

            try
            {
                MySQL.executeQuery("CREATE DATABASE if not exists `" + MySQLDatabaseName + "`", true);
            }
            catch (Exception e)
            {
                Server.s.Log("MySQL settings have not been set! Please reference the MySQL_Setup.txt file on setting up MySQL!");
                Server.ErrorLog(e);
                //process.Kill();
                return;
            }

            MySQL.executeQuery("CREATE TABLE if not exists Players (ID MEDIUMINT not null auto_increment, Name VARCHAR(20), IP CHAR(15), FirstLogin DATETIME, LastLogin DATETIME, totalLogin MEDIUMINT, Title CHAR(20), TotalDeaths SMALLINT, Money MEDIUMINT UNSIGNED, totalBlocks BIGINT, totalKicked MEDIUMINT, rulesAccepted BOOL, nbMapsMax SMALLINT UNSIGNED, totalTimePlayed TIME, color VARCHAR(6), title_color VARCHAR(6), PRIMARY KEY (ID));");

            // Check if the color column exists.
            DataTable RulesAExists = MySQL.fillData("SHOW COLUMNS FROM Players WHERE `Field`='rulesAccepted'");

            if (RulesAExists.Rows.Count == 0)
            {
                MySQL.executeQuery("ALTER TABLE Players ADD COLUMN rulesAccepted BOOL AFTER totalKicked");
            }
            RulesAExists.Dispose();

            DataTable NbMapsMaxExists = MySQL.fillData("SHOW COLUMNS FROM Players WHERE `Field`='nbMapsMax'");

            if (NbMapsMaxExists.Rows.Count == 0)
            {
                MySQL.executeQuery("ALTER TABLE Players ADD COLUMN nbMapsMax SMALLINT UNSIGNED AFTER rulesAccepted");
            }
            NbMapsMaxExists.Dispose();

            DataTable TotalPlayedExists = MySQL.fillData("SHOW COLUMNS FROM Players WHERE `Field`='totalTimePlayed'");

            if (TotalPlayedExists.Rows.Count == 0)
            {
                MySQL.executeQuery("ALTER TABLE Players ADD COLUMN totalTimePlayed TIME AFTER nbMapsMax");
            }

            TotalPlayedExists.Dispose();

            DataTable colorExists = MySQL.fillData("SHOW COLUMNS FROM Players WHERE `Field`='color'");

            if (colorExists.Rows.Count == 0)
            {
                MySQL.executeQuery("ALTER TABLE Players ADD COLUMN color VARCHAR(6) AFTER totalTimePlayed");
            }
            colorExists.Dispose();

            // Check if the title color column exists.
            DataTable tcolorExists = MySQL.fillData("SHOW COLUMNS FROM Players WHERE `Field`='title_color'");

            if (tcolorExists.Rows.Count == 0)
            {
                MySQL.executeQuery("ALTER TABLE Players ADD COLUMN title_color VARCHAR(6) AFTER color");
            }
            tcolorExists.Dispose();

            if (levels != null)
            {
                for (int i = 0; i < levels.Count; i++)
                {
                    levels[i].Unload();
                }
            }

            ml.Queue(delegate
            {
                try
                {
                    levels = new List <Level>(Server.maps);
                    MapGen = new MapGenerator();

                    Random random = new Random();
                    if (!Directory.Exists("levels"))
                    {
                        Directory.CreateDirectory("levels");
                    }

                    if (!Directory.Exists("levels/" + mainWorld))
                    {
                        Directory.CreateDirectory("levels/" + mainWorld);
                    }

                    if (File.Exists("levels/" + mainWorld + "/" + Server.level + ".lvl"))
                    {
                        mainLevel        = Level.Load(Server.level, mainWorld);
                        mainLevel.unload = false;
                        if (mainLevel == null)
                        {
                            if (File.Exists("levels/" + mainWorld + "/" + Server.level + ".lvl.backup"))
                            {
                                Log("Attempting to load backup.");
                                File.Copy("levels/" + mainWorld + "/" + Server.level + ".lvl.backup", "levels/" + mainWorld + "/" + Server.level + ".lvl", true);
                                mainLevel = Level.Load(Server.level, mainWorld);
                                if (mainLevel == null)
                                {
                                    Log("BACKUP FAILED!");
                                    Console.ReadLine(); return;
                                }
                            }
                            else
                            {
                                Log("mainlevel not found");
                                mainLevel = new Level(Server.level, 128, 64, 128, "flat");

                                mainLevel.pervisit = true;
                                mainLevel.perbuild = true;
                                mainLevel.pergun   = false;
                                mainLevel.world    = mainWorld;
                                mainLevel.Save();
                            }
                        }
                    }
                    else
                    {
                        Log("mainlevel not found");
                        mainLevel = new Level(Server.level, 128, 64, 128, "flat");

                        mainLevel.pervisit = true;
                        mainLevel.perbuild = true;
                        mainLevel.pergun   = false;
                        mainLevel.world    = mainWorld;
                        mainLevel.Save();
                    }
                    addLevel(mainLevel);
                    mainLevel.physThread.Start();
                } catch (Exception e) { Server.ErrorLog(e); }
            });

            loadSalon();

            ml.Queue(delegate
            {
                bannedIP       = PlayerList.Load("banned-ip.txt", null);
                ircControllers = PlayerList.Load("IRC_Controllers.txt", null);

                foreach (Group grp in Group.GroupList)
                {
                    grp.playerList = PlayerList.Load(grp.fileName, grp);
                }
                if (Server.useWhitelist)
                {
                    whiteList = PlayerList.Load("whitelist.txt", null);
                }
            });



            ml.Queue(delegate
            {
                Log("Creating listening socket on port " + Server.port + "... ");
                if (Setup())
                {
                    s.Log("Done.");
                }
                else
                {
                    s.Log("Could not create socket connection.  Shutting down.");
                    return;
                }
            });

            ml.Queue(delegate
            {
                updateTimer.Elapsed += delegate
                {
                    Player.GlobalUpdate();
                    PlayerBot.GlobalUpdatePosition();
                };

                updateTimer.Start();
            });


            // Heartbeat code here:

            ml.Queue(delegate
            {
                try
                {
                    Heartbeat.Init();
                }
                catch (Exception e)
                {
                    Server.ErrorLog(e);
                }
            });

            // END Heartbeat code

            /*
             * Thread processThread = new Thread(new ThreadStart(delegate
             * {
             *  try
             *  {
             *      PCCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
             *      ProcessCounter = new PerformanceCounter("Process", "% Processor Time", Process.GetCurrentProcess().ProcessName);
             *      PCCounter.BeginInit();
             *      ProcessCounter.BeginInit();
             *      PCCounter.NextValue();
             *      ProcessCounter.NextValue();
             *  }
             *  catch { }
             * }));
             * processThread.Start();
             */

            ml.Queue(delegate
            {
                messageTimer.Elapsed += delegate
                {
                    RandomMessage();
                };
                messageTimer.Start();

                process = System.Diagnostics.Process.GetCurrentProcess();

                if (File.Exists("text/messages.txt"))
                {
                    StreamReader r = File.OpenText("text/messages.txt");
                    while (!r.EndOfStream)
                    {
                        messages.Add(r.ReadLine());
                    }
                    r.Dispose();
                }
                else
                {
                    File.Create("text/messages.txt").Close();
                }

                if (Server.irc)
                {
                    new IRCBot();
                }


                //      string CheckName = "FROSTEDBUTTS";

                //       if (Server.name.IndexOf(CheckName.ToLower())!= -1){ Server.s.Log("FROSTEDBUTTS DETECTED");}
                new AutoSaver(Server.backupInterval);     //2 and a half mins

                blockThread = new Thread(new ThreadStart(delegate
                {
                    while (true)
                    {
                        Thread.Sleep(blockInterval * 1000);
                        for (int i = 0; i < levels.Count; i++)
                        {
                            levels[i].saveChanges();
                        }
                    }
                }));
                blockThread.Start();

                locationChecker = new Thread(new ThreadStart(delegate
                {
                    while (true)
                    {
                        Thread.Sleep(3);
                        for (int i = 0; i < Player.players.Count; i++)
                        {
                            try
                            {
                                Player p = Player.players[i];

                                if (p.frozen)
                                {
                                    unchecked { p.SendPos((byte)-1, p.pos[0], p.pos[1], p.pos[2], p.rot[0], p.rot[1]); } continue;
                                }
                                else if (p.following != "")
                                {
                                    Player who = Player.Find(p.following);
                                    if (who == null || who.level != p.level)
                                    {
                                        p.following = "";
                                        if (!p.canBuild)
                                        {
                                            p.canBuild = true;
                                        }
                                        if (who != null && who.possess == p.name)
                                        {
                                            who.possess = "";
                                        }
                                        continue;
                                    }
                                    if (p.canBuild)
                                    {
                                        unchecked { p.SendPos((byte)-1, who.pos[0], (ushort)(who.pos[1] - 16), who.pos[2], who.rot[0], who.rot[1]); }
                                    }
                                    else
                                    {
                                        unchecked { p.SendPos((byte)-1, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1]); }
                                    }
                                }
                                else if (p.possess != "")
                                {
                                    Player who = Player.Find(p.possess);
                                    if (who == null || who.level != p.level)
                                    {
                                        p.possess = "";
                                    }
                                }

                                ushort x = (ushort)(p.pos[0] / 32);
                                ushort y = (ushort)(p.pos[1] / 32);
                                ushort z = (ushort)(p.pos[2] / 32);

                                if (p.level.Death)
                                {
                                    p.RealDeath(x, y, z);
                                }
                                p.CheckBlock(x, y, z);

                                p.oldBlock = (ushort)(x + y + z);
                            } catch (Exception e) { Server.ErrorLog(e); }
                        }
                    }
                }));

                locationChecker.Start();

                Log("Finished setting up server");
            });
        }
Пример #6
0
        public override void Use(Player p, string message)
        {
            if (p == null)
            {
                Player.SendMessage(p, "Impossible depuis la console ou l'irc"); return;
            }

            if (message == "")
            {
                Help(p); return;
            }

            if (p.group.Permission < LevelPermission.Admin && p.level.world.ToLower() != p.name.ToLower())
            {
                Player.SendMessage(p, "Vous ne pouvez pas reinitialiser une map dans ce monde"); return;
            }

            string lvl = "", world = "", newType = "flat";
            ushort x = 0, y = 0, z = 0;
            bool   newTailles = false;

            if (message.IndexOf(' ') == -1)
            {
                lvl = message;
            }
            else
            {
                lvl = message.Split(' ')[0];
                if (message.Split(' ').Length == 2)
                {
                    newType = message.Split(' ')[1];
                }
                else
                {
                    if (message.Split(' ').Length != 4 && message.Split(' ').Length != 5)
                    {
                        Help(p); return;
                    }
                    if (message.Split(' ').Length == 6)
                    {
                        newType = message.Split(' ')[4];
                    }
                    try
                    {
                        x = Convert.ToUInt16(message.Split(' ')[1]);
                        y = Convert.ToUInt16(message.Split(' ')[2]);
                        z = Convert.ToUInt16(message.Split(' ')[3]);
                    }
                    catch { Player.SendMessage(p, "Dimentions invalides."); return; }
                    newTailles = true;
                }
            }

            switch (newType)
            {
            case "flat":
            case "pixel":
            case "island":
            case "mountains":
            case "ocean":
            case "forest":
            case "desert":
                break;

            default:
                Player.SendMessage(p, "Types valides: island, mountains, forest, ocean, flat, pixel, desert"); return;
            }

            if (!newTailles)
            {
                Level level = Level.Find(lvl, p.level.world);
                if (level == null)
                {
                    if (!File.Exists("levels/" + p.level.world + "/" + lvl + ".lvl"))
                    {
                        Player.SendMessage(p, "La map '" + lvl + "' n'existe pas"); return;
                    }
                    level = Level.Load(lvl, p.level.world, 0);

                    world = p.level.world;
                    x     = level.width;
                    y     = level.depth;
                    z     = level.height;

                    level.blocks = new byte[0];

                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }
                else
                {
                    world = level.world;
                    lvl   = level.name;
                    x     = level.width;
                    y     = level.depth;
                    z     = level.height;
                    Command.all.Find("unload").Use(p, level.name);
                }
            }
            else
            {
                world = p.level.world;
                Level level = Level.Find(lvl, p.level.world);
                if (level != null)
                {
                    Command.all.Find("unload").Use(p, level.name);
                }
            }

            try
            {
                Level l = new Level(lvl, x, y, z, newType);
                l.world = world;
                l.Save(true);
                l.blocks = new byte[0];
            }
            finally
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            MySQL.executeQuery("DELETE FROM `Block" + lvl + "." + world + "`");
            MySQL.executeQuery("DELETE FROM `Portals" + lvl + "." + world + "`");
            MySQL.executeQuery("DELETE FROM `Messages" + lvl + "." + world + "`");
            MySQL.executeQuery("DELETE FROM `Like" + lvl + "." + world + "`");

            Player.SendMessage(p, "Map '" + lvl + "' reinitialise !");
        }
Пример #7
0
 public static void resetPlayer(string pname, string typegame)
 {
     MySQL.executeQuery("DELETE FROM " + typegame + " WHERE Name='" + pname + "'");
 }
Пример #8
0
        public override void Use(Player p, string message)
        {
            if (p == null)
            {
                Player.SendMessage(p, "Impossible depuis la console ou l'irc"); return;
            }

            if (!Directory.Exists("levelsdeleted"))
            {
                Directory.CreateDirectory("levelsdeleted");
            }

            if (p.group.Permission < LevelPermission.Admin && p.level.world.ToLower() != p.name.ToLower())
            {
                Player.SendMessage(p, "Vous ne pouvez pas supprimer de map dans ce monde"); return;
            }

            if (message.Split(' ').Length != 1)
            {
                Help(p); return;
            }
            string lvl   = "";
            string world = "";

            lvl = message; world = p.level.world;

            if (lvl == "spawn")
            {
                Player.SendMessage(p, "Impossible de suppimer votre spawn."); return;
            }

            Level foundLevel = Level.Find(lvl, world);

            if (foundLevel == Server.mainLevel)
            {
                Player.SendMessage(p, "Impossible de suppimer la map principale."); return;
            }
            if (foundLevel != null)
            {
                foundLevel.Unload();
            }

            try
            {
                if (!Directory.Exists("levelsdeleted/" + world))
                {
                    Directory.CreateDirectory("levelsdeleted/" + world);
                }

                if (File.Exists("levels/" + world + "/" + lvl + ".lvl"))
                {
                    if (File.Exists("levelsdeleted/" + world + "/" + lvl + ".lvl"))
                    {
                        int currentNum = 0;
                        while (File.Exists("levelsdeleted/" + world + "/" + lvl + currentNum + ".lvl"))
                        {
                            currentNum++;
                        }

                        File.Move("levels/" + world + "/" + lvl + ".lvl", "levelsdeleted/" + world + "/" + lvl + currentNum + ".lvl");
                    }
                    else
                    {
                        File.Move("levels/" + world + "/" + lvl + ".lvl", "levelsdeleted/" + world + "/" + lvl + ".lvl");
                    }
                    Player.SendMessage(p, "Sauvegarde cree.");

                    try { File.Delete("levels/" + world + "/level properties/" + lvl + ".properties"); }
                    catch { }
                    try { File.Delete("levels/" + world + "/level properties/" + lvl); }
                    catch { }

                    MySQL.executeQuery("DROP TABLE `Block" + lvl + "." + world + "`");
                    MySQL.executeQuery("DROP TABLE `Portals" + lvl + "." + world + "`");
                    MySQL.executeQuery("DROP TABLE `Messages" + lvl + "." + world + "`");
                    MySQL.executeQuery("DROP TABLE `Like" + lvl + "." + world + "`");

                    foreach (Player pl in Player.players)
                    {
                        if (pl.level.world == world)
                        {
                            Player.SendMessage(pl, "Map \"" + lvl + "\" supprimee");
                        }
                    }

                    if (p.level.world.ToLower() == p.name.ToLower())
                    {
                        p.nbMaps--;
                    }
                    else
                    {
                        Player who = Player.Find(p.level.world.ToLower());
                        if (who != null)
                        {
                            who.nbMaps--;
                        }
                    }
                }
                else
                {
                    Player.SendMessage(p, "Impossible de trouver la map.");
                }
            }
            catch (Exception e) { Player.SendMessage(p, "Erreur."); Server.ErrorLog(e); }
        }
Пример #9
0
        public override void Use(Player p, string message)
        {
            if (p == null)
            {
                Player.SendMessage(p, "Impossible depuis la console ou l'irc"); return;
            }

            if (message != "")
            {
                Help(p); return;
            }

            DataTable Likes = MySQL.fillData("SELECT * FROM `Like" + p.level.name + "." + p.level.world + "` WHERE Name= '" + p.name.ToLower() + "'");

            if (Likes.Rows.Count == 0)
            {
                Player.SendMessage(p, "Vous n'aimez pas cette map"); return;
            }
            else
            {
                MySQL.executeQuery("DELETE FROM `Like" + p.level.name + "." + p.level.world + "` WHERE Name='" + p.name.ToLower() + "'");

                Player.GlobalMessageLevel(p.level, "*" + p.color + p.Name() + Server.DefaultColor + " n'aime plus cette map");

                DataTable DB      = MySQL.fillData("SELECT * FROM `Like" + p.level.name + "." + p.level.world + "`");
                int       nbLikes = DB.Rows.Count; //comptage du nombre de likes
                DB.Dispose();

                string[] lignes = File.ReadAllLines("text/like.txt");

                lvlinfo   lvl; lvl.name = ""; lvl.world = ""; lvl.nbLikes = 0;
                lvlinfo[] topLike       = { lvl, lvl, lvl, lvl, lvl, lvl, lvl, lvl, lvl, lvl };

                int numlvl = 0;

                foreach (string l in lignes)
                {
                    if (l == "")
                    {
                        continue;
                    }
                    if (l[0] == '#' || l.Split(' ').Length != 3)
                    {
                        continue;
                    }

                    if (numlvl <= 10)
                    {
                        topLike[numlvl].name  = l.Split(' ')[0];
                        topLike[numlvl].world = l.Split(' ')[1];
                        try { topLike[numlvl].nbLikes = int.Parse(l.Split(' ')[2]); }
                        catch { topLike[numlvl].nbLikes = 0; }
                        numlvl++;
                    }
                }

                int lastpos = -1;
                for (int i = 0; i < 10; i++)
                {
                    if (topLike[i].name == p.level.name && topLike[i].world == p.level.world)
                    {
                        lastpos = i;
                    }
                }

                if (lastpos != -1)
                {
                    for (int i = lastpos; i <= 8; i++)
                    {
                        topLike[i].name    = topLike[i + 1].name;
                        topLike[i].world   = topLike[i + 1].world;
                        topLike[i].nbLikes = topLike[i + 1].nbLikes;
                    }

                    int newpos = -1;
                    for (int i = 0; i < 10; i++)
                    {
                        if (nbLikes > topLike[i].nbLikes)
                        {
                            newpos = i; break;
                        }
                    }

                    if (newpos != -1)
                    {
                        for (int i = 8; i >= newpos; i--)
                        {
                            topLike[i + 1].name    = topLike[i].name;
                            topLike[i + 1].world   = topLike[i].world;
                            topLike[i + 1].nbLikes = topLike[i].nbLikes;
                        }
                        topLike[newpos].name = p.level.name; topLike[newpos].world = p.level.world; topLike[newpos].nbLikes = nbLikes;
                    }

                    StreamWriter SW = new StreamWriter(File.Create("text/like.txt"));

                    foreach (string s in lignes)
                    {
                        if (s == "")
                        {
                            continue;
                        }
                        if (s[0] == '#')
                        {
                            SW.WriteLine(s);
                        }
                    }

                    SW.WriteLine("");

                    foreach (lvlinfo f in topLike)
                    {
                        if (f.nbLikes != 0)
                        {
                            SW.WriteLine(f.name + " " + f.world + " " + f.nbLikes);
                        }
                    }

                    SW.Flush();
                    SW.Close();
                    SW.Dispose();
                }
            }
            Likes.Dispose();
        }
Пример #10
0
 public void savePlayer(pinfo pi)
 {
     MySQL.executeQuery("UPDATE bomberman SET nbKills=" + pi.nbKills + ", nbDeaths=" + pi.nbDeaths + ", nbPowers=" + pi.nbPowerUp + ", nbPoints=" + pi.nbPoints + ", nbWalls=" + pi.overAllWalls + " WHERE Name='" + pi.p.name + "'");
 }
Пример #11
0
        public override void Use(Player p, string message)
        {
            if (message == "")
            {
                Help(p); return;
            }
            if (message[0] == '@')
            {
                message = message.Remove(0, 1).Trim();
                Player who = Player.Find(message);
                if (who == null)
                {
                    DataTable ip;
                    int       tryCounter = 0;
                    rerun : try
                    {
                        ip = MySQL.fillData("SELECT IP FROM Players WHERE Name = '" + message + "'");
                    }
                    catch (Exception e)
                    {
                        tryCounter++;
                        if (tryCounter < 10)
                        {
                            goto rerun;
                        }
                        else
                        {
                            Server.ErrorLog(e);
                            Player.SendMessage(p, "Il y avait une erreur de base de donnees pour chercher l'adresse IP. Il a ete enregistré.");
                            return;
                        }
                    }
                    if (ip.Rows.Count > 0)
                    {
                        message = ip.Rows[0]["IP"].ToString();
                    }
                    else
                    {
                        Player.SendMessage(p, "Impossible de trouver l'adresse ip du joueur.");
                        return;
                    }
                    ip.Dispose();
                }
                else
                {
                    message = who.ip;
                }
            }

            if (!regex.IsMatch(message))
            {
                Player.SendMessage(p, "Ce n'est pas une ip valide!"); return;
            }
            if (p != null)
            {
                if (p.ip == message)
                {
                    Player.SendMessage(p, "Vous ne pouvez pas utiliser cette commande."); return;
                }
            }
            if (!Server.bannedIP.Contains(message))
            {
                Player.SendMessage(p, message + " ne semble pas etre banni."); return;
            }
            Player.GlobalMessage(message + " a sont&8 ip debanni" + Server.DefaultColor + "!");
            Server.bannedIP.Remove(message); Server.bannedIP.Save("banned-ip.txt", false);
            Server.s.Log("IP-UNBANNED: " + message.ToLower());
        }
Пример #12
0
        public override void Use(Player p, string message)
        {
            if (!Directory.Exists("text"))
            {
                Directory.CreateDirectory("text");
            }
            if (!File.Exists("text/like.txt"))
            {
                File.Create("text/like.txt");
            }

            if (message == "top")
            {
                string[] lignes = File.ReadAllLines("text/like.txt");
                int      numLigne = -1, rangMap = 0, nbLikes = 0;
                string   name, world;

                Player.SendMessage(p, "Top 10 des maps (note par vous)");
                while (rangMap < 10 && numLigne < lignes.Length - 1)
                {
                    numLigne++;
                    if (lignes[numLigne] == "")
                    {
                        continue;
                    }
                    if (lignes[numLigne][0] == '#' || lignes[numLigne].Split(' ').Length < 3)
                    {
                        continue;
                    }
                    try
                    {
                        name    = lignes[numLigne].Split(' ')[0];
                        world   = lignes[numLigne].Split(' ')[1];
                        nbLikes = int.Parse(lignes[numLigne].Split(' ')[2]);
                    }
                    catch { continue; }

                    rangMap++;

                    if (rangMap == 1)
                    {
                        Player.SendMessage(p, "1ere : Map &a" + name + Server.DefaultColor + " (&a" + world + Server.DefaultColor + "), score : " + nbLikes);
                    }
                    else
                    {
                        Player.SendMessage(p, rangMap + "eme : Map &a" + name + Server.DefaultColor + " (&a" + world + Server.DefaultColor + "), score : " + nbLikes);
                    }
                }

                if (rangMap == 0)
                {
                    Player.SendMessage(p, "Aucunes maps dans le top 10");
                }
                else
                {
                    Player.SendMessage(p, "Pour aller dans une map utilisez '/g map world'");
                }

                return;
            }

            if (p == null)
            {
                Player.SendMessage(p, "Impossible depuis la console ou l'irc"); return;
            }

            if (message == "list")
            {
                DataTable likeDB = MySQL.fillData("SELECT * FROM `Like" + p.level.name + "." + p.level.world + "`");

                string playersLike = "";

                for (int i = 0; i < likeDB.Rows.Count; i++)
                {
                    playersLike += ", " + likeDB.Rows[i]["Name"].ToString();
                }

                if (playersLike == "")
                {
                    Player.SendMessage(p, "Personne n'aime cette map");
                }
                else
                {
                    Player.SendMessage(p, likeDB.Rows.Count + " personnes aiment cette map : " + playersLike.Remove(0, 2));
                }
                likeDB.Dispose();
                return;
            }

            if (message == "reset")
            {
                if (p.group.Permission < LevelPermission.Admin)
                {
                    Player.SendMessage(p, "Vous n'avez pas le rang pour faire ca");
                }
                MySQL.executeQuery("DELETE FROM `Like" + p.level.name + "." + p.level.world + "`");

                string[] lignes = File.ReadAllLines("text/like.txt");

                string name = "", world = "";
                int    nbLikes = 0;

                StreamWriter SW = new StreamWriter(File.Create("text/like.txt"));

                foreach (string l in lignes)
                {
                    try
                    {
                        nbLikes = int.Parse(l.Split(' ')[2]);
                        name    = l.Split(' ')[0];
                        world   = l.Split(' ')[1];

                        if (name != p.level.name || world != p.level.world)
                        {
                            SW.WriteLine(l);
                        }
                    }
                    catch { SW.WriteLine(l); }
                }
                SW.Flush();
                SW.Close();
                SW.Dispose();

                Player.SendMessage(p, "Compteurs remis a zero");
                return;
            }

            if (message != "")
            {
                Help(p); return;
            }

            DataTable Likes = MySQL.fillData("SELECT * FROM `Like" + p.level.name + "." + p.level.world + "` WHERE Name= '" + p.name.ToLower() + "'");

            if (Likes.Rows.Count != 0)
            {
                Player.SendMessage(p, "Vous aimez deja la map");
            }
            else
            {
                MySQL.executeQuery("INSERT INTO `Like" + p.level.name + "." + p.level.world + "` (Name) VALUES ('" + p.name.ToLower() + "')");

                Player.GlobalMessageLevel(p.level, "* " + p.color + p.Name() + Server.DefaultColor + " aime cette map");
                DataTable DB      = MySQL.fillData("SELECT * FROM `Like" + p.level.name + "." + p.level.world + "`");
                int       nbLikes = DB.Rows.Count; //comptage du nombre de likes
                DB.Dispose();

                string[] lignes = File.ReadAllLines("text/like.txt");

                lvlinfo   lvl; lvl.name = ""; lvl.world = ""; lvl.nbLikes = 0;
                lvlinfo[] topLike       = { lvl, lvl, lvl, lvl, lvl, lvl, lvl, lvl, lvl, lvl };

                int numlvl = 0;

                foreach (string l in lignes)
                {
                    if (l == "")
                    {
                        continue;
                    }
                    if (l[0] == '#' || l.Split(' ').Length != 3)
                    {
                        continue;
                    }

                    if (numlvl < 10)
                    {
                        topLike[numlvl].name  = l.Split(' ')[0];
                        topLike[numlvl].world = l.Split(' ')[1];
                        try { topLike[numlvl].nbLikes = int.Parse(l.Split(' ')[2]); }
                        catch { topLike[numlvl].nbLikes = 0; }
                        numlvl++;
                    }
                }

                int lastpos = -1;
                for (int i = 0; i < 10; i++)
                {
                    if (topLike[i].name == p.level.name && topLike[i].world == p.level.world)
                    {
                        lastpos = i;
                    }
                }

                if (lastpos != -1)
                {
                    for (int i = lastpos; i <= 8; i++)
                    {
                        topLike[i].name    = topLike[i + 1].name;
                        topLike[i].world   = topLike[i + 1].world;
                        topLike[i].nbLikes = topLike[i + 1].nbLikes;
                    }
                }

                int newpos = -1;
                for (int i = 0; i < 10; i++)
                {
                    if (nbLikes > topLike[i].nbLikes)
                    {
                        newpos = i; break;
                    }
                }

                if (newpos != -1)
                {
                    for (int i = 8; i >= newpos; i--)
                    {
                        topLike[i + 1].name    = topLike[i].name;
                        topLike[i + 1].world   = topLike[i].world;
                        topLike[i + 1].nbLikes = topLike[i].nbLikes;
                    }
                    topLike[newpos].name = p.level.name; topLike[newpos].world = p.level.world; topLike[newpos].nbLikes = nbLikes;
                }

                StreamWriter SW = new StreamWriter(File.Create("text/like.txt"));

                foreach (string s in lignes)
                {
                    if (s == "")
                    {
                        continue;
                    }
                    if (s[0] == '#')
                    {
                        SW.WriteLine(s);
                    }
                }

                SW.WriteLine("");

                foreach (lvlinfo f in topLike)
                {
                    if (f.nbLikes != 0)
                    {
                        SW.WriteLine(f.name + " " + f.world + " " + f.nbLikes);
                    }
                }

                SW.Flush();
                SW.Close();
                SW.Dispose();

                if (newpos != lastpos)
                {
                    if (newpos == 1)
                    {
                        Player.GlobalChat(p, "La map &a" + p.level.name + Server.DefaultColor + " (&a" + p.level.world + Server.DefaultColor + ") passe 1ere du top 10 des meilleurs maps.", false);
                    }
                    else
                    {
                        Player.GlobalChat(p, "La map &a" + p.level.name + Server.DefaultColor + " (&a" + p.level.world + Server.DefaultColor + ") passe " + newpos + "eme du top 10 des meilleurs maps.", false);
                    }
                }
            }
            Likes.Dispose();
        }
Пример #13
0
        public override void Use(Player p, string message)
        {
            if (p == null)
            {
                Player.SendMessage(p, "Impossible depuis la console ou l'irc"); return;
            }

            try
            {
                MySQL.executeQuery("CREATE TABLE if not exists `Inbox" + p.name + "` (PlayerFrom CHAR(20), TimeSent DATETIME, Contents VARCHAR(255));");
                if (message == "")
                {
                    DataTable Inbox = MySQL.fillData("SELECT * FROM `Inbox" + p.name + "` ORDER BY TimeSent");

                    if (Inbox.Rows.Count == 0)
                    {
                        Player.SendMessage(p, "Pas de messages."); Inbox.Dispose(); return;
                    }

                    for (int i = 0; i < Inbox.Rows.Count; ++i)
                    {
                        Player.SendMessage(p, i + ": Par &5" + Inbox.Rows[i]["PlayerFrom"].ToString() + Server.DefaultColor + " a &a" + Inbox.Rows[i]["TimeSent"].ToString());
                    }
                    Inbox.Dispose();
                }
                else if (message.Split(' ')[0].ToLower() == "del" || message.Split(' ')[0].ToLower() == "delete")
                {
                    int FoundRecord = -1;

                    if (message.Split(' ')[1].ToLower() != "all")
                    {
                        try
                        {
                            FoundRecord = int.Parse(message.Split(' ')[1]);
                        }
                        catch { Player.SendMessage(p, "Nombre entre incorrect."); return; }

                        if (FoundRecord < 0)
                        {
                            Player.SendMessage(p, "Le numero du message doit etre positif."); return;
                        }
                    }

                    DataTable Inbox = MySQL.fillData("SELECT * FROM `Inbox" + p.name + "` ORDER BY TimeSent");

                    if (Inbox.Rows.Count - 1 < FoundRecord || Inbox.Rows.Count == 0)
                    {
                        Player.SendMessage(p, "\"" + FoundRecord + "\" n'existe pas."); Inbox.Dispose(); return;
                    }

                    string queryString;
                    if (FoundRecord == -1)
                    {
                        queryString = "TRUNCATE TABLE `Inbox" + p.name + "`";
                    }
                    else
                    {
                        queryString = "DELETE FROM `Inbox" + p.name + "` WHERE PlayerFrom='" + Inbox.Rows[FoundRecord]["PlayerFrom"] + "' AND TimeSent='" + Convert.ToDateTime(Inbox.Rows[FoundRecord]["TimeSent"]).ToString("yyyy-MM-dd HH:mm:ss") + "'";
                    }

                    MySQL.executeQuery(queryString);

                    if (FoundRecord == -1)
                    {
                        Player.SendMessage(p, "Tous les messages sont supprime.");
                    }
                    else
                    {
                        Player.SendMessage(p, "Message supprime.");
                    }

                    Inbox.Dispose();
                }
                else
                {
                    int FoundRecord;

                    try
                    {
                        FoundRecord = int.Parse(message);
                    }
                    catch { Player.SendMessage(p, "Nombre entre incorrect."); return; }

                    if (FoundRecord < 0)
                    {
                        Player.SendMessage(p, "Le numero du message doit etre positif."); return;
                    }

                    DataTable Inbox = MySQL.fillData("SELECT * FROM `Inbox" + p.name + "` ORDER BY TimeSent");

                    if (Inbox.Rows.Count - 1 < FoundRecord || Inbox.Rows.Count == 0)
                    {
                        Player.SendMessage(p, "\"" + FoundRecord + "\" n'existe pas."); Inbox.Dispose(); return;
                    }

                    Player.SendMessage(p, "Message from &5" + Inbox.Rows[FoundRecord]["PlayerFrom"] + Server.DefaultColor + " sent at &a" + Inbox.Rows[FoundRecord]["TimeSent"] + ":");
                    Player.SendMessage(p, Inbox.Rows[FoundRecord]["Contents"].ToString());
                    Inbox.Dispose();
                }
            }
            catch
            {
                Player.SendMessage(p, "Erreur d'acces a l'inbox. Vous avez peut être pas de messages, reessayez.");
            }
        }
Пример #14
0
        public override void Use(Player p, string message)
        {
            if (p == null)
            {
                Player.SendMessage(p, "Impossible depuis la console ou l'irc"); return;
            }

            if (p.group.Permission < LevelPermission.Admin && p.level.world.ToLower() != p.name.ToLower())
            {
                Player.SendMessage(p, "Vous ne pouvez pas renommer de map dans ce monde"); return;
            }

            if (message.Split(' ').Length != 2)
            {
                Help(p); return;
            }
            string lvl     = "";
            string newName = "";
            string world   = "";

            lvl = message.Split(' ')[0]; newName = message.Split(' ')[1]; world = p.level.world;

            if (lvl == "spawn")
            {
                Player.SendMessage(p, "Impossible de renommer votre spawn."); return;
            }

            if (!File.Exists("levels/" + world + "/" + lvl + ".lvl"))
            {
                Player.SendMessage(p, "La map '" + lvl + "' n'existe pas"); return;
            }

            if (!Player.ValidName(newName))
            {
                Player.SendMessage(p, "Nom invalide!"); return;
            }

            Level foundLevel = Level.Find(lvl, world);

            if (File.Exists("levels/" + world + "/" + newName + ".lvl"))
            {
                Player.SendMessage(p, "Cette map existe deja."); return;
            }
            if (foundLevel == Server.mainLevel)
            {
                Player.SendMessage(p, "Impossible de renommer la map principale."); return;
            }
            if (foundLevel != null)
            {
                foundLevel.Unload();
            }

            try
            {
                File.Move("levels/" + world + "/" + foundLevel.name + ".lvl", "levels/" + world + "/" + newName + ".lvl");

                try
                {
                    File.Move("levels/" + world + "/level properties/" + foundLevel.name + ".properties", "levels/" + world + "/level properties/" + newName + ".properties");
                }
                catch { }
                try
                {
                    File.Move("levels/" + world + "/level properties/" + foundLevel.name, "levels/" + world + "/level properties/" + newName + ".properties");
                }
                catch { }

                MySQL.executeQuery("RENAME TABLE `Block" + foundLevel.name.ToLower() + "." + foundLevel.world + "` TO `Block" + newName.ToLower() + "." + foundLevel.world + "`");
                MySQL.executeQuery("RENAME TABLE `Portals" + foundLevel.name.ToLower() + "." + foundLevel.world + "` TO `Portals" + newName.ToLower() + "." + foundLevel.world + "`");
                MySQL.executeQuery("RENAME TABLE `Messages" + foundLevel.name.ToLower() + "." + foundLevel.world + "` TO `Messages" + newName.ToLower() + "." + foundLevel.world + "`");
                MySQL.executeQuery("RENAME TABLE `Like" + foundLevel.name.ToLower() + "." + foundLevel.world + "` TO `Like" + newName.ToLower() + "." + foundLevel.world + "`");

                Player.GlobalMessage("La map " + foundLevel.name + " du monde " + world + " a ete renomme en " + newName);
            }
            catch (Exception e) { Player.SendMessage(p, "Erreur."); Server.ErrorLog(e); }
        }
Пример #15
0
 public static void resetGame(string typegame)
 {
     MySQL.executeQuery("DELETE FROM " + typegame);
 }
Пример #16
0
        public override void Use(Player p, string message)
        {
            if (!Directory.Exists("text"))
            {
                Directory.CreateDirectory("text");
            }
            if (!File.Exists("text/like.txt"))
            {
                File.Create("text/like.txt");
            }

            DirectoryInfo di = new DirectoryInfo("levels/");

            DirectoryInfo[] dir = di.GetDirectories();

            lvlinfo lvl; lvl.name = ""; lvl.world = ""; lvl.nbLikes = 0;

            lvlinfo[] topLike = { lvl, lvl, lvl, lvl, lvl, lvl, lvl, lvl, lvl, lvl };
            int       nblvls  = 0;

            foreach (DirectoryInfo d in dir)
            {
                FileInfo[] lvlFiles = d.GetFiles("*.lvl");

                foreach (FileInfo file in lvlFiles)
                {
                    nblvls++;
                    lvl.name  = file.Name.Remove(file.Name.Length - 4);
                    lvl.world = d.Name;

                    try { lvl.nbLikes = MySQL.fillData("SELECT * FROM  `Like" + lvl.name + "." + lvl.world + "`").Rows.Count; }
                    catch { lvl.nbLikes = 0; }

                    if (lvl.nbLikes != 0)
                    {
                        int n = 0;
                        while (lvl.nbLikes < topLike[n].nbLikes)
                        {
                            n++;
                            if (n == 10)
                            {
                                break;
                            }
                        }
                        if (n != 10)
                        {
                            for (int i = 8; i >= n; i--)
                            {
                                topLike[i + 1].name    = topLike[i].name;
                                topLike[i + 1].world   = topLike[i].world;
                                topLike[i + 1].nbLikes = topLike[i].nbLikes;
                            }
                            topLike[n].name = lvl.name; topLike[n].world = lvl.world; topLike[n].nbLikes = lvl.nbLikes;
                        }
                    }
                }
            }
            StreamWriter SW = new StreamWriter(File.Create("text/likereset.txt"));

            for (int i = 0; i < 10; i++)
            {
                if (topLike[i].name == "" || topLike[i].world == "" || topLike[i].nbLikes <= 0)
                {
                    continue;
                }
                SW.WriteLine(topLike[i].name + " " + topLike[i].world + " " + topLike[i].nbLikes);
            }
            SW.Flush();
            SW.Close();
            SW.Dispose();

            Player.SendMessage(p, "Levels : " + nblvls);
        }
Пример #17
0
        public override void Use(Player p, string message)
        {
            if (message == "" || message.Split(' ').Length > 2)
            {
                Help(p); return;
            }
            int pos = message.IndexOf(' ');

            if (pos != -1)
            {
                Player who = Player.Find(message.Substring(0, pos));
                if (who == null)
                {
                    Player.SendMessage(p, "Il n'existe pas de joueur \"" + message.Substring(0, pos) + "\"!"); return;
                }
                if (p.group.Permission <= LevelPermission.Vip && p != who)
                {
                    Player.SendMessage(p, "Vous ne pouvez pas changer la couleur d'un autre joueur"); return;
                }
                if (message.Substring(pos + 1) == "del")
                {
                    MySQL.executeQuery("UPDATE Players SET color = '' WHERE name = '" + who.name + "'");
                    Player.GlobalChat(who, "* La couleur de " + who.color + Name(who.Name()) + " est revenu " + who.group.color + "a la couleur par default" + Server.DefaultColor + ".", false);
                    who.color = who.group.color;

                    Player.GlobalDie(who, false);
                    Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false);
                    who.SetPrefix();
                    return;
                }
                string color = c.Parse(message.Substring(pos + 1));
                if (color == "")
                {
                    Player.SendMessage(p, "Il n'existe pas de couleur \"" + message + "\".");
                }
                else if (color == who.color)
                {
                    Player.SendMessage(p, who.name + " a deja cette couleur.");
                }
                else
                {
                    MySQL.executeQuery("UPDATE Players SET color = '" + c.Name(color) + "' WHERE name = '" + who.name + "'");

                    Player.GlobalChat(who, "* La couleur de " + who.color + Name(who.Name()) + " a change en " + color + c.Name(color) + Server.DefaultColor + ".", false);
                    who.color = color;

                    Player.GlobalDie(who, false);
                    Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false);
                    who.SetPrefix();
                }
            }
            else
            {
                if (message == "del")
                {
                    MySQL.executeQuery("UPDATE Players SET color = '' WHERE name = '" + p.name + "'");

                    Player.GlobalChat(p, p.color + "*La couleur de " + Name(p.Name()) + " est revenu " + p.group.color + "a la couleur par default" + Server.DefaultColor + ".", false);
                    p.color = p.group.color;

                    Player.GlobalDie(p, false);
                    Player.GlobalSpawn(p, p.pos[0], p.pos[1], p.pos[2], p.rot[0], p.rot[1], false);
                    p.SetPrefix();
                    return;
                }
                string color = c.Parse(message);
                if (color == "")
                {
                    Player.SendMessage(p, "Il n'existe pas de couleur \"" + message + "\".");
                }
                else if (color == p.color)
                {
                    Player.SendMessage(p, "Vous avez deja cette couleur.");
                }
                else
                {
                    MySQL.executeQuery("UPDATE Players SET color = '" + c.Name(color) + "' WHERE name = '" + p.name + "'");

                    Player.GlobalChat(p, "*La couleur de " + p.color + Name(p.Name()) + " a change en " + color + c.Name(color) + Server.DefaultColor + ".", false);
                    p.color = color;

                    Player.GlobalDie(p, false);
                    Player.GlobalSpawn(p, p.pos[0], p.pos[1], p.pos[2], p.rot[0], p.rot[1], false);
                    p.SetPrefix();
                }
            }
        }
Пример #18
0
        public override void Use(Player p, string message)
        {
            int bancount = Group.findPerm(LevelPermission.Banned).playerList.All().Count;

            DataTable count = MySQL.fillData("SELECT COUNT(id) FROM players");

            Player.SendMessage(p, count.Rows[0]["COUNT(id)"] + " joueurs ont visite ce serveur.");
            Player.SendMessage(p, "Dont " + bancount + " qui sont banni.");
            count.Dispose();

            int playerCount = 0;
            int hiddenCount = 0;

            foreach (Player pl in Player.players)
            {
                if (!pl.hidden)
                {
                    playerCount++;
                }
                else
                {
                    hiddenCount++;
                }
            }
            if (p != null)
            {
                if (playerCount == 1)
                {
                    if (hiddenCount == 0 || p.group.Permission < Server.opchatperm)
                    {
                        Player.SendMessage(p, "Il y a 1 joueur en ligne.");
                    }
                    else
                    {
                        Player.SendMessage(p, "Il y a 1 joueur en ligne (invisible : " + hiddenCount + ").");
                    }
                }
                else
                {
                    if (hiddenCount == 0 || p.group.Permission < Server.opchatperm)
                    {
                        Player.SendMessage(p, "Il y a " + playerCount + " joueurs en ligne.");
                    }
                    else
                    {
                        Player.SendMessage(p, "Il y a " + playerCount + " joueurs en ligne (invisibles : " + hiddenCount + ").");
                    }
                }
            }
            else
            {
                if (hiddenCount == 0)
                {
                    Player.SendMessage(p, "Il y a " + playerCount + " joueur(s) en ligne.");
                }
                else
                {
                    Player.SendMessage(p, "Il y a " + playerCount + " joueur(s) en ligne (invisibles : " + hiddenCount + ").");
                }
            }
        }
Пример #19
0
        public override void Use(Player p, string message)
        {
            if (message == "")
            {
                Help(p); return;
            }
            if (message[0] == '@')
            {
                message = message.Remove(0, 1).Trim();
                Player who = Player.Find(message);
                if (who == null)
                {
                    DataTable ip;
                    int       tryCounter = 0;
                    rerun :  try
                    {
                        ip = MySQL.fillData("SELECT IP FROM Players WHERE Name = '" + message + "'");
                    }
                    catch (Exception e)
                    {
                        tryCounter++;
                        if (tryCounter < 10)
                        {
                            goto rerun;
                        }
                        else
                        {
                            Server.ErrorLog(e);
                            return;
                        }
                    }
                    if (ip.Rows.Count > 0)
                    {
                        message = ip.Rows[0]["IP"].ToString();
                    }
                    else
                    {
                        Player.SendMessage(p, "Impossible de trouver une adresse IP pour ce joueur.");
                        return;
                    }
                    ip.Dispose();
                }
                else
                {
                    message = who.ip;
                }
            }
            else
            {
                Player who = Player.Find(message);
                if (who != null)
                {
                    message = who.ip;
                }
            }

            if (message.Equals("127.0.0.1"))
            {
                Player.SendMessage(p, "Impossible de banip le serveur"); return;
            }
            if (message.IndexOf('.') == -1)
            {
                Player.SendMessage(p, "IP invalide!"); return;
            }
            if (message.Split('.').Length != 4)
            {
                Player.SendMessage(p, "IP invalide!"); return;
            }
            if (p != null)
            {
                if (p.ip == message)
                {
                    Player.SendMessage(p, "Vous ne pouvez pas vous banip vous meme!"); return;
                }
            }
            if (Server.bannedIP.Contains(message))
            {
                Player.SendMessage(p, message + " est deja banip !"); return;
            }
            Player.GlobalMessage(message + " est &8banip!");
            if (p != null)
            {
                IRCBot.Say("IP-BANNED: " + message.ToLower() + " by " + p.name);
            }
            else
            {
                IRCBot.Say("IP-BANNED: " + message.ToLower() + " by console");
            }
            Server.bannedIP.Add(message);
            Server.bannedIP.Save("banned-ip.txt", false);
            Server.s.Log("IP-BANNED: " + message.ToLower());
        }