[JS]拼图游戏外挂开发实战
我在玩诛仙3,这个游戏本身做得很好,很精致,同时它的官网会时不进推出些活动,今天晚上就是跨年了,完美给我们的礼物就是一个拼图游戏,好像拼得越快资历越好,我这人手拙眼穷,肯定是最慢的。但我有代码呀,呵呵!
F12下去,打开了游戏页面的前端代码,看到它把一张图放到了5X5的矩阵里,形成25个小格子,其实每个格子就是一个DIV,每个DIV用background来显示图片,但图片是同一张,也就是原图,只是做了偏移,background-position不同而已……
这些细节我也研究了很久,甚至写出了模拟移动方格的代码,发现js要模拟鼠标的点击没问题,但要模拟移动还真没什么办法,于是干脆摆格子算了,
于是我写出了如下代码:
function good(){ var x=0; var y=0; $(".play_cell").each(function(){ if(x>=5){ y++; x=0; } if(y>=5){ console.log("Y === 5 "); return 0; } var xx = x*(-116); var yy = y*(-116); xx = xx+"px"; yy = yy+"px"; $(this).css("background-position", xx+" "+yy); x++; }); x=2; $(".play_cell").each(function(){ if(x-->0){ var xx= x*(-116); xx = xx+"px"; var yy = "0px"; $(this).css("background-position", xx+" "+yy ); }else{ return 0; } }); }
你看,我还特意留下最后一格不拼完呢。因为,还要手动移动格子去触发游戏的评分机制。
可是我失败了,系统没有提示我过关了。我想如果是我做游戏,肯定会有一个数组做为背景,不会直接去识别DIV内容的。细看之下,果不其然,有这么一段:
check: function() { this.e_playCount.html(++this.playCount); if(this.ranArr.join() == this.imgArr.join()) { this.success(); } },
这个就是游戏最后判断通关与否的关键了,哈哈,他直接比对两个数组是否相等,很显然,一个数组是随机生成的,一个是移动图片后产生的,我才懒得往下看呢,直接在这里插入了流氓的一句:
this.ranArr = this.imgArr;
再一动,果然有效,可是系统提示“请按规则进行游戏”。
难不成还有什么机制防作弊不成?
我看看它的结果提交过程吧:
success: function() { /*alert("ok"); this.score += this.scoreArr[this.level] this.e_playScore.html(this.score);*/ // alert("ok"); console.log(typeof(this.timer)+'======'); clearInterval(this.timer); console.log(this.timer); // alert(this.useTime); var time = this.useTime; $.ajax({ url: "/zhuxian/patch/patchDone", type: "POST", dataType: "json", data: { time: this.useTime }, success: function (data) { if(data.success){ if(data.status!=20){ updateScore(data.score); updateBest(data.best); if(data.count==5){ rankList(); } alertMsg("恭喜您","本次耗时"+formatTime(time)+", 今天已经完成"+data.count+"次拼图"); }else{ alertMsg("恭喜您","拼图完成,"+"本次耗时"+formatTime(time)); } }else{ alertMsg("提示",data.message); } } });
看吧,写这游戏的人肯定也是匆匆完成,调试代码还留那了,重点是这个提交仅有的参数是时间呀,所以我唯一能暴露的就是时间呀,那它能判断我作弊也想必是根据时间来的,完成太快了,低于某个点就认为作弊。
这还不容易,我把一切准备好,等会再提交不就行了么。于是我用几毫秒的时间把图拼好——其实拼不拼都不重要了,然后就等二十秒再最后操作游戏触发提交事件。
成功了,成绩是二十秒。神一样的速度。当然这个时间还可以多实验下,不知道它的下限是多少。我懒得弄了。
标签: JS
日历
最新微语
- 有的时候,会站在分叉路口,不知道向左还是右
2023-12-26 15:34
- 繁花乱开,鸟雀逐风。心自宁静,纷扰不闻。
2023-03-14 09:56
- 对于不可控的事,我们保持乐观,对于可控的事情,我们保持谨慎。
2023-02-09 11:03
- 小时候,
暑假意味着无忧无虑地玩很长一段时间,
节假意味着好吃好喝还有很多长期不见的小朋友来玩...
长大后,
这是女儿第一个暑假,
一个半月...
2022-07-11 08:54
- Watching the autumn leaves falling as you grow older together
2018-10-25 09:45
分类
最新评论
- Goonog
i get it now :) - 萧
@Fluzak:The web host... - Fluzak
Nice blog here! Also... - Albertarive
In my opinion you co... - ChesterHep
What does it plan? - ChesterHep
No, opposite. - mojoheadz
Everything is OK!... - Josephmaigh
I just want to say t... - ChesterHep
What good topic - AnthonyBub
Certainly, never it ...
发表评论: