
如果你想拥有完整的游戏体验,请不要这样做!我所做的、所写的仅用于编程学习。 如何破解Steam成就 如果你想拥有完整的游戏体验,请不要这样做!我所做的、所写的仅用于编程学习。 要查看该游戏的源代码,你可以在任何支持开发者模式的浏览器上玩网页版。正如官方维基中提到的,游戏有两种内置的作弊系统,例如在浏览器中进入开发者模式,以及订阅【dev.Console】模组在游戏中运行脚本。当然,这款游戏是用JavaScript编写的,这允许玩家和开发者调试和测试游戏功能。我想研究的是如何破解Steam成就。在浏览器的开发者模式中,我发现了一个名为unlockSteamAchievement()的函数。令人惊讶的是,其代码如下: function unlockSteamAchievement(achievementName, i) { try { nativeManager.isUsingGreenworks ? parent.greenworks.activateAchievement(achievementName, function () { }) : parent.steamworksClient.achievement.activate(achievementName); steamAchievements [i ] = 1; } catch (e) { console.error(e); } } 显然,我需要运行命令【parent.steamworksClient.achievement.activate(achievementName)】来激活Steam成就。但问题在于,“achievementName”是什么?它并非Steam页面上显示的成就名称,比如“Nice”“Big Chick”之类的。这个名称本身一定有其他定义。于是,我尝试查看源代码,发现了另一个函数: function initSteam() { if (location.origin === 'https://steam.melvoridle.com') { if (nativeManager.isUsingGreenworks && parent.greenworks.initAPI() && parent.greenworks.init()) connectedToSteam = true; else if (nativeManager.isUsingSteamworks) connectedToSteam = true; else console.log('连接Steam时出错。Steam成就功能将无法使用。'); if (connectedToSteam) game.看起来这是初始化Steam服务的程序。最后这个部分是怎么回事?我追踪到了这里: checkSteamAchievements() { if (!已连接到Steam) return; let 成就ID列表 = []; try { 成就ID列表 = 原生管理器.是否使用Greenworks ? 父级.greenworks.获取成就名称() : this.steamAchievementNames; for (let i = steamAchievements.length; i < 成就ID列表.length; i++) { steamAchievements.push(0); } } ... 然后我注意到了“this.steamAchievementNames”。这段代码包含在“Game”类中,显然它的对象应该是“game”。因此,当我运行命令“game.”在游戏的Steam版本中,输入“steamAchievementNames”会显示一系列成就名称。最后,使用命令“parent.steamworksClient.achievement.activate("...")”可以解锁所有成就。 方法总结: 1. 在Steam版游戏中订阅并启用官方模组【dev.Console】; 2. 输入“game.steamAchievementNames”; 3. 根据上述显示的名称,输入“parent.steamworksClient.achievement.activate("...")”。 完成。
2026-02-18 19:00:12 发布在
Melvor Idle 梅尔沃放置
说点好听的...
收藏
0
0
