EnsureTableStructure() public method

public EnsureTableStructure ( SqlTable table ) : bool
table SqlTable
return bool
示例#1
0
        private void OnInitialize(EventArgs args)
        {
            SqlTableCreator sqlcreator = new SqlTableCreator(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            sqlcreator.EnsureTableStructure(new SqlTable("TradeRequestLogs",
            new SqlColumn("ID", MySqlDbType.Int32) { AutoIncrement = true, Primary = true },
            new SqlColumn("Trader", MySqlDbType.Text),
            new SqlColumn("Tradee", MySqlDbType.Text),
            new SqlColumn("TraderItems", MySqlDbType.Text),
            new SqlColumn("TradeeItems", MySqlDbType.Text),
            new SqlColumn("TradeDate", MySqlDbType.Text)
            ));

            #region Commands
            Action<Command> Add = c =>
            {
                TShockAPI.Commands.ChatCommands.RemoveAll(c2 => c2.Names.Select(s => s.ToLowerInvariant()).Intersect(c.Names.Select(s => s.ToLowerInvariant())).Any());
                TShockAPI.Commands.ChatCommands.Add(c);
            };

            Add(new Command(Permissions.trade, Commands.Trade, "trade")
            {
                AllowServer = true,
                HelpText = "Allows the user to trade with another user."
            });

            Add(new Command(Permissions.tradelogs, Commands.TradeLogs, "tradelogs")
            {
                AllowServer = true,
                HelpText = "Allows the user check trade logs."
            });
            #endregion
        }
示例#2
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("extraSlot", MySqlDbType.Int32),
                                     new SqlColumn("spawnX", MySqlDbType.Int32),
                                     new SqlColumn("spawnY", MySqlDbType.Int32),
                                     new SqlColumn("skinVariant", 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.EnsureTableStructure(table);
        }
示例#3
0
		public HomeManager(IDbConnection db)
		{
			this.db = db;

			var sqlCreator = new SqlTableCreator(db,
				db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());
			sqlCreator.EnsureTableStructure(new SqlTable("Homes",
				new SqlColumn("ID", MySqlDbType.Int32) {AutoIncrement = true, Primary = true},
				new SqlColumn("UserID", MySqlDbType.Int32),
				new SqlColumn("Name", MySqlDbType.Text),
				new SqlColumn("X", MySqlDbType.Double),
				new SqlColumn("Y", MySqlDbType.Double),
				new SqlColumn("WorldID", MySqlDbType.Int32)));

			using (QueryResult result = db.QueryReader("SELECT * FROM Homes WHERE WorldID = @0", Main.worldID))
			{
				while (result.Read())
				{
					homes.Add(new Home(
						result.Get<int>("UserID"),
						result.Get<string>("Name"),
						result.Get<float>("X"),
						result.Get<float>("Y")));
				}
			}
		}
示例#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.EnsureTableStructure(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.EnsureTableStructure(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.EnsureTableStructure(table);
 }
示例#5
0
        internal static void DBConnect()
        {
            switch (TShock.Config.StorageType.ToLower())
            {
                case "mysql":
                    string[] dbHost = TShock.Config.MySqlHost.Split(':');
                    db = new MySqlConnection()
                    {
                        ConnectionString = string.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
                            dbHost[0],
                            dbHost.Length == 1 ? "3306" : dbHost[1],
                            TShock.Config.MySqlDbName,
                            TShock.Config.MySqlUsername,
                            TShock.Config.MySqlPassword)

                    };
                    break;

                case "sqlite":
                    string sql = Path.Combine(TShock.SavePath, "tshock.sqlite");
                    db = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
                    break;

            }

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

            sqlcreator.EnsureTableStructure(new SqlTable("NoTpRegions",
                new SqlColumn("Name", MySqlDbType.Text)));
        }
示例#6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TShockAPI.DB.BanManager"/> class.
        /// </summary>
        /// <param name="db">A valid connection to the TShock database</param>
		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.EnsureTableStructure(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)");
			}
		}
示例#7
0
        /* EnsureExists
         *
         * Checks if tables exists and creates them if not
         *
         * */
        public void EnsureExists(params SqlTable[] Tables)
        {
            // We want to use TShock creator for checking
            SqlTableCreator SqlCreator = new SqlTableCreator(DB,
                (IQueryBuilder)new SqliteQueryCreator());

            foreach (var Table in Tables)
            {
                SqlCreator.EnsureTableStructure(Table);
            }
        }
