Ejemplo n.º 1
0
        public static void OnGreetPlayer(GreetPlayerEventArgs args)
        {
            var player = TShock.Players[args.Who];

            if (player == null || TShock.Users.GetUsers().Where(u => u != null && u.Name.ToLowerInvariant() == player.Name.ToLowerInvariant()).Count() >= 1 || !PConfig.EnableAutoRegister)
            {
                return;
            }
            Task.Run(() =>
            {
                System.Threading.Thread.Sleep(2000);
                if (PConfig.AnnounceNewAccount)
                {
                    foreach (TSPlayer tsplayer in TShockB.Players.Where(p => p != null && p != player))
                    {
                        TSPlayerB.SendMessage(tsplayer.Index, DefaultMessage: tsplayer.TPlayer.Male ? $"yay! [c/FFD700:We have a new Terrarian with us! Be very welcome,] [c/00a0dd:{player.Name}]" : $"yay! [c/FFD700:We have a new Terrarian with us! Be very welcome,] [c/ed177a:{player.Name}]", Color.Magenta,
                                              PortugueseMessage: tsplayer.TPlayer.Male ? $"Oba! [c/FFD700:Temos um novo Terrariano conosco! Seja muito bem vindo,] [c/00a0dd:{player.Name}]" : $"Oba! [c/FFD700:Temos uma nova Terrariana conosco! Seja muito bem vinda,] [c/ed177a:{player.Name}]",
                                              SpanishMessage: tsplayer.TPlayer.Male ? $"Hurra! [c/FFD700:Tenemos un nuevo Terrario con nosotros! Sea muy bienvenido,] [c/00a0dd:{player.Name}]" : $"Hurra! [c/FFD700:Tenemos un nuevo Terrario con nosotros! Sea muy bienvenida,] [c/ed177a:{player.Name}]",
                                              EnglishMessageIfNotDefault: tsplayer.TPlayer.Male ? $"yay! [c/FFD700:We have a new Terrarian with us! Be very welcome,] [c/00a0dd:{player.Name}]" : $"yay! [c/FFD700:We have a new Terrarian with us! Be very welcome,] [c/ed177a:{player.Name}]");
                    }
                }

                string newPass = CreatePassword(6);
                Logger.doLogLang(DefaultMessage: $"Creating a new account for: {player.Name}", Hydra.Config.DebugLevel.Info, Base.CurrentHydraLanguage, _name,
                                 PortugueseMessage: $"Criando uma nova conta para: {player.Name}",
                                 SpanishMessage: $"Creando una nueva cuenta para el: {player.Name}",
                                 EnglishMessageIfNotDefault: $"Creating a new account for: {player.Name}");

                try
                {
                    TShock.Users.AddUser(new User(
                                             player.Name,
                                             BCrypt.Net.BCrypt.HashPassword(newPass.Trim()),
                                             player.UUID,
                                             PConfig.SelectRegisterGroupAccordingGender ? (player.TPlayer.Male ? PConfig.DefaultGroup : PConfig.FemaleDefaultGroup) : PConfig.DefaultGroup,
                                             DateTime.UtcNow.ToString("s"),
                                             DateTime.UtcNow.ToString("s"),
                                             ""));

                    //auto login
                    User user = TShock.Users.GetUserByName(player.Name);

                    if (user.VerifyPassword(newPass))
                    {
                        player.PlayerData = TShock.CharacterDB.GetPlayerData(player, user.ID);

                        var group = TShock.Utils.GetGroup(user.Group);

                        player.Group      = group;
                        player.tempGroup  = null;
                        player.User       = user;
                        player.IsLoggedIn = true;
                        player.IgnoreActionsForInventory = "none";

                        if (Main.ServerSideCharacter)
                        {
                            if (player.HasPermission(TShockAPI.Permissions.bypassssc))
                            {
                                player.PlayerData.CopyCharacter(player);
                                TShock.CharacterDB.InsertPlayerData(player);
                            }
                            player.PlayerData.RestoreCharacter(player);
                        }
                        player.LoginFailsBySsi = false;

                        if (player.HasPermission(TShockAPI.Permissions.ignorestackhackdetection))
                        {
                            player.IgnoreActionsForCheating = "none";
                        }

                        if (player.HasPermission(TShockAPI.Permissions.usebanneditem))
                        {
                            player.IgnoreActionsForDisabledArmor = "none";
                        }

                        player.LoginHarassed = false;
                        TShock.Users.SetUserUUID(user, player.UUID);

                        Logger.doLogLang(DefaultMessage: $"'{player.Name}' was automatically authenticated with the new registered account.", Hydra.Config.DebugLevel.Info, Base.CurrentHydraLanguage, _name,
                                         PortugueseMessage: $"'{player.Name}' foi autenticado automaticamente com a nova conta cadastrada.",
                                         SpanishMessage: $"'{player.Name}' se autenticó automáticamente con la nueva cuenta registrada.",
                                         EnglishMessageIfNotDefault: $"'{player.Name}' was automatically authenticated with the new registered account.");

                        TSPlayerB.SendMessage(player.Index, DefaultMessage: "Hello! We saw that you are new so we already created your account!", Color.DeepPink,
                                              PortugueseMessage: $"Olá! Vimos que você é {(player.TPlayer.Male ? "novo" : "nova")} então já criamos a sua conta!",
                                              SpanishMessage: $"Hola! Vimos que eres {(player.TPlayer.Male ? "nuevo" : "nueva")}, así que ya creamos tu cuenta",
                                              EnglishMessageIfNotDefault: "Hello! We saw that you are new so we already created your account!");

                        TSPlayerB.SendMessage(player.Index, DefaultMessage: $"Your password is [c/ffa500:{newPass}], change it with [c/ffd700:/password].", Color.Red,
                                              PortugueseMessage: $"Sua senha é [c/ffa500:{newPass}], altere-a com [c/ffd700:/senha].",
                                              SpanishMessage: $"Tu contraseña es [c/ffa500:{newPass}], cambiarlo con [c/ffd700:contraseña].",
                                              EnglishMessageIfNotDefault: $"Your password is [c/ffa500:{newPass}], change it with [c/ffd700:/password].");

                        PlayerHooks.OnPlayerPostLogin(player);
                    }
                } catch (Exception ex) { Logger.doLog(ex.ToString(), Hydra.Config.DebugLevel.Critical, _name); }
            });
        }