public override void Begin() { EventSystem.Attach("storage:fetch", new EventCallback(metadata => { var seed = metadata.Find <string>(0); using (var context = new StorageContext()) { return(context.Storages.FirstOrDefault(self => self.Seed == seed)); } })); EventSystem.Attach("storage:update", new AsyncEventCallback(async metadata => { var storage = metadata.Find <Storage>(0); using (var context = new StorageContext()) using (var transaction = context.BeginTransaction()) { context.Storages.AddOrUpdate(storage); await context.SaveChangesAsync(); transaction.Commit(); } return(null); })); }
public override void Begin() { EventSystem.Attach("id:card:show", new EventCallback(metadata => { var character = metadata.Find <AtlasCharacter>(0); var ssn = metadata.Find <string>(1); LookAtId(character, ssn); return(null); })); }
public NetworkPackage() { EventSystem.Attach("network:package:receive", new EventCallback(metadata => { var index = metadata.Find <string>(0); var payload = JsonConvert.DeserializeObject <NetworkPayload <object> >(metadata.Find <string>(1)); payload.Index = index; payload.Origin = payload.Get().GetType().FullName; Commit(payload); OnImports(index); return(null); })); }
public override void Begin() { EventSystem.Attach("handcuff:toggle", new EventCallback(metadata => { var state = metadata.Find <bool>(0); if (state == IsHandcuffed) { return(null); } IsHandcuffed = state; if (IsHandcuffed) { PutOn(); } else { Remove(); } return(null); })); EventSystem.Attach("handcuff:drag:toggle", new EventCallback(metadata => { var ped = API.GetPlayerPed(-1); var source = API.GetPlayerPed(API.GetPlayerFromServerId(metadata.Find <int>(0))); if (!API.DoesEntityExist(source)) { return(null); } if (API.IsEntityAttachedToEntity(ped, source)) { API.DetachEntity(ped, true, false); } else { API.AttachEntityToEntity(ped, source, 11816, 0.54f, 0.54f, 0f, 0f, 0f, 0f, false, false, false, false, 2, true); } return(null); })); }
public override void Begin() { EventSystem.Attach("session:reload", new EventCallback(metadata => { var entity = API.GetPlayerPed(API.GetPlayerFromServerId(metadata.Find <int>(0))); var session = metadata.Find <int>(1); var decors = new EntityDecorModule { Id = entity, }; decors.Set("Session", session); Session.Reload(); return(this); })); }
public override void Begin() { EventSystem.Attach("network:package:update", new EventCallback(metadata => { var index = metadata.Find <string>(0); var payload = metadata.Find <string>(1); foreach (var user in Atlas.ActiveUsers) { if (user.Handle == metadata.Sender) { continue; } user.Send("network:package:receive", index, payload); } LatestMigration[index] = payload; return(null); })); EventSystem.Attach("network:package:latest", new EventCallback(metadata => LatestMigration)); }
public override void Begin() { EventSystem.Attach("job:employee:hired", new AsyncEventCallback(async metadata => { var seed = metadata.Find <string>(0); var character = CharacterManager.GetModule().AvailableCharacters.First(self => self.Seed == seed); if (Cache.Character.Seed == character.Seed) { Cache.Player.ShowNotification($"Du har blivit anställd hos {metadata.Find<string>(2)}!"); } Enum.TryParse <Employment>(metadata.Find <string>(1), out var employment); character.Metadata.Employment = employment; character.Metadata.EmploymentRole = 0; await character.Save(); return(null); })); EventSystem.Attach("job:employee:kicked", new AsyncEventCallback(async metadata => { var seed = metadata.Find <string>(0); var character = CharacterManager.GetModule().AvailableCharacters.First(self => self.Seed == seed); if (Cache.Character.Seed == character.Seed) { Cache.Player.ShowNotification("Du blev sparkad ifrån ditt jobb!"); } character.Metadata.Employment = Employment.Unemployed; character.Metadata.EmploymentRole = 0; await character.Save(); return(null); })); EventSystem.Attach("job:employment:update", new AsyncEventCallback(async metadata => { var seed = metadata.Find <string>(0); var character = CharacterManager.GetModule().AvailableCharacters.First(self => self.Seed == seed); character.Metadata.EmploymentRole = metadata.Find <int>(1); await character.Save(); return(null); })); Atlas.AttachNuiHandler("CLOSE_JOB_PANEL", new EventCallback(metadata => { API.SetNuiFocus(false, false); return(null); })); Atlas.AttachNuiHandler("KICK_EMPLOYEE", new AsyncEventCallback(async metadata => { var atlas = AtlasPlugin.Instance; var character = await EventSystem.Request <AtlasCharacter>("characters:fetchbyseed", metadata.Find <string>(0)); if (character == null) { return(null); } var user = await EventSystem.Request <AtlasUser>("user:fetch", character.Owner); if (user != null) { user.Send("job:employee:kicked", character.Seed); } else { character.Metadata.Employment = Employment.Unemployed; character.Metadata.EmploymentRole = 0; await character.Save(); } return(null); })); Atlas.AttachNuiHandler("EMPLOYEE_UPDATE", new AsyncEventCallback(async metadata => { var atlas = AtlasPlugin.Instance; var character = await EventSystem.Request <AtlasCharacter>("characters:fetchbyseed", metadata.Find <string>(0)); if (character == null) { return(null); } var user = await EventSystem.Request <AtlasUser>("user:fetch", character.Owner); if (user != null) { user.Send("job:employment:update", character.Seed, metadata.Find <int>(1)); } else { character.Metadata.EmploymentRole = metadata.Find <int>(1); await character.Save(); } return(null); })); Atlas.AttachNuiHandler("EMPLOYEE_HIRE", new AsyncEventCallback(async metadata => { var atlas = AtlasPlugin.Instance; var character = await EventSystem.Request <AtlasCharacter>("characters:fetchbyssn", metadata.Find <string>(0)); if (character == null) { return(null); } var user = await EventSystem.Request <AtlasUser>("user:fetch", character.Owner); if (user != null) { user.Send("job:employee:hire", character.Seed, metadata.Find <string>(1), metadata.Find <string>(2)); } else { Enum.TryParse <Employment>(metadata.Find <string>(1), out var employment); character.Metadata.Employment = employment; character.Metadata.EmploymentRole = 0; await character.Save(); } return(null); })); }
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 override void Begin() { EventSystem.Attach("billing:create", new AsyncEventCallback(async metadata => { using (var context = new StorageContext()) using (var transaction = context.BeginTransaction()) { context.Bills.AddOrUpdate(metadata.Find <Bill>(0)); await context.SaveChangesAsync(); transaction.Commit(); } return(null); })); EventSystem.Attach("billing:fetch", new EventCallback(metadata => { var seed = metadata.Find <string>(0); var bills = new List <Bill>(); using (var context = new StorageContext()) { var character = context.Characters.First(self => self.Seed == seed); var trimmed = character.Fullname.Trim().ToLower(); // ReSharper disable once LoopCanBeConvertedToQuery foreach (var bill in context.Bills) { if (bill.Sender.Individual.Trim().ToLower() == trimmed || bill.Receiver.Name.Trim().ToLower() == trimmed) { bills.Add(bill); } } } return(bills); })); EventSystem.Attach("billing:destroy", new AsyncEventCallback(async metadata => { var seed = metadata.Find <string>(0); using (var context = new StorageContext()) using (var transaction = context.BeginTransaction()) { context.Bills.Remove(context.Bills.First(self => self.Seed == seed)); await context.SaveChangesAsync(); transaction.Commit(); } return(null); })); EventSystem.Attach("billing:pay", new AsyncEventCallback(async metadata => { var seed = metadata.Find <string>(0); using (var context = new StorageContext()) using (var transaction = context.BeginTransaction()) { var bill = context.Bills.FirstOrDefault(self => self.Seed == seed); if (bill == null) { return(null); } bill.IsActive = false; context.Bills.AddOrUpdate(bill); await context.SaveChangesAsync(); transaction.Commit(); } return(null); })); }
public override void Begin() { EventSystem.Attach("user:login", new AsyncEventCallback(async metadata => { var player = new PlayerList()[metadata.Sender]; var steam = player.Identifiers.FirstOrDefault(self => self.StartsWith("steam:"))?.ToString(); var connectedBefore = true; using (var context = new StorageContext()) using (var transaction = context.BeginTransaction()) { var user = context.Users.FirstOrDefault(self => self.SteamId == steam); var connection = new Tuple <string, DateTime>(player.EndPoint, DateTime.Now); if (user == null) { user = new AtlasUser { Seed = Seed.Generate(), SteamId = steam, Role = Role.Member, ConnectionHistory = new List <Tuple <string, DateTime> >(), Metadata = new UserMetadata() }; connectedBefore = false; } user.Handle = int.Parse(player.Handle); user.LastName = player.Name; user.LatestActivity = DateTime.Now; var last = user.ConnectionHistory.LastOrDefault(); if (last == null || last.Item1 != connection.Item1) { user.ConnectionHistory.Add(connection); } context.Users.AddOrUpdate(user); await context.SaveChangesAsync(); transaction.Commit(); Logger.Info(connectedBefore ? $"[User] [{user.Seed}] [{user.LastName}] Has connected to the server ({connection.Item1})" : $"[User] [{steam}] [{player.Name}] Has connected for the first time ({connection.Item1})"); Atlas.ActiveUsers.Add(user); return(user); } })); EventSystem.Attach("user:save", new AsyncEventCallback(async metadata => { await Atlas.Lookup(metadata.Sender).Save(); return(null); })); EventSystem.Attach("user:fetch", new EventCallback(metadata => { var seed = metadata.Find <string>(0); return(Atlas.ActiveUsers.FirstOrDefault(self => self.Seed == seed)); })); EventSystem.Attach("user:postupdates", new EventCallback(metadata => { var user = metadata.Find <AtlasUser>(0); Atlas.ActiveUsers.RemoveAll(self => self.Seed == user.Seed); Atlas.ActiveUsers.Add(user); return(null); })); EventSystem.Attach("user:redirect", new EventCallback(metadata => { EventSystem.Send(metadata.Find <string>(1), metadata.Find <int>(0), metadata.AsEnumerable().Skip(2).ToArray()); return(null); })); Atlas.EventRegistry["playerDropped"] += new Action <Player, string>(OnUserDisconnect); }