0%

Steam挂卡与个人资料页面美化

美化 Steam 个人资料页面,用 ASF 实现自动挂卡。


个人资料页面美化

效果展示

个人资料页面展示

制作艺术作品

想要显示原背景(省事儿)

  1. 选中背景,点击「查看完整大小」,获取背景图片地址。

查看背景地址

  1. 打开 SteamDesign ,填入 Steam 背景地址,点击 「Change BG」,然后点击 「Download Images」下载切好的图片。

Steam切图工具

注:Artwork_Middle.pngArtwork_Right_Top.pngAvatar.png 分别对应展柜的左图、右图以及头像。

想要自定义角色(需要 PS)

视频版: 新模板切图流程

文字版:

  1. 使用 Photoshop 打开 Steam展柜模板.psd

1-打开模板文件

  1. 导入背景 Cloudy Sky 和角色 Asuka

2-导入背景和角色

  1. 调整图层顺序,将背景置于底层,显示出来展柜的位置;移动角色至合适位置。

3-调整图层顺序和位置

  1. 复制背景图层。
  2. 合并背景图层和角色图层。
  3. 根据模板切割图片。根据图层 1 进行选区(Ctrl + 鼠标左键 点击图层),在激活角色图层的情况下按 Ctrl + J 根据选区创建新图层,得到展柜左侧图片;如法炮制根据图层 2 进行选区并得到展柜右侧图片。

4-根据模板切割图片

  1. 快速导出为 PNG。

上传流程

  1. 使用 Chrome/Firefox 等浏览器打开 Steam 个人资料页面,点击「艺术作品」,选择「上传艺术作品」。

上传艺术作品

  1. 起名,选择文件,勾选保证创作,按 F12 打开控制台,输入控制台代码后按下回车:
1
2
3
var num= document.getElementsByName("image_width")[0].value;
document.getElementsByName("image_height")[0].value = num-(num-1);
document.getElementsByName("image_width")[0].value= num*100;

上传艺术作品-控制台

  1. 编辑个人资料,「个人资料背景」选择背景,显示方式为「原始大小」,保存。
  2. 编辑个人资料,「已展示的展柜」选择「艺术作品展柜」,选择刚才上传的图片,保存。

Steam 真是喜欢前端校验。

资源下载

2020 新版展柜模板: 下载

控制台代码: 下载

自动探索队列

Steam 促销活动中,往往需要探索队列获取卡片。

探索队列获取卡牌

探索过程可以使用控制台代码自动完成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
(function _exec(){
var appids,
running = true,
queueNumber,
progressDialog = ShowAlertDialog('探索中', $J('<div/>').append($J('<div/>', {'class': 'waiting_dialog_throbber'}) ).append( $J('<div/>', {'id': 'progressContainer'}).text('获取进度...') ), '停止').done(abort);
function abort(){
running = false;
progressDialog.Dismiss();
}
function retry(){
abort();
ShowConfirmDialog('错误', '是否重试?', '重试', '放弃').done(_exec)
}
function clearApp(){
if(!running)
return;
showProgress();
var appid = appids.shift();
!appid ? generateQueue() : $J.post( appids.length ? '/app/' + appid : '/explore/next/', {sessionid: g_sessionID, appid_to_clear_from_queue: appid} ).done(clearApp).fail(retry);
}
function generateQueue(){
running && $J.post('/explore/generatenewdiscoveryqueue', {sessionid: g_sessionID, queuetype: 0}).done(beginQueue).fail(retry);
}
function beginQueue(){
if(!running)
return;
$J.get('/explore/').done(function(htmlText){
var cardInfo = htmlText.match(/<div class="subtext">\D+(\d)\D+<\/div>/);
if( !cardInfo ){
abort();
ShowAlertDialog('完成','已完成全部3轮探索队列');
return;
}
var matchedAppids = htmlText.match(/0,\s+(\[.*\])/);
if( !matchedAppids ){
retry();
return;
}
appids = JSON.parse(matchedAppids[1]);
queueNumber = cardInfo[1];
appids.length == 0 ? generateQueue() : clearApp();
showProgress();
})
}
function showProgress(){
$J('#progressContainer').html( '<br>剩余' + queueNumber + '个待探索队列, 当前队列剩余' + appids.length + '个待探索游戏' );
}
beginQueue();
}())

ASF自动挂卡

ASF(ArchiSteamFarm)是一个支持同时挂载多个 Steam 账号的挂卡工具。ASF 不需要后台运行任何 Steam 客户端,不需要启动额外进程,而且能为不限数目的 Steam 账号同时挂卡。

安装

下载 ArchiSteamFarm 后解压。

配置

ASF 配置分为两个主要部分:全局配置以及单个 Bot 配置。Bot 是运作在 ASF 进程当中的单个 Steam 账号,ASF 的运作至少需要启动一个 Bot,而 Bot 的数量没有上限,也就是说可以给多个 Steam 账号(Bot)同时挂卡。

