EnsureExists() private méthode

private EnsureExists ( SqlTable table ) : void
table SqlTable
Résultat void
Exemple #1
0
 public static void InitTerraDB()
 {
     string sql = Path.Combine(terraDB);
     if (!File.Exists(terraDB))
     {
         SqliteConnection.CreateFile(terraDB);
     }
     DB = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
     SQLWriter = new SqlTableCreator(DB, new SqliteQueryCreator());
     var table = new SqlTable("Clans",
     new SqlColumn("clanname", MySqlDbType.Text) { Unique = true },
     new SqlColumn("clangroup", MySqlDbType.Text),
     new SqlColumn("leaders", MySqlDbType.Text),
     new SqlColumn("members", MySqlDbType.Text),
     new SqlColumn("motd", MySqlDbType.Text),
     new SqlColumn("invites", MySqlDbType.Text)
     );
     SQLWriter.EnsureExists(table);
     table = new SqlTable("FoundQueue",
     new SqlColumn("clanname", MySqlDbType.Text) { Unique = true },
     new SqlColumn("founder", MySqlDbType.Text),
     new SqlColumn("cofounder", MySqlDbType.Text)
     );
     SQLWriter.EnsureExists(table);
 }
Exemple #2
0
        public BanManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Bans",
                                     new SqlColumn("IP", MySqlDbType.String, 16)
            {
                Primary = true
            },
                                     new SqlColumn("Name", MySqlDbType.Text),
                                     new SqlColumn("UUID", MySqlDbType.Text),
                                     new SqlColumn("Reason", MySqlDbType.Text),
                                     new SqlColumn("BanningUser", MySqlDbType.Text),
                                     new SqlColumn("Date", MySqlDbType.Text),
                                     new SqlColumn("Expiration", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            try
            {
                creator.EnsureExists(table);
            }
            catch (DllNotFoundException)
            {
                System.Console.WriteLine("Possible problem with your database - is Sqlite3.dll present?");
                throw new Exception("Could not find a database library (probably Sqlite3.dll)");
            }
        }
Exemple #3
0
        public GroupManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("GroupList",
                new SqlColumn("GroupName", MySqlDbType.VarChar, 32) { Primary = true },
                new SqlColumn("Parent", MySqlDbType.VarChar, 32),
                new SqlColumn("Commands", MySqlDbType.Text),
                new SqlColumn("ChatColor", MySqlDbType.Text)
            );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);

            //Add default groups
            AddGroup("default", "canwater,canlava,warp,canbuild");
            AddGroup("newadmin", "default", "kick,editspawn,reservedslot");
            AddGroup("admin", "newadmin", "ban,unban,whitelist,causeevents,spawnboss,spawnmob,managewarp,time,tp,pvpfun,kill,logs,immunetokick,tphere");
            AddGroup("trustedadmin", "admin", "maintenance,cfg,butcher,item,heal,immunetoban,ignorecheatdetection,ignoregriefdetection,usebanneditem,manageusers");
            AddGroup("vip", "default", "canwater,canlava,warp,canbuild,reservedslot");

            String file = Path.Combine(TShock.SavePath, "groups.txt");
            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
                        {
                            String[] info = line.Split(' ');
                            String comms = "";
                            int size = info.Length;
                            for (int i = 1; i < size; i++)
                            {
                                if (!comms.Equals(""))
                                    comms = comms + ",";
                                comms = comms + info[i].Trim();
                            }

                            string query = "";
                            if (TShock.Config.StorageType.ToLower() == "sqlite")
                                query = "INSERT OR IGNORE INTO GroupList (GroupName, Commands) VALUES (@0, @1);";
                            else if (TShock.Config.StorageType.ToLower() == "mysql")
                                query = "INSERT IGNORE INTO GroupList SET GroupName=@0, Commands=@1;";

                            db.Query(query, info[0].Trim(), comms);

                        }
                    }
                }
                String path = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "groups.txt");
                if (!Directory.Exists(path))
                    Directory.CreateDirectory(path);
                if (File.Exists(file2))
                    File.Delete(file2);
                File.Move(file, file2);
            }
        }
Exemple #4
0
 internal static void CheckTables(IDbConnection connection)
 {
     SQLWriter = new SqlTableCreator(connection, new MysqlQueryCreator());
     var table = new SqlTable("BannedIP",
     new SqlColumn("IP", MySqlDbType.Text),
     new SqlColumn("BanDate", MySqlDbType.Int32),
     new SqlColumn("UnbanDate", MySqlDbType.Int32),
     new SqlColumn("BannedBy", MySqlDbType.Text),
     new SqlColumn("Reason", MySqlDbType.Text)
     );
     SQLWriter.EnsureExists(table);
     table = new SqlTable("BannedPlayer",
     new SqlColumn("Player", MySqlDbType.Text),
     new SqlColumn("BanDate", MySqlDbType.Int32),
     new SqlColumn("UnbanDate", MySqlDbType.Int32),
     new SqlColumn("BannedBy", MySqlDbType.Text),
     new SqlColumn("Reason", MySqlDbType.Text)
     );
     SQLWriter.EnsureExists(table);
     table = new SqlTable("MutedPlayer",
     new SqlColumn("Player", MySqlDbType.Text),
     new SqlColumn("MuteDate", MySqlDbType.Int32),
     new SqlColumn("UnmuteDate", MySqlDbType.Int32),
     new SqlColumn("MutedBy", MySqlDbType.Text),
     new SqlColumn("Reason", MySqlDbType.Text)
     );
     SQLWriter.EnsureExists(table);
 }
 public WarpplateManager(IDbConnection db)
 {
     this.database = db;
     string arg_ED_0 = "Warpplates";
     SqlColumn[] array = new SqlColumn[11];
     array[0] = new SqlColumn("X1", MySqlDbType.Int32);
     array[1] = new SqlColumn("Y1", MySqlDbType.Int32);
     array[2] = new SqlColumn("width", MySqlDbType.Int32);
     array[3] = new SqlColumn("height", MySqlDbType.Int32);
     SqlColumn[] arg_7E_0 = array;
     int arg_7E_1 = 4;
     SqlColumn sqlColumn = new SqlColumn("WarpplateName", MySqlDbType.VarChar, new int?(50));
     sqlColumn.Primary = true;
     arg_7E_0[arg_7E_1] = sqlColumn;
     array[5] = new SqlColumn("WorldID", MySqlDbType.Text);
     array[6] = new SqlColumn("UserIds", MySqlDbType.Text);
     array[7] = new SqlColumn("Protected", MySqlDbType.Int32);
     array[8] = new SqlColumn("WarpplateDestination", MySqlDbType.VarChar, new int?(50));
     array[9] = new SqlColumn("Delay", MySqlDbType.Int32);
     array[10] = new SqlColumn("Label", MySqlDbType.Text);
     SqlTable sqlTable = new SqlTable(arg_ED_0, array);
     IQueryBuilder arg_10D_1;
     if (DbExt.GetSqlType(db) != SqlType.Sqlite)
     {
         IQueryBuilder queryBuilder = new MysqlQueryCreator();
         arg_10D_1 = queryBuilder;
     }
     else
     {
         arg_10D_1 = new SqliteQueryCreator();
     }
     SqlTableCreator sqlTableCreator = new SqlTableCreator(db, arg_10D_1);
     sqlTableCreator.EnsureExists(sqlTable);
     this.ReloadAllWarpplates();
 }
Exemple #6
0
        public CharacterManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("tsCharacter",
                                     new SqlColumn("Account", MySqlDbType.Int32)
            {
                Primary = true
            },
                                     new SqlColumn("Health", MySqlDbType.Int32),
                                     new SqlColumn("MaxHealth", MySqlDbType.Int32),
                                     new SqlColumn("Mana", MySqlDbType.Int32),
                                     new SqlColumn("MaxMana", MySqlDbType.Int32),
                                     new SqlColumn("Inventory", MySqlDbType.Text),
                                     new SqlColumn("spawnX", MySqlDbType.Int32),
                                     new SqlColumn("spawnY", MySqlDbType.Int32),
                                     new SqlColumn("hair", MySqlDbType.Int32),
                                     new SqlColumn("hairDye", MySqlDbType.Int32),
                                     new SqlColumn("hairColor", MySqlDbType.Int32),
                                     new SqlColumn("pantsColor", MySqlDbType.Int32),
                                     new SqlColumn("shirtColor", MySqlDbType.Int32),
                                     new SqlColumn("underShirtColor", MySqlDbType.Int32),
                                     new SqlColumn("shoeColor", MySqlDbType.Int32),
                                     new SqlColumn("hideVisuals", MySqlDbType.Int32),
                                     new SqlColumn("skinColor", MySqlDbType.Int32),
                                     new SqlColumn("eyeColor", MySqlDbType.Int32),
                                     new SqlColumn("questsCompleted", MySqlDbType.Int32)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);
        }
Exemple #7
0
        public GroupManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("GroupList",
                                     new SqlColumn("GroupName", MySqlDbType.VarChar, 32) {Primary = true},
                                     new SqlColumn("Parent", MySqlDbType.VarChar, 32),
                                     new SqlColumn("Commands", MySqlDbType.Text),
                                     new SqlColumn("ChatColor", MySqlDbType.Text),
                                     new SqlColumn("Prefix", MySqlDbType.Text),
                                     new SqlColumn("Suffix", MySqlDbType.Text)
                );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                              	? (IQueryBuilder) new SqliteQueryCreator()
                                              	: new MysqlQueryCreator());
            creator.EnsureExists(table);

            //Add default groups
            AddGroup("guest", "canbuild,canregister,canlogin,canpartychat,cantalkinthird");
            AddGroup("default", "guest", "warp,canchangepassword");
            AddGroup("newadmin", "default", "kick,editspawn,reservedslot");
            AddGroup("admin", "newadmin",
                     "ban,unban,whitelist,causeevents,spawnboss,spawnmob,managewarp,time,tp,pvpfun,kill,logs,immunetokick,tphere");
            AddGroup("trustedadmin", "admin", "maintenance,cfg,butcher,item,heal,immunetoban,usebanneditem,manageusers");
            AddGroup("vip", "default", "reservedslot");
        }
Exemple #8
0
        public UserManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Users",
                                     new SqlColumn("ID", MySqlDbType.Int32)
            {
                Primary = true, AutoIncrement = true
            },
                                     new SqlColumn("Username", MySqlDbType.VarChar, 32)
            {
                Unique = true
            },
                                     new SqlColumn("Password", MySqlDbType.VarChar, 128),
                                     new SqlColumn("UUID", MySqlDbType.VarChar, 128),
                                     new SqlColumn("Usergroup", MySqlDbType.Text),
                                     new SqlColumn("Registered", MySqlDbType.Text),
                                     new SqlColumn("LastAccessed", MySqlDbType.Text),
                                     new SqlColumn("KnownIPs", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);
        }
