前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用脚本谜之操作一天通关小游戏

用脚本谜之操作一天通关小游戏

原创
作者头像
草帽lufei
修改2024-05-06 15:51:00
1110
修改2024-05-06 15:51:00
举报

前言

周五公司技术交流群的同事发现的一个网页小游戏,然后链接直接甩到了群里,本着好奇的心态打开看看,没想到还是个宝藏

游戏地址:https://darkroom.lifeka.com/?lang=zh_cn

上手体验

整个页面简单粗糙,属于剧情类,也没攻略之类的,全靠探索,时不时会发生一些奇怪的事件:

有些木头不见了...,“离开”后能做点什么? 不用盯着,有空了看看,点几下就行,还挺休闲的。

深度探索

似乎天气很寒冷,加点柴火后会暖和很多,可以伐木建造屋子,屋子建好后,消息会流传出去,会有人住进小屋。

人多了以后规模就变了,变成了小型村落。

日常能查看陷阱,收获毛皮,牙齿等物资,物资可以和游牧民族进行贸易。

野兽时不时出来袭击一波村民,人口少了三分之一,有时候野兽能带走二分一人口。

随着村落人口增多,规模扩大,各种新的功能自动解锁了,可以建造狩猎小屋,制革屋等,建造好对应屋子后,可以动态调整人口的职业,进行生产制造,解锁的建筑多了,这时候建造新的屋子,木头的消耗跟不上,时不时就得伐木,调整人口去当伐木者;

主打一个卖力干活,砍树

这时候的建筑物不仅需要大量木头,还需要更多的皮革和其他物资了,木头好不容易攒了点,但是皮革又紧缺了。

游戏进行到不同阶段似乎缺的东西也不一样;

周五我只是和龙哥在群里偶尔讨论一下各自村落物资情况,阿姜看到感叹:艹,这是什么好东西?

要下班了,虽然我等苦逼要过周末了,但是村子里的人不能休息呀,都去干活,浏览器没关,先挂个两天,让他们也体验体验加班dog的日常。

周一早上来了一看,哇!这村里的资源,富可敌国了

有资源,有人,盖楼;

不知不觉又解锁了一个新的模式——漫漫尘途

而且捡到一种神奇的物资-外星合金,不知道干什么用的,造外星飞船吗?

阿姜入场

周一下午,阿姜说他也入场了,规模如下

进度加速

阿姜现在开始正常玩的话,进度差我们太多了(毕竟我们上周五都开始了),发现游戏提供有加速功能,速度能提升一倍,果断打开;

村落这里只有伐木和陷阱嘛?还得干活呢,时不时来点工作跟不上呀,过了一会儿阿姜发了个自动伐木,查看陷阱的js脚本

代码语言:js
复制
let time = setInterval(function(){
    const gatherButton = document.getElementById('gatherButton') // 伐木
    const trapsButton = document.getElementById('trapsButton') // 陷阱
    !gatherButton.classList.contains('disabled') && gatherButton.click()
    !trapsButton.classList.contains('disabled') && trapsButton.click() 
}, 1000)

脚本原理 通过分析浏览器中的按钮元素,发现不同的按钮都有id,使用js获取对应按钮的元素id,然后执行click点击事件,然后把这些功能放到一个定时器里,设置每秒执行一次执行脚本 在游戏页面按F12打开浏览器控制台,然后把js脚本粘到控制台中,按回车就可以自动执行伐木,查看陷阱的任务了

会永远伐木和查看陷阱,不在村那个标签都行,弹窗也不影响,发现一秒有点快,告诉我们搞15秒刚好

转场到我和龙哥这边,开启漫漫尘途模式后,可以出发去未知的空间旅行探索,戴上武器,穿上护甲,还有随机得到的特殊能力

漫漫尘途里面的游戏还挺有意思的,每次出发距离有限,还有补给站,如果走的太远,这个世界就烟消云散了

如果在水熏肉足够的情况下返回出发点,就能把路上得到的装备带回来。

要每次出发都探索新的地方,并且把旅行途中得到的新装备带回家,就需要根据现在的位置,路上有哪些补给站,有哪些补给,计算到出发点的距离,查看物资,保证能回家。

出去旅行这个要是能写个脚本就牛逼了,结合最短路径算法之类的,让他自己出去旅行,得到装备再回来,然后再出发旅行,如此循环。艾特了一下阿姜

阿姜回复:你别给我上药,自己写

过了一会儿,阿姜说他出发了未知空间;

喔噻,这进度真快呀

过了几分钟,阿姜又发了一个截图

