mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-05-08 04:55:52 +08:00
Merge branch 'development' into stable
This commit is contained in:
commit
610d24d84c
10
.github/workflows/build.yml
vendored
10
.github/workflows/build.yml
vendored
@ -25,6 +25,16 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
|
- name: Cache gradle files
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.gradle/caches
|
||||||
|
~/.gradle/wrapper
|
||||||
|
./.gradle/loom-cache
|
||||||
|
key: ${{ runner.os }}-gradle-${{ hashFiles('*.gradle', 'gradle.properties', '**/*.accesswidener') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-gradle-
|
||||||
- name: Run Gradle
|
- name: Run Gradle
|
||||||
run: ./gradlew && ./gradlew jar
|
run: ./gradlew && ./gradlew jar
|
||||||
- name: Upload build
|
- name: Upload build
|
||||||
|
36
.gitignore
vendored
36
.gitignore
vendored
@ -17,7 +17,7 @@
|
|||||||
*.nar
|
*.nar
|
||||||
*.ear
|
*.ear
|
||||||
*.zip
|
*.zip
|
||||||
*.tar.gz
|
*.gz
|
||||||
*.rar
|
*.rar
|
||||||
|
|
||||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
@ -52,20 +52,30 @@ tmp/
|
|||||||
.vscode
|
.vscode
|
||||||
|
|
||||||
# Grasscutter
|
# Grasscutter
|
||||||
resources/
|
/resources
|
||||||
logs/
|
/logs
|
||||||
plugins/
|
/plugins
|
||||||
data/AbilityEmbryos.json
|
/data
|
||||||
data/OpenConfig.json
|
/keys
|
||||||
|
/language
|
||||||
|
/languages
|
||||||
|
/src/generated
|
||||||
|
|
||||||
|
/*.jar
|
||||||
|
/*.sh
|
||||||
|
|
||||||
GM Handbook.txt
|
GM Handbook.txt
|
||||||
config.json
|
config.json
|
||||||
mitmdump.exe
|
mitmdump.exe
|
||||||
*.jar
|
|
||||||
!lib/*.jar
|
|
||||||
mongod.exe
|
mongod.exe
|
||||||
/src/generated/
|
|
||||||
/*.sh
|
|
||||||
language/
|
|
||||||
languages/
|
|
||||||
gacha-mapping.js
|
gacha-mapping.js
|
||||||
data/gacha_mappings.js
|
mappings.js
|
||||||
|
BuildConfig.java
|
||||||
|
|
||||||
|
# lombok
|
||||||
|
/.apt_generated/
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
.DS_Store
|
||||||
|
data/hk4e/announcement/
|
||||||
|
60
README.md
60
README.md
@ -67,7 +67,7 @@ EN | [中文](README_zh-CN.md)
|
|||||||
|
|
||||||
2. Set network proxy to `127.0.0.1:8080` or the proxy port you specified.
|
2. Set network proxy to `127.0.0.1:8080` or the proxy port you specified.
|
||||||
|
|
||||||
**you can also use `start.cmd` to start servers and proxy daemons automatically**
|
**you can also use `start.cmd` to start servers and proxy daemons automatically, but you have to set up JAVA_HOME enviroment**
|
||||||
|
|
||||||
### Building
|
### Building
|
||||||
|
|
||||||
@ -98,61 +98,11 @@ chmod +x gradlew
|
|||||||
|
|
||||||
You can find the output jar in the root of the project folder.
|
You can find the output jar in the root of the project folder.
|
||||||
|
|
||||||
## Commands
|
### Commands have moved to the [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)!
|
||||||
|
|
||||||
You might want to use this command (`java -jar grasscutter.jar -handbook`) in a cmd that is in the grasscutter folder. It will create a handbook file (GM Handbook.txt) where you can find the item IDs for stuff you want.
|
|
||||||
|
|
||||||
You may want to use this command (`java -jar grasscutter.jar -gachamap`) to generate a mapping file for the gacha record subsystem. The file will be generated to `GRASSCUTTER_RESOURCE/gcstatic` folder. Otherwise you may only see number IDs in the gacha record page.
|
|
||||||
|
|
||||||
There is a dummy user named "Server" in every player's friends list that you can message to use commands. Commands also work in other chat rooms, such as private/team chats. to run commands ingame, you need to add prefix `/` or `!` such as `/pos`
|
|
||||||
|
|
||||||
| Commands | Usage | Permission node | Availability | description | Alias |
|
|
||||||
| -------------- | ------------------------------------------------- | ------------------------- | ------------ | ------------------------------------------------------------ | ----------------------------------------------- |
|
|
||||||
| account | account <create\|delete> \<username> [UID] | | Server only | Creates an account with the specified username and the in-game UID for that account. The UID will be auto generated if not set. | |
|
|
||||||
| broadcast | broadcast \<message> | server.broadcast | Both side | Sends a message to all the players. | b |
|
|
||||||
| coop | coop \<playerId> \<target playerId> | server.coop | Both side | Forces someone to join the world of others. | |
|
|
||||||
| changescene | changescene \<scene id> | player.changescene | Client only | Switch scenes by scene ID. | scene |
|
|
||||||
| clear | clear <all\|wp\|art\|mat> [UID] | player.clearinv | Client only | Deletes all unequipped and unlocked level 0 artifacts(art)/weapons(wp)/material(all) or all, including 5-star rarity ones from your inventory. | clear |
|
|
||||||
| drop | drop <itemID\|itemName> [amount] | server.drop | Client only | Drops an item around you. | `d` `dropitem` |
|
|
||||||
| enterdungeon | enterdungeon \<dungeon id> | player.enterdungeon | Client only | Enter a dungeon by dungeon ID | |
|
|
||||||
| give | give [player] <itemId\|itemName> [amount] [level] [finement] | player.give | Both side | Gives item(s) to you or the specified player. (finement option only weapon.) | `g` `item` `giveitem` |
|
|
||||||
| givechar | givechar \<uid> \<avatarId> | player.givechar | Both side | Gives the player a specified character. | givec |
|
|
||||||
| giveart | giveart [player] \<artifactId> \<mainPropId> [\<appendPropId>[,\<times>]]... [level] | player.giveart | Both side | Gives the player a specified artifact. | gart |
|
|
||||||
| giveall | giveall [uid] [amount] | player.giveall | Both side | Gives all items. | givea |
|
|
||||||
| godmode | godmode [uid] | player.godmode | Client only | Prevents you from taking damage. | |
|
|
||||||
| heal | heal | player.heal | Client only | Heals all characters in your current team. | h |
|
|
||||||
| help | help [command] | | Both side | Sends the help message or shows information about a specified command. | |
|
|
||||||
| kick | kick \<player> | server.kick | Both side | Kicks the specified player from the server. (WIP) | k |
|
|
||||||
| killall | killall [playerUid] [sceneId] | server.killall | Both side | Kills all entities in the current scene or specified scene of the corresponding player. | |
|
|
||||||
| list | list | | Both side | Lists online players. | |
|
|
||||||
| permission | permission <add\|remove> \<UID> \<permission> | * | Both side | Grants or removes a permission for a user. | |
|
|
||||||
| position | position | | Client only | Sends your current coordinates. | pos |
|
|
||||||
| reload | reload | server.reload | Both side | Reloads the server config | |
|
|
||||||
| resetconst | resetconst [all] | player.resetconstellation | Client only | Resets the constellation level on your currently selected character, will need to relog after using the command to see any changes. | resetconstellation |
|
|
||||||
| restart | | | Both side | Restarts the current session | |
|
|
||||||
| say | say \<player> \<message> | server.sendmessage | Both side | Sends a message to a player as the server | `sendservmsg` `sendservermessage` `sendmessage` |
|
|
||||||
| setfetterlevel | setfetterlevel \<level> | player.setfetterlevel | Client only | Sets the friendship level for your currently selected character | setfetterlvl |
|
|
||||||
| setstats | setstats \<stat> \<value> | player.setstats | Client only | Sets a stat for your currently selected character | stats |
|
|
||||||
| setworldlevel | setworldlevel \<level> | player.setworldlevel | Client only | Sets your world level (Relog to see proper effects) | setworldlvl |
|
|
||||||
| spawn | spawn \<entityId> [amount] [level(monster only)] | server.spawn | Client only | Spawns some entities around you | |
|
|
||||||
| stop | stop | server.stop | Both side | Stops the server | |
|
|
||||||
| talent | talent \<talentID> \<value> | player.settalent | Client only | Sets talent level for your currently selected character | |
|
|
||||||
| teleport | teleport [@playerUid] \<x> \<y> \<z> [sceneId] | player.teleport | Both side | Change the player's position. | tp |
|
|
||||||
| tpall | | player.tpall | Client only | Teleports all players in your world to your position | |
|
|
||||||
| weather | weather \<weatherID> \<climateID> | player.weather | Client only | Changes the weather | w |
|
|
||||||
|
|
||||||
### Bonus
|
|
||||||
|
|
||||||
- Teleporting
|
|
||||||
- When you want to teleport somewhere, use the in-game marking function on the map.
|
|
||||||
- Mark a point on the map using the fish hook marking (the last one.)
|
|
||||||
- (Optional) rename the map marker to a number to override the default Y coordinate (height, default 300.)
|
|
||||||
- Confirm and close the map.
|
|
||||||
- You will see your character falling from a very high destination, exact location that you marked.
|
|
||||||
|
|
||||||
# Quick Troubleshooting
|
# Quick Troubleshooting
|
||||||
|
|
||||||
* If compiling wasn't successful, please check your JDK installation (JDK 17 and validated JDK's bin PATH variable)
|
* If compiling wasn't successful, please check your JDK installation (JDK 17 and validated JDK's bin PATH variable)
|
||||||
* My client doesn't connect, doesn't login, 4206, etc... - Your proxy daemon setup is most likely *the issue*, if you are using Fiddler, make sure it running on another port other than 8888
|
* My client doesn't connect, doesn't login, 4206, etc... - Mostly your proxy daemon setup is *the issue*, if using
|
||||||
|
Fiddler make sure it running on another port except 8888
|
||||||
* Startup sequence: Mongodb > Grasscutter > Proxy daemon (mitmdump, fiddler, etc.) > Game
|
* Startup sequence: MongoDB > Grasscutter > Proxy daemon (mitmdump, fiddler, etc.) > Game
|
||||||
|
@ -123,11 +123,13 @@ chmod +x gradlew
|
|||||||
| godmode | godmode [uid] | player.godmode | 仅客户端 | 保护你不受到任何伤害(依然会被击退) | |
|
| godmode | godmode [uid] | player.godmode | 仅客户端 | 保护你不受到任何伤害(依然会被击退) | |
|
||||||
| heal | heal | player.heal | 仅客户端 | 治疗队伍中所有角色 | h |
|
| heal | heal | player.heal | 仅客户端 | 治疗队伍中所有角色 | h |
|
||||||
| help | help [命令] | | 均可使用 | 显示帮助或展示指定命令的帮助 | |
|
| help | help [命令] | | 均可使用 | 显示帮助或展示指定命令的帮助 | |
|
||||||
|
| join | join [多个角色id] | player.join | 仅客户端 | 强制入队角色,跟config.json中的avatarLimits有关(跟队内角色数量上限有关)。用法:`join 10000021 10000022` | |
|
||||||
| kick | kick \<uid> | server.kick | 均可使用 | 从服务器中踢出指定玩家 (WIP) | k |
|
| kick | kick \<uid> | server.kick | 均可使用 | 从服务器中踢出指定玩家 (WIP) | k |
|
||||||
| killall | killall [uid] [场景ID] | server.killall | 均可使用 | 杀死指定玩家世界中所在或指定场景的全部生物 | |
|
| killall | killall [uid] [场景ID] | server.killall | 均可使用 | 杀死指定玩家世界中所在或指定场景的全部生物 | |
|
||||||
| list | list | | 均可使用 | 列出在线玩家 | |
|
| list | list | | 均可使用 | 列出在线玩家 | |
|
||||||
| permission | permission <add\|remove> <UID> <权限节点> | * | 均可使用 | 添加或移除玩家的权限 | |
|
| permission | permission <add\|remove> <UID> <权限节点> | * | 均可使用 | 添加或移除玩家的权限 | |
|
||||||
| position | position | | 仅客户端 | 获取当前坐标 | pos |
|
| position | position | | 仅客户端 | 获取当前坐标 | pos |
|
||||||
|
| remove | remove [多个角色在队伍中的序号] | player.remove | 仅客户端 | 强制将某个角色从当前队伍中移除。例如`remove 1 2`表示将1号和2号角色移除 | |
|
||||||
| reload | reload | server.reload | 均可使用 | 重载服务器配置 | |
|
| reload | reload | server.reload | 均可使用 | 重载服务器配置 | |
|
||||||
| resetconst | resetconst [all] | player.resetconstellation | 仅客户端 | 重置当前角色的命座,重新登录即可生效 | resetconstellation |
|
| resetconst | resetconst [all] | player.resetconstellation | 仅客户端 | 重置当前角色的命座,重新登录即可生效 | resetconstellation |
|
||||||
| restart | restart | | 均可使用 | 重启服务端 | |
|
| restart | restart | | 均可使用 | 重启服务端 | |
|
||||||
@ -140,6 +142,7 @@ chmod +x gradlew
|
|||||||
| talent | talent <天赋ID> <等级> | player.settalent | 仅客户端 | 设置当前角色的天赋等级 | |
|
| talent | talent <天赋ID> <等级> | player.settalent | 仅客户端 | 设置当前角色的天赋等级 | |
|
||||||
| teleport | teleport [@playerUid] \<x> \<y> \<z> [sceneId] | player.teleport | 均可使用 | 传送玩家到指定坐标 | tp |
|
| teleport | teleport [@playerUid] \<x> \<y> \<z> [sceneId] | player.teleport | 均可使用 | 传送玩家到指定坐标 | tp |
|
||||||
| tpall | | player.tpall | 仅客户端 | 传送多人世界中所有的玩家到自身地点 | |
|
| tpall | | player.tpall | 仅客户端 | 传送多人世界中所有的玩家到自身地点 | |
|
||||||
|
| unlocktower | | player.tower | 仅客户端 | 解锁深渊全部层 | ut |
|
||||||
| weather | weather <天气ID> <气候ID> | player.weather | 仅客户端 | 改变天气 | w |
|
| weather | weather <天气ID> <气候ID> | player.weather | 仅客户端 | 改变天气 | w |
|
||||||
|
|
||||||
### 额外功能
|
### 额外功能
|
||||||
|
25
build.gradle
25
build.gradle
@ -43,7 +43,8 @@ sourceCompatibility = JavaVersion.VERSION_17
|
|||||||
targetCompatibility = JavaVersion.VERSION_17
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
|
|
||||||
group = 'xyz.grasscutters'
|
group = 'xyz.grasscutters'
|
||||||
version = '1.1.0'
|
version = '1.1.2-dev'
|
||||||
|
|
||||||
|
|
||||||
sourceCompatibility = 17
|
sourceCompatibility = 17
|
||||||
targetCompatibility = 17
|
targetCompatibility = 17
|
||||||
@ -86,6 +87,9 @@ dependencies {
|
|||||||
implementation group: 'org.luaj', name: 'luaj-jse', version: '3.0.1'
|
implementation group: 'org.luaj', name: 'luaj-jse', version: '3.0.1'
|
||||||
|
|
||||||
protobuf files('proto/')
|
protobuf files('proto/')
|
||||||
|
|
||||||
|
compileOnly 'org.projectlombok:lombok:1.18.24'
|
||||||
|
annotationProcessor 'org.projectlombok:lombok:1.18.24'
|
||||||
}
|
}
|
||||||
|
|
||||||
configurations.all {
|
configurations.all {
|
||||||
@ -97,12 +101,14 @@ application {
|
|||||||
mainClassName = 'emu.grasscutter.Grasscutter'
|
mainClassName = 'emu.grasscutter.Grasscutter'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
jar {
|
jar {
|
||||||
manifest {
|
manifest {
|
||||||
attributes 'Main-Class': 'emu.grasscutter.Grasscutter'
|
attributes 'Main-Class': 'emu.grasscutter.Grasscutter'
|
||||||
}
|
}
|
||||||
|
|
||||||
jar.baseName = 'grasscutter'
|
jar.baseName = 'grasscutter'
|
||||||
|
jar.archiveName = project.hasProperty('jarFilename') ? "${jarFilename}.${extension}" : archiveName
|
||||||
|
|
||||||
from {
|
from {
|
||||||
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
|
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
|
||||||
@ -226,6 +232,23 @@ javadoc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task injectGitHash {
|
||||||
|
def gitCommitHash = {
|
||||||
|
try {
|
||||||
|
return 'git rev-parse --verify --short HEAD'.execute().text.trim()
|
||||||
|
} catch (e) {
|
||||||
|
return "GIT_NOT_FOUND"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
new File(projectDir, "src/main/java/emu/grasscutter/BuildConfig.java").text = """
|
||||||
|
package emu.grasscutter;
|
||||||
|
public class BuildConfig {
|
||||||
|
public static final String VERSION = \"${version}\";
|
||||||
|
public static final String GIT_HASH = \"${gitCommitHash()}\";
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
|
||||||
processResources {
|
processResources {
|
||||||
dependsOn "generateProto"
|
dependsOn "generateProto"
|
||||||
}
|
}
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"gachaType": 200,
|
|
||||||
"scheduleId": 893,
|
|
||||||
"bannerType": "STANDARD",
|
|
||||||
"prefabPath": "GachaShowPanel_A022",
|
|
||||||
"previewPrefabPath": "UI_Tab_GachaShowPanel_A022",
|
|
||||||
"titlePath": "UI_GACHA_SHOW_PANEL_A022_TITLE",
|
|
||||||
"costItem": 224,
|
|
||||||
"beginTime": 0,
|
|
||||||
"endTime": 1924992000,
|
|
||||||
"sortId": 1000,
|
|
||||||
"rateUpItems1": [],
|
|
||||||
"rateUpItems2": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"gachaType": 301,
|
|
||||||
"scheduleId": 903,
|
|
||||||
"bannerType": "EVENT",
|
|
||||||
"prefabPath": "GachaShowPanel_A079",
|
|
||||||
"previewPrefabPath": "UI_Tab_GachaShowPanel_A079",
|
|
||||||
"titlePath": "UI_GACHA_SHOW_PANEL_A048_TITLE",
|
|
||||||
"costItem": 223,
|
|
||||||
"beginTime": 0,
|
|
||||||
"endTime": 1924992000,
|
|
||||||
"sortId": 9998,
|
|
||||||
"maxItemType": 1,
|
|
||||||
"rateUpItems1": [1002],
|
|
||||||
"rateUpItems2": [1053, 1020, 1045]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"gachaType": 302,
|
|
||||||
"scheduleId": 913,
|
|
||||||
"bannerType": "WEAPON",
|
|
||||||
"prefabPath": "GachaShowPanel_A080",
|
|
||||||
"previewPrefabPath": "UI_Tab_GachaShowPanel_A080",
|
|
||||||
"titlePath": "UI_GACHA_SHOW_PANEL_A021_TITLE",
|
|
||||||
"costItem": 223,
|
|
||||||
"beginTime": 0,
|
|
||||||
"endTime": 1924992000,
|
|
||||||
"sortId": 9997,
|
|
||||||
"minItemType": 2,
|
|
||||||
"eventChance": 75,
|
|
||||||
"softPity": 80,
|
|
||||||
"hardPity": 80,
|
|
||||||
"rateUpItems1": [11509, 12504],
|
|
||||||
"rateUpItems2": [11401, 12402, 13407, 14401, 15401]
|
|
||||||
}
|
|
||||||
]
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"ann_id": 1,
|
|
||||||
"title": "<b>Welcome to Grasscutter!</b>",
|
|
||||||
"subtitle": "<b>Welcome</b>",
|
|
||||||
"banner": "https://uploadstatic-sea.mihoyo.com/announcement/2020/09/17/f4aa42d505822805eebf4a55d72a78d8_2755691727027973637.jpg",
|
|
||||||
"content": "Hi there!<br>First of all, welcome to Grasscutter. If you have any issues, please let us know so that Lawnmower can help you! Check out our:<br><div><p style=\"white-space: pre-wrap;\"><strong>¡þDiscord¡þ</strong></p><p style=\"white-space: pre-wrap;\"><a href=\"https://discord.gg/T5vZU6UyeG\">https://discord.gg/T5vZU6UyeG</a></p><p style=\"white-space: pre-wrap;\"><strong>¡þGitHub¡þ</strong></p><p style=\"white-space: pre-wrap;\"><a href=\"https://github.com/Grasscutters/Grasscutter\">https://github.com/Grasscutters/Grasscutter</a></p></div>",
|
|
||||||
"lang": "es-es"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ann_id": 2,
|
|
||||||
"title": "<b>How to use announcements</b>",
|
|
||||||
"subtitle": "<b>How to use</b>",
|
|
||||||
"banner": "https://uploadstatic-sea.mihoyo.com/announcement/2020/09/17/f4aa42d505822805eebf4a55d72a78d8_2755691727027973637.jpg",
|
|
||||||
"content": "<strong>Tips<br></strong>>How to use announcements<br><br>>Announcement content can use HTML<br><br>>The specific content of the announcement is stored in the program directory<code>data/GameAnnouncement.json</code>, while<code>GameAnnouncementList.json</code> stores the announcement list data<br><br><strong>How to use</strong><br>>In <code>GameAnnouncement</code><table><thead><thead><tr><th>Parameters</th><th>Description</th></thead></thead><thbody><thead><tr><th>ann_Id</th><th>Announcement unique id</th></thead><thead><tr><th>title</th><th>Show at the top of the content</th></thead><thead><tr><th>subtitle</th><th>title shown on the left</th></thead><thead><tr><th>banner</th><th>Display between content and title</th></thead><thead><tr><th>content</th><th>as u see</th></thead><thead><tr><th>lang</th><th>display language</th></thead><thead><tr><th>total</th><th>Announcement quantity</th></thead></thbody></table><br><br>>In <code>GameAnnouncementList</code><br>If you want to add an annouement, please add the list data in the announcement type corresponding to GameAnnouncementList, and finally add the announcement content in GameAnnouncement",
|
|
||||||
"lang": "es-es"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ann_id": 3,
|
|
||||||
"title": "<b>ÕâÊǻ¹«¸æ--This is the event announcement</b>",
|
|
||||||
"subtitle": "<b>Welcome</b>",
|
|
||||||
"banner":"https://uploadstatic-sea.mihoyo.com/announcement/2020/09/22/7d85f19b152d218e73224d7c138a0fd0_5818585260283672899.jpg",
|
|
||||||
"content": "Welcome",
|
|
||||||
"lang": "es-es"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"total": 3
|
|
||||||
}
|
|
@ -1,119 +0,0 @@
|
|||||||
{
|
|
||||||
"t": "System.currentTimeMillis()",
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"ann_id": 1,
|
|
||||||
"title": "<b>Welcome to Grasscutter!</b>",
|
|
||||||
"subtitle": "<b>Welcome</b>",
|
|
||||||
"banner": "https://uploadstatic-sea.mihoyo.com/announcement/2020/09/22/7d85f19b152d218e73224d7c138a0fd0_5818585260283672899.jpg",
|
|
||||||
"content": "",
|
|
||||||
"type_label": "Juego",
|
|
||||||
"tag_label": "1",
|
|
||||||
"tag_icon": "https://uploadstatic-sea.mihoyo.com/announcement/2020/03/05/a2588f1a51faee9fa8dfe9aead649dd6_7237021399135895303.png",
|
|
||||||
"login_alert": 1,
|
|
||||||
"lang": "es-es",
|
|
||||||
"start_time": "2020-09-25 04:05:30",
|
|
||||||
"end_time": "2023-10-30 11:00:00",
|
|
||||||
"type": 2,
|
|
||||||
"remind": 0,
|
|
||||||
"alert": 0,
|
|
||||||
"tag_start_time": "2000-01-02 15:04:05",
|
|
||||||
"tag_end_time": "2030-01-02 15:04:05",
|
|
||||||
"remind_ver": 1,
|
|
||||||
"has_content": true,
|
|
||||||
"extra_remind": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ann_id": 2,
|
|
||||||
"title": "<b>这是游戏公告 -- This is the game announcement</b>",
|
|
||||||
"subtitle": "<b>This is the game announcement</b>",
|
|
||||||
"banner": "https://uploadstatic-sea.mihoyo.com/announcement/2020/09/17/85b7163c95745a76d49b3d163d893592_6487108933004985049.jpg",
|
|
||||||
"content": "",
|
|
||||||
"type_label": "Juego",
|
|
||||||
"tag_label": "1",
|
|
||||||
"tag_icon": "https://uploadstatic-sea.mihoyo.com/announcement/2020/03/05/a2588f1a51faee9fa8dfe9aead649dd6_7237021399135895303.png",
|
|
||||||
"login_alert": 1,
|
|
||||||
"lang": "es-es",
|
|
||||||
"start_time": "2020-09-25 15:12:09",
|
|
||||||
"end_time": "2030-10-30 11:00:00",
|
|
||||||
"type": 2,
|
|
||||||
"remind": 0,
|
|
||||||
"alert": 0,
|
|
||||||
"tag_start_time": "2000-01-02 08:04:05",
|
|
||||||
"tag_end_time": "2030-01-02 08:04:05",
|
|
||||||
"remind_ver": 1,
|
|
||||||
"has_content": true,
|
|
||||||
"extra_remind": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type_id": 2,
|
|
||||||
"type_label": "Juego"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"ann_id": 3,
|
|
||||||
"title": "<b>这是活动公告--This is the event announcement</b>",
|
|
||||||
"subtitle": "<b>Welcome</b>",
|
|
||||||
"banner": "https://uploadstatic-sea.mihoyo.com/announcement/2020/09/22/7d85f19b152d218e73224d7c138a0fd0_5818585260283672899.jpg",
|
|
||||||
"content": "",
|
|
||||||
"type_label": "Eventos",
|
|
||||||
"tag_label": "1",
|
|
||||||
"tag_icon": "https://uploadstatic-sea.mihoyo.com/announcement/2020/03/05/a2588f1a51faee9fa8dfe9aead649dd6_7237021399135895303.png",
|
|
||||||
"login_alert": 1,
|
|
||||||
"lang": "es-es",
|
|
||||||
"start_time": "2020-09-25 04:05:30",
|
|
||||||
"end_time": "2022-05-02 00:51:00",
|
|
||||||
"type": 2,
|
|
||||||
"remind": 0,
|
|
||||||
"alert": 0,
|
|
||||||
"tag_start_time": "2000-01-02 15:04:05",
|
|
||||||
"tag_end_time": "2022-05-02 00:51:00",
|
|
||||||
"remind_ver": 1,
|
|
||||||
"has_content": true,
|
|
||||||
"extra_remind": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type_id": 1,
|
|
||||||
"type_label": "Eventos"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"list": [
|
|
||||||
{}
|
|
||||||
],
|
|
||||||
"type_id": 3,
|
|
||||||
"type_label": "Others"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"total": 3,
|
|
||||||
"type_list": [
|
|
||||||
{
|
|
||||||
"id": 2,
|
|
||||||
"name": "游戏系统公告",
|
|
||||||
"mi18n_name": "Juego"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"name": "活动公告",
|
|
||||||
"mi18n_name": "Eventos"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 3,
|
|
||||||
"name": "其他",
|
|
||||||
"mi18n_name": "Others"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"alert": true,
|
|
||||||
"alert_id": 2,
|
|
||||||
"timezone": -5,
|
|
||||||
"pic_list": [
|
|
||||||
],
|
|
||||||
"pic_total": 0,
|
|
||||||
"pic_type_list": [
|
|
||||||
],
|
|
||||||
"pic_alert": false,
|
|
||||||
"pic_alert_id": 0,
|
|
||||||
"static_sign": ""
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
ElIKBm9zX3VzYRIHQW1lcmljYRoKREVWX1BVQkxJQyIzaHR0cHM6Ly9vc3VzYWRpc3BhdGNoLnl1YW5zaGVuLmNvbS9xdWVyeV9jdXJfcmVnaW9uElMKB29zX2V1cm8SBkV1cm9wZRoKREVWX1BVQkxJQyI0aHR0cHM6Ly9vc2V1cm9kaXNwYXRjaC55dWFuc2hlbi5jb20vcXVlcnlfY3VyX3JlZ2lvbhJRCgdvc19hc2lhEgRBc2lhGgpERVZfUFVCTElDIjRodHRwczovL29zYXNpYWRpc3BhdGNoLnl1YW5zaGVuLmNvbS9xdWVyeV9jdXJfcmVnaW9uElUKBm9zX2NodBIKVFcsIEhLLCBNTxoKREVWX1BVQkxJQyIzaHR0cHM6Ly9vc2NodGRpc3BhdGNoLnl1YW5zaGVuLmNvbS9xdWVyeV9jdXJfcmVnaW9uKpwQRWMyYhAAAABbrAvbhfIRHfaSCN24qQyVAAgAAMs68ZiMdPfEj41O2wBCYqGiC/WdovvJvaw4t3/m1zIYDrt3/ftK9GKFb7C+2E8FmaHqOnwjJYBg2wI1sXpGmuSxkeWw8Avr36wlNtQjhXNV9zoNKstuZYuheyLlpbPRbYZ3UA6/BzTVsjIhjR1lcqFrigQnpV6MgRR9KqxakCaffK6qIzMlodx4ZPKlqseQhCiyVAvLWQSRqCRcZipzotXsmgLQbpDFtRzhgukXPjfW5dAlzMwswPuu7ZQsf1AKipI34dVQLu6gtXthGgbjn89h/79VR5AokLCPGqIV7/2s+gHfykrjDtyp5rwCcmGQqwV3gHy5LGrHl8Zm12jNd7Qcng51ydqtX4xzet6J2iMF6Dw5nPd/hTyxn+i3Ttk6fop9rbCq3iNgEw3+0cSDal1I1ThYdVnMgPhZgQkZc5/SpTaR+8vfDzRIKbSSrrPSEgLnQvWZOOugXhNdyuiaBc8rJveno7vvktmnhDUF3xWi6osj75j2KghRrdHfDR3Zuh4COrGZDRBSKHft2AvfrxaMT9O8hPzzzYk0U2iicVCDlNP/8wqaT9Vqt1kHmruLxqh377iyp0mxKfNt0+SNRzLyRoyvOar/z3AT6TU9LRoCFrkcJpVsUN+2MVeT52PfMbv5O/Nw9sqsFDlofCJJ/EknY0wDc+tNarYOhDM67/ojn/p6W3ZPBJxb2wcF1TOh9dpAeZdCGJusqhMIj5lpoW8nENTFhkEgMUv2Lh5Z6WpeOAKAu9eDpBMhlRNCccDaNYUgo6TdVDtWxtPrS3NRYqtkvb2I2SEFP0apht954oKdG3ncxyOgHRUkwgtxbCMAngzWo9+VWV3H3OlqeEOv7DdO2o0y95EvlHYb/qtosXPI2jC+6FPa+yl4xmLqcENRTUrU23dsmX3SyBEmZvML4dNeyC53B+mh7DUFtPFJFndxj2tGO9mTSDgy8eCmKG90AiJOMoxaLB2HpnDXN1sTiIcd3WraiE6ZCt4E54hKXvXHPyN52CHkxq1y/TeXHEq4X4MyHyDSRLHmzVs9pnwHM0ZLthKFNyvGfTvjiYokAWtNEuh74syt+m6Wietb6JvgibnnDj6uFKI3BbH4GUT9blsnMgug323bJ6bFvV4iESvz1fNnnUSokWQy5+fWzxPDohULgFzhDCpwov78Bp0E3t6DXSWnrUdNqpLbYKmXO1Hdbn+QH4B90p85UB1V5eSZgxPpUvZbIO4GPScil8K+dkDLdsFa1zypWNmlUN0Ns5H/iuzMuJql2QFYz+SnV1R1T+qywwqCNP9oswcLiAR3XnSacs52vd3PI9+0PZuoF6tVMWlvutsQ34IFZaAwIkdKigZcHumLBt/0KyFASBfN674n8FnHrHOQHU6oCeXkQA9kC8MtkvMb7fOLdzbTsD6SVojzZ64i9mDXxF+iLR9o52OxjIFzwLGRy/ivT/aAnHLZ3AsbnvslDjlQl2ADBFvf7xjmvFu0xlfK58TUpfVEkScFFapWJyKVybB4CRz1wKKz6n/a9581LpCVOWRsJa5p+j0zYcS2PfhmRf3RzwsDHeBjEVlIARbhxNKvmjdZyIidSdMMcsJHDRLE3bvo9kKfag0vRVKmuPLPc9FrACsz3vlkApcVQvzieHWoiP+foEvfj9+7Ti2tLfKdzVkMUmugZiZ46+7PKvIciiiuBPlyld0CCPTtTFHUOMO5dUfrUblX8K3awWiaNQFBS0J3iK08t1bgWfLhsKzsS32fRWugaqecwO9Rji9oHn+UuN8Nz9SgNxodroq9q7y/KHFxbqjCl62g25HN9zUa/s5wnIRwVAiWgTuOe3qGqjwp5m/GR8YVSSK/8mV9EL4AaF8d1uifdVA6wWSH1e/1UB8vcdU83P8ne3u1ho+Y/57WB7KnQaGaiD/108+wiAxNqMb2ex8on01VxdLKV1makXV3gzsvWaRevW8t/K11ZwYfo9g+guWADsA0JO0jWooiaupq1kNWrEheBdSRXBO7Jnb+56cTjPGwLpp7ZOHe/bSCJ4MGzPF3lK66LXhVo+rxvNjhoKVRjhGYxN4T8+AiRo3r+1KwdIGSrtODp3ri3JWAy6Eajp1Ukp9GaCbHSJFnYml84nKew7zLLe//ExQpjd4QAjMTvnbm+Ff6a1jf69QEVo0I33gI7/buwqgjiuvjeL6EYaMolKrKlHZHf/HwWbFbdID8T9aoyZJuCUd6YHaMPRAS6n5nvTwkRLlJ/f6wgyypUGZ22Bb1qGIb9SoPgSgIJkifUoewQW2EexqfoAsHXJVABLy+jp/SC4xzHZOSh42zU1k80HIgrnSOmu6T56F6gqy4Y2cZuZU8LXbO/01u8ifEz8yaXfEFSFdxE0TWl92OLKFtJZr9nNOBQQQr5FDGf6zB1/0CziG/5+PrUDgG3irzho6+7wXkc2CpxlBKOLWdjs3V/Lab6cURz1QZY4HYgUkJtm4U5OKUeO2+murlhC7SrnwyUtGrsD8NbCmI4SRHKPoeLBJQO/m3dRze5Ltr8N9IS7/ukPeOYe1O2agrmhH/JjYfz/l8Gmq8PGY+oavYp8I+2yKvGLD9kCxEgKcTeRh9AW/xPTLGsacrGKQCY+M76DfyLKxCZDiDY9xkBIKchxsMsn7FqZvRMMyJBHbqa3AKQyAN73NCSuFF5f1qDjARU/xqJFhOaKoR64c78oqh1GqOqEFbfNQIRw6WeFCGyW6v6p10uLdR7KXnR7+wub9aG992MpIBk0+gru74yO/WcA0vLdDEQIBwc+M0lmLB53ylsPtde3nliaC5ROHR1IS4LO8Q+3o0BHMr0my0bqFwwCAvZVXOFBHxXyUgrrmUTnZYVSQXNV6+MALBmmRU5yOzhhyHoEdj9YHZeyPpZkYc6DkJWCRYbFfmczNIs133KB9rlfug40w/hHa8pXyRyLaKQUMIUYEvt3Y4AQ==
|
|
295
install.sh
Normal file
295
install.sh
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Grasscutter install script for linux
|
||||||
|
# Made by TurtleIdiot
|
||||||
|
|
||||||
|
# Stops the installer if any command has a non-zero exit status
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Checks for root
|
||||||
|
if [ $EUID != 0 ]; then
|
||||||
|
echo "Please run the installer as root!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
is_command() {
|
||||||
|
# Checks if a given command is available
|
||||||
|
local check_command="$1"
|
||||||
|
command -v "${check_command}" > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
# IP validation
|
||||||
|
valid_ip() {
|
||||||
|
local ip=$1
|
||||||
|
local stat=1
|
||||||
|
|
||||||
|
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
||||||
|
OIFS=$IFS
|
||||||
|
IFS="."
|
||||||
|
ip=($ip)
|
||||||
|
IFS=$OIFS
|
||||||
|
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
|
||||||
|
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
|
||||||
|
stat=$?
|
||||||
|
fi
|
||||||
|
return $stat
|
||||||
|
}
|
||||||
|
|
||||||
|
# Checks for supported installer(s) (only apt-get and pacman right now, might add more in the future)
|
||||||
|
if is_command apt-get ; then
|
||||||
|
echo -e "Supported package manager found (apt-get)\n"
|
||||||
|
|
||||||
|
GC_DEPS="mongodb openjdk-17-jre"
|
||||||
|
INSTALLER_DEPS="wget openssl unzip git"
|
||||||
|
SYSTEM="deb" # Debian-based (debian, ubuntu)
|
||||||
|
elif is_command pacman ; then
|
||||||
|
echo -e "supported package manager found (pacman)\n"
|
||||||
|
|
||||||
|
GC_DEPS="jre17-openjdk"
|
||||||
|
INSTALLER_DEPS="curl wget openssl unzip git base-devel" # curl is still a dependency here in order to successfully build mongodb
|
||||||
|
SYSTEM="arch" # Arch for the elitists :P
|
||||||
|
else
|
||||||
|
echo "No supported package manager found"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
BRANCH="stable" # Stable by default
|
||||||
|
# Allows choice between stable and dev branch
|
||||||
|
echo "Please select the branch you wish to install"
|
||||||
|
echo -e "!!NOTE!!: stable is the recommended branch.\nDo *NOT* use development unless you have a reason to and know what you're doing"
|
||||||
|
select branch in "stable" "development" ; do
|
||||||
|
case $branch in
|
||||||
|
stable )
|
||||||
|
BRANCH="stable"
|
||||||
|
break;;
|
||||||
|
development )
|
||||||
|
BRANCH="development"
|
||||||
|
break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "The following packages will have to be installed in order to INSTALL grasscutter:"
|
||||||
|
echo -e "$INSTALLER_DEPS \n"
|
||||||
|
echo "The following packages will have to be installed to RUN grasscutter:"
|
||||||
|
echo -e "$GC_DEPS \n"
|
||||||
|
|
||||||
|
echo "Do you wish to proceed and install grasscutter?"
|
||||||
|
select yn in "Yes" "No" ; do
|
||||||
|
case $yn in
|
||||||
|
Yes ) break;;
|
||||||
|
No ) exit;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Updating package cache..."
|
||||||
|
case $SYSTEM in # More concise than if
|
||||||
|
deb ) apt-get update -qq;;
|
||||||
|
arch ) pacman -Syy;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Starts installing dependencies
|
||||||
|
echo "Installing setup dependencies..."
|
||||||
|
case $SYSTEM in # These are one-liners anyways
|
||||||
|
deb ) apt-get -qq install $INSTALLER_DEPS -y;;
|
||||||
|
arch ) pacman -Sq --noconfirm --needed $INSTALLER_DEPS > /dev/null;;
|
||||||
|
esac
|
||||||
|
echo "Done"
|
||||||
|
|
||||||
|
echo "Installing grasscutter dependencies..."
|
||||||
|
case $SYSTEM in
|
||||||
|
deb) apt-get -qq install $GC_DEPS -y > /dev/null;;
|
||||||
|
arch ) pacman -Sq --noconfirm --needed $GC_DEPS > /dev/null;;
|
||||||
|
esac
|
||||||
|
# *sighs* here we go...
|
||||||
|
INST_ARCH_MONGO="no"
|
||||||
|
if [ $SYSTEM = "arch" ]; then
|
||||||
|
echo -e "-=-=-=-=-=--- !! IMPORTANT !! ---=-=-=-=-=-\n"
|
||||||
|
echo -e " Due to licensing issues with mongodb,\n it is no longer available on the official arch repositiries."
|
||||||
|
echo -e " In order to install mongodb,\n it needs to be fetched from the Arch User Repository.\n"
|
||||||
|
echo -e " As this script is running as root,\n a temporary user will need to be created to run makepkg."
|
||||||
|
echo -e " The temporary user will be deleted once\n makepkg has finished.\n"
|
||||||
|
echo -e " This will be handled automatically.\n"
|
||||||
|
echo -e "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n"
|
||||||
|
echo -e "!!NOTE!!: Only select \"Skip\" if mongodb is already installed on this system"
|
||||||
|
echo "Do you want to continue?"
|
||||||
|
select yn in "Yes" "Skip" "No" ; do
|
||||||
|
case $yn in
|
||||||
|
Yes )
|
||||||
|
INST_ARCH_MONGO="yes"
|
||||||
|
break;;
|
||||||
|
No ) exit;;
|
||||||
|
Skip )
|
||||||
|
INST_ARCH_MONGO="no"
|
||||||
|
break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $INST_ARCH_MONGO = "yes" ]; then
|
||||||
|
DIR=$(pwd)
|
||||||
|
# Make temp user
|
||||||
|
echo "Creating temporary user..."
|
||||||
|
TEMPUSER="gctempuser"
|
||||||
|
TEMPHOME="/home/$TEMPUSER"
|
||||||
|
useradd -m $TEMPUSER
|
||||||
|
cd $TEMPHOME
|
||||||
|
|
||||||
|
# Do the actual makepkg shenanigans
|
||||||
|
echo "Building mongodb... (this will take a moment)"
|
||||||
|
su $TEMPUSER<<EOF
|
||||||
|
mkdir temp
|
||||||
|
cd temp
|
||||||
|
git clone https://aur.archlinux.org/mongodb-bin.git -q
|
||||||
|
cd mongodb-bin
|
||||||
|
makepkg -s > /dev/null
|
||||||
|
exit
|
||||||
|
EOF
|
||||||
|
mv "$(find -name "mongodb-bin*.pkg.tar.zst" -type f)" ./mongodb-bin.pkg.tar.zst
|
||||||
|
cd $DIR
|
||||||
|
|
||||||
|
# Snatch the file to current working directory
|
||||||
|
mv "$TEMPHOME/mongodb-bin.pkg.tar.zst" ./mongodb-bin.pkg.tar.zst
|
||||||
|
chown root ./mongodb-bin.pkg.tar.zst
|
||||||
|
chgrp root ./mongodb-bin.pkg.tar.zst
|
||||||
|
chmod 775 ./mongodb-bin.pkg.tar.zst
|
||||||
|
|
||||||
|
echo "Installing mongodb..."
|
||||||
|
pacman -U mongodb-bin.pkg.tar.zst --noconfirm > /dev/null
|
||||||
|
rm mongodb-bin.pkg.tar.zst
|
||||||
|
|
||||||
|
echo "Starting mongodb..."
|
||||||
|
systemctl enable mongodb
|
||||||
|
systemctl start mongodb
|
||||||
|
|
||||||
|
echo "Removing temporary account..."
|
||||||
|
userdel -r $TEMPUSER
|
||||||
|
fi
|
||||||
|
echo "Done"
|
||||||
|
|
||||||
|
echo "Getting grasscutter..."
|
||||||
|
|
||||||
|
# Download and rename jar
|
||||||
|
wget -q --show-progress "https://nightly.link/Grasscutters/Grasscutter/workflows/build/$BRANCH/Grasscutter.zip"
|
||||||
|
echo "unzipping"
|
||||||
|
unzip -qq Grasscutter.zip
|
||||||
|
mv $(find -name "grasscutter*.jar" -type f) grasscutter.jar
|
||||||
|
|
||||||
|
# Download resources
|
||||||
|
echo "Downloading resources... (this will take a moment)"
|
||||||
|
wget -q --show-progress https://github.com/Koko-boya/Grasscutter_Resources/archive/refs/heads/main.zip -O resources.zip
|
||||||
|
echo "Extracting..."
|
||||||
|
unzip -qq resources.zip
|
||||||
|
mv ./Grasscutter_Resources-main/Resources ./resources
|
||||||
|
|
||||||
|
# Here we do a sparse checkout to only pull /data and /keys
|
||||||
|
echo "Downloading keys and data..."
|
||||||
|
mkdir repo
|
||||||
|
cd repo
|
||||||
|
git init -q
|
||||||
|
git remote add origin https://github.com/Grasscutters/Grasscutter.git
|
||||||
|
git fetch -q
|
||||||
|
git config core.sparseCheckout true
|
||||||
|
echo "data/" >> .git/info/sparse-checkout
|
||||||
|
echo "keys/" >> .git/info/sparse-checkout
|
||||||
|
git pull origin stable -q
|
||||||
|
cd ../
|
||||||
|
mv ./repo/data ./data
|
||||||
|
mv ./repo/keys ./keys
|
||||||
|
|
||||||
|
# Generate handbook/config
|
||||||
|
echo "Please enter language when *NEXT* prompted (press enter/return to continue to language select)"
|
||||||
|
read
|
||||||
|
java -jar grasscutter.jar -handbook
|
||||||
|
|
||||||
|
# Prompt IP address for config.json and for generating new keystore.p12 file
|
||||||
|
echo "Please enter the IP address that will be used to connect to the server"
|
||||||
|
echo "This can be a local or a public IP address"
|
||||||
|
echo "This IP address will be used to generate SSL certificates so it is important it is correct"
|
||||||
|
|
||||||
|
while : ; do
|
||||||
|
read -p "Enter IP: " SERVER_IP
|
||||||
|
if valid_ip $SERVER_IP; then
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
echo "Invalid IP address. Try again."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Replaces "127.0.0.1" with given IP
|
||||||
|
sed -i "s/127.0.0.1/$SERVER_IP/g" config.json
|
||||||
|
|
||||||
|
# Generates new keystore.p12 with the server's IP address
|
||||||
|
# This is done to prevent a "Connection Timed Out" error from appearing
|
||||||
|
# after clicking to enter the door in the main menu/title screen
|
||||||
|
# This issue only exists when connecting to a server *other* than localhost
|
||||||
|
# since the default keystore.p12 has only been made for localhost
|
||||||
|
|
||||||
|
mkdir certs
|
||||||
|
cd certs
|
||||||
|
echo "Generating CA key and certificate pair..."
|
||||||
|
openssl req -x509 -nodes -days 25202 -newkey rsa:2048 -subj "/C=GB/ST=Essex/L=London/O=Grasscutters/OU=Grasscutters/CN=$SERVER_IP" -keyout CAkey.key -out CAcert.crt
|
||||||
|
echo "Generating SSL key and certificate pair..."
|
||||||
|
|
||||||
|
openssl genpkey -out ssl.key -algorithm rsa
|
||||||
|
|
||||||
|
# Creates a conf file in order to generate a csr
|
||||||
|
cat > csr.conf <<EOF
|
||||||
|
[ req ]
|
||||||
|
default_bits = 2048
|
||||||
|
prompt = no
|
||||||
|
default_md = sha256
|
||||||
|
req_extensions = req_ext
|
||||||
|
distinguished_name = dn
|
||||||
|
|
||||||
|
[ dn ]
|
||||||
|
C = GB
|
||||||
|
ST = Essex
|
||||||
|
L = London
|
||||||
|
O = Grasscutters
|
||||||
|
OU = Grasscutters
|
||||||
|
CN = $SERVER_IP
|
||||||
|
|
||||||
|
[ req_ext ]
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[ alt_names ]
|
||||||
|
IP.1 = $SERVER_IP
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Creates csr using key and conf
|
||||||
|
openssl req -new -key ssl.key -out ssl.csr -config csr.conf
|
||||||
|
|
||||||
|
# Creates conf to finalise creation of certificate
|
||||||
|
cat > cert.conf <<EOF
|
||||||
|
|
||||||
|
authorityKeyIdentifier=keyid,issuer
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, keyAgreement, dataEncipherment
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[alt_names]
|
||||||
|
IP.1 = $SERVER_IP
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Creates ssl cert
|
||||||
|
openssl x509 -req -in ssl.csr -CA CAcert.crt -CAkey CAkey.key -CAcreateserial -out ssl.crt -days 25202 -sha256 -extfile cert.conf
|
||||||
|
|
||||||
|
echo "Generating keystore.p12 from key and certificate..."
|
||||||
|
openssl pkcs12 -export -out keystore.p12 -inkey ssl.key -in ssl.crt -certfile CAcert.crt -passout pass:123456
|
||||||
|
|
||||||
|
cd ../
|
||||||
|
mv ./certs/keystore.p12 ./keystore.p12
|
||||||
|
echo "Done"
|
||||||
|
|
||||||
|
echo -e "Asking Noelle to clean up...\n"
|
||||||
|
rm -rf Grasscutter.zip resources.zip ./certs ./Grasscutter_Resources-main ./repo
|
||||||
|
echo -e "All done!\n"
|
||||||
|
echo -e "You can now uninstall the following packages if you wish:\n$INSTALLER_DEPS"
|
||||||
|
echo -e "-=-=-=-=-=--- !! IMPORTANT !! ---=-=-=-=-=-\n"
|
||||||
|
echo "Please make sure that ports 443 and 22102 are OPEN (both tcp and udp)"
|
||||||
|
echo -e "In order to run the server, run the following command:\nsudo java -jar grasscutter.jar"
|
||||||
|
echo "You must run it using sudo as port 443 is a privileged port"
|
||||||
|
echo "To play, use the IP you provided earlier ($SERVER_IP) via GrassClipper or Fiddler"
|
||||||
|
|
||||||
|
exit
|
Binary file not shown.
49
plugin-schema.json
Normal file
49
plugin-schema.json
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"title": "JSON schema for a Grasscutter Plugin",
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": true,
|
||||||
|
"definitions": {
|
||||||
|
"plugin-name": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^[A-Za-z\\d_.-]+$"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [ "name", "description", "mainClass" ],
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"description": "The unique name of plugin.",
|
||||||
|
"$ref": "#/definitions/plugin-name"
|
||||||
|
},
|
||||||
|
"mainClass": {
|
||||||
|
"description": "The plugin's initial class file.",
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^(?!org\\.bukkit\\.)([a-zA-Z_$][a-zA-Z\\d_$]*\\.)*[a-zA-Z_$][a-zA-Z\\d_$]*$"
|
||||||
|
},
|
||||||
|
"version": {
|
||||||
|
"description": "A plugin revision identifier.",
|
||||||
|
"type": [ "string", "number" ]
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"description": "Human readable plugin summary.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"description": "The plugin author.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"authors": {
|
||||||
|
"description": "The plugin contributors.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"website": {
|
||||||
|
"title": "Website",
|
||||||
|
"description": "The URL to the plugin's site",
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
proto/AbilityActionGenerateElemBall.proto
Normal file
11
proto/AbilityActionGenerateElemBall.proto
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
import "Vector.proto";
|
||||||
|
|
||||||
|
message AbilityActionGenerateElemBall {
|
||||||
|
Vector pos = 1;
|
||||||
|
Vector rot = 2;
|
||||||
|
uint32 room_id = 3;
|
||||||
|
}
|
@ -2,8 +2,8 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AbilityString.proto";
|
|
||||||
import "AbilityScalarValueEntry.proto";
|
import "AbilityScalarValueEntry.proto";
|
||||||
|
import "AbilityString.proto";
|
||||||
|
|
||||||
message AbilityAppliedAbility {
|
message AbilityAppliedAbility {
|
||||||
AbilityString ability_name = 1;
|
AbilityString ability_name = 1;
|
||||||
|
@ -2,8 +2,8 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AbilityString.proto";
|
|
||||||
import "AbilityAttachedModifier.proto";
|
import "AbilityAttachedModifier.proto";
|
||||||
|
import "AbilityString.proto";
|
||||||
import "ModifierDurability.proto";
|
import "ModifierDurability.proto";
|
||||||
|
|
||||||
message AbilityAppliedModifier {
|
message AbilityAppliedModifier {
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AbilityAttachedModifier {
|
message AbilityAttachedModifier {
|
||||||
bool is_invalid = 1;
|
bool is_invalid = 1;
|
||||||
uint32 owner_entity_id = 2;
|
uint32 owner_entity_id = 2;
|
||||||
|
@ -4,15 +4,10 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
|
|
||||||
import "AbilityControlBlock.proto";
|
import "AbilityControlBlock.proto";
|
||||||
|
|
||||||
|
// CmdId: 1155
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AbilityChangeNotify {
|
message AbilityChangeNotify {
|
||||||
enum CmdId {
|
uint32 entity_id = 3;
|
||||||
option allow_alias = true;
|
AbilityControlBlock ability_control_block = 10;
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1112;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 entity_id = 1;
|
|
||||||
AbilityControlBlock ability_control_block = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AbilityEmbryo {
|
message AbilityEmbryo {
|
||||||
uint32 ability_id = 1;
|
uint32 ability_id = 1;
|
||||||
fixed32 ability_name_hash = 2;
|
fixed32 ability_name_hash = 2;
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AbilityGadgetInfo {
|
message AbilityGadgetInfo {
|
||||||
uint32 camp_id = 1;
|
uint32 camp_id = 1;
|
||||||
uint32 camp_target_type = 2;
|
uint32 camp_target_type = 2;
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AbilityIdentifier {
|
message AbilityIdentifier {
|
||||||
uint32 instanced_ability_id = 1;
|
uint32 instanced_ability_id = 1;
|
||||||
uint32 ability_caster_id = 2;
|
uint32 ability_caster_id = 2;
|
||||||
|
@ -4,15 +4,10 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
|
|
||||||
import "AbilityInvokeEntry.proto";
|
import "AbilityInvokeEntry.proto";
|
||||||
|
|
||||||
|
// CmdId: 1131
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AbilityInvocationsNotify {
|
message AbilityInvocationsNotify {
|
||||||
enum CmdId {
|
repeated AbilityInvokeEntry invokes = 8;
|
||||||
option allow_alias = true;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1118;
|
|
||||||
}
|
|
||||||
|
|
||||||
repeated AbilityInvokeEntry invokes = 1;
|
|
||||||
}
|
}
|
||||||
|
@ -3,52 +3,58 @@ syntax = "proto3";
|
|||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
enum AbilityInvokeArgument {
|
enum AbilityInvokeArgument {
|
||||||
ABILITY_NONE = 0;
|
ABILITY_INVOKE_ARGUMENT_NONE = 0;
|
||||||
ABILITY_META_MODIFIER_CHANGE = 1;
|
ABILITY_INVOKE_ARGUMENT_META_MODIFIER_CHANGE = 1;
|
||||||
ABILITY_META_COMMAND_MODIFIER_CHANGE_REQUEST = 2;
|
ABILITY_INVOKE_ARGUMENT_META_COMMAND_MODIFIER_CHANGE_REQUEST = 2;
|
||||||
ABILITY_META_SPECIAL_FLOAT_ARGUMENT = 3;
|
ABILITY_INVOKE_ARGUMENT_META_SPECIAL_FLOAT_ARGUMENT = 3;
|
||||||
ABILITY_META_OVERRIDE_PARAM = 4;
|
ABILITY_INVOKE_ARGUMENT_META_OVERRIDE_PARAM = 4;
|
||||||
ABILITY_META_CLEAR_OVERRIDE_PARAM = 5;
|
ABILITY_INVOKE_ARGUMENT_META_CLEAR_OVERRIDE_PARAM = 5;
|
||||||
ABILITY_META_REINIT_OVERRIDEMAP = 6;
|
ABILITY_INVOKE_ARGUMENT_META_REINIT_OVERRIDEMAP = 6;
|
||||||
ABILITY_META_GLOBAL_FLOAT_VALUE = 7;
|
ABILITY_INVOKE_ARGUMENT_META_GLOBAL_FLOAT_VALUE = 7;
|
||||||
ABILITY_META_CLEAR_GLOBAL_FLOAT_VALUE = 8;
|
ABILITY_INVOKE_ARGUMENT_META_CLEAR_GLOBAL_FLOAT_VALUE = 8;
|
||||||
ABILITY_META_ABILITY_ELEMENT_STRENGTH = 9;
|
ABILITY_INVOKE_ARGUMENT_META_ABILITY_ELEMENT_STRENGTH = 9;
|
||||||
ABILITY_META_ADD_OR_GET_ABILITY_AND_TRIGGER = 10;
|
ABILITY_INVOKE_ARGUMENT_META_ADD_OR_GET_ABILITY_AND_TRIGGER = 10;
|
||||||
ABILITY_META_SET_KILLED_SETATE = 11;
|
ABILITY_INVOKE_ARGUMENT_META_SET_KILLED_SETATE = 11;
|
||||||
ABILITY_META_SET_ABILITY_TRIGGER = 12;
|
ABILITY_INVOKE_ARGUMENT_META_SET_ABILITY_TRIGGER = 12;
|
||||||
ABILITY_META_ADD_NEW_ABILITY = 13;
|
ABILITY_INVOKE_ARGUMENT_META_ADD_NEW_ABILITY = 13;
|
||||||
ABILITY_META_REMOVE_ABILITY = 14;
|
ABILITY_INVOKE_ARGUMENT_META_REMOVE_ABILITY = 14;
|
||||||
ABILITY_META_SET_MODIFIER_APPLY_ENTITY = 15;
|
ABILITY_INVOKE_ARGUMENT_META_SET_MODIFIER_APPLY_ENTITY = 15;
|
||||||
ABILITY_META_MODIFIER_DURABILITY_CHANGE = 16;
|
ABILITY_INVOKE_ARGUMENT_META_MODIFIER_DURABILITY_CHANGE = 16;
|
||||||
ABILITY_META_ELEMENT_REACTION_VISUAL = 17;
|
ABILITY_INVOKE_ARGUMENT_META_ELEMENT_REACTION_VISUAL = 17;
|
||||||
ABILITY_META_SET_POSE_PARAMETER = 18;
|
ABILITY_INVOKE_ARGUMENT_META_SET_POSE_PARAMETER = 18;
|
||||||
ABILITY_META_UPDATE_BASE_REACTION_DAMAGE = 19;
|
ABILITY_INVOKE_ARGUMENT_META_UPDATE_BASE_REACTION_DAMAGE = 19;
|
||||||
ABILITY_META_TRIGGER_ELEMENT_REACTION = 20;
|
ABILITY_INVOKE_ARGUMENT_META_TRIGGER_ELEMENT_REACTION = 20;
|
||||||
ABILITY_META_LOSE_HP = 21;
|
ABILITY_INVOKE_ARGUMENT_META_LOSE_HP = 21;
|
||||||
ABILITY_ACTION_TRIGGER_ABILITY = 50;
|
ABILITY_INVOKE_ARGUMENT_JDDDLJELBLJ = 22;
|
||||||
ABILITY_ACTION_SET_CRASH_DAMAGE = 51;
|
ABILITY_INVOKE_ARGUMENT_ACTION_TRIGGER_ABILITY = 50;
|
||||||
ABILITY_ACTION_EFFECT = 52;
|
ABILITY_INVOKE_ARGUMENT_ACTION_SET_CRASH_DAMAGE = 51;
|
||||||
ABILITY_ACTION_SUMMON = 53;
|
ABILITY_INVOKE_ARGUMENT_ACTION_EFFECT = 52;
|
||||||
ABILITY_ACTION_BLINK = 54;
|
ABILITY_INVOKE_ARGUMENT_ACTION_SUMMON = 53;
|
||||||
ABILITY_ACTION_CREATE_GADGET = 55;
|
ABILITY_INVOKE_ARGUMENT_ACTION_BLINK = 54;
|
||||||
ABILITY_ACTION_APPLY_LEVEL_MODIFIER = 56;
|
ABILITY_INVOKE_ARGUMENT_ACTION_CREATE_GADGET = 55;
|
||||||
ABILITY_ACTION_GENERATE_ELEM_BALL = 57;
|
ABILITY_INVOKE_ARGUMENT_ACTION_APPLY_LEVEL_MODIFIER = 56;
|
||||||
ABILITY_ACTION_SET_RANDOM_OVERRIDE_MAP_VALUE = 58;
|
ABILITY_INVOKE_ARGUMENT_ACTION_GENERATE_ELEM_BALL = 57;
|
||||||
ABILITY_ACTION_SERVER_MONSTER_LOG = 59;
|
ABILITY_INVOKE_ARGUMENT_ACTION_SET_RANDOM_OVERRIDE_MAP_VALUE = 58;
|
||||||
ABILITY_ACTION_CREATE_TILE = 60;
|
ABILITY_INVOKE_ARGUMENT_ACTION_SERVER_MONSTER_LOG = 59;
|
||||||
ABILITY_ACTION_DESTROY_TILE = 61;
|
ABILITY_INVOKE_ARGUMENT_ACTION_CREATE_TILE = 60;
|
||||||
ABILITY_ACTION_FIRE_AFTER_IMAGE = 62;
|
ABILITY_INVOKE_ARGUMENT_ACTION_DESTROY_TILE = 61;
|
||||||
ABILITY_MIXIN_AVATAR_STEER_BY_CAMERA = 100;
|
ABILITY_INVOKE_ARGUMENT_ACTION_FIRE_AFTER_IMAGE = 62;
|
||||||
ABILITY_MIXIN_MONSTER_DEFEND = 101;
|
ABILITY_INVOKE_ARGUMENT_FNANDDPDLOL = 63;
|
||||||
ABILITY_MIXIN_WIND_ZONE = 102;
|
ABILITY_INVOKE_ARGUMENT_MIXIN_AVATAR_STEER_BY_CAMERA = 100;
|
||||||
ABILITY_MIXIN_COST_STAMINA = 103;
|
ABILITY_INVOKE_ARGUMENT_MIXIN_MONSTER_DEFEND = 101;
|
||||||
ABILITY_MIXIN_ELITE_SHIELD = 104;
|
ABILITY_INVOKE_ARGUMENT_MIXIN_WIND_ZONE = 102;
|
||||||
ABILITY_MIXIN_ELEMENT_SHIELD = 105;
|
ABILITY_INVOKE_ARGUMENT_MIXIN_COST_STAMINA = 103;
|
||||||
ABILITY_MIXIN_GLOBAL_SHIELD = 106;
|
ABILITY_INVOKE_ARGUMENT_MIXIN_ELITE_SHIELD = 104;
|
||||||
ABILITY_MIXIN_SHIELD_BAR = 107;
|
ABILITY_INVOKE_ARGUMENT_MIXIN_ELEMENT_SHIELD = 105;
|
||||||
ABILITY_MIXIN_WIND_SEED_SPAWNER = 108;
|
ABILITY_INVOKE_ARGUMENT_MIXIN_GLOBAL_SHIELD = 106;
|
||||||
ABILITY_MIXIN_DO_ACTION_BY_ELEMENT_REACTION = 109;
|
ABILITY_INVOKE_ARGUMENT_MIXIN_SHIELD_BAR = 107;
|
||||||
ABILITY_MIXIN_FIELD_ENTITY_COUNT_CHANGE = 110;
|
ABILITY_INVOKE_ARGUMENT_MIXIN_WIND_SEED_SPAWNER = 108;
|
||||||
ABILITY_MIXIN_SCENE_PROP_SYNC = 111;
|
ABILITY_INVOKE_ARGUMENT_MIXIN_DO_ACTION_BY_ELEMENT_REACTION = 109;
|
||||||
ABILITY_MIXIN_WIDGET_MP_SUPPORT = 112;
|
ABILITY_INVOKE_ARGUMENT_MIXIN_FIELD_ENTITY_COUNT_CHANGE = 110;
|
||||||
|
ABILITY_INVOKE_ARGUMENT_MIXIN_SCENE_PROP_SYNC = 111;
|
||||||
|
ABILITY_INVOKE_ARGUMENT_MIXIN_WIDGET_MP_SUPPORT = 112;
|
||||||
|
ABILITY_INVOKE_ARGUMENT_NJHBFADEOON = 113;
|
||||||
|
ABILITY_INVOKE_ARGUMENT_EGCIFFFLLBG = 114;
|
||||||
|
ABILITY_INVOKE_ARGUMENT_OFDGFACOLDI = 115;
|
||||||
|
ABILITY_INVOKE_ARGUMENT_KDPKJGJNGFB = 116;
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,8 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AbilityInvokeEntryHead.proto";
|
|
||||||
import "AbilityInvokeArgument.proto";
|
import "AbilityInvokeArgument.proto";
|
||||||
|
import "AbilityInvokeEntryHead.proto";
|
||||||
import "ForwardType.proto";
|
import "ForwardType.proto";
|
||||||
|
|
||||||
message AbilityInvokeEntry {
|
message AbilityInvokeEntry {
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AbilityInvokeEntryHead {
|
message AbilityInvokeEntryHead {
|
||||||
uint32 instanced_ability_id = 1;
|
uint32 instanced_ability_id = 1;
|
||||||
uint32 instanced_modifier_id = 2;
|
uint32 instanced_modifier_id = 2;
|
||||||
|
21
proto/AbilityMetaModifierChange.proto
Normal file
21
proto/AbilityMetaModifierChange.proto
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
import "ModifierAction.proto";
|
||||||
|
import "AbilityString.proto";
|
||||||
|
import "AbilityAttachedModifier.proto";
|
||||||
|
import "ModifierProperty.proto";
|
||||||
|
|
||||||
|
message AbilityMetaModifierChange {
|
||||||
|
ModifierAction action = 1;
|
||||||
|
AbilityString parent_ability_name = 2;
|
||||||
|
AbilityString parent_ability_override = 3;
|
||||||
|
AbilityAttachedModifier attached_instanced_modifier = 4;
|
||||||
|
repeated ModifierProperty properties = 5;
|
||||||
|
int32 modifier_local_id = 6;
|
||||||
|
bool is_mute_remote = 7;
|
||||||
|
uint32 apply_entity_id = 8;
|
||||||
|
bool is_attached_parent_ability = 9;
|
||||||
|
uint32 server_buff_uid = 10;
|
||||||
|
}
|
9
proto/AbilityMetaReInitOverrideMap.proto
Normal file
9
proto/AbilityMetaReInitOverrideMap.proto
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
import "AbilityScalarValueEntry.proto";
|
||||||
|
|
||||||
|
message AbilityMetaReInitOverrideMap {
|
||||||
|
repeated AbilityScalarValueEntry override_map = 1;
|
||||||
|
}
|
7
proto/AbilityMixinCostStamina.proto
Normal file
7
proto/AbilityMixinCostStamina.proto
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
message AbilityMixinCostStamina {
|
||||||
|
bool is_swim = 1;
|
||||||
|
}
|
@ -5,12 +5,12 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
import "MassivePropSyncInfo.proto";
|
import "MassivePropSyncInfo.proto";
|
||||||
|
|
||||||
message AbilityMixinRecoverInfo {
|
message AbilityMixinRecoverInfo {
|
||||||
oneof Source {
|
|
||||||
uint32 instanced_ability_id = 1;
|
|
||||||
uint32 instanced_modifier_id = 2;
|
|
||||||
}
|
|
||||||
uint32 local_id = 3;
|
uint32 local_id = 3;
|
||||||
repeated uint32 data_list = 4;
|
repeated uint32 data_list = 4;
|
||||||
bool is_serverbuff_modifier = 5;
|
bool is_serverbuff_modifier = 5;
|
||||||
repeated MassivePropSyncInfo massive_prop_list = 6;
|
repeated MassivePropSyncInfo massive_prop_list = 6;
|
||||||
|
oneof source {
|
||||||
|
uint32 instanced_ability_id = 1;
|
||||||
|
uint32 instanced_modifier_id = 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
8
proto/AbilityMixinWidgetMpSupport.proto
Normal file
8
proto/AbilityMixinWidgetMpSupport.proto
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
|
message AbilityMixinWidgetMpSupport {
|
||||||
|
uint32 target_entity_id = 1;
|
||||||
|
}
|
@ -3,11 +3,11 @@ syntax = "proto3";
|
|||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
enum AbilityScalarType {
|
enum AbilityScalarType {
|
||||||
UNKNOW = 0;
|
ABILITY_SCALAR_TYPE_UNKNOW = 0;
|
||||||
FLOAT = 1;
|
ABILITY_SCALAR_TYPE_FLOAT = 1;
|
||||||
INT = 2;
|
ABILITY_SCALAR_TYPE_INT = 2;
|
||||||
BOOL = 3;
|
ABILITY_SCALAR_TYPE_BOOL = 3;
|
||||||
TRIGGER = 4;
|
ABILITY_SCALAR_TYPE_TRIGGER = 4;
|
||||||
STRING = 5;
|
ABILITY_SCALAR_TYPE_STRING = 5;
|
||||||
UINT = 6;
|
ABILITY_SCALAR_TYPE_UINT = 6;
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,16 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AbilityString.proto";
|
|
||||||
import "AbilityScalarType.proto";
|
import "AbilityScalarType.proto";
|
||||||
|
import "AbilityString.proto";
|
||||||
|
|
||||||
message AbilityScalarValueEntry {
|
message AbilityScalarValueEntry {
|
||||||
oneof Value {
|
AbilityString key = 1;
|
||||||
|
AbilityScalarType value_type = 2;
|
||||||
|
oneof value {
|
||||||
float float_value = 3;
|
float float_value = 3;
|
||||||
string string_value = 4;
|
string string_value = 4;
|
||||||
int32 int_value = 5;
|
int32 int_value = 5;
|
||||||
uint32 uint_value = 6;
|
uint32 uint_value = 6;
|
||||||
}
|
}
|
||||||
AbilityString key = 1;
|
|
||||||
AbilityScalarType value_type = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,8 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AbilityString {
|
message AbilityString {
|
||||||
oneof Type {
|
oneof type {
|
||||||
string str = 1;
|
string str = 1;
|
||||||
uint32 hash = 2;
|
uint32 hash = 2;
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,10 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AbilityScalarValueEntry.proto";
|
|
||||||
import "AbilityAppliedAbility.proto";
|
import "AbilityAppliedAbility.proto";
|
||||||
import "AbilityAppliedModifier.proto";
|
import "AbilityAppliedModifier.proto";
|
||||||
import "AbilityMixinRecoverInfo.proto";
|
import "AbilityMixinRecoverInfo.proto";
|
||||||
|
import "AbilityScalarValueEntry.proto";
|
||||||
|
|
||||||
message AbilitySyncStateInfo {
|
message AbilitySyncStateInfo {
|
||||||
bool is_inited = 1;
|
bool is_inited = 1;
|
||||||
|
@ -2,45 +2,42 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "ActivityNullDetailInfo.proto";
|
|
||||||
import "ActivityWatcherInfo.proto";
|
import "ActivityWatcherInfo.proto";
|
||||||
|
/*import "ArenaChallengeActivityDetailInfo.proto";
|
||||||
|
import "AsterActivityDetailInfo.proto";
|
||||||
|
import "BlessingActivityDetailInfo.proto";
|
||||||
|
import "BlitzRushActivityDetailInfo.proto";
|
||||||
|
import "BounceConjuringActivityDetailInfo.proto";
|
||||||
|
import "BuoyantCombatDetailInfo.proto";
|
||||||
|
import "ChannelerSlabActivityDetailInfo.proto";
|
||||||
|
import "ChessActivityDetailInfo.proto";
|
||||||
|
import "CrucibleActivityDetailInfo.proto";
|
||||||
|
import "DeliveryActivityDetailInfo.proto";
|
||||||
|
import "DigActivityDetailInfo.proto";
|
||||||
|
import "DragonSpineActivityDetailInfo.proto";
|
||||||
|
import "EchoShellDetailInfo.proto";
|
||||||
|
import "EffigyActivityDetailInfo.proto";
|
||||||
|
import "ExpeditionActivityDetailInfo.proto";
|
||||||
|
import "FindHilichurlDetailInfo.proto";
|
||||||
|
import "FleurFairActivityDetailInfo.proto";
|
||||||
|
import "FlightActivityDetailInfo.proto";
|
||||||
|
import "HideAndSeekActivityDetailInfo.proto";
|
||||||
|
import "LunaRiteDetailInfo.proto";
|
||||||
|
import "MistTrialActivityDetailInfo.proto";
|
||||||
|
import "MoonfinTrialActivityDetailInfo.proto";
|
||||||
|
import "MusicGameActivityDetailInfo.proto";
|
||||||
|
import "PlantFlowerActivityDetailInfo.proto";
|
||||||
|
import "RoguelikeDungeonActivityDetailInfo.proto";
|
||||||
|
import "SalesmanActivityDetailInfo.proto";
|
||||||
|
import "SeaLampActivityDetailInfo.proto";
|
||||||
|
import "SeaLampActivityInfo.proto";
|
||||||
|
import "SummerTimeDetailInfo.proto";
|
||||||
|
import "SumoActivityDetailInfo.proto";
|
||||||
|
import "TreasureMapActivityDetailInfo.proto";
|
||||||
|
import "TrialAvatarActivityDetailInfo.proto";
|
||||||
|
import "WaterSpiritActivityDetailInfo.proto";*/
|
||||||
|
|
||||||
message ActivityInfo {
|
message ActivityInfo {
|
||||||
oneof Detail {
|
|
||||||
ActivityNullDetailInfo sam_lamp_info = 11;
|
|
||||||
ActivityNullDetailInfo crucible_info = 12;
|
|
||||||
ActivityNullDetailInfo salesman_info = 13;
|
|
||||||
ActivityNullDetailInfo trial_avatar_info = 14;
|
|
||||||
ActivityNullDetailInfo delivery_info = 16;
|
|
||||||
ActivityNullDetailInfo aster_info = 21;
|
|
||||||
ActivityNullDetailInfo flight_info = 25;
|
|
||||||
ActivityNullDetailInfo dragon_spine_info = 31;
|
|
||||||
ActivityNullDetailInfo effigy_info = 32;
|
|
||||||
ActivityNullDetailInfo treasure_map_info = 35;
|
|
||||||
ActivityNullDetailInfo blessing_info = 41;
|
|
||||||
ActivityNullDetailInfo sea_lamp_info = 42;
|
|
||||||
ActivityNullDetailInfo expedition_info = 43;
|
|
||||||
ActivityNullDetailInfo arena_challenge_info = 44;
|
|
||||||
ActivityNullDetailInfo fleur_fair_info = 51;
|
|
||||||
ActivityNullDetailInfo water_spirit_info = 52;
|
|
||||||
ActivityNullDetailInfo challneler_slab_info = 61;
|
|
||||||
ActivityNullDetailInfo mist_trial_activity_info = 62;
|
|
||||||
ActivityNullDetailInfo hide_and_seek_info = 63;
|
|
||||||
ActivityNullDetailInfo find_hilichurl_info = 64;
|
|
||||||
ActivityNullDetailInfo summer_time_info = 65;
|
|
||||||
ActivityNullDetailInfo buoyant_combat_info = 66;
|
|
||||||
ActivityNullDetailInfo echo_shell_info = 67;
|
|
||||||
ActivityNullDetailInfo bounce_conjuring_info = 68;
|
|
||||||
ActivityNullDetailInfo blitz_rush_info = 69;
|
|
||||||
ActivityNullDetailInfo chess_info = 70;
|
|
||||||
ActivityNullDetailInfo sumo_info = 71;
|
|
||||||
ActivityNullDetailInfo moonfin_trial_info = 72;
|
|
||||||
ActivityNullDetailInfo luna_rite_info = 73;
|
|
||||||
ActivityNullDetailInfo plant_flower_info = 74;
|
|
||||||
ActivityNullDetailInfo music_game_info = 75;
|
|
||||||
ActivityNullDetailInfo roguelike_dungoen_info = 76;
|
|
||||||
ActivityNullDetailInfo dig_info = 77;
|
|
||||||
}
|
|
||||||
uint32 activity_id = 1;
|
uint32 activity_id = 1;
|
||||||
uint32 schedule_id = 2;
|
uint32 schedule_id = 2;
|
||||||
uint32 begin_time = 3;
|
uint32 begin_time = 3;
|
||||||
@ -59,4 +56,57 @@ message ActivityInfo {
|
|||||||
repeated uint32 taken_reward_list = 24;
|
repeated uint32 taken_reward_list = 24;
|
||||||
bool is_hidden = 26;
|
bool is_hidden = 26;
|
||||||
uint32 first_day_start_time = 27;
|
uint32 first_day_start_time = 27;
|
||||||
|
//bool MIFCLBCMKJI = 28;
|
||||||
|
//bool BPGCBIEDEDM = 29;
|
||||||
|
//map<uint32, uint32> AGKPABKOHDA = 30;
|
||||||
|
/*oneof detail {
|
||||||
|
SeaLampActivityDetailInfo sam_lamp_info = 11;
|
||||||
|
CrucibleActivityDetailInfo crucible_info = 12;
|
||||||
|
SalesmanActivityDetailInfo salesman_info = 13;
|
||||||
|
TrialAvatarActivityDetailInfo trial_avatar_info = 14;
|
||||||
|
DeliveryActivityDetailInfo delivery_info = 16;
|
||||||
|
AsterActivityDetailInfo aster_info = 21;
|
||||||
|
FlightActivityDetailInfo flight_info = 25;
|
||||||
|
DragonSpineActivityDetailInfo dragon_spine_info = 31;
|
||||||
|
EffigyActivityDetailInfo effigy_info = 32;
|
||||||
|
TreasureMapActivityDetailInfo treasure_map_info = 35;
|
||||||
|
BlessingActivityDetailInfo blessing_info = 41;
|
||||||
|
SeaLampActivityInfo sea_lamp_info = 42;
|
||||||
|
ExpeditionActivityDetailInfo expedition_info = 43;
|
||||||
|
ArenaChallengeActivityDetailInfo arena_challenge_info = 44;
|
||||||
|
FleurFairActivityDetailInfo fleur_fair_info = 51;
|
||||||
|
WaterSpiritActivityDetailInfo water_spirit_info = 52;
|
||||||
|
ChannelerSlabActivityDetailInfo challneler_slab_info = 61;
|
||||||
|
MistTrialActivityDetailInfo mist_trial_activity_info = 62;
|
||||||
|
HideAndSeekActivityDetailInfo hide_and_seek_info = 63;
|
||||||
|
FindHilichurlDetailInfo find_hilichurl_info = 64;
|
||||||
|
SummerTimeDetailInfo summer_time_info = 65;
|
||||||
|
BuoyantCombatDetailInfo buoyant_combat_info = 66;
|
||||||
|
EchoShellDetailInfo echo_shell_info = 67;
|
||||||
|
BounceConjuringActivityDetailInfo bounce_conjuring_info = 68;
|
||||||
|
BlitzRushActivityDetailInfo blitz_rush_info = 69;
|
||||||
|
ChessActivityDetailInfo chess_info = 70;
|
||||||
|
SumoActivityDetailInfo sumo_info = 71;
|
||||||
|
MoonfinTrialActivityDetailInfo moonfin_trial_info = 72;
|
||||||
|
LunaRiteDetailInfo luna_rite_info = 73;
|
||||||
|
PlantFlowerActivityDetailInfo plant_flower_info = 74;
|
||||||
|
MusicGameActivityDetailInfo music_game_info = 75;
|
||||||
|
RoguelikeDungeonActivityDetailInfo roguelike_dungoen_info = 76;
|
||||||
|
DigActivityDetailInfo dig_info = 77;
|
||||||
|
DOCNGBMKEID hachi_info = 78;
|
||||||
|
DLHPBNNDGFI winter_camp_info = 79;
|
||||||
|
IFACCKLEJCC potion_info = 80;
|
||||||
|
PFMCPMIMGLM tanuki_travel_activity_info = 81;
|
||||||
|
JEIAODKGIBD lantern_rite_activity_info = 82;
|
||||||
|
EPDOGGKOCAP michiae_matsuri_info = 83;
|
||||||
|
NHMFHLIGAKL bartender_info = 84;
|
||||||
|
EAGKNMCLJDI ugc_info = 85;
|
||||||
|
ADPBMLFDHJD crystal_link_info = 86;
|
||||||
|
JACDNLEIDOO irodori_info = 87;
|
||||||
|
EHDKFDJEEGP photo_info = 88;
|
||||||
|
BEPFLAKHNHL spice_info = 89;
|
||||||
|
MMNEJBFMAEA gacha_info = 90;
|
||||||
|
JLMHDDHOGGD luminance_stone_challenge_info = 91;
|
||||||
|
IGBMCJOPGIL rogue_diary_info = 92;
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message ActivityWatcherInfo {
|
message ActivityWatcherInfo {
|
||||||
uint32 watcher_id = 1;
|
uint32 watcher_id = 1;
|
||||||
uint32 cur_progress = 2;
|
uint32 cur_progress = 2;
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AiSkillCdInfo {
|
message AiSkillCdInfo {
|
||||||
map<uint32, uint32> skill_cd_map = 1;
|
map<uint32, uint32> skill_cd_map = 1;
|
||||||
map<uint32, uint32> skill_group_cd_map = 2;
|
map<uint32, uint32> skill_group_cd_map = 2;
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AiSyncInfo {
|
message AiSyncInfo {
|
||||||
uint32 entity_id = 1;
|
uint32 entity_id = 1;
|
||||||
bool has_path_to_target = 2;
|
bool has_path_to_target = 2;
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AiThreatInfo {
|
message AiThreatInfo {
|
||||||
map<uint32, uint32> ai_threat_map = 1;
|
map<uint32, uint32> ai_threat_map = 1;
|
||||||
}
|
}
|
||||||
|
26
proto/AllWidgetDataNotify.proto
Normal file
26
proto/AllWidgetDataNotify.proto
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
import "AnchorPointData.proto";
|
||||||
|
// import "CCEOEOHLAPK.proto";
|
||||||
|
import "ClientCollectorData.proto";
|
||||||
|
import "LunchBoxData.proto";
|
||||||
|
import "OneoffGatherPointDetectorData.proto";
|
||||||
|
import "WidgetCoolDownData.proto";
|
||||||
|
import "WidgetSlotData.proto";
|
||||||
|
|
||||||
|
// CmdId: 4273
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
message AllWidgetDataNotify {
|
||||||
|
repeated AnchorPointData anchor_point_list = 13;
|
||||||
|
uint32 next_anchor_point_usable_time = 10;
|
||||||
|
LunchBoxData lunch_box_data = 11;
|
||||||
|
repeated OneoffGatherPointDetectorData oneoff_gather_point_detector_data_list = 5;
|
||||||
|
repeated ClientCollectorData client_collector_data_list = 6;
|
||||||
|
repeated WidgetCoolDownData cool_down_group_data_list = 2;
|
||||||
|
repeated WidgetCoolDownData normal_cool_down_data_list = 4;
|
||||||
|
repeated WidgetSlotData slot_list = 3;
|
||||||
|
// CCEOEOHLAPK KNPDHPEGCHI = 12;
|
||||||
|
}
|
13
proto/AnchorPointData.proto
Normal file
13
proto/AnchorPointData.proto
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
import "Vector.proto";
|
||||||
|
|
||||||
|
message AnchorPointData {
|
||||||
|
uint32 anchor_point_id = 1;
|
||||||
|
Vector pos = 2;
|
||||||
|
Vector rot = 3;
|
||||||
|
uint32 end_time = 4;
|
||||||
|
uint32 scene_id = 5;
|
||||||
|
}
|
13
proto/AnchorPointDataNotify.proto
Normal file
13
proto/AnchorPointDataNotify.proto
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
import "AnchorPointData.proto";
|
||||||
|
|
||||||
|
// CmdId: 4268
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
message AnchorPointDataNotify {
|
||||||
|
repeated AnchorPointData anchor_point_list = 14;
|
||||||
|
uint32 next_usable_time = 6;
|
||||||
|
}
|
18
proto/AnchorPointOpReq.proto
Normal file
18
proto/AnchorPointOpReq.proto
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 4254
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
|
message AnchorPointOpReq {
|
||||||
|
uint32 anchor_point_op_type = 6;
|
||||||
|
uint32 anchor_point_id = 1;
|
||||||
|
|
||||||
|
enum AnchorPointOpType {
|
||||||
|
ANCHOR_POINT_OP_TYPE_NONE = 0;
|
||||||
|
ANCHOR_POINT_OP_TYPE_TELEPORT = 1;
|
||||||
|
ANCHOR_POINT_OP_TYPE_REMOVE = 2;
|
||||||
|
}
|
||||||
|
}
|
12
proto/AnchorPointOpRsp.proto
Normal file
12
proto/AnchorPointOpRsp.proto
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 4278
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
message AnchorPointOpRsp {
|
||||||
|
int32 retcode = 13;
|
||||||
|
uint32 anchor_point_op_type = 3;
|
||||||
|
uint32 anchor_point_id = 2;
|
||||||
|
}
|
@ -2,12 +2,11 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AnimatorParameterValueInfo {
|
message AnimatorParameterValueInfo {
|
||||||
oneof ParaVal {
|
uint32 para_type = 1;
|
||||||
|
oneof para_val {
|
||||||
int32 int_val = 2;
|
int32 int_val = 2;
|
||||||
float float_val = 3;
|
float float_val = 3;
|
||||||
bool bool_val = 4;
|
bool bool_val = 4;
|
||||||
}
|
}
|
||||||
uint32 para_type = 1;
|
|
||||||
}
|
}
|
||||||
|
@ -4,15 +4,10 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
|
|
||||||
import "FriendBrief.proto";
|
import "FriendBrief.proto";
|
||||||
|
|
||||||
|
// CmdId: 4038
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AskAddFriendNotify {
|
message AskAddFriendNotify {
|
||||||
enum CmdId {
|
uint32 target_uid = 13;
|
||||||
option allow_alias = true;
|
FriendBrief target_friend_brief = 10;
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 4006;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 target_uid = 1;
|
|
||||||
FriendBrief target_friend_brief = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,10 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 4032
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AskAddFriendReq {
|
message AskAddFriendReq {
|
||||||
enum CmdId {
|
uint32 target_uid = 8;
|
||||||
option allow_alias = true;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 4100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 target_uid = 1;
|
|
||||||
}
|
}
|
||||||
|
@ -2,18 +2,12 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 4017
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AskAddFriendRsp {
|
message AskAddFriendRsp {
|
||||||
enum CmdId {
|
int32 retcode = 11;
|
||||||
option allow_alias = true;
|
uint32 target_uid = 14;
|
||||||
ENET_CHANNEL_ID = 0;
|
uint32 param = 13;
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 4001;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
|
||||||
uint32 target_uid = 2;
|
|
||||||
uint32 param = 3;
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AttackHitEffectResult {
|
message AttackHitEffectResult {
|
||||||
uint32 hit_eff_level = 1;
|
uint32 hit_eff_level = 1;
|
||||||
float retreat_strength = 2;
|
float retreat_strength = 2;
|
||||||
|
@ -3,9 +3,9 @@ syntax = "proto3";
|
|||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AbilityIdentifier.proto";
|
import "AbilityIdentifier.proto";
|
||||||
|
import "AttackHitEffectResult.proto";
|
||||||
import "HitCollision.proto";
|
import "HitCollision.proto";
|
||||||
import "Vector.proto";
|
import "Vector.proto";
|
||||||
import "AttackHitEffectResult.proto";
|
|
||||||
|
|
||||||
message AttackResult {
|
message AttackResult {
|
||||||
uint32 attacker_id = 1;
|
uint32 attacker_id = 1;
|
||||||
@ -37,4 +37,5 @@ message AttackResult {
|
|||||||
float endure_delta = 37;
|
float endure_delta = 37;
|
||||||
uint32 target_type = 38;
|
uint32 target_type = 38;
|
||||||
float element_durability_attenuation = 39;
|
float element_durability_attenuation = 39;
|
||||||
|
uint32 EGPFEACDCLP = 40;
|
||||||
}
|
}
|
||||||
|
@ -4,15 +4,10 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
|
|
||||||
import "AvatarInfo.proto";
|
import "AvatarInfo.proto";
|
||||||
|
|
||||||
|
// CmdId: 1757
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarAddNotify {
|
message AvatarAddNotify {
|
||||||
enum CmdId {
|
AvatarInfo avatar = 11;
|
||||||
option allow_alias = true;
|
bool is_in_team = 15;
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1795;
|
|
||||||
}
|
|
||||||
|
|
||||||
AvatarInfo avatar = 1;
|
|
||||||
bool is_in_team = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -4,14 +4,9 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
|
|
||||||
import "SceneEntityInfo.proto";
|
import "SceneEntityInfo.proto";
|
||||||
|
|
||||||
|
// CmdId: 1780
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarChangeCostumeNotify {
|
message AvatarChangeCostumeNotify {
|
||||||
enum CmdId {
|
|
||||||
option allow_alias = true;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1724;
|
|
||||||
}
|
|
||||||
|
|
||||||
SceneEntityInfo entity_info = 1;
|
SceneEntityInfo entity_info = 1;
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,11 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1734
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarChangeCostumeReq {
|
message AvatarChangeCostumeReq {
|
||||||
enum CmdId {
|
uint64 avatar_guid = 7;
|
||||||
option allow_alias = true;
|
uint32 costume_id = 8;
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1606;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
|
||||||
uint32 costume_id = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,11 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1723
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarChangeCostumeRsp {
|
message AvatarChangeCostumeRsp {
|
||||||
enum CmdId {
|
int32 retcode = 15;
|
||||||
option allow_alias = true;
|
uint64 avatar_guid = 3;
|
||||||
NONE = 0;
|
uint32 costume_id = 1;
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1748;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
|
||||||
uint64 avatar_guid = 2;
|
|
||||||
uint32 costume_id = 3;
|
|
||||||
}
|
}
|
||||||
|
@ -5,20 +5,15 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
import "AvatarInfo.proto";
|
import "AvatarInfo.proto";
|
||||||
import "AvatarTeam.proto";
|
import "AvatarTeam.proto";
|
||||||
|
|
||||||
|
// CmdId: 1695
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarDataNotify {
|
message AvatarDataNotify {
|
||||||
enum CmdId {
|
repeated AvatarInfo avatar_list = 15;
|
||||||
option allow_alias = true;
|
map<uint32, AvatarTeam> avatar_team_map = 6;
|
||||||
NONE = 0;
|
uint32 cur_avatar_team_id = 2;
|
||||||
ENET_CHANNEL_ID = 0;
|
fixed64 choose_avatar_guid = 11;
|
||||||
ENET_IS_RELIABLE = 1;
|
repeated uint64 temp_avatar_guid_list = 14;
|
||||||
CMD_ID = 1694;
|
repeated uint32 owned_flycloak_list = 8;
|
||||||
}
|
|
||||||
|
|
||||||
repeated AvatarInfo avatar_list = 1;
|
|
||||||
map<uint32, AvatarTeam> avatar_team_map = 2;
|
|
||||||
uint32 cur_avatar_team_id = 3;
|
|
||||||
fixed64 choose_avatar_guid = 4;
|
|
||||||
repeated uint64 temp_avatar_guid_list = 5;
|
|
||||||
repeated uint32 owned_flycloak_list = 6;
|
|
||||||
repeated uint32 owned_costume_list = 7;
|
repeated uint32 owned_costume_list = 7;
|
||||||
}
|
}
|
||||||
|
@ -4,17 +4,12 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
|
|
||||||
import "Vector.proto";
|
import "Vector.proto";
|
||||||
|
|
||||||
|
// CmdId: 1616
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarDieAnimationEndReq {
|
message AvatarDieAnimationEndReq {
|
||||||
enum CmdId {
|
uint64 die_guid = 14;
|
||||||
option allow_alias = true;
|
uint32 skill_id = 4;
|
||||||
ENET_CHANNEL_ID = 0;
|
Vector reborn_pos = 13;
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1737;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 die_guid = 1;
|
|
||||||
uint32 skill_id = 2;
|
|
||||||
Vector reborn_pos = 3;
|
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,11 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1765
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarDieAnimationEndRsp {
|
message AvatarDieAnimationEndRsp {
|
||||||
enum CmdId {
|
int32 retcode = 12;
|
||||||
option allow_alias = true;
|
uint64 die_guid = 11;
|
||||||
NONE = 0;
|
uint32 skill_id = 13;
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1697;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
|
||||||
uint64 die_guid = 2;
|
|
||||||
uint32 skill_id = 3;
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AvatarEquipAffixInfo {
|
message AvatarEquipAffixInfo {
|
||||||
uint32 equip_affix_id = 1;
|
uint32 equip_affix_id = 1;
|
||||||
uint32 left_cd_time = 2;
|
uint32 left_cd_time = 2;
|
||||||
|
@ -2,23 +2,18 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "SceneWeaponInfo.proto";
|
|
||||||
import "SceneReliquaryInfo.proto";
|
import "SceneReliquaryInfo.proto";
|
||||||
|
import "SceneWeaponInfo.proto";
|
||||||
|
|
||||||
|
// CmdId: 690
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarEquipChangeNotify {
|
message AvatarEquipChangeNotify {
|
||||||
enum CmdId {
|
|
||||||
option allow_alias = true;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 615;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
uint64 avatar_guid = 1;
|
||||||
uint32 equip_type = 2;
|
uint32 equip_type = 2;
|
||||||
uint32 item_id = 3;
|
uint32 item_id = 8;
|
||||||
uint64 equip_guid = 4;
|
uint64 equip_guid = 4;
|
||||||
SceneWeaponInfo weapon = 5;
|
SceneWeaponInfo weapon = 13;
|
||||||
SceneReliquaryInfo reliquary = 6;
|
SceneReliquaryInfo reliquary = 11;
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,15 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AvatarExpeditionInfo.proto";
|
import "AvatarExpeditionInfo.proto";
|
||||||
|
|
||||||
|
// CmdId: 1636
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarExpeditionAllDataRsp {
|
message AvatarExpeditionAllDataRsp {
|
||||||
enum CmdId {
|
int32 retcode = 11;
|
||||||
option allow_alias = true;
|
map<uint64, AvatarExpeditionInfo> expedition_info_map = 1;
|
||||||
NONE = 0;
|
repeated uint32 open_expedition_list = 6;
|
||||||
ENET_CHANNEL_ID = 0;
|
uint32 expedition_count_limit = 7;
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1783;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
|
||||||
map<uint64, AvatarExpeditionInfo> expedition_info_map = 2;
|
|
||||||
repeated uint32 open_expedition_list = 3;
|
|
||||||
uint32 expedition_count_limit = 4;
|
|
||||||
}
|
}
|
||||||
|
@ -2,15 +2,10 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1655
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarExpeditionCallBackReq {
|
message AvatarExpeditionCallBackReq {
|
||||||
enum CmdId {
|
repeated uint64 avatar_guid = 12;
|
||||||
option allow_alias = true;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1618;
|
|
||||||
}
|
|
||||||
|
|
||||||
repeated uint64 avatar_guid = 1;
|
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,13 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AvatarExpeditionInfo.proto";
|
import "AvatarExpeditionInfo.proto";
|
||||||
|
|
||||||
|
// CmdId: 1642
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarExpeditionCallBackRsp {
|
message AvatarExpeditionCallBackRsp {
|
||||||
enum CmdId {
|
|
||||||
option allow_alias = true;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1633;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
int32 retcode = 1;
|
||||||
map<uint64, AvatarExpeditionInfo> expedition_info_map = 2;
|
map<uint64, AvatarExpeditionInfo> expedition_info_map = 14;
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,12 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AvatarExpeditionInfo.proto";
|
import "AvatarExpeditionInfo.proto";
|
||||||
|
|
||||||
|
// CmdId: 1698
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarExpeditionDataNotify {
|
message AvatarExpeditionDataNotify {
|
||||||
enum CmdId {
|
|
||||||
option allow_alias = true;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1621;
|
|
||||||
}
|
|
||||||
|
|
||||||
map<uint64, AvatarExpeditionInfo> expedition_info_map = 1;
|
map<uint64, AvatarExpeditionInfo> expedition_info_map = 1;
|
||||||
}
|
}
|
||||||
|
@ -2,15 +2,10 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1603
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarExpeditionGetRewardReq {
|
message AvatarExpeditionGetRewardReq {
|
||||||
enum CmdId {
|
uint64 avatar_guid = 5;
|
||||||
option allow_alias = true;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1610;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,16 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AvatarExpeditionInfo.proto";
|
import "AvatarExpeditionInfo.proto";
|
||||||
|
|
||||||
import "ItemParam.proto";
|
import "ItemParam.proto";
|
||||||
message AvatarExpeditionGetRewardRsp {
|
|
||||||
enum CmdId {
|
|
||||||
option allow_alias = true;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1670;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
// CmdId: 1646
|
||||||
map<uint64, AvatarExpeditionInfo> expedition_info_map = 2;
|
// EnetChannelId: 0
|
||||||
repeated ItemParam item_list = 3;
|
// EnetIsReliable: true
|
||||||
|
message AvatarExpeditionGetRewardRsp {
|
||||||
|
int32 retcode = 15;
|
||||||
|
map<uint64, AvatarExpeditionInfo> expedition_info_map = 5;
|
||||||
|
repeated ItemParam item_list = 6;
|
||||||
|
repeated ItemParam BNFDDKNNJJH = 2;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AvatarExpeditionState.proto";
|
import "AvatarExpeditionState.proto";
|
||||||
|
|
||||||
message AvatarExpeditionInfo {
|
message AvatarExpeditionInfo {
|
||||||
|
@ -2,17 +2,12 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1675
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarExpeditionStartReq {
|
message AvatarExpeditionStartReq {
|
||||||
enum CmdId {
|
uint64 avatar_guid = 8;
|
||||||
option allow_alias = true;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1609;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
|
||||||
uint32 exp_id = 2;
|
uint32 exp_id = 2;
|
||||||
uint32 hour_time = 3;
|
uint32 hour_time = 7;
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,13 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "AvatarExpeditionInfo.proto";
|
import "AvatarExpeditionInfo.proto";
|
||||||
|
|
||||||
|
// CmdId: 1688
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarExpeditionStartRsp {
|
message AvatarExpeditionStartRsp {
|
||||||
enum CmdId {
|
int32 retcode = 4;
|
||||||
option allow_alias = true;
|
map<uint64, AvatarExpeditionInfo> expedition_info_map = 1;
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1646;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
|
||||||
map<uint64, AvatarExpeditionInfo> expedition_info_map = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,9 @@ syntax = "proto3";
|
|||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
enum AvatarExpeditionState {
|
enum AvatarExpeditionState {
|
||||||
AVATAR_EXPEDITION_NONE = 0;
|
AVATAR_EXPEDITION_STATE_NONE = 0;
|
||||||
AVATAR_EXPEDITION_DOING = 1;
|
AVATAR_EXPEDITION_STATE_DOING = 1;
|
||||||
AVATAR_EXPEDITION_FINISH_WAIT_REWARD = 2;
|
AVATAR_EXPEDITION_STATE_FINISH_WAIT_REWARD = 2;
|
||||||
AVATAR_EXPEDITION_CALLBACK_WAIT_REWARD = 3;
|
AVATAR_EXPEDITION_STATE_CALLBACK_WAIT_REWARD = 3;
|
||||||
AVATAR_EXPEDITION_LOCKED = 4;
|
AVATAR_EXPEDITION_STATE_LOCKED = 4;
|
||||||
}
|
}
|
||||||
|
@ -4,14 +4,9 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
|
|
||||||
import "AvatarFetterInfo.proto";
|
import "AvatarFetterInfo.proto";
|
||||||
|
|
||||||
|
// CmdId: 1777
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarFetterDataNotify {
|
message AvatarFetterDataNotify {
|
||||||
enum CmdId {
|
|
||||||
option allow_alias = true;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1685;
|
|
||||||
}
|
|
||||||
|
|
||||||
map<uint64, AvatarFetterInfo> fetter_info_map = 1;
|
map<uint64, AvatarFetterInfo> fetter_info_map = 1;
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,11 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1704
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarFetterLevelRewardReq {
|
message AvatarFetterLevelRewardReq {
|
||||||
enum CmdId {
|
uint64 avatar_guid = 15;
|
||||||
option allow_alias = true;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1624;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
|
||||||
uint32 fetter_level = 2;
|
uint32 fetter_level = 2;
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,12 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1606
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarFetterLevelRewardRsp {
|
message AvatarFetterLevelRewardRsp {
|
||||||
enum CmdId {
|
int32 retcode = 14;
|
||||||
option allow_alias = true;
|
uint64 avatar_guid = 12;
|
||||||
NONE = 0;
|
uint32 fetter_level = 10;
|
||||||
ENET_CHANNEL_ID = 0;
|
uint32 reward_id = 11;
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1704;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
|
||||||
uint64 avatar_guid = 2;
|
|
||||||
uint32 fetter_level = 3;
|
|
||||||
uint32 reward_id = 4;
|
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,10 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1232
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarFightPropNotify {
|
message AvatarFightPropNotify {
|
||||||
enum CmdId {
|
uint64 avatar_guid = 3;
|
||||||
option allow_alias = true;
|
map<uint32, float> fight_prop_map = 6;
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1300;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
|
||||||
map<uint32, float> fight_prop_map = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,10 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1217
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarFightPropUpdateNotify {
|
message AvatarFightPropUpdateNotify {
|
||||||
enum CmdId {
|
|
||||||
option allow_alias = true;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1201;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
uint64 avatar_guid = 1;
|
||||||
map<uint32, float> fight_prop_map = 2;
|
map<uint32, float> fight_prop_map = 6;
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,10 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1681
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarFlycloakChangeNotify {
|
message AvatarFlycloakChangeNotify {
|
||||||
enum CmdId {
|
uint64 avatar_guid = 12;
|
||||||
option allow_alias = true;
|
uint32 flycloak_id = 14;
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1759;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
|
||||||
uint32 flycloak_id = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -2,15 +2,9 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1670
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarGainCostumeNotify {
|
message AvatarGainCostumeNotify {
|
||||||
enum CmdId {
|
uint32 costume_id = 15;
|
||||||
option allow_alias = true;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1734;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 costume_id = 1;
|
|
||||||
}
|
}
|
||||||
|
@ -2,15 +2,9 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1615
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarGainFlycloakNotify {
|
message AvatarGainFlycloakNotify {
|
||||||
enum CmdId {
|
uint32 flycloak_id = 2;
|
||||||
option allow_alias = true;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1604;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 flycloak_id = 1;
|
|
||||||
}
|
}
|
||||||
|
@ -2,13 +2,13 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
import "TrialAvatarInfo.proto";
|
|
||||||
import "AvatarFetterInfo.proto";
|
|
||||||
import "AvatarExpeditionState.proto";
|
|
||||||
import "AvatarExcelInfo.proto";
|
|
||||||
import "PropValue.proto";
|
|
||||||
import "AvatarSkillInfo.proto";
|
|
||||||
import "AvatarEquipAffixInfo.proto";
|
import "AvatarEquipAffixInfo.proto";
|
||||||
|
import "AvatarExcelInfo.proto";
|
||||||
|
import "AvatarExpeditionState.proto";
|
||||||
|
import "AvatarFetterInfo.proto";
|
||||||
|
import "AvatarSkillInfo.proto";
|
||||||
|
import "PropValue.proto";
|
||||||
|
import "TrialAvatarInfo.proto";
|
||||||
|
|
||||||
message AvatarInfo {
|
message AvatarInfo {
|
||||||
uint32 avatar_id = 1;
|
uint32 avatar_id = 1;
|
||||||
|
@ -5,20 +5,15 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
import "PlayerDieType.proto";
|
import "PlayerDieType.proto";
|
||||||
import "ServerBuff.proto";
|
import "ServerBuff.proto";
|
||||||
|
|
||||||
|
// CmdId: 1235
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarLifeStateChangeNotify {
|
message AvatarLifeStateChangeNotify {
|
||||||
enum CmdId {
|
uint64 avatar_guid = 8;
|
||||||
option allow_alias = true;
|
uint32 life_state = 15;
|
||||||
NONE = 0;
|
uint32 source_entity_id = 1;
|
||||||
ENET_CHANNEL_ID = 0;
|
string attack_tag = 10;
|
||||||
ENET_IS_RELIABLE = 1;
|
PlayerDieType die_type = 11;
|
||||||
CMD_ID = 1242;
|
uint32 move_reliable_seq = 7;
|
||||||
}
|
repeated ServerBuff server_buff_list = 6;
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
|
||||||
uint32 life_state = 2;
|
|
||||||
uint32 source_entity_id = 3;
|
|
||||||
string attack_tag = 4;
|
|
||||||
PlayerDieType die_type = 5;
|
|
||||||
uint32 move_reliable_seq = 6;
|
|
||||||
repeated ServerBuff server_buff_list = 7;
|
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,11 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1676
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarPromoteGetRewardReq {
|
message AvatarPromoteGetRewardReq {
|
||||||
enum CmdId {
|
uint64 avatar_guid = 12;
|
||||||
option allow_alias = true;
|
uint32 promote_level = 8;
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1701;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
|
||||||
uint32 promote_level = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -2,18 +2,12 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1613
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarPromoteGetRewardRsp {
|
message AvatarPromoteGetRewardRsp {
|
||||||
enum CmdId {
|
int32 retcode = 11;
|
||||||
option allow_alias = true;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1764;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
|
||||||
uint64 avatar_guid = 2;
|
uint64 avatar_guid = 2;
|
||||||
uint32 promote_level = 3;
|
uint32 promote_level = 14;
|
||||||
uint32 reward_id = 4;
|
uint32 reward_id = 1;
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,10 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1711
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarPromoteReq {
|
message AvatarPromoteReq {
|
||||||
enum CmdId {
|
uint64 guid = 9;
|
||||||
option allow_alias = true;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1692;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 guid = 1;
|
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,10 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1668
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarPromoteRsp {
|
message AvatarPromoteRsp {
|
||||||
enum CmdId {
|
int32 retcode = 15;
|
||||||
option allow_alias = true;
|
uint64 guid = 7;
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1728;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
|
||||||
uint64 guid = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,10 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1255
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarPropNotify {
|
message AvatarPropNotify {
|
||||||
enum CmdId {
|
uint64 avatar_guid = 4;
|
||||||
option allow_alias = true;
|
map<uint32, int64> prop_map = 1;
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1212;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
|
||||||
map<uint32, int64> prop_map = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -2,20 +2,14 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1030
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarSkillChangeNotify {
|
message AvatarSkillChangeNotify {
|
||||||
enum CmdId {
|
uint64 avatar_guid = 4;
|
||||||
option allow_alias = true;
|
uint32 entity_id = 15;
|
||||||
NONE = 0;
|
uint32 skill_depot_id = 5;
|
||||||
ENET_CHANNEL_ID = 0;
|
uint32 avatar_skill_id = 2;
|
||||||
ENET_IS_RELIABLE = 1;
|
uint32 old_level = 10;
|
||||||
CMD_ID = 1091;
|
uint32 cur_level = 7;
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
|
||||||
uint32 entity_id = 2;
|
|
||||||
uint32 skill_depot_id = 3;
|
|
||||||
uint32 avatar_skill_id = 4;
|
|
||||||
uint32 old_level = 5;
|
|
||||||
uint32 cur_level = 6;
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AvatarSkillInfo {
|
message AvatarSkillInfo {
|
||||||
uint32 pass_cd_time = 1;
|
uint32 pass_cd_time = 1;
|
||||||
repeated uint32 full_cd_time_list = 2;
|
repeated uint32 full_cd_time_list = 2;
|
||||||
|
@ -4,7 +4,10 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
|
|
||||||
import "AvatarSkillInfo.proto";
|
import "AvatarSkillInfo.proto";
|
||||||
|
|
||||||
|
// CmdId: 1035
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarSkillInfoNotify {
|
message AvatarSkillInfoNotify {
|
||||||
uint64 guid = 1;
|
uint64 guid = 4;
|
||||||
map<uint32, AvatarSkillInfo> skill_map = 2;
|
map<uint32, AvatarSkillInfo> skill_map = 2;
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,11 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1085
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarSkillMaxChargeCountNotify {
|
message AvatarSkillMaxChargeCountNotify {
|
||||||
uint64 avatar_guid = 1;
|
uint64 avatar_guid = 15;
|
||||||
uint32 skill_id = 2;
|
uint32 skill_id = 2;
|
||||||
uint32 max_charge_count = 3;
|
uint32 max_charge_count = 1;
|
||||||
}
|
}
|
||||||
|
@ -2,18 +2,12 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1027
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarSkillUpgradeReq {
|
message AvatarSkillUpgradeReq {
|
||||||
enum CmdId {
|
|
||||||
option allow_alias = true;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1026;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
uint64 avatar_guid = 1;
|
||||||
uint32 avatar_skill_id = 2;
|
uint32 avatar_skill_id = 5;
|
||||||
uint32 old_level = 3;
|
uint32 old_level = 10;
|
||||||
}
|
}
|
||||||
|
@ -2,19 +2,13 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1007
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarSkillUpgradeRsp {
|
message AvatarSkillUpgradeRsp {
|
||||||
enum CmdId {
|
int32 retcode = 3;
|
||||||
option allow_alias = true;
|
uint64 avatar_guid = 10;
|
||||||
NONE = 0;
|
uint32 avatar_skill_id = 2;
|
||||||
ENET_CHANNEL_ID = 0;
|
uint32 old_level = 5;
|
||||||
ENET_IS_RELIABLE = 1;
|
uint32 cur_level = 7;
|
||||||
CMD_ID = 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
|
||||||
uint64 avatar_guid = 2;
|
|
||||||
uint32 avatar_skill_id = 3;
|
|
||||||
uint32 old_level = 4;
|
|
||||||
uint32 cur_level = 5;
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AvatarTeam {
|
message AvatarTeam {
|
||||||
repeated uint64 avatar_guid_list = 1;
|
repeated uint64 avatar_guid_list = 1;
|
||||||
string team_name = 2;
|
string team_name = 2;
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message AvatarTeamResonanceInfo {
|
message AvatarTeamResonanceInfo {
|
||||||
uint32 entity_id = 1;
|
uint32 entity_id = 1;
|
||||||
uint64 avatar_guid = 2;
|
uint64 avatar_guid = 2;
|
||||||
|
@ -4,15 +4,10 @@ option java_package = "emu.grasscutter.net.proto";
|
|||||||
|
|
||||||
import "AvatarTeam.proto";
|
import "AvatarTeam.proto";
|
||||||
|
|
||||||
|
// CmdId: 1713
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarTeamUpdateNotify {
|
message AvatarTeamUpdateNotify {
|
||||||
enum CmdId {
|
map<uint32, AvatarTeam> avatar_team_map = 6;
|
||||||
option allow_alias = true;
|
repeated uint64 temp_avatar_guid_list = 9;
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1642;
|
|
||||||
}
|
|
||||||
|
|
||||||
map<uint32, AvatarTeam> avatar_team_map = 1;
|
|
||||||
repeated uint64 temp_avatar_guid_list = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -2,18 +2,12 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1041
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarUnlockTalentNotify {
|
message AvatarUnlockTalentNotify {
|
||||||
enum CmdId {
|
|
||||||
option allow_alias = true;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1089;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
uint64 avatar_guid = 1;
|
||||||
uint32 entity_id = 2;
|
uint32 entity_id = 15;
|
||||||
uint32 talent_id = 3;
|
uint32 talent_id = 13;
|
||||||
uint32 skill_depot_id = 4;
|
uint32 skill_depot_id = 14;
|
||||||
}
|
}
|
||||||
|
@ -2,18 +2,12 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1680
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarUpgradeReq {
|
message AvatarUpgradeReq {
|
||||||
enum CmdId {
|
uint32 item_id = 9;
|
||||||
option allow_alias = true;
|
uint32 count = 12;
|
||||||
ENET_CHANNEL_ID = 0;
|
uint64 avatar_guid = 14;
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1691;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 item_id = 1;
|
|
||||||
uint32 count = 2;
|
|
||||||
uint64 avatar_guid = 3;
|
|
||||||
}
|
}
|
||||||
|
@ -2,20 +2,14 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1779
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarUpgradeRsp {
|
message AvatarUpgradeRsp {
|
||||||
enum CmdId {
|
int32 retcode = 6;
|
||||||
option allow_alias = true;
|
uint64 avatar_guid = 15;
|
||||||
NONE = 0;
|
uint32 old_level = 5;
|
||||||
ENET_CHANNEL_ID = 0;
|
uint32 cur_level = 7;
|
||||||
ENET_IS_RELIABLE = 1;
|
map<uint32, float> old_fight_prop_map = 2;
|
||||||
CMD_ID = 1720;
|
map<uint32, float> cur_fight_prop_map = 4;
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
|
||||||
uint64 avatar_guid = 2;
|
|
||||||
uint32 old_level = 3;
|
|
||||||
uint32 cur_level = 4;
|
|
||||||
map<uint32, float> old_fight_prop_map = 5;
|
|
||||||
map<uint32, float> cur_fight_prop_map = 6;
|
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,11 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1728
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
|
// IsAllowClient: true
|
||||||
message AvatarWearFlycloakReq {
|
message AvatarWearFlycloakReq {
|
||||||
enum CmdId {
|
uint64 avatar_guid = 11;
|
||||||
option allow_alias = true;
|
uint32 flycloak_id = 9;
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
NONE = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
IS_ALLOW_CLIENT = 1;
|
|
||||||
CMD_ID = 1635;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 avatar_guid = 1;
|
|
||||||
uint32 flycloak_id = 2;
|
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,11 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
// CmdId: 1770
|
||||||
|
// EnetChannelId: 0
|
||||||
|
// EnetIsReliable: true
|
||||||
message AvatarWearFlycloakRsp {
|
message AvatarWearFlycloakRsp {
|
||||||
enum CmdId {
|
int32 retcode = 13;
|
||||||
option allow_alias = true;
|
uint64 avatar_guid = 8;
|
||||||
NONE = 0;
|
uint32 flycloak_id = 2;
|
||||||
ENET_CHANNEL_ID = 0;
|
|
||||||
ENET_IS_RELIABLE = 1;
|
|
||||||
CMD_ID = 1709;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 retcode = 1;
|
|
||||||
uint64 avatar_guid = 2;
|
|
||||||
uint32 flycloak_id = 3;
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message Birthday {
|
message Birthday {
|
||||||
uint32 month = 1;
|
uint32 month = 1;
|
||||||
uint32 day = 2;
|
uint32 day = 2;
|
||||||
|
@ -2,7 +2,6 @@ syntax = "proto3";
|
|||||||
|
|
||||||
option java_package = "emu.grasscutter.net.proto";
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
|
||||||
message BlockInfo {
|
message BlockInfo {
|
||||||
uint32 block_id = 1;
|
uint32 block_id = 1;
|
||||||
uint32 data_version = 2;
|
uint32 data_version = 2;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user