Can be: • Locked from purchasing - cannot make purchases • Active - the default account state • Trusted - an active account with a purchase older than 90 days without a chargeback [/list] [*] [code-inline]error[/code-inline] - Optional, only returned if result is [b]Failure[/b]. …
In the previous example, customers in Russia would see a USD $9.99 price in the confirmation dialog but would be charged 614.90 pуб when the transaction is finalized. We recommend that you provide custom pricing for each currency in which you expect your customers to transact regularly. …
This is the best choice for highly competitive games (such as Dota 2) or games with persistent servers that stay around after players leave (such as Team Fortress 2). [section]Steam Server Browser[/section] A large part of the game server experience on Steam comes from the unified server browser. …
[section]Example Query[/section] The following example retrieves the 3 most recent news entries for Team Fortress 2. The request specifies that the response should be returned as JSON and includes: a required appid parameter (Team Fortress 2's AppID is 440), and an optional count parameter to limit the number of results returned. …
This is the best choice for highly competitive games (such as Dota 2) or games with persistent servers that keep running even after all players leave (such as Team Fortress 2). You can read more about it in the [doclink=features/multiplayer/game_servers][/doclink] documentation.…
Example [b]vrpreferences.json[/b]: [code=json] { "steam_frame": { "preferResolution": 2160, "preferMinRefreshRate": 90, "preferHalfFramerate": true, "preferMotionSmoothingMode": "off" } } [/code] This example file suggests: [list] [*]A default resolution of 2160x2160 [*]A default display refresh rate of 90 Hz [*]A default frame throttling to 1/2 (Frame Limit to 45 FPS) [*]A default override to disable Motion Smoothing [/list] To validate that the [b]vrpreferences.json[/b] is picked up by SteamVR, the [b]vrserver.txt[/b] log file can be searched: [code=plain] [Info] - [Settings] Loading app-provided preferences from '/home/steamos/.local/share/Steam/steamapps/common/<game folder>/vrpreferences.json' [/code] Parsing errors will be reported in this log, for example: [code=plain] [Info] - Parsing of JSON file "/home/steamos/.local/share/Steam/steamapps/common/[...]…
This is the approach used by older Valve Source games such as Team Fortress 2 and Counter-Strike: Source. If you choose OpenGL then we recommend using the core functionality in OpenGL 3.0 for your game. …
The following libraries provide support for other aspects of game development: [list] [*] [url=http://www.freetype.org/index.html]FreeType[/url] - font rendering (both vector-based and bitmap fonts) on Linux [*] [url=http://www.freedesktop.org/wiki/Software/fontconfig]Fontconfig[/url] - configuring and customizing font access [*] [url=http://www.radgametools.com/miles.htm]Miles Sound System[/url] - a middleware sound engine for Linux development [*] [url=http://www.radgametools.com/bnkmain.htm]Bink Video[/url] - a video codec designed for game developers [*] [url=http://www.webmproject.org/]WebM[/url] - an open media file format; used for recording Team Fortress 2 video instead of QuickTime. [/list] [section]Linux Runtime[/section] Titles with native Linux support may select a specific version of the Steam for Linux runtime to execute under. …
[h4]Example[/h4] Generator A has a 10% chance to create an item from Generator Legendary, and a 90% chance to create an item from Generator Common. Generator A also happens to apply the [code-inline]color:red[/code-inline] tag. …
Tag Generator Quality has a 10% chance to add the [code-inline]quality:legendary[/code-inline] tag and a 90% chance to apply the [code-inline]quality:common[/code-inline] tag. Tag Generator FX has an equal chance to apply the tags [code-inline]fx:flames[/code-inline], [code-inline]fx:sparks[/code-inline], or [code-inline]fx:lasers[/code-inline]. …
[/b] A: Treating customers fairly is the most important thing to us, so we ask that you give your customers at least 90 days notice before retiring a Free to Play game. You should disable any in-game purchasing, and contact us following the instructions above. …
No discount marketing copy is allowed (eg. no "On Sale Now" or "Up to 90% off" text). No marketing copy asking a user to take an action (eg. no "Prepurchase Now" or "Wishlisting now available" text) [b]NOTE: You MUST INCLUDE the primary logo with your game name on the artwork override. …
These files will not be downloaded by users through the Workshop, but will be viewable by the community to rate. This is the implementation that Team Fortress 2 uses. [/list] [/list] [*] Register a call result handler for [apitype]ISteamUGC::CreateItemResult_t[/apitype] [*] First check the [code-inline]m_eResult[/code-inline] to ensure that the item was created successfully. [*] When the call result handler is executed, read the [code-inline]m_nPublishedFileId[/code-inline] value and store for future updates to the workshop item (e.g. in a project file associated with the creation tool). [*] The [code-inline]m_bUserNeedsToAcceptWorkshopLegalAgreement[/code-inline] variable should also be checked and if it's [b]true[/b], the user should be redirected to accept the legal agreement. …
[code=cpp] "workshopitem" { "appid" "480" "publishedfileid" "5674" "contentfolder" "D:\\Content\\workshopitem" "previewfile" "D:\\Content\\preview.jpg" "visibility" "0" "title" "Team Fortress Green Hat" "description" "A green hat for Team Fortress" "changenote" "Version 1.2" } [/code] Notes: [list] [*] The keys map to the various ISteamUGC::SetItem[...] methods. …
[h4]Bundle format[/h4] [code] bundle_def : item_recipe , { ";" , item_recipe } item_recipe : item_def , [ "x" , quantity ] [/code] [h4]Bundle examples[/h4] [list] [*] Grant one each of itemdef 201, itemdef 202, itemdef 203: [code] type: bundle bundle: 201;202;203[/code] [*] Grant one instance with itemdef 101 and five instances of itemdef 102: [code] type: bundle bundle: 101x1;102x5[/code] [*] Random 90% chance of itemdef 501, 9% chance of itemdef 502, 1% chance of item 503: [code] type: generator bundle: 501x90;502x9;503x1[/code] [*] 90% chance of a common item; 10% chance of a special item. …
[code-inline]"drop_interval" : 30, "use_drop_window" : "true", "drop_window" : "1440"[/code-inline] [*] Allows the user to gain three items each day by playing for at least 90 minutes. These minutes do not need to be contiguous. This reward longer game play. [code-inline]"drop_interval" : 30, "use_drop_window" : "true", "drop_window" : "1440", "drop_max_per_window" : "3"[/code-inline] [/olist] If a particular itemdef setting is missing then it will default to the setting defined at the application. …
For clarity, this means: [olist] [*][b]No review scores[/b] of any kind, including Steam reviews or external news sources [*][b]No award names[/b], symbols, or logos [*][b]No discount marketing copy[/b] (eg. no "On Sale Now" or "Up to 90% off" text) [*][b]No marketing copy asking a user to take an action[/b] (eg. no "Prepurchase Now" or "Wishlisting now available" text) [*][b]No text or imagery promoting a different product[/b]. …
[/b] The best way to contact us with questions about shipping your mod is by filing a support ticket on https://help.steampowered.com. [/list] [section=TF2FAQ]Team Fortress 2 Mods FAQ[/section] [list] [*] [h4]Q. Where do I get the TF2 SDK?[/h4] [b]A.[/b] The TF2 SDK is part of the Source SDK 2013, which is available on [url=https://github.com/ValveSoftware/source-sdk-2013]Github[/url] or via [url=steam://rungameid/243750]Steam[/url] . [*] [h4]Q. …
. [*] Documentation is available on the [url=https://developer.valvesoftware.com/wiki/KeyValues]Valve Developer Community wiki[/url] and on the [url=https://wiki.teamfortress.com/wiki/WebAPI/VDF]Official Team Fortress 2 wiki[/url]. [*] Arrays in the data are represented as a VDF array with the name of the type of the objects in the array, with a VDF array being an object with each item being prefixed with its numeric key as a quoted string. [*] Null is represented as an empty string. [*] [b]Example[/b]: [code=nohighlight] "appnews" { "appid" "440" "newsitems" { "0" { "gid" "1904306376092568991" "title" "Prince of Prolander Event " "url" "http://store.steampowered.com/news/externalpost/tf2_blog/1904306376092568991" "is_external_url" "1" "author" "" "contents" "<a href=\"http://rgl.gg/default.aspx\"><img src=\"https://steamcdn-a.akamaihd.net/steam/news/29555/prince.png?…
[olist] [*]An account is Active by default. [*]Trusted accounts have a transaction over 90 days old without any chargebacks associated with the Steam account. It is important to note that a Trusted account may still be hijacked or ‘baked’ with a low value purchase to appear legitimate. …
[list] [*]A product priced at the $0.99 USD tier could discount up to 50% off [*]A product priced at $1.99 USD tier could discount up to 75% off [*]A product priced at $4.99 USD tier could discount up to 90% off [/list] [/olist] If you have one or more products with pricing or discounting below the new minimums, this could cause one of the following issues: [list] [*]If your product's base price is below Steam's lowest possible transaction price in a currency, it is no longer available to purchase in countries that use that currency. [*]If you have a scheduled discount that would result in your final price falling below Steam's lowest possible transaction price, that product will not be available to purchase by customers in countries where the end price is below the minimum allowed. [*]If your base price is below Steam's lowest possible transaction price in any currency, you will be unable to schedule new discounts. [*]If your base price is near to Steam's lowest possible transaction price in any currency, the discount you can enter may be limited to ensure the resulting price does not fall below the minimum allowed. …
You can start off with a basic uploader that just asks the item-maker to select a .zip file and a preview image, or you can build more validation into your submission path. For example, Team Fortress 2 started with just a submission form that asked the item author to pick a .zip file and preview image. But as we iterated on the process, we added a test environment and validation to make sure that the file that was submitted to the Workshop would be easier to integrate into the game. …
Indeed, the Steamworks [api]ISteamMatchmaking[/api] and [api]ISteamMatchmakingServers[/api] APIs have this property, as do some of our own games, such as Team Fortress 2. In this case, you can use the Steamworks "Fake IP" system. A FakeIP is an IP that "looks" like a valid IPv4 address for most purposes, but comes from a reserved address space that is not used on the Internet. …
[/td][/tr] [tr=k_ERemotePlayScancodeA][td][b]k_ERemotePlayScancodeA[/b][/td][td]4[/td][td]A[/td][/tr] [tr=k_ERemotePlayScancodeB][td][b]k_ERemotePlayScancodeB[/b][/td][td]5[/td][td]B[/td][/tr] [tr=k_ERemotePlayScancodeC][td][b]k_ERemotePlayScancodeC[/b][/td][td]6[/td][td]C[/td][/tr] [tr=k_ERemotePlayScancodeD][td][b]k_ERemotePlayScancodeD[/b][/td][td]7[/td][td]D[/td][/tr] [tr=k_ERemotePlayScancodeE][td][b]k_ERemotePlayScancodeE[/b][/td][td]8[/td][td]E[/td][/tr] [tr=k_ERemotePlayScancodeF][td][b]k_ERemotePlayScancodeF[/b][/td][td]9[/td][td]F[/td][/tr] [tr=k_ERemotePlayScancodeG][td][b]k_ERemotePlayScancodeG[/b][/td][td]10[/td][td]G[/td][/tr] [tr=k_ERemotePlayScancodeH][td][b]k_ERemotePlayScancodeH[/b][/td][td]11[/td][td]H[/td][/tr] [tr=k_ERemotePlayScancodeI][td][b]k_ERemotePlayScancodeI[/b][/td][td]12[/td][td]I[/td][/tr] [tr=k_ERemotePlayScancodeJ][td][b]k_ERemotePlayScancodeJ[/b][/td][td]13[/td][td]J[/td][/tr] [tr=k_ERemotePlayScancodeK][td][b]k_ERemotePlayScancodeK[/b][/td][td]14[/td][td]K[/td][/tr] [tr=k_ERemotePlayScancodeL][td][b]k_ERemotePlayScancodeL[/b][/td][td]15[/td][td]L[/td][/tr] [tr=k_ERemotePlayScancodeM][td][b]k_ERemotePlayScancodeM[/b][/td][td]16[/td][td]M[/td][/tr] [tr=k_ERemotePlayScancodeN][td][b]k_ERemotePlayScancodeN[/b][/td][td]17[/td][td]N[/td][/tr] [tr=k_ERemotePlayScancodeO][td][b]k_ERemotePlayScancodeO[/b][/td][td]18[/td][td]O[/td][/tr] [tr=k_ERemotePlayScancodeP][td][b]k_ERemotePlayScancodeP[/b][/td][td]19[/td][td]P[/td][/tr] [tr=k_ERemotePlayScancodeQ][td][b]k_ERemotePlayScancodeQ[/b][/td][td]20[/td][td]Q[/td][/tr] [tr=k_ERemotePlayScancodeR][td][b]k_ERemotePlayScancodeR[/b][/td][td]21[/td][td]R[/td][/tr] [tr=k_ERemotePlayScancodeS][td][b]k_ERemotePlayScancodeS[/b][/td][td]22[/td][td]S[/td][/tr] [tr=k_ERemotePlayScancodeT][td][b]k_ERemotePlayScancodeT[/b][/td][td]23[/td][td]T[/td][/tr] [tr=k_ERemotePlayScancodeU][td][b]k_ERemotePlayScancodeU[/b][/td][td]24[/td][td]U[/td][/tr] [tr=k_ERemotePlayScancodeV][td][b]k_ERemotePlayScancodeV[/b][/td][td]25[/td][td]V[/td][/tr] [tr=k_ERemotePlayScancodeW][td][b]k_ERemotePlayScancodeW[/b][/td][td]26[/td][td]W[/td][/tr] [tr=k_ERemotePlayScancodeX][td][b]k_ERemotePlayScancodeX[/b][/td][td]27[/td][td]X[/td][/tr] [tr=k_ERemotePlayScancodeY][td][b]k_ERemotePlayScancodeY[/b][/td][td]28[/td][td]Y[/td][/tr] [tr=k_ERemotePlayScancodeZ][td][b]k_ERemotePlayScancodeZ[/b][/td][td]29[/td][td]Z[/td][/tr] [tr=k_ERemotePlayScancode1][td][b]k_ERemotePlayScancode1[/b][/td][td]30[/td][td]1[/td][/tr] [tr=k_ERemotePlayScancode2][td][b]k_ERemotePlayScancode2[/b][/td][td]31[/td][td]2[/td][/tr] [tr=k_ERemotePlayScancode3][td][b]k_ERemotePlayScancode3[/b][/td][td]32[/td][td]3[/td][/tr] [tr=k_ERemotePlayScancode4][td][b]k_ERemotePlayScancode4[/b][/td][td]33[/td][td]4[/td][/tr] [tr=k_ERemotePlayScancode5][td][b]k_ERemotePlayScancode5[/b][/td][td]34[/td][td]5[/td][/tr] [tr=k_ERemotePlayScancode6][td][b]k_ERemotePlayScancode6[/b][/td][td]35[/td][td]6[/td][/tr] [tr=k_ERemotePlayScancode7][td][b]k_ERemotePlayScancode7[/b][/td][td]36[/td][td]7[/td][/tr] [tr=k_ERemotePlayScancode8][td][b]k_ERemotePlayScancode8[/b][/td][td]37[/td][td]8[/td][/tr] [tr=k_ERemotePlayScancode9][td][b]k_ERemotePlayScancode9[/b][/td][td]38[/td][td]9[/td][/tr] [tr=k_ERemotePlayScancode0][td][b]k_ERemotePlayScancode0[/b][/td][td]39[/td][td]0[/td][/tr] [tr=k_ERemotePlayScancodeReturn][td][b]k_ERemotePlayScancodeReturn[/b][/td][td]40[/td][td]Return[/td][/tr] [tr=k_ERemotePlayScancodeEscape][td][b]k_ERemotePlayScancodeEscape[/b][/td][td]41[/td][td]Escape[/td][/tr] [tr=k_ERemotePlayScancodeBackspace][td][b]k_ERemotePlayScancodeBackspace[/b][/td][td]42[/td][td]Backspace[/td][/tr] [tr=k_ERemotePlayScancodeTab][td][b]k_ERemotePlayScancodeTab[/b][/td][td]43[/td][td]Tab[/td][/tr] [tr=k_ERemotePlayScancodeSpace][td][b]k_ERemotePlayScancodeSpace[/b][/td][td]44[/td][td]Space[/td][/tr] [tr=k_ERemotePlayScancodeMinus][td][b]k_ERemotePlayScancodeMinus[/b][/td][td]45[/td][td]Minus[/td][/tr] [tr=k_ERemotePlayScancodeEquals][td][b]k_ERemotePlayScancodeEquals[/b][/td][td]46[/td][td]Equals[/td][/tr] [tr=k_ERemotePlayScancodeLeftBracket][td][b]k_ERemotePlayScancodeLeftBracket[/b][/td][td]47[/td][td]Left Bracket[/td][/tr] [tr=k_ERemotePlayScancodeRightBracket][td][b]k_ERemotePlayScancodeRightBracket[/b][/td][td]48[/td][td]Right Bracket[/td][/tr] [tr=k_ERemotePlayScancodeBackslash][td][b]k_ERemotePlayScancodeBackslash[/b][/td][td]49[/td][td]Backslash[/td][/tr] [tr=k_ERemotePlayScancodeSemicolon][td][b]k_ERemotePlayScancodeSemicolon[/b][/td][td]51[/td][td]Semicolon[/td][/tr] [tr=k_ERemotePlayScancodeApostrophe][td][b]k_ERemotePlayScancodeApostrophe[/b][/td][td]52[/td][td]Apostrophe[/td][/tr] [tr=k_ERemotePlayScancodeGrave][td][b]k_ERemotePlayScancodeGrave[/b][/td][td]53[/td][td]Grave[/td][/tr] [tr=k_ERemotePlayScancodeComma][td][b]k_ERemotePlayScancodeComma[/b][/td][td]54[/td][td]Comma[/td][/tr] [tr=k_ERemotePlayScancodePeriod][td][b]k_ERemotePlayScancodePeriod[/b][/td][td]55[/td][td]Period[/td][/tr] [tr=k_ERemotePlayScancodeSlash][td][b]k_ERemotePlayScancodeSlash[/b][/td][td]56[/td][td]Slash[/td][/tr] [tr=k_ERemotePlayScancodeCapsLock][td][b]k_ERemotePlayScancodeCapsLock[/b][/td][td]57[/td][td]CapsLock[/td][/tr] [tr=k_ERemotePlayScancodeF1][td][b]k_ERemotePlayScancodeF1[/b][/td][td]58[/td][td]F1[/td][/tr] [tr=k_ERemotePlayScancodeF2][td][b]k_ERemotePlayScancodeF2[/b][/td][td]59[/td][td]F2[/td][/tr] [tr=k_ERemotePlayScancodeF3][td][b]k_ERemotePlayScancodeF3[/b][/td][td]60[/td][td]F3[/td][/tr] [tr=k_ERemotePlayScancodeF4][td][b]k_ERemotePlayScancodeF4[/b][/td][td]61[/td][td]F4[/td][/tr] [tr=k_ERemotePlayScancodeF5][td][b]k_ERemotePlayScancodeF5[/b][/td][td]62[/td][td]F5[/td][/tr] [tr=k_ERemotePlayScancodeF6][td][b]k_ERemotePlayScancodeF6[/b][/td][td]63[/td][td]F6[/td][/tr] [tr=k_ERemotePlayScancodeF7][td][b]k_ERemotePlayScancodeF7[/b][/td][td]64[/td][td]F7[/td][/tr] [tr=k_ERemotePlayScancodeF8][td][b]k_ERemotePlayScancodeF8[/b][/td][td]65[/td][td]F8[/td][/tr] [tr=k_ERemotePlayScancodeF9][td][b]k_ERemotePlayScancodeF9[/b][/td][td]66[/td][td]F9[/td][/tr] [tr=k_ERemotePlayScancodeF10][td][b]k_ERemotePlayScancodeF10[/b][/td][td]67[/td][td]F10[/td][/tr] [tr=k_ERemotePlayScancodeF11][td][b]k_ERemotePlayScancodeF11[/b][/td][td]68[/td][td]F11[/td][/tr] [tr=k_ERemotePlayScancodeF12][td][b]k_ERemotePlayScancodeF12[/b][/td][td]69[/td][td]F12[/td][/tr] [tr=k_ERemotePlayScancodeInsert][td][b]k_ERemotePlayScancodeInsert[/b][/td][td]73[/td][td]Insert[/td][/tr] [tr=k_ERemotePlayScancodeHome][td][b]k_ERemotePlayScancodeHome[/b][/td][td]74[/td][td]Home[/td][/tr] [tr=k_ERemotePlayScancodePageUp][td][b]k_ERemotePlayScancodePageUp[/b][/td][td]75[/td][td]Page Up[/td][/tr] [tr=k_ERemotePlayScancodeDelete][td][b]k_ERemotePlayScancodeDelete[/b][/td][td]76[/td][td]Delete[/td][/tr] [tr=k_ERemotePlayScancodeEnd][td][b]k_ERemotePlayScancodeEnd[/b][/td][td]77[/td][td]End[/td][/tr] [tr=k_ERemotePlayScancodePageDown][td][b]k_ERemotePlayScancodePageDown[/b][/td][td]78[/td][td]Page Down[/td][/tr] [tr=k_ERemotePlayScancodeRight][td][b]k_ERemotePlayScancodeRight[/b][/td][td]79[/td][td]Right[/td][/tr] [tr=k_ERemotePlayScancodeLeft][td][b]k_ERemotePlayScancodeLeft[/b][/td][td]80[/td][td]Left[/td][/tr] [tr=k_ERemotePlayScancodeDown][td][b]k_ERemotePlayScancodeDown[/b][/td][td]81[/td][td]Down[/td][/tr] [tr=k_ERemotePlayScancodeUp][td][b]k_ERemotePlayScancodeUp[/b][/td][td]82[/td][td]Up[/td][/tr] [tr=k_ERemotePlayScancodeKeypadDivide][td][b]k_ERemotePlayScancodeKeypadDivide[/b][/td][td]84[/td][td]Keypad Divide[/td][/tr] [tr=k_ERemotePlayScancodeKeypadMultiply][td][b]k_ERemotePlayScancodeKeypadMultiply[/b][/td][td]85[/td][td]Keypad Multiply[/td][/tr] [tr=k_ERemotePlayScancodeKeypadMinus][td][b]k_ERemotePlayScancodeKeypadMinus[/b][/td][td]86[/td][td]Keypad Minus[/td][/tr] [tr=k_ERemotePlayScancodeKeypadPlus][td][b]k_ERemotePlayScancodeKeypadPlus[/b][/td][td]87[/td][td]Keypad Plus[/td][/tr] [tr=k_ERemotePlayScancodeKeypadEnter][td][b]k_ERemotePlayScancodeKeypadEnter[/b][/td][td]88[/td][td]Keypad Enter[/td][/tr] [tr=k_ERemotePlayScancodeKeypad1][td][b]k_ERemotePlayScancodeKeypad1[/b][/td][td]89[/td][td]Keypad 1[/td][/tr] [tr=k_ERemotePlayScancodeKeypad2][td][b]k_ERemotePlayScancodeKeypad2[/b][/td][td]90[/td][td]Keypad 2[/td][/tr] [tr=k_ERemotePlayScancodeKeypad3][td][b]k_ERemotePlayScancodeKeypad3[/b][/td][td]91[/td][td]Keypad 3[/td][/tr] [tr=k_ERemotePlayScancodeKeypad4][td][b]k_ERemotePlayScancodeKeypad4[/b][/td][td]92[/td][td]Keypad 4[/td][/tr] [tr=k_ERemotePlayScancodeKeypad5][td][b]k_ERemotePlayScancodeKeypad5[/b][/td][td]93[/td][td]Keypad 5[/td][/tr] [tr=k_ERemotePlayScancodeKeypad6][td][b]k_ERemotePlayScancodeKeypad6[/b][/td][td]94[/td][td]Keypad 6[/td][/tr] [tr=k_ERemotePlayScancodeKeypad7][td][b]k_ERemotePlayScancodeKeypad7[/b][/td][td]95[/td][td]Keypad 7[/td][/tr] [tr=k_ERemotePlayScancodeKeypad8][td][b]k_ERemotePlayScancodeKeypad8[/b][/td][td]96[/td][td]Keypad 8[/td][/tr] [tr=k_ERemotePlayScancodeKeypad9][td][b]k_ERemotePlayScancodeKeypad9[/b][/td][td]97[/td][td]Keypad 9[/td][/tr] [tr=k_ERemotePlayScancodeKeypad0][td][b]k_ERemotePlayScancodeKeypad0[/b][/td][td]98[/td][td]Keypad 0[/td][/tr] [tr=k_ERemotePlayScancodeKeypadPeriod][td][b]k_ERemotePlayScancodeKeypadPeriod[/b][/td][td]99[/td][td]Keypad Period[/td][/tr] [tr=k_ERemotePlayScancodeLeftControl][td][b]k_ERemotePlayScancodeLeftControl[/b][/td][td]224[/td][td]Left Control[/td][/tr] [tr=k_ERemotePlayScancodeLeftShift][td][b]k_ERemotePlayScancodeLeftShift[/b][/td][td]225[/td][td]Left Shift[/td][/tr] [tr=k_ERemotePlayScancodeLeftAlt][td][b]k_ERemotePlayScancodeLeftAlt[/b][/td][td]226[/td][td]Left Alt[/td][/tr] [tr=k_ERemotePlayScancodeLeftGUI][td][b]k_ERemotePlayScancodeLeftGUI[/b][/td][td]227[/td][td]Left GUI (windows, command, meta, etc.)…
[/td][/tr] [tr=k_EResultAccountAssociatedToMultiplePartners][td][b]k_EResultAccountAssociatedToMultiplePartners[/b][/td][td]90[/td][td]The current account has been associated with multiple partners.[/td][/tr] [tr=k_EResultNotModified][td][b]k_EResultNotModified[/b][/td][td]91[/td][td]The data has not been modified.…