public async Task HandleEventAsync(object?sender, UnturnedPlayerChattingEvent @event) { var isAdmin = @event.Player.SteamPlayer.isAdmin; var isGold = @event.Player.SteamPlayer.isPro; if (!m_Configuration.GetSection("override:color:admin").Get <bool>() && isAdmin || Provider.hideAdmins) { return; } if (!m_Configuration.GetSection("override:color:gold").Get <bool>() && isGold) { return; } var id = @event.Player.SteamId.ToString(); var displayName = @event.Player.SteamPlayer.playerID.characterName; var role = await m_PermissionExtensions.GetOrderedPermissionRoleData(id, KnownActorTypes.Player); if (role == null) { m_Logger.LogDebug("Role for player {Name}({Id}) not found", displayName, id); return; } m_Logger.LogDebug("Found role {RoleDisplayName}({RoleId}) for player {PlayerName}({PlayerId})", role.DisplayName, role.Id, displayName, id); if (role.Data !.TryGetValue("color", out var unparsedColor) && unparsedColor is string @string) { var color = ColorTranslator.FromHtml(@string); if (!color.IsEmpty) { m_Logger.LogDebug("Change color {UColor} to {SColor}", @event.Color, color); @event.Color = color.ToUnityColor(); return; } } unparsedColor ??= "<unknown>"; m_Logger.LogDebug("Cannot translate color {UnparsedColor} to System.Drawing.Color", unparsedColor); var eventIsCancelled = @event.IsCancelled; var eventColor = @event.Color.ToSystemColor(); CallRocketPlayerChatted(@event.Player, @event.Mode, @event.Message, ref eventColor, ref eventIsCancelled); @event.IsCancelled = eventIsCancelled; @event.Color = eventColor.ToUnityColor(); }
public async Task HandleEventAsync(object?sender, UnturnedUserConnectingEvent @event) { var role = await m_PermissionExtensions.GetOrderedPermissionRoleData(@event.User.Id, @event.User.Type); if (role == null) { m_Logger.LogDebug("Role for player {FullName} not found", @event.User.FullActorName); return; } m_Logger.LogDebug("Found role {RoleDisplayName}({RoleId}) for player {FullName}", role.DisplayName, role.Id, @event.User.FullActorName); var prefix = role.Data?.ContainsKey("prefix") ?? false ? role.Data["prefix"] : string.Empty; var suffix = role.Data?.ContainsKey("suffix") ?? false ? role.Data["suffix"] : string.Empty; string pendingName = prefix + @event.User.DisplayName + suffix; m_Logger.LogDebug("Change name {DisplayName} to {PendingName}", @event.User.DisplayName, pendingName); @event.User.SteamPending.playerID.characterName = pendingName; }