public static void Synchronize(this AtlasCharacter character) { var player = Cache.Player; player.User.Characters.RemoveAll(self => self.Seed == character.Seed); player.User.Characters.Add(character); }
private void LookAtId(AtlasCharacter character, string ssn) { API.SendNuiMessage(new JsonBuilder().Add("Operation", "SHOW_ID_CARD").Add("Character", character) .Add("SSN", ssn).Build()); LookingAtId = true; }
public static async Task Save(this AtlasCharacter character) { character.Metadata.LastPosition = Cache.Entity.Position; await EventSystem.GetModule().Request <object>("characters:save", character); Logger.Info($"[Characters] Saved `{character.Name} {character.Surname}` and it's changed assets."); }
public async Task ResetMask(AtlasPlayer player, AtlasCharacter character) { var equipped = character.Metadata.EquippedMask; character.Style.Mask.Current = equipped?.Item1 ?? 0; character.Style.MaskType.Current = equipped?.Item2 ?? 0; await character.Style.Commit(player); }
public static void Revive(this AtlasCharacter character, Position position) { var ped = Cache.Entity.Id; API.RemoveAllPedWeapons(ped, false); API.ClearPedTasksImmediately(ped); API.ClearPlayerWantedLevel(API.PlayerId()); API.SetEntityVisible(ped, true, true); API.SetEntityHealth(ped, API.GetEntityMaxHealth(ped)); API.NetworkResurrectLocalPlayer(position.X, position.Y, position.Z, position.Heading, false, false); API.ClearPedBloodDamage(ped); }
public static async Task Save(this AtlasCharacter character) { using (var context = new StorageContext()) using (var transaction = context.BeginTransaction()) { context.Characters.AddOrUpdate(character); await context.SaveChangesAsync(); transaction.Commit(); Logger.Debug($"[User] [{character.Seed}] - Saving `{character.Name} {character.Surname}` and it's assets."); } }
public static async Task Load(this AtlasCharacter character) { var player = Cache.Player; var style = character.Style; await style.Commit(player); StyleManager.GetModule().Cache(style); var voice = VoiceChat.GetModule(); voice.Range = VoiceChatRange.Normal; voice.Commit(); }
public override void Begin() { EventSystem.Attach("characters:find", new EventCallback(metadata => { using (var context = new StorageContext()) { var user = Atlas.Lookup(metadata.Sender); var result = context.Characters.Where(self => self.Owner == user.Seed) .ToList(); user.Characters.Clear(); user.Characters.AddRange(result); Logger.Debug( $"[Characters] [{user.Seed}] Fetched all characters for `{user.LastName}` totalling {result.Count} character(s)."); return(result); } })); EventSystem.Attach("characters:delete", new AsyncEventCallback(async metadata => { var seed = metadata.Find <string>(0); var user = Atlas.Lookup(metadata.Sender); using (var context = new StorageContext()) using (var transaction = context.BeginTransaction()) { var character = context.Characters.First(self => self.Seed == seed); user.Characters.Add(character); context.Characters.Remove(character); await context.SaveChangesAsync(); transaction.Commit(); } return(null); })); EventSystem.Attach("characters:create", new AsyncEventCallback(async metadata => { var user = Atlas.Lookup(metadata.Sender); var random = new Random(); var character = new AtlasCharacter { Seed = Seed.Generate(), Owner = user.Seed, Name = metadata.Find <string>(0), Surname = metadata.Find <string>(1), DateOfBirth = metadata.Find <string>(2), LastDigits = random.Next(1000, 10000), Health = 100, Shield = 0, Cash = 3000, Style = new Style(), BankAccount = new BankAccount { Balance = 0, History = new List <BankTransaction>() }, Metadata = new CharacterMetadata { Employment = Employment.Unemployed, SavedOutfits = new Dictionary <string, Style>(), Inventories = new List <InventoryContainerBase>(), JailCases = new List <JailCase>() } }; using (var context = new StorageContext()) using (var transaction = context.BeginTransaction()) { while (context.Characters.FirstOrDefault(self => self.DateOfBirth == character.DateOfBirth && self.LastDigits == character.LastDigits) != null) { character.LastDigits = random.Next(1000, 10000); } context.Characters.AddOrUpdate(character); await context.SaveChangesAsync(); transaction.Commit(); Logger.Info( $"[Characters] [{user.LastName}] Has created a new character named `{character.Name} {character.Surname}` ({character.DateOfBirth.Replace("-", "") + character.LastDigits}) ({character.Name})"); } user.Characters.Add(character); return(character); })); EventSystem.Attach("characters:save", new AsyncEventCallback(async metadata => { var character = metadata.Find <AtlasCharacter>(0); await character.Save(); return(null); })); EventSystem.Attach("characters:fetch", new EventCallback(metadata => { var fullname = metadata.Find <string>(0).ToLower().Trim(); using (var context = new StorageContext()) { foreach (var character in context.Characters) { if (character.Fullname.Trim().ToLower() == fullname) { return(character); } } } return(null); })); EventSystem.Attach("characters:fetchbyseed", new EventCallback(metadata => { var seed = metadata.Find <string>(0); using (var context = new StorageContext()) { foreach (var character in context.Characters) { if (character.Seed == seed) { return(character); } } } return(null); })); EventSystem.Attach("characters:fetchbyssn", new EventCallback(metadata => { var ssn = metadata.Find <string>(0).Trim(); using (var context = new StorageContext()) { foreach (var character in context.Characters) { if (new string((character.DateOfBirth + character.LastDigits).Replace("-", "").Skip(2).ToArray()) == ssn) { return(character); } } } return(null); })); }
public static async Task PostLoad(this AtlasCharacter character) { AtlasPlugin.Instance.AttachTickHandler(Intro); Session.CreatingCharacter = true; var player = Cache.Player; var timestamp = API.GetGameTimer(); while (timestamp + 5000 > API.GetGameTimer()) { await BaseScript.Delay(100); } Session.Reload(); AtlasPlugin.Instance.DetachTickHandler(Intro); var board = new MugshotBoardAttachment(); player.DisableHud(); #pragma warning disable 4014 board.Attach(player); player.CameraQueue.View(new CameraBuilder() .WithMotionBlur(0.5f) .WithInterpolation(CameraViews[0], CameraViews[1], 5000) ); #pragma warning restore 4014 API.DoScreenFadeIn(5000); await player.AnimationQueue.PlayDirectInQueue(new AnimationBuilder() .Select("mp_character_creation@customise@male_a", "intro") ); player.AnimationQueue.AddToQueue(new AnimationBuilder() .Select("mp_character_creation@customise@male_a", "loop") .WithFlags(AnimationFlags.Loop) .SkipTask() ).PlayQueue(); var registered = false; var view = 0; StyleManager.GetModule().OpenStyleChange(character.Style, "General", 0, async type => { if (type == 0) { registered = true; } else { var item = InterfaceManager.GetModule().MenuContext.Selected; if (item == null) { return; } var head = HeadComponents.Select(self => self.ToLower()) .Contains(item.Seed.Replace("style_component_", "").ToLower()); if (head && view == 0) { view = 1; player.CameraQueue.Reset(); await player.CameraQueue.View(new CameraBuilder() .SkipTask() .WithMotionBlur(0.5f) .WithInterpolation(CameraViews[1], CameraViews[2], 300) ); } else if (!head && view == 1) { view = 0; player.CameraQueue.Reset(); await player.CameraQueue.View(new CameraBuilder() .SkipTask() .WithMotionBlur(0.5f) .WithInterpolation(CameraViews[2], CameraViews[1], 300) ); } } }, "CHAR_CREATE", "All"); while (!registered) { if (!API.IsEntityPlayingAnim(player.Entity.Id, "mp_character_creation@customise@male_a", "loop", 3)) { player.AnimationQueue.AddToQueue(new AnimationBuilder() .Select("mp_character_creation@customise@male_a", "loop") .WithFlags(AnimationFlags.Loop) .SkipTask() ).PlayQueue(); board.IsAttached = false; #pragma warning disable 4014 board.Attach(player); #pragma warning restore 4014 } await BaseScript.Delay(100); } player.AnimationQueue.AddToQueue(new AnimationBuilder() .Select("mp_character_creation@customise@male_a", "outro") .WithFlags(AnimationFlags.StayInEndFrame) ).PlayQueue(); API.DoScreenFadeOut(3000); await BaseScript.Delay(5500); Session.Join(1); board.IsAttached = false; await SafeTeleport.Teleport(player.Entity.Id, new Position(-1045.326f, -2750.793f, 21.36343f, 330.1637f)); #pragma warning disable 4014 player.CameraQueue.View(new CameraBuilder() #pragma warning restore 4014 .WithMotionBlur(0.5f) .WithInterpolation( new RotatablePosition(-1032.415f, -2726.847f, 26.48441f, 152.7852f, -7f, 0f), new RotatablePosition(-1032.415f, -2726.847f, 22.23441f, 152.7852f, -7f, 0f), 10000) ); API.DoScreenFadeIn(8000); API.TaskGoStraightToCoord(player.Entity.Id, DefaultPosition.X, DefaultPosition.Y, DefaultPosition.Z, 1f, -1, DefaultPosition.Heading, 0f); while (DefaultPosition.Distance(player.Entity.Position) > 0.1 || Math.Abs(DefaultPosition.Heading - player.Entity.Position.Heading) > 1) { await BaseScript.Delay(10); } character.MarkedAsRegistered = true; await character.Save(); await player.AnimationQueue.PlayDirectInQueue(new AnimationBuilder() .Select("move_p_m_one_idles@generic", "fidget_look_around") ); API.TransitionToBlurred(0f); player.EnableHud(); player.CameraQueue.Reset(); await BaseScript.Delay(10); API.TransitionFromBlurred(500f); await BaseScript.Delay(1000); Session.CreatingCharacter = false; }
public void Commit(AtlasCharacter character) { character.Metadata.JailCases.RemoveAll(self => self.Seed == Seed); character.Metadata.JailCases.Add(this); }