Dr. McKay Posted December 6, 2016 Author Report Posted December 6, 2016 You must use assetid. You can't use classid or instanceid when sending a trade offer.
tchosniper Posted December 7, 2016 Report Posted December 7, 2016 Okay thanks, and can I ask you why currencies say undefined?
Dr. McKay Posted December 7, 2016 Author Report Posted December 7, 2016 "Currencies" are a weird thing that I don't think anyone except Spiral Knights uses.
Selectah Posted March 9, 2017 Report Posted March 9, 2017 (edited) So there isn't any easy way to link an item the bot received to the original owner? In my project we may need to give items back to the user. If the items can change their names and their 5 IDs after a trade or something, we'll have to figure out a guaranteed way to make sure that we will always know who were the owners of the items, and this sounds too much difficult... Can anyone here help me with this? The trade receipt page contains the new item data. If you're using node-steam-tradeoffer-manager, you only need to use offer.getReceivedItems. Hello, i have the same question. The use case is: 1. Webuser set prices for items and requests API to deposit them; i.assetid i.market_name i.classid i.instanceid9400869287 Falchion Case 991959905 09400869231 Falchion Case 991959905 09400869172 Falchion Case 991959905 09400869102 Falchion Case 991959905 0 2. API saves items and sends trade offer beetween webuser and trade bot;3. Trade bot accepts the offer;4. At this point i have to set correct prices for received items, but i can't match saved and received items because they are totally identical except the assetid property. i.assetid i.market_name i.classid i.instanceid9401413793 Falchion Case 991959905 09401413749 Falchion Case 991959905 09401413842 Falchion Case 991959905 09401413881 Falchion Case 991959905 0 Please let me know If you are have any approaches to solve this. Thank you. Edited March 10, 2017 by Selectah
Markcreator Posted August 9, 2017 Report Posted August 9, 2017 Thank you for this helpful thread.I do have a question though; you mentioned that an asset id will be unique in an app in a specific context, but will (new) asset id's caused by new or traded items -always- be different from any asset id that has ever existed within the app and context, regardless of which user's inventory it's in? This worries me because I'm not sure whether I should account for duplicate asset id's over time or across different inventories when old asset id's might get reused, or will that never happen and will they always be unique no matter how many transactions happen within the app across the whole of Steam? Thank you in advance.
Dr. McKay Posted August 9, 2017 Author Report Posted August 9, 2017 There is no guarantee that if an assetid changes, it won't change to an assetid that has been previously assigned to an item. They are only guaranteed unique at one point in time. That said, for Valve games, when an assetid changes it will only increase and will never be an ID previously assigned. Markcreator 1
Markcreator Posted August 9, 2017 Report Posted August 9, 2017 So, just to be sure, Steam only guarantees an assetid to be unique at any specific given point in time rather than over the entire existence of the app's global inventory, but the implementation of the system that Valve used for their own games guarantees that assetid's are assigned through incrementing and thus it is reasonable to assume that those specifically will always be unique?
Redpanda Posted October 9, 2017 Report Posted October 9, 2017 I need some help, I am trying to find a special knife pattern in CSGO called sapphires, ruby and black pearl. These special patterns are all in the Doppler series but, there is also Phase 1-4 pattern which isn't what I want. Is there a chance I could directly search up the special patterns on the steam market?
Einar_100 Posted March 21, 2018 Report Posted March 21, 2018 Hi, First many thanks for the explanation of the different entitities in the Steam Asset API. It was very confusing to me before reading your post. Now, at least, I'm able to ask a question :-). This one is about the Asset Classes. Do have any thoughts about how an Inventory provider should handle these classes when mapping a number of them to a single description returned in the GetAssetClassInfo response? To me it feels like constructing an apple from a pear. How can one interpret an AssetClass? Is an Asset aggregated by a number of AssetClasses? It also seems strange that these classes are cached in Steam. What information is cached then? Only their ids? Because the Steam Asset API don't let Steam know anything about an individual Asset Class information despite the GetAssetClassInfo request (since it only returns the overall Asset information). Maybe I completely missunderstood this?!Best regards, Einar
Dr. McKay Posted March 21, 2018 Author Report Posted March 21, 2018 Hi, First many thanks for the explanation of the different entitities in the Steam Asset API. It was very confusing to me before reading your post. Now, at least, I'm able to ask a question :-). This one is about the Asset Classes. Do have any thoughts about how an Inventory provider should handle these classes when mapping a number of them to a single description returned in the GetAssetClassInfo response? To me it feels like constructing an apple from a pear. How can one interpret an AssetClass? Is an Asset aggregated by a number of AssetClasses? It also seems strange that these classes are cached in Steam. What information is cached then? Only their ids? Because the Steam Asset API don't let Steam know anything about an individual Asset Class information despite the GetAssetClassInfo request (since it only returns the overall Asset information). Maybe I completely missunderstood this?!Best regards, Einar Assuming you're talking about what the Steamworks documentation refers to as an "asset class" and that by "inventory provider" you mean an item server backend, which is kind of outside the scope of this thread but I'll answer anyway. Asset classes basically describe the "nature" of an item, and you define them yourself. For example, in Valve games each item has a definition index (defindex), which is a class. def_index: 1234But each item can also have special attributes, for example a StatTrak CS:GO item. So you might have stattrak: trueThis means that each item/asset has multiple asset classes. You expose a class to Steam for every kind of attribute that changes how the item is rendered, so you end up with basically a list of display-affecting attributes. You could read the above as "this item has def_index 1234 and it is a stattrak item". Then Steam calls GetAssetClassInfo with that listing of classes and expects you to return a proper description, which gets cached indefinitely for that set of classes. So that means that your set of classes for a specific item needs to include all the data necessary to build a comprehensive description. The purpose of asset classes and descriptions is to decouple the display information from the actual asset. For example, every CS:GO Case Key is completely identical so there's no reason to store all the display information with each individual item. So instead the economy server requests the list of classes for the assetid from the item server, which replies with a list of classes that the economy server has already seen. Thus the econ server knows that it's seen this kind of item before and doesn't need to request display information.
Einar_100 Posted March 22, 2018 Report Posted March 22, 2018 Assuming you're talking about what the Steamworks documentation refers to as an "asset class" and that by "inventory provider" you mean an item server backend, which is kind of outside the scope of this thread but I'll answer anyway. Asset classes basically describe the "nature" of an item, and you define them yourself. For example, in Valve games each item has a definition index (defindex), which is a class. def_index: 1234But each item can also have special attributes, for example a StatTrak CS:GO item. So you might have stattrak: trueThis means that each item/asset has multiple asset classes. You expose a class to Steam for every kind of attribute that changes how the item is rendered, so you end up with basically a list of display-affecting attributes. You could read the above as "this item has def_index 1234 and it is a stattrak item". Then Steam calls GetAssetClassInfo with that listing of classes and expects you to return a proper description, which gets cached indefinitely for that set of classes. So that means that your set of classes for a specific item needs to include all the data necessary to build a comprehensive description. The purpose of asset classes and descriptions is to decouple the display information from the actual asset. For example, every CS:GO Case Key is completely identical so there's no reason to store all the display information with each individual item. So instead the economy server requests the list of classes for the assetid from the item server, which replies with a list of classes that the economy server has already seen. Thus the econ server knows that it's seen this kind of item before and doesn't need to request display information.Thanks for your comprehensive answer and yes your assumptions were right about what i was refering to with Asset Class and Inventory provider. So an Asset Class represents a specific piece of display information of an Asset and could have been called AssetDisplayParameter instead?What confuses me most is the "conversion" of the list of classes to an asset description in the GetAssetClassInfo request. Steam can't know wich part in the response to this method belongs to which classes. So I guess Steam caches the complete signature of classes in the GetAssetClassInfo request in order to be able to re-use display information?
Dr. McKay Posted March 22, 2018 Author Report Posted March 22, 2018 So an Asset Class represents a specific piece of display information of an Asset and could have been called AssetDisplayParameter instead? I suppose you could say that. What confuses me most is the "conversion" of the list of classes to an asset description in the GetAssetClassInfo request. Steam can't know wich part in the response to this method belongs to which classes. So I guess Steam caches the complete signature of classes in the GetAssetClassInfo request in order to be able to re-use display information? GetAssetClassInfo takes as input a list of classes and responds as output with a single description. That description corresponds to the entire list of input classes. So the response should correspond to all classes. Which means that I think you understand it correctly, Steam does cache the complete signature of classes. Einar_100 1
Einar_100 Posted March 23, 2018 Report Posted March 23, 2018 (edited) I suppose you could say that. GetAssetClassInfo takes as input a list of classes and responds as output with a single description. That description corresponds to the entire list of input classes. So the response should correspond to all classes. Which means that I think you understand it correctly, Steam does cache the complete signature of classes.So from Steams point of view instead of a list of classes-values it could use some kind of identifier to the description. Anyway thanks a lot for you took the time to answer me despite it was a bit off-topic. I think I have the picture now . Edited March 23, 2018 by Einar_100
Dr. McKay Posted March 23, 2018 Author Report Posted March 23, 2018 Yeah, class-values are a complete black box to Steam.
tvman99 Posted August 13, 2018 Report Posted August 13, 2018 (edited) McKay, Is it possible that asset id is different in the url? I get a number from the item's assetid and id which are literally the same. But when i see it in the inventory appid context id are same but asset id is completely different even in length. edit: my bad. asset id was changed after trade but i get assetid by using offer.getReceivedItems only if the items sent to a bot account. It shows an error saying the offer is not accepted if the items taken from a bot account. I used getReceivedItems in callback of accept(offer). edit 2: i used getExchangeDetails too. It gives no trade id unable to get trade details error. As long as if any items are not taken from a bot account, which means bot gives nothing, then it works as expected. I wonder why it works when no item is taken from a bot account. Unfortunately, this happens to be the same for getReceivedItems. I tested every possible scenario. Edited August 13, 2018 by tvman99
Recommended Posts