Exemple #9
0
        public RegionManager(IDbConnection db)
        {
            database = db;
            var table = new SqlTable("Regions",
                                     new SqlColumn("X1", MySqlDbType.Int32),
                                     new SqlColumn("Y1", MySqlDbType.Int32),
                                     new SqlColumn("width", MySqlDbType.Int32),
                                     new SqlColumn("height", MySqlDbType.Int32),
                                     new SqlColumn("RegionName", MySqlDbType.VarChar, 50)
            {
                Primary = true
            },
                                     new SqlColumn("WorldID", MySqlDbType.Text),
                                     new SqlColumn("UserIds", MySqlDbType.Text),
                                     new SqlColumn("Protected", MySqlDbType.Int32),
                                     new SqlColumn("Groups", MySqlDbType.Text),
                                     new SqlColumn("Owner", MySqlDbType.VarChar, 50)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);

            ReloadAllRegions();
        }
Exemple #10
0
        internal WarpManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Warps",
                                     new SqlColumn("Id", MySqlDbType.Int32)
            {
                Primary = true, AutoIncrement = true
            },
                                     new SqlColumn("WarpName", MySqlDbType.VarChar, 50)
            {
                Unique = true
            },
                                     new SqlColumn("X", MySqlDbType.Int32),
                                     new SqlColumn("Y", MySqlDbType.Int32),
                                     new SqlColumn("WorldID", MySqlDbType.VarChar, 50)
            {
                Unique = true
            },
                                     new SqlColumn("Private", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);
        }
Exemple #11
0
        public GroupManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("GroupList",
                                     new SqlColumn("GroupName", MySqlDbType.VarChar, 32)
            {
                Primary = true
            },
                                     new SqlColumn("Parent", MySqlDbType.VarChar, 32),
                                     new SqlColumn("Commands", MySqlDbType.Text),
                                     new SqlColumn("ChatColor", MySqlDbType.Text),
                                     new SqlColumn("Prefix", MySqlDbType.Text),
                                     new SqlColumn("Suffix", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);

            //Add default groups
            AddGroup("guest", "canbuild,canregister,canlogin,canpartychat,cantalkinthird");
            AddGroup("default", "guest", "warp,canchangepassword");
            AddGroup("newadmin", "default", "kick,editspawn,reservedslot");
            AddGroup("admin", "newadmin",
                     "ban,unban,whitelist,causeevents,spawnboss,spawnmob,managewarp,time,tp,pvpfun,kill,logs,immunetokick,tphere");
            AddGroup("trustedadmin", "admin", "maintenance,cfg,butcher,item,heal,immunetoban,usebanneditem,manageusers");
            AddGroup("vip", "default", "reservedslot");
        }
Exemple #12
0
        public void InitializeTable()
        {
            var table = new SqlTable("RegionHelper",
                new SqlColumn("RegionName", MySql.Data.MySqlClient.MySqlDbType.Text),
                new SqlColumn("IsLocked", MySql.Data.MySqlClient.MySqlDbType.Text));

            var creator = new SqlTableCreator(_Connection, _Connection.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);
        }
Exemple #13
0
        public ItemManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("ItemBans",
                                     new SqlColumn("ItemName", MySqlDbType.VarChar, 50)
            {
                Primary = true
            },
                                     new SqlColumn("AllowedGroups", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);

            String file = Path.Combine(TShock.SavePath, "itembans.txt");

            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
                        {
                            string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
                                           "INSERT OR IGNORE INTO 'ItemBans' (ItemName, AllowedGroups) VALUES (@0, @1);" :
                                           "INSERT IGNORE INTO ItemBans SET ItemName=@0,AllowedGroups=@1 ;";

                            int id = 0;
                            int.TryParse(line, out id);

                            database.Query(query, TShock.Utils.GetItemById(id).name, "");
                        }
                    }
                }

                String path  = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "itembans.txt");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                if (File.Exists(file2))
                {
                    File.Delete(file2);
                }
                File.Move(file, file2);
            }

            UpdateItemBans();
        }
Exemple #14
0
        public ChatManager(IDbConnection db)
        {
            database = db;

                var table = new SqlTable("Chat",
                    new SqlColumn("ID", MySqlDbType.Int32) { Primary = true, AutoIncrement = true },
                    new SqlColumn("Username", MySqlDbType.VarChar, 32),
                    new SqlColumn("ToUsername", MySqlDbType.VarChar, 32),
                    new SqlColumn("Message", MySqlDbType.VarChar, 32)
                    );
                var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
                creator.EnsureExists(table);
        }
Exemple #15
0
        public InventoryManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Inventory",
                new SqlColumn("Account", MySqlDbType.Int32) { Primary = true },
                new SqlColumn("MaxHealth", MySqlDbType.Int32),
                new SqlColumn("MaxMana", MySqlDbType.Int32),
                new SqlColumn("Inventory", MySqlDbType.Text)
            );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);
        }
        public ArmorShopManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Armor",
                new SqlColumn("ID", MySqlDbType.Int32) { Primary = true, AutoIncrement = true },
                new SqlColumn("Name", MySqlDbType.VarChar, 32),
                new SqlColumn("InGameName", MySqlDbType.VarChar, 128),
                new SqlColumn("Contains", MySqlDbType.VarChar, 128),
                new SqlColumn("Price", MySqlDbType.Int32));
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);
        }
Exemple #17
0
        public BanManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Bans",
                                     new SqlColumn("IP", MySqlDbType.String, 16)
            {
                Primary = true
            },
                                     new SqlColumn("Name", MySqlDbType.Text),
                                     new SqlColumn("Reason", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);

            String file = Path.Combine(TShock.SavePath, "bans.txt");

            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        String[] info = line.Split('|');
                        string   query;
                        if (TShock.Config.StorageType.ToLower() == "sqlite")
                        {
                            query = "INSERT OR IGNORE INTO Bans (IP, Name, Reason) VALUES (@0, @1, @2);";
                        }
                        else
                        {
                            query = "INSERT IGNORE INTO Bans SET IP=@0, Name=@1, Reason=@2;";
                        }
                        db.Query(query, info[0].Trim(), info[1].Trim(), info[2].Trim());
                    }
                }
                String path  = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "bans.txt");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                if (File.Exists(file2))
                {
                    File.Delete(file2);
                }
                File.Move(file, file2);
            }
        }
Exemple #18
0
        public GroupManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("GroupList",
                                     new SqlColumn("GroupName", MySqlDbType.VarChar, 32)
            {
                Primary = true
            },
                                     new SqlColumn("Parent", MySqlDbType.VarChar, 32),
                                     new SqlColumn("Commands", MySqlDbType.Text),
                                     new SqlColumn("ChatColor", MySqlDbType.Text),
                                     new SqlColumn("Prefix", MySqlDbType.Text),
                                     new SqlColumn("Suffix", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            if (creator.EnsureExists(table))
            {
                // Add default groups if they don't exist
                AddDefaultGroup("guest", "",
                                string.Join(",", Permissions.canbuild, Permissions.canregister, Permissions.canlogin, Permissions.canpartychat,
                                            Permissions.cantalkinthird, Permissions.canchat));

                AddDefaultGroup("default", "guest",
                                string.Join(",", Permissions.warp, Permissions.canchangepassword));

                AddDefaultGroup("newadmin", "default",
                                string.Join(",", Permissions.kick, Permissions.editspawn, Permissions.reservedslot));

                AddDefaultGroup("admin", "newadmin",
                                string.Join(",", Permissions.ban, Permissions.whitelist, "tshock.world.time.*", Permissions.spawnboss,
                                            Permissions.spawnmob, Permissions.managewarp, Permissions.time, Permissions.tp, Permissions.slap,
                                            Permissions.kill, Permissions.logs,
                                            Permissions.immunetokick, Permissions.tpothers));

                AddDefaultGroup("trustedadmin", "admin",
                                string.Join(",", Permissions.maintenance, "tshock.cfg.*", "tshock.world.*", Permissions.butcher, Permissions.item,
                                            Permissions.heal, Permissions.immunetoban, Permissions.usebanneditem));

                AddDefaultGroup("vip", "default", string.Join(",", Permissions.reservedslot));
            }

            // Load Permissions from the DB
            LoadPermisions();

            Group.DefaultGroup = GetGroupByName(TShock.Config.DefaultGuestGroupName);
        }
        public InventoryManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Inventory",
                new SqlColumn("Username", MySqlDbType.VarChar, 32) { Unique = true, Primary = true},
                new SqlColumn("Slot0", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot1", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot2", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot3", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot4", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot5", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot6", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot7", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot8", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot9", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot10", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot11", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot12", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot13", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot14", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot15", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot16", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot17", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot18", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot19", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot20", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot21", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot22", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot23", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot24", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot25", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot26", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot27", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot28", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot29", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot30", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot31", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot32", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot33", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot34", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot35", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot36", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot37", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot38", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot39", MySqlDbType.VarChar, 32)
                );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);
        }
        public RemeberedPosManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("RememberedPos",
                new SqlColumn("Name", MySqlDbType.VarChar, 50) { Primary = true },
                new SqlColumn("IP", MySqlDbType.Text),
                new SqlColumn("X", MySqlDbType.Int32),
                new SqlColumn("Y", MySqlDbType.Int32),
                new SqlColumn("WorldID", MySqlDbType.Text)
            );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);
        }
Exemple #21
0
 public UserManager(IDbConnection db)
 {
     database = db;
     var table = new SqlTable("users",
         new SqlColumn("steam64", MySqlDbType.VarChar, 64),
         new SqlColumn("username", MySqlDbType.VarChar, 32) {Primary = true, Unique = true},
         new SqlColumn("banned", MySqlDbType.Int32)
         );
     var creator = new SqlTableCreator(db,
         db.GetSqlType() == SqlType.Sqlite
             ? (IQueryBuilder) new SqliteQueryCreator()
             : new MysqlQueryCreator());
     creator.EnsureExists(table);
     database.Query("UPDATE Users set steam64 = @0 WHERE username=\"olink\"", 76561198011175230);
 }
Exemple #22
0
        public InventoryManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Inventory",
                                     new SqlColumn("Account", MySqlDbType.Int32)
            {
                Primary = true
            },
                                     new SqlColumn("MaxHealth", MySqlDbType.Int32),
                                     new SqlColumn("MaxMana", MySqlDbType.Int32),
                                     new SqlColumn("Inventory", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);
        }
