Exemple #1
0
        public byte[] GetLoadout(byte[] data)
        {
            var inputStream = new MemoryStream(data);
            var steamId     = Encoding.UTF8.GetString(Convert.FromBase64String(StringProxy.Deserialize(inputStream)));

            LoadoutView instance = null;

            if (loadoutData.ContainsKey(steamId) && loadoutData[steamId] != null)
            {
                instance = loadoutData[steamId];
            }
            else
            {
                instance = new LoadoutView {
                    MeleeWeapon = 1,
                    Weapon1     = 12
                };

                loadoutData[steamId] = instance;
                UpdateInventoryData();
            }

            var outputStream = new MemoryStream();

            LoadoutViewProxy.Serialize(outputStream, instance);

            return(outputStream.ToArray());
        }
Exemple #2
0
        public MemberView NewMember()
        {
            var cmid          = Interlocked.Increment(ref _nextCmid);
            var publicProfile = new PublicProfileView(
                cmid,
                "Player",
                MemberAccessLevel.Default,
                false,
                DateTime.UtcNow,
                EmailAddressStatus.Unverified,
                "-1"
                );

            var memberWallet = new MemberWalletView(
                cmid,
                _ctx.Configuration.Wallet.StartingCredits,
                _ctx.Configuration.Wallet.StartingPoints,
                DateTime.MaxValue,
                DateTime.MaxValue
                );

            var memberInventories = new List <ItemInventoryView>
            {
                new ItemInventoryView(1, null, -1, cmid),
                new ItemInventoryView(12, null, -1, cmid)
            };

            //TODO: Create helper function for conversion of this stuff.
            var memberItems = new List <int>();

            for (int i = 0; i < memberInventories.Count; i++)
            {
                memberItems.Add(memberInventories[i].ItemId);
            }

            var memberLoadout = new LoadoutView
            {
                Cmid        = cmid,
                MeleeWeapon = 1,
                Weapon1     = 12
            };

            var member = new MemberView(
                publicProfile,
                memberWallet,
                memberItems
                );

            // Save the member.
            Db.Profiles.Save(publicProfile);
            Db.Wallets.Save(memberWallet);
            Db.Inventories.Save(cmid, memberInventories);
            Db.Loadouts.Save(memberLoadout);

            Db.SetNextCmid(_nextCmid);

            return(member);
        }
 // Token: 0x0600142F RID: 5167 RVA: 0x00074394 File Offset: 0x00072594
 public void UpdateLoadout(LoadoutView view)
 {
     if (view.Head == 0)
     {
         this.Loadout.SetSlot(global::LoadoutSlotType.GearHead, Singleton <ItemManager> .Instance.GetItemInShop(1084));
     }
     else
     {
         this.Loadout.SetSlot(global::LoadoutSlotType.GearHead, Singleton <ItemManager> .Instance.GetItemInShop(view.Head));
     }
     if (view.Gloves == 0)
     {
         this.Loadout.SetSlot(global::LoadoutSlotType.GearGloves, Singleton <ItemManager> .Instance.GetItemInShop(1086));
     }
     else
     {
         this.Loadout.SetSlot(global::LoadoutSlotType.GearGloves, Singleton <ItemManager> .Instance.GetItemInShop(view.Gloves));
     }
     if (view.UpperBody == 0)
     {
         this.Loadout.SetSlot(global::LoadoutSlotType.GearUpperBody, Singleton <ItemManager> .Instance.GetItemInShop(1087));
     }
     else
     {
         this.Loadout.SetSlot(global::LoadoutSlotType.GearUpperBody, Singleton <ItemManager> .Instance.GetItemInShop(view.UpperBody));
     }
     if (view.LowerBody == 0)
     {
         this.Loadout.SetSlot(global::LoadoutSlotType.GearLowerBody, Singleton <ItemManager> .Instance.GetItemInShop(1088));
     }
     else
     {
         this.Loadout.SetSlot(global::LoadoutSlotType.GearLowerBody, Singleton <ItemManager> .Instance.GetItemInShop(view.LowerBody));
     }
     if (view.Boots == 0)
     {
         this.Loadout.SetSlot(global::LoadoutSlotType.GearBoots, Singleton <ItemManager> .Instance.GetItemInShop(1089));
     }
     else
     {
         this.Loadout.SetSlot(global::LoadoutSlotType.GearBoots, Singleton <ItemManager> .Instance.GetItemInShop(view.Boots));
     }
     this.Loadout.SetSlot(global::LoadoutSlotType.GearFace, Singleton <ItemManager> .Instance.GetItemInShop(view.Face));
     this.Loadout.SetSlot(global::LoadoutSlotType.GearHolo, Singleton <ItemManager> .Instance.GetItemInShop(view.Webbing));
     this.Loadout.SetSlot(global::LoadoutSlotType.WeaponMelee, Singleton <ItemManager> .Instance.GetItemInShop(view.MeleeWeapon));
     this.Loadout.SetSlot(global::LoadoutSlotType.WeaponPrimary, Singleton <ItemManager> .Instance.GetItemInShop(view.Weapon1));
     this.Loadout.SetSlot(global::LoadoutSlotType.WeaponSecondary, Singleton <ItemManager> .Instance.GetItemInShop(view.Weapon2));
     this.Loadout.SetSlot(global::LoadoutSlotType.WeaponTertiary, Singleton <ItemManager> .Instance.GetItemInShop(view.Weapon3));
     this.Loadout.SetSlot(global::LoadoutSlotType.QuickUseItem1, Singleton <ItemManager> .Instance.GetItemInShop(view.QuickItem1));
     this.Loadout.SetSlot(global::LoadoutSlotType.QuickUseItem2, Singleton <ItemManager> .Instance.GetItemInShop(view.QuickItem2));
     this.Loadout.SetSlot(global::LoadoutSlotType.QuickUseItem3, Singleton <ItemManager> .Instance.GetItemInShop(view.QuickItem3));
     this.Loadout.SetSlot(global::LoadoutSlotType.FunctionalItem1, Singleton <ItemManager> .Instance.GetItemInShop(view.FunctionalItem1));
     this.Loadout.SetSlot(global::LoadoutSlotType.FunctionalItem2, Singleton <ItemManager> .Instance.GetItemInShop(view.FunctionalItem2));
     this.Loadout.SetSlot(global::LoadoutSlotType.FunctionalItem3, Singleton <ItemManager> .Instance.GetItemInShop(view.FunctionalItem3));
     this.UpdateArmor();
 }
        public static void Serialize(Stream stream, LoadoutView instance)
        {
            int mask = 0;

            using (var bytes = new MemoryStream())
            {
                Int32Proxy.Serialize(bytes, instance.Backpack);
                Int32Proxy.Serialize(bytes, instance.Boots);
                Int32Proxy.Serialize(bytes, instance.Cmid);
                Int32Proxy.Serialize(bytes, instance.Face);
                Int32Proxy.Serialize(bytes, instance.FunctionalItem1);
                Int32Proxy.Serialize(bytes, instance.FunctionalItem2);
                Int32Proxy.Serialize(bytes, instance.FunctionalItem3);
                Int32Proxy.Serialize(bytes, instance.Gloves);
                Int32Proxy.Serialize(bytes, instance.Head);
                Int32Proxy.Serialize(bytes, instance.LoadoutId);
                Int32Proxy.Serialize(bytes, instance.LowerBody);
                Int32Proxy.Serialize(bytes, instance.MeleeWeapon);
                Int32Proxy.Serialize(bytes, instance.QuickItem1);
                Int32Proxy.Serialize(bytes, instance.QuickItem2);
                Int32Proxy.Serialize(bytes, instance.QuickItem3);

                if (instance.SkinColor != null)
                {
                    StringProxy.Serialize(bytes, instance.SkinColor);
                }
                else
                {
                    mask |= 1;
                }

                EnumProxy <AvatarType> .Serialize(bytes, instance.Type);

                Int32Proxy.Serialize(bytes, instance.UpperBody);
                Int32Proxy.Serialize(bytes, instance.Weapon1);
                Int32Proxy.Serialize(bytes, instance.Weapon1Mod1);
                Int32Proxy.Serialize(bytes, instance.Weapon1Mod2);
                Int32Proxy.Serialize(bytes, instance.Weapon1Mod3);
                Int32Proxy.Serialize(bytes, instance.Weapon2);
                Int32Proxy.Serialize(bytes, instance.Weapon2Mod1);
                Int32Proxy.Serialize(bytes, instance.Weapon2Mod2);
                Int32Proxy.Serialize(bytes, instance.Weapon2Mod3);
                Int32Proxy.Serialize(bytes, instance.Weapon3);
                Int32Proxy.Serialize(bytes, instance.Weapon3Mod1);
                Int32Proxy.Serialize(bytes, instance.Weapon3Mod2);
                Int32Proxy.Serialize(bytes, instance.Weapon3Mod3);
                Int32Proxy.Serialize(bytes, instance.Webbing);
                Int32Proxy.Serialize(stream, ~mask);
                bytes.WriteTo(stream);
            }
        }
