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
            }
        },          

次に示すのはアイテムの 2 つのインスタンスで、両方ともユーザーのバックパックに 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
                }
            ]
        },

ユーザーのバックパック内の 2 つのアイテムの品質が異なることに気付くかもしれません (それぞれ 4 と 12 です。これはおそらく、2 番目のアイテムが他のアイテムを参照する属性を持っているためです。

問題は、取引目的でユーザーのアイテムを正確に定義するには何が必要かということです。

defindex=4122 のアイテムを提供していると言うだけでは十分ではありません。上記の例から、「defindex=4122 で quality=12 のアイテムを提供しています」と言う必要があるようです。しかし、それで十分ですか?Dota2 アイテムを正確に定義するために指定する必要がある他の特性がある場合があります。

そのような情報/ドキュメントの場所を知っている人はいますか?

4

2 に答える 2

2

この質問を投稿するために、アイテム インスタンスの 2 つの重要な要素を匿名にしました。要素idと要素original_idは、特定のアイテムを一意に識別します。

original_idオブジェクトがユーザーに最初に付与されたときに付与される ID です。この ID は、アイテムの存続期間中、変更されることはありません。このidフィールドは、アイテムが変更されるか、所有権が変更される (つまり、取引される) たびに変更されます。

を使用するoriginal_idと、アイテムが経済を通過する際の履歴を追跡できます。これは、バックパック サイトが過去の所有権データを保持する方法です。取引をしている場合idは、ユーザーが何かを変更しない限り変更されないため、これで十分です (つまり、TF2 の世界では、名前タグを追加するかペイントします)。これidは、SteamBotプロジェクトが取引を完了するために使用するものでもあります。

1 つの非常に重要な注意 (少なくとも TF2 の世界では): がid重複する可能性がある非常にまれな例があります。これらは、パッチが適用される前に存在し、利用されたエクスプロイトの結果 (現時点では既知の複製のエクスプロイトはありません)、または詐欺の試みに対する Steam サポートの介入の結果です。Steam サポートは、単にアイテムを複製する代わりに新しいアイテムを再許可するというポリシーを変更したと思いますが、信頼できる引用を見つけることができません.

コメントの質問に基づいて編集 DOTA に関する私の経験は限られていますが、TF2 に基づいて回答を提供でき、スキーマ レイアウトとバックパック レイアウトを見て、知識に基づいた推測を行うことができます。TF2 で最も簡単に変更できる 2 つのフィールドはqualityattributesリストです。

ストレンジ パーツを適用し、キル ストリーク キットをアップグレードすることで、品質を変更できます。属性は、装飾アイテム (名前タグ、説明タグ、ペイントなど) をアイテムに適用することで変更できます。

ユーザーは、上記の 2 つの異なる ID フィールド、レベル (ほとんどの場合、乱数です)、在庫フィールドの数量または値を制御できません。

この情報の多くはここからのものです。

于 2014-07-02T03:41:13.957 に答える
0

「defindex」は、特定の配列内の特定の項目を表すキーです。

たとえば、396 はスキーマに 2 回存在します。

1回は「影魔のマント」、もう1回は「イベントタイム」です。しかし、それらは別々の配列にあります(「シャドウデーモンのマント」の「アイテム」と「属性」には「イベント時間」が含まれます)

スキーマは、「属性」配列の下のスキーマにある「属性」に関する情報を提供します。品質が「トーナメント」のアイテム: 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 に答える