public async void OnChangingGroup(ChangingGroupEventArgs ev) { if (ev.Player != null && Instance.Config.EventsToLog.ChangingPlayerGroup && (!ev.Player.DoNotTrack || !Instance.Config.ShouldRespectDoNotTrack)) { await Network.SendAsync(new RemoteCommand("log", "gameEvents", string.Format(Language.GroupSet, ev.Player.Nickname, Instance.Config.ShouldLogUserIds ? ev.Player.UserId : Language.Redacted, ev.Player.Role, ev.NewGroup?.BadgeText ?? Language.None, ev.NewGroup?.BadgeColor ?? Language.None))).ConfigureAwait(false); } }
private void OnPlayerChangingGroup(ChangingGroupEventArgs ev) { if (!ev.IsAllowed) { return; } var hasColors = TryGetColors(GetGroupKey(ev.NewGroup), out var colors); // Happens on first join -> add controller if the player has colors if (ev.NewGroup != null && ev.Player.Group == null && hasColors) { var controller = ev.Player.GameObject.AddComponent <RainbowTagController>(); controller.Colors = colors; controller.Interval = Config.TagInterval; } // Happens on group update -> update group colors or remove the controller else { if (hasColors) { ev.Player.GameObject.GetComponent <RainbowTagController>().Colors = colors; } else { GameObject.Destroy(ev.Player.GameObject.GetComponent <RainbowTagController>()); } } }
private static bool Prefix(ServerRoles __instance, UserGroup group) { var ev = new ChangingGroupEventArgs(API.Features.Player.Get(__instance.gameObject), group); Player.OnChangingGroup(ev); return(ev.IsAllowed); }
public void OnSetGroup(ChangingGroupEventArgs ev) { if (ev.Player != null) { tcp.SendData(new PlayerParam { eventName = "SetGroup", player = PlyToUser(ev.Player), param = ev.NewGroup.BadgeText }); } }
private static bool Prefix(ServerRoles __instance, UserGroup group) { try { var ev = new ChangingGroupEventArgs(API.Features.Player.Get(__instance.gameObject), group); Player.OnChangingGroup(ev); return(ev.IsAllowed); } catch (Exception e) { Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.ChangingGrounp: {e}\n{e.StackTrace}"); return(true); } }
private static void OnChangingGroup(ChangingGroupEventArgs ev) { if (ev.Player != player) { return; } Timing.CallDelayed(0.2f, () => { if (ev.NewGroup == ev.Player.Group) { originalColor = player.ReferenceHub.serverRoles.NetworkMyColor; Timing.KillCoroutines(coroutineHandle); coroutineHandle = Timing.RunCoroutine(UpdateColor()); } }); }
/// <summary> /// Called before changing a player's group. /// </summary> /// <param name="ev">The <see cref="ChangingGroupEventArgs"/> instance.</param> public static void OnChangingGroup(ChangingGroupEventArgs ev) => ChangingGroup.InvokeSafely(ev);