Exemple #5
0
        public override MemberOperationResult OnSetLoaduout(string authToken, LoadoutView loadoutView)
        {
            var member = Context.Users.GetMember(authToken);

            if (member == null)
            {
                Log.Error("An unidentified AuthToken was passed.");
                return(MemberOperationResult.InvalidData);
            }

            // Save straight up because we don't really care if the client is hacking.
            // Items at least.
            Context.Users.Db.Loadouts.Save(loadoutView);
            return(MemberOperationResult.Ok);
        }
        public static LoadoutView Deserialize(Stream bytes)
        {
            int mask = Int32Proxy.Deserialize(bytes);
            var view = new LoadoutView();

            view.Backpack        = Int32Proxy.Deserialize(bytes);
            view.Boots           = Int32Proxy.Deserialize(bytes);
            view.Cmid            = Int32Proxy.Deserialize(bytes);
            view.Face            = Int32Proxy.Deserialize(bytes);
            view.FunctionalItem1 = Int32Proxy.Deserialize(bytes);
            view.FunctionalItem2 = Int32Proxy.Deserialize(bytes);
            view.FunctionalItem3 = Int32Proxy.Deserialize(bytes);
            view.Gloves          = Int32Proxy.Deserialize(bytes);
            view.Head            = Int32Proxy.Deserialize(bytes);
            view.LoadoutId       = Int32Proxy.Deserialize(bytes);
            view.LowerBody       = Int32Proxy.Deserialize(bytes);
            view.MeleeWeapon     = Int32Proxy.Deserialize(bytes);
            view.QuickItem1      = Int32Proxy.Deserialize(bytes);
            view.QuickItem2      = Int32Proxy.Deserialize(bytes);
            view.QuickItem3      = Int32Proxy.Deserialize(bytes);

            if ((mask & 1) != 0)
            {
                view.SkinColor = StringProxy.Deserialize(bytes);
            }

            view.Type = EnumProxy <AvatarType> .Deserialize(bytes);

            view.UpperBody   = Int32Proxy.Deserialize(bytes);
            view.Weapon1     = Int32Proxy.Deserialize(bytes);
            view.Weapon1Mod1 = Int32Proxy.Deserialize(bytes);
            view.Weapon1Mod2 = Int32Proxy.Deserialize(bytes);
            view.Weapon1Mod3 = Int32Proxy.Deserialize(bytes);
            view.Weapon2     = Int32Proxy.Deserialize(bytes);
            view.Weapon2Mod1 = Int32Proxy.Deserialize(bytes);
            view.Weapon2Mod2 = Int32Proxy.Deserialize(bytes);
            view.Weapon2Mod3 = Int32Proxy.Deserialize(bytes);
            view.Weapon3     = Int32Proxy.Deserialize(bytes);
            view.Weapon3Mod1 = Int32Proxy.Deserialize(bytes);
            view.Weapon3Mod2 = Int32Proxy.Deserialize(bytes);
            view.Weapon3Mod3 = Int32Proxy.Deserialize(bytes);
            view.Webbing     = Int32Proxy.Deserialize(bytes);

            return(view);
        }