Exemple #23
0
        public RemeberedPosManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("RememberedPos",
                                     new SqlColumn("Name", MySqlDbType.VarChar, 50)
            {
                Primary = true
            },
                                     new SqlColumn("IP", MySqlDbType.Text),
                                     new SqlColumn("X", MySqlDbType.Int32),
                                     new SqlColumn("Y", MySqlDbType.Int32),
                                     new SqlColumn("WorldID", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);
        }
Exemple #24
0
        public ItemManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("ItemBans",
                new SqlColumn("ItemName", MySqlDbType.VarChar, 50) { Primary = true }
            );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);

            String file = Path.Combine(TShock.SavePath, "itembans.txt");
            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
                        {

                            string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
                                "INSERT OR IGNORE INTO 'ItemBans' (ItemName) VALUES (@0);" :
                                "INSERT IGNORE INTO ItemBans SET ItemName=@0;";

                            int id = 0;
                            int.TryParse(line, out id);

                            database.Query(query, TShock.Utils.GetItemById(id).name);
                        }
                    }
                }

                String path = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "itembans.txt");
                if (!Directory.Exists(path))
                    Directory.CreateDirectory(path);
                if (File.Exists(file2))
                    File.Delete(file2);
                File.Move(file, file2);
            }

            UpdateItemBans();
        }
Exemple #25
0
        public ItemManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("ItemBans",
                                     new SqlColumn("ItemName", MySqlDbType.VarChar, 50)
            {
                Primary = true
            },
                                     new SqlColumn("AllowedGroups", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);
            UpdateItemBans();
        }
Exemple #26
0
        public BanManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Bans",
                                     new SqlColumn("IP", MySqlDbType.String, 16)
            {
                Primary = true
            },
                                     new SqlColumn("Name", MySqlDbType.Text),
                                     new SqlColumn("Reason", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);
        }
Exemple #27
0
        public ProjectileManagager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("ProjectileBans",
                                     new SqlColumn("ProjectileID", MySqlDbType.Int32)
            {
                Primary = true
            },
                                     new SqlColumn("AllowedGroups", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                        ? (IQueryBuilder) new SqliteQueryCreator()
                                        : new MysqlQueryCreator());

            creator.EnsureExists(table);
            UpdateBans();
        }
        public Database(IDbConnection db)
        {
            _db = db;

            var SQLCreator = new SqlTableCreator(db,
                                             db.GetSqlType() == SqlType.Sqlite
                                             ? (IQueryBuilder)new SqliteQueryCreator()
                                             : new MysqlQueryCreator());

            var table = new SqlTable("TimeBasedRanking",
                new SqlColumn("ID", MySqlDbType.Int32) { Primary = true, AutoIncrement = true },
                new SqlColumn("Name", MySqlDbType.VarChar, 50) { Unique = true },
                new SqlColumn("Time", MySqlDbType.Int32),
                new SqlColumn("FirstLogin", MySqlDbType.Text),
                new SqlColumn("LastLogin", MySqlDbType.Text),
                new SqlColumn("Experience", MySqlDbType.Int32)
                );
            SQLCreator.EnsureExists(table);
        }
Exemple #29
0
        public Database(IDbConnection db)
        {
            _db = db;

            var sqlCreator = new SqlTableCreator(db,
                                             db.GetSqlType() == SqlType.Sqlite
                                             ? (IQueryBuilder)new SqliteQueryCreator()
                                             : new MysqlQueryCreator());

            var table = new SqlTable("Bounties",
                new SqlColumn("ID", MySqlDbType.Int32) { Primary = true, AutoIncrement = true },
                new SqlColumn("Name", MySqlDbType.Text) { Unique = true },
                new SqlColumn("Contractor", MySqlDbType.Text),
                new SqlColumn("Target", MySqlDbType.Text),
                new SqlColumn("Rewards", MySqlDbType.Text),
                new SqlColumn("Hunters", MySqlDbType.Text),
                new SqlColumn("Failures", MySqlDbType.Text)
                );
            sqlCreator.EnsureExists(table);
        }
        // ChestDbManager ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        public ChestDbManager( IDbConnection db )
        {
            Log.Write( "Initiating ChestControl (v" + ChestControl.VersionNum + ").", LogLevel.Info );

              database = db;
              var table = new SqlTable( tableName,
                                new SqlColumn( "ChestID",     MySqlDbType.Int32 ),
                                new SqlColumn( "X",           MySqlDbType.Int32 ),
                                new SqlColumn( "Y",           MySqlDbType.Int32 ),
                                new SqlColumn( "Owner",       MySqlDbType.Text  ),
                                new SqlColumn( "WorldID",     MySqlDbType.Text  ),
                                new SqlColumn( "IsLocked",    MySqlDbType.Int32 ),
                                new SqlColumn( "IsRegionLocked", MySqlDbType.Int32 ),
                                new SqlColumn( "Password",    MySqlDbType.Text  ),
                                new SqlColumn( "IsRefill",    MySqlDbType.Int32 ),
                                new SqlColumn( "RefillDelay", MySqlDbType.Int32 )
                              );

              var dbCreator = new SqlTableCreator( db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());
              dbCreator.EnsureExists( table );
        }
Exemple #31
0
        public static void InitMessageDB()
        {
            string sql = Path.Combine(terraDB);
            if (!File.Exists(terraDB))
            {
                SqliteConnection.CreateFile(terraDB);
            }

            DB = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
            SQLWriter = new SqlTableCreator(DB, new SqliteQueryCreator());
            SQLEditor = new SqlTableEditor(DB, new SqliteQueryCreator());

            var table = new SqlTable("MessagePlugin",
                new SqlColumn("Id", MySqlDbType.Int32) { Primary = true, AutoIncrement = true },
                new SqlColumn("mailFrom", MySqlDbType.Text),
                new SqlColumn("mailTo", MySqlDbType.Text),
                new SqlColumn("mailText", MySqlDbType.Text),
                new SqlColumn("Date", MySqlDbType.Text),
                new SqlColumn("Read", MySqlDbType.Text)
                );

            SQLWriter.EnsureExists(table);
        }
Exemple #32
0
        internal RegionManager(IDbConnection db)
        {
            database = db;
            var table = new SqlTable("Regions",
                                     new SqlColumn("Id", MySqlDbType.Int32)
            {
                Primary = true, AutoIncrement = true
            },
                                     new SqlColumn("X1", MySqlDbType.Int32),
                                     new SqlColumn("Y1", MySqlDbType.Int32),
                                     new SqlColumn("width", MySqlDbType.Int32),
                                     new SqlColumn("height", MySqlDbType.Int32),
                                     new SqlColumn("RegionName", MySqlDbType.VarChar, 50)
            {
                Unique = true
            },
                                     new SqlColumn("WorldID", MySqlDbType.VarChar, 50)
            {
                Unique = true
            },
                                     new SqlColumn("UserIds", MySqlDbType.Text),
                                     new SqlColumn("Protected", MySqlDbType.Int32),
                                     new SqlColumn("Groups", MySqlDbType.Text),
                                     new SqlColumn("Owner", MySqlDbType.VarChar, 50),
                                     new SqlColumn("Z", MySqlDbType.Int32)
            {
                DefaultValue = "0"
            }
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);
        }
Exemple #33
0
        public WarpManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Warps",
                                     new SqlColumn("WarpName", MySqlDbType.VarChar, 50)
            {
                Primary = true
            },
                                     new SqlColumn("X", MySqlDbType.Int32),
                                     new SqlColumn("Y", MySqlDbType.Int32),
                                     new SqlColumn("WorldID", MySqlDbType.Text),
                                     new SqlColumn("Private", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);

            String file  = Path.Combine(TShock.SavePath, "warps.xml");
            String name  = "";
            String world = "";
            int    x1    = 0;
            int    y1    = 0;

            if (!File.Exists(file))
            {
                return;
            }

            using (var reader = XmlReader.Create(new StreamReader(file), new XmlReaderSettings {
                CloseInput = true
            }))
            {
                // Parse the file and display each of the nodes.
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:
                        switch (reader.Name)
                        {
                        case "Warp":
                            name  = "";
                            world = "";
                            x1    = 0;
                            y1    = 0;
                            break;

                        case "WarpName":
                            while (reader.NodeType != XmlNodeType.Text)
                            {
                                reader.Read();
                            }
                            name = reader.Value;
                            break;

                        case "X":
                            while (reader.NodeType != XmlNodeType.Text)
                            {
                                reader.Read();
                            }
                            int.TryParse(reader.Value, out x1);
                            break;

                        case "Y":
                            while (reader.NodeType != XmlNodeType.Text)
                            {
                                reader.Read();
                            }
                            int.TryParse(reader.Value, out y1);
                            break;

                        case "WorldName":
                            while (reader.NodeType != XmlNodeType.Text)
                            {
                                reader.Read();
                            }
                            world = reader.Value;
                            break;
                        }
                        break;

                    case XmlNodeType.Text:

                        break;

                    case XmlNodeType.XmlDeclaration:
                    case XmlNodeType.ProcessingInstruction:
                        break;

                    case XmlNodeType.Comment:
                        break;

                    case XmlNodeType.EndElement:
                        if (reader.Name.Equals("Warp"))
                        {
                            string query = (TShock.Config.StorageType.ToLower() == "sqlite")
                                                   ? "INSERT OR IGNORE INTO Warps VALUES (@0, @1,@2, @3);"
                                                   : "INSERT IGNORE INTO Warps SET X=@0, Y=@1, WarpName=@2, WorldID=@3;";
                            database.Query(query, x1, y1, name, world);
                        }
                        break;
                    }
                }
            }

            String path  = Path.Combine(TShock.SavePath, "old_configs");
            String file2 = Path.Combine(path, "warps.xml");

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            if (File.Exists(file2))
            {
                File.Delete(file2);
            }
            File.Move(file, file2);
        }
Exemple #34
0
        public UserManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Users",
                                     new SqlColumn("ID", MySqlDbType.Int32)
            {
                Primary = true, AutoIncrement = true
            },
                                     new SqlColumn("Username", MySqlDbType.VarChar, 32)
            {
                Unique = true
            },
                                     new SqlColumn("Password", MySqlDbType.VarChar, 128),
                                     new SqlColumn("Usergroup", MySqlDbType.Text),
                                     new SqlColumn("IP", MySqlDbType.VarChar, 16)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);

            String file = Path.Combine(TShock.SavePath, "users.txt");

            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        if (line.Equals("") || line.Substring(0, 1).Equals("#"))
                        {
                            continue;
                        }
                        String[] info     = line.Split(' ');
                        String   username = "";
                        String   sha      = "";
                        String   group    = "";
                        String   ip       = "";

                        String[] nameSha = info[0].Split(':');

                        if (nameSha.Length < 2)
                        {
                            username = nameSha[0];
                            ip       = nameSha[0];
                            group    = info[1];
                        }
                        else
                        {
                            username = nameSha[0];
                            sha      = nameSha[1];
                            group    = info[1];
                        }

                        string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
                                       "INSERT OR IGNORE INTO Users (Username, Password, Usergroup, IP) VALUES (@0, @1, @2, @3)" :
                                       "INSERT IGNORE INTO Users SET Username=@0, Password=@1, Usergroup=@2, IP=@3";

                        database.Query(query, username.Trim(), sha.Trim(), group.Trim(), ip.Trim());
                    }
                }
                String path  = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "users.txt");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                if (File.Exists(file2))
                {
                    File.Delete(file2);
                }
                File.Move(file, file2);
            }
        }
