{"id":17215206,"url":"https://github.com/doctormckay/node-globaloffensive","last_synced_at":"2025-05-16T15:04:46.123Z","repository":{"id":30519179,"uuid":"34073667","full_name":"DoctorMcKay/node-globaloffensive","owner":"DoctorMcKay","description":"A Node.js module to connect to and interact with the CS2 game coordinator. Mostly used to get item data.","archived":false,"fork":false,"pushed_at":"2024-10-03T08:30:39.000Z","size":1684,"stargazers_count":282,"open_issues_count":16,"forks_count":64,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-31T00:06:27.443Z","etag":null,"topics":["counter-strike","csgo","node-steam-steamuser","steam","steam-account"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/globaloffensive","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DoctorMcKay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-04-16T18:38:07.000Z","updated_at":"2025-03-29T22:35:31.000Z","dependencies_parsed_at":"2024-02-07T19:31:25.249Z","dependency_job_id":"8cc16d08-4ec3-4e97-a195-a455a3d15d7b","html_url":"https://github.com/DoctorMcKay/node-globaloffensive","commit_stats":{"total_commits":109,"total_committers":11,"mean_commits":9.909090909090908,"dds":0.4495412844036697,"last_synced_commit":"8decb375aa90e073673022ebd09e0e0299555988"},"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DoctorMcKay%2Fnode-globaloffensive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DoctorMcKay%2Fnode-globaloffensive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DoctorMcKay%2Fnode-globaloffensive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DoctorMcKay%2Fnode-globaloffensive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DoctorMcKay","download_url":"https://codeload.github.com/DoctorMcKay/node-globaloffensive/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247574085,"owners_count":20960496,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["counter-strike","csgo","node-steam-steamuser","steam","steam-account"],"created_at":"2024-10-15T03:23:37.931Z","updated_at":"2025-04-07T01:06:16.480Z","avatar_url":"https://github.com/DoctorMcKay.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Counter-Strike Global Offensive for Node.js\n[![npm version](https://img.shields.io/npm/v/globaloffensive.svg)](https://npmjs.com/package/globaloffensive)\n[![npm downloads](https://img.shields.io/npm/dm/globaloffensive.svg)](https://npmjs.com/package/globaloffensive)\n[![license](https://img.shields.io/npm/l/globaloffensive.svg)](https://github.com/DoctorMcKay/node-globaloffensive/blob/master/LICENSE)\n\nThis module provides a very flexible interface for interacting with the [CS2](http://store.steampowered.com/app/730)\nGame Coordinator. It's designed to work with a\n[node-steam-user SteamUser](https://github.com/DoctorMcKay/node-steam-user) instance.\n\nThis is based off of [node-tf2](https://github.com/DoctorMcKay/node-tf2).\n\n**You will need steam-user v4.2.0 or later and Node.js v14 or later to use globaloffensive v3.**  \nYou will need steam-user v4.2.0 or later and Node.js v8 or later to use globaloffensive v2.\n\n# Setup\n\nFirst, install it from npm:\n\n\t$ npm install globaloffensive\n\nRequire the module and call its constructor with your SteamUser instance:\n\n```js\nconst SteamUser = require('steam-user');\nconst GlobalOffensive = require('globaloffensive');\n\nlet user = new SteamUser();\nlet csgo = new GlobalOffensive(user);\n```\n\nTo initialize your GC connection, just launch CS:GO via SteamUser normally:\n\n```js\nclient.gamesPlayed([730]);\n```\n\nnode-globaloffensive will emit a `connectedToGC` event when the game coordinator connection has been successfully\nestablished. You shouldn't try to do anything before you receive that event.\n\n# Enums\n\nThere are some enums that are used by various methods and events. You can find them in `enums.js`.\n\n# Properties\n\nThere are a few useful read-only properties available to you.\n\n### haveGCSession\n\n`true` if we're currently connected to the GC, `false` otherwise. You should only call methods when we have an active GC session.\n\n### accountData\n\nA big object containing account data and some statistics including players in-game. Undefined until `accountData` is emitted.\n\n### inventory\n\nAn array containing the items in your inventory. Undefined until `connectedToGC` is emitted.\n\nAs of v2.2.0, some special properties are populated on items in this array (and also item objects in `itemAcquired` and\nrelated events), where applicable:\n\n- `position` - This item's position in your inventory. If the item is new and unacknowledged, this is `0`\n- `custom_name` - This item's custom name, applied via name tag\n- `paint_index` - The item's paint index\n- `paint_seed` - The item's paint seed\n- `paint_wear` - The item's paint wear, as a float (often ignorantly referred to as \"float value\")\n- `kill_eater_value` - Tracked stat value for StatTrak weapons\n- `kill_eater_score_type` - What type of stat is tracked for StatTrak weapons. Currently only 0 (Kills) is available.\n- `quest_id`\n- `tradable_after` - A `Date` object representing when this item will become tradable. May be a date in the past, as this is not removed when the date is reached.\n- `stickers` - An array of objects:\n    - `slot` - The sticker slot number, 0-5\n    - `sticker_id`\n    - `wear` - The sticker's wear (how scratched it is), as a float. `null` if not scratched at all.\n    - `scale` - Float, `null` if not applicable\n    - `rotation` - Float, `null` if not applicable\n    - `tint_id`\n    - `offset_x` - Float, `null` if not applicable\n    - `offset_y` - Float, `null` if not applicable\n- `casket_id` - If this item is contained in a casket (storage unit), this is a string containing that casket's item ID\n- `casket_contained_item_count` - If this item is a casket (storage unit), this is a count of how many items it contains\n\nNote that if any of the above attributes are not applicable, then they will not exist in the item object.\n\nIt appears that under some circumstances, the GC might load items from storage units into your inventory without\ncalling [`getCasketContents`](#getcasketcontentscasketid-callback), so if you are using this property to see what items\nare in your inventory, you will need to check `casket_id` to filter out items stored in storage units.\n\n# Methods\n\n### Constructor(steamClient)\n\nWhen instantiating your node-globaloffensive instance, you need to pass your active Steam.SteamClient instance as the sole parameter, as shown here:\n\n```js\nvar csgo = new GlobalOffensive(steamClient);\n```\n\n### requestGame(shareCodeOrDetails)\n- `shareCodeOrDetails` - Either a share code as a string, or an object containing properties `matchId`, `outcomeId`, `token`\n\n**v2.2.0 or later is required to use this method**\n\nRequests stats for a historical game. Listen for the `matchList` event to get your response.\n\n### requestLiveGames()\n\nRequest a list of current live tournament games.\nThis is the list you see in the client under Watch -\u003e Live.\nListen for the `matchList` event to get your response.\n\n### requestRecentGames(steamid)\n\nRequest a list of recent games (max. 8). This is the list you see in the client under Watch -\u003e Your Matches.\nListen for the `matchList` event to get your response.\n\n### requestLiveGameForUser(steamid)\n\nRequest live game info for a specific user. Listen for the `matchList` event to get your response.\n\n### inspectItem(owner[, assetid][, d][, callback])\n- `owner` - The numeric SteamID or market listing ID of the owning Steam account or market listing, as a string; or an entire inspect link.\n- `assetid` - If `owner` is not an entire inspect link, this is the numeric asset ID of this item, as a string\n- `d` - If `owner` is not an entire inspect link, this is the \"D\" number from the inspect link (the last number following the \"D\" character)\n- `callback` - Optional. Called if all parameters are valid when Steam responds to us.\n\t- `item` - An object containing the item's data\n\t\t- `accountid` - Seems to always be `null`\n\t\t- `itemid` - The item's asset ID, as a string\n\t\t- `defindex` - The item's definition index\n\t\t- `paintindex` - The item's paint index\n\t\t- `rarity` - The item's numeric rarity\n\t\t- `quality` - The item's numeric quality\n\t\t- `paintwear` - The item's paint wear percentage, as a float between 0 and 1 (frequently and incorrectly called \"float value\")\n\t\t- `paintseed` - The item's paint seed\n\t\t- `killeaterscoretype` - What kind of statistic the StatTrak version of this item tracks (may be `null` if not StatTrak)\n\t\t- `killeatervalue` - The item's tracked statistic value (kills)\n\t\t- `customname` - The item's custom name via a name tag, or `null` if none\n\t\t- `stickers` - An array of objects describing the stickers applied to this item\n\t\t\t- `slot` - What slot this sticker is applied to\n\t\t\t- `sticker_id` - The ID of this type of sticker\n\t\t\t- `wear` - Either `null` (not scratched) or a float between 0 and 1 describing how much this sticker has been scratched\n\t\t\t- `scale` - This property is only not null on the early dreamhack 2013 stickers. It is no longer used.\n\t\t\t- `rotation` - This property is only not null on the early dreamhack 2013 stickers. It is no longer used.\n\t\t\t- `tint_id`\n\t\t\t- `offset_x` - Float, `null` if not applicable\n            - `offset_y` - Float, `null` if not applicable\n            - `offset_z` - Float, `null` if not applicable\n            - `pattern` - Integer, `null` if not applicable\n\t\t- `inventory` - An integer which has no use to you\n\t\t- `origin` - The numeric origin of this item\n\t\t- `questid` - You can ignore this\n\t\t- `dropreason`\n\t\t- `musicindex`\n\t\t- `entindex`\n        - `petindex`\n        - `keychains` - An array of objects with identical structure to `stickers`, but for keychains\n\n**v1.1.0 or later is required to use this method**\n\nSends the same request to the GC that the official client sends when you inspect an item. If all parameters are correct\nand the GC is in a good mood, returns the item's data. Using this for an item your account owns is useless as all\nthe data is already available in `inventory`.\n\nThe response will arrive in the callback and in the `inspectItemInfo` event.\n\nAs of v2.1.0, the request will time out if no response is received in 10 seconds. If this happens,\n[`inspectItemTimedOut`](#inspectitemtimedout) will be emitted.\n\n### requestPlayersProfile(steamid[, callback])\n- `steamid` - The numeric SteamID of the Steam account to pull profile data for. Needs to be playing CSGO and be on the friend list of the requesting account.\n- `callback` - Optional. Called if all parameters are valid when Steam responds to us.\n\t- `profile` - An object containing the profiledata\n\t\t- `account_id` - Steam account id\n\t\t- `ongoingmatch`\n\t\t- `global_stats` - Seems to always be `null`\n\t\t- `penalty_seconds`\n\t\t- `penalty_reason`\n\t\t- `vac_banned`\n\t\t- `ranking`\n\t\t\t- `account_id`\n\t\t\t- `rank_id` - Rank (0-18), starting at 0 for unranked\n\t\t\t- `wins` - Number of wins\n\t\t\t- `rank_change` - Seems to always be `null`\n\t\t\t- `rank_type_id` - Rank type (6: Matchmaking, 7: Wingman, 10: Danger Zone)\n\t\t- `commendation`\n\t\t\t- `cmd_friendly` - The number of \"friendly\" commendations the account has received\n\t\t\t- `cmd_teaching` - The number of \"teaching\" commendations the account has received\n\t\t\t- `cmd_leader` - The number of \"leader\" commendations the account has received\n\t\t- `medals` - Achievement medals, their ranks and coins\n\t\t\t- `medal_team`\n\t\t\t- `medal_combat`\n\t\t\t- `medal_weapon`\n\t\t\t- `medal_global`\n\t\t\t- `medal_arms`\n\t\t\t- `display_items_defidx` - Array of coins\n\t\t\t- `featured_display_item_defidx`\n\t\t- `my_current_event`\n\t\t- `my_current_event_teams`\n\t\t- `my_current_team`\n\t\t- `my_current_event_stages`\n\t\t- `survey_vote`\n\t\t- `activity`\n\t\t- `player_level` - Private rank level\n\t\t- `player_cur_xp` - Current XP, starting at 327680000 (level % = (player_cur_xp - 327680000) / 5000)\n\t\t- `player_xp_bonus_flags` - Seems to always be `null`\n\t\t- `rankings` - Array of ranking infos\n\t\t\t- `account_id`\n\t\t\t- `rank_id` - Rank (0-18), starting at 0 for unranked\n\t\t\t- `wins` - Number of wins\n\t\t\t- `rank_change` - Seems to always be `null`\n\t\t\t- `rank_type_id` - Rank type (6: Matchmaking, 7: Wingman, 10: Danger Zone)\n\t\n**v1.2.0 or later is required to use this method**\n\nSends the same request to the GC that viewing the CSGO player profile from the in-game friendlist sends. Returns the same information that you would get in-game.\nThis returns the same protobuf that is used when you request your own profile data, so most of it stays empty.\n\n### nameItem(nameTagId, itemId, name)\n- `nameTagId` - The ID of the name tag you want to consume to do this\n- `itemId` - The ID of the item you want to rename\n- `name` - A string containing the item's new name\n\n**v2.1.0 or later is required to use this method**\n\nRenames a particular item in your inventory, using a given name tag. You can rename storage units for free by passing\n`0` as the `nameTagId`.\n\n### craft(items, recipe)\n- `items` - An array of item IDs to craft\n- `recipe` - An integer indicating which crafting recipe to use\n\n**v2.3.0 or later is required to use this method**\n\nCraft `items` together into a new item using a specific `recipe`. `items` should be an array of item IDs to craft.\nYou will receive a [`craftingComplete`](#craftingcomplete) event in response. If crafting succeeded, you will also get\n[`itemRemoved`](#itemremoved) events for each item you spent, and [`itemAcquired`](#itemacquired) events for each item\nyou received.\n\nRecipes are defined in items_game.txt. Available recipes as of late 2022 are:\n\n- 0 = Trade-Up: 10x Consumer Grade → 1x Industrial Grade\n- 1 = Trade-Up: 10x Industrial Grade → 1x Mil-Spec Grade\n- 2 = Trade-Up: 10x Mil-Spec Grade → 1x Restricted\n- 3 = Trade-Up: 10x Restricted → 1x Classified\n- 4 = Trade-Up: 10x Classified → 1x Covert\n- 10 = Trade-Up: 10x StatTrak Consumer Grade → 1x StatTrak Industrial Grade\n- 11 = Trade-Up: 10x StatTrak Industrial Grade → 1x StatTrak Mil-Spec Grade\n- 12 = Trade-Up: 10x StatTrak Mil-Spec Grade → 1x StatTrak Restricted\n- 13 = Trade-Up: 10x StatTrak Restricted → 1x StatTrak Classified\n- 14 = Trade-Up: 10x StatTrak Classified → 1x StatTrak Covert\n\n### deleteItem(itemId)\n- `itemId` - The ID of the item you want to delete\n\n**1.3.0 or later is required to use this method**\n\nDeletes a particular item from your inventory. **This is a destructive operation, which cannot be undone.**\n\n### addToCasket(casketId, itemId)\n- `casketId` - The ID of the casket (storage unit) you want to put an item into\n- `itemId` - The ID of the item you want to put into the casket\n\n**v2.1.0 or later is required to use this method**\n\nPut an item in your inventory into a casket (storage unit) you own. Assuming the request succeeds,\n[`itemRemoved`](#itemremoved) will be emitted for the item that was put into the casket, and\n[`itemCustomizationNotification`](#itemcustomizationnotification) will be emitted with notification type\n`CasketAdded` for the casket.\n\n### removeFromCasket(casketId, itemId)\n- `casketId` - The ID of the casket (storage unit) you want to remove an item from\n- `itemId` - The ID of the item you want to remove from the casket\n\n**v2.1.0 or later is required to use this method**\n\nRemove an item from a casket (storage unit) you own and put it into your inventory. Assuming the request succeeds,\n[`itemAcquired`](#itemremoved) will be emitted for the item that was removed from the casket, and\n[`itemCustomizationNotification`](#itemcustomizationnotification) will be emitted with notification type\n`CasketRemoved` for the casket.\n\n### getCasketContents(casketId, callback)\n- `casketId` - The ID of the casket (storage unit) you want to get the contents of\n- `callback` - A function to be called once the contents are loaded\n    - `err` - An `Error` object on failure, or `null` on success\n    - `items` - An array of item objects, the same structure as objects in [`inventory`](#inventory)\n\n**v2.1.0 or later is required to use this method**\n\nLoads the contents of a storage unit. Note that calling this will have the GC load the contents of the storage unit\nusing the same mechanism as your actual inventory, so items in the storage unit will appear in the [`inventory`](#inventory)\nproperty, and `itemAcquired` will be emitted for each item. Each item in your [`inventory`](#inventory) that is contained\ninside of a storage unit has a property `casket_id`, the value of which is a string containing the ID of the storage unit\nthat contains that item.\n\nIt appears that under some circumstances, the GC might load these items into your inventory without calling this method,\nso if you are using [`inventory`](#inventory) to see what items are in your inventory, you will need to check `casket_id`\nto filter out items stored in storage units.\n\t\n# Events\n\n### connectedToGC\n\nEmitted when a GC connection is established. You shouldn't use any methods before you receive this. Note that this may be received (after it's first emitted) without any disconnectedFromGC event being emitted. In this case, the GC simply restarted.\n\n### disconnectedFromGC\n- `reason` - A value from the `GCConnectionStatus` enum\n\nEmitted when we're disconnected from the GC for any reason. node-globaloffensive will automatically try to reconnect and will emit `connectedToGC` when reconnected.\n\nExample usage:\n\n```js\nconst GlobalOffensive = require('globaloffensive');\nlet csgo = new GlobalOffensive(steamUser);\n\ncsgo.on('disconnectedFromGC', (reason) =\u003e {\n    if (reason == GlobalOffensive.GCConnectionStatus.GC_GOING_DOWN) {\n        console.log('GC going down');    \n    }\n});\n```\n\n### error\n- `err` - An `Error` object\n\nEmitted when we encounter a fatal error attempting to connect to the GC. If this event is not handled, the app will crash.\n\n### connectionStatus\n- `status` - A value from the `GCConnectionStatus` enum\n- `data` - The raw data that was received\n\nEmitted when we receive the status of our connection to the GC. Exactly when this is emitted is currently unknown. **This may be removed in the future.**\n\n### matchList\n- `matches` - An array of matches\n- `data` - The raw data that was received\n\nEmitted when we receive a match list, especially after a `requestLiveGames()` call. This may be emitted at other times. Presently, the exact behavior is unknown.\n\n### inspectItemInfo\n- `item` - An object containing the item's data\n\t- `accountid` - Seems to always be `null`\n\t- `itemid` - The item's asset ID, as a string\n\t- `defindex` - The item's definition index\n\t- `paintindex` - The item's paint index\n\t- `rarity` - The item's numeric rarity\n\t- `quality` - The item's numeric quality\n\t- `paintwear` - The item's paint wear percentage, as a float between 0 and 1 (frequently and incorrectly called \"float value\")\n\t- `paintseed` - The item's paint seed\n\t- `killeaterscoretype` - What kind of statistic the StatTrak version of this item tracks (may be `null` if not StatTrak)\n\t- `killeatervalue` - The item's tracked statistic value (kills)\n\t- `customname` - The item's custom name via a name tag, or `null` if none\n\t- `stickers` - An array of objects describing the stickers applied to this item\n\t\t- `slot` - What slot this sticker is applied to\n\t\t- `sticker_id` - The ID of this type of sticker\n\t\t- `wear` - Either `null` (not scratched) or a float between 0 and 1 describing how much this sticker has been scratched\n\t\t- `scale` - Always `null`?\n\t\t- `rotation` - Always `null`?\n\t\t- `tint_id`\n        - `offset_x` - Float, `null` if not applicable\n        - `offset_y` - Float, `null` if not applicable\n\t- `inventory` - An integer which has no use to you\n\t- `origin` - The numeric origin of this item\n\t- `questid` - You can ignore this\n\t- `dropreason`\n\t- `musicindex`\n\t- `entindex`\n\n**v1.1.0 or later is required to use this method**\n\nEmitted in response to an `inspectItem()` call.\n\n### inspectItemTimedOut\n- `assetid` - The asset ID of the item we attempted to inspect\n\n**v2.1.0 or later is required to use this method**\n\nEmitted if `inspectItem()` is called but we don't receive a timely reply to the request.\n\n### itemAcquired\n- `item` - The item that you received\n\nEmitted when you receive a new item.\n\n### itemChanged\n- `oldItem` - The item's previous state\n- `item` - The item's new state\n\nEmitted when an item in your inventory changes in some way.\n\n### itemRemoved\n- `item` - The item that you lost\n\nEmitted when an item is removed from your inventory.\n\n### itemCustomizationNotification\n- `itemIds` - An array of item IDs (as strings) to which something happened\n- `notificationType` - A value from the `ItemCustomizationNotification` enum\n\n**v2.1.0 or later is required to use this event**\n\nEmitted when the GC informs us that an item is customized somehow. Example:\n\n```js\nconst GlobalOffensive = require('globaloffensive');\nlet csgo = new GlobalOffensive(steamUser);\n\ncsgo.on('itemCustomizationNotification', (itemIds, notificationType) =\u003e {\n    if (notificationType == GlobalOffensive.ItemCustomizationNotification.CasketInvFull) {\n        console.log('Storage unit ' + itemIds[0] + ' is full');\n    }\n});\n```\n\n### craftingComplete\n- `recipe` - The ID of the recipe that was used to perform this craft, or -1 on failure\n- `itemsGained` - An array of IDs of items that were gained as a result of this craft\n\n**v2.3.0 or later is required to use this event**\n\nEmitted when a craft initiated by the [`craft`](#craftitems-recipe) method finishes.\n\n### playersProfile\n- `profile` - An object containing the profile data\n\t- `account_id` - Steam account id\n\t- `ongoingmatch`\n\t- `global_stats` - Seems to always be `null`\n\t- `penalty_seconds`\n\t- `penalty_reason`\n\t- `vac_banned`\n\t- `ranking`\n\t\t- `account_id`\n\t\t- `rank_id` - Rank (0-18), starting at 0 for unranked\n\t\t- `wins` - Number of wins\n\t\t- `rank_change` - Seems to always be `null`\n\t\t- `rank_type_id` - Rank type (6: Matchmaking, 7: Wingman, 10: Danger Zone)\n\t- `commendation`\n\t\t- `cmd_friendly` - The number of \"friendly\" commendations the account has received\n\t\t- `cmd_teaching` - The number of \"teaching\" commendations the account has received\n\t\t- `cmd_leader` - The number of \"leader\" commendations the account has received\n\t- `medals` - Achievement medals, their ranks and coins\n\t\t- `medal_team`\n\t\t- `medal_combat`\n\t\t- `medal_weapon`\n\t\t- `medal_global`\n\t\t- `medal_arms`\n\t\t- `display_items_defidx` - Array of coins\n\t\t- `featured_display_item_defidx`\n\t- `my_current_event`\n\t- `my_current_event_teams`\n\t- `my_current_team`\n\t- `my_current_event_stages`\n\t- `survey_vote`\n\t- `activity`\n\t- `player_level` - Private rank level\n\t- `player_cur_xp` - Current XP, starting at 327680000 (level % = (player_cur_xp - 327680000) / 5000)\n\t- `player_xp_bonus_flags` - Seems to always be `null`\n\t- `rankings` - Array of ranking infos\n\t\t- `account_id`\n\t\t- `rank_id` - Rank (0-18), starting at 0 for unranked\n\t\t- `wins` - Number of wins\n\t\t- `rank_change` - Seems to always be `null`\n\t\t- `rank_type_id` - Rank type (6: Matchmaking, 7: Wingman, 10: Danger Zone)\n\nEmitted in response to an `requestPlayersProfile()` call.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoctormckay%2Fnode-globaloffensive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoctormckay%2Fnode-globaloffensive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoctormckay%2Fnode-globaloffensive/lists"}