1

在 Dota2 模式中,项目被分配了一个“defindex”,这似乎是一个唯一的 id。我使用以下调用来获取架构。 http://api.steampowered.com/IEconItems_570/GetSchema/v0001/?key=XXXX

然而,当人们从 Steam 中读取用户的背包时,具有相同“defindex”的物品具有不同的品质。这里用于获取用户项目的调用 http://api.steampowered.com/IEconItems_570/GetPlayerItems/v0001?key=XXX&SteamID=YYY

例如,这里是 GetSchema 调用中 defindex = 4122 项的定义。

{
            "name": "Seafarer's Shoes",
            "defindex": 4122,
            "item_class": "dota_item_wearable",
            "item_type_name": "#DOTA_WearableType_Shoes",
            "item_name": "#DOTA_Item_Seafarers_Shoes",
            "item_description": "#DOTA_Item_Desc_Seafarers_Shoes",
            "proper_name": false,
            "item_quality": 4,
            "image_inventory": "econ/items/kunkka/legs_admirableadmiral",
            "min_ilevel": 1,
            "max_ilevel": 1,
            "image_url": "http://cdn.dota2.com/apps/570/icons/econ/items/kunkka/legs_admirableadmiral.e679e41f99350070d812fe5cd57acda4c83a99a0.png",
            "image_url_large": "http://cdn.dota2.com/apps/570/icons/econ/items/kunkka/legs_admirableadmiral_large.5a9acb228f9cae6c2d6cb1199ad2bba2f54955d6.png",
            "item_set": "kunkka_admirable_admiral",
            "capabilities": {
                "nameable": true,
                "can_craft_mark": true,
                "can_be_restored": true,
                "strange_parts": true,
                "paintable_unusual": true,
                "autograph": true,
                "can_consume": true,
                "can_have_sockets": true
            }
        },    {
            "name": "Seafarer's Shoes",
            "defindex": 4122,
            "item_class": "dota_item_wearable",
            "item_type_name": "#DOTA_WearableType_Shoes",
            "item_name": "#DOTA_Item_Seafarers_Shoes",
            "item_description": "#DOTA_Item_Desc_Seafarers_Shoes",
            "proper_name": false,
            "item_quality": 4,
            "image_inventory": "econ/items/kunkka/legs_admirableadmiral",
            "min_ilevel": 1,
            "max_ilevel": 1,
            "image_url": "http://cdn.dota2.com/apps/570/icons/econ/items/kunkka/legs_admirableadmiral.e679e41f99350070d812fe5cd57acda4c83a99a0.png",
            "image_url_large": "http://cdn.dota2.com/apps/570/icons/econ/items/kunkka/legs_admirableadmiral_large.5a9acb228f9cae6c2d6cb1199ad2bba2f54955d6.png",
            "item_set": "kunkka_admirable_admiral",
            "capabilities": {
                "nameable": true,
                "can_craft_mark": true,
                "can_be_restored": true,
                "strange_parts": true,
                "paintable_unusual": true,
                "autograph": true,
                "can_consume": true,
                "can_have_sockets": true
            }
        },          

这里有两个项目实例,用户背包中的 defindex = 4122:

 {
            "id": xxxx,
            "original_id": yyyy,
            "defindex": 4122,
            "level": 1,
            "quality": 4,
            "inventory": 157,
            "quantity": 1
        },
        {
            "id": zzzz,
            "original_id": wwww,
            "defindex": 4122,
            "level": 1,
            "quality": 12,
            "inventory": 172,
            "quantity": 1,
            "attributes": [
                {
                    "defindex": 185,
                    "value": 1374925866,
                    "float_value": 130837463040
                },
                {
                    "defindex": 312,
                    "value": 95566398,
                    "float_value": 1.6760434356454931e-035,
                    "account_info": {
                        "steamid": fffff,
                        "personaname": "fly fly"
                    }
                },
                {
                    "defindex": 313,
                    "value": 86741690,
                    "float_value": 8.0673307729579346e-036,
                    "account_info": {
                        "steamid": ggggg,
                        "personaname": "???????"
                    }
                },
                {
                    "defindex": 315,
                    "value": 0,
                    "float_value": 0
                },
                {
                    "defindex": 316,
                    "value": 0,
                    "float_value": 0
                },
                {
                    "defindex": 317,
                    "value": 2,
                    "float_value": 2.8025969286496341e-045
                },
                {
                    "defindex": 318,
                    "value": 254535695,
                    "float_value": 8.4756437840051154e-030
                },
                {
                    "defindex": 320,
                    "value": 1155752210,
                    "float_value": 1819.033447265625
                },
                {
                    "defindex": 389,
                    "value": 59,
                    "float_value": 8.2676609395164207e-044
                },
                {
                    "defindex": 396,
                    "value": 1115,
                    "float_value": 1.562447787722171e-042
                },
                {
                    "defindex": 397,
                    "value": 1073741824,
                    "float_value": 2
                }
            ]
        },