Exemple #35
0
        void OnInitialize(EventArgs e)
        {
            Commands.ChatCommands.Add(new Command("infsigns.admin.convert", ConvertSigns, "convsigns")
            {
                HelpText = "Converts Terraria signs to InfiniteSigns signs."
            });
            Commands.ChatCommands.Add(new Command("infsigns.admin.prune", Prune, "prunesigns")
            {
                HelpText = "Prunes empty signs."
            });
            Commands.ChatCommands.Add(new Command("infsigns.admin.rconvert", ReverseConvertSigns, "rconvsigns")
            {
                HelpText = "Converts InfiniteSigns signs to Terraria signs."
            });
            Commands.ChatCommands.Add(new Command("infsigns.sign.deselect", Deselect, "scset")
            {
                AllowServer = false,
                HelpText = "Cancels a sign selection."
            });
            Commands.ChatCommands.Add(new Command("infsigns.admin.info", Info, "sinfo")
            {
                AllowServer = false,
                HelpText = "Gets information about a sign when read."
            });
            Commands.ChatCommands.Add(new Command("infsigns.sign.lock", Lock, "slock")
            {
                AllowServer = false,
                DoLog = false,
                HelpText = "Locks a sign with a password when read. Use remove as the password to remove it."
            });
            Commands.ChatCommands.Add(new Command("infsigns.sign.protect", Protect, "sset")
            {
                AllowServer = false,
                HelpText = "Protects an unprotected sign when read."
            });
            Commands.ChatCommands.Add(new Command("infsigns.sign.public", Region, "spset")
            {
                AllowServer = false,
                HelpText = "Toggles a sign's public protection when read."
            });
            Commands.ChatCommands.Add(new Command("infsigns.sign.region", Region, "srset")
            {
                AllowServer = false,
                HelpText = "Toggles a sign's region protection when read."
            });
            Commands.ChatCommands.Add(new Command("infsigns.sign.unlock", Unlock, "sunlock")
            {
                AllowServer = false,
                DoLog = false,
                HelpText = "Unlocks a sign with a password."
            });
            Commands.ChatCommands.Add(new Command("infsigns.sign.unprotect", Unprotect, "sunset")
            {
                AllowServer = false,
                HelpText = "Unprotects a sign when read."
            });

            switch (TShock.Config.StorageType.ToLower())
            {
                case "mysql":
                    string[] host = TShock.Config.MySqlHost.Split(':');
                    Database = new MySqlConnection()
                    {
                        ConnectionString = string.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
                            host[0],
                            host.Length == 1 ? "3306" : host[1],
                            TShock.Config.MySqlDbName,
                            TShock.Config.MySqlUsername,
                            TShock.Config.MySqlPassword)
                    };
                    break;
                case "sqlite":
                    string sql = Path.Combine(TShock.SavePath, "signs.sqlite");
                    Database = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
                    break;
            }
            SqlTableCreator sqlcreator = new SqlTableCreator(Database,
                Database.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            sqlcreator.EnsureExists(new SqlTable("Signs",
                new SqlColumn("ID", MySqlDbType.Int32) { AutoIncrement = true, Primary = true },
                new SqlColumn("X", MySqlDbType.Int32),
                new SqlColumn("Y", MySqlDbType.Int32),
                new SqlColumn("Account", MySqlDbType.Text),
                new SqlColumn("Flags", MySqlDbType.Int32),
                new SqlColumn("Password", MySqlDbType.Text),
                new SqlColumn("Text", MySqlDbType.Text),
                new SqlColumn("WorldID", MySqlDbType.Int32)));
        }
        public void OnInitialize()
        {
            for(int i = 0; i<LastStrike.Length;i++)
            {
                LastStrike[i] = DateTime.Now;
            }
            if (!Directory.Exists(TShock.SavePath))
            {
                Directory.CreateDirectory(TShock.SavePath);
            }

            if (!File.Exists(EPRLogSavePath))
            {
                File.Create(EPRLogSavePath).Close();
            }
            SetupConfig();

            DeathToll = EPRConfig.DeathToll;
            DeathTollStatic = EPRConfig.DeathTollStatic;
            PointMultiplier = EPRConfig.PointMultiplier;
            currname = EPRConfig.currname;
            ReapersBlessingEnabled = EPRConfig.ReapersBlessingEnabled;
            LadyLucksMultiplier = EPRConfig.LadyLucksMultiplier;
            TimeReward = EPRConfig.TimeReward;
            EnableTR = EPRConfig.EnableTimeRewards;
            RewardTime = EPRConfig.RewardTime;
            ClaimTime = EPRConfig.ClaimTime;
            if (ClaimTime >= RewardTime * 60)
                ClaimTime = (RewardTime * 60) - 1;

            for(int i = 0; i <Main.maxNPCs;i++)
            {
                ENPCs[i] = new ENPC(i);
            }

            Commands.ChatCommands.Add(new Command("changepoints", CPoints, "cpoints"));
            Commands.ChatCommands.Add(new Command("pouch", Points, "shards"));
            Commands.ChatCommands.Add(new Command("pouch", Points, "points"));
            Commands.ChatCommands.Add(new Command("pouch", CheckDeathToll, "checkdeathtoll","checkdt"));
            Commands.ChatCommands.Add(new Command("pouch", CheckMultiplier, "checkmultiplier", "checkmult"));
            Commands.ChatCommands.Add(new Command("manage", Award, "award"));
            Commands.ChatCommands.Add(new Command("manage", Deduct, "deduct"));
            Commands.ChatCommands.Add(new Command("manage", AwardAll, "awardall"));
            Commands.ChatCommands.Add(new Command("manage", DeductAll, "deductall"));
            Commands.ChatCommands.Add(new Command("manage", LadyLuck, "ladylucksmileson","llso"));
            Commands.ChatCommands.Add(new Command("manage", ReaperBless, "reaperbless", "rb"));
            bool changepoints = false;
            bool pouchperm = false;
            bool manageperm = false;

            foreach (Group group in TShock.Groups.groups)
            {
                if (group.Name != "superadmin")
                {
                    if (group.HasPermission("changepoints"))
                        changepoints = true;
                    if (group.HasPermission("pouch"))
                        pouchperm = true;
                    if (group.HasPermission("manage"))
                        manageperm = true;
                }
            }

            List<string> permlist = new List<string>();
            List<string> permlist2 = new List<string>();
            List<string> permlist3 = new List<string>();
            if (!changepoints)
                permlist2.Add("changepoints");
            if (!pouchperm)
                permlist.Add("pouch");
            if (!manageperm)
                permlist3.Add("manage");

            TShock.Groups.AddPermissions("default", permlist);
            TShock.Groups.AddPermissions("trustedadmin", permlist2);
            TShock.Groups.AddPermissions("trustedadmin", permlist3);
            SQLEditor = new SqlTableEditor(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            SQLWriter = new SqlTableCreator(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());

            var table = new SqlTable("ServerPointAccounts",
                new SqlColumn("ID", MySqlDbType.Int32) { Primary = true, AutoIncrement = true },
                new SqlColumn("name", MySqlDbType.String, 255) { Unique = true },
                new SqlColumn("amount", MySqlDbType.Int32)
            );
            SQLWriter.EnsureExists(table);
            Commands.ChatCommands.Add(new Command("pouch", Points, currname));
            if (!Directory.Exists(PayLogs))
            {
                Directory.CreateDirectory(PayLogs);
            }

            if (!File.Exists(PayLogSavePath))
            {
                File.Create(PayLogSavePath).Close();
            }
        }
Exemple #37
0
        public RegionManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Regions",
                new SqlColumn("X1", MySqlDbType.Int32),
                new SqlColumn("Y1", MySqlDbType.Int32),
                new SqlColumn("width", MySqlDbType.Int32),
                new SqlColumn("height", MySqlDbType.Int32),
                new SqlColumn("RegionName", MySqlDbType.VarChar, 50) { Primary = true },
                new SqlColumn("WorldID", MySqlDbType.Text),
                new SqlColumn("UserIds", MySqlDbType.Text),
                new SqlColumn("Protected", MySqlDbType.Int32)
            );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);

            ImportOld();
            ReloadAllRegions();
        }
Exemple #38
0
        public UserManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Users",
                                     new SqlColumn("ID", MySqlDbType.Int32) {Primary = true, AutoIncrement = true},
                                     new SqlColumn("Username", MySqlDbType.VarChar, 32) {Unique = true},
                                     new SqlColumn("Password", MySqlDbType.VarChar, 128),
                                     new SqlColumn("Usergroup", MySqlDbType.Text),
                                     new SqlColumn("LastAccessed", MySqlDbType.Text),
                                     new SqlColumn("KnownIPs", MySqlDbType.Text)
                );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                              	? (IQueryBuilder) new SqliteQueryCreator()
                                              	: new MysqlQueryCreator());
            creator.EnsureExists(table);
        }
Exemple #39
0
        public BanManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Bans",
                                     new SqlColumn("IP", MySqlDbType.String, 16) {Primary = true},
                                     new SqlColumn("Name", MySqlDbType.Text),
                                     new SqlColumn("Reason", MySqlDbType.Text)
                );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                              	? (IQueryBuilder) new SqliteQueryCreator()
                                              	: new MysqlQueryCreator());
            try
            {
                creator.EnsureExists(table);
            }
            catch (DllNotFoundException)
            {
                System.Console.WriteLine("Possible problem with your database - is Sqlite3.dll present?");
                throw new Exception("Could not find a database library (probably Sqlite3.dll)");
            }
        }
 public static void SetupDb()
 {
     if (File.Exists(Path.Combine(TShock.SavePath, "Essentials", "Essentials.db")) && !File.Exists(Path.Combine(TShock.SavePath, "Essentials", "Essentials.sqlite")))
     {
         File.Move(Path.Combine(TShock.SavePath, "Essentials", "Essentials.db"), Path.Combine(TShock.SavePath, "Essentials", "Essentials.sqlite"));
     }
     switch (TShock.Config.StorageType.ToLower())
     {
         case "mysql":
             var host = TShock.Config.MySqlHost.Split(':');
             _db = new MySqlConnection
             {
                 ConnectionString = string.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
                 host[0],
                 host.Length == 1 ? "3306" : host[1],
                 TShock.Config.MySqlDbName,
                 TShock.Config.MySqlUsername,
                 TShock.Config.MySqlPassword)
             };
             break;
         case "sqlite":
             var sql = Path.Combine(TShock.SavePath, "Essentials", "Essentials.sqlite");
             _db = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
             break;
     }
     var sqlcreator = new SqlTableCreator(_db,
         _db.GetSqlType() == SqlType.Sqlite
         ? (IQueryBuilder)new SqliteQueryCreator()
         : new MysqlQueryCreator());
     sqlcreator.EnsureExists(new SqlTable("Homes",
         new SqlColumn("UserID", MySqlDbType.Int32),
         new SqlColumn("HomeX", MySqlDbType.Int32),
         new SqlColumn("HomeY", MySqlDbType.Int32),
         new SqlColumn("Name", MySqlDbType.Text),
         new SqlColumn("WorldID", MySqlDbType.Int32)));
     sqlcreator.EnsureExists(new SqlTable("Nicknames",
         new SqlColumn("Name", MySqlDbType.Text),
         new SqlColumn("Nickname", MySqlDbType.Text)));
 }
