Grasscutter/README_zh-CN.md
2022-04-24 21:58:35 -07:00

12 KiB
Raw Blame History

Grasscutter

Documention GitHub release (latest by date) GitHub GitHub last commit GitHub Workflow Status
Discord - Grasscutter

EN | 中文

注意: 我们一直欢迎您成为该项目的贡献者。在添加您的代码之前,请仔细阅读我们的 代码规范.

当前特性

  • 登录
  • 战斗
  • 好友列表
  • 传送系统
  • 祈愿系统
  • 从控制台生成魔物
  • 多人游戏 部分 可用
  • 物品栏相关 (接收物品/角色, 升级角色/武器等)

快速设置指南

附: 加入我们的 Discord 获取更多帮助!

环境需求

  • Java SE - 16 (当您没有Oracle账户可以使用镜像)

    注: 如果您仅仅想要简单地运行服务端, 那么使用 jre 便足够了

  • MongoDB (推荐 4.0+)

  • Proxy daemon: mitmproxy (推荐使用mitmdump), Fiddler Classic, 等

运行

注: 如果您从旧版本升级到新版本,最好删除 config.json 并启动服务端jar来重新生成它

  1. 获取 grasscutter.jar
  2. grasscutter.jar 所在目录中创建 resources 文件夹并将 BinOutputExcelBinOutput 放入其中 (查看 wiki 了解更多)
  3. 通过命令 java -jar grasscutter.jar 来运行Grasscutter. 在此之前请确认MongoDB服务运行正常

连接

½. 在服务器控制台中 创建账户.

  1. 重定向流量: (选其一)

    • mitmdump: mitmdump -s proxy.py -k

      信任 CA 证书:

      注: mitmproxy的CA证书通常存放在 % USERPROFILE%\ .mitmproxy, 或者你也可以从http://mitm.it 中下载它

      双击来安装根证书 或者..

      • 使用命令行

        certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
        
    • Fiddler Classic: 运行Fiddler Classic, 在设置中开启 解密https通信 并将端口切换到除8888 以外的任意端口 (工具 -> 选项 -> 连接) 并加载 此脚本.

    • Hosts文件

  2. 设置代理为 127.0.0.1:8080 或其它你所设定的端口

你也可以简单地运行 start.cmd 来全自动启动服务端并设置代理

构建

Grasscutter 使用 Gradle 来处理依赖及构建.

依赖:

  • Java SE Development Kits - 16
  • Git
Windows
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # Setting up environments
.\gradlew jar # Compile
Linux
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Compile

你可以在项目根目录中找到grasscutter.jar

命令列表

你可能需要在终端中运行 java -jar grasscutter.jar -handbook 它将会创建一个 GM Handbook.txt 以方便您查阅物品ID等

在每个玩家的朋友列表中都有一个名为“服务器”的虚拟用户,你可以通过发送消息来使用命令。命令也适用于其他聊天室,例如私人/团队聊天。 要在游戏中使用命令,需要添加 /! 前缀,如 /pos

命令 用法 权限节点 可用性 注释 别名
account account <create|delete> <用户名> [uid] 仅服务端 通过指定用户名和uid增删账户
broadcast broadcast <消息内容> server.broadcast 均可使用 给所有玩家发送公告 b
changescene changescene <场景ID> player.changescene 仅客户端 切换到指定场景 scene
clearartifacts clearartifacts player.clearartifacts 仅客户端 删除所有未装备及未解锁的圣遗物,包括五星 clearart
clearweapons clearweapons player.clearweapons 仅客户端 删除所有未装备及未解锁的武器,包括五星 clearwp
drop drop <物品ID|物品名称> [数量] server.drop 仅客户端 在指定玩家周围掉落指定物品 d dropitem
give give [uid] <物品ID|物品名称> [数量] [等级] 给予指定玩家一定数量及等级的物品 g item giveitem
givechar givechar <角色ID> [等级] player.givechar 均可使用 给予指定玩家对应角色 givec
godmode godmode [uid] player.godmode 仅客户端 保护你不受到任何伤害(依然会被击退)
heal heal player.heal 仅客户端 治疗队伍中所有角色 h
help help [命令] 均可使用 显示帮助或展示指定命令的帮助
kick kick server.kick 均可使用 从服务器中踢出指定玩家 (WIP) k
killall killall [uid] [场景ID] server.killall 均可使用 杀死指定玩家世界中所在或指定场景的全部生物
list list 均可使用 列出在线玩家
permission permission <add|remove> <用户名> <权限节点> * 均可使用 添加或移除玩家的权限
position position 仅客户端 获取当前坐标 pos
reload reload server.reload 均可使用 重载服务器配置
resetconst resetconst [all] player.resetconstellation 仅客户端 重置当前角色的命座,重新登录即可生效 resetconstellation
restart restart 均可使用 重启服务端
say say <消息> server.sendmessage 均可使用 作为服务器发送消息给玩家 sendservmsg sendservermessage sendmessage
setfetterlevel setfetterlevel <好感等级> player.setfetterlevel 仅客户端 设置当前角色的好感等级 setfetterlvl setfriendship
setstats setstats <属性> <树脂> player.setstats 仅客户端 直接修改当前角色的面板 stats
setworldlevel setworldlevel <世界等级> player.setworldlevel 仅客户端 设置世界等级(重新登陆即可生效) setworldlvl
spawn spanw <实体ID|实体名称> [等级] [数量] server.spawn 仅客户端 在你周围生成实体
stop stop server.stop 均可使用 停止服务器
talent talent <天赋ID> <等级> player.settalent 仅客户端 设置当前角色的天赋等级
teleport teleport player.teleport 仅客户端 传送玩家到指定坐标 tp
weather weather <天气ID> <气候ID> player.weather 仅客户端 改变天气 w

额外功能

当你想传送到某个地点, 只需要在地图中创建标记, 关闭地图后即可到达目标地点上空

快速排除问题

  • 如果编译未能成功,请检查您的jdk安装 (JDK 16并确认jdk处于环境变量PATH
  • 我的客户端无法登录/连接, 4206, 其它... - 大部分情况下这是因为您的代理存在问题.如果使用Fiddler请确认Fiddler监听端口不是8888
  • 启动顺序: MongoDB > Grasscutter > 代理程序 (mitmdump, fiddler等.) > 客户端