前言
原神是米哈游开发的动作角色扮演游戏,具有动漫风格的开放世界环境,采用基于抽卡的基本免费及道具收费制。建议大家支持正版游戏,本文提供的搭建方法仅用于学习和公益教育之目的,请您在搭建前务必确保完全知悉可能会面临的法律风险。
本文所提供的搭建方法,是基于GitHub开发者提供的Grasscutter项目。该项目使用Java重写的后端逻辑代码,所以严格意义上来讲并不是后端源代码泄露。主要是破解了原神Protobuf的网络通信协议,然后通过代理让游戏端连接到指定的Grasscutter服务器,故搭建后可能无法完全实现正版的功能。所以再次还要呼吁大家支持正版游戏!
资源下载
GitHub |
---|
资源备份
I Agree
部署环境
环境要求
🟠JDK17
🟡Python 3.8+
🟢MongoDB(如果服务器性能较差,安装时建议取消勾选
Install MongoDB Compass
;后续需要管理数据库可以使用Robo 3T等工具;Windows 10以下的系统只兼容4.2-的版本)🔵Mitmproxy(用于流量代理,也可以使用Fiddler等工具)
🟣Notepad++【可选】:Notepad++是文本编辑器,用于编辑配置文件
⚫️7-Zip【可选】:7-Zip是一个开放源码的数据压缩程序,用于解压服务端
✅请确保服务端端口
TCP443
TCP54321
UDP22102
均未被其他程序占用;如在服务器上架设,则还需确保后两个端口在防火墙(安全组)白名单策略中。以上所需的服务端文件及环境工具均可在上文所提供的入口进行下载,也可以自行从官方渠道下载
安装环境
请将环境所需的工具提前下载好,在上文提供的网盘内./服务端/环境与工具
目录下的所有文件,安装位置建议保持默认。总共四个文件
Install MongoDB Compass
(如果安装时勾选这项功能,可能需要更久的安装时间)
Install MongoDB Compass
(如果安装时勾选这项功能,可能需要更久的安装时间)
部署服务端
启动代理
1.解压./服务端/full-grasscutter-dev-#xxx.zip
服务端文件,并进入该文件夹
2.运行文件夹内的proxy.bat
,如果您不希望其他主机连接到服务端,可以删除该文件中的--set block_global=false
参数;或者您想在其他端口运行代理,右键编辑此文件修改54321
为您期望的端口即可,如果留空则默认会监听8080
端口,一般情况下保持默认即可,这里设置的端口就是客户端连接代理所用的端口;如果设置为常见端口可能存在被攻击的风险;
3.运行proxy.bat
后,命令提示符窗口提示Proxy server listening at http://*:54321
表示代理已经启动成功!
连接代理并安装证书
1.设置代理,打开开始-设置-网络和Internet-代理
,如果是服务端在本地搭建就填写127.0.0.1,如果您是连接服务器则填写服务器公网IP
设置-WLAN-详情(连接WLAN网络右侧“i”)-代理
,选择手动
,填写主机名和端口
。iOS/iPad OS:
设置-无线局域网-详情(连接Wi-Fi右侧蓝色“i”)-HTTP代理
,选择手动
,填写服务器IP和端口
。2.设置好代理后,需要下载证书。打开浏览器访问http://mitm.it
,选择您客户端对应操作系统的证书进行下载,如果一切顺利会出现下图页面。之后在对应客户端中安装证书即可
🟠如果进入证书下载页面提示:
If you can see this, traffic is not passing through mitmproxy.
则说明代理没有成功配置,建议重新检查代理的设置情况!🟡注意:如连接服务器代理,中国大陆的服务器可能会因为备案问题被阻断访问。需要在服务器先下载证书,再拷贝到其他设备上进行安装。如果服务器自身无法访问
http://mitm.it
,可以直接在用户配置文件夹进行复制,文件目录:%USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
本地计算机
-文件名保持默认
-密码留空
-证书储存选择将所有的证书都放入下列储存
-浏览
-选择受信任的根证书颁发机构
-下一页
-完成
资源备份
站点提供的免证书自带代理的客户端(文件来源:GenshinProxy项目地址)资源备份
站点中的./genshin-impact-patched.apk
安装包,就可以国际官服和私服切换玩。但如果您的游戏数据在大陆官服,那就意味着您的手机上需要安装两个原神。请谨慎清除数据和卸载,避免后续重新下载。有
Xposed
环境请使用GenshinProxy-release.apk
(需自行在GenshinProxy项目中下载)不支持EDXposed & 原版Xposed
只支持LSPosed
无
Xposed
环境请使用genshin-impact-308-lspatched.apk
(可在上文资源备份
站点中下载)不支持Android 9.0
以下设备!
1.您可以使用上文资源备份
站点中下载./genshin-impact-patched.apk
安装包,首次安装请选择官方服务器
,将游戏所需的资源先下载好。
2.进入后登录HOYOVERSE账号(如果没有请注册HOYOVERSE账号)只是用来下载资源文件,下载完成后退出游戏。如果您本身就玩的是国际服,那正常登录即可(注意:这里登录的是国际服的账号,不是您在服务端创建的账号!)
3.第二次启动时,选择设置
,根据您服务端的信息,填写对应的服务器公网/局域网IP
,并勾选跳过SSL证书检查
。再清除后台启动游戏即可!(如果服务器有配置SSL证书
,那就不需要勾选跳过SSL证书检查
)
ROOT方法:下载.pem格式
证书,root并解锁system分区后手动将证书文件复制到/system/etc/security/cacerts
并重命名为c8750f0d.0
即可
(如果安装多个私服的证书,就需要依次把文件命名为c8750f0d.1
`c8750f0d.2以此类推);如果不能解锁系统分区可参照网盘中
我的私服专用`的模块制作自己私服的CA证书模块,或者安装信任用户证书的模块后直接在Android系统设置中安装为用户证书即可。
iOS:下载证书后发送到手机,直接打开点击安装即可,安装完进入系统设置信任刚才安装的证书。再打开
设置-通用-关于本机-证书信任设置
,将mitmproxy
的开关打开即可修改配置文件并启动服务端
1.如果您有好友联机的需求,则需要修改配置文件。进入服务端文件目录,打开config.json
文件,修改"accessAddress": "127.0.0.1"
这项参数,将127.0.0.1
修改为您服务器的公网/局域网IP,默认仅允许本机连接。其他的参数请参考下文,根据自己的需要酌情修改。
2.运行文件夹内的run.bat
,如果没有报错提示,则说明服务端已经正常运行了。
自定义配置config.json
server.http.bindAddress
server.game.bindAddress
为监听的本地地址,建议保持0.0.0.0
server.http.accessAddress
server.game.accessAddress
为服务器的公网/内网IP
(取决于您在公网/内网联机)默认为127.0.0.1
即只允许本机连接server.dispatch.defaultName
为您的服务器名称server.game.joinOptions.welcomeEmotes
为进入游戏的欢迎表情 id(int 数组)server.game.joinOptions.welcomeMotd
为进入游戏的欢迎语server.game.joinOptions.welcomeMail
为进入游戏的欢迎邮件,成员有title
content
sender
items
,items
成员有物品iditemId
,数量itemCount
,等级itemLevel
server.game.joinOptions.serverAccount
为游戏控制台的资料,成员有avatarId
头像(长的角色id),nameCardId
名片id,adventureRank
冒险等级,worldLevel
世界等级,nickName
昵称,signature
签名account.autoCreate
为是否自动创建账号,默认为false
,如修改为true
,则允许登录不存在的账号时自动创建(不建议开启);account.defaultPermissions
为自动创建的帐号默认拥有的权限(文本型数组)server.game.gameOptions.inventoryLimits
为库存上限server.game.gameOptions.avatarLimits
为单人/联机的队伍角色数量上限server.game.gameOptions.staminaUsage
为是否启用体力系统
{
"folderStructure": {
"resources": "./resources/", //resources文件夹位置
"data": "./data/", // 数据配置
"packets": "./packets/", //数据包文件夹
"scripts": "./resources/Scripts/", //资源脚本位置
"plugins": "./plugins/" //插件目录
},
"databaseInfo": {
"server": {
"connectionUri": "mongodb://localhost:27017", //MongoDB服务器数据库
"collection": "grasscutter" //MongoDB数据库名称
},
"game": {
"connectionUri": "mongodb://localhost:27017", //MongoDB服务器数据库
"collection": "grasscutter" //MongoDB数据库名称
}
},
"language": {
"language": "zh_CN", //当前语言
"fallback": "en_US", //备用语言
"document": "EN" //文件语言
},
"account": {
"autoCreate": false, //自动创建账号 true为开启 false为关闭
"EXPERIMENTAL_RealPassword": false, //自动创建账号固定密码 true为开启 false为关闭
"defaultPermissions": [], //自动创建默认权限 例: [player.,server.]
"maxPlayer": -1 // 服务器最大在线人数
},
"server": {
"debugLevel": "NONE", //调试模式 类型说明:【"NONE","MISSING","ALL"】 NONE: 不显示调试信息,MISSING: 仅显示未知请求,ALL: 全部显示
"DebugWhitelist": [], //调试白名单
"DebugBlacklist": [], //调试黑名单
"runMode": "HYBRID", //运行模式 类型说明: 【"HYBRID","DISPATCH_ONLY","GAME_ONLY"】 HYBRID: 同时运行负载均衡服务器和游戏服务器,DISPATCH_ONLY: 仅运行负载均衡服务器,GAME_ONLY: 仅运行游戏服务器
"http": {
"bindAddress": "0.0.0.0", //监听(所有)IP地址 0.0.0.0
"accessAddress": "127.0.0.1", // 访问(本地)IP地址 127.0.0.1 可选C类IP地址:192.0.0.0 ~ 223.255.255.255
或者 AB类地址 A:1.0.0.0 ~ 127.255.255.255 B:128.0.0.0 ~ 191.255.255.255
"bindPort": 443, //监听端口 443
"accessPort": 0, // 访问端口 自动返回
"encryption": {
"useEncryption": true, //使用加密
"useInRouting": true, //使用开启
"keystore": "./keystore.p12", //密钥路径
"keystorePassword": "123456" //密钥密码
},
"policies": { //策略
"cors": { //CORS 跨域
"enabled": false, //开关 false 关闭
"allowedOrigins": [ //允许的来源 "" 全部
""
]
}
},
"files": {
"indexFile": "./index.html", /// web 主页界面文件路径
"errorFile": "./404.html" //无法访问 web 404 界面文件路径
}
},
"game": {
"bindAddress": "0.0.0.0", //监听(所有)IP地址 0.0.0.0
"accessAddress": "127.0.0.1", // 访问(本地)IP地址 127.0.0.1
"bindPort": 22102, //监听端口 443
"accessPort": 0, // 访问端口 自动返回
"loadEntitiesForPlayerRange": 100, //玩家加载范围 据说调低40左右 降低负载 对低性能机器很友好
"enableScriptInBigWorld": false, //大世界脚本 默认false 开启true
"enableConsole": true, //启用控制台 true
"gameOptions": {
"inventoryLimits": { //库存限制
"weapons": 2000, //武器最大数量
"relics": 2000, //圣遗物最大数量
"materials": 2000, //材料最大数量
"furniture": 2000, //家具最大数量
"all": 30000 //总库存最大数量
},
"avatarLimits": { //人物上限
"singlePlayerTeam": 4, //单人队伍共限制4人
"multiplayerTeam": 4 //联机队伍共限制4人
},
"sceneEntityLimit": 1000, //玩家生成怪物上限
"watchGachaConfig": false, //监控Gacha配置修改
"enableShopItems": true, //商店开关:true
"staminaUsage": true, //体力条开关:true
"energyUsage": false, //元素充能开关:false
"resinOptions": { //树脂选项
"resinUsage": false, //树脂使用开关:false
"cap": 160, //树脂上限160
"rechargeTime": 480 //补给树脂间隔时间
},
"rates": { //爆率
"adventureExp": 1.0, //冒险EXP 1.0
"mora": 1.0, //摩拉 1.0
"leyLines": 1.0 //地脉 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\"https://discord.gg/T5vZU6UyeG\"/\u003e\n",
"sender": "Lawnmower", //发件人署名
"items": [ //发送物品
{
"itemId": 13509, //id[武器] 13509 雾切之回光
"itemCount": 1, //给予数量
"itemLevel": 1 //给予等级
},
{
"itemId": 201, //id[物品] 原石
"itemCount": 99999, //给予数量
"itemLevel": 1 //给予等级
}
]
}
},
"serverAccount": { //服务器帐户好友设置
"avatarId": 10000007, //人物ID
"nameCardId": 210001, //名片ID
"adventureRank": 1, //冒险等级
"worldLevel": 0, //世界等级
"nickName": "Server", //昵称
"signature": "Welcome to Grasscutter!" //签名
}
},
"dispatch": {
"regions": [ //服务器列表区域
{
"Name":"Grasscutter",//名称
"Title":"Grasscutter", //标题
"Ip":"127.0.0.1", //IP地址默认本地127.0.0.1
"Port":"22102" //game.bindPort 22102 端口
},
{
"Name":"Grasscutters",//名称
"Title":"Grasscutter",//标题
"Ip":"127.0.0.1",//IP地址默认本地127.0.0.1
"Port":"22102"//game.bindPort 22102 端口
},
],
"defaultName": "Grasscutters" //默认加载Grasscutters 名称服务器
}
},
"version": 3 //版本 3
}
测试和维护
客户端导入补丁文件
创建账号
在完成服务端搭建后,需要使用文末的account
指令在控制台创建账号才可以登录,当然您也可以选择更改配置文件,允许不存在的账号自动注册(一般不建议开通)。创建账号方法如下,登录的密码在游戏端随便填即可:
语法格式:account create [name] [uid]
使用示例:account create zaneliu 10000
登录小技巧
1.为了避免大量占用服务器资源,在开启代理前,请先打开游戏客户端检查并完成更新
2.确保更新完毕后开启代理,前往
开始-设置-网络和Internet-代理
进行设置,服务器/端口
按照自己所需要连接的服务端配置填写,关闭请勿将代理服务器用于本地(Intranet)地址
,清空请勿对以下条目开头的地址使用代理服务器
编辑框的内容,填写完后点击保存
,开启代理。为了节省服务器资源之后还要关闭代理,所以开启代理后暂时不要关闭设置的页面。3.代理开启成功后,启动客户端,使用创建好的用户名(密码随便填)即可登录,登录进入白屏加载页面后即可关闭代理。
4.无论大陆官服还是国际服,开通代理后登录页面标题一定是
HOYOVERSE
。如果是登录标题页面显示是miHoYo
代表代理未设置成功。5.代理设置成功后国际服登录页面是不会出现四个官方服务器的(
America
Europe
Asia
TW, HK, MO
),正常是不会出现选择服务器的页面(如果只有一个GenshinTJ
服务器是正常的)否则,说明代理未设置成功6.Windows如果无法使用系统代理,请尝试使用云盘中的
米哈游代理转向
软件(易语言开发,报毒属于正常现象)修改卡池
./服务端/全UP池文件/Banners.json
覆盖掉服务端文件夹中的.\data\Banners.json
卡池配置文件为
.\data\Banners.json
,如果需要自行调整,请展开下方收缩框gachaType=200,scheduleId=893
的为常驻池gachaType=301,scheduleId=903
的为角色 UP 池 (多 UP: 增加gachaType
为302,303,304...的成员即可)gachaType=400,scheduleId=913
的为武器 UP 池
多卡池:增加gachaType
为非以上四个值的成员即可,注意客户端只识别以上四个gachaType
值,添加的其他卡池不会显示类型
上文提供的整合包默认为万达桃三UP及前两者专武(专武封面为前者,是客户端内置资源,无法修改)rateUpItems1
为UP五星,rateUpItems2
为UP四星,对应id在Handbook_CHS.txt
中可以找到
需修改prefabPath
previewPrefabPath
titlePath
中的A0**
为对应的卡池id(在卡池顺序.xlsx<span> </span>
中)costItem
为抽卡耗费的货币名称,223
为纠缠之缘,224
为相遇之缘(修改可能会引发错误)sortId
为卡池排序,越大越靠前beginTime
endTime
为卡池开始/结束的10位时间戳softPity
最少几次出,hardPity
最多几次出,eventChance
歪的概率%,如果没有这三项参数可以自行添加bannerType
为STANDARD
表示常驻池,EVENT
表示角色UP池,WEAPON
表示武器UP池(这个参数是不生效的)
OTA升级
.服务端
文件夹下,在操作前请务必备份好原来的数据。
下载上文
资源备份
站点内文件ota-grasscutter-dev#xxx.zip
,解压后可以直接覆盖原完整包!若跨版本更新您可能需要下载全量包(full 开头)或者前往项目地址补齐资源文件。[/scode](注意:有的版本可能需要同步更新相关资源文件,会打包上传,全部覆盖即可)
数据库鉴权【重要】
命令提示符窗口
,运行mongo.exe
mongo.exe
2.切换到admin
数据库
use admin
3.创建一个有权限管理任何数据库的用户,其中yourusername
yourpassword
请替换为你欲创建的用户名和密码
db.createUser({user:"yourusername",pwd:"yourpassword",roles:[{role:"root",db:"admin"}]})
4.设置管理员用户后,开启鉴权。打开命令提示符窗口
,输入mongod.cfg
来编辑数据库配置文件,取消掉security
的注释并修改为
security: authorization: enabled
5.保存后,使用net stop Mongodb
net start Mongodb
命令重启数据库
net stop Mongodb
net start Mongodb
6.管理员用户调整完成后,需要更新config.json
文件的connectionUri
参数,格式mongodb://yourusername:yourpassword@host:port
Linux系统搭建教程
Grasscutter
文件夹下的目录结构如下所示,想要完成配置需要先去Grasscutter仓库下载稳定版本,只取data
keys
grasscutter-x.x.x.jar
和keystore.p12
这四个文件。resources
文件夹则我们手动配置,已经有现成resources
文件Grasscutter_Resources
,我们下载这个项目,将其下的Resources
将其重命名为resources
就可以了。其次就是从Grasscutter_Resources
下载的Resources
文件夹下的BinOutput
可以删掉,然后我们自己补上这个文件仓库地址为gi-bin-output
将该仓库下的2.5.52/Data/_BinOutput
下载到本地后重命名为BinOutput
并放入Grasscutter
文件夹中的resources
中即可。
服务端目录结构:
.
├── data
├── keys
├── grasscutter-x.x.x.jar
├── keystore.p12
└── resources
├── BinOutput
├── ExcelBinOutput
├── Readable
├── Scripts
├── Subtitle
└── TextMap
(🔴注意:在Grasscutter仓库中下载的是发布版本,grasscutter-x.x.x.jar
和Source code (zip)
。如果无法配置,也可以下载分享的文件,所需要的文件都是一样的)
sudo -i
命令1.更新系统依赖及部署常见软件包
apt update -y && apt upgrade -y && apt-get install -y gnupg sudo net-tools vim nano tar zip unzip p7zip-full wget curl git screen htop nload lsof telnet debian-keyring debian-archive-keyring apt-transport-https
2.安装Java17
apt install openjdk-17-jre openjdk-17-jdk
3.安装MongoDB数据库
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo apt-get update
apt install -y mongodb-org
systemctl enable mongod && systemctl start mongod
4.安装Mitmproxy
pip3 install mitmproxy
5.安装Supervisor
sudo apt-get install supervisor
full-grasscutter-Release-x.x.x
),然后运行命令解压zip文件,打开/root/Grasscutter/
目录,运行grasscutter-x.x.x.jar
文件(🔴注意:建议这一步在终端操作,如果是使用文中已经配好的文件,可以直接改
config.json
文件的参数。🟠运行和解压时请注意后面的版本号,按照实际的填写)unzip Grasscutter.zip
cd Grasscutter/
java -jar grasscutter-1.1.0.jar
# 需要注意的是这里输入chs,即简体中文回车即可
The following languages mappings are available, please select one: [default: EN]
> fr jp th cht en id
> ru kr pt chs es vi
> de
Your choice:[EN] chs
2.当页面提示Game Server started on port 22102
,说明已经初始化成功,连续两次Ctrl+C
结束运行即可。
此时在Grasscutter
文件夹下已经多了一个config.json
文件,需要使用vim config.json
命令进行编辑。配置方法详见上文,与Windows配置方法基本一致,需要修改两处IP地址。
full-grasscutter-Release-x.x.x.zip
当中,有proxy.py
和proxy_config.py
的文件,需要在root
目录下,新建名为Mitmproxy
的文件夹,将proxy.py
和proxy_config.py
剪切过去,然后修改proxy_config.py
文件的REMOTE_HOST
参数,填写服务器公网IP即可。proxy.py
文件的内容可以在下文的常见问题
部分找到
# This can also be replaced with another IP address.
USE_SSL = True
REMOTE_HOST = "服务器公网IP"
REMOTE_PORT = 443
(🔴注意:云服务器一般需要在控制台设置安全组;请确保服务端端口TCP443
TCP54321
UDP22102
已添加白名单,且均未被其他程序占用)
1.首先执行命令
cd /etc/supervisor/conf.d/
,然后在此目录下创建下边的两个文件。yuanshen.conf
[program:yuanshen]
user=root
command=nohup java -jar grasscutter-1.1.0.jar &
autorstart=true
directory=/root/Grasscutter/
autorestart=true
startsecs=5
startretries=100
redirect_stderr=true
stdout_logfile=/root/Grasscutter/logs/log.txt
stderr_logfile=/root/Grasscutter/logs/err.txt
mitmproxy.conf
[program:mitmproxy]
user=root
command=mitmdump -s proxy.py --ssl-insecure --set block_global=false --listen-port 8080
autorstart=true
directory=/root/Mitmproxy/
autorestart=true
startsecs=5
startretries=100
redirect_stderr=true
stdout_logfile=/root/Mitmproxy/log.txt
stderr_logfile=/root/Mitmproxy/err.txt
2.在配置文件完毕后,就可以尝试启动服务了
supervisorctl reload # 服务重载
supervisorctl status # 查看状态
3.如果没有报错,一般就配置完毕了,之后需要客户端下载安装证书,具体和上文步骤一致
第一步:准备阶段
确保您有一个Centos7服务器,或者虚拟机! 并且您的服务器已经连上了网络。
需要在您的服务器上部署Docker,如果您还有安装Docker请跟着我做
如果您已经安装Docker请直接跳到第二步
1.挂载阿里云yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2.清理yum
yum clean all
安装必要依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
挂载Docker镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker
yum install docker-ce docker-ce-cli containerd.io
启动Docker
systemctl start docker
设置开机自启
systemctl enable docker
第二步:关闭防火墙和selinux(非必要)
如果您是购买的服务器,请到服务商防火墙配置界面(如腾讯云),设置防火墙策略!!!
逐步开放8080端口、22102端口、444端口、9001端口
一、关闭防火墙systemctl stop firewalld.service
设置防火墙开机不自启systemctl disable firewalld.service
查看防火墙状态firewall-cmd --state
二、关闭selinuxvi /etc/selinux/config
把SELINUX=enable
改成SELINUX=disabled
重启服务器reboot
开机查看selinux状态(disable为关闭)sestatus
第三步:开始部署服务器
一、拉取镜像docker pull evendevil66/grasscutter
可以使用docker images 查看是否拉取成功
二、设置割草机主体(主体“Grasscutter”)
1.此步操作需要您手动完成,下载服务端,并解压到/root目录下
2.如果您已解压成功,使用 可以看到目录下已经多了 目录ls /rootfull-grasscutter-"version"
3.打开服务端目录下的 编辑里面的 默认是127.0.0.1 请更改为您服务器的IP地址(一共2处,都要更改)congfig.jsonaccessAddress
三、运行拉取的镜像docker run -dit \-v /root/grasscutter:/var/grasscutter \-p 444:444 \-p 444:444/udp \-p 22102:22102 \-p 22102:22102/udp \-p 8080:8080 \-p8080:8080/udp \-p 9001:9001 \-p 9001:9001/udp \--name grasscutter \-v /sys/fs/cgroup:/sys/fs/cgroup \--restart always \--privileged=true evendevil66/grasscutter /usr/sbin/init
第二行命令 :为你的割草机存放目录,如果你上一步操作正确,这一步就不会报错/root/full-grasscutter-"version"
测试是否成功运行
在服务器内使用浏览器输入 即可查看运行状态"你的服务器IP地址"+端口号9001
列:我的服务器IP为 浏览器输入:192.168.0.1192.168.0.1:9001
第四步:进入割草机环境docker exec -it grasscutter /bin/bash
supervisorctl
fg grasscutter
完成以上操作就可以开始创建账号了(与Windows相同)
控制台指令
游戏登录后默认有一个名为Server
的好友,您可向其发送指令;也可以在服务端控制台窗口中输入指令;注意部分指令仅可在其中一种途径当中使用
!
或/
🟠请注意,使用
/
隔开的指令或变量代表两者皆可,使用<>
括起来的变量为必填项,使用[]
括起来的变量可省略(省略后如 UID则为你自己,数量/等级等则默认为1)🟡指令只有使用下方
permission
指令授权后,相应用户才可使用
🟢示例:如要给用户UID 114514原石x1919810,查阅得知用法give|g [player] <itemId|itemName> [amount]
,原石 id201
,则可直接控制台输入g 114514 201 1919810
或者give 114514 201 1919810
;或者游戏内聊天发送/g 114514 201 1919810
或者!g 114514 201 1919810
,直接给当前用户的话也可省略UID。如果您觉得很麻烦,可以直接使用指令生成工具来帮助您生成命令,可以点击下面的入口进入。
GrasscutterTools(在线生成) | GrasscutterCommandGenerator(需下载使用) |
---|---|
关于各种物品id都在Handbook_CHS-x.x.x.txt
,文本编辑器(推荐Visual Studio Code等,系统自带记事本无法完全搜索内容)打开后Ctrl+F即可搜索
命令 | 用法 | 权限节点 | 可用性 | 注释 |
---|---|---|---|---|
account | account <create/delete> <用户名> [uid] | 仅服务端 | 通过指定用户名和uid增删账户 | |
broadcast | broadcast <消息内容> | server.broadcast | 均可使用 | 给所有玩家发送公告 |
coop | coop | server.coop | 均可使用 | 强制某位玩家进入指定玩家的多人世界 |
changescene | changescene <场景ID> | player.changescene | 仅客户端 | 切换到指定场景 |
clear | clear <all/wp/art/mat> [UID] | player.clearinv | 仅客户端 | 删除所有未装备及未解锁的圣遗物(art)或武器(wp)或材料(mat)或者所有(all),包括五星 |
drop | drop <物品ID/物品名称> [数量] | server.drop | 仅客户端 | 在指定玩家周围掉落指定物品 |
enterdungeon | enterdungeon <地牢ID> | player.enterdungeon | 仅客户端 | 进入某个地牢 |
give | give [uid] <物品ID/物品名称> [数量] [等级] [精炼等级] | player.give | 均可使用 | 给予指定玩家一定数量及等级的物品 (精炼等级仅适用于武器) |
givechar | givechar | player.givechar | 均可使用 | 给予指定玩家对应角色 |
giveart | giveart [uid] <圣遗物ID> <主属性ID> [<副属性ID>[,<次数>]]... [等级] | player.giveart | 均可使用 | 给予玩家指定属性的圣遗物 |
giveall | giveall [uid] [数量] | player.giveall | 均可使用 | 给予指定玩家全部物品 |
godmode | godmode [uid] | player.godmode | 仅客户端 | 保护你不受到任何伤害(依然会被击退) |
heal | heal | player.heal | 仅客户端 | 治疗队伍中所有角色 |
help | help [命令] | 均可使用 | 显示帮助或展示指定命令的帮助 | |
join | join [多个角色id] | player.join | 仅客户端 | 强制入队角色,跟config.json中的avatarLimits有关(跟队内角色数量上限有关)。用法:join 10000021 10000022 |
kick | kick | server.kick | 均可使用 | 从服务器中踢出指定玩家 (WIP) |
killall | killall [uid] [场景ID] | server.killall | 均可使用 | 杀死指定玩家世界中所在或指定场景的全部生物 |
list | list | 均可使用 | 列出在线玩家 | |
permission | permission <add/remove> <权限节点> | * | 均可使用 | 添加或移除玩家的权限 |
position | position | 仅客户端 | 获取当前坐标 | |
remove | remove [多个角色在队伍中的序号] | player.remove | 仅客户端 | 强制将某个角色从当前队伍中移除。例如remove 1 2 表示将1号和2号角色移除 |
reload | reload | server.reload | 均可使用 | 重载服务器配置 |
resetconst | resetconst [all] | player.resetconstellation | 仅客户端 | 重置当前角色的命座,重新登录即可生效 |
restart | restart | 均可使用 | 重启服务端 | |
say | say | server.sendmessage | 均可使用 | 作为服务器发送消息给玩家 |
setfetterlevel | setfetterlevel <好感等级> | player.setfetterlevel | 仅客户端 | 设置当前角色的好感等级 |
setstats | setstats <属性> <数值> | player.setstats | 仅客户端 | 直接修改当前角色的面板 |
setworldlevel | setworldlevel <世界等级> | player.setworldlevel | 仅客户端 | 设置世界等级(重新登录即可生效) |
spawn | spawn <实体ID> [数量] [等级] | server.spawn | 仅客户端 | 在你周围生成实体 |
stop | stop | server.stop | 均可使用 | 停止服务器 |
talent | talent <天赋ID> <等级> | player.settalent | 仅客户端 | 设置当前角色的天赋等级 |
teleport | teleport [@playerUid] | player.teleport | 均可使用 | 传送玩家到指定坐标 |
tpall | player.tpall | 仅客户端 | 传送多人世界中所有的玩家到自身地点 | |
unlocktower | player.tower | 仅客户端 | 解锁深渊全部层 | |
weather | weather <天气ID> <气候ID> | player.weather | 仅客户端 | 改变天气 |
常见问题
Make sure no other process is using port 443 and try again.
config.json
中的端口,同时修改proxy_config.py
中的端口(注意:一般不建议修改,iOS客户端更改端口可能出现无法连接的问题!)run.bat
提示:系统找不到指定路径
run.bat
文件。请将set JAVA_EXE="Java安装路径"
参数指向正确的Java路径Error: Unable to access jarfile grasscutter-x.x.x.jar
以管理员身份运行
,Linux环境请将权限更改为777
this version of the Java Runtime only recognizes class file versions up to 52.0
run.bat
,则默认使用的Java路径为C:\Program Files\Java\jdk-17.0.2\bin\java.exe
,请检查路径是否被修改或者Java文件是否完整!If you can see this,traffic is not passing through mitmproxy.
🔴如果您在服务端建议优先排查端口是否放行,云服务器一般需要在控制台设置安全组;请确保服务端端口
TCP443
TCP54321
UDP22102
已添加白名单,且均未被其他程序占用;🟠未设置代理:打开
开始-设置-网络和Internet-代理
进行设置,服务器/端口
按照自己所需要连接的服务端配置填写,关闭请勿将代理服务器用于本地(Intranet)地址
,清空请勿对以下条目开头的地址使用代理服务器
编辑框的内容,填写完后点击保存
,开启代理。🟡如果设备中存在其他代理软件,可能会导致您设置的代理失效,请自行检查关闭
🟢需要访问
http://mitm.it
,而不是https://mitm.it
。下载页面并未配置证书,故需要注意访问协议443端口
被占用的问题,🔴很多情况是VMWare占用,如果是服务器还需要排查IIS和Nginx、Apache等;🟠如果排查不到,可以借助命令提示符运行netstat -aon|findstr "端口号"
,输出行末尾的数字为进程PID
,可以使用指令关闭进程taskkill /t /f /pid 进程pid
。如果出现错误:无法终止PID ** (属于PID **子进程)的进程。
,则可以通过任务管理器
直接结束任务
config.json
中的端口,同时修改proxy_config.py
中的端口(注意:一般不建议修改,iOS客户端更改端口可能出现无法连接的问题!)
sudo lsof -i:端口号
来查看,例如443端口:sudo lsof -i:443
2.找到占用程序对应PID,使用命令sudo kill PID
结束占用程序,例如返回的PID值为27,则输入:sudo kill 27
3.如果没有返回结果,就说明已经结束掉了,可以使用sudo lsof -i:端口号
来检查是否已经结束
无法连接服务器,请检查网络设置。错误码:4206
- 没有
mihoyo.com
/hoyoverse.com
子域的请求或者没刷新任何日志,则为客户端代理配置错误 - 有
mihoyo.com
/hoyoverse.com
子域的请求,但报TLS handshake failed
,则为客户端未安装对应服务端的证书,或服务端不能连接到相应域名 - 有
mihoyo.com
/hoyoverse.com
子域的请求,但报拒绝连接等错误,可能是服务端网络问题导致无法连接米哈游服务器
🔵如仍无法解决,可尝试以下操作: - 关闭代理正常启动游戏检查更新完后再次开启代理进入游戏
- 修改
config.json
中server.http.accessAddress
为dispatchcnglobal.yuanshen.com
- 如果是云服务器,小概率可能是运营商的问题;关闭代理后,浏览器访问
mihoyo.com
/hoyoverse.com
检查是否可以正常访问。如无法访问建议联系运营商核实
网络错误
/网络超时
config.json
中server.http.accessAddress
为dispatchcnglobal.yuanshen.com
然后进一遍游戏,如果能进去,就可以将此配置还原连接超时
🔴端口未放行,云服务器一般需要在控制台设置安全组;请确保服务端端口
TCP443
TCP54321
UDP22102
已添加白名单,且均未被其他程序占用;🟢如果修改过配置文件的端口,请检查是否有漏掉的端口参数没有修改
如仍无法进入游戏,请检查服务端代理是否正确运行,是否请尝试重启服务端代理
如果客户端报错-9203,一般为代理问题,已知iOS使用小火箭会存在此问题,可尝试使用https解密生成并信任证书解决。
mihoyo.com
/hoyoverse.com
子域的请求,但报拒绝连接等错误,可能是服务端网络问题导致无法连接米哈游服务器。🟢如果客户端页面一直在检查更新,请尝试关闭代理正常进游戏一次后再连代理进入;检查服务端网络问题,如确实没问题请尝试重启代理端/更换代理端口/重启服务器
目前网络繁忙,请稍后再试(404)
网络响应超时,是否重新登录?
如果是在Linux上搭建出现该问题可能是由于
grasscutter.jar
假运行,或者权限不够。建议检查accessIp
是否缺少参数,game
和http
参数都需要设置,否则会导致运行权限不足。4201
4212
4214
服务端与客户端版本不匹配的情况
,请优先为客户端安装补丁文件
方可解决run.bat
按如下代码框修改文中代码@echo off
chcp 936
set JAVA_EXE="C:\Program Files\Java\jdk-17.0.2\bin\java.exe"
%JAVA_EXE% -jar grasscutter.jar
pause
Exception in monitor thread while connecting to server localhost:27017
如果报错内容为
Exception in thread "main" com.mongodb.MongoTimeoutException
:可以尝试在任务管理器
-服务
中手动启动MonggoDB
服务后重新运行服务端proxy.py
怎么配置?
/root/Mitmproxy
目录下创建proxy.py
和proxy_config.py
,具体请参考下文proxy.py
from mitmproxy import http
from proxy_config import USE_SSL
from proxy_config import REMOTE_HOST
from proxy_config import REMOTE_PORT
class MlgmXyysd_Genshin_Impact_Proxy:
LIST_DOMAINS = [
"api-os-takumi.mihoyo.com",
"hk4e-api-os-static.mihoyo.com",
"hk4e-sdk-os.mihoyo.com",
"dispatchosglobal.yuanshen.com",
"osusadispatch.yuanshen.com",
"account.mihoyo.com",
"log-upload-os.mihoyo.com",
"dispatchcntest.yuanshen.com",
"devlog-upload.mihoyo.com",
"webstatic.mihoyo.com",
"log-upload.mihoyo.com",
"hk4e-sdk.mihoyo.com",
"api-beta-sdk.mihoyo.com",
"api-beta-sdk-os.mihoyo.com",
"cnbeta01dispatch.yuanshen.com",
"dispatchcnglobal.yuanshen.com",
"cnbeta02dispatch.yuanshen.com",
"sdk-os-static.mihoyo.com",
"webstatic-sea.mihoyo.com",
"webstatic-sea.hoyoverse.com",
"hk4e-sdk-os-static.hoyoverse.com",
"sdk-os-static.hoyoverse.com",
"api-account-os.hoyoverse.com",
"hk4e-sdk-os.hoyoverse.com",
"overseauspider.yuanshen.com",
"gameapi-account.mihoyo.com",
"minor-api.mihoyo.com",
"public-data-api.mihoyo.com",
"uspider.yuanshen.com",
"sdk-static.mihoyo.com",
"abtest-api-data-sg.hoyoverse.com",
"log-upload-os.hoyoverse.com"
]
def request(self, flow: http.HTTPFlow) -> None:
if flow.request.host in self.LIST_DOMAINS:
if USE_SSL:
flow.request.scheme = "https"
else:
flow.request.scheme = "http"
flow.request.host = REMOTE_HOST
flow.request.port = REMOTE_PORT
addons = [
MlgmXyysd_Genshin_Impact_Proxy()
]
proxy_config.py(需要根据服务器公网IP地址,自行修改REMOTE_HOST
的参数)
# This can also be replaced with another IP address.
USE_SSL = True
REMOTE_HOST = "服务器公网IP"
REMOTE_PORT = 443
温馨提醒:进游戏之后,请务必尽快关闭代理;长时间开通代理,流量全部走的服务器,可能会有产生高额账单的风险!
GenshinProxy
项目提供的apk支持吗?
资源备份
站点中的./genshin-impact-patched.apk
安装包,就可以在首页自行选择国际官服和私服进行切换。但如果您的游戏数据在大陆官服,那就意味着您的手机上可能需要安装两个原神。请谨慎清除数据和卸载,避免后续重新下载。
GenshinProxy
项目提供的apk为什么打开直接闪退?报错:原神已停止运行
资源备份
站点所提供的的安装包仅支持Android 9.0
以上的设备。您的设备不满足该条件则无法使用。但如果有Xposed
环境请安装GenshinProxy-release.apk
(需自行在GenshinProxy项目中下载)不支持EDXposed & 原版Xposed
只支持LSPosed
对于2.8以及2.8.5(3.0)的特别说明
2.8.5(3.0)大陆官服【客户端+补丁】:
2.8大陆官服【仅补丁】:
2.8.5(3.0)国际服【客户端+补丁】:
2.8国际服【仅补丁】:
4212
4214
服务端与客户端版本不匹配的情况
,请优先为客户端安装补丁文件
方可解决2.8.5X
版本的客户端,都可以连接full-grasscutter-3.0-Beta.X
的服务端
2.8.5(3.0)大陆官服【客户端+补丁】:
2.8大陆官服【仅补丁】:
注意:进入游戏后先召唤三个须弥角色再使用giveall
命令
/give 1068 lv90 多莉
/give 1069 lv90 提纳里
/give all x9999 lv90 c6 r5
第三方启动器
第三方启动器名称 | 访问入口 |
---|---|
TJGLauncher |
版权声明
I Agree
I Agree
I Agree
本文部分原创内容来自以下作者,本站仅做内容的转载及补充。遇到问题请优先通过本文自行排查,请不要乱提issue。如果帮助到了大家请支持以下作者:(排名不区分先后,感谢大佬给予的帮助!)
站点图标 | 访问入口 | 知识共享许可 |
---|---|---|
版权属于:Zane Liu(基于TomyJan、Yaklo、Memorz等作者原创文章的二次创作)
本文仅限于学习和公益教育之目的,任何使用行为请遵守相关法律法规及版权方授权协议,切勿用于违法和盈利用途;本文所提供的资源均来自于互联网,服务端基于开源项目Grasscutter;版权争议与本站无关。您必须在下载后的24小时之内,从您的电脑中彻底删除相关文件。本文使用部分内容的知识共享许可协议中包含相同方式共享,故本文支持CC BY-NC-SA 4.0,转载及二次创作请保留版权信息并指向本站
本文评论已关闭