Single

GenshinTJ

 

 

 

 

本文档没有一句废话!错过任何一个字均可能导致搭建失败,请知悉

注意哦:本文档的所有部分都非常重要!千万不要错过任何一个字,要不很可能搭建失败。如果实在有问题没法解决,再询问我。

如果您没有基础的 IT 知识和 / 或利用搜索引擎的能力甚至不懂提问的艺术,请现在放弃搭建的想法并关闭此文档

此文档中所用到的文件均可在  meow网盘 下载,云盘下载慢请前往 这里 (TomyJan镜像站)查看解决方案,如网盘下载报错 activityLimitReached 请稍后再试或加群去群文件下载,或前往 百度网盘

分享文件说明

./服务端/环境 文件夹下为安装环境所用文件
./服务端/卡池顺序.xlsx 卡池列表,用于修改卡池时参照 id
./服务端/full-grasscutter-dev-xxx_TomyJan.7z 服务端整合包 (目前版本为 5.3 的 #273 打包)
./服务端/up-grasscutter-dev-xxx_TomyJan.7z 服务端升级包 (目前版本为 5.3 的 #273 打包)
./我的私服专用/ys_tj.cer 我的私服用的证书,玉女无瓜请忽略
./我的私服专用/genshintj-ca-cert-module.zip 我的私服专用的 Android CA 证书 Magisk 模块,您可参照此模块制作您自己私服的模块
./米哈游代理转向密码1.zip 用于在无法设置系统代理的 Windows 设备上设置代理
./Handbook_CHS-x.x.x.txt 游戏内各物品与 id 的对照表
./AlwaysTrustUserCerts.zip 用于信任用户证书的 Magisk 模块
./genshin-impact-patched.apk 免 root 可玩私服的国际服客户端 (待测试)

本服务端支持 PC/iOS 端中国官服 / 国际服,Android 等其他客户端仅支持国际服

建议收藏此文档以便获取更新

 

 

分享文件说明

./服务端/环境 文件夹下为安装环境所用文件
./服务端/卡池顺序.xlsx 卡池列表,用于修改卡池时参照 id
./服务端/full-grasscutter-dev-xxx_TomyJan.7z 服务端整合包 (目前版本为 5.3 的 #273 打包)
./服务端/up-grasscutter-dev-xxx_TomyJan.7z 服务端升级包 (目前版本为 5.3 的 #273 打包)
./我的私服专用/ys_tj.cer 我的私服用的证书,玉女无瓜请忽略
./我的私服专用/genshintj-ca-cert-module.zip 我的私服专用的 Android CA 证书 Magisk 模块,您可参照此模块制作您自己私服的模块
./米哈游代理转向密码1.zip 用于在无法设置系统代理的 Windows 设备上设置代理
./Handbook_CHS-x.x.x.txt 游戏内各物品与 id 的对照表
./AlwaysTrustUserCerts.zip 用于信任用户证书的 Magisk 模块
./genshin-impact-patched.apk 免 root 可玩私服的国际服客户端 (待测试)

 

部署服务端

环境要求

Windows x64 (建议 WS2016 + 最低 WS2012R2,过老版本不保证兼容性;Linux 自行解决:如果你真的有自信用 Linux 搭建我相信你用不着看这篇文档)
Java17 (其他版本)
MongoDB (建议安装时注意左下角,取消勾选 Compass,网络不好可能会卡进度,取消后可使用 Robo 3T 等工具来管理数据库;Win10 以下的系统只兼容 4.2 – 版本)
Python3.8+
Mitmproxy (本教程使用此工具演示,也可使用 Fiddler 等流量代理工具)
私服服务端 在上方 荼蘼云盘 下载,已经打包好,即点即用
7-zip 用于解压极限压缩的服务端(压缩后约 127MB,压缩前约 1.2GB)

如服务端与客户端分开在两台机子,则还需确保服务端端口 UDP22102 TCP443 TCP54321 均开启且未被其他程序占用

运行服务器

启动服务端

解压服务端,并进入 grasscutter 文件夹

如果您按照我的教程部署,直接双击 run.bat 即可运行服务端;如果安装了其他版本的 java 或者修改了安装位置,请自行修改此文件后再启动,启动前请确保 MongoDB 在运行中
启动后控制台无任何报错,且最后输出 Game Server started on port 22102 字样即为启动成功,有报错请参照本文档最后一章处理

服务端不可直接关闭,需输入指令 stop 后再退出;若不小心关闭,在 任务管理器 中找到 Java 相关进程杀掉即可

启动代理

双击运行 proxy.bat ,如果您不希望其他主机连接到服务端,删除此脚本中的 --set block_global=false 即可;如果希望在其他端口运行代理,右键编辑此文件修改 54321 为你期望的端口即可,如果删除此参数则默认监听 8080 端口,不要使用常见端口避免被攻击,此端口即为客户端系统代理所用端口
代理可直接关闭窗口以停止运行

出现 Proxy server listening at http://*:54321 即为启动成功

注意,如果您的服务器性能过低,此代理程序可能会假死,手动重启即可

获取证书

前往服务端的 设置-网络-代理-手动设置代理 ,设置为 127.0.0.1:54321 后,使用浏览器访问 http://mitm.it 并选择相应证书下载,此证书需要下发给客户端所在机器安装,注意服务器 IP 更换后需要重新下载安装证书

如果服务端和游戏都跑在本机,不用手动安装证书,代理会自动安装

注意:这一步服务端开启代理只是为了便于下载证书 (当然你也可以直接去这里复制 %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer ),下载完后请关闭服务端的系统代理,否则无法正常连接服务端

创建账号

需要使用文末的 account 指令在控制台创建账号才可以登录,当然你也可以根据下节更改配置从而允许不存在的账号自动注册

自定义配置

config.json

  • GameServer.Ip DispatchServer.Ip 为准入 IP,建议保持 0.0.0.0
  • GameServer.PublicIp DispatchServer.PublicIp公网/内网IP (取决于你在公网 / 内网联机),改为 127.0.0.1 即只允许本机连接
    GameServer.Name 为你的服务器名称
  • GameServer.WelcomeEmotes 为进入游戏的欢迎表情 id
  • GameServer.WelcomeMotd 为进入游戏的欢迎语
    GameServer.WelcomeMailContent 为进入游戏的欢迎邮件
    GameServer.WelcomeMailItems 为进入游戏时的欢迎邮件赠送的物品 (数组),成员有物品 id itemId 数量 itemCount 等级 itemLevel
    GameServer.ServerNickname GameServer.ServerAvatarId 为游戏控制台的名字和头像 (长的角色 id)
  • DispatchServer.defaultPermissions 为用户默认拥有的权限 (注意是数组),目前版本主要有 server player 两个权限组,建议只给后者
  • DispatchServer.AutomaticallyCreateAccounts 默认为 false ,如修改为 true ,则允许登陆不存在的账号时自动创建 (不建议)

其他不在此赘述

修改卡池

卡池配置文件为 .\data\Banners.json ,其中

  • gachaType=200,scheduleId=893 的为常驻池
  • gachaType=301,scheduleId=903 的为角色 UP 池
    gachaType=302,scheduleId=903 的为武器 UP 池
  • gachaType=400,scheduleId=913 的为角色 UP 池 2

多卡池:增加 gachaType 为非以上四个值的成员即可,注意客户端只识别以上四个 gachaType 值,添加的其他卡池不会显示类型

本站整合包默认为万达桃三 UP 及前两者专武 (专武封面为前者,是客户端内置资源,无法修改)

rateUpItems1 为 UP 五星,rateUpItems2 为 UP 四星,对应 id 在 Handbook_CHS.txt 中可以找到

需修改 prefabPath previewPrefabPath titlePath 中的 A0** 为对应的卡池 id(在 卡池顺序.xlsx 中)

costItem 为抽卡耗费的货币名称,223 为纠缠之缘,224 为相遇之缘(修改可能会引发 bug)

sortId 为卡池排序,越大越靠前

beginTime endTime 为卡池开始 / 结束的 10 位时间戳

softPity 最少几次出 hardPity 最多几次出 eventChance 歪的概率 % ,如果没有这三个成员自己加上即可

bannerTypeSTANDARD 表示常驻池,EVENT 表示角色 UP 池,WEAPON 表示武器 UP 池 (这个参数貌似只是看的)

sortId 可能与卡池展示顺序有关?

注意开启太多卡池会容易报错,修改完建议使用工具检查语法是否正确

更新服务端

只需 stop 服务端,替换 grasscutter.jar 后启动服务端即可,网盘将不定时更新经过测试的包体

网盘中 up 开头的 7z/jar 即为更新包,若跨版本更新您可能需要下载全量包 (full 开头) 或者前往项目地址补齐资源文件

连接服务器

首次连接需要安装证书

Windows 下载 并双击打开相应服务器的证书 -> 安装证书 -> 本地计算机 -> 放入下列…-> 浏览 -> 受信任的根证书颁发机构 -> 完成
Android 下载 pem 格式证书,root 并解锁 system 分区后手动复制到 /system/etc/security/cacerts 并重命名为 c8750f0d.0 即可 (如果安装多个私服的证书,依次把文件命名为 c8750f0d.1 c8750f0d.2 … 即可);如果不能解锁系统分区可参照网盘中我的私服专用的模块制作自己私服的 CA 证书模块,或者安装信任用户证书的模块后直接在 Android 系统设置中安装为用户证书即可
(待测试)无 root 的安卓可尝试直接下载安装用户证书 (分别安装 CA 和 WLAN 证书) 后使用网盘版本游戏客户端
iOS 下载证书后复制到手机并打开点击安装即可,安装完打开系统设置信任刚才安装的证书

其他操作系统不提供安装证书教程

之后直接如此操作即可进入

  1. 修改前先打开游戏客户端检查并完成更新
  2. Windows:前往 设置-网络-代理-手动设置代理 设置代理,服务器 / 端口 按照自己所要连接私服的服务端配置填写,关闭 请勿将代理服务器用于本地地址 ,清空 请勿对以下条目... 编辑框的内容,填写完确定并开启代理,完成后暂时不要关闭页面
    Android:前往 系统设置-WLAN 设置当前连接 WiFi 的代理,或前往 移动网络-APN 修改 APN 设置,修改前请自行备份避免出错,完成后暂时不要清后台
    iOS:WiFi 类似于 Android,移动网络无法修改 APN
  3. 修改完成后启动 国服官服 / 国际服客户端 ,用户名 + 密码 (密码随便填) 即可登录,登录后进入最后白屏加载界面即可关掉代理,务必尽快关闭代理:长时间代理,你流量全走服务器,你电脑和服务器都累,而且还可能会被服务商 ban 机!

每次登录都需要如此操作!开启代理再运行游戏便进入私服,不开启代理运行游戏就是官服

Tip:

  • 如果使用的是 国服客户端,启动后有弹窗 (仅 Win) 且登录页面标题为 HOYOVERSE 而不是 miHoYo 即代表成功连接私服;国际服客户端服务器选择界面如只有一个服务器 (默认为 GenshinTJ )(或者没出现服务器选择页面) 而不是 Asia 等四个则成功连接到私服
  • Windows 如果无法使用系统代理,请尝试使用云盘中的 米哈游代理转向 软件 (易语言开发,报毒属正常现象)

常见问题

传送?

任意标点并点击确认即可传送至目标上空;传送后不会自动关闭地图,手动关闭地图即可看到

进阶:可以通过修改标点名称以传送到不同高度

如何去金苹果?

眼睛稍微往上挪那么一内内看,金苹果地图没亮不用管,传就是了

尘歌壶

目前看起来去不了

角色 id

每个角色都有两个 id,长 id 100000xx 只用在 givec 命令中,短 id 10xx 用在其他各处;另外大部分角色各种 id 都是对应的,比如命星 id 为 11xx ,卡池标题和封面为 A0xx

控制台指令

游戏登陆后默认有一个名为 Server 的好友,此为游戏控制台,可向其发送指令;当然,你也可以在服务端控制台窗口中输入指令;注意部分指令仅可在其中一种途径使用

注意:

  • 游戏内发送指令均需加上前缀 !/
  • 请注意, 使用 | 隔开的指令 / 变量代表两者皆可,使用 <> 括起来的变量必需,使用 [] 括起来的变量可省略 (省略后如 UID 则为你自己,数量 / 等级等则为 1)
  • 指令只有使用下方 permission 指令授权后,相应用户才可使用

示例:如要给用户 UID 114514 原石 x1919810,查阅得知用法 give|g [player] <itemId|itemName> [amount] ,原石 id 201 ,则可直接控制台输入 g 114514 201 1919810 / give 114514 201 1919810 ;或者游戏内聊天发送 /g 114514 201 1919810 / !g 114514 201 1919810 ,直接给当前用户的话也可省略 uid

指令同步最新版,网盘提供的端不一定可用

命令 用法 说明 权限节点
help help [命令] 显示帮助或展示指定命令的帮助
give give|g [uid] < 物品 ID | 物品名称 > [数量] [等级] 给予指定玩家一定数量及等级的物品
givechar givechar <uid> < 角色 ID> [等级] 给予指定玩家对应角色 player.givechar
giveall giveall|givea [uid] [数量] 给予指定玩家全部物品 player.giveall
drop drop|d <物品 ID | 物品名称> [数量] 在指定玩家周围掉落指定物品,仅客户端可用 server.drop
spawn spawn <实体 ID | 实体名称> [等级] [数量] 在你周围生成实体 server.spawn
godmode godmode [uid] 保护你不受到任何伤害 (依然会被击退),仅客户端可用 player.godmode
heal heal|h 治疗队伍中所有角色,仅客户端可用 player.heal
talent talent <天赋 ID> < 等级 > 设置当前角色的天赋等级,天赋 id 为 n/e/q,仅客户端可用 player.settalent
changescene changescene|scene <场景 ID> 切换到指定场景,仅客户端可用 player.changescene
killall killall [uid] [场景 ID] 杀死指定玩家世界中所在或指定场景的全部生物 server.killall
position position|pos 获取当前坐标,仅客户端可用
teleport teleport|tp <x> <y> <z> 传送玩家到指定坐标,仅客户端可用 player.teleport
setfetterlevel setfetterlevel|setfriendship <好感等级> 设置当前角色的好感等级,仅客户端可用 player.setfetterlevel
resetconst resetconst [all] 重置当前角色的命座,重新登录即可生效,仅客户端可用 player.resetconstellation
setstats setstats|stats <属性> < 数值 > 直接修改当前角色的面板,可用的属性有 hp 生命值 def 防御力 atk 攻击 em 元素精通 er 元素充能 crate 暴击率 cdmg 暴击伤害 epyro 火伤 ecryo 冰伤 ehydro 水伤 egeo 岩伤 edend 草伤 eelec 雷伤 ephys 物伤,仅客户端可用 player.setstats
setworldlevel setworldlevel <世界等级> 设置世界等级 (重新登陆即可生效),仅客户端可用 player.setworldlevel
clearartifacts clearartifacts|clearart 删除所有未装备及未解锁的圣遗物,包括五星,仅客户端可用 player.clearartifacts
clearweapons clearweapons|clearwp 删除所有未装备及未解锁的武器,包括五星,仅客户端可用 player.clearweapons
tpall tpall 传送多人世界中所有的玩家到自身地点,仅客户端可用 player.tpall
weather weather|w <天气 ID> < 气候 ID> 改变天气,仅客户端可用 player.weather
命令 用法 说明 权限节点

关于各种 id 都在 Handbook_CHS.txt , 文本编辑器 (推荐 VS Code 等,Win 自带记事本无法完全搜索内容) 打开后 Ctrl+F 即可搜索

(在我的私服中) 以下指令仅管理员可用,请勿尝试使用

命令 用法 说明 权限节点
account account <create|delete> < 用户名 > [uid] 通过指定用户名和 uid 增删账户,仅服务端可用
broadcast broadcast|b <消息内容> 给所有玩家发送公告 server.broadcast
say say <uid> < 消息 > 作为服务器发送消息给玩家 server.sendmessage
coop coop <uid> 强制某位玩家进入指定玩家的多人世界 server.coop
kick kick [uid] 从服务器中踢出指定玩家 (WIP) server.kick
list list 列出在线玩家
permission permission <add|remove> < 用户名 > < 权限节点 (* 为所有)> 添加或移除玩家的权限 *
reload reload 重载服务器配置 server.reload
restart restart 重启服务端
stop stop 停止服务器 server.stop
命令 用法 用法 权限节点

常见故障

注意:如果您严格按照本教程部署连接,那么不应当出现任何错误,错误均为您没有正确配置导致,故此处仅稍微列出部分常见故障,不出意外的话以下这段又臭又长的文字基本帮不到你

部署服务器

如下图报错表示 443 端口被占用,请检查 (很多情况是 VMWare 占用);如确实无法接触占用请尝试修改 config.json 中的端口,同时修改 proxy_config.py 中的端口

443 端口被占用

类似于下图报错说明你的 Java 版本与核心需求不一致 (或核心本身有问题),请自行更换适配 Java 版本或换核心

Java 版本不匹配

服务端下不了证书

没有正确配置代理;存在其他代理软件;打开的是 https 而不是 http

命令行窗口报错

自行百度 / 翻译解决啊问我干嘛问我也不带图我怎么知道你报什么错

端口被占用

cmd 运行以下指令查看占用端口的进程

netstat -aon|findstr “端口号”

输出行末的数字为进程 pid,使用以下指令杀掉进程

taskkill /t /f /pid 进程pid
taskkill /t /f /pid 进程pid

如果杀不掉并且显示是 xx 的子进程的话,杀掉 xx 这个 pid 即可

连接服务器

4206 错误

此类错误大多数情况为代理未正确配置,可尝试

重启代理端 / 重启服务器

开启代理后运行游戏,检查服务端和代理的日志,如果代理中

  • 没有 mihoyo.com / hoyoverse.com 子域的请求或者没刷新任何日志,则为客户端代理配置错误
  • mihoyo.com / hoyoverse.com 子域的请求,但报 TLS handshake failed,则为客户端未安装对应服务端的证书,或检查服务端是否能连接到相应域名
  • mihoyo.com / hoyoverse.com 子域的请求,但报拒绝连接等错误,可能是服务端网络问题导致无法连接米哈游服务器

如果代理没有报错,则应为服务端问题,检查服务端配置或者更新服务端

如仍无法解决,可尝试以下操作:

  • 关闭代理正常启动游戏检查更新完后再次开代理进入游戏
  • (搬运,待验证) 修改 config.jsonDispatchServer.PublicIpdispatchcnglobal.yuanshen.com

另外,据经验此问题可能是 凉心云 的锅,建议跑路去 良心云 吧

如仍无法解决请去烧一炷香把,虔诚点儿

登陆账号提示网络错误 / 网络超时

确认配置无误可尝试修改 config.jsonDispatchServer.PublicIpdispatchcnglobal.yuanshen.com 然后进一遍游戏,如果能进去,就可以将此配置还原

点击登录转圈然后没反应

如果点击后服务端日志有成功登录的提示,关掉登录窗口即可进入游戏 (手机版特供 bug)
如无,请检查服务端代理是否正确运行,是否假死 (尝试重启)

502 / 4301 / 无法连接服务器

绝对是你没正确配置,自行检查

登陆后检查更新失败

如果代理日志中有 mihoyo.com / hoyoverse.com 子域的请求,但报拒绝连接等错误,可能是服务端网络问题导致无法连接米哈游服务器

开启代理后还是登录了官服

有其他代理冲突;服务端没有正确运行

4201

检查是否正确安装并信任证书

-9203

一般为代理问题,已知 iOS 使用小火箭会存在此问题

卡检查更新

尝试正常进游戏一次后再连代理进;检查服务端网络问题,如确实没问题请尝试重启代理端 / 更换代理端口 / 重启服务器

进门后连接超时

UDP22102!!!

关于

版权声明

主要架构转载自TomyJan’s BLOG,并在此基础上进行了修改。

本私服端基于开源项目 Grasscutter
本本文档部分内容补充来自 Grasscutter Wiki(服务端内核) ,虚冇的避风港(环境安装) 及 虚之亚克洛 OTOOBLOG(OTA升级部分)。
以及https://www.rainkavik.com/archives/254/

任何使用行为请遵守相关法律法规及版权方授权协议

帮助支持

如有其他疑问,欢迎在此评论或通过以下方式参与讨论 / 获取更新,提问前请确保您的问题恰当

为保证访问速度,本站启用了较高的缓存策略,您可能无法评论 (注册用户评论不受限)

文章有(1)条网友点评

发表评论