diff --git a/TShockAPI/ConfigFile.cs b/TShockAPI/ConfigFile.cs index 5737024e..89e44b63 100644 --- a/TShockAPI/ConfigFile.cs +++ b/TShockAPI/ConfigFile.cs @@ -48,7 +48,7 @@ namespace TShockAPI public bool DisableBuild; public int TileThreshold = 60; - public float[] AdminChatRGB = { 255, 0, 0 }; + public float[] SuperAdminChatRGB = { 255, 0, 0 }; public string AdminChatPrefix = "(Admin) "; public bool AdminChatEnabled = true; diff --git a/TShockAPI/DB/GroupManager.cs b/TShockAPI/DB/GroupManager.cs index 625e9e8e..fb2112c2 100644 --- a/TShockAPI/DB/GroupManager.cs +++ b/TShockAPI/DB/GroupManager.cs @@ -16,21 +16,21 @@ namespace TShockAPI.DB { database = db; - string query; + string query = ""; + if (TShock.Config.StorageType.ToLower() == "sqlite") { db.Query("CREATE TABLE IF NOT EXISTS 'GroupList' ('GroupName' TEXT PRIMARY KEY, 'Commands' TEXT);"); - query = "CREATE TEMPORARY TABLE 'GroupList_backup' ('GroupName' TEXT, 'Commands' TEXT); INSERT INTO 'GroupList_backup' SELECT GroupName,Commands FROM 'GroupList'; DROP TABLE 'GroupList'; CREATE TABLE 'GroupList' ('GroupName' TEXT PRIMARY KEY, 'Commands' TEXT); INSERT INTO 'GroupList' SELECT GroupName,Commands FROM 'GroupList_backup'; DROP TABLE 'GroupList_backup';"; + db.Query("CREATE TEMPORARY TABLE 'GroupList_backup' ('GroupName' TEXT, 'Commands' TEXT); INSERT INTO 'GroupList_backup' SELECT GroupName,Commands FROM 'GroupList'; DROP TABLE 'GroupList'; CREATE TABLE 'GroupList' ('GroupName' TEXT PRIMARY KEY, 'Commands' TEXT); INSERT INTO 'GroupList' SELECT GroupName,Commands FROM 'GroupList_backup'; DROP TABLE 'GroupList_backup';"); + db.Query("ALTER TABLE 'GroupList' ADD COLUMN 'ChatColor' TEXT"); } else { - query = - "CREATE TABLE IF NOT EXISTS GroupList (GroupName VARCHAR(255) PRIMARY, Commands VARCHAR(255));"; + db.Query("CREATE TABLE IF NOT EXISTS GroupList (GroupName VARCHAR(255) PRIMARY, Commands VARCHAR(255));"); db.Query("ALTER TABLE GroupList DROP COLUMN OrderBy"); + db.Query("ALTER TABLE GroupList ADD COLUMN ChatColor VARCHAR(255)"); } - db.Query(query); - //Add default groups AddGroup("trustedadmin", "admin,maintenance,cfg,butcher,item,heal,immunetoban,ignorecheatdetection,ignoregriefdetection,usebanneditem,manageusers"); AddGroup("admin", "newadmin,ban,unban,whitelist,causeevents,spawnboss,spawnmob,managewarp,time,tp,pvpfun,kill,logs,immunetokick,tphere"); @@ -100,18 +100,18 @@ namespace TShockAPI.DB /// /// name of group /// permissions - public String AddGroup(String name, String permissions) + public String AddGroup(String name, String permissions, String ChatColor = "255,255,255") { String message = ""; if (GroupExists(name)) return "Error: Group already exists. Use /modGroup to change permissions."; string query = (TShock.Config.StorageType.ToLower() == "sqlite") ? - "INSERT OR IGNORE INTO GroupList (GroupName, Commands) VALUES (@0, @1);" : + "INSERT OR IGNORE INTO GroupList (GroupName, Commands, ChatColor) VALUES (@0, @1, @2);" : "INSERT IGNORE INTO GroupList SET GroupName=@0, Commands=@1"; - if (database.Query(query, name, permissions) == 1) + if (database.Query(query, name, permissions, ChatColor) == 1) message = "Group " + name + " has been created successfully."; - Group g = new Group(name); + Group g = new Group(name, null, ChatColor); g.permissions.Add(permissions); groups.Add(g); diff --git a/TShockAPI/Group.cs b/TShockAPI/Group.cs index 30c44272..5e85eeaf 100644 --- a/TShockAPI/Group.cs +++ b/TShockAPI/Group.cs @@ -29,10 +29,17 @@ namespace TShockAPI public Group Parent { get; protected set; } public int Order { get; set; } - public Group(string groupname, Group parentgroup = null) + public byte R = 255; + public byte G = 255; + public byte B = 255; + + public Group(string groupname, Group parentgroup = null, string ChatColor = "255,255,255") { Name = groupname; Parent = parentgroup; + byte.TryParse(ChatColor.Split(',')[0], out R); + byte.TryParse(ChatColor.Split(',')[1], out G); + byte.TryParse(ChatColor.Split(',')[2], out B); } public virtual bool HasPermission(string permission) @@ -100,6 +107,9 @@ namespace TShockAPI public SuperAdminGroup() : base("superadmin") { + R = (byte)TShock.Config.SuperAdminChatRGB[0]; + G = (byte)TShock.Config.SuperAdminChatRGB[1]; + B = (byte)TShock.Config.SuperAdminChatRGB[2]; } public override bool HasPermission(string permission) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 40aab2b7..8881e43c 100755 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -473,8 +473,8 @@ namespace TShockAPI if (tsplr.Group.HasPermission("adminchat") && !text.StartsWith("/") && Config.AdminChatEnabled) { Tools.Broadcast(Config.AdminChatPrefix + "<" + tsplr.Name + "> " + text, - (byte) Config.AdminChatRGB[0], (byte) Config.AdminChatRGB[1], - (byte) Config.AdminChatRGB[2]); + tsplr.Group.R, tsplr.Group.G, + tsplr.Group.B); e.Handled = true; return; } @@ -493,6 +493,9 @@ namespace TShockAPI } else { + Tools.Broadcast("<" + tsplr.Name + "> " + text, + tsplr.Group.R, tsplr.Group.G, + tsplr.Group.B); Log.Info(string.Format("{0} said: {1}", tsplr.Name, text)); } }