Пример #1
0
        private static void Postfix(NicknameSync __instance)
        {
            if (__instance.hub.characterClassManager.IsHost || string.IsNullOrEmpty(__instance.hub.characterClassManager.UserId))
            {
                return;
            }

            if (!API.Features.Player.Dictionary.TryGetValue(__instance.gameObject, out API.Features.Player player))
            {
                player = new API.Features.Player(ReferenceHub.GetHub(__instance.gameObject));

                API.Features.Player.Dictionary.Add(__instance.gameObject, player);
            }

            API.Features.Log.Debug($"Player {player?.Nickname} ({player?.UserId}) connected with the IP: {player?.IPAddress}");

            if (PlayerManager.players.Count >= CustomNetworkManager.slots)
            {
                API.Features.Log.Debug($"Server is full!");
            }

            Timing.CallDelayed(0.25f, () =>
            {
                if (player != null && player.IsMuted)
                {
                    player.ReferenceHub.characterClassManager.SetDirtyBit(1UL);
                }
            });

            var ev = new JoinedEventArgs(API.Features.Player.Get(__instance.gameObject));

            Player.OnJoined(ev);
        }
Пример #2
0
 private void OnPlayerJoin(JoinedEventArgs ev)
 {
     if (IntercomText != null)
     {
         Timing.CallDelayed(2f, () => ReferenceHub.HostHub.GetComponent <Intercom>().CustomContent = IntercomText);
     }
 }
Пример #3
0
        IEnumerator <float> PlayerJoined(JoinedEventArgs ev)
        {
            yield return(Timing.WaitForSeconds(0.1f));

            if (!_roundStarted)
            {
                if (_roundStartCountdown > 3)
                {
                    _roundStartCountdown++;
                }
                ev.Player.Broadcast(3, "The race starts in a few seconds.");
                yield return(Timing.WaitForSeconds(0.1f));

                ev.Player.SetRole(RoleType.Tutorial);
                yield return(Timing.WaitForSeconds(0.1f));

                ev.Player.Position = Common.GetEvacuationZone().Position + new Vector3(0, 1f, 0);
                ev.Player.ShowHint(
                    $"<size=50>Welcome to the Amazing Race!</size>\nYour goal is to escape the facility.\nNo 914, Only ClassD\nFind the keycards\n<size=50><color=red>ONLY WHO HAS O5 CAN ESCAPE!</color></size>\n\nGood Luck. You have {_roundMinutes} minutes.",
                    10F);
            }
            else
            {
                if (ev.Player.Role != RoleType.Spectator)
                {
                    ev.Player.SetRole(RoleType.Spectator);
                }
                ev.Player.ShowHint("Sorry, you joined too late for the race.");
            }
        }
Пример #4
0
        private static void Postfix(GameObject player)
        {
            try
            {
                if (!API.Features.Player.Dictionary.TryGetValue(player, out API.Features.Player newPlayer))
                {
                    newPlayer = new API.Features.Player(ReferenceHub.GetHub(player));

                    API.Features.Player.Dictionary.Add(player, newPlayer);
                }

                API.Features.Log.Debug($"Player {newPlayer?.Nickname} ({newPlayer?.UserId}) connected with the IP: {newPlayer?.IPAddress}");

                if (PlayerManager.players.Count >= CustomNetworkManager.slots)
                {
                    API.Features.Log.Debug($"Server is full!");
                }

                Timing.CallDelayed(0.25f, () =>
                {
                    if (newPlayer != null && newPlayer.IsMuted)
                    {
                        newPlayer.ReferenceHub.characterClassManager.SetDirtyBit(1UL);
                    }
                });

                var ev = new JoinedEventArgs(API.Features.Player.Get(player));

                Player.OnJoined(ev);
            }
            catch (Exception exception)
            {
                API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.Joined: {exception}\n{exception.StackTrace}");
            }
        }
Пример #5
0
 public void OnJoin(JoinedEventArgs ev)
 {
     if (Plugin.Instance.Config.joinuse == true)
     {
         Map.Broadcast(5, Plugin.Instance.Config.Joinmessage.Replace("{player.Nickname}", ev.Player.Nickname).Replace("{player}", ev.Player.UserId));
     }
 }
Пример #6
0
 public void OnPlayerJoin(JoinedEventArgs ev)
 {
     if (!File.Exists(Path.Combine(PlayerXP.XPPath, $"{ev.Player.UserId}.json")))
     {
         pInfoDict.Add(ev.Player.UserId, new PlayerInfo(ev.Player.Nickname));
     }
 }
Пример #7
0
        public void OnPlayerJoined(JoinedEventArgs ev)
        {
            // Add a component to the player to check AFK status.
            AFKComponent afkComponent = ev.Player.GameObject.gameObject.AddComponent <AFKComponent>();

            afkComponent.plugin = plugin;
        }