ASF 解压后的目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
├── config
│ ├── ASF.json
│ ├── ASF.db
│ ├── Bot1.json
│ ├── Bot1.db
│ ├── Bot1.bin
│ ├── Bot2.json
│ ├── Bot2.db
│ ├── Bot2.bin
│ └── ...
├── ArchiSteamFarm.exe
└── ...

目录结构说明:

  • ArchiSteamFarm.exe:用来启动程序。
  • config:包含ASF进程以及所有 Bot 配置的文件夹。
  • ASF.json:ASF全局配置文件。该配置用来制定ASF进程的行为,全局作用于整个程序。你可以(也应该)根据自身需求修改全局配置。该内容将在下文详述。
  • ASF.db:ASF全局数据库文件。其作为ASF全局持久性存储文件,用来储存一些关键信息。请用户不要编辑该文件。
  • Bot*.json:Bot 配置文件。用来制定该 Bot 的行为,包含所有用于正常运作的信息,配置只会影响该 Bot。
  • Bot*.db:自动生成的 Bot 数据库文件。该文件用来储存 Bot 的关键数据。不要编辑该文件。
  • Bot*.bin:Bot 特殊文件。包含 Steam 安全哈希信息,安全哈希用作 Steam 令牌机制的授权。不要编辑该文件。

最基础的 Bot,可以使用昵称作为文件名,如 sannaha.json,使用默认的策略来给所有游戏挂卡,新手只需创建该配置文件即可:

1
2
3
4
5
{
"Enabled": true,
"SteamLogin": "sannaha",
"SteamPassword": "mypassword"
}

配置说明:

  • Enabled:是否启用该 Bot。
  • SteamLogin:登录 Steam 的用户名,默认值为 null。如果不想让配置文件留有敏感信息,可以保持其默认值 null,但需要在每次启动 ASF 时输入用户名。
  • SteamPassword:登录 Steam 的密码,默认值为 null。如果不想让配置文件留有敏感信息,可以保持其默认值 null,但需要在每次启动 ASF 时输入密码。

基础 Bot 的进阶形式,能够非常细致地调试所需的 Bot 和 ASF 状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
"Enabled": false,
"StartOnLaunch": true,
"SteamLogin": "sannaha",
"SteamPassword": "mypassword",
"SteamParentalPIN": "0",
"SteamApiKey": null,
"SteamMasterID": 0,
"SteamMasterClanID": 0,
"CardDropsRestricted": false,
"DismissInventoryNotifications": true,
"FarmOffline": false,
"HandleOfflineMessages": false,
"AcceptGifts": false,
"IsBotAccount": false,
"SteamTradeMatcher": false,
"ForwardKeysToOtherBots": false,
"DistributeKeys": false,
"UseAsfAsMobileAuthenticator": false,
"ShutdownOnFarmingFinished": false,
"SendOnFarmingFinished": false,
"SteamTradeToken": null,
"SendTradePeriod": 0,
"AcceptConfirmationsPeriod": 0,
"CustomGamePlayedWhileIdle": null,
"GamesPlayedWhileIdle": [
0
]
}

