string GetResultItemProperty(int index, string key) { string value; uint valLength = STRING_BUFFER_SIZE; if (!SteamInventory.GetResultItemProperty(currentResult, (uint)index, key, out value, ref valLength)) { return(null); } return(value); }
public static bool Prefix(ref SteamInventoryResultReady_t callback, ref SteamInventoryResult_t ___inventoryResult, ref Dictionary <ulong, DynamicEconDetails> ___dynamicInventoryDetails, TempSteamworksEconomy __instance) { bool inst = false; if ((___inventoryResult != SteamInventoryResult_t.Invalid) && (callback.m_handle == ___inventoryResult)) { ___dynamicInventoryDetails.Clear(); uint num12 = 0; if (SteamInventory.GetResultItems(___inventoryResult, null, ref num12) && (num12 > 0)) { SteamItemDetails_t[] _tArray3 = new SteamItemDetails_t[num12]; SteamInventory.GetResultItems(___inventoryResult, _tArray3, ref num12); for (uint i = 0; i < num12; i++) { string str7; string str8; uint num14 = 0x400; SteamInventory.GetResultItemProperty(___inventoryResult, i, "tags", out str7, ref num14); uint num15 = 0x400; SteamInventory.GetResultItemProperty(___inventoryResult, i, "dynamic_props", out str8, ref num15); DynamicEconDetails details2 = new DynamicEconDetails { tags = !string.IsNullOrEmpty(str7) ? str7 : string.Empty, dynamic_props = !string.IsNullOrEmpty(str8) ? str8 : string.Empty }; ___dynamicInventoryDetails.Add(_tArray3[i].m_itemId.m_SteamItemInstanceID, details2); } __instance.inventoryDetails = new List <SteamItemDetails_t>(_tArray3); inst = true; } if (!inst) { __instance.inventoryDetails = new List <SteamItemDetails_t>(); } //Add custom skins foreach (Sk t in SkinList) { __instance.inventoryDetails.Add(new SteamItemDetails_t() { m_iDefinition = new SteamItemDef_t(t.itemDef), m_itemId = new SteamItemInstanceID_t(t.instanceId), m_unFlags = 0, m_unQuantity = 1 }); } __instance.consolidateStacks(); __instance.onInventoryRefreshed?.Invoke(); __instance.isInventoryAvailable = true; Provider.isLoadingInventory = false; SteamInventory.DestroyResult(___inventoryResult); ___inventoryResult = SteamInventoryResult_t.Invalid; return(false); } return(true); }
// Token: 0x0600174B RID: 5963 RVA: 0x000862F8 File Offset: 0x000846F8 private void onInventoryResultReady(SteamInventoryResultReady_t callback) { if (this.appInfo.isDedicated) { SteamPending steamPending = null; for (int i = 0; i < Provider.pending.Count; i++) { if (Provider.pending[i].inventoryResult == callback.m_handle) { steamPending = Provider.pending[i]; break; } } if (steamPending == null) { return; } if (callback.m_result != EResult.k_EResultOK || !SteamGameServerInventory.CheckResultSteamID(callback.m_handle, steamPending.playerID.steamID)) { Debug.Log(string.Concat(new object[] { "inventory auth: ", callback.m_result, " ", SteamGameServerInventory.CheckResultSteamID(callback.m_handle, steamPending.playerID.steamID) })); Provider.reject(steamPending.playerID.steamID, ESteamRejection.AUTH_ECON_VERIFY); return; } uint num = 0u; if (SteamGameServerInventory.GetResultItems(callback.m_handle, null, ref num) && num > 0u) { steamPending.inventoryDetails = new SteamItemDetails_t[num]; SteamGameServerInventory.GetResultItems(callback.m_handle, steamPending.inventoryDetails, ref num); for (uint num2 = 0u; num2 < num; num2 += 1u) { uint num3 = 1024u; string text; SteamGameServerInventory.GetResultItemProperty(callback.m_handle, num2, "tags", out text, ref num3); uint num4 = 1024u; string text2; SteamGameServerInventory.GetResultItemProperty(callback.m_handle, num2, "dynamic_props", out text2, ref num4); DynamicEconDetails value = default(DynamicEconDetails); value.tags = ((!string.IsNullOrEmpty(text)) ? text : string.Empty); value.dynamic_props = ((!string.IsNullOrEmpty(text2)) ? text2 : string.Empty); steamPending.dynamicInventoryDetails.Add(steamPending.inventoryDetails[(int)((UIntPtr)num2)].m_itemId.m_SteamItemInstanceID, value); } } steamPending.inventoryDetailsReady(); } else if (this.promoResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.promoResult) { SteamInventory.DestroyResult(this.promoResult); this.promoResult = SteamInventoryResult_t.Invalid; } else if (this.exchangeResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.exchangeResult) { SteamItemDetails_t[] array = null; string tags = null; string dynamic_props = null; uint num5 = 0u; if (SteamInventory.GetResultItems(this.exchangeResult, null, ref num5) && num5 > 0u) { array = new SteamItemDetails_t[num5]; SteamInventory.GetResultItems(this.exchangeResult, array, ref num5); uint num6 = 1024u; SteamInventory.GetResultItemProperty(this.exchangeResult, num5 - 1u, "tags", out tags, ref num6); uint num7 = 1024u; SteamInventory.GetResultItemProperty(this.exchangeResult, num5 - 1u, "dynamic_props", out dynamic_props, ref num7); } Terminal.print("onInventoryResultReady: Exchange " + num5, null, Provider.STEAM_IC, Provider.STEAM_DC, true); if (array != null && num5 > 0u) { SteamItemDetails_t item = array[(int)((UIntPtr)(num5 - 1u))]; this.addLocalItem(item, tags, dynamic_props); if (this.onInventoryExchanged != null) { this.onInventoryExchanged(item.m_iDefinition.m_SteamItemDef, item.m_unQuantity, item.m_itemId.m_SteamItemInstanceID); } this.refreshInventory(); } SteamInventory.DestroyResult(this.exchangeResult); this.exchangeResult = SteamInventoryResult_t.Invalid; } else if (this.dropResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.dropResult) { SteamItemDetails_t[] array2 = null; string tags2 = null; string dynamic_props2 = null; uint num8 = 0u; if (SteamInventory.GetResultItems(this.dropResult, null, ref num8) && num8 > 0u) { array2 = new SteamItemDetails_t[num8]; SteamInventory.GetResultItems(this.dropResult, array2, ref num8); uint num9 = 1024u; SteamInventory.GetResultItemProperty(this.dropResult, 0u, "tags", out tags2, ref num9); uint num10 = 1024u; SteamInventory.GetResultItemProperty(this.dropResult, 0u, "dynamic_props", out dynamic_props2, ref num10); } Terminal.print("onInventoryResultReady: Drop " + num8, null, Provider.STEAM_IC, Provider.STEAM_DC, true); if (array2 != null && num8 > 0u) { SteamItemDetails_t item2 = array2[0]; this.addLocalItem(item2, tags2, dynamic_props2); if (this.onInventoryDropped != null) { this.onInventoryDropped(item2.m_iDefinition.m_SteamItemDef, item2.m_unQuantity, item2.m_itemId.m_SteamItemInstanceID); } this.refreshInventory(); } SteamInventory.DestroyResult(this.dropResult); this.dropResult = SteamInventoryResult_t.Invalid; } else if (this.inventoryResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.inventoryResult) { this.dynamicInventoryDetails.Clear(); uint num11 = 0u; if (SteamInventory.GetResultItems(this.inventoryResult, null, ref num11) && num11 > 0u) { this.inventoryDetails = new SteamItemDetails_t[num11]; SteamInventory.GetResultItems(this.inventoryResult, this.inventoryDetails, ref num11); for (uint num12 = 0u; num12 < num11; num12 += 1u) { uint num13 = 1024u; string text3; SteamInventory.GetResultItemProperty(this.inventoryResult, num12, "tags", out text3, ref num13); uint num14 = 1024u; string text4; SteamInventory.GetResultItemProperty(this.inventoryResult, num12, "dynamic_props", out text4, ref num14); DynamicEconDetails value2 = default(DynamicEconDetails); value2.tags = ((!string.IsNullOrEmpty(text3)) ? text3 : string.Empty); value2.dynamic_props = ((!string.IsNullOrEmpty(text4)) ? text4 : string.Empty); this.dynamicInventoryDetails.Add(this.inventoryDetails[(int)((UIntPtr)num12)].m_itemId.m_SteamItemInstanceID, value2); } } if (this.onInventoryRefreshed != null) { this.onInventoryRefreshed(); } this.isInventoryAvailable = true; Provider.isLoadingInventory = false; SteamInventory.DestroyResult(this.inventoryResult); this.inventoryResult = SteamInventoryResult_t.Invalid; } else if (this.commitResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.commitResult) { Debug.Log("Commit dynamic properties result: " + callback.m_result); SteamInventory.DestroyResult(this.commitResult); this.commitResult = SteamInventoryResult_t.Invalid; } }
public void RenderOnGUI() { GUILayout.BeginArea(new Rect(Screen.width - 200, 0, 200, Screen.height)); GUILayout.Label("Variables:"); GUILayout.Label("m_SteamInventoryResult: " + m_SteamInventoryResult); GUILayout.Label("m_SteamItemDetails: " + m_SteamItemDetails); GUILayout.Label("m_SteamItemDef: " + m_SteamItemDef); GUILayout.Label("m_SerializedBuffer: " + m_SerializedBuffer); GUILayout.EndArea(); GUILayout.BeginVertical("box"); m_ScrollPos = GUILayout.BeginScrollView(m_ScrollPos, GUILayout.Width(Screen.width - 215), GUILayout.Height(Screen.height - 33)); // INVENTORY ASYNC RESULT MANAGEMENT GUILayout.Label("GetResultStatus(m_SteamInventoryResult) : " + SteamInventory.GetResultStatus(m_SteamInventoryResult)); if (GUILayout.Button("GetResultItems(m_SteamInventoryResult, m_SteamItemDetails, ref OutItemsArraySize)")) { uint OutItemsArraySize = 0; bool ret = SteamInventory.GetResultItems(m_SteamInventoryResult, null, ref OutItemsArraySize); if (ret && OutItemsArraySize > 0) { m_SteamItemDetails = new SteamItemDetails_t[OutItemsArraySize]; ret = SteamInventory.GetResultItems(m_SteamInventoryResult, m_SteamItemDetails, ref OutItemsArraySize); print("SteamInventory.GetResultItems(" + m_SteamInventoryResult + ", m_SteamItemDetails, out OutItemsArraySize) - " + ret + " -- " + OutItemsArraySize); System.Text.StringBuilder test = new System.Text.StringBuilder(); for (int i = 0; i < OutItemsArraySize; ++i) { test.AppendFormat("{0} - {1} - {2} - {3} - {4}\n", i, m_SteamItemDetails[i].m_itemId, m_SteamItemDetails[i].m_iDefinition, m_SteamItemDetails[i].m_unQuantity, m_SteamItemDetails[i].m_unFlags); } print(test); } else { print("SteamInventory.GetResultItems(" + m_SteamInventoryResult + ", null, out OutItemsArraySize) - " + ret + " -- " + OutItemsArraySize); } } if (GUILayout.Button("GetResultItemProperty(m_SteamInventoryResult, 0, null, out ValueBuffer, ref ValueBufferSize)")) { string ValueBuffer; uint ValueBufferSize = 0; bool ret = SteamInventory.GetResultItemProperty(m_SteamInventoryResult, 0, null, out ValueBuffer, ref ValueBufferSize); if (ret) { ret = SteamInventory.GetResultItemProperty(m_SteamInventoryResult, 0, null, out ValueBuffer, ref ValueBufferSize); } print("SteamInventory.GetResultItemProperty(" + m_SteamInventoryResult + ", " + 0 + ", " + null + ", " + "out ValueBuffer" + ", " + "ref ValueBufferSize" + ") : " + ret + " -- " + ValueBuffer + " -- " + ValueBufferSize); } if (GUILayout.Button("GetResultTimestamp(m_SteamInventoryResult)")) { uint ret = SteamInventory.GetResultTimestamp(m_SteamInventoryResult); print("SteamInventory.GetResultTimestamp(" + m_SteamInventoryResult + ") : " + ret); } if (GUILayout.Button("CheckResultSteamID(m_SteamInventoryResult, SteamUser.GetSteamID())")) { bool ret = SteamInventory.CheckResultSteamID(m_SteamInventoryResult, SteamUser.GetSteamID()); print("SteamInventory.CheckResultSteamID(" + m_SteamInventoryResult + ", " + SteamUser.GetSteamID() + ") : " + ret); } if (GUILayout.Button("DestroyResult(m_SteamInventoryResult)")) { DestroyResult(); } // INVENTORY ASYNC QUERY if (GUILayout.Button("GetAllItems(out m_SteamInventoryResult)")) { bool ret = SteamInventory.GetAllItems(out m_SteamInventoryResult); print("SteamInventory.GetAllItems(" + "out m_SteamInventoryResult" + ") : " + ret + " -- " + m_SteamInventoryResult); } if (GUILayout.Button("GetItemsByID(out m_SteamInventoryResult, InstanceIDs, (uint)InstanceIDs.Length)")) { SteamItemInstanceID_t[] InstanceIDs = { (SteamItemInstanceID_t)0, (SteamItemInstanceID_t)1, }; bool ret = SteamInventory.GetItemsByID(out m_SteamInventoryResult, InstanceIDs, (uint)InstanceIDs.Length); print("SteamInventory.GetItemsByID(" + "out m_SteamInventoryResult" + ", " + InstanceIDs + ", " + (uint)InstanceIDs.Length + ") : " + ret + " -- " + m_SteamInventoryResult); } // RESULT SERIALIZATION AND AUTHENTICATION if (GUILayout.Button("SerializeResult(m_SteamInventoryResult, m_SerializedBuffer, out OutBufferSize)")) { uint OutBufferSize; bool ret = SteamInventory.SerializeResult(m_SteamInventoryResult, null, out OutBufferSize); if (ret) { m_SerializedBuffer = new byte[OutBufferSize]; ret = SteamInventory.SerializeResult(m_SteamInventoryResult, m_SerializedBuffer, out OutBufferSize); print("SteamInventory.SerializeResult(m_SteamInventoryResult, m_SerializedBuffer, out OutBufferSize) - " + ret + " -- " + OutBufferSize + " -- " + System.Text.Encoding.UTF8.GetString(m_SerializedBuffer, 0, m_SerializedBuffer.Length)); } else { print("SteamInventory.SerializeResult(m_SteamInventoryResult, null, out OutBufferSize) - " + ret + " -- " + OutBufferSize); } } if (GUILayout.Button("DeserializeResult(out m_SteamInventoryResult, m_SerializedBuffer, (uint)m_SerializedBuffer.Length)")) { bool ret = SteamInventory.DeserializeResult(out m_SteamInventoryResult, m_SerializedBuffer, (uint)m_SerializedBuffer.Length); print("SteamInventory.DeserializeResult(" + "out m_SteamInventoryResult" + ", " + m_SerializedBuffer + ", " + (uint)m_SerializedBuffer.Length + ") : " + ret + " -- " + m_SteamInventoryResult); } // INVENTORY ASYNC MODIFICATION if (GUILayout.Button("GenerateItems(out m_SteamInventoryResult, ArrayItemDefs, null, (uint)ArrayItemDefs.Length)")) { SteamItemDef_t[] ArrayItemDefs = { ESpaceWarItemDefIDs.k_SpaceWarItem_ShipDecoration1, ESpaceWarItemDefIDs.k_SpaceWarItem_ShipDecoration2 }; bool ret = SteamInventory.GenerateItems(out m_SteamInventoryResult, ArrayItemDefs, null, (uint)ArrayItemDefs.Length); print("SteamInventory.GenerateItems(" + "out m_SteamInventoryResult" + ", " + ArrayItemDefs + ", " + null + ", " + (uint)ArrayItemDefs.Length + ") : " + ret + " -- " + m_SteamInventoryResult); } if (GUILayout.Button("GrantPromoItems(out m_SteamInventoryResult)")) { bool ret = SteamInventory.GrantPromoItems(out m_SteamInventoryResult); print("SteamInventory.GrantPromoItems(" + "out m_SteamInventoryResult" + ") : " + ret + " -- " + m_SteamInventoryResult); } if (GUILayout.Button("AddPromoItem(out m_SteamInventoryResult, ESpaceWarItemDefIDs.k_SpaceWarItem_ShipWeapon1)")) { bool ret = SteamInventory.AddPromoItem(out m_SteamInventoryResult, ESpaceWarItemDefIDs.k_SpaceWarItem_ShipWeapon1); print("SteamInventory.AddPromoItem(" + "out m_SteamInventoryResult" + ", " + ESpaceWarItemDefIDs.k_SpaceWarItem_ShipWeapon1 + ") : " + ret + " -- " + m_SteamInventoryResult); } if (GUILayout.Button("AddPromoItems(out m_SteamInventoryResult, ArrayItemDefs, (uint)ArrayItemDefs.Length)")) { SteamItemDef_t[] ArrayItemDefs = { ESpaceWarItemDefIDs.k_SpaceWarItem_ShipWeapon1, ESpaceWarItemDefIDs.k_SpaceWarItem_ShipWeapon2 }; bool ret = SteamInventory.AddPromoItems(out m_SteamInventoryResult, ArrayItemDefs, (uint)ArrayItemDefs.Length); print("SteamInventory.AddPromoItems(" + "out m_SteamInventoryResult" + ", " + ArrayItemDefs + ", " + (uint)ArrayItemDefs.Length + ") : " + ret + " -- " + m_SteamInventoryResult); } if (GUILayout.Button("ConsumeItem(out m_SteamInventoryResult, m_SteamItemDetails[0].m_itemId, 1)")) { if (m_SteamItemDetails != null) { bool ret = SteamInventory.ConsumeItem(out m_SteamInventoryResult, m_SteamItemDetails[0].m_itemId, 1); print("SteamInventory.ConsumeItem(out m_SteamInventoryResult, " + m_SteamItemDetails[0].m_itemId + ", 1) - " + ret + " -- " + m_SteamInventoryResult); } } if (GUILayout.Button("ExchangeItems(TODO)")) { if (m_SteamItemDetails != null) { bool ret = SteamInventory.ExchangeItems(out m_SteamInventoryResult, null, null, 0, null, null, 0); // TODO print("SteamInventory.ExchangeItems(TODO) - " + ret + " -- " + m_SteamInventoryResult); } } if (GUILayout.Button("TransferItemQuantity(out m_SteamInventoryResult, m_SteamItemDetails[0].m_itemId, 1, SteamItemInstanceID_t.Invalid)")) { if (m_SteamItemDetails != null) { bool ret = SteamInventory.TransferItemQuantity(out m_SteamInventoryResult, m_SteamItemDetails[0].m_itemId, 1, SteamItemInstanceID_t.Invalid); print("SteamInventory.TransferItemQuantity(out m_SteamInventoryResult, " + m_SteamItemDetails[0].m_itemId + ", 1, SteamItemInstanceID_t.Invalid) - " + ret + " -- " + m_SteamInventoryResult); } } // TIMED DROPS AND PLAYTIME CREDIT if (GUILayout.Button("SendItemDropHeartbeat()")) { SteamInventory.SendItemDropHeartbeat(); print("SteamInventory.SendItemDropHeartbeat()"); } if (GUILayout.Button("TriggerItemDrop(out m_SteamInventoryResult, ESpaceWarItemDefIDs.k_SpaceWarItem_TimedDropList)")) { bool ret = SteamInventory.TriggerItemDrop(out m_SteamInventoryResult, ESpaceWarItemDefIDs.k_SpaceWarItem_TimedDropList); print("SteamInventory.TriggerItemDrop(" + "out m_SteamInventoryResult" + ", " + ESpaceWarItemDefIDs.k_SpaceWarItem_TimedDropList + ") : " + ret + " -- " + m_SteamInventoryResult); } // IN-GAME TRADING if (GUILayout.Button("TradeItems(TODO)")) { if (m_SteamItemDetails != null) { bool ret = SteamInventory.TradeItems(out m_SteamInventoryResult, SteamUser.GetSteamID(), null, null, 0, null, null, 0); // TODO... Difficult print("SteamInventory.TradeItems(TODO) - " + ret + " -- " + m_SteamInventoryResult); } } // ITEM DEFINITIONS if (GUILayout.Button("LoadItemDefinitions()")) { bool ret = SteamInventory.LoadItemDefinitions(); print("SteamInventory.LoadItemDefinitions() : " + ret); } if (GUILayout.Button("GetItemDefinitionIDs(ItemDefIDs, ref length)")) { uint length = 0; bool ret = SteamInventory.GetItemDefinitionIDs(null, ref length); if (ret) { m_SteamItemDef = new SteamItemDef_t[length]; ret = SteamInventory.GetItemDefinitionIDs(m_SteamItemDef, ref length); print("SteamInventory.GetItemDefinitionIDs(m_SteamItemDef, ref length) - " + ret + " -- " + length); } else { print("SteamInventory.GetItemDefinitionIDs(null, ref length) - " + ret + " -- " + length); } } if (GUILayout.Button("GetItemDefinitionProperty(ESpaceWarItemDefIDs.k_SpaceWarItem_ShipDecoration1, null, out ValueBuffer, ref length)")) { uint length = 2048; string ValueBuffer; bool ret = SteamInventory.GetItemDefinitionProperty(ESpaceWarItemDefIDs.k_SpaceWarItem_ShipDecoration1, null, out ValueBuffer, ref length); print("SteamInventory.GetItemDefinitionProperty(" + ESpaceWarItemDefIDs.k_SpaceWarItem_ShipDecoration1 + ", " + null + ", " + "out ValueBuffer" + ", " + "ref length" + ") : " + ret + " -- " + ValueBuffer + " -- " + length); } if (GUILayout.Button("RequestEligiblePromoItemDefinitionsIDs(SteamUser.GetSteamID())")) { SteamAPICall_t handle = SteamInventory.RequestEligiblePromoItemDefinitionsIDs(SteamUser.GetSteamID()); OnSteamInventoryEligiblePromoItemDefIDsCallResult.Set(handle); print("SteamInventory.RequestEligiblePromoItemDefinitionsIDs(" + SteamUser.GetSteamID() + ") : " + handle); } //SteamInventory.GetEligiblePromoItemDefinitionIDs() // Should be handled within the SteamInventoryEligiblePromoItemDefIDs_t CallResult! //SteamInventory.StartPurchase() // TODO //SteamInventory.RequestPrices() // TODO //SteamInventory.GetNumItemsWithPrices() // TODO //SteamInventory.GetItemsWithPrices() // TODO //SteamInventory.GetItemPrice() // TODO //SteamInventory.StartUpdateProperties() // TODO //SteamInventory.RemoveProperty() // TODO //SteamInventory.SetProperty() // TODO //SteamInventory.SetProperty() // TODO //SteamInventory.SetProperty() // TODO //SteamInventory.SetProperty() // TODO //SteamInventory.SubmitUpdateProperties() // TODO GUILayout.EndScrollView(); GUILayout.EndVertical(); }