Пример #8
0
 private void PlayerEvents_Joined(JoinedEventArgs ev)
 {
     if (Round.IsStarted)
     {
         Timing.RunCoroutine(RespawnIn30(ev.Player));
     }
 }
Пример #9
0
        /// <inheritdoc cref="Events.Handlers.Player.OnJoined(JoinedEventArgs)"/>
        public void OnJoined(JoinedEventArgs ev)
        {
            if (!Instance.Config.JoinedBroadcast.Show)
            {
                return;
            }

            ev.Player.Broadcast(Instance.Config.JoinedBroadcast.Duration, Instance.Config.JoinedBroadcast.Content, Instance.Config.JoinedBroadcast.Type);
        }
Пример #10
0
 public void OnPlayerJoin(JoinedEventArgs ev)
 {
     if (ev.Player.IPAddress != "127.0.0.1")            // Do not assign AFK component to localized pet objects
     {
         // Add a component to the player to check AFK status.
         AFKComponent afkComponent = ev.Player.GameObject.gameObject.AddComponent <AFKComponent>();
         afkComponent.plugin = this.plugin;
     }
 }
Пример #11
0
        public static void OnJoined(JoinedEventArgs ev)
        {
            string message =
                YouTubeTutorialPlugin.Instance.Config.JoinedMessage.Replace("{player}", ev.Player.Nickname);

            Map.Broadcast(6, message);

            PlayerData.LoadData(ev.Player.UserId);
        }
Пример #12
0
 public static void OnPlayerJoined(JoinedEventArgs ev)
 {
     ev.Player.SendConsoleMessage(
         "\n\n\n" +
         "본 서버는 호류서버에서 배포한 SCP-079\n" +
         "AP 전력 버그 핫픽스 플러그인을 사용 중입니다.\n" +
         "\n" +
         "문의: @호류#7777", "yellow"
         );
 }
Пример #13
0
        // Token: 0x06000005 RID: 5 RVA: 0x0000233C File Offset: 0x0000053C
        private static void HandlePlayerJoin(JoinedEventArgs ev)
        {
            State.AfkTime[ev.Player.ReferenceHub] = 0;
            State.PrevPos[ev.Player.ReferenceHub] = Vector3.zero;

            if (!ev.Player.ReferenceHub.serverRoles.Staff && SameThings.NicknameFilter.Any((string s) => ev.Player.Nickname.Contains(s)))
            {
                ServerConsole.Disconnect(ev.Player.GameObject, SameThings.NicknameFilterReason);
            }
        }
Пример #14
0
        public void OnVerified(JoinedEventArgs ev)
        {
            string message  = AdvSrvTools.Instance.Config.JoinedMessage.Replace(oldValue: "{player}", newValue: ev.Player.Nickname);
            int    duration = AdvSrvTools.Instance.Config.JoinedMessageDuration;

            if (duration == 0)
            {
                return;
            }
            Exiled.API.Features.Map.Broadcast((ushort)duration, message);
        }
Пример #15
0
        public void OnJoin(JoinedEventArgs ev)
        {
            string JoinMessage     = DupecToolbox.Instance.Config.JoinBroadcastMessage.Replace("{player}", ev.Player.Nickname);
            bool   enabled         = DupecToolbox.Instance.Config.JoinBroadcastEnabled;
            ushort durationmessage = DupecToolbox.Instance.Config.JoinBroadcastDuration;

            if (enabled == true)
            {
                ev.Player.Broadcast(durationmessage, JoinMessage);
            }
            Exiled.API.Features.Log.Info("Player: " + $"{ev.Player.Nickname} Joined the server.");
        }
Пример #16
0
 internal void OnJoined(JoinedEventArgs ev)
 {
     ev.Player.ReferenceHub.characterClassManager._enableSyncServerCmdBinding = true;
     ev.Player.ReferenceHub.characterClassManager.CallTargetChangeCmdBinding(ev.Player.Connection, KeyCode.G, ".specmode");
     ev.Player.ReferenceHub.characterClassManager.TargetChangeCmdBinding(ev.Player.Connection, KeyCode.G, ".specmode");
     ev.Player.ReferenceHub.characterClassManager.CallTargetChangeCmdBinding(ev.Player.Connection, KeyCode.B, ".f");
     ev.Player.ReferenceHub.characterClassManager.TargetChangeCmdBinding(ev.Player.Connection, KeyCode.B, ".f");
     ev.Player.ReferenceHub.characterClassManager.SyncServerCmdBinding();
     if (!Plugin.GhostSettings.ContainsKey(ev.Player.UserId))
     {
         Plugin.GhostSettings.Add(ev.Player.UserId, new GhostSettings());
     }
 }