脚本分析 这个是接上一次的脚本的完善版本,多了两段逻辑首先是获取建造小屋按钮的id,建造陷阱的按钮id,然后获取页面中的木头数量,小屋数量,陷阱数量,最后进行逻辑判断,基于游戏中建造对应的建筑物需要的材料数量,进行判断如果木材够了就建小屋,执行建造小屋按钮的click点击事件陷阱是有上限的,野兽会破坏陷阱,如果陷阱不够了,就造陷阱,执行建造陷阱按钮的click点击事件 执行脚本粘到控制台中,按回车 同理 其他需要点击的按钮,包括弹框中的按钮,都是可以用脚本进行自动处理还有一个脚本思路,把这些脚本改写成油猴脚本,就不用单独打开控制台操作了

阿姜占领了铁矿;

可制造的装备多出来一堆

龙哥也分享了他的能力和地图

在保证工作产出下,还能保持游戏探索,都很厉害,周一结束了;

荒野决战

现在基本建筑物建造已经都完成了,人口日常物资已经都不缺,主要就是去荒野旅行探索,获得了新的材料种类,获得后可以通过材料购买,药剂在战斗后补充生命值方面很好,罗盘指向了西方

荒野上探索到的信息P是补给站,补给站提供水和一些食物,良好的规划在荒野中能走的更远

在荒野沙漠小镇中战斗后得到了枪,这是一种伤害比较高的武器

套索在战斗时非常好用,先牵绊再开一枪,砍一刀轮着来;

荒野地图的西边发现一个坠毁星舰W

拯救了星舰后,解锁了新的玩法——破旧星舰

发现外星合金可以加固飞船船身外壳和引擎,点火起飞后将开着飞船驶向星辰大海

飞船在宇宙中飞行会有各种障碍物,每收到撞击一次,船身生命值减一,看来收集和购买外星合金会很有用

每次去荒野旅行探索,由于背包有限,而且食物和水消耗巨大,出发一般装一半肉和其他物品,在荒野中各种战斗和突发情况都会消耗食物,弹药和补给,严重限制了每次在荒野中探索的距离,能不能突破背包限制?

由于这是一款网页游戏,每次刷新当前游戏的进度不会丢失,点击按钮购买东西,以及建造房屋等没有发送请求,说明当前这个网页小游戏数据可能全部存在本地,在浏览器查看浏览器的开发者工具,查看应用程序中的的storage存储,哇噢...

似乎游戏的所有数据都在一个JSON里面,验证一下,页面中房屋,库存物资等数值都能在JSON中找到,虽然数据层级比较多,放到编辑其中查找还是比较方便的,找了一个物资数据,尝试在控制台中修改 Local storage 的值,发现不好用,换了几个其他的页面数据修改发现也无法生效

说明浏览器页面中的数据不是取的 Local storage 中的值,只是刷新的时候整体取了一下数据,换个思路呢?

在控制台中打印了一下 window 对象,好多和页面数据有关的对象

那数据是不是取的window上绑定的数据呢,仔细逐级打开,对比页面数据,找找关于背包相关的数据,找到后发现无法修改背包物资上限,说明这部分可能是在代码中写死的

接着找找其他数据,然后发现 window.State.stores 对应库存和武器数据,修改一下试试,发现可行

代码语言:js
复制
// 直接修改库存和武器

// 外星合金
window.State.stores["alien alloy"] = 200

// // 子弹
window.State.stores["bullets"] = 200

// // 套索
window.State.stores["bolas"] = 200

既然如此,岂不无敌?

我把这几行代码发到群里给大伙儿乐呵一下,大家伙儿纷纷把 666 打在了公屏上,不一会儿,龙哥发了一行代码

代码语言:js
复制
for(let key in window.State.stores){window.State.stores[key]=9999999999999999}

脚本代码分析 这个循环是把 stores 下的所有对象数据修改为 9999999999999999

紧接着,阿姜发了截图

不一会儿纷纷发出通关截图,看看龙哥的得分;

游戏得分数值比总分还多好几位,发现 bug 一个。

阿姜从周一下午开始入场,周二下午结束,只用一天就通关了,这游戏挺好玩的,可惜了,要怪就怪我发的那几行代码,不然脚本跑着,还能再探索几天

不知道游戏作者看到如此玩法什么感想呢?

欢迎大家讨论交流,如果喜欢本文章或感觉文章有用,动动你那发财的小手点赞、收藏、关注再走呗

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 上手体验
  • 深度探索
  • 阿姜入场
  • 进度加速
  • 荒野决战
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档