Exemple #7
0
        // Token: 0x060011F8 RID: 4600 RVA: 0x0001DFD0 File Offset: 0x0001C1D0
        public static Coroutine SetLoadout(string authToken, LoadoutView loadoutView, Action <MemberOperationResult> callback, Action <Exception> handler)
        {
            Coroutine result;

            using (MemoryStream memoryStream = new MemoryStream())
            {
                StringProxy.Serialize(memoryStream, authToken);
                LoadoutViewProxy.Serialize(memoryStream, loadoutView);
                result = MonoInstance.Mono.StartCoroutine(SoapClient.MakeRequest("IUserWebServiceContract", "UserWebService", "SetLoadout", memoryStream.ToArray(), delegate(byte[] data)
                {
                    if (callback != null)
                    {
                        callback(EnumProxy <MemberOperationResult> .Deserialize(new MemoryStream(data)));
                    }
                }, handler));
            }
            return(result);
        }
Exemple #8
0
        public void Save(LoadoutView view)
        {
            if (view == null)
            {
                throw new ArgumentNullException(nameof(view));
            }
            var cmid = view.Cmid;

            if (cmid <= 0)
            {
                throw new ArgumentException("CMID must be greater than 0.");
            }

            var path = Path.Combine(ROOT_DIR, cmid + ".json");
            var json = JsonConvert.SerializeObject(view);

            File.WriteAllText(path, json);
        }
        byte[] IUserWebServiceContract.GetLoadout(byte[] data)
        {
            try
            {
                using (var bytes = new MemoryStream(data))
                {
                    var authToken = StringProxy.Deserialize(bytes);

                    LoadoutView view = OnGetLoadout(authToken);
                    using (var outBytes = new MemoryStream())
                    {
                        LoadoutViewProxy.Serialize(outBytes, view);
                        return(outBytes.ToArray());
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error("Unable to handle GetLoadout request:");
                Log.Error(ex);
                return(null);
            }
        }
Exemple #10
0
 public void CheckLoadoutForExpiredItems(LoadoutView view)
 {
     view = new LoadoutView(view.LoadoutId, (!IsExpired(view.Backpack, "Backpack")) ? view.Backpack : 0, (!IsExpired(view.Boots, "Boots")) ? view.Boots : 0, view.Cmid, (!IsExpired(view.Face, "Face")) ? view.Face : 0, (!IsExpired(view.FunctionalItem1, "FunctionalItem1")) ? view.FunctionalItem1 : 0, (!IsExpired(view.FunctionalItem2, "FunctionalItem2")) ? view.FunctionalItem2 : 0, (!IsExpired(view.FunctionalItem3, "FunctionalItem3")) ? view.FunctionalItem3 : 0, (!IsExpired(view.Gloves, "Gloves")) ? view.Gloves : 0, (!IsExpired(view.Head, "Head")) ? view.Head : 0, (!IsExpired(view.LowerBody, "LowerBody")) ? view.LowerBody : 0, (!IsExpired(view.MeleeWeapon, "MeleeWeapon")) ? view.MeleeWeapon : 0, (!IsExpired(view.QuickItem1, "QuickItem1")) ? view.QuickItem1 : 0, (!IsExpired(view.QuickItem2, "QuickItem2")) ? view.QuickItem2 : 0, (!IsExpired(view.QuickItem3, "QuickItem3")) ? view.QuickItem3 : 0, view.Type, (!IsExpired(view.UpperBody, "UpperBody")) ? view.UpperBody : 0, (!IsExpired(view.Weapon1, "Weapon1")) ? view.Weapon1 : 0, (!IsExpired(view.Weapon1Mod1, "Weapon1Mod1")) ? view.Weapon1Mod1 : 0, (!IsExpired(view.Weapon1Mod2, "Weapon1Mod2")) ? view.Weapon1Mod2 : 0, (!IsExpired(view.Weapon1Mod3, "Weapon1Mod3")) ? view.Weapon1Mod3 : 0, (!IsExpired(view.Weapon2, "Weapon2")) ? view.Weapon2 : 0, (!IsExpired(view.Weapon2Mod1, "Weapon2Mod1")) ? view.Weapon2Mod1 : 0, (!IsExpired(view.Weapon2Mod2, "Weapon2Mod2")) ? view.Weapon2Mod2 : 0, (!IsExpired(view.Weapon2Mod3, "Weapon2Mod3")) ? view.Weapon2Mod3 : 0, (!IsExpired(view.Weapon3, "Weapon3")) ? view.Weapon3 : 0, (!IsExpired(view.Weapon3Mod1, "Weapon3Mod1")) ? view.Weapon3Mod1 : 0, (!IsExpired(view.Weapon3Mod2, "Weapon3Mod2")) ? view.Weapon3Mod2 : 0, (!IsExpired(view.Weapon3Mod3, "Weapon3Mod3")) ? view.Weapon3Mod3 : 0, (!IsExpired(view.Webbing, "Webbing")) ? view.Webbing : 0, view.SkinColor);
 }
 public abstract MemberOperationResult OnSetLoaduout(string authToken, LoadoutView loadoutView);