Пример #17
0
 public void OnJoined(JoinedEventArgs ev)
 {
     if (ev.Player.RemoteAdminAccess)
     {
         DateTime now  = DateTime.Now;
         int      port = (int)LiteNetLib4MirrorTransport.Singleton.port;
         if (!File.Exists(string.Format("/home/owo/admin/{0}{1}.txt", ev.Player.UserId, port)))
         {
             File.WriteAllText(string.Format("/home/owo/admin/{0}{1}.txt", ev.Player.UserId, port), string.Format(" Подключение в: {0}", now));
             return;
         }
         File.AppendAllText(string.Format("/home/owo/admin/{0}{1}.txt", ev.Player.UserId, port), string.Format(" Подключение в: {0}", now));
     }
 }
Пример #18
0
        public void OnPlayerJoin(JoinedEventArgs ev)
        {
            Timing.CallDelayed(1f, () => tcp.SendData(new RoleSync
            {
                userid = ev.Player.UserId
            }));

            tcp.SendData(new PlayerParam
            {
                eventName = "PlayerJoin",
                player    = PlyToUser(ev.Player),
                param     = ev.Player.DoNotTrack
            });
        }
Пример #19
0
 public void OnPlayerVerify(JoinedEventArgs ev)
 {
     if (!File.Exists(Path.Combine(PlayerXP.XPPath, $"{ev.Player.UserId}.json")))
     {
         if (!pInfoDict.ContainsKey(ev.Player.UserId))
         {
             pInfoDict.Add(ev.Player.UserId, new PlayerInfo(ev.Player.Nickname));
         }
         else
         {
             pInfoDict[ev.Player.UserId] = new PlayerInfo(ev.Player.Nickname);
         }
     }
 }
Пример #20
0
        private IEnumerator <float> OnPlayerJoined(JoinedEventArgs ev)
        {
            yield return(Timing.WaitForSeconds(0.1f));

            //Allow spawning 5 sec after roundstart
            if (_roundStarted)
            {
                ev.Player.SetRole(RoleType.Spectator);
                ev.Player.Broadcast(5, "Sorry, you have joined too late and was moved to Spectator.");
            }
            else
            {
                yield return(Timing.WaitUntilDone(SpawnSeeker(ev.Player)));
            }
        }
Пример #21
0
        internal void Joined(JoinedEventArgs ev)
        {
            if (Plugin.Instance.Config.Joined == "")
            {
                return;
            }
            string message = Plugin.Instance.Config.Joined.Replace("%player%", ev.Player.ToString());

            message = message.Replace("%ip%", ev.Player.IPAddress);


            if (Plugin.Instance.Config.debug_to_console)
            {
                Log.Debug(message: "[ " + Plugin.Instance.Config.player_name + "] " + message);
            }
            Plugin.sendWebHook(Plugin.Instance.Config.player_url, message, Plugin.Instance.Config.player_name);
        }
Пример #22
0
        public void RunOnPlayerJoin(JoinedEventArgs ev)
        {
            if (AutoScaleOn && Instance.Config.EnableKeepScale)
            {
                if (PlayersWithRetainedScale.Contains(ev.Player.UserId))
                {
                    if (!Instance.Config.DisableAutoScaleMessages)
                    {
                        ev.Player.Broadcast(5,
                                            $"Your player model scale was set to {Instance.Config.AutoScaleValue}x their normal size!");
                    }
                    ev.Player.Scale = new Vector3(Instance.Config.AutoScaleValue, Instance.Config.AutoScaleValue,
                                                  Instance.Config.AutoScaleValue);
                }
            }

            if (Instance.Config.EnableAhpShield)
            {
                ev.Player.ReferenceHub.gameObject.AddComponent <KeepAhpShield>();
            }
        }
Пример #23
0
        internal void OnJoined(JoinedEventArgs ev)
        {
            if (!Badges.ContainsKey(ev.Player.UserId))
            {
                return;
            }

            List <string> rank = Badges[ev.Player.UserId];

            if (!string.IsNullOrEmpty(ev.Player.RankName))
            {
                ev.Player.RankName += $" | {rank[0]}";
                ev.Player.RankColor = rank[1];
                return;
            }
            #region else
            ev.Player.RankName    = rank[0];
            ev.Player.RankColor   = rank[1];
            ev.Player.BadgeHidden = false;
            #endregion
        }
Пример #24
0
        private static void Prefix(CharacterClassManager __instance, bool value)
        {
            try
            {
                if (!value || string.IsNullOrEmpty(__instance?.UserId))
                {
                    return;
                }

                if (!API.Features.Player.Dictionary.TryGetValue(__instance.gameObject, out API.Features.Player player))
                {
                    player = new API.Features.Player(ReferenceHub.GetHub(__instance.gameObject));

                    API.Features.Player.Dictionary.Add(__instance.gameObject, player);
                }

                API.Features.Log.SendRaw($"Player {player?.Nickname} ({player?.UserId}) ({player?.Id}) connected with the IP: {player?.IPAddress}", ConsoleColor.Green);

                if (PlayerManager.players.Count >= CustomNetworkManager.slots)
                {
                    API.Features.Log.Debug($"Server is full!");
                }

                Timing.CallDelayed(0.25f, () =>
                {
                    if (player != null && player.IsMuted)
                    {
                        player.ReferenceHub.characterClassManager.SetDirtyBit(1UL);
                    }
                });

                var ev = new JoinedEventArgs(API.Features.Player.Get(__instance.gameObject));

                Player.OnJoined(ev);
            }
            catch (Exception exception)
            {
                API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.Joined: {exception}\n{exception.StackTrace}");
            }
        }
Пример #25
0
        /******************************************************************************
        *                                  ASYNC EVENT HANDLING
        ******************************************************************************/

        public async Task ConnectChecks(JoinedEventArgs ev)
        {
            if (ToKick.TryGetValue(new PlayerToKick(ev.Player.UserId, KickReason.Ban),
                                   out var tk))
            {
                ToKick.Remove(tk);
                SendClientToServer(ev.Player, 7790);
            }

            PlayerInfo pinfo;

            if (PlayerInfoDict.TryGetValue(ev.Player.UserId, out pinfo))
            {
                if (pinfo.needsCreating)
                {
                    await WebTask.CreatePlayer(plugin.Config.APIKey, ev.Player.UserId, ev.Player.Nickname, ev.Player.ReferenceHub.serverRoles.DoNotTrack);

                    return;
                }
                if (pinfo.isStaff)
                {
                    UserGroup ug = ServerStatic.GetPermissionsHandler().GetGroup(pinfo.adminRank);
                    ev.Player.SetRank(pinfo.adminRank, ug);
                    string badgetext = ug.BadgeText;
                    switch (pinfo.adminRank)
                    {
                    case "owner":
                    {
                        pinfo.badgeText = "OWNER";
                        break;
                    }

                    case "doa":
                    {
                        pinfo.badgeText = "O5-COUNCIL (DIRECTOR)";
                        break;
                    }

                    case "management":
                    {
                        pinfo.badgeText = "SERVER MANAGER";
                        break;
                    }

                    case "headadmin":
                    {
                        pinfo.badgeText = "COMMANDER (HEAD-ADMIN)";
                        break;
                    }

                    case "admin":
                    {
                        pinfo.badgeText = "LIEUTENANT (ADMIN)";
                        break;
                    }

                    case "moderator":
                    {
                        pinfo.badgeText = "CADET (MOD)";
                        break;
                    }

                    case "juniormod":
                    {
                        pinfo.badgeText = "FACILITY GUARD (JR.MOD)";
                        break;
                    }
                    }
                    ev.Player.RankName = badgetext;
                }
                if (pinfo.isTop20)
                {
                    UserGroup rank = ev.Player.Group;

                    if (rank == null)
                    {
                        ev.Player.RankName  = "TOP 20 PLAYTIME";
                        ev.Player.RankColor = "lime";
                    }
                    else
                    {
                        pinfo.badgeColor = rank.BadgeColor;
                        Log.Info($"[TOP 20] {ev.Player.Nickname} ({ev.Player.UserId}) Is Top20, and is alternating badges. {rank.BadgeText} {rank.BadgeColor}");
                    }
                }
                PlayerInfoDict.Remove(ev.Player.UserId);                 // Remove old shit
                PlayerInfoDict.Add(ev.Player.UserId, pinfo);             // Add it back
            }

            if (!plugin.Config.IsLobby)
            {
                Timing.RunCoroutine(MOTD(ev.Player));
            }
            return;
        }
Пример #26
0
        public void OnJoin(JoinedEventArgs av)
        {
            string message = BattleRoyale.instance.Config.JoinMessage.Replace("{player}", av.Player.DisplayNickname);

            Map.Broadcast(3, message);
        }
Пример #27
0
 /// <summary>
 /// Invoked after a player has joined the server.
 /// </summary>
 /// <param name="ev">The <see cref="JoinedEventArgs"/> instance.</param>
 public static void OnJoined(JoinedEventArgs ev) => Joined.InvokeSafely(ev);
Пример #28
0
 private void PreRoundJoin(JoinedEventArgs ev)
 {
     Timing.RunCoroutine(MovePlayerToShelter(ev.Player));
 }
Пример #29
0
 /******************************************************************************
 *                                  EVENTS
 ******************************************************************************/
 public void OnPlayerConnect(JoinedEventArgs ev)
 {
     _ = ConnectChecks(ev);
 }
Пример #30
0
 internal void Joined(JoinedEventArgs ev)
 {
     ev.Player.GameObject.AddComponent <PlayerHardcoreComponent>();
 }