1.前言

最近「羊了个羊」这个游戏真是风靡一时,好多人都在玩,比如说我室友曾经一上午的课都没听,玩了一上午也没加入羊群哈哈。

这个游戏里面获得道具需要看广告,而且每种道具只能使用一次,可以说难度非常大,还有特别多无解的局。前几天看到了他的开源项目,就可以自己搭建一个无限道具,没有广告的私服了!

2.项目地址

原项目地址:

Gitee:

后端代码:(yang-server)https://gitee.com/qierkang/yang-server

前端代码:(yang-game)https://gitee.com/qierkang/yang-game

Github:

后端代码:(qierkang/yang-server)https://github.com/qierkang/yang-server

前端代码:(qierkang/yang-game)https://github.com/qierkang/yang-game

此外还有另一个大佬改进之后的后端仓库:(SleepyAsh0191/sheep-n-sheep-backend)随便用java写的自制羊了个羊服务端,写的很垃圾:https://github.com/SleepyAsh0191/sheep-n-sheep-backend

这个似乎功能更全一些,而且似乎每天会自动更新关卡,非常方便好用。

3.搭建流程

3.1获取代码

首先要做的就是Clone这些源代码了。前端代码是必须要下载下来的,后端代码如果有编译好的jar包的话就可以只下载编译好的jar包而不用下载源代码。(比如那个改进版本的仓库的Actions里面就有编译好的jar包)

3.2修改代码并打包jar包

如果第一步直接下载好了打包后的jar包,就可以跳过这一步。

如果你是用的是原本的后端代码文件而不是修改后的文件的话,直接编译运行是无法进入游戏的。因为羊了个羊的前端每天发送的请求参数都是当天的日期,而原版的后端是把地图数据直接写在代码里的(只有2022年9月15日当天的地图数据)

因此需要修改一下。

需要修改yang-server-master\src\main\java\com\ek\yang\controller\MapDataController.java

可以看到这样一段代码:

public class MapDataController {
    @Resource

    private RestTemplate restTemplate;
    @RequestMapping("/map_info")

    public Response getMapData(@RequestParam("map_id") Integer id) {
        if (id == 90015) {
            return new Response<>(0, "",new Data("62ce3c318a2da751dba21fd8", 90015, "2022-09-14T11:28:28.327Z", "{\"widthNum\":8,\"heightNum\":10," +

其中的90015代表的就是请求关卡地图时的参数,代表9月15日。需要修改为当天的日期当天才能使用。

比如可以改为90022。

当然还有一些其他的地方可以修改,比如可以修改默认账号的个人信息等等。

由于这个项目比较简单,她并没有使用数据库,重启之后数据就会清空啦

修改完成后就可以用maven打包了。

mvn package

若未安装,要重新安装:apt install maven

若报错,在其后加-X打包完成后就可以得到yang-server.jar了。

4.后端开启服务器

java -jar -Duser.timezone=GMT+08 yang-server.jar -p 8080

使用命令即可开启服务器。-p参数是指定端口号

5.修改前端地址并连接到后端

前端代码的这个文件里写了一点服务器地址

yang-game/src/settings.4b50e.js

server: "https://cat-match-static.easygame2021.com/catMatch/sheep_1_2_8/",

这个地方改成自己服务器的地址(不过好像关键并不是改这个)

似乎这个文件才是关键:

yang-game/assets/resources/index.8b75c.js

找到这个部分:

"data-env": [function(t, e, o) {
        "use strict";
        cc._RF.push(e, "2af60/iE7lNdKoauwbjspyW", "data-env"),
        Object.defineProperty(o, "__esModule", {
            value: !0
        }),
        o.getLocalEnvConfig = o.getEnvConfig = void 0;
        var n = t("./data-type")
          , a = n.ENV.online
          , i = {
            local: {
                evn: n.ENV.local,
                host: "http://192.168.31.86:8080",
                reportPrefix: "local_"
            },
            beta: {
                evn: n.ENV.beta,
                host: "http://192.144.195.86",
                reportPrefix: "beta_"
            },
            online: {
                evn: n.ENV.online,
                host: "http://139.196.92.142:8080",
                reportPrefix: "sheep_"
            },
            onlineWx: {
                evn: n.ENV.onlineWx,
                host: "http://139.196.92.142:8080",
                reportPrefix: "sheep_wx_"
            },
            leiTing: {
                evn: n.ENV.leiTing,
                host: "http://maowgameos1.leiting.com:8080",
                reportPrefix: ""
            },
            onlineOppo: {
                evn: n.ENV.onlineOppo,
                host: "http://139.196.92.142:8080",
                reportPrefix: "sheep_oppo_"
            },
            onlineVivo: {
                evn: n.ENV.onlineVivo,
                host: "http://139.196.92.142:8080",
                reportPrefix: "sheep_vivo_"
            }

把这些的host都改成你自己的服务器的地址即可连接到你的服务器。

6.部署并打开前端页面开玩

前端页面不需要什么环境,直接放在哪访问就能进去(小心跨域)。

电脑运行方式,是在开发者模式下开启模拟移动设备,但当第二关结束后要跳转时,火狐浏览器失败。微信浏览器第一次加载时,要多刷新。