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()); }
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); } }
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); }
// 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); }
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); } }
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);