配置说明:

  • Enabled(启用) - bool:默认值为 false。该属性定义 Bot 是否启动。将其启动并不意味着 Bot 开始运作,而是让 ASF “留意”到这是一个有效且配置完毕的 Bot,可以被 Start() 或是 Stop()。该属性能够让你轻松启用与禁用 Bot,而不用去删除配置文件。默认设置下所有 Bot 都被禁用,如果你想要让其生效,需要将其更改为 true
  • StartOnLaunch(随程序启动)- bool:默认值为 true。该属性定义 Bot 是否在 ASF 启动后自动启用。通常你会想将其保持在 true,如果决定将该属性变更为 false,那么需要通过 !start 在 ASF 启动后手动启用 Bot。除非你有理由修改该属性,请将其保持默认。
  • SteamLogin(Steam用户名) - string:默认值为 null。该属性为你用来登录 Steam 的用户名。如果你想要每次启动 ASF 输入用户名,可以保持其默认值 null。这在你不想让配置文件留有敏感信息时可能有所帮助。
  • SteamPassword(Steam密码) - string:默认值为 null。该属性为你登录 Steam 的账户密码。如果你想要每次启动 ASF 输入密码,可以保持其默认值 null。这在你不想让配置文件留有敏感信息时可能有所帮助。
  • SteamParentalPIN(Steam 家长控制 PIN) - string:默认值为”0”,该属性为你的家长控制 PIN。ASF 需要访问家长控制的限制内容,因此如果你之前启用了该特性,需要提供 PIN 码用以解锁。默认值”0”意味着该账户未启用家长控制。你也可将该属性数值设置为 null,这样在启动 ASF 时会被要求手动输入 PIN 码。这在你不想让配置文件留有敏感信息时可能有所帮助。
  • SteamApiKey - string:默认值为 null。该属性为你的 Steam 网页 API 密钥。ASF 在多种情况下需要用到你的 API 密钥,比如接受或拒绝交易请求,因此你需要在此处填写 Steam API 密钥以使功能生效。API 密钥可 点击这里 生成,登录并点击注册便可获得。当中的域名信息对于 ASF 并不重要,可任意填写。需要注意 API 密钥仅对生成该密钥的账户有用,不能将同一密钥用于多个 Bot ,每个 Bot 都拥有自己独有的 API 密钥。另外该属性并不强制要求填写,ASF 会在默认值 null 的情况下正常运作,但这样会削减部分需要密钥的功能,比如接受或是拒绝交易。如果你的账号能够生成和使用 API 密钥,那么非常推荐你填写此项,因为该密钥不仅仅用于交易,还用来启用其他特性与增强已有功能,比如为 !owns 指令使用更为优化的方式,让其可用于私密个人资料,而不单单依靠 Steam 社区功能。
  • SteamMasterID(Steam主ID) - ulong:默认值为 0。该属性为 64 位形式的主 Bot SteamID。主 Bot 拥有执行与 Bot 有关的 ASF 指令权限。如果用户配置主账号且不打算使用任何指令,那么将该属性保持为默认值即可。如果用户想配置副账号,或是执行与 Bot 有关的指令,那就需要填写 SteamID 以控制 Bot。ASF 能够自动接收由 SteamMasterID 发送的好友申请、聊天申请以及交易。另外 ASF 通过 !loot 指令发送物品时也会使用该 SteamID,可以 点击这里 获取 64 位形式的 SteamID。SteamID 的形式诸如 76561198006963719 这样。
  • SteamMasterClanID(Steam主群组ID) - ulong:默认值为 0。该属性与上述类似,但其为能让 Bot 自动加入,参与群聊的 Steam 群组所用的 SteamID。获取群组 SteamID 可在群组页面网址的末尾加上 /memberslistxml/?xml=1,比如 http://steamcommunity.com/groups/ascfarm/memberslistxml/?xml=1,页面当中可在 <groupID64> 标签找到类似于 103582791440160998 这样形式的 SteamID。如果你没有“挂卡群组”,将其保持默认便好。
  • CardDropsRestricted(卡牌掉落限制) - bool:默认值为 false。该属性定义账户是否限制卡牌掉落。卡牌掉落限制意味着该账号只有在游戏游玩 2 小时以上才开始掉落卡牌。可惜目前并没有任何魔法手段来侦测此项,所以 ASF 只能依赖于用户的判断来设定。该属性影响所使用的卡牌掉落算法。设置合理会最大化受益并最大程度减少挂卡的时间。不过目前关于该选项究竟设置 true 还是 false 为好没有明确的定论,如果用户不确定是否该设置此项,建议将其保持默认值 false,如果你留意到 2 小时内没有任何卡牌掉落,可以将其修改到 true 以加速掉落速度。貌似注册较早的账号不需要限制卡牌掉落时间,但这仅仅是理论而已,不该作为规则来用。
  • DismissInventoryNotification(忽略物品通知) - bool:默认值为 true。每张掉落的卡牌都会触发物品通知,Steam 通知系统会告诉你收到了新物品。这可能会相当扰人,而且也没太大意义,因此 ASF 默认将其关闭。如果你仍然想接收这些信息,可将该选项切换为 false
  • FarmOffline(离线挂卡) - bool:默认值为 false。离线挂卡对主账号来说极为有用。要知道挂卡会让你的 Steam 状态显示“当前正在游戏”,这可能会误导你的朋友,让他们以为你真的在玩这款游戏。离线挂卡就能解决这个问题,在你用 ASF 挂卡时,账号不会显示正在玩某款游戏。这功能归功于 ASF 本身不需要登录 Steam 社区的特性,其实该账号的确在玩这款游戏,只不过是处在“半离线”的模式下。离线挂卡依然会增加被挂游戏的游戏时长,并会在个人资料的“最新动态”中显示出来。另外,为 Bot 启用离线挂卡特性会让其不响应指令(直接),这一点在启用副帐号时较为重要。查看:HandleOfflineMessages
  • HandleOfflineMessages(处理离线信息) - bool:默认值为 false。当离线挂卡特性启用时,因为并未登录 Steam 社区, Bot 将不会接受来自 SteamMasterID 的指令。然而,其依然能接收离线信息,也可以进行回复。如果你为副账号使用了离线挂卡特性,将 HandleOfflineMessages 属性设置为 true 就可以给离线的 Bot 发送指令。要留心这项特性基于 Steam 离线信息,并会在自动回复后将其标记为已读,因此该选项并不推荐给主账号使用,因为 ASF 会强制读取并标记所有的离线信息以监听离线指令,这会影响朋友给你发送的离线信息。如果你不确定是否需要启用该特性,请将其保持默认值 false
  • AcceptGifts(接受礼物) - bool:默认值为 false。一旦启用后,ASF 将自动接收 Bot 收到的所有礼物,这不仅仅涉及 SteamMasterID,也包括其他的账号发来的礼物。如果 Bot 已经拥有该游戏,那么就会被收入库存之中。该选项只推荐为副账号设置,通常你不会想让主账号自动接收所有的礼物。须留意那些通过电子邮件发送的礼物并不通过客户端渠道,所以 ASF 不会自动接收那些礼物,必须直接将礼物通过账号发送给其他 Bot 才行。如果你不确定是否该启用这项特性,请将其保持默认值 false
  • SteamTradeMatcher(Steam交易匹配) - bool:默认值为 false。将其设置成 true 时,ASF 会接收来自 SteamMasterID 的捐赠和交易,同时也接受所有关于卡牌的交易。该选项配合 SteamTradeMatcher 公开列表非常有效,但也可以单独使用。要留意该选项涉及到接收和接受交易,因此需要设置好 SteamApiKey。还需要提到的是这项特性只能用来接受普通卡牌和闪卡,ASF 并不会接收背景与表情交易,因为这些的价格变动过于频繁,你需要亲自查看。ASF 将忽略任何不确定的交易内容,因此更像是一个自动交易助手,并不能完全替代你的工作。强烈推荐在启用该选项时使用 ASF 2FA,这样你就不用人工确认每项交易。通常你会为主账号启用该项特性,但也在副账号上启用来囤货。如果你不确定是否该启用这项特性,请将其保持默认值 false
  • IsBotAccount(Bot账号类型) - bool:默认值为 false。该属性用于定义当前 Bot 采用的账号是被看作主号(false),还是被看作小号(true)。ASF 尽可能为两种类型提供更好的兼容性,因此技术上并不需要将小号的这项属性调整为 true,但这么做会让 ASF 更好地调整逻辑。此时,默认值 false 会让 ASF 忽略 SteamMasterID 以外账号的无效交易和好友请求,这对主号来说是没错的。将该属性更改为 true 将直接拒绝无效交易与好友请求,这样更适合小号。该逻辑可能会根据需求在之后版本扩展内容。如果你不确定该如何设定该属性,请将其保持默认值false。
  • ForwardKeysToOtherBots(转发密钥) - bool:默认值为 false。转发密钥在 ASF 至少启用了两个 Bot 的情况下有效。该选项的作用形象描述就是“我有一个key,只想用来挂卡,无所谓哪个 Bot 账号启用这个key。”将该属性设置为 true, Bot 首先尝试自己激活密钥,如果激活不成功(比如已经拥有了这款游戏),那么 Bot 就会将密钥转发给其他 Bot ,供其他账号激活。但这样会很快触发 OnCooldown(激活失败次数过多)状态:账号短时间内激活密钥失败次数达到上限,Steam 就会暂时禁止其激活功能。因此,该属性的合理用法是省去检查哪个账号没有某款游戏的步骤,不宜滥用。如果你不确定是否该启用这项特性,请将其保持默认值 false
  • DistributeKeys(分发密钥) - bool:默认值为 false。当 ForwardKeysToOtherBots 启用时,一个 Bot 如果收到了三个密钥,那么它首先会尝试全部都自己激活,激活失败才会转发给其他 Bot ,以此类推。你可能会想改变这种方式,让首先收到三个密钥的 Bot 只用一个,将另外两个分别转发给 Bot2 和 Bot3。这在你拥有许多相同游戏密钥,想将其分发给所有 Bot 的情况下非常有用。这种情况下效率和成功率更高,因为所有 Bot 只尝试激活一个密钥,所以也会降低触发 OnCooldown 的几率。不过要注意 ForwardKeysToOtherBots 也会影响这个操作,多数情况你可能只想启用两种属性之一,如果这两个属性被同时启用,那么已经激活该游戏的 Bot 在收到密钥后还会将其转发给另一个 Bot ,那么就要注意发送的密钥必须小于 Bot 数量才行。如果你不确定是否该启用这项特性,请将其保持默认值 false
  • UseAsfAsMobileAuthenticator(将 ASF 用作手机认证器) - bool:默认值为 false。该属性决定 ASF 是否为账号启用“ASF 2FA”机制。该特性相当复杂,你可以 点击这里 获知更多信息。该特性可能会锁死你的账号,因此不要在未充分理解 ASF 2FA 的情况下使用。在将其切换至 true 之前,请仔细阅读 Escrow 页面内容。
  • ShutdownOnFarmingFinished(挂卡结束后关闭) - bool:默认值为 false。ASF 在启动后会一直“占据”账号。当指定账号挂卡结束后,ASF 还会进行周期性检查(IdleFarmingPeriod 设定的小时数),如果该账号添加了新游戏,那么将会继续进行挂卡,这过程不用重启进程。这对多数用户来说很有用,毕竟 ASF 能够自动继续挂卡。然而,你可能会想在账号挂卡结束后停止该进程,那可以将该属性设置为 true 来实现。启用之后,ASF 在挂卡完毕后会注销账号,不会再周期性检查或是启用账号。当全部 Bot 挂卡完毕后,ASF 进程也将完全退出。如果你不确定是否该启用这项特性,请将其保持默认值 false
  • SendOnFarmingFinished(挂卡结束后发送所得) - bool:默认值为 false。当某个账号挂卡完毕后,其会自动向 SteamMasterID 发起全部挂卡所得的交易请求,这项功能十分便利。该选项的作用与 !loot 指令一样,因此需要设置 SteamMasterID,同时还需要设置下方介绍的 SteamTradeToken。此外账号需要满足交易条件,除非你使用 ASF 2FA 进行自动化操作,不然需要手动通过电子邮件来确认交易。
  • SteamTradeToken(Steam交易凭证) - string:默认值为 null。如果(SteamMasterID)在其他 Bot 的好友列表里,Bot 可立即发起交易请求,不用操心交易凭证。因此可将该属性维持默认值 null。然而如果你的好友列表不打算列入其他 Bot 账号,就需要生成并输入 SteammMasterID 的交易凭证。于官网登录 Steam 账号, 点击这里 便能查看交易 URL。凭证就是 URL 当中 &token= 之后的 8 位字母。你需要将其复制粘贴到 SteamTradeToken 之中。请记住不要复制整个 URL,只需要凭证代码。
  • SendTradePeriod(发起交易间隔) - byte:默认值为 0。该属性与上述的 SendOnFarmingFinished 作用类似,但有一点不同,该属性并非在挂卡结束后才发起交易,而是以 SendTradePeriod 当中设置的小时数为周期发起。这对想要时常 !loot 其他 Bot 的用户来说很有帮助。默认值 0 禁用了该项特性,如果你想要每隔一天进行收获,就设置该属性数值为 24。如果你不确定是否该启用这项特性,请将其保持默认值 0
  • AcceptConfirmationPeriod(接受验证间隔) - byte:默认值为 0。该属性只有为账号启用 ASF 2FA 情况下生效。最近 Valve 加入了额外的限制,所有发到市场的请求都需要额外的 2FA 验证。该选项与 !2faok 指令功能相同,ASF 会以 AcceptConfirmationPeriod 设置的分钟数为间隔,自动接收所有发起的验证。默认值 0 禁用了该特性,通常来说并不推荐启用该选项。如若启用,请将间隔设置较长时间,比如 30 分钟。如果你不确定是否该启用这项特性,请将其保持默认值 0。
  • CustomGamePlayedWhileIdle(自定义空置游戏) - string:默认值为 null。ASF 空置时意味着无事可做(比如账号挂卡结束),其依然能显示“非Steam游戏中:CustomGamePlayerdWhileIdle”。默认值 null 禁用该特性。
  • GamesPlayedWhileIdle(空置进行游戏) - HashSet:默认值为 0 。与上面较为类似,如果 ASF 不在挂卡状态时其能继续挂载你所指定的游戏。被指定的游戏时长会增长。默认值 0 禁用该特性。

