public void Commit() { var storage = NetworkPackage.GetModule().GetLoad <Storage>(Seed); storage.Update(Storage); storage.Commit(); }
public override void Begin() { NetworkPackage.GetModule().Imports += (package, index) => { if (index != "World.Items.Dropped") { return; } Messages = package.GetLoad <List <ActionMessage> >("Ingame.Action.Messages").Get() ?? new List <ActionMessage>(); }; }
public override async void Begin(Job job) { await Session.Loading(); var package = NetworkPackage.GetModule(); Seed = $"storage::{job.Attachment.ToString().ToLower()}"; Storage = await EventSystem.GetModule().Request <Storage>("storage:fetch", Seed) ?? (package.GetLoad <Storage>(Seed).Get() ?? new Storage { Seed = Seed, Owner = job.Attachment.ToString().ToLower(), Metadata = new StorageMetadata { Items = new List <InventoryItem>() } }); var inventory = new JobStorageInventory(new InventoryContainerBase { Seed = Seed, Name = $"Förråd ({job.Label})", SlotAmount = 100, Slots = Storage.Metadata.Items.OrderBy(self => self.Slot).ToArray() }, this); package.Imports += (__package, index) => { if (index != "World.Items.Dropped") { return; } var storage = package.GetLoad <Storage>(Seed).Get(); if (storage == null) { return; } Storage = storage; inventory.Slots = storage.Metadata.Items.OrderBy(self => self.Slot).ToArray(); inventory.Commit(); }; InventoryManager.GetModule().RegisterContainer(inventory); Logger.Info( $"[Job] [{job.Attachment.ToString()}] Fetched {Storage.Metadata.Items.Count} item(s) in `{Seed}` from the database."); }
public void Commit() { NetworkPackage.GetModule() .GetLoad <List <ActionMessage> >("Ingame.Action.Messages") .UpdateAndCommit(Messages); }
public override async void Begin() { API.NetworkClearVoiceChannel(); API.NetworkSetTalkerProximity(0.1f); API.NetworkSetFriendlyFireOption(true); API.SetCanAttackFriendly(API.PlayerPedId(), true, true); API.StopPlayerSwitch(); var sound = new SoundSystem(); var handle = API.GetPlayerServerId(API.PlayerId()); sound.Disable(); await Game.Player.ChangeModel(new Model(API.GetHashKey("mp_m_freemode_01"))); var ped = Game.PlayerPed.Handle; API.RemoveAllPedWeapons(ped, false); API.ClearPedTasksImmediately(ped); API.ClearPlayerWantedLevel(API.PlayerId()); API.SetEntityVisible(ped, true, true); API.SetEntityHealth(ped, API.GetEntityMaxHealth(ped)); API.NetworkResurrectLocalPlayer(0, 0, 70f, 0f, true, false); API.FreezeEntityPosition(ped, false); API.SendLoadingScreenMessage(new JsonBuilder().Add("eventName", "UPDATE_STATUS").Add("status", "Laddar in användare").Build()); var transition = new CharacterManager.LoadTransition(); var user = await EventSystem.Request <AtlasUser>("user:login"); var payloads = new Dictionary <string, string>(); try { payloads = JsonConvert.DeserializeObject <Dictionary <string, string> >( (await EventSystem.Request <object>("network:package:latest")).ToString()); } catch (Exception) { // Ignored } var package = NetworkPackage.GetModule(); foreach (var payload in payloads) { package.Payloads[payload.Key] = JsonConvert.DeserializeObject <NetworkPayload <object> >(payload.Value); } Logger.Info($"[User] [{user.Seed}] Creating local player..."); Atlas.Local = new AtlasPlayer(user.SteamId, new AtlasEntity(ped)) { Handle = handle, Name = user.LastName, User = user }; var voice = VoiceChat.GetModule(); voice.Range = 0f; voice.Commit(); Atlas.AttachTickHandlers(voice); Atlas.Local.DisableHud(); Logger.Info( $"[User] [{user.Seed}] Logged into the server with the role `{user.Role.ToString()}` and metadata: {JsonConvert.SerializeObject(user.Metadata)}"); #pragma warning disable 4014 transition.Up(Atlas.Local); #pragma warning restore 4014 // Synchronize characters with the server-side, that is fetching from the database. await CharacterManager.GetModule().Synchronize(); }
public override async void Begin(Job job) { var model = new Model(MerchantModel); if (MerchantModel != 0 && MerchantPosition != null) { var merchantId = $"merchant::{job.Attachment.ToString().ToLower()}"; var package = NetworkPackage.GetModule(); if (Session.IsSpawnHost() && !API.NetworkDoesNetworkIdExist(package.GetLoad <int>(merchantId).Get())) { await model.Request(5000); var ped = API.CreatePed(6, (uint)model.Hash, MerchantPosition.X, MerchantPosition.Y, MerchantPosition.Z, MerchantPosition.Heading, true, false); Merchant = new Merchant(ped) { Important = true, Position = MerchantPosition }; package.GetLoad <int>(merchantId).UpdateAndCommit(Merchant.NetworkModule.GetId()); await SafeTeleport.Teleport(ped, MerchantPosition); Merchant.Movable = false; } else { while ((Merchant = MerchantManager.GetModule() .GetMerchantById(package.GetLoad <int>(merchantId).Get())) == null) { await BaseScript.Delay(1000); } } } await Session.Loading(); var player = Cache.Player; var character = Cache.Character; var marker = new Marker(Armory) { Message = "Tryck ~INPUT_CONTEXT~ för att komma åt förrådet", Color = Color.Transparent, Condition = self => character.Metadata.Employment == job.Attachment }; marker.Callback += async() => { if (MerchantPosition != null && Merchant != null) { await player.Entity.AnimationQueue.PlayDirectInQueue(new AnimationBuilder() .Select("gestures@m@standing@casual", "gesture_hello") .AtPosition(Armory) ); } Callback?.Invoke(); }; marker.Show(); Atlas.AttachTickHandler(OnTick); }
public void Register() { var package = NetworkPackage.GetModule(); var manager = InventoryManager.GetModule(); manager.StateChanged += state => { if (state != InventoryStateChange.Show) { return; } Rework(); }; Update += (item, type) => { if (item == null) { return; } if (type == InventoryUpdateType.Add) { var player = Cache.Player; if (item.Seed != "__none") { DroppedWorldItems.Add(new InventoryItemDroppedAdapter(Clipboard.Process(item), Clipboard.Process(player.Entity.Position))); } } else if (type == InventoryUpdateType.Remove) { DroppedWorldItems.Where(self => self.Item.Seed == item.Seed).ToList() .ForEach(self => self.Destroy()); DroppedWorldItems.RemoveAll(self => self.Item.Seed == item.Seed); } var load = package.GetLoad <List <InventoryItemDroppedAdapter> >("World.Items.Dropped"); load.Update(DroppedWorldItems); load.Commit(); }; package.Imports += (__package, index) => { if (index != "World.Items.Dropped") { return; } var load = package.GetLoad <List <InventoryItemDroppedAdapter> >("World.Items.Dropped").Get() ?? new List <InventoryItemDroppedAdapter>(); foreach (var item in load.Where(self => DroppedWorldItems.FirstOrDefault(adapter => self.Item.Seed == adapter.Item.Seed) == null)) { item.Activate(); } foreach (var item in DroppedWorldItems.Where(self => load.FirstOrDefault(adapter => self.Item.Seed == adapter.Item.Seed) == null)) { item.Destroy(); } DroppedWorldItems = load; Rework(); }; }