示例#8
0
        public static void Initialize()
        {
            if (!Directory.Exists(SavePath))
                Directory.CreateDirectory(SavePath);

            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, "Clans.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());

            SqlTable[] tables = new SqlTable[]
            {
                 new SqlTable("Clans",
                     new SqlColumn("Name", MySqlDbType.VarChar) { Primary=true, Unique=true },
                     new SqlColumn("Owner", MySqlDbType.VarChar),
                     new SqlColumn("InviteMode", MySqlDbType.Int32),
                     new SqlColumn("TileX", MySqlDbType.Int32),
                     new SqlColumn("TileY", MySqlDbType.Int32),
                     new SqlColumn("ChatColor", MySqlDbType.VarChar),
                     new SqlColumn("Bans", MySqlDbType.VarChar)
                     ),
                 new SqlTable("ClanMembers",
                     new SqlColumn("Username",MySqlDbType.VarChar) { Primary=true, Unique=true },
                     new SqlColumn("ClanName", MySqlDbType.VarChar)
                     ),
                 new SqlTable("ClanWarps",
                     new SqlColumn("WarpName",MySqlDbType.VarChar) { Primary=true, Unique=true }                  
                     )
            };

            for (int i = 0; i < tables.Length; i++)
                SQLcreator.EnsureTableStructure(tables[i]);

            Config = Config.Read();
            LoadClans();
        }
        public VocationManager(IDbConnection conn)
        {
            _conn = conn;

            var table = new SqlTable(TableName,
                new SqlColumn("id", MySqlDbType.Int32) { Primary = true },
                new SqlColumn("level", MySqlDbType.Int32),
                new SqlColumn("experience", MySqlDbType.Int64),
                new SqlColumn("vocation", MySqlDbType.VarChar) { Primary = true, Length = 16 });

            var creator = new SqlTableCreator(conn, DbProvider);
            creator.EnsureTableStructure(table);
        }
		public MuteManager(IDbConnection db)
		{
			this.db = db;

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

			sqlCreator.EnsureTableStructure(new SqlTable("Mutes",
				new SqlColumn("ID", MySqlDbType.Int32) { AutoIncrement = true, Primary = true },
				new SqlColumn("Name", MySqlDbType.Text),
				new SqlColumn("UUID", MySqlDbType.Text),
				new SqlColumn("IP", MySqlDbType.Text),
				new SqlColumn("Date", MySqlDbType.Text),
				new SqlColumn("Expiration", MySqlDbType.Text)));
		}
		public RememberedPosManager(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.EnsureTableStructure(table);
		}
示例#12
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.EnsureTableStructure(table);
		}
示例#13
0
		private Database(IDbConnection db)
		{
			_db = db;

			//Define a table creator that will be responsible for ensuring the database table exists
			_tableCreator = new SqlTableCreator(_db,
				_db.GetSqlType() == SqlType.Sqlite
					? (IQueryBuilder)new SqliteQueryCreator()
					: new MysqlQueryCreator());

			//Define the table
			var table = new SqlTable("ServerEvents",
				new SqlColumn("UserID", MySqlDbType.Int32) { AutoIncrement = true, Primary = true },
				new SqlColumn("LastLoginTime", MySqlDbType.VarChar),
				new SqlColumn("DailyLogIn", MySqlDbType.Int32) { DefaultValue = "0" },
				new SqlColumn("DailyLogInStreak", MySqlDbType.Int32));

			_tableCreator.EnsureTableStructure(table);
		}
示例#14
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("Reports",
                new SqlColumn("ReportID", MySqlDbType.Int32) {AutoIncrement = true, Primary = true},
                new SqlColumn("UserID", MySqlDbType.Int32),
                new SqlColumn("ReportedID", MySqlDbType.Int32),
                new SqlColumn("Message", MySqlDbType.Text),
                new SqlColumn("Position", MySqlDbType.Text),
                new SqlColumn("State", MySqlDbType.Int32));

            sqlCreator.EnsureTableStructure(table);
        }
示例#15
0
		/// <summary>Creates a UserManager object. During instantiation, this method will verify the table structure against the format below.</summary>
		/// <param name="db">The database to connect to.</param>
		/// <returns>A UserManager object.</returns>
		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.EnsureTableStructure(table);
		}
示例#16
0
		/// <summary>
		/// Sets the database connection and the initial log level.
		/// </summary>
		/// <param name="db">Database connection</param>
		/// <param name="textlogFilepath">File path to a backup text log in case the SQL log fails</param>
		/// <param name="clearTextLog"></param>
		public SqlLog(IDbConnection db, string textlogFilepath, bool clearTextLog)
		{
			FileName = string.Format("{0}://database", db.GetSqlType());
			_database = db;
			_backupLog = new TextLog(textlogFilepath, clearTextLog);

			var table = new SqlTable("Logs",
				new SqlColumn("ID", MySqlDbType.Int32) {AutoIncrement = true, Primary = true},
				new SqlColumn("TimeStamp", MySqlDbType.Text),
				new SqlColumn("LogLevel", MySqlDbType.Int32),
				new SqlColumn("Caller", MySqlDbType.Text),
				new SqlColumn("Message", MySqlDbType.Text)
				);

			var creator = new SqlTableCreator(db,
				db.GetSqlType() == SqlType.Sqlite
					? (IQueryBuilder) new SqliteQueryCreator()
					: new MysqlQueryCreator());
			creator.EnsureTableStructure(table);
		}
        public BanDatabase(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Bans",
                                     new SqlColumn("RowID", MySqlDbType.Int32) { Primary = true, AutoIncrement = true},
                                     new SqlColumn("IP", MySqlDbType.String, 16),
                                     new SqlColumn("ID", MySqlDbType.Int32),
                                     new SqlColumn("UserAccountName", MySqlDbType.VarChar, 32),
                                     new SqlColumn("CharacterName", MySqlDbType.VarChar, 20),
                                     new SqlColumn("BanningUser", MySqlDbType.Int32),
                                     new SqlColumn("Issued", MySqlDbType.Int64),
                                     new SqlColumn("Expiration", MySqlDbType.Int64),
                                     new SqlColumn("Reason", MySqlDbType.Text)
                );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                              	? (IQueryBuilder) new SqliteQueryCreator()
                                              	: new MysqlQueryCreator());
            creator.EnsureTableStructure(table);
        }