全局配置文件为 ASF.json,内容形式如下:

ASF.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
"Debug": false,
"Headless": false,
"AutoUpdates": true,
"AutoRestart": true,
"UpdateChannel": 1,
"SteamProtocol": 6,
"SteamOwnerID": 0,
"MaxFarmingTime": 10,
"IdleFarmingPeriod": 3,
"FarmingDelay": 15,
"LoginLimiterDelay": 7,
"InventoryLimiterDelay": 3,
"ForceHttp": false,
"HttpTimeout": 60,
"WCFHostname": "localhost",
"WCFPort": 1242,
"LogToFile": true,
"Statistics": true,
"HackIgnoreMachineID": false,
"Blacklist": [
267420,
303700,
335590,
368020,
425280
]
}

配置说明:

  • Debug(调试模式) - bool:默认值为 false。该属性定义程序是否以调试模式运作。调试模式中,ASF 将在可执行文件所在位置创建一个特殊的 debug 文件夹,当中能够包含 ASF 与 Steam 服务器之间的完整通讯内容。调试信息能帮助查找关于网络的问题。除非是开发者需要,用户不要用调试模式运行 ASF。ASF 在调试模式下性能会降低,如非开发者要求记录调试日志,不要将其开启。注意:调试日志包含诸如 Steam 登录密码等敏感信息。所以不要将你的调试日志在任何场所公开。ASF 开发者只会要求将其发送至他的电子邮箱。
  • Headless(无标头模式) - bool:默认值为 false。该属性定义程序是否以无标头模式运行。当处在无标头模式中,ASF 会假定其在服务器上运行,因此不会尝试读取诸如 2FA 码、Steam 令牌码、密码以及任何需要 ASF 操作的宝贵数据。该模式对用服务器运行 ASF 的用户有用,比如在要求 2FA 码时,ASF 将静默终止操作并停用账号。除非用户在服务器上使用 ASF,并确认其能够在非无标头模式下运作,否则请将该属性禁用。无标头模式下将拒绝任何用户的干预,你的账户在需要你的协助的情况下不会启动。这在服务器状态下有用,能够中止任何要求凭证的操作,而非一直等待玩家提供相应信息。
  • AutoUpdates(自动更新) - bool:默认值为 true。该属性定义 ASF 是否在新版本发布时自动更新本体。更新内容相当重要,其不单单会增加新特性,同时也修复 bug、增强性能、提升稳定性等等。该属性启用后,ASF会在新版本发布后自动下载、替换并重启。ASF 会以 24 小时的间隔查询是否有更新内容。更新进程通常只会替换核心可执行程序(ArchiSteamFarm.exe),其不会触及任何配置或是数据库文件。除非用户有充足的理由禁用该特性,请一直将其保持启用。
  • AutoRestart(自动重启) - bool:默认值为 true。该属性定义 ASF 是否在需要时重启。目前唯一可能会让 ASF 重启的事件就是上述的自动更新。但之后可能会有变化。一般说来,重启包含两部分操作:创建新进程,以及退出目前进程。对多数用户来说,将其设定为true是没问题的,然而,如果你通过自己的脚本或是 Mono 运行 ASF,可能想要完全掌控启动进程,以避免 ASF 在别处后台静默启动。这种情况下你可以将其设定为 false。但要记住这种设定下你需要自行重启进程,因为 ASF 只会退出而不会启动新进程,如果你没有添加任何的逻辑语句,ASF 将会在你手动启动之前一直停止运作。ASF 退出时会提供暗示成功(0),和非成功(非 0)的错误代码,这可帮助你在脚本中添加正确的逻辑语句,避免因失败自动重启的情况,或者至少在本地留有一份 log.txt 供之后分析。在 Mono 的部分提供了示例脚本,请记住无论属性如何设置,!restart 指令仍能重启 ASF 进程,!exit 也是同样。除非你有理由禁用该特性,请将其保持启用。
  • UpdateChannel(更新通道) - byte:默认值是 1。该属性定义自动更新的通道,目前 ASF 支持两种通道 - 1 为稳定版,2 为实验版。稳定版通道是默认的发布通道,适合大多数用户。实验版通道不单提供稳定版,还包含为高阶用户及其他开发者用来测试新特性、验证 bug 修复或是给予未来计划特性反馈的预发布版。实验版通常包含未被修复的 bug,尚处在开发中的特性或是重写的实现。如果你不认为自己是高阶用户,请保持默认的 1(稳定版)更新通道。实验版通道适用于了解如何汇报 bug,处理问题以及给予反馈的用户。不提供任何技术支持。如果用户想要完全取消所有新版本的检测,也可以将 UpdateChannel 设置为 0(未知),不推荐这么做,除非是有不想收到更新提示的特定原因。
  • SteamProtocol(Steam协议) - byte:默认值为 6。该属性定义 ASF 内置 Steam 客户端所用的网络协议。目前仅支持 2 种数值 - 6代表特定的 TCP 协议,17 代表特定的 UDP 协议。使用其他数值结果都是采用默认数值 6。在你尝试应对特定防火墙,或是尝试设置代理时,从 TCP 切换到 UDP 可能会有效。UDP Steam 协议目前尚为试验性功能,使用请自担风险。除非你有充足的理由修改该属性,请将其保持默认。
  • SteamOwnerID(Steam所有者ID) - byte:默认值是 0。该属性有点类似每个 Bot 的 SteamMasterID,但是,其中的 SteamID 用以定义 ASF 进程的所有者。SteamMasterID 能够完全掌控 Bot ,但像是 !exit!restart 或是 !update 这样的全局指令只由SteamOwnerID使用。这样做很便利,你可能会想为朋友挂卡,但不允许他们控制ASF进程,比如说通过 !exit 指令退出程序。默认值 0 表示 ASF 进程没有所有者,意味着没有账户能够执行 ASF 全局指令。要记住 WCF 在 SteamOwnerID 提供的状态下才能生效,所以必须提供可用的数值,这在子端机器上也是同样的。
  • MaxFarmingTime(最大挂卡时间) - byte:默认值为 10。你要知道,Steam 并非总是正常运作,有时候可能会发生诸如事实上你在玩游戏,但游戏时间未被记录的怪异情况。ASF 能够让单独挂卡模式下,单款游戏最多挂上 MaxFarmingTime 设定的小时数内,超过时限便认为该游戏挂卡结束。这不仅能防止怪异情况下挂卡停滞的情况发生,也能避免部分情况下 Steam 发布新徽章会停滞 ASF 挂卡进程的情况(查看:Blacklist)。10 小时的默认值应该足够让一款游戏掉落所有的卡片。将该选项设置过低可能会导致部分尚有卡牌的游戏被略过(没错,部分游戏甚至需要 9 小时来挂卡),将其设定过高可能会导致挂卡进程停滞,除非你有足够的理由修改属性,将其保持默认就好。
  • IdleFarmingPeriod(空置挂卡周期) - byte:默认值为 3。当 ASF 没有任何游戏可挂卡时,它会以 IdleFarmingPeriod 属性中设定小时周期,周期性检查是否有新游戏需要挂卡。数值设定为 0 可禁用该特性。也请查看:ShutdownOnFarmingFinished
  • FarmingDelay(挂卡延迟) - byte:默认值为 15。ASF 为了正常运作,会以 FarmingDelay 设定的分钟内定期检查目前挂卡的游戏,判断该游戏是否挂卡完毕。将该数值设置过低会导致发送过多的 Steam 请求,设置过高会让 ASF 在游戏挂卡完毕后依然继续为其挂卡。默认值应该适用于多数用户,不过若是你有许多 Bot 运行,可能需要将其延长至 30 分钟以限制过多的 Steam 请求。由于 ASF 采用基于事件的机制,其会在账户有新物品时检查徽章页面,所以通常我们就不需要按照固定周期进行检查,但对于 Steam 网络传达的信息也不能完全信赖 - 这也就意味着还是需要周期性检查(在 Steam 网络不知会物品掉落信息等情况下)。除非你有足够的理由编辑该选项,请将其保持默认。
  • LoginLimiterDelay(登录间隔延迟) - byte:默认值为 7。如上述提到的那样,Steam 拥有登录请求的数目限制。同时也包含短时间内的过多登录。ASF 通过 LoginLimiterDelay 设定的秒数来限定两次连续登录的时间间隔(排除 2FA 登录的情况,这需要越快越好)。默认值 7 的设定基于同时连接 100 个 Bot 的情况考量,也应该满足大多数用户的需求。用户可能会因为拥有少量 Bot 的情况下降低数值,甚至将其更改为 0,这时候 ASF 将无视延迟并很快连接 Steam。这里需要警示一下,设定太低可能会导致 Steam 暂时封禁你的 IP,让所有的登录都会出现 InvalidPassword(无效密码)报错。除非你有充足的理由修改该属性,请将其保持默认。
  • InventoryLimiterDelay(物品间隔延迟) - byte:默认值为 3。与上述属性类似,获取Steam物品栏信息同样拥有频数限制,需要在物品请求中加入一定间隙。ASF将确保每次物品请求至少留有InvetoryLimiterDelay设置的秒数间隙。默认值3是基于同时连接100个 Bot 的情况考量,也应该满足大多数用户的需求。用户可能会因为拥有少量 Bot 的情况下降低数值,甚至将其更改为0。这是ASF将无视延迟并更快地获取steam物品信息。需要警示的是,将该数值设置过低会导致Steam暂时封禁你的IP,结果就是所有物品请求失败。除非你有充足的理由修改该属性,请将其保持默认。
  • ForceHttp(强制Http) - bool:默认值为 false。默认情况下ASF会优先使用https安全协议。然而,极少数情况下,你可能想要从https切换回http这种兼容性更好的方式。这时候可以将ForceHttp数值设为true。使用该设置并不确保ASF所有请求都以http发送,一些服务(比如GitHub api)仅支持https。这种情况下,没有办法通过http使用这些服务,ASF会直接拒绝发送https请求,其结果就是部分请求失败。如果你并不在调试网络,强烈推荐继续使用安全且加密的https。除非你有充足的理由修改该属性,请将其保持默认。
  • HttpTimeout(Http间隔) - byte:默认值为 60。该属性定义ASF发送HTTP(S)请求的间隙,单位为秒。默认数值60应该适合大多数用户,然而,如果你的网络传输过慢,可能会想提升该数值(比如90)。要记住更大的数值并非修复与Steam服务器连接缓慢或是中止的神药,有时候也不得不接受Steam服务器无响应并之后尝试连接的事实。将该数值设置过高会无故等待,并降低全局性能。除非你有充足的理由修改该属性,请将其保持默认。
  • WCFHostname(WCF主机名) - string:默认值为 "localhost"。这是主机名,也是“全局地址”,由WCF使用。该属性仅在WCF启动时生效。ASF默认仅仅监听来自”localhost”地址以确保没有其他机器能够访问。这是一道安全措施,进入WCF界面可能会让攻击者掌管你的ASF进程,并带来极大影响。然而,当你清楚自己要做什么,比如限制WCF的链接,使用类似iptables的功能,可能会将该属性(自担风险)限制设为较为宽松,比如设置”0.0.0.0”让任意网络地址启动WCF。需记住该属性需要在服务器与客户端上(如果两者不在一台机器上)正确设置。除此以外,用户还可使用数值null。这将导致ASF每次启动都会询问该属性(如果你不想暴露服务器的IP,这可能是有效的安全手段)。除非你有充足的理由修改该属性,请将其保持默认。
  • WCFPort(WCF端口) - ushort:默认值为 1242。这是WCF运行的默认端口。用户可能想要修改该数值,推荐设置超过1024的端口数值,因为在Unix类型操作系统上,0-1024通常需要root权限。记住该属性必须在服务器和客户端(如果两者并非一台机器)上设置一致。除非你有充足的理由修改该属性,请将其保持默认。
  • LogToFile(日志至文件) - bool:默认值为 true。该属性定义ASF是否应该保留最近运行的log.txt文件。之前已经说明,日志文件用于分析ASF行为时十分有用,也是汇报bug时的关键。不过另一方面,如果用户有许多 Bot ,日志文件体积可能会快速增长,为了不让ASF将所有内容记录在日志中,你可能想要重定向标准输出(stdout)至别处。比如说,输出至grep过滤器。这种情况下,你并不对日志文件感兴趣,而且有自己的方式记录日志,便可以将日志记录禁用。然而,在没有手段记录日志的情况下,请将该属性设为默认值true,即便你确定用不到日志文件 - 如果有打算汇报bug,这对ASF开发者查找bug来说至关重要。除非你有充足的理由修改该属性,请将其保持默认。
  • Statistics(统计) - bool:默认值为 true。该属性定义ASF是否启用统计。统计帮助ASF开发者提供开发周期的重要信息。如果你想要看到新版本出炉,bug被修复,以及实现的新特性,请将其保持在默认数值true。目前统计仅包含极少量信息 - 使用ASF的账户将自动加入我们的steam群组与群聊。统计开放给所有人,所以你可以查看我们的群组信息,当中的会员数目以及多少 Bot 正在运行中。我们不会收集任何其他信息,尤其是像密码、steam用户名或是当前使用的操作系统这样的敏感信息,将该特性开启将会帮助ASF开发者们了解目前有多少用户使用该程序。除非你有理由修改属性,请将其保持默认。
  • Blacklist(黑名单) - HashSet<unint>:默认值为 267420303700335590368020425280 这些 appID。很不幸Steam喜欢将夏季/冬季特卖徽章设定为“有卡牌掉落”,这会迷惑ASF,以为他们是可以挂卡的有效游戏。如果没有黑名单的话,ASF将会突然为这些实质上不是游戏的内容挂卡而停滞。Blacklist能让这些徽章不参与挂卡,所以ASF可以在选择要为哪些内容挂卡时静默忽略这些。ASF默认包含两种黑名单 - GlobalBlacklist全局黑名单,嵌入在了ASF进程中,不能被用户编辑。以及普通的Blacklist,也就是这段所描述的内容。该属性的唯一目的就是能让你将不该挂卡的游戏加入。嵌入式黑名单将尽可能快速地更新,因此在你使用最新版本时不用更新自身黑名单。当Valve发布新的特卖徽章时,你可以通过该属性保持ASF的正常运作。除非你有充足的理由修改该属性,请将其保持默认。

