private async void SaveHeritage(IRpcEvent e, Guid characterId, CharacterHeritage heritage)
        {
            using (var context = new StorageContext())
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        var save = context.Characters.Include(c => c.Heritage).Single(c => c.Id == characterId);

                        heritage.Id = save.HeritageId;

                        context.Entry(save.Heritage).CurrentValues.SetValues(heritage);

                        await context.SaveChangesAsync();

                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        this.Logger.Error(ex, "Character Heritage Save");

                        transaction.Rollback();
                    }
                }
        }
Exemple #2
0
        private void SaveCharacter()
        {
            if (!this.isPlaying)
            {
                return;
            }

            var player = Game.PlayerPed;

            this.activeCharacter.Position = player.Position.ToVector3().ToPosition();
            this.activeCharacter.Model    = ((uint)player.Model.Hash).ToString();

            this.Rpc.Event(CharacterEvents.SaveCharacter).Trigger(this.activeCharacter);

            this.Rpc.Event(CharacterEvents.SaveStyle).Trigger(this.activeCharacter.Id, CharacterStyle.ConvertStyle(player.Style, this.activeCharacter.Id));

            // FreeMode Models only
            if (!(this.activeCharacter.ModelHash == PedHash.FreemodeMale01 ||
                  this.activeCharacter.ModelHash == PedHash.FreemodeFemale01))
            {
                return;
            }

            this.Rpc.Event(CharacterEvents.SaveFacialTrait).Trigger(this.activeCharacter.Id, CharacterFacialTrait.ConvertFacialTrait(player.Handle));
            this.Rpc.Event(CharacterEvents.SaveHeritage).Trigger(this.activeCharacter.Id, CharacterHeritage.ConvertHeritage(player.GetHeadBlendData(), this.activeCharacter.Created));
            this.Rpc.Event(CharacterEvents.SaveTrait).Trigger(this.activeCharacter.Id, CharacterTrait.ConvertTrait(player));
        }