示例#18
0
        public WarpplateManager(IDbConnection db)
        {
            database = db;

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

            ReloadAllWarpplates();

        }
示例#19
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.EnsureTableStructure(table);
		}
示例#20
0
        public Database(IDbConnection db)
        {
            _db = db;

            //Define a table creator that will be responsible for ensuring the database table exists
            var sqlCreator = new SqlTableCreator(_db,
                _db.GetSqlType() == SqlType.Sqlite
                    ? (IQueryBuilder) new SqliteQueryCreator()
                    : new MysqlQueryCreator());

            //Define the table
            var table = new SqlTable("Reports",
                new SqlColumn("ReportID", MySqlDbType.Int32) {AutoIncrement = true, Primary = true},
                new SqlColumn("UserID", MySqlDbType.Int32),
                new SqlColumn("ReportedID", MySqlDbType.Int32),
                new SqlColumn("Message", MySqlDbType.Text),
                new SqlColumn("Position", MySqlDbType.Text),
                new SqlColumn("State", MySqlDbType.Int32));

            //Create the table if it doesn't exist, update the structure if it exists but is not the same as
            //the table defined above, or do nothing if the table exists and is correctly structured
            sqlCreator.EnsureTableStructure(table);
        }
示例#21
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.EnsureTableStructure(table);
        }