配置中属性的数据类型如下:

  • bool:true / false
  • byte:0 ~ 255
  • ushort:0 ~ 65535
  • uint:0 ~ 4294967295
  • ulong:0 ~ 18446744073709551615
  • string:字符串。除非使用 null,字符串应当包含在双引号之中。
  • HashSet<uint>:无符号整形集合,接受任何数字。

启动

运行 ArchiSteamFarm.exe,启动 ASF。根据配置,可能要求输入账号、密码和令牌。

ASF运行中

指令

在 ASF 运行过程中,可以输入 C 键后输入命令:

命令 说明 示例
!2fa 为当前bot生成2FA临时凭证
!2fa <BOT> 为指定bot生成2FA临时凭证
!2fano 否决当前bot所有的验证请求
!2fano <BOT> 否决指定bot所有的验证请求
!2faoff 关闭当前bot的2FA功能
!2faoff <BOT> 关闭指定bot的2FA功能
!2faok 接受当前bot所有的验证请求
!2faok <BOT> 接受指定bot所有的验证请求
!addlicense <appID1,appID2...> 使当前bot激活指定ID的游戏(仅限于免费游戏) !addlicense 440,570
!addlicense <BOT> <appID1,appID2...> 使指定bot激活指定ID的游戏(仅限于免费游戏)
!exit 退出ASF
!farm 重启当前bot的挂卡模块
!farm <BOT> 重启指定bot的挂卡模块
!help 弹出帮助信息(链接到wiki的命令页面)
!help <BOT> 弹出帮助信息(链接到wiki的命令页面)
!leave 让bot离开当前的群组聊天。该指令只有在群组聊天中生效。
!loot 将当前bot所有Steam物品发起交易给SteamMasterID
!loot <BOT> 将指定bot所有Steam物品发起交易给SteamMasterID
!owns <appID,gameName...> 检查当前bot是否已经拥有指定ID(和/或)游戏名(可以是部分游戏名)的游戏 !owns 440,570,!owns 440,dota,!owns roach
!owns <BOT> <appID,gameName...> 检查指定bot是否已经拥有指定ID(以及/或是)游戏名(可以是部分游戏名)的游戏
!pause 暂停/继续当前bot的自动挂卡
!pause <BOT> 暂停/继续指定bot的自动挂卡
!play <appID1,appID2,...> 切换至手动挂卡,让当前bot启动指定ID的游戏。ID使用数值0将会返回自动挂卡状态
!play <BOT> <appID1,appID2,...> 切换至手动挂卡,让指定bot启动指定ID的游戏。ID使用数值0将会返回自动挂卡状态
!redeem <key1,key2,...> 当前bot激活给予的全部密钥
!redeem <BOT> <key1,key2,...> 指定bot激活给予的全部密钥
!rejoinchat 强制所有bot重新加入群聊
!restart 重启ASF进程
!start <BOT> 启动指定的bot
!status 输出当前bot的状态
!status <BOT> 输出指定bot的状态
!statusall 输出所有bot以及ASF本身的状态
!stop 停止当前bot
!stop <BOT> 停止指定bot
!update 检查SF在GitHub的更新(这项操作默认每24小时进行一次)
!version 显示ASF当前版本信息

参考资料
个人资料背景美化展示柜全屏2k模板
ASF官方Wiki中文版 全方位熟练使用ASF挂卡工具

  • 本文作者: SANNAHA
  • 本文链接: https://sannaha.moe/Steam/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!