您可能会注意到用户背包中的两个项目具有不同的品质(分别为 4 和 12,可能是由于第二个项目具有引用其他项目的属性。

问题是如何准确地定义用户的项目以达到交易目的?

仅仅说我提供了一个 defindex=4122 的项目是不够的。从上面的示例中,我似乎需要说:“我提供的商品 defindex=4122 且质量 = 12。” 但这足够了吗?可能需要指定其他特征才能准确定义 Dota2 项目。

有谁知道在哪里可以找到此类信息/文件?

4

2 回答 2

2

您已将项目实例的两个关键元素设为匿名以发布此问题。元素idoriginal_id唯一标识特定项目。

original_id是对象第一次被授予用户时的 id。在项目的整个生命周期中,此 ID 永远不会改变。id每次修改项目或更改所有权(即交易)时,该字段都会更改。

使用original_id,可以跟踪项目在经济中的历史。这就是背包网站拥有历史所有权数据的方式。如果您正在交易,id则它就足够了,因为除非用户对其进行修改(即:在 TF2 世界中,添加名称标签或绘制它),否则它不会改变。这id也是SteamBot项目用来完成交易的方法。

一个非常重要的注意事项(至少在 TF2 世界中):id可以复制的情况非常罕见。这些是存在漏洞并在修补之前被利用的结果(目前没有已知的重复漏洞)或 Steam 支持干预诈骗企图的结果。我相信 Steam 支持已经改变了他们的政策,即简单地复制该项目,而不是重新授予一个新项目,但我无法找到可靠的引用。

根据评论中的问题进行编辑 我对 DOTA 的经验有限,但我可以根据 TF2 提供答案,并查看架构布局和背包布局做出一些有根据的猜测。TF2 中最容易修改的两个字段是qualityattributes列表。

可以通过应用奇怪的零件和升级连杀套件来修改质量。可以通过将化妆品应用于项目(名称标签、描述标签、油漆等)来修改属性。

用户无法控制上面提到的两个不同的 ID 字段、级别(在大多数情况下无论如何都是随机数)、数量或库存字段中的值。

大部分信息来自这里

于 2014-07-02T03:41:13.957 回答
0

'defindex' 是表示特定数组中特定项的键。

例如 396 在模式中存在两次:

一次用于“影魔披风”,另一次用于“活动时间”。但它们位于不同的数组中(“暗魔斗篷”的“项目”和“属性”包含“事件时间”)

架构提供有关“属性”的信息,这些信息位于“属性”数组下的架构中。具有“锦标赛”质量的项目:12具有锦标赛相关属性。:

    {
            "name": "tournament killer id",
            "defindex": 312,
            "attribute_class": "tournament_killer_id",
            "description_string": "#Attrib_TournamentKillerID",
            "description_format": "value_is_account_id",
            "effect_type": "positive",
            "hidden": true,
            "stored_as_integer": true
    }

{
                "name": "tournament id",
                "defindex": 315,
                "attribute_class": "tournament_id",
                "description_string": "#Attrib_TournamentID",
                "description_format": "value_is_additive",
                "effect_type": "positive",
                "hidden": true,
                "stored_as_integer": true
            }

质量很重要,因为有些质量是不可交易的,请参阅:http ://dota2.gamepedia.com/Quality

item_quality 对应于模式中的这个数组:

"qualities": {
            "normal": 0,
            "genuine": 1,
            "vintage": 2,
            "unusual": 3,
            "unique": 4,
            "community": 5,
            "developer": 6,
            "selfmade": 7,
            "customized": 8,
            "strange": 9,
            "completed": 10,
            "haunted": 11,
            "tournament": 12,
            "favored": 13,
            "ascendant": 14,
            "autographed": 15,
            "legacy": 16,
            "exalted": 17,
            "frozen": 18,
            "corrupted": 19,
            "lucky": 20
        }
于 2014-07-01T20:43:08.020 回答