割草机大战甜瓜大陆(不是)

Originally published at: https://barz.foo/works/割草机大战甜瓜大陆(不是)/

一开始的标题起的是 “________,但是 ____ .txt” 的 (x)

至于为什么是割草机和甜瓜……

以下可能会涉及一些对大多数人有些艰深的电脑操作,在继续阅读和依样画葫芦操作之前,请确认你已掌握包括但不限于下述的技能:

  • 有一台 Windows PC
    • 以避免提出“我 XX 手机能不能用”这样的蠢问题。
  • 高中水平的英文阅读
    • 如果看不惯我这口气,可以自己去下面参考链接看我参考的文档。
  • 连接到国际互联网
    • 如果遇到了我也没遇到的错误,可以去问问其他人。
  • 正确的下载和安装到需要的软件
    • 以避免下载到“XX下载器”等而产生的各种蠢问题。
  • 编辑文本文件
    • 记事本能用,但是如果会用一个代码编辑器会更好
  • 从归档文件中提取文件
    • 或者更常见的说法,解压。
    • 以避免出现直接在归档文件中运行然后压缩软件解压到临时目录而产生的各种错误。

参考链接


(国际服 3.3 测试通过,3.4 和国服未测试,已知 MelonLoader 目前不兼容 3.5)

取得不同版本的游戏客户端

因为私服和模组可能还没对最新版适配。

GitHub 上有一个收集了各版本链接的仓库: https://github.com/MAnggiarMustofa/GI-Download-Library ,用法也在那里。

开割草机

为什么要开私服?为了方便瞎搞不被 ban 啊(x)

所以割草机就是这个: https://github.com/Grasscutters/Grasscutter ,安装方法也写在那里了。简单来说有下面这几步。

  • 安装依赖。(下面的链接适用于 Windows,如果你要在其他系统上把 Grasscutter 运行起来,那你应该也有足够的智慧自己安装下面依赖的软件 :-))
  • 下载 Grasscutter : https://github.com/Grasscutters/Grasscutter/releases
  • 运行 Grasscutter JAR,它会创建好配置文件和需要的目录。
    • 将下载的 jar 放到一个新建的文件夹里,然后打开它。
    • Shift+右键点击,选择“在此处打开 PowerShell 窗口”。(如果有安装 Windows 终端的话,也可以选择“在终端中打开”)
外部媒体
  • 在终端中运行 java -jar .\grasscutter.jar ,创建默认配置文件和需要的目录。当看到红色的 ERROR 时,按 Ctrl + C 停止。(或者直接关掉窗口)