示例#22
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GroupManager"/> class with the specified database connection.
        /// </summary>
        /// <param name="db">The connection.</param>
        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.EnsureTableStructure(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,
                                            Permissions.synclocalarea,
                                            Permissions.sendemoji));

                AddDefaultGroup("default", "guest",
                                string.Join(",",
                                            Permissions.warp,
                                            Permissions.canchangepassword,
                                            Permissions.canlogout,
                                            Permissions.summonboss,
                                            Permissions.whisper,
                                            Permissions.wormhole,
                                            Permissions.canpaint,
                                            Permissions.pylon,
                                            Permissions.tppotion,
                                            Permissions.magicconch,
                                            Permissions.demonconch));

                AddDefaultGroup("vip", "default",
                                string.Join(",",
                                            Permissions.reservedslot,
                                            Permissions.renamenpc,
                                            Permissions.startinvasion,
                                            Permissions.summonboss,
                                            Permissions.whisper,
                                            Permissions.wormhole));

                AddDefaultGroup("newadmin", "vip",
                                string.Join(",",
                                            Permissions.kick,
                                            Permissions.editspawn,
                                            Permissions.reservedslot,
                                            Permissions.annoy,
                                            Permissions.checkaccountinfo,
                                            Permissions.getpos,
                                            Permissions.mute,
                                            Permissions.rod,
                                            Permissions.savessc,
                                            Permissions.seeids,
                                            "tshock.world.time.*"));

                AddDefaultGroup("admin", "newadmin",
                                string.Join(",",
                                            Permissions.ban,
                                            Permissions.whitelist,
                                            Permissions.spawnboss,
                                            Permissions.spawnmob,
                                            Permissions.managewarp,
                                            Permissions.time,
                                            Permissions.tp,
                                            Permissions.slap,
                                            Permissions.kill,
                                            Permissions.logs,
                                            Permissions.immunetokick,
                                            Permissions.tpothers,
                                            Permissions.advaccountinfo,
                                            Permissions.broadcast,
                                            Permissions.home,
                                            Permissions.tpallothers,
                                            Permissions.tpallow,
                                            Permissions.tpnpc,
                                            Permissions.tppos,
                                            Permissions.tpsilent,
                                            Permissions.userinfo,
                                            Permissions.spawn));

                AddDefaultGroup("trustedadmin", "admin",
                                string.Join(",",
                                            Permissions.maintenance,
                                            "tshock.cfg.*",
                                            "tshock.world.*",
                                            Permissions.butcher,
                                            Permissions.item,
                                            Permissions.give,
                                            Permissions.heal,
                                            Permissions.immunetoban,
                                            Permissions.usebanneditem,
                                            Permissions.allowclientsideworldedit,
                                            Permissions.buff,
                                            Permissions.buffplayer,
                                            Permissions.clear,
                                            Permissions.clearangler,
                                            Permissions.godmode,
                                            Permissions.godmodeother,
                                            Permissions.ignoredamagecap,
                                            Permissions.ignorehp,
                                            Permissions.ignorekilltiledetection,
                                            Permissions.ignoreliquidsetdetection,
                                            Permissions.ignoremp,
                                            Permissions.ignorepaintdetection,
                                            Permissions.ignoreplacetiledetection,
                                            Permissions.ignoreprojectiledetection,
                                            Permissions.ignorestackhackdetection,
                                            Permissions.invade,
                                            Permissions.startdd2,
                                            Permissions.uploaddata,
                                            Permissions.uploadothersdata,
                                            Permissions.spawnpets,
                                            Permissions.journey_timefreeze,
                                            Permissions.journey_timeset,
                                            Permissions.journey_timespeed,
                                            Permissions.journey_godmode,
                                            Permissions.journey_windstrength,
                                            Permissions.journey_windfreeze,
                                            Permissions.journey_rainstrength,
                                            Permissions.journey_rainfreeze,
                                            Permissions.journey_placementrange,
                                            Permissions.journey_setdifficulty,
                                            Permissions.journey_biomespreadfreeze,
                                            Permissions.journey_setspawnrate,
                                            Permissions.journey_contributeresearch));

                AddDefaultGroup("owner", "trustedadmin",
                                string.Join(",",
                                            Permissions.su,
                                            Permissions.allowdroppingbanneditems,
                                            Permissions.antibuild,
                                            Permissions.canusebannedprojectiles,
                                            Permissions.canusebannedtiles,
                                            Permissions.managegroup,
                                            Permissions.manageitem,
                                            Permissions.manageprojectile,
                                            Permissions.manageregion,
                                            Permissions.managetile,
                                            Permissions.maxspawns,
                                            Permissions.serverinfo,
                                            Permissions.settempgroup,
                                            Permissions.spawnrate,
                                            Permissions.tpoverride,
                                            Permissions.createdumps));
            }

            // Load Permissions from the DB
            LoadPermisions();

            Group.DefaultGroup = GetGroupByName(TShock.Config.Settings.DefaultGuestGroupName);
        }
        public void OnInitialize(EventArgs args)
        {
            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("muteList",
                        new SqlColumn("Name", MySqlDbType.Text),
                        new SqlColumn("IP", MySqlDbType.Text));
            SQLWriter.EnsureTableStructure(table);

            #region Commands
            Commands.ChatCommands.Add(new Command("mac.kill", Cmds.KillAll, "killall", "kill*"));
            Commands.ChatCommands.Add(new Command("mac.kill", Cmds.AutoKill, "autokill"));
            Commands.ChatCommands.Add(new Command("mac.mute", Cmds.MuteAll, "muteall"));
            Commands.ChatCommands.Add(new Command("mac.spawn", Cmds.SpawnMobPlayer, "spawnmobplayer", "smp"));
            Commands.ChatCommands.Add(new Command("mac.spawn", Cmds.SpawnGroup, "spawngroup", "sg"));
            Commands.ChatCommands.Add(new Command("mac.spawn", Cmds.SpawnByMe, "spawnbyme", "sbm"));
            Commands.ChatCommands.Add(new Command("mac.search", Cmds.FindPerms, "findperm", "fperm"));
            Commands.ChatCommands.Add(new Command("mac.butcher", Cmds.ButcherAll, "butcherall", "butcher*"));
            Commands.ChatCommands.Add(new Command("mac.butcher", Cmds.ButcherFriendly, "butcherfriendly", "butcherf"));
            Commands.ChatCommands.Add(new Command("mac.butcher", Cmds.ButcherNPC, "butchernpc"));
            Commands.ChatCommands.Add(new Command("mac.butcher", Cmds.ButcherNear, "butchernear"));
            Commands.ChatCommands.Add(new Command("mac.heal", Cmds.AutoHeal, "autoheal"));
            Commands.ChatCommands.Add(new Command("mac.heal.all", Cmds.HealAll, "healall"));
            Commands.ChatCommands.Add(new Command("mac.moon", Cmds.MoonPhase, "moon"));
            Commands.ChatCommands.Add(new Command("mac.give", Cmds.ForceGive, "forcegive"));
            Commands.ChatCommands.Add(new Command("mac.view", Cmds.ViewAll, "view"));
            Commands.ChatCommands.Add(new Command("mac.reload", Cmds.ReloadMore, "reloadmore"));
            Commands.ChatCommands.Add(new Command("mac.freeze", Cmds.FreezeTime, "freezetime", "ft"));
            Commands.ChatCommands.Add(new Command(Cmds.TeamUnlock, "teamunlock"));
            #endregion

            Utils.SetUpConfig();

            itemspam = new Dictionary<int, List<DateTime>>();

            updateTimers.initializeTimers();
        }
示例#24
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.EnsureTableStructure(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)));
        }
示例#25
0
        private void DBConnect()
        {
            switch (TShock.Config.StorageType.ToLower())
            {
                case "mysql":
                    string[] dbHost = TShock.Config.MySqlHost.Split(':');
                    db = new MySqlConnection()
                    {
                        ConnectionString = string.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
                            dbHost[0],
                            dbHost.Length == 1 ? "3306" : dbHost[1],
                            TShock.Config.MySqlDbName,
                            TShock.Config.MySqlUsername,
                            TShock.Config.MySqlPassword)

                    };
                    break;

                case "sqlite":
                    string sql = Path.Combine(TShock.SavePath, "OnlineAnnounce.sqlite");
                    db = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
                    break;

            }

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

            sqlcreator.EnsureTableStructure(new SqlTable("onlineannounce",
                new SqlColumn("userid", MySqlDbType.Int32) { Primary = true, Unique = true, Length = 6 },
                new SqlColumn("greet", MySqlDbType.Text) { Length = 100 },
                new SqlColumn("leaving", MySqlDbType.Text) { Length = 100 },
                new SqlColumn("greetrgb", MySqlDbType.Text) { Length = 11, NotNull = true },
                new SqlColumn("leavergb", MySqlDbType.Text) { Length = 11, NotNull = true }));
        }
示例#26
0
        void OnInitialize(EventArgs e)
        {
            if (!Directory.Exists(savepath))
            {
                Directory.CreateDirectory(savepath);
                CreateConfig();
            }

            ReadConfig();

            Commands.ChatCommands.Add(new Command("diemob", DieMobCommand, "diemob", "DieMob", "dm"));

            switch (TShock.Config.StorageType.ToLower())
            {
                case "mysql":
                    string[] dbHost = TShock.Config.MySqlHost.Split(':');
                    db = new MySqlConnection()
                    {
                        ConnectionString = string.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
                            dbHost[0],
                            dbHost.Length == 1 ? "3306" : dbHost[1],
                            TShock.Config.MySqlDbName,
                            TShock.Config.MySqlUsername,
                            TShock.Config.MySqlPassword)

                    };
                    break;

                case "sqlite":
                    string sql = Path.Combine(TShock.SavePath, "DieMob.sqlite");
                    db = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
                    break;

            }

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

            sqlcreator.EnsureTableStructure(new SqlTable("DieMobRegions",
                new SqlColumn("ID", MySqlDbType.Int32) { Primary = true, Unique = true, AutoIncrement = true, Length = 6},
                new SqlColumn("Region", MySqlDbType.VarChar) { Length = 30 },
                new SqlColumn("WorldID", MySqlDbType.Int32),
                new SqlColumn("AffectFriendlyNPCs", MySqlDbType.Int32),
                new SqlColumn("AffectStatueSpawns", MySqlDbType.Int32),
                new SqlColumn("ReplaceMobs", MySqlDbType.Text),
                new SqlColumn("Type", MySqlDbType.Int32)));
        }
示例#27
0
文件: Shop.cs 项目: Tygra/Shop
        private void OnInitialize(EventArgs args)
        {
            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":

                    // Create folder if it does not exist. (SQLITE Specific.)
                    if (!System.IO.Directory.Exists(SavePath))
                    {
                        System.IO.Directory.CreateDirectory(SavePath);
                    }

                    string sql = Path.Combine(SavePath, "store.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.EnsureTableStructure(new SqlTable("storeshop",
                new SqlColumn("name", MySqlDbType.VarChar) { Primary = true, Length = 30 },
                new SqlColumn("price", MySqlDbType.Int32) { DefaultValue = "1", NotNull = true },
                new SqlColumn("region", MySqlDbType.VarChar) { DefaultValue = "", Length = 30, NotNull = true },
                new SqlColumn("groupname", MySqlDbType.VarChar) { DefaultValue = "", Length = 30, NotNull = true },
                new SqlColumn("restockTimer", MySqlDbType.Int32) { DefaultValue = "-1", NotNull = true },
                new SqlColumn("stock", MySqlDbType.Int32) { DefaultValue = "-1", NotNull = true },
                new SqlColumn("onsale", MySqlDbType.VarChar) { DefaultValue = "", Length = 30, NotNull = true },
                new SqlColumn("maxstock", MySqlDbType.Int32) { DefaultValue = "-1", Length = 30, NotNull = true }
                ));
            sqlcreator.EnsureTableStructure(new SqlTable("storetrade",
                new SqlColumn("ID", MySqlDbType.Int32) { Primary = true},
                new SqlColumn("User", MySqlDbType.VarChar) { Length = 30 },
                new SqlColumn("ItemID", MySqlDbType.Int32),
                new SqlColumn("Stack", MySqlDbType.Int32),
                new SqlColumn("WItemID", MySqlDbType.Int32),
                new SqlColumn("WStack", MySqlDbType.Int32),
                new SqlColumn("Active", MySqlDbType.Int32)
                ));
            sqlcreator.EnsureTableStructure(new SqlTable("storeoffer",
                new SqlColumn("ID", MySqlDbType.Int32) { Primary = true },
                new SqlColumn("User", MySqlDbType.VarChar) { Length = 30 },
                new SqlColumn("ItemID", MySqlDbType.Int32),
                new SqlColumn("Stack", MySqlDbType.Int32),
                new SqlColumn("TradeID", MySqlDbType.Int32),
                new SqlColumn("Active", MySqlDbType.Int32)
                ));

            ShopList = new ShopData(this);
            TradeList = new TradeData(this);
            configObj = new ShopConfig();
            SetupConfig();
            Commands.ChatCommands.Add(new Command("store.shop", shop, "shop"));
            Commands.ChatCommands.Add(new Command("store.admin", shopreload, "reloadstore"));
            Commands.ChatCommands.Add(new Command("store.trade", trade, "trade"));
            Commands.ChatCommands.Add(new Command("store.offer", offer, "offer"));
        }
        private void SetupDb()
        {
            switch (TShock.Config.StorageType.ToLower()) {
            case "mysql":
              string[] dbHost = TShock.Config.MySqlHost.Split(':');
              db = new MySqlConnection() {
            ConnectionString = string.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
                  dbHost[0],
                  dbHost.Length == 1 ? "3306" : dbHost[1],
                  TShock.Config.MySqlDbName,
                  TShock.Config.MySqlUsername,
                  TShock.Config.MySqlPassword)

              };
              break;

            case "sqlite":
              string sql = Path.Combine(TShock.SavePath, "tshock.sqlite");
              db = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
              break;

              }

              SqlTableCreator sqlcreator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
              sqlcreator.EnsureTableStructure(new SqlTable("UserSpecificFunctions",
              new SqlColumn("UserID", MySqlDbType.Int32) { Primary = true, Unique = true, Length = 6 },
              new SqlColumn("Prefix", MySqlDbType.Text) { Length = 25 },
              new SqlColumn("Suffix", MySqlDbType.Text) { Length = 25 },
              new SqlColumn("ChatColor", MySqlDbType.Text)));
        }
