什么标识Steam中的“Dota2”项目?

时间:2014-07-01 18:30:35

标签: steam steam-web-api

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

但是,当用蒸汽读取用户的背包时,具有相同“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和quality = 12的项目。”但那够了吗?可能需要指定其他特征来准确定义Dota2项目。

有谁知道在哪里可以找到这样的信息/文件?

2 个答案:

答案 0 :(得分:2)

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

original_id是第一次将对象授予用户时给定的id。在项目的生命过程中,这个id永远不会改变。每次修改项目时id字段都会更改,或者更改所有权(即交易)。

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

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

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

可以通过应用Strange Parts和升级kill streak工具包来修改质量。可以通过将化妆品项目应用于项目(名称标签,描述标签,油漆等)来修改属性。

用户无法控制上述两个不同的ID字段,级别(大多数情况下是随机数),库存字段中的数量或值。

这些信息大部分来自here

答案 1 :(得分:0)

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

例如,396在架构中存在两次:

一次为"暗影恶魔的海角"和#34;活动时间"。但它们是分开的阵列("项目" for" Shadow Demon' Cape""属性"包含"事件时间" )

架构提供有关"属性的信息"这些属于'属性下的模式。阵列。质量"锦标赛":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
        }