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));
}
}