示例#29
0
 /// <summary>Constructor for CIDRBanManager class</summary>
 public CIDRBanManager()
 {
     //Initialize connection to either SQLite or MySQL database
     switch (TShock.Config.StorageType.ToLower())
     {
         case "mysql":
             string[] 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":
             string dbPath = Path.Combine(TShock.SavePath, "CIDRBans.sqlite");
             db = new SqliteConnection(String.Format("uri=file://{0},Version=3", dbPath));
             break;
     }
     SqlTableCreator creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ?
         (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
         creator.EnsureTableStructure(new SqlTable("CIDRBans",
             new SqlColumn("CIDR", MySqlDbType.String) { Primary = true },
             new SqlColumn("Reason", MySqlDbType.Text),
             new SqlColumn("BanningUser", MySqlDbType.Text),
             new SqlColumn("Date", MySqlDbType.Text),
             new SqlColumn("Expiration", MySqlDbType.Text)));
 }
示例#30
0
        void OnInitialize(EventArgs e)
        {
            Directory.CreateDirectory("worldedit");

            #region Commands
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.selection.all", All, "/all")
            {
                HelpText = "Sets the worldedit selection to the entire world."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.region.biome", Biome, "/biome")
            {
                HelpText = "Converts biomes in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.clipboard.copy", Copy, "/copy")
            {
                HelpText = "Copies the worldedit selection to the clipboard."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.clipboard.cut", Cut, "/cut")
            {
                HelpText = "Copies the worldedit selection to the clipboard, then deletes it."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.utils.drain", Drain, "/drain")
            {
                HelpText = "Drains liquids in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.utils.fixgrass", FixGrass, "/fixgrass")
            {
                HelpText = "Fixes suffocated grass in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.utils.fixhalves", FixHalves, "/fixhalves")
            {
                HelpText = "Fixes half blocks in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.utils.fixslopes", FixSlopes, "/fixslopes")
            {
                HelpText = "Fixes covered slopes in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.clipboard.flip", Flip, "/flip")
            {
                HelpText = "Flips the worldedit clipboard."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.utils.flood", Flood, "/flood")
            {
                HelpText = "Floods liquids in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.utils.mow", Mow, "/mow")
            {
                HelpText = "Mows grass, thorns, and vines in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.selection.near", Near, "/near")
            {
                AllowServer = false,
                HelpText = "Sets the worldedit selection to a radius around you."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.region.paint", Paint, "/paint")
            {
                HelpText = "Paints tiles in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.region.paintwall", PaintWall, "/paintwall")
            {
                HelpText = "Paints walls in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.clipboard.paste", Paste, "/paste")
            {
                HelpText = "Pastes the clipboard to the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.selection.point", Point1, "/point1")
            {
                HelpText = "Sets the positions of the worldedit selection's first point."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.selection.point", Point2, "/point2")
            {
                HelpText = "Sets the positions of the worldedit selection's second point."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.history.redo", Redo, "/redo")
            {
                HelpText = "Redoes a number of worldedit actions."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.selection.region", RegionCmd, "/region")
            {
                HelpText = "Selects a region as a worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.selection.resize", Resize, "/resize")
            {
                HelpText = "Resizes the worldedit selection in a direction."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.clipboard.rotate", Rotate, "/rotate")
            {
                HelpText = "Rotates the worldedit clipboard."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.schematic", Schematic, "/schematic", "/schem")
            {
                HelpText = "Manages worldedit schematics."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.selection.selecttype", Select, "/select")
            {
                HelpText = "Sets the worldedit selection function."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.region.set", Set, "/set")
            {
                HelpText = "Sets tiles in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.region.setwall", SetWall, "/setwall")
            {
                HelpText = "Sets walls in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.region.setwire", SetWire, "/setwire")
            {
                HelpText = "Sets wires in the worldedit selection."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.selection.shift", Shift, "/shift")
            {
                HelpText = "Shifts the worldedit selection in a direction."
            });
            TShockAPI.Commands.ChatCommands.Add(new Command("worldedit.history.undo", Undo, "/undo")
            {
                HelpText = "Undoes a number of worldedit actions."
            });
            #endregion
            #region Database
            switch (TShock.Config.StorageType.ToLowerInvariant())
            {
                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, "worldedit.sqlite");
                    Database = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
                    break;
            }

            var sqlcreator = new SqlTableCreator(Database,
                Database.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            sqlcreator.EnsureTableStructure(new SqlTable("WorldEdit",
                new SqlColumn("Account", MySqlDbType.VarChar) { Primary = true, Length = 50 },
                new SqlColumn("RedoLevel", MySqlDbType.Int32),
                new SqlColumn("UndoLevel", MySqlDbType.Int32)));
            #endregion

            #region Biomes
            // Format: dirt, stone, ice, sand, grass, plants, tall plants, vines, thorn

            Biomes.Add("crimson", new[] { 0, 203, 200, 234, 199, -1, -1, 205, 32 });
            Biomes.Add("corruption", new[] { 0, 25, 163, 112, 23, 24, -1, -1, 32 });
            Biomes.Add("hallow", new[] { 0, 117, 164, 116, 109, 110, 113, 52, -1 });
            Biomes.Add("jungle", new[] { 59, 1, 161, 53, 60, 61, 74, 62, 69 });
            Biomes.Add("mushroom", new[] { 59, 1, 161, 53, 70, 71, -1, -1, -1 });
            Biomes.Add("normal", new[] { 0, 1, 161, 53, 2, 3, 73, 52, -1 });
            Biomes.Add("snow", new[] { 147, 161, 161, 53, 147, -1, -1, -1, -1 });
            #endregion
            #region Colors
            Colors.Add("blank", 0);

            Main.player[Main.myPlayer] = new Player();
            var item = new Item();
            for (int i = -48; i < Main.maxItemTypes; i++)
            {
                item.netDefaults(i);
                if (item.paint > 0)
                    Colors.Add(item.name.Substring(0, item.name.Length - 6).ToLowerInvariant(), item.paint);
            }
            #endregion
            #region Selections
            Selections.Add("altcheckers", (i, j, plr) => ((i + j) & 1) == 0);
            Selections.Add("checkers", (i, j, plr) => ((i + j) & 1) == 1);
            Selections.Add("ellipse", (i, j, plr) =>
            {
                PlayerInfo info = plr.GetPlayerInfo();

                int X = Math.Min(info.X, info.X2);
                int Y = Math.Min(info.Y, info.Y2);
                int X2 = Math.Max(info.X, info.X2);
                int Y2 = Math.Max(info.Y, info.Y2);

                Vector2 center = new Vector2((float)(X2 - X) / 2, (float)(Y2 - Y) / 2);
                float major = Math.Max(center.X, center.Y);
                float minor = Math.Min(center.X, center.Y);
                if (center.Y > center.X)
                {
                    float temp = major;
                    major = minor;
                    minor = temp;
                }
                return (i - center.X - X) * (i - center.X - X) / (major * major) + (j - center.Y - Y) * (j - center.Y - Y) / (minor * minor) <= 1;
            });
            Selections.Add("normal", (i, j, plr) => true);
            Selections.Add("outline", (i, j, plr) =>
            {
                PlayerInfo info = plr.GetPlayerInfo();
                return i == info.X || i == info.X2 || j == info.Y || j == info.Y2;
            });
            #endregion
            #region Tiles
            Tiles.Add("air", -1);
            Tiles.Add("lava", -2);
            Tiles.Add("honey", -3);
            Tiles.Add("water", -4);

            foreach (var fi in typeof(TileID).GetFields())
            {
                string name = fi.Name;
                var sb = new StringBuilder();
                for (int i = 0; i < name.Length; i++)
                {
                    if (Char.IsUpper(name[i]))
                        sb.Append(" ").Append(Char.ToLower(name[i]));
                    else
                        sb.Append(name[i]);
                }
                Tiles.Add(sb.ToString(1, sb.Length - 1), (ushort)fi.GetValue(null));
            }
            #endregion
            #region Walls
            Walls.Add("air", 0);

            foreach (var fi in typeof(WallID).GetFields())
            {
                string name = fi.Name;
                var sb = new StringBuilder();
                for (int i = 0; i < name.Length; i++)
                {
                    if (Char.IsUpper(name[i]))
                        sb.Append(" ").Append(Char.ToLower(name[i]));
                    else
                        sb.Append(name[i]);
                }
                Walls.Add(sb.ToString(1, sb.Length - 1), (byte)fi.GetValue(null));
            }
            #endregion

            ThreadPool.QueueUserWorkItem(QueueCallback);
        }
示例#31
0
        void OnInitialize(EventArgs e)
        {
            Commands.ChatCommands.Add(new Command("infchests.chest.bank", Bank, "cbank")
            {
                DoLog = false,
                HelpText = "Toggles a chests's bank status when selected."
            });
            Commands.ChatCommands.Add(new Command("infchests.chest.deselect", Deselect, "ccset")
            {
                AllowServer = false,
                HelpText = "Cancels a chest selection."
            });
            Commands.ChatCommands.Add(new Command("infchests.admin.info", Info, "cinfo")
            {
                AllowServer = false,
                HelpText = "Gets information about a chest when selected."
            });
            Commands.ChatCommands.Add(new Command("infchests.chest.lock", Lock, "clock")
            {
                DoLog = false,
                HelpText = "Locks a chest with a password. Use remove as the password to remove it."
            });
            Commands.ChatCommands.Add(new Command("infchests.admin.convert", ConvertChests, "convchests")
            {
                HelpText = "Converts Terraria chests to InfiniteChests chests."
            });
            Commands.ChatCommands.Add(new Command("infchests.admin.prune", Prune, "prunechests")
            {
                HelpText = "Prunes empty chests."
            });
            Commands.ChatCommands.Add(new Command("infchests.chest.public", PublicProtect, "cpset")
            {
                AllowServer = false,
                HelpText = "Toggles a chest's publicity when selected."
            });
            Commands.ChatCommands.Add(new Command("infchests.admin.refill", Refill, "crefill")
            {
                AllowServer = false,
                HelpText = "Toggles a chest's refill status (with optional refill time) when selected."
            });
            Commands.ChatCommands.Add(new Command("infchests.chest.region", RegionProtect, "crset")
            {
                AllowServer = false,
                HelpText = "Toggles a chest's region sharing status when selected."
            });
            Commands.ChatCommands.Add(new Command("infchests.admin.rconvert", ReverseConvertChests, "rconvchests")
            {
                HelpText = "Converts InfiniteChests chests to Terraria chests."
            });
            Commands.ChatCommands.Add(new Command("infchests.chest.protect", Protect, "cset")
            {
                AllowServer = false,
                HelpText = "Protects an unprotected chest when selected."
            });
            Commands.ChatCommands.Add(new Command("infchests.chest.unlock", Unlock, "cunlock")
            {
                DoLog = false,
                HelpText = "Unlocks a chest with a password."
            });
            Commands.ChatCommands.Add(new Command("infchests.chest.unprotect", Unprotect, "cunset")
            {
                HelpText = "Unprotects a chest when selected."
            });

            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.EnsureTableStructure(new SqlTable("Chests",
                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("Items", MySqlDbType.Text),
                new SqlColumn("Flags", MySqlDbType.Int32),
                new SqlColumn("BankID", MySqlDbType.Int32),
                new SqlColumn("RefillTime", MySqlDbType.Int32),
                new SqlColumn("Password", MySqlDbType.Text),
                new SqlColumn("WorldID", MySqlDbType.Int32)));

            sqlcreator.EnsureTableStructure(new SqlTable("BankChests",
                new SqlColumn("ID", MySqlDbType.Int32) { AutoIncrement = true, Primary = true },
                new SqlColumn("Account", MySqlDbType.Text),
                new SqlColumn("BankID", MySqlDbType.Int32),
                new SqlColumn("Items", MySqlDbType.Text)));
        }
示例#32
0
        void OnInitialize(EventArgs e)
        {
            TShockAPI.Commands.ChatCommands.Add(new Command("history.get", HistoryCmd, "history"));
            TShockAPI.Commands.ChatCommands.Add(new Command("history.prune", Prune, "prunehist"));
            TShockAPI.Commands.ChatCommands.Add(new Command("history.reenact", Reenact, "reenact"));
            TShockAPI.Commands.ChatCommands.Add(new Command("history.rollback", Rollback, "rollback"));
            TShockAPI.Commands.ChatCommands.Add(new Command("history.rollback", Undo, "rundo"));

            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, "history.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.EnsureTableStructure(new SqlTable("History",
                new SqlColumn("Time", MySqlDbType.Int32),
                new SqlColumn("Account", MySqlDbType.VarChar) { Length = 50 },
                new SqlColumn("Action", MySqlDbType.Int32),
                new SqlColumn("XY", MySqlDbType.Int32),
                new SqlColumn("Data", MySqlDbType.Int32),
                new SqlColumn("Style", MySqlDbType.Int32),
                new SqlColumn("Paint", MySqlDbType.Int32),
                new SqlColumn("WorldID", MySqlDbType.Int32),
                new SqlColumn("Text", MySqlDbType.VarChar) { Length = 50 },
                new SqlColumn("Alternate", MySqlDbType.Int32),
                new SqlColumn("Random", MySqlDbType.Int32),
                new SqlColumn("Direction", MySqlDbType.Int32)));

            string datePath = Path.Combine(TShock.SavePath, "date.dat");
            if (!File.Exists(datePath))
            {
                File.WriteAllText(datePath, Date.ToString());
            }
            else
            {
                if (!DateTime.TryParse(File.ReadAllText(datePath), out Date))
                {
                    Date = DateTime.UtcNow;
                    File.WriteAllText(datePath, Date.ToString());
                }
            }
            CommandQueueThread = new Thread(QueueCallback);
            CommandQueueThread.Start();
        }