外部媒体
  • 取得资源文件和默认的 CA 证书文件,放置到相应的目录。
    • Resources -> resources/
    • The Keystore File -> keystore.p12
    • 如果上面的链接失效或要求登录,可以去 Grasscutter 的 Discord 找找看。(链接在 GitHub 仓库页面,然后会发现已经有人做好了整合包
  • 再次运行 java -jar grasscutter.jar 如果需要的话,可以添加 -handbook 参数生成命令参考。
外部媒体

如果需要,可以修改配置文件(config.json),需要关注的地方在下面注释描述的那些地方了。但是 JSON 不支持注释,所以别直接把下面的复制过去。以及修改完配置文件以后记得重启一下服务器。

{
  // 各个资源文件的路径。
  "folderStructure": {
    "resources": "./resources/",
    "data": "./data/",
    "packets": "./packets/",
    "scripts": "resources:Scripts/",
    "plugins": "./plugins/"
  },

// 数据库连接信息。
“databaseInfo”: {
“server”: {
“connectionUri”: “mongodb://localhost:27017”,
“collection”: “grasscutter”
},
“game”: {
“connectionUri”: “mongodb://localhost:27017”,
“collection”: “grasscutter”
}
},// 上面的如果看不懂就别动。
“language”: {
// 输出的语言和后备设定。
“language”: “en_US”,
“fallback”: “en_US”,
“document”: “EN”
},
“account”: {
// 在登录时自动创建账户?
“autoCreate”: false,
// 是否允许在控制台重置密码,目前这项设置为 true 时会导致游戏登录一定失败,
// 所以用完记得改回来。
“EXPERIMENTAL_RealPassword”: false,
// 默认权限,如果想偷懒的话,留空或者 “" 就好。
“defaultPermissions”: [],
// 服务器允许的玩家上限, -1 即不限。
“maxPlayer”: -1
},
“server”: {
“debugWhitelist”: [],
“debugBlacklist”: [],
“runMode”: “HYBRID”,
“logCommands”: false,
“http”: {
“bindAddress”: “0.0.0.0”,
“bindPort”: 443,
“accessAddress”: “127.0.0.1”,
“accessPort”: 0,
“encryption”: {
// 如果用后述的 Cultivation 启动,这两项可以都设置为 false。
“useEncryption”: true,
“useInRouting”: true,
“keystore”: “./keystore.p12”,
“keystorePassword”: “123456”
},
“policies”: {
“cors”: {
“enabled”: false,
“allowedOrigins”: [
"

]
}
},
“files”: {
“indexFile”: “./index.html”,
“errorFile”: “./404.html”
}
},
“game”: {
“bindAddress”: “0.0.0.0”,
“bindPort”: 22102,
“accessAddress”: “127.0.0.1”,
“accessPort”: 0,
“loadEntitiesForPlayerRange”: 100,
“enableScriptInBigWorld”: false,
“enableConsole”: true,
“kcpInterval”: 20,
“logPackets”: “NONE”,
“isShowPacketPayload”: false,
“isShowLoopPackets”: false,
“gameOptions”: {
“inventoryLimits”: {
“weapons”: 2000,
“relics”: 2000,
“materials”: 2000,
“furniture”: 2000,
“all”: 30000
},
“avatarLimits”: {
“singlePlayerTeam”: 4,
“multiplayerTeam”: 4
},
“sceneEntityLimit”: 1000,
“watchGachaConfig”: false,
“enableShopItems”: true,
“staminaUsage”: true,
“energyUsage”: true,
“fishhookTeleport”: true,
“resinOptions”: {
“resinUsage”: false,
“cap”: 160,
“rechargeTime”: 480
},
“rates”: {
“adventureExp”: 1.0,
“mora”: 1.0,
“leyLines”: 1.0
}
},
“joinOptions”: {
“welcomeEmotes”: [
2007,
1002,
4010
],
“welcomeMessage”: “Welcome to a Grasscutter server.”,
“welcomeMail”: {
“title”: “Welcome to Grasscutter!”,
“content”: "Hi there!\r\nFirst of all, welcome to Grasscutter. If you have any issues, please let us know so that Lawnmower can help you! \r\n\r\nCheck out our:\r\n\u003ctype\u003d"browser" text\u003d"Discord" href\u003d"Discord | Your Place to Talk and Hang Out,
“sender”: “Lawnmower”,
“items”: [
{
“itemId”: 13509,
“itemCount”: 1,
“itemLevel”: 1
},
{
“itemId”: 201,
“itemCount”: 99999,
“itemLevel”: 1
}
]
}
},
“serverAccount”: {
“avatarId”: 10000007,
“nameCardId”: 210001,
“adventureRank”: 1,
“worldLevel”: 0,
“nickName”: “Server”,
“signature”: “Welcome to Grasscutter!”
}
},
“dispatch”: {
“regions”: ,
“defaultName”: “Grasscutter”,
“logRequests”: “NONE”
},
“debugMode”: {
“serverLoggerLevel”: {
“levelInt”: 10000,
“levelStr”: “DEBUG”
},
“servicesLoggersLevel”: {
“levelInt”: 20000,
“levelStr”: “INFO”
},
“logPackets”: “ALL”,
“isShowPacketPayload”: false,
“isShowLoopPackets”: false,
“logRequests”: “ALL”
}
},
“version”: 4
}

修改游戏客户端和安装 MelonLoader

MelonLoader 是适用于 Unity 游戏的一个模组加载器。

以及需要修改客户端让它能够连接到私服。

安装 MelonLoader 的方法大致如此:

安装 RSAPatch 的方法大致如此:

于是修改好的游戏目录应该会是这个样子:

外部媒体

导入证书

如果服务器设定没启动加密,那么这一步可以忽略。

同时你该了解到导入根证书存在的风险。

TL;DR: 双击之前下载到的 keystore.p12 启动证书导入向导,私钥密码是 123456,证书的目标存储选择”受信任的根证书发行机构“。

如果导入正确,在服务器运行时,你应该可以正常的打开 https://127.0.0.1 ,不会收到警告。

外部媒体

用 Cultivation 启动修改后的游戏

Cultivation 是一个自定义的启动器: https://github.com/Grasscutters/Cultivation/blob/main/README_zh-CN.md
但是我没成功过,所以下面的步骤仅供参考。

外部媒体
  • 选择”通过 Grasscutter 连接“。
    • 如果上面的服务器设定里启动了加密,那么旁边的使用 HTTPS 要选中。
  • 然后启动就行。

用 Fiddler 代理流量

假如你像我一样没用上 Cultivation 的话。

Fiddler Classic 在这里下载: https://www.telerik.com/download/fiddler

如果服务器已启用加密,要先做这两步来允许 Fiddler 处理 HTTPS 流量:

  • 启动 Fiddler,打开选项 (Tool – Options)
  • 转到 HTTPS 标签,分别选择 Capture HTTPS CONNECTs 和 Decrypt HTTPS traffic。
外部媒体

转到 FiddleScript 标签,输入下面的内容然后保存:

import System;
import System.Windows.Forms;
import Fiddler;
import System.Text.RegularExpressions;

class Handlers
{
static function OnBeforeRequest(oS: Session) {
if (oS.host.Equals(“overseauspider.yuanshen.com:8888”)) {
oS.oRequest.FailSession(404, “Not Found”, “Not Found”);
}
else if(oS.host.EndsWith(“.yuanshen.com”) || oS.host.EndsWith(“.hoyoverse.com”) || oS.host.EndsWith(“.mihoyo.com”)) {
oS.host = “127.0.0.1”; // This can also be replaced with another IP address.
}
}
};

如果 OK 的话,游戏运行时能够从左侧的日志窗口看到记录:

外部媒体

创建账号

如果 account.autoCreate 设置成 true 的话,可以直接输入一对用户名和密码来创建账户。

如果没有的话,可以在控制台上运行 account create 命令来创建账户,不过我这里创建账户是如果同时设置密码总会报错无效的 UID,所以需要先把 EXPERIMENTAL_RealPassword 设置成 true ,创建完账户以后再用 account resetpass 命令重置密码,然后再改回来……

启动游戏

如果 MelonLoader 安装正确的话,能看到一个有日志的窗口。

外部媒体

安装和使用 MelonLoader 模组

这次用到的模组有这几个 (https://gamebanana.com/mods/426864

– Modified QoL (QoL 修改版,用来调整镜头位置和人物大小)
– First Person mode (第一人称模式)
– FreeCam Mode (解锁镜头视角)
– Updated EmoChanger (改变姿势)

把下载好的 DLL 放到游戏目录下面的 Mods 目录,如果位置正确的话,MelonLoader 的日志里会包含加载了哪些 Mod。

  • QoL 的改变大小功能似乎在初始的主角上会失效,所以记得一开始选另一个。
  • 不要在任何模组的对话框还打开者的时候用菜单登出游戏,否则有概率会在白屏处卡死。

正片开始(笑)

按两下 Ctrl+` 打开 QoL 的主菜单。如果因为屏幕不够高看不到某些选项的话,可以在窗口里面用鼠标拖动调整位置。

外部媒体

要让下面的自定义镜头设定起作用的话,选择 Custom Camera Distance 。如果需要的话,也可以选中下面的 Giant Camera 选项,可以在改变大小的同时调整镜头位置。

接下来调整 Scale 就行了,如果你更中意慢慢变大的 Growth 模式的话,可以打开上面的选项再调整下面的设定看看。

外部媒体

要隐藏左边的冷却计时的话,按 Ctrl + ` ,以及按 ` 可以隐藏一些界面。剩下的就自行发挥了。

至于为什么这截图有点粗糙……放过我这台快十岁的 MacBook Pro 吧 😂