Exemple #41
0
        private void SetupDb()
        {
            if (TShock.Config.StorageType.ToLower() == "sqlite")
            {
                string sql = Path.Combine(savepath, "AdminTools.sqlite");
                db = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
            }
            else if (TShock.Config.StorageType.ToLower() == "mysql")
            {
                try
                {
                    var hostport = TShock.Config.MySqlHost.Split(':');
                    db = new MySqlConnection();
                    db.ConnectionString =
                        String.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
                                      hostport[0],
                                      hostport.Length > 1 ? hostport[1] : "3306",
                                      TShock.Config.MySqlDbName,
                                      TShock.Config.MySqlUsername,
                                      TShock.Config.MySqlPassword
                            );
                }
                catch (MySqlException ex)
                {
                    Log.Error(ex.ToString());
                    throw new Exception("MySql not setup correctly");
                }
            }
            else
            {
                throw new Exception("Invalid storage type");
            }

            SQLcreator = new SqlTableCreator(db, new SqliteQueryCreator());
            SQLeditor = new SqlTableEditor(db, new SqliteQueryCreator());

            var table = new SqlTable("SignData",
                new SqlColumn("ID", MySql.Data.MySqlClient.MySqlDbType.Int32) { Primary = true, AutoIncrement = true, NotNull = true },
                new SqlColumn("X", MySql.Data.MySqlClient.MySqlDbType.Int32),
                new SqlColumn("Y", MySql.Data.MySqlClient.MySqlDbType.Int32),
                new SqlColumn("User", MySql.Data.MySqlClient.MySqlDbType.VarChar) { Length = 30 },
                new SqlColumn("Time", MySql.Data.MySqlClient.MySqlDbType.Int32),
                new SqlColumn("WorldID", MySql.Data.MySqlClient.MySqlDbType.Int32)
            );
            SQLcreator.EnsureExists(table);
            table = new SqlTable("PlayerData",
                new SqlColumn("UserID", MySql.Data.MySqlClient.MySqlDbType.Int32) { Primary = true, Unique = true, NotNull = true },
                new SqlColumn("Username", MySql.Data.MySqlClient.MySqlDbType.VarChar) { Length = 30 },
                new SqlColumn("Nicknames", MySql.Data.MySqlClient.MySqlDbType.Text),
                new SqlColumn("IPs", MySql.Data.MySqlClient.MySqlDbType.Text),
                new SqlColumn("LastSeen", MySql.Data.MySqlClient.MySqlDbType.Int32)
            );
            SQLcreator.EnsureExists(table);
        }
        void OnInitialize()
        {
            Commands.ChatCommands.Add(new Command("protectchest", Deselect, "ccset"));
            Commands.ChatCommands.Add(new Command("showchestinfo", Info, "cinfo"));
            Commands.ChatCommands.Add(new Command("protectchest", Lock, "clock") { DoLog = false });
            Commands.ChatCommands.Add(new Command("maintenance", ConvertChests, "convchests"));
            Commands.ChatCommands.Add(new Command("protectchest", PublicProtect, "cpset"));
            Commands.ChatCommands.Add(new Command("refillchest", Refill, "crefill"));
            Commands.ChatCommands.Add(new Command("protectchest", RegionProtect, "crset"));
            Commands.ChatCommands.Add(new Command("protectchest", Protect, "cset"));
            Commands.ChatCommands.Add(new Command(Unlock, "cunlock") { DoLog = false });
            Commands.ChatCommands.Add(new Command("protectchest", Unprotect, "cunset"));

            switch (TShock.Config.StorageType.ToLower())
            {
                case "mysql":
                    string[] host = TShock.Config.MySqlHost.Split(':');
                    Database = new MySqlConnection()
                    {
                        ConnectionString = string.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
                            host[0],
                            host.Length == 1 ? "3306" : host[1],
                            TShock.Config.MySqlDbName,
                            TShock.Config.MySqlUsername,
                            TShock.Config.MySqlPassword)
                    };
                    break;
                case "sqlite":
                    string sql = Path.Combine(TShock.SavePath, "chests.sqlite");
                    Database = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
                    break;
            }
            SqlTableCreator sqlcreator = new SqlTableCreator(Database,
                Database.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            sqlcreator.EnsureExists(new SqlTable("Chests",
                new SqlColumn("X", MySqlDbType.Int32),
                new SqlColumn("Y", MySqlDbType.Int32),
                new SqlColumn("Account", MySqlDbType.Text),
                new SqlColumn("Items", MySqlDbType.Text),
                new SqlColumn("Flags", MySqlDbType.Int32),
                new SqlColumn("Password", MySqlDbType.Text),
                new SqlColumn("WorldID", MySqlDbType.Int32)));
        }
Exemple #43
0
        void OnInitialize()
        {
            config = new Config();
            if (!Directory.Exists(SavePath))
                Directory.CreateDirectory(SavePath);
            ReadConfig();
            switch (TShock.Config.StorageType.ToLower())
            {
                case "mysql":
                    string[] host = TShock.Config.MySqlHost.Split(':');
                    Database = new MySqlConnection()
                    {
                        ConnectionString = string.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
                            host[0],
                            host.Length == 1 ? "3306" : host[1],
                            TShock.Config.MySqlDbName,
                            TShock.Config.MySqlUsername,
                            TShock.Config.MySqlPassword)
                    };
                    break;
                case "sqlite":
                    string sql = Path.Combine(SavePath, "vault.sqlite");
                    Database = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
                    break;
            }
            SqlTableCreator sqlcreator = new SqlTableCreator(Database, Database.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            sqlcreator.EnsureExists(new SqlTable("vault_players",
                new SqlColumn("username", MySqlDbType.VarChar) { Length = 30 },
                new SqlColumn("money", MySqlDbType.Int32),
                new SqlColumn("worldID", MySqlDbType.Int32),
                new SqlColumn("killData", MySqlDbType.Text),
                new SqlColumn("tempMin", MySqlDbType.Int32),
                new SqlColumn("totalOnline", MySqlDbType.Int32),
                new SqlColumn("lastSeen", MySqlDbType.Text)
                ));

            Commands.ChatCommands.Add(new Command("vault.pay", PayCommand, "pay"));
            Commands.ChatCommands.Add(new Command("vault.balance", BalanceCommand, "balance"));
            Commands.ChatCommands.Add(new Command("vault.modify", ModifyCommand, "modbal", "modifybalance"));
            Commands.ChatCommands.Add(new Command("vault.seen", SeenCommand, "seen"));
        }
Exemple #44
0
        internal void OnInitialize(EventArgs args)
        {
            if (C3Config.TeamColor1 < 1 || C3Config.TeamColor1 > 4 || C3Config.TeamColor1 == C3Config.TeamColor2 || C3Config.TeamColor2 > 4 || C3Config.TeamColor2 < 1)
                throw new Exception("Team Colours are inccorectly set up. Check c3config.json");

            SQLEditor = new SqlTableEditor(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            SQLWriter = new SqlTableCreator(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());

            ApocalypseMonsters.AddNPCs();
            int ArenaCount;

            #region TestPerms
            //Checks to see if permissions have been moved around
            bool vote = false;
            bool joinvote = false;
            bool setflags = false;
            bool setspawns = false;
            bool managec3settings = false;
            bool cvote = false;
            bool duel = false;
            foreach (Group group in TShock.Groups.groups)
            {
                if (group.Name != "superadmin")
                {
                    if (group.HasPermission("vote"))
                        vote = true;
                    if (group.HasPermission("joinvote"))
                        joinvote = true;
                    if (group.HasPermission("setflags"))
                        setflags = true;
                    if (group.HasPermission("managec3settings"))
                        managec3settings = true;
                    if (group.HasPermission("cvote"))
                        cvote = true;
                    if (group.HasPermission("duel"))
                        duel = true;
                    if (group.HasPermission("setspawns"))
                        setspawns = true;
                }
            }
            List<string> perm = new List<string>();
            if (!vote)
                perm.Add("vote");
            if (!joinvote)
                perm.Add("joinvote");
            if (!duel)
                perm.Add("duel");
            TShock.Groups.AddPermissions("default", perm);

            perm.Clear();
            if (!setflags)
                perm.Add("setflags");
            if (!setflags)
                perm.Add("setspawns");
            if (!managec3settings)
                perm.Add("managec3settings");
            if (!cvote)
                perm.Add("cvote");
            if (!setspawns)
                perm.Add("setspawns");
            TShock.Groups.AddPermissions("trustedadmin", perm);
            #endregion
            //Converted v2.2
            #region AddCommands
            if (C3Mod.C3Config.TeamColor1 == 1)
            {
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam1Flag, "setctfredflag"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam1Spawn, "setctfredspawn"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetOneFlagTeam1Spawn, "setoneflagredspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetDuelTeam1Spawn, "setduelredspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetTDMTeam1Spawn, "settdmredspawn"));
            }
            else if (C3Mod.C3Config.TeamColor1 == 2)
            {
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam1Flag, "setctfgreenflag"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam1Spawn, "setctfgreenspawn"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetOneFlagTeam1Spawn, "setoneflaggreenspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetDuelTeam1Spawn, "setduelgreenspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetTDMTeam1Spawn, "settdmgreenspawn"));
            }
            else if (C3Mod.C3Config.TeamColor1 == 3)
            {
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam1Flag, "setctfblueflag"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam1Spawn, "setctfbluespawn"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetOneFlagTeam1Spawn, "setoneflagbluespawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetDuelTeam1Spawn, "setduelbluespawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetTDMTeam1Spawn, "settdmbluespawn"));
            }
            else if (C3Mod.C3Config.TeamColor1 == 4)
            {
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam1Flag, "setctfyellowflag"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam1Spawn, "setctfyellowspawn"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetOneFlagTeam1Spawn, "setoneflagyellowspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetDuelTeam1Spawn, "setduelyellowspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetTDMTeam1Spawn, "settdmyellowspawn"));
            }
            if (C3Mod.C3Config.TeamColor2 == 1)
            {
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam2Flag, "setctfredflag"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam2Spawn, "setctfredspawn"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetOneFlagTeam2Spawn, "setoneflagredspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetDuelTeam2Spawn, "setduelredspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetTDMTeam2Spawn, "settdmredspawn"));
            }
            else if (C3Mod.C3Config.TeamColor2 == 2)
            {
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam2Flag, "setctfgreenflag"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam2Spawn, "setctfgreenspawn"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetOneFlagTeam2Spawn, "setoneflaggreenspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetDuelTeam2Spawn, "setduelgreenspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetTDMTeam2Spawn, "settdmgreenspawn"));
            }
            else if (C3Mod.C3Config.TeamColor2 == 3)
            {
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam2Flag, "setctfblueflag"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam2Spawn, "setctfbluespawn"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetOneFlagTeam2Spawn, "setoneflagbluespawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetDuelTeam2Spawn, "setduelbluespawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetTDMTeam2Spawn, "settdmbluespawn"));
            }
            else if (C3Mod.C3Config.TeamColor2 == 4)
            {
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam2Flag, "setctfyellowflag"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetCTFTeam2Spawn, "setctfyellowspawn"));
                Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetOneFlagTeam2Spawn, "setoneflagyellowspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetDuelTeam2Spawn, "setduelyellowspawn"));
                Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetTDMTeam2Spawn, "settdmyellowspawn"));
            }

            Commands.ChatCommands.Add(new Command("setflags", C3Commands.AddCTFArena, "addctfarena"));
            Commands.ChatCommands.Add(new Command("setflags", C3Commands.SetOneFlag, "setoneflag"));
            Commands.ChatCommands.Add(new Command("setflags", C3Commands.AddOneFlagArena, "addoneflagarena"));
            Commands.ChatCommands.Add(new Command("setflags", C3Commands.AddDuelArena, "addduelarena"));
            Commands.ChatCommands.Add(new Command("setflags", C3Commands.AddTDMArena, "addtdmarena"));

            Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetFFASpawn, "setffaspawn"));
            Commands.ChatCommands.Add(new Command("setflags", C3Commands.AddFFAArena, "addffaarena"));

            Commands.ChatCommands.Add(new Command("vote", C3Commands.StartVote, "vote"));
            Commands.ChatCommands.Add(new Command("joinvote", C3Commands.JoinVote, "join"));
            Commands.ChatCommands.Add(new Command("managec3settings", C3Commands.Stop, "stop"));
            Commands.ChatCommands.Add(new Command(C3Commands.Quit, "quit"));
            Commands.ChatCommands.Add(new Command("managec3settings", C3Commands.SetCTFLimit, "setctflimit"));
            Commands.ChatCommands.Add(new Command("managec3settings", C3Commands.SetOneFlagLimit, "setoneflaglimit"));
            Commands.ChatCommands.Add(new Command("managec3settings", C3Commands.SetDuelLimit, "setduellimit"));
            Commands.ChatCommands.Add(new Command("managec3settings", C3Commands.SetTDMLimit, "settdmlimit"));

            Commands.ChatCommands.Add(new Command("managec3settings", C3Commands.SetFFALimit, "setffalimit"));

            Commands.ChatCommands.Add(new Command("cvote", C3Commands.CancelVote, "cvote"));
            Commands.ChatCommands.Add(new Command("duel", C3Commands.ChallengePlayer, "duel"));
            Commands.ChatCommands.Add(new Command(C3Commands.AcceptChallenge, "accept"));

            Commands.ChatCommands.Add(new Command(C3Commands.ListArenaID, "list"));
            Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetApocPlayerSpawn, "setapocplayerspawn"));
            Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetApocMonsterSpawn, "setapocmonsterspawn"));
            Commands.ChatCommands.Add(new Command("setspawns", C3Commands.SetApocSpectatorSpawn, "setapocspectatorspawn"));
            #endregion

            #region FlagPoints

            var table = new SqlTable("FlagPoints",
                new SqlColumn("Name", MySqlDbType.Text),
                new SqlColumn("RedX", MySqlDbType.Int32),
                new SqlColumn("RedY", MySqlDbType.Int32),
                new SqlColumn("BlueX", MySqlDbType.Int32),
                new SqlColumn("BlueY", MySqlDbType.Int32),
                new SqlColumn("RedSpawnX", MySqlDbType.Int32),
                new SqlColumn("RedSpawnY", MySqlDbType.Int32),
                new SqlColumn("BlueSpawnX", MySqlDbType.Int32),
                new SqlColumn("BlueSpawnY", MySqlDbType.Int32)
            );
            SQLWriter.EnsureExists(table);

            if ((ArenaCount = SQLEditor.ReadColumn("FlagPoints", "Name", new List<SqlValue>()).Count) != 0)
            {
                for (int i = 0; i < ArenaCount; i++)
                {
                    string name = SQLEditor.ReadColumn("FlagPoints", "Name", new List<SqlValue>())[i].ToString();
                    int redx = Int32.Parse(SQLEditor.ReadColumn("FlagPoints", "RedX", new List<SqlValue>())[i].ToString());
                    int redy = Int32.Parse(SQLEditor.ReadColumn("FlagPoints", "RedY", new List<SqlValue>())[i].ToString());
                    int bluex = Int32.Parse(SQLEditor.ReadColumn("FlagPoints", "BlueX", new List<SqlValue>())[i].ToString());
                    int bluey = Int32.Parse(SQLEditor.ReadColumn("FlagPoints", "BlueY", new List<SqlValue>())[i].ToString());
                    int redspawnx = Int32.Parse(SQLEditor.ReadColumn("FlagPoints", "RedSpawnX", new List<SqlValue>())[i].ToString());
                    int redspawny = Int32.Parse(SQLEditor.ReadColumn("FlagPoints", "RedSpawnY", new List<SqlValue>())[i].ToString());
                    int bluespawnx = Int32.Parse(SQLEditor.ReadColumn("FlagPoints", "BlueSpawnX", new List<SqlValue>())[i].ToString());
                    int bluespawny = Int32.Parse(SQLEditor.ReadColumn("FlagPoints", "BlueSpawnY", new List<SqlValue>())[i].ToString());

                    CTF.Arenas.Add(new CTFArena(new Vector2(redx, redy), new Vector2(bluex, bluey), new Vector2(redspawnx, redspawny), new Vector2(bluespawnx, bluespawny), name));
                }
            }

            #endregion

            #region DuelSpawns

            table = new SqlTable("DuelSpawns",
                new SqlColumn("Name", MySqlDbType.Text),
                new SqlColumn("RedSpawnX", MySqlDbType.Int32),
                new SqlColumn("RedSpawnY", MySqlDbType.Int32),
                new SqlColumn("BlueSpawnX", MySqlDbType.Int32),
                new SqlColumn("BlueSpawnY", MySqlDbType.Int32)
            );
            SQLWriter.EnsureExists(table);

            if ((ArenaCount = SQLEditor.ReadColumn("DuelSpawns", "Name", new List<SqlValue>()).Count) != 0)
            {
                for (int i = 0; i < ArenaCount; i++)
                {
                    string name = SQLEditor.ReadColumn("DuelSpawns", "Name", new List<SqlValue>())[0].ToString();
                    int redx = Int32.Parse(SQLEditor.ReadColumn("DuelSpawns", "RedSpawnX", new List<SqlValue>())[0].ToString());
                    int redy = Int32.Parse(SQLEditor.ReadColumn("DuelSpawns", "RedSpawnY", new List<SqlValue>())[0].ToString());
                    int bluex = Int32.Parse(SQLEditor.ReadColumn("DuelSpawns", "BlueSpawnX", new List<SqlValue>())[0].ToString());
                    int bluey = Int32.Parse(SQLEditor.ReadColumn("DuelSpawns", "BlueSpawnY", new List<SqlValue>())[0].ToString());

                    Duel.Arenas.Add(new DuelArena(new Vector2(redx, redy), new Vector2(bluex, bluey), name));
                }
            }

            #endregion

            #region OneFlagPoints

            table = new SqlTable("OneFlagPoints",
                new SqlColumn("Name", MySqlDbType.Text),
                new SqlColumn("FlagX", MySqlDbType.Int32),
                new SqlColumn("FlagY", MySqlDbType.Int32),
                new SqlColumn("RedSpawnX", MySqlDbType.Int32),
                new SqlColumn("RedSpawnY", MySqlDbType.Int32),
                new SqlColumn("BlueSpawnX", MySqlDbType.Int32),
                new SqlColumn("BlueSpawnY", MySqlDbType.Int32)
            );
            SQLWriter.EnsureExists(table);

            if ((ArenaCount = SQLEditor.ReadColumn("OneFlagPoints", "Name", new List<SqlValue>()).Count) != 0)
            {
                for (int i = 0; i < ArenaCount; i++)
                {
                    string name = SQLEditor.ReadColumn("OneFlagPoints", "Name", new List<SqlValue>())[i].ToString();
                    int flagx = Int32.Parse(SQLEditor.ReadColumn("OneFlagPoints", "FlagX", new List<SqlValue>())[i].ToString());
                    int flagy = Int32.Parse(SQLEditor.ReadColumn("OneFlagPoints", "FlagY", new List<SqlValue>())[i].ToString());
                    int redspawnx = Int32.Parse(SQLEditor.ReadColumn("OneFlagPoints", "RedSpawnX", new List<SqlValue>())[i].ToString());
                    int redspawny = Int32.Parse(SQLEditor.ReadColumn("OneFlagPoints", "RedSpawnY", new List<SqlValue>())[i].ToString());
                    int bluespawnx = Int32.Parse(SQLEditor.ReadColumn("OneFlagPoints", "BlueSpawnX", new List<SqlValue>())[i].ToString());
                    int bluespawny = Int32.Parse(SQLEditor.ReadColumn("OneFlagPoints", "BlueSpawnY", new List<SqlValue>())[i].ToString());

                    OneFlagCTF.Arenas.Add(new OneFlagArena(new Vector2(flagx, flagy), new Vector2(redspawnx, redspawny), new Vector2(bluespawnx, bluespawny), name));
                }
            }

            #endregion

            #region TDMSpawns

            table = new SqlTable("TDMSpawns",
                new SqlColumn("Name", MySqlDbType.Text),
                new SqlColumn("RedSpawnX", MySqlDbType.Int32),
                new SqlColumn("RedSpawnY", MySqlDbType.Int32),
                new SqlColumn("BlueSpawnX", MySqlDbType.Int32),
                new SqlColumn("BlueSpawnY", MySqlDbType.Int32)
            );
            SQLWriter = new SqlTableCreator(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            SQLWriter.EnsureExists(table);

            if ((ArenaCount = SQLEditor.ReadColumn("TDMSpawns", "Name", new List<SqlValue>()).Count) != 0)
            {
                for (int i = 0; i < ArenaCount; i++)
                {
                    string name = SQLEditor.ReadColumn("TDMSpawns", "Name", new List<SqlValue>())[i].ToString();
                    int redx = Int32.Parse(SQLEditor.ReadColumn("TDMSpawns", "RedSpawnX", new List<SqlValue>())[i].ToString());
                    int redy = Int32.Parse(SQLEditor.ReadColumn("TDMSpawns", "RedSpawnY", new List<SqlValue>())[i].ToString());
                    int bluex = Int32.Parse(SQLEditor.ReadColumn("TDMSpawns", "BlueSpawnX", new List<SqlValue>())[i].ToString());
                    int bluey = Int32.Parse(SQLEditor.ReadColumn("TDMSpawns", "BlueSpawnY", new List<SqlValue>())[i].ToString());

                    TDM.Arenas.Add(new TDMArena(new Vector2(redx, redy), new Vector2(bluex, bluey), name));
                }
            }

            #endregion

            #region FFASpawns

            table = new SqlTable("FFASpawns",
                new SqlColumn("Name", MySqlDbType.Text),
                new SqlColumn("SpawnX", MySqlDbType.Int32),
                new SqlColumn("SpawnY", MySqlDbType.Int32)
            );
            SQLWriter = new SqlTableCreator(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            SQLWriter.EnsureExists(table);

            if ((ArenaCount = SQLEditor.ReadColumn("FFASpawns", "Name", new List<SqlValue>()).Count) != 0)
            {
                for (int i = 0; i < ArenaCount; i++)
                {
                    string name = SQLEditor.ReadColumn("FFASpawns", "Name", new List<SqlValue>())[i].ToString();
                    int x = Int32.Parse(SQLEditor.ReadColumn("FFASpawns", "SpawnX", new List<SqlValue>())[i].ToString());
                    int y = Int32.Parse(SQLEditor.ReadColumn("FFASpawns", "SpawnY", new List<SqlValue>())[i].ToString());

                    FFA.Arenas.Add(new FFAArena(new Vector2(x, y), name));
                }
            }

            #endregion

            #region Apocalypse

            table = new SqlTable("Apocalypse",
                new SqlColumn("SpawnX", MySqlDbType.Int32),
                new SqlColumn("SpawnY", MySqlDbType.Int32),
                new SqlColumn("MonsterSpawnX", MySqlDbType.Int32),
                new SqlColumn("MonsterSpawnY", MySqlDbType.Int32),
                new SqlColumn("SpectatorSpawnX", MySqlDbType.Int32),
                new SqlColumn("SpectatorSpawnY", MySqlDbType.Int32)
            );
            SQLWriter = new SqlTableCreator(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            SQLWriter.EnsureExists(table);

            if (SQLEditor.ReadColumn("Apocalypse", "SpawnX", new List<SqlValue>()).Count == 0)
            {
                List<SqlValue> list = new List<SqlValue>();
                list.Add(new SqlValue("SpawnX", 0));
                list.Add(new SqlValue("SpawnY", 0));
                list.Add(new SqlValue("MonsterSpawnX", 0));
                list.Add(new SqlValue("MonsterSpawnY", 0));
                list.Add(new SqlValue("SpectatorSpawnX", 0));
                list.Add(new SqlValue("SpectatorSpawnY", 0));
                SQLEditor.InsertValues("Apocalypse", list);
            }
            else
            {
                Apocalypse.PlayerSpawn.X = Int32.Parse(SQLEditor.ReadColumn("Apocalypse", "SpawnX", new List<SqlValue>())[0].ToString());
                Apocalypse.PlayerSpawn.Y = Int32.Parse(SQLEditor.ReadColumn("Apocalypse", "SpawnY", new List<SqlValue>())[0].ToString());
                Apocalypse.MonsterSpawn.X = Int32.Parse(SQLEditor.ReadColumn("Apocalypse", "MonsterSpawnX", new List<SqlValue>())[0].ToString());
                Apocalypse.MonsterSpawn.Y = Int32.Parse(SQLEditor.ReadColumn("Apocalypse", "MonsterSpawnY", new List<SqlValue>())[0].ToString());
                Apocalypse.SpectatorArea.X = Int32.Parse(SQLEditor.ReadColumn("Apocalypse", "SpectatorSpawnX", new List<SqlValue>())[0].ToString());
                Apocalypse.SpectatorArea.Y = Int32.Parse(SQLEditor.ReadColumn("Apocalypse", "SpectatorSpawnY", new List<SqlValue>())[0].ToString());
            }

            #endregion
        }
Exemple #45
0
        private void SetupDb()
        {
            switch (TShock.Config.StorageType.ToLower())
            {
                case "sqlite":
                    db = new SqliteConnection(string.Format("uri=file://{0},Version=3",
                        Path.Combine(TShock.SavePath, "ServerShop.sqlite")));
                    break;
                case "mysql":
                    try
                    {
                        var host = TShock.Config.MySqlHost.Split(':');
                        db = new MySqlConnection
                        {
                            ConnectionString = String.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4}",
                                host[0],
                                host.Length == 1 ? "3306" : host[1],
                                TShock.Config.MySqlDbName,
                                TShock.Config.MySqlUsername,
                                TShock.Config.MySqlPassword
                                )
                        };
                    }
                    catch (MySqlException x)
                    {
                        Log.Error(x.ToString());
                        throw new Exception("MySQL not setup correctly.");
                    }
                    break;
                default:
                    throw new Exception("Invalid storage type.");
            }

            var sqlCreator = new SqlTableCreator(db,
                db.GetSqlType() == SqlType.Sqlite
                ? (IQueryBuilder)new SqliteQueryCreator()
                : new MysqlQueryCreator());

            var inv = new SqlTable("Inventory",
                new SqlColumn("ID", MySqlDbType.Int32),
                new SqlColumn("Price", MySqlDbType.Int32),
                new SqlColumn("Stock", MySqlDbType.Int32),
                new SqlColumn("MaxStock", MySqlDbType.Int32),
                new SqlColumn("RestockTime", MySqlDbType.Int32),
                new SqlColumn("RestockType", MySqlDbType.Int32)
                );

            var reg = new SqlTable("ShopRegions",
                new SqlColumn("Region", MySqlDbType.String)
                );

            sqlCreator.EnsureExists(inv);
            sqlCreator.EnsureExists(reg);
        }
        public void OnInitialize()
        {
            Main.buffName[1] = "Obsidian Skin";
            Main.buffName[2] = "Regeneration";
            Main.buffName[3] = "Swiftness";
            Main.buffName[4] = "Gills";
            Main.buffName[5] = "Ironskin";
            Main.buffName[6] = "Mana Regeneration";
            Main.buffName[7] = "Magic Power";
            Main.buffName[8] = "Featherfall";
            Main.buffName[9] = "Spelunker";
            Main.buffName[10] = "Invisibility";
            Main.buffName[11] = "Shine";
            Main.buffName[12] = "Night Owl";
            Main.buffName[13] = "Battle";
            Main.buffName[14] = "Thorns";
            Main.buffName[15] = "Water Walking";
            Main.buffName[0x10] = "Archery";
            Main.buffName[0x11] = "Hunter";
            Main.buffName[0x12] = "Gravitation";
            Main.buffName[0x13] = "Orb of Light";
            Main.buffName[20] = "Poisoned";
            Main.buffName[0x15] = "Potion Sickness";
            Main.buffName[0x16] = "Darkness";
            Main.buffName[0x17] = "Cursed";
            Main.buffName[0x18] = "On Fire!";
            Main.buffName[0x19] = "Tipsy";
            Main.buffName[0x1a] = "Well Fed";
            SQLEditor = new SqlTableEditor(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            SQLWriter = new SqlTableCreator(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            var table = new SqlTable("regionMow",
                        new SqlColumn("Name", MySqlDbType.Text),
                        new SqlColumn("Mow", MySqlDbType.Int32));
            SQLWriter.EnsureExists(table);
            var table2 = new SqlTable("muteList",
                        new SqlColumn("Name", MySqlDbType.Text),
                        new SqlColumn("IP", MySqlDbType.Text));
            SQLWriter.EnsureExists(table2);
            var readTableName = SQLEditor.ReadColumn("regionMow", "Name", new List<SqlValue>());
            var readTableBool = SQLEditor.ReadColumn("regionMow", "Mow", new List<SqlValue>());
            for (int i = 0; i < readTableName.Count; i++)
            {

                try
                {
                    regionMow.Add(readTableName[i].ToString(), Convert.ToBoolean(readTableBool[i]));
                }
                catch (Exception) { }

            }
            reload();
            List<string> permlist = new List<string>();
            permlist.Add("ghostmode");
            permlist.Add("fly");
            permlist.Add("flymisc");
            permlist.Add("mute");
            permlist.Add("reloadmore");
            permlist.Add("permabuff");
            TShock.Groups.AddPermissions("trustedadmin", permlist);
            for (int i = 0; i < 256; i++)
            {

                isGhost[i] = false;
                isHeal[i] = false;
                flyMode[i] = false;
                upPressed[i] = false;
                carpetPoints.Add(new List<Vector2>());
                buffsUsed.Add(new List<int>());
                muted[i] = false;
                muteTime[i] = -1;
                muteAllFree[i] = false;
                viewAll[i] = false;
                accessRed[i] = (redPass == "");
                accessBlue[i] = (bluePass == "");
                accessGreen[i] = (greenPass == "");
                accessYellow[i] = (yellowPass == "");
                autoKill[i] = false;
                tpOff[i] = false;

            }
            Commands.ChatCommands.Add(new Command("ghostmode", Ghost, "ghost"));
            Commands.ChatCommands.Add(new Command("time", FreezeTime, "freezetime"));
            Commands.ChatCommands.Add(new Command("spawnmob", SpawnMobPlayer, "spawnmobplayer"));
            Commands.ChatCommands.Add(new Command("spawnmob", SpawnAll, "spawnall"));
            Commands.ChatCommands.Add(new Command("spawnmob", SpawnGroup, "spawngroup"));
            Commands.ChatCommands.Add(new Command("autoheal", AutoHeal, "autoheal"));
            Commands.ChatCommands.Add(new Command("fly", Fly, "fly"));
            Commands.ChatCommands.Add(new Command("flymisc", Fetch, "fetch"));
            //Commands.ChatCommands.Add(new Command("flymisc", CarpetBody, "carpetbody"));
            //Commands.ChatCommands.Add(new Command("flymisc", CarpetSides, "carpetsides"));
            Commands.ChatCommands.Add(new Command("editspawn", Mow, "mow"));
            Commands.ChatCommands.Add(new Command("permabuff", permaBuff, "permabuff"));
            Commands.ChatCommands.Add(new Command("permabuff", permaBuffAll, "permabuffall"));
            Commands.ChatCommands.Add(new Command("permabuff", permaBuffGroup, "permabuffgroup"));
            Commands.ChatCommands.Add(new Command("item", ForceGive, "forcegive"));
            Commands.ChatCommands.Add(new Command("killall", KillAll, "killall"));
            Commands.ChatCommands.Add(new Command("mute", Mute, "mute"));
            Commands.ChatCommands.Add(new Command("mute", PermaMute, "permamute"));
            Commands.ChatCommands.Add(new Command("muteall", MuteAll, "muteall"));
            Commands.ChatCommands.Add(new Command("butcher", ButcherAll, "butcherall"));
            Commands.ChatCommands.Add(new Command("butcher", ButcherFriendly, "butcherfriendly"));
            Commands.ChatCommands.Add(new Command("butcher", ButcherNPC, "butchernpc"));
            Commands.ChatCommands.Add(new Command("butcher", ButcherNear, "butchernear"));
            Commands.ChatCommands.Add(new Command("spawnmob", SpawnByMe, "spawnbyme"));
            //Commands.ChatCommands.Add(new Command("clearitems", ClearItems, "clearitems"));
            Commands.ChatCommands.Add(new Command("reloadmore", ReloadMore, "reloadmore"));
            Commands.ChatCommands.Add(new Command("viewall", ViewAll, "viewall"));
            Commands.ChatCommands.Add(new Command(null, TeamUnlock, "teamunlock"));
            Commands.ChatCommands.Add(new Command("autokill", AutoKill, "autokill"));
            Commands.ChatCommands.Add(new Command("forcepvp", ForcePvP, "forcepvp"));
            Commands.ChatCommands.Add(new Command("forcepvp", CanOffPvP, "canoffpvp"));
            Commands.ChatCommands.Add(new Command("antitp", TPOff, "tpoff"));
            Commands.ChatCommands.Add(new Command("moonphase", MoonPhase, "moonphase"));
        }
Exemple #47
0
        public GroupManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("GroupList",
                                     new SqlColumn("GroupName", MySqlDbType.VarChar, 32)
            {
                Primary = true
            },
                                     new SqlColumn("Parent", MySqlDbType.VarChar, 32),
                                     new SqlColumn("Commands", MySqlDbType.Text),
                                     new SqlColumn("ChatColor", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);

            //Add default groups
            AddGroup("default", "warp,canbuild");
            AddGroup("newadmin", "default", "kick,editspawn,reservedslot");
            AddGroup("admin", "newadmin", "ban,unban,whitelist,causeevents,spawnboss,spawnmob,managewarp,time,tp,pvpfun,kill,logs,immunetokick,tphere");
            AddGroup("trustedadmin", "admin", "maintenance,cfg,butcher,item,heal,immunetoban,usebanneditem,manageusers");
            AddGroup("vip", "default", "reservedslot");

            String file = Path.Combine(TShock.SavePath, "groups.txt");

            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
                        {
                            String[] info  = line.Split(' ');
                            String   comms = "";
                            int      size  = info.Length;
                            for (int i = 1; i < size; i++)
                            {
                                if (!comms.Equals(""))
                                {
                                    comms = comms + ",";
                                }
                                comms = comms + info[i].Trim();
                            }

                            string query = "";
                            if (TShock.Config.StorageType.ToLower() == "sqlite")
                            {
                                query = "INSERT OR IGNORE INTO GroupList (GroupName, Commands) VALUES (@0, @1);";
                            }
                            else if (TShock.Config.StorageType.ToLower() == "mysql")
                            {
                                query = "INSERT IGNORE INTO GroupList SET GroupName=@0, Commands=@1;";
                            }

                            db.Query(query, info[0].Trim(), comms);
                        }
                    }
                }
                String path  = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "groups.txt");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                if (File.Exists(file2))
                {
                    File.Delete(file2);
                }
                File.Move(file, file2);
            }
        }
        public void OnInitialize()
        {
            SetupConfig();

            for (int i = 0; i < SSConfig.BuyRatePermissions.Length; i++)
            {
                BuyRatePermissions.Add(SSConfig.BuyRatePermissions[i]);
                BuyRates.Add(SSConfig.BuyRates[i]);
            }

            if (!Directory.Exists(ShopLogs))
            {
                Directory.CreateDirectory(ShopLogs);
            }

            if (!File.Exists(ShopLogSavePath))
            {
                File.Create(ShopLogSavePath).Close();
            }

            bool serverbuy = false;
            bool seehiddenprices = false;
            bool buy = false;
            bool buyrate = false;
            foreach (Group group in TShock.Groups.groups)
            {
                if (group.Name != "superadmin")
                {
                    if (group.HasPermission("serverbuy"))
                        serverbuy = true;
                    if (group.HasPermission("seehiddenprices"))
                        seehiddenprices = true;
                    if (group.HasPermission("buy"))
                        buy = true;
                    if (group.HasPermission("buyrate"))
                        buyrate = true;
                }
            }

            List<string> permlist = new List<string>();
            if (!serverbuy)
                permlist.Add("serverbuy");
            if (!seehiddenprices)
                permlist.Add("seehiddenprices");
            if (!buy)
                permlist.Add("buy");
            if (!buyrate)
                permlist.Add("buyrate");

            bool setshop = false;
            foreach (Group group in TShock.Groups.groups)
            {
                if (group.Name != "superadmin")
                {
                    if (group.HasPermission("setshop"))
                        setshop = true;
                }
            }
            if (!setshop)
                permlist.Add("setshop");

            TShock.Groups.AddPermissions("trustedadmin", permlist);
            Commands.ChatCommands.Add(new Command("buy", Buy, "buy"));
            Commands.ChatCommands.Add(new Command("serverbuy", Servershop, "servershop"));
            Commands.ChatCommands.Add(new Command("serverbuy", Servershop, "ss"));
            Commands.ChatCommands.Add(new Command("setshop", Setshop, "setshop"));
            Commands.ChatCommands.Add(new Command("buyrate", BuyRate, "buyrate"));
            SQLEditor = new SqlTableEditor(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            SQLWriter = new SqlTableCreator(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            var table = new SqlTable("ServerShopCatalogue",
                new SqlColumn("ID", MySqlDbType.Int32) { Primary = true },
                new SqlColumn("Name", MySqlDbType.String, 255) { Unique = true },
                new SqlColumn("Price", MySqlDbType.Int32),
                new SqlColumn("MaxStack", MySqlDbType.Int32),
                new SqlColumn("InStock", MySqlDbType.Int32),
                new SqlColumn("ShopName", MySqlDbType.String, 255),
                new SqlColumn("Hidden", MySqlDbType.Int32),
                new SqlColumn("Permission", MySqlDbType.String, 255)
            );
            SQLWriter.EnsureExists(table);
            string alpha = "abcdefghijklmnopqrstuvwkyz";
            if (SQLEditor.ReadColumn("ServerShopCatalogue", "ID", new List<SqlValue>()).Count < 1)
            {
                Console.WriteLine("Creating Item Price List...");
                foreach (char letter in alpha)
                //for (Int32 i = 1; i < 364; i++ )
                {
                    string firstletter = "" + letter + "";
                    for (int k = 0; k < TShockAPI.TShock.Utils.GetItemByName(firstletter).Count; k++)
                    //for (Int32 k = 0; k < TShockAPI.TShock.Utils.GetItemByIdOrName(i.ToString()).Count; k++)
                    {
                        Item item = TShockAPI.TShock.Utils.GetItemByName(firstletter)[k];
                        int price = item.value / 5;
                        int i = item.type;
                        string space = " ";
                        string itemID = i.ToString();
                        string itemname = item.name;
                        string apostrophe = "'";
                        char[] apostrophetochar = apostrophe.ToCharArray();
                        itemname = itemname.Replace(apostrophetochar[0], ' ');
                        int itemmaxstack = item.maxStack;
                        List<SqlValue> list = new List<SqlValue>();
                        list.Add(new SqlValue("ID", i));
                        list.Add(new SqlValue("Name", "'" + itemname + "'"));
                        list.Add(new SqlValue("Price", price));
                        list.Add(new SqlValue("MaxStack", itemmaxstack));
                        list.Add(new SqlValue("InStock", 1));
                        list.Add(new SqlValue("ShopName", "'" + space + "'"));
                        list.Add(new SqlValue("Hidden", 0));
                        try
                        {
                            SQLEditor.InsertValues("ServerShopCatalogue", list);
                        }
                        catch (Exception) { }

                    }
                }
            }
            if (SQLEditor.ReadColumn("ServerShopCatalogue", "ID", new List<SqlValue>()).Count > 0)
            {
                Console.WriteLine("Loading Item Price List...");
                for (int i = 0; i < SQLEditor.ReadColumn("ServerShopCatalogue", "ID", new List<SqlValue>()).Count; i++)
                {
                    int id = Int32.Parse(SQLEditor.ReadColumn("ServerShopCatalogue", "ID", new List<SqlValue>())[i].ToString());
                    List<SqlValue> where = new List<SqlValue>();
                    where.Add(new SqlValue("ID", id));
                    string name = SQLEditor.ReadColumn("ServerShopCatalogue", "Name", where)[0].ToString();
                    int price = Int32.Parse(SQLEditor.ReadColumn("ServerShopCatalogue", "Price", where)[0].ToString());
                    bool instock = Int32.Parse(SQLEditor.ReadColumn("ServerShopCatalogue", "InStock", where)[0].ToString()) == 0 ? false : true;
                    string shopname = SQLEditor.ReadColumn("ServerShopCatalogue", "ShopName", where)[0].ToString();
                    bool hidden = Int32.Parse(SQLEditor.ReadColumn("ServerShopCatalogue", "Hidden", where)[0].ToString()) == 0 ? false : true;
                    string permission;
                    try
                    {
                        permission = SQLEditor.ReadColumn("ServerShopCatalogue", "Permission", where)[0].ToString();
                    }
                    catch (NullReferenceException)
                    {
                        permission = null;
                    }
                    SSCatalogue.Add(new ServerShopCatalogueItem(id, name, price, instock, shopname, permission, hidden));
                    if (!ShopList.Contains(shopname))
                        ShopList.Add(shopname);
                }
                for (int i = 0; i < ShopList.Count; i++ )
                {
                    if (ShopList[i] == " ")
                        ShopList.RemoveAt(i);
                }
            }
            SSCatalogueInStock = GetItemsInStock();
        }