Ejemplo n.º 1
0
        public async void Login(Client sender, string username, string password)
        {
            Master masterAccount;

            if (username.Contains("@"))
            {
                masterAccount = await MasterRepository.GetMasterDataByEmail(username);
            }
            else
            {
                masterAccount = await MasterRepository.GetMasterDataByName(username);
            }

            if (masterAccount != null)
            {
                if (Crypter.CheckPassword(password, masterAccount.Password))
                {
                    string[]      charNames = new string[5];
                    List <string> charImgs  = new List <string>()
                    {
                        "", "", "", "", ""
                    };
                    string[] factions = new string[5];
                    masterAccount.Players = await PlayerRepository.GetAllPlayerDataByMasterAccount(masterAccount);

                    masterAccount.Client = sender;
                    int count = 0;
                    foreach (Player p in masterAccount.Players)
                    {
                        charNames[count] = p.Username.Roleplay();
                        charImgs[count]  = p.Skin == 797459875 ?  Images.SkinBlobs[p.Skin] : "";
                        if (p.FactionId != 0)
                        {
                            factions[count] =
                                $"{FactionRepository.GetFactionById(p.FactionId).Name}<br/>{RankRepository.GetRankByFactionAndId(p.FactionId, p.FactionRank).Title}";
                        }
                        else
                        {
                            factions[count] = "Civilian";
                        }
                        count++;
                    }

                    Master.MasterData.Add(masterAccount);
                    API.triggerClientEvent(sender, "playerLogResult", "success", masterAccount.Players.Count,
                                           string.Join(",", charNames), string.Join(",", factions), string.Join(".", charImgs));

                    masterAccount.LatestLogin = Server.Date;
                    masterAccount.LatestIP    = sender.address;

                    masterAccount.ActiveConnectionLog = new ConnectionLog(masterAccount.Id, -1, API.getPlayerAddress(sender));
                    ConnectionLogRepository.AddNew(masterAccount.ActiveConnectionLog);
                    MasterRepository.UpdateAsync(masterAccount);
                    masterAccount.AdminLevel = 6;
                }
                else
                {
                    API.triggerClientEvent(sender, "playerLogResult", "incorrect-pass");
                    API.SendErrorNotification(sender, "You have entered an incorrect password");
                }
            }
            else
            {
                API.triggerClientEvent(sender, "playerLogResult", "invalid-user");
                API.SendErrorNotification(sender, "You have entered an invalid username");
            }
        }
Ejemplo n.º 2
0
        private async void CompleteCharCreation(Client sender)
        {
            Master master = Master.MasterData.Single(me => me.Client == sender);

            if (master.CreatingCharacter == null)
            {
                return;
            }
            Player newChar = new Player
            {
                Username        = master.CreatingCharacter.Username.Replace(" ", "_"),
                Level           = 0,
                Health          = 100,
                Armour          = 0,
                FactionId       = 0,
                FactionRank     = 0,
                WeaponSkillData = "0,0,0,0,0,0,0,0",
                DateOfBirth     = master.CreatingCharacter.DateOfBirth,
                Gender          = master.CreatingCharacter.Gender,
                MasterAccount   = master,
                MasterId        = master.Id,
                Dimension       = 0,
                TestDriveBan    = false,
                Client          = sender,
                LastPosition    = new Vector3(-697.0174, 5803.262, 17.33096),
                LastRotation    = new Vector3(0, 0, 63.30323)
            };

            List <int> AvailableSkins = new List <int>();

            AvailableSkins = GetAvailableSkins(master);
            int[] compIds     = new int[12];
            int[] textureIds  = new int[12];
            int[] drawableIds = new int[12];

            for (int i = 0; i < 12; i++)
            {
                textureIds[i]  = API.fetchNativeFromPlayer <int>(sender, Hash.GET_PED_TEXTURE_VARIATION, sender, i);
                drawableIds[i] = API.fetchNativeFromPlayer <int>(sender, Hash.GET_PED_DRAWABLE_VARIATION, sender, i);
            }

            Skin newSkin = new Skin
            {
                Model       = AvailableSkins[master.CreatingCharacter.CurrentSkinIndex],
                TextureIds  = string.Join(",", textureIds),
                DrawableIds = string.Join(",", drawableIds),
                OwnerId     = PlayerRepository.AddNewPlayer(newChar)
            };

            Master.MasterData.Single(me => me.Client == sender).Players =
                await PlayerRepository.GetAllPlayerDataByMasterAccount(master);

            Master.MasterData.Single(me => me.Client == sender).CreatingCharacter = null;

            newChar.Skin = SkinRepository.AddNewSkin(newSkin);

            PlayerRepository.UpdateAsync(newChar);

            PlayerInit(newChar);
            sender.FadeOutIn(200, 1300);
            API.triggerClientEvent(sender, "onCharCreated");
        }