1.4 Walking simulator, rest of features incoming during weekend.

Any question from anyone trying to run from this commit will be ignored and blocked.
This commit is contained in:
xavo95 2024-10-19 14:57:25 +02:00
parent 395f249207
commit 85fbc933ba
Signed by: xavo95
GPG key ID: CBF8ADED6DEBB783
51 changed files with 4705067 additions and 181971 deletions

1
.gitignore vendored
View file

@ -1,3 +1,4 @@
.idea
/target /target
/hotpatch.toml /hotpatch.toml
/configserver.toml /configserver.toml

View file

@ -2,5 +2,5 @@ FROM alpine:3.20
ARG MICROSERVICE ARG MICROSERVICE
WORKDIR /app WORKDIR /app
COPY --from=shorekeeper-builder:1.3.0-SNAPSHOT /app/target/release/$MICROSERVICE ./service COPY --from=camellya-builder:1.3.0-SNAPSHOT /app/target/release/$MICROSERVICE ./service
CMD ["./service"] CMD ["./service"]

View file

@ -2,8 +2,16 @@
"default": { "default": {
"CdnUrl": [ "CdnUrl": [
{ {
"url": "http://127.0.0.1:10002/prod/client/", "url": "https://cdn-huoshan-cn-mc.aki-game.com/prod/client/",
"weight": "2323" "weight": "2323"
},
{
"url": "https://cdn-qiniu-cn-mc.aki-game.com/prod/client/",
"weight": "1"
},
{
"url": "https://cdn-qcloud-cn-mc.aki-game.com/prod/client/",
"weight": "5443"
} }
], ],
"SecondaryUrl": [], "SecondaryUrl": [],
@ -32,13 +40,13 @@
"GmOpen": false, "GmOpen": false,
"IosAuditFirstDownloadTip": false, "IosAuditFirstDownloadTip": false,
"NoticeUrl": "http://127.0.0.1:10001/notice", "NoticeUrl": "http://127.0.0.1:10001/notice",
"MixUri": "rODM5DcqOhYsIOtsEuZWNGFa2guZgl57", "MixUri": "fcQrWOPC2RkghpzsAE2kyGWD37QTm2mR",
"ResUri": "rODM5DcqOhYsIOtsEuZWNGFa2guZgl57", "ResUri": "fcQrWOPC2RkghpzsAE2kyGWD37QTm2mR",
"LoginServers": [ "LoginServers": [
{ {
"id": "f9e0fc655c1931bc03ad976e9fc14473", "id": "f9e0fc655c1931bc03ad976e9fc14473",
"ip": "http://127.0.0.1:5500", "ip": "http://127.0.0.1:5500",
"name": "Shorekeeper" "name": "Camellya"
} }
], ],
"PrivateServers": { "PrivateServers": {

View file

@ -1,60 +1,44 @@
{ {
"PackageVersion": "1.3.0", "PackageVersion": "1.4.0",
"LauncherVersion": "1.3.9", "LauncherVersion": "1.4.0",
"ResourceVersion": "1.3.9", "ResourceVersion": "1.4.3",
"LauncherIndexSha1": { "LauncherIndexSha1": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"1.3.1": "90FDF17EA0B4015D43C344CB7229E76AB32549DD",
"1.3.2": "C9A587AB1FA6CA57CD23E0FB3F0103BFDCAA8E37",
"1.3.3": "1C7AF02F13DBE69637DB43039E2FFB8C9AD9A04B",
"1.3.4": "DA50F315041E216568A7713074C6475F6AB4530E",
"1.3.5": "EA9C6F6D5E920F47F96D8F8BC366A4CED62A0346",
"1.3.6": "8CA7E6573A52B16CFAA29E996D389918B6829E7A",
"1.3.7": "FCAAED58E5983027A82F52C350418CCE7BD531D2",
"1.3.8": "91D6231B3F4C9A6605B79E23D0C02F9790DD6BCF",
"1.3.9": "B36BD648AB2A637A4E087B7B115A6CCBDAEBDF9A"
},
"ResourceIndexSha1": { "ResourceIndexSha1": {
"1.3.1": "2D635E549EB6F99659571D72741B62249473A77A", "1.4.1": "0C747E444EC6DBA11D0C57B34E2638DE5182029F",
"1.3.2": "C5814A80EA3E7D80D4CFBCD884D1FD158BF0AD9D", "1.4.2": "41751A94DBD406653DB52262E85BB716E45D9864",
"1.3.3": "1E0F05333B09A9215B4AA5C437BFC7DC4014E348", "1.4.3": "424EDFD97BA8699CBC2CB9E27D3FCBB6F7C70806"
"1.3.4": "6155D492540A99ECF0DA06D2B7EEBFE36231FBC2",
"1.3.5": "1E60C8F60CA1AAA9955441B4F4265C8288B95F33",
"1.3.6": "AA10A8DD1025D5033E291060C686B816513ADCAD",
"1.3.7": "A9881305EBD3DC5A6892D49BDAF540F56EE56232",
"1.3.8": "261CA25DAD6877DF3C57DA39947130867FCC09CE",
"1.3.9": "88A9E40631FC1C11A91A61CB3F4BE8C13C5E2BD3"
}, },
"ChangeList": "2333675", "ChangeList": "2585778",
"CompatibleChangeLists": [], "CompatibleChangeLists": [],
"Versions": [ "Versions": [
{ {
"Name": "en", "Name": "en",
"Version": "1.3.0", "Version": "1.4.0",
"IndexSha1": { "IndexSha1": {
"1.3.0": "6FB5B66EF8B3EECBBBEBE74A82BC23E3FC35450B" "1.4.0": "34F9AC326B3E81E972B93094E43751967A6A3396"
} }
}, },
{ {
"Name": "ja", "Name": "ja",
"Version": "1.3.0", "Version": "1.4.0",
"IndexSha1": { "IndexSha1": {
"1.3.0": "E4DA1960DB36CE8166C042AD8B9AF98C1A9119F3" "1.4.0": "3233223428D586FBC0A2EC817F4E94DDD10C646F"
} }
}, },
{ {
"Name": "ko", "Name": "ko",
"Version": "1.3.0", "Version": "1.4.0",
"IndexSha1": { "IndexSha1": {
"1.3.0": "498B379E95FC617385CCD832B8C359FA5AC220CE" "1.4.0": "3CC0312BDFFF5FA4D3F5256E2618D0EF6AA84912"
} }
}, },
{ {
"Name": "zh", "Name": "zh",
"Version": "1.3.0", "Version": "1.4.0",
"IndexSha1": { "IndexSha1": {
"1.3.0": "CC58C357A80E7B3846264918197FC3ECAA1FE190" "1.4.0": "2F3AD1412C6991FE0E146C5E2F6F86D8D9F44A5D"
} }
} }
], ],
"UpdateTime": 1725869509 "UpdateTime": 1729243476
} }

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,246 @@
[
{
"PhantomSkillId": 1004,
"Name": "ExploreTools_1004_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1004_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT3.SP_IconT3",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT3.SP_IconT3",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT3.SP_IconT3",
"SortId": 3,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1001,
"Name": "ExploreTools_1001_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1001_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT6.SP_IconT6",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT6.SP_IconT6",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT6.SP_IconT6",
"SortId": 1,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1003,
"Name": "ExploreTools_1003_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1003_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT1.SP_IconT1",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT1.SP_IconT1",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT1.SP_IconT1",
"SortId": 4,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1005,
"Name": "ExploreTools_1005_Name",
"SkillType": 2,
"CurrentSkillInfo": "ExploreTools_1005_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT2.SP_IconT2",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT2.SP_IconT2",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT2.SP_IconT2",
"SortId": 5,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1006,
"Name": "ExploreTools_1006_Name",
"SkillType": 2,
"CurrentSkillInfo": "ExploreTools_1006_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT5.SP_IconT5",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT5.SP_IconT5",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT5.SP_IconT5",
"SortId": 6,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1007,
"Name": "ExploreTools_1007_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1007_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT29.SP_IconT29",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT29.SP_IconT29",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT29.SP_IconT29",
"SortId": 7,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1009,
"Name": "ExploreTools_1009_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1009_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"SortId": 9,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": true,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 3001,
"Name": "ExploreTools_1009_Name",
"SkillType": 3,
"CurrentSkillInfo": "ExploreTools_1009_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"SortId": 10,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 3002,
"Name": "ExploreTools_1009_Name",
"SkillType": 3,
"CurrentSkillInfo": "ExploreTools_1009_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BattleViewIcon": "/Game/Aki/UI/UIResources/UiSkillswitching/Atlas/SP_SkillswitchingItemNone.SP_SkillswitchingItemNone",
"SortId": 10,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1010,
"Name": "ExploreTools_1010_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1010_CurrentSkillInfo",
"HelpId": 30,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT30.SP_IconT30",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT30.SP_IconT30",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT30.SP_IconT30",
"SortId": 11,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {
"10808": 1
},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1011,
"Name": "ExploreTools_1011_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1011_CurrentSkillInfo",
"HelpId": 28,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT32.SP_IconT32",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT32.SP_IconT32",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT32.SP_IconT32",
"SortId": 12,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {
"10807": 1
},
"Authorization": {
"1": 10805,
"900": 10805
},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1012,
"Name": "ExploreTools_1012_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1012_CurrentSkillInfo",
"HelpId": 29,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT31.SP_IconT31",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT31.SP_IconT31",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT31.SP_IconT31",
"SortId": 13,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {
"1": 10806,
"900": 10806
},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1013,
"Name": "ExploreTools_1013_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1013_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT34.SP_IconT34",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT34.SP_IconT34",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT34.SP_IconT34",
"SortId": 14,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 24000022
}
]

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -1,246 +0,0 @@
[
{
"PhantomSkillId": 1004,
"Name": "ExploreTools_1004_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1004_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT3.SP_IconT3",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT3.SP_IconT3",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT3.SP_IconT3",
"SortId": 3,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1001,
"Name": "ExploreTools_1001_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1001_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT6.SP_IconT6",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT6.SP_IconT6",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT6.SP_IconT6",
"SortId": 1,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1003,
"Name": "ExploreTools_1003_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1003_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT1.SP_IconT1",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT1.SP_IconT1",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT1.SP_IconT1",
"SortId": 4,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1005,
"Name": "ExploreTools_1005_Name",
"SkillType": 2,
"CurrentSkillInfo": "ExploreTools_1005_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT2.SP_IconT2",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT2.SP_IconT2",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT2.SP_IconT2",
"SortId": 5,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1006,
"Name": "ExploreTools_1006_Name",
"SkillType": 2,
"CurrentSkillInfo": "ExploreTools_1006_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT5.SP_IconT5",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT5.SP_IconT5",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT5.SP_IconT5",
"SortId": 6,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1007,
"Name": "ExploreTools_1007_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1007_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT29.SP_IconT29",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT29.SP_IconT29",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT29.SP_IconT29",
"SortId": 7,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1009,
"Name": "ExploreTools_1009_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1009_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"SortId": 9,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": true,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 3001,
"Name": "ExploreTools_1009_Name",
"SkillType": 3,
"CurrentSkillInfo": "ExploreTools_1009_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"SortId": 10,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 3002,
"Name": "ExploreTools_1009_Name",
"SkillType": 3,
"CurrentSkillInfo": "ExploreTools_1009_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT9.SP_IconT9",
"BattleViewIcon": "/Game/Aki/UI/UIResources/UiSkillswitching/Atlas/SP_SkillswitchingItemNone.SP_SkillswitchingItemNone",
"SortId": 10,
"AutoFill": false,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1010,
"Name": "ExploreTools_1010_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1010_CurrentSkillInfo",
"HelpId": 30,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT30.SP_IconT30",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT30.SP_IconT30",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT30.SP_IconT30",
"SortId": 11,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {
"10808": 1
},
"Authorization": {},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1011,
"Name": "ExploreTools_1011_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1011_CurrentSkillInfo",
"HelpId": 28,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT32.SP_IconT32",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT32.SP_IconT32",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT32.SP_IconT32",
"SortId": 12,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {
"10807": 1
},
"Authorization": {
"1": 10805,
"900": 10805
},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1012,
"Name": "ExploreTools_1012_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1012_CurrentSkillInfo",
"HelpId": 29,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT31.SP_IconT31",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT31.SP_IconT31",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT31.SP_IconT31",
"SortId": 13,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {
"1": 10806,
"900": 10806
},
"SummonConfigId": 0
},
{
"PhantomSkillId": 1013,
"Name": "ExploreTools_1013_Name",
"SkillType": 1,
"CurrentSkillInfo": "ExploreTools_1013_CurrentSkillInfo",
"HelpId": 0,
"Icon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT34.SP_IconT34",
"BackGround": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT34.SP_IconT34",
"BattleViewIcon": "/Game/Aki/UI/UIResources/Common/Atlas/SkillIcon/SkillIconNor/SP_IconT34.SP_IconT34",
"SortId": 14,
"AutoFill": true,
"ShowUnlock": false,
"SkillGroupId": 1,
"IsUseInPhantomTeam": false,
"Cost": {},
"Authorization": {},
"SummonConfigId": 24000022
}
]

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,12 +1,12 @@
docker build -t shorekeeper-builder:1.3.0-SNAPSHOT -f Dockerfile-builder . docker build -t camellya-builder:1.3.0-SNAPSHOT -f Dockerfile-builder .
docker build -t shorekeeper-config-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=config-server -f Dockerfile-service . docker build -t camellya-config-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=config-server -f Dockerfile-service .
docker build -t shorekeeper-hotpatch-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=hotpatch-server -f Dockerfile-service . docker build -t camellya-hotpatch-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=hotpatch-server -f Dockerfile-service .
docker build -t shorekeeper-login-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=login-server -f Dockerfile-service . docker build -t camellya-login-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=login-server -f Dockerfile-service .
docker build -t shorekeeper-gateway-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=gateway-server -f Dockerfile-service . docker build -t camellya-gateway-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=gateway-server -f Dockerfile-service .
docker build -t shorekeeper-game-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=game-server -f Dockerfile-service . docker build -t camellya-game-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=game-server -f Dockerfile-service .
docker rmi shorekeeper-builder:1.3.0-SNAPSHOT docker rmi camellya-builder:1.3.0-SNAPSHOT
: Persistence for the application : Persistence for the application
docker volume create shorekeeper-postgres-vol docker volume create camellya-postgres-vol

View file

@ -1,12 +1,12 @@
docker build -t shorekeeper-builder:1.3.0-SNAPSHOT -f Dockerfile-builder . docker build -t camellya-builder:1.3.0-SNAPSHOT -f Dockerfile-builder .
docker build -t shorekeeper-config-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=config-server -f Dockerfile-service . docker build -t camellya-config-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=config-server -f Dockerfile-service .
docker build -t shorekeeper-hotpatch-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=hotpatch-server -f Dockerfile-service . docker build -t camellya-hotpatch-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=hotpatch-server -f Dockerfile-service .
docker build -t shorekeeper-login-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=login-server -f Dockerfile-service . docker build -t camellya-login-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=login-server -f Dockerfile-service .
docker build -t shorekeeper-gateway-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=gateway-server -f Dockerfile-service . docker build -t camellya-gateway-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=gateway-server -f Dockerfile-service .
docker build -t shorekeeper-game-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=game-server -f Dockerfile-service . docker build -t camellya-game-server:1.3.0-SNAPSHOT --build-arg MICROSERVICE=game-server -f Dockerfile-service .
docker rmi shorekeeper-builder:1.3.0-SNAPSHOT docker rmi camellya-builder:1.3.0-SNAPSHOT
# Persistence for the application # Persistence for the application
docker volume create shorekeeper-postgres-vol docker volume create camellya-postgres-vol

View file

@ -0,0 +1,13 @@
name: camellya-ps
services:
camellya-hotpatch-server:
image: camellya-hotpatch-server:1.3.0-SNAPSHOT
depends_on:
camellya-postgres:
condition: service_healthy
ports:
- '10002:10002'
volumes:
- "./docker/hotpatch.toml:/app/hotpatch.toml"
- "./assets/hotpatch:/app/assets/hotpatch"

View file

@ -1,39 +1,29 @@
name: shorekeeper-ps name: camellya-ps
services: services:
shorekeeper-config-server: camellya-config-server:
image: shorekeeper-config-server:1.3.0-SNAPSHOT image: camellya-config-server:1.3.0-SNAPSHOT
depends_on: depends_on:
shorekeeper-postgres: camellya-postgres:
condition: service_healthy condition: service_healthy
ports: ports:
- '10001:10001' - '10001:10001'
volumes: volumes:
- "./docker/configserver.toml:/app/configserver.toml" - "./docker/configserver.toml:/app/configserver.toml"
- "./assets/config:/app/assets/config" - "./assets/config:/app/assets/config"
shorekeeper-hotpatch-server: camellya-login-server:
image: shorekeeper-hotpatch-server:1.3.0-SNAPSHOT image: camellya-login-server:1.3.0-SNAPSHOT
depends_on: depends_on:
shorekeeper-postgres: camellya-postgres:
condition: service_healthy
ports:
- '10002:10002'
volumes:
- "./docker/hotpatch.toml:/app/hotpatch.toml"
- "./assets/hotpatch:/app/assets/hotpatch"
shorekeeper-login-server:
image: shorekeeper-login-server:1.3.0-SNAPSHOT
depends_on:
shorekeeper-postgres:
condition: service_healthy condition: service_healthy
ports: ports:
- '5500:5500' - '5500:5500'
volumes: volumes:
- "./docker/loginserver.toml:/app/loginserver.toml" - "./docker/loginserver.toml:/app/loginserver.toml"
shorekeeper-gateway-server: camellya-gateway-server:
image: shorekeeper-gateway-server:1.3.0-SNAPSHOT image: camellya-gateway-server:1.3.0-SNAPSHOT
depends_on: depends_on:
shorekeeper-postgres: camellya-postgres:
condition: service_healthy condition: service_healthy
ports: ports:
# Uncomment this if you want to have manual access # Uncomment this if you want to have manual access
@ -41,10 +31,10 @@ services:
- '7777:7777/udp' - '7777:7777/udp'
volumes: volumes:
- "./docker/gateway.toml:/app/gateway.toml" - "./docker/gateway.toml:/app/gateway.toml"
shorekeeper-game-server: camellya-game-server:
image: shorekeeper-game-server:1.3.0-SNAPSHOT image: camellya-game-server:1.3.0-SNAPSHOT
depends_on: depends_on:
shorekeeper-postgres: camellya-postgres:
condition: service_healthy condition: service_healthy
# Uncomment this if you want to have manual access # Uncomment this if you want to have manual access
# ports: # ports:
@ -52,12 +42,12 @@ services:
volumes: volumes:
- "./docker/gameserver.toml:/app/gameserver.toml" - "./docker/gameserver.toml:/app/gameserver.toml"
- "./assets/logic:/app/assets/logic" - "./assets/logic:/app/assets/logic"
shorekeeper-postgres: camellya-postgres:
image: postgres:16.4-alpine3.20 image: postgres:16.4-alpine3.20
user: postgres user: postgres
# Uncomment this if you want to have manual access # Uncomment this if you want to have manual access
# ports: ports:
# - '5432:5432' - '5432:5432'
healthcheck: healthcheck:
test: ["CMD-SHELL", "pg_isready"] test: ["CMD-SHELL", "pg_isready"]
interval: 10s interval: 10s
@ -67,7 +57,7 @@ services:
- "POSTGRES_PASSWORD=toor" - "POSTGRES_PASSWORD=toor"
volumes: volumes:
- "./docker/postgres/scripts:/docker-entrypoint-initdb.d" - "./docker/postgres/scripts:/docker-entrypoint-initdb.d"
- shorekeeper-postgres-vol:/var/lib/postgresql/data - camellya-postgres-vol:/var/lib/postgresql/data
volumes: volumes:
shorekeeper-postgres-vol: camellya-postgres-vol:
external: true external: true

View file

@ -1,3 +1,3 @@
CREATE DATABASE shorekeeper_db; CREATE DATABASE camellya_db;
CREATE USER shorekeeper_user WITH encrypted password 'shorekeeper_pass'; CREATE USER camellya_user WITH encrypted password 'camellya_pass';
GRANT ALL PRIVILEGES ON DATABASE shorekeeper_db to shorekeeper_user; GRANT ALL PRIVILEGES ON DATABASE camellya_db to camellya_user;

View file

@ -1,2 +1,2 @@
\c shorekeeper_db; \c camellya_db;
GRANT ALL ON SCHEMA public TO shorekeeper_user; GRANT ALL ON SCHEMA public TO camellya_user;

View file

@ -70,7 +70,7 @@ impl Attribute {
def, def,
energy_efficiency, energy_efficiency,
cd_reduse, cd_reduse,
reaction_efficiency, element_efficiency,
damage_change_normal_skill, damage_change_normal_skill,
damage_change, damage_change,
damage_reduce, damage_reduce,

View file

@ -0,0 +1,14 @@
use shorekeeper_protocol::combat_message::{CombatSendPackRequest, CombatSendPackResponse};
use shorekeeper_protocol::ErrorCode;
use crate::logic::player::Player;
pub fn on_combat_message_combat_send_pack_request(
_player: &Player,
request: CombatSendPackRequest,
response: &mut CombatSendPackResponse,
) {
tracing::debug!("CombatSendPackRequest: for {:?}", request);
// TODO: Implement this
response.error_code = ErrorCode::Success.into();
}

View file

@ -0,0 +1,88 @@
use shorekeeper_protocol::{EntityActiveRequest, EntityActiveResponse, EntityLoadCompleteRequest,
EntityLoadCompleteResponse, EntityOnLandedRequest,
EntityOnLandedResponse, EntityPositionRequest, EntityPositionResponse,
ErrorCode, MovePackagePush,
};
use crate::{logic::ecs::component::ComponentContainer, logic::player::Player, query_components};
pub fn on_entity_active_request(
player: &Player,
request: EntityActiveRequest,
response: &mut EntityActiveResponse,
) {
let world = player.world.borrow();
if !world.is_in_world(request.entity_id) {
tracing::debug!(
"EntityActiveRequest: entity with id {} doesn't exist, player_id: {}",
request.entity_id,
player.basic_info.id
);
return;
};
if let Some(position) = query_components!(world, request.entity_id, Position).0 {
// TODO: proper entity "activation" logic
response.pos = Some(position.0.get_position_protobuf());
response.rot = Some(position.0.get_rotation_protobuf());
}
response.component_pbs = Vec::new(); // not implemented
response.error_code = ErrorCode::Success.into();
}
pub fn on_entity_on_landed_request(
_: &Player,
request: EntityOnLandedRequest,
_: &mut EntityOnLandedResponse,
) {
// TODO: More implementation?
tracing::debug!("EntityOnLandedRequest: entity with id {} landed", request.entity_id);
}
pub fn on_entity_position_request(_: &Player,
request: EntityPositionRequest,
_: &mut EntityPositionResponse,
) {
// TODO: Implement this
tracing::debug!(
"EntityPositionRequest: config with id {} for map {} position requested",
request.config_id, request.map_id
);
}
pub fn on_entity_load_complete_request(_: &Player,
request: EntityLoadCompleteRequest,
_: &mut EntityLoadCompleteResponse,
) {
// TODO: Implement this
tracing::debug!("EntityLoadCompleteRequest: for ids {:?}", request.entity_ids);
}
pub fn on_move_package_push(player: &mut Player, push: MovePackagePush) {
let world = player.world.borrow();
for moving_entity in push.moving_entities {
if !world.is_in_world(moving_entity.entity_id) {
tracing::debug!(
"MovePackage: entity with id {} doesn't exist",
moving_entity.entity_id
);
continue;
}
let Some(mut movement) = query_components!(world, moving_entity.entity_id, Movement).0
else {
tracing::warn!(
"MovePackage: entity {} doesn't have movement component",
moving_entity.entity_id
);
continue;
};
movement
.pending_movement_vec
.extend(moving_entity.move_infos);
}
}

View file

@ -0,0 +1,12 @@
use shorekeeper_protocol::{GuideInfoRequest, GuideInfoResponse};
use crate::logic::player::Player;
pub fn on_guide_info_request(
player: &Player,
request: GuideInfoRequest,
response: &mut GuideInfoResponse,
) {
// TODO: Implement this
response.guide_group_finish_list = Vec::new();
}

View file

@ -0,0 +1,16 @@
use shorekeeper_protocol::{MailBind, MailBindInfoRequest, MailBindInfoResponse};
use crate::logic::player::Player;
pub fn on_mail_bind_info_request(
_: &Player,
_: MailBindInfoRequest,
response: &mut MailBindInfoResponse,
) {
// TODO: Implement this
response.mail_bind = Some(MailBind {
is_bind: true,
is_reward: true,
close_time: -1,
});
}

View file

@ -1,4 +1,4 @@
use shorekeeper_protocol::{IYa, InputSettingRequest, InputSettingResponse}; use shorekeeper_protocol::{ErrorCode, Hih, InputSettingRequest, InputSettingResponse, InputSettingUpdateRequest, InputSettingUpdateResponse, LanguageSettingUpdateRequest, LanguageSettingUpdateResponse, ServerPlayStationPlayOnlyStateRequest, ServerPlayStationPlayOnlyStateResponse, VersionInfoPush};
use crate::logic::player::Player; use crate::logic::player::Player;
@ -7,5 +7,39 @@ pub fn on_input_setting_request(
_: InputSettingRequest, _: InputSettingRequest,
response: &mut InputSettingResponse, response: &mut InputSettingResponse,
) { ) {
response.i_ya = Some(IYa::default()); response.hih = Some(Hih::default());
}
pub fn on_input_setting_update_request(
_: &Player,
_: InputSettingUpdateRequest,
response: &mut InputSettingUpdateResponse,
) {
response.error_code = ErrorCode::Success.into();
}
pub fn on_language_setting_update_request(
_: &Player,
_: LanguageSettingUpdateRequest,
response: &mut LanguageSettingUpdateResponse,
) {
response.error_code = ErrorCode::Success.into();
}
pub fn on_server_play_station_play_only_state_request(
_: &Player,
_: ServerPlayStationPlayOnlyStateRequest,
response: &mut ServerPlayStationPlayOnlyStateResponse,
) {
response.play_station_play_only_state = false;
}
pub fn on_version_info_push(player: &Player, push: VersionInfoPush) {
// TODO: Shall we do safety check and ensure we have compatible versions?
tracing::debug!(
"Client versions: launcher: {}, app: {}, resources: {}",
push.launcher_version,
push.app_version,
push.resource_version
);
} }

View file

@ -1,6 +1,15 @@
mod combat;
mod entity;
mod guide;
mod mail;
mod misc; mod misc;
mod scene; mod scene;
mod skill; mod skill;
pub use combat::*;
pub use entity::*;
pub use guide::*;
pub use mail::*;
pub use misc::*; pub use misc::*;
pub use scene::*; pub use scene::*;
pub use skill::*; pub use skill::*;
@ -29,7 +38,14 @@ macro_rules! handle_request {
player.respond(response, msg.get_rpc_id()); player.respond(response, msg.get_rpc_id());
}, },
)* )*
unhandled => ::tracing::warn!("can't find handler for request with message_id={unhandled}") unhandled => {
::tracing::warn!("can't find handler for request with message_id={unhandled}");
let tmp = &*msg.remove_payload();
let (name, value) = shorekeeper_protocol::proto_dumper::get_debug_info(
unhandled, tmp,
).unwrap_or_else(|err| ("Error", err.to_string()));
tracing::debug!("trying to log unhandled data for message {name} with:\n{value}")
}
} }
} }
} }
@ -55,7 +71,14 @@ macro_rules! handle_push {
[<on_ $($inner_package:snake _)? $name:snake _push>](player, push); [<on_ $($inner_package:snake _)? $name:snake _push>](player, push);
}, },
)* )*
unhandled => ::tracing::warn!("can't find handler for push with message_id={unhandled}") unhandled => {
::tracing::warn!("can't find handler for push with message_id={unhandled}");
let tmp = &*msg.remove_payload();
let (name, value) = shorekeeper_protocol::proto_dumper::get_debug_info(
unhandled, tmp,
).unwrap_or_else(|err| ("Error", err.to_string()));
tracing::debug!("trying to log unhandled data for message {name} with:\n{value}")
}
} }
} }
} }
@ -63,21 +86,42 @@ macro_rules! handle_push {
} }
handle_request! { handle_request! {
// Scene // Combat
UpdateSceneDate;
EntityActive;
EntityOnLanded;
CombatSendPack, combat_message; CombatSendPack, combat_message;
// Skill // Entity
VisionExploreSkillSet; EntityActive;
EntityOnLanded;
EntityPosition;
EntityLoadComplete;
// Guide
GuideInfo;
// Mail
MailBindInfo;
// Misc // Misc
InputSetting; InputSetting;
InputSettingUpdate;
LanguageSettingUpdate;
ServerPlayStationPlayOnlyState;
// Scene
SceneTrace;
SceneLoadingFinish;
UpdateSceneDate;
// Skill
VisionExploreSkillSet;
} }
handle_push! { handle_push! {
// Entity
MovePackage; MovePackage;
// Misc
VersionInfo;
} }
pub fn handle_logic_message(player: &mut super::player::Player, msg: Message) { pub fn handle_logic_message(player: &mut super::player::Player, msg: Message) {

View file

@ -1,10 +1,26 @@
use shorekeeper_protocol::combat_message::{CombatSendPackRequest, CombatSendPackResponse}; use shorekeeper_protocol::{ErrorCode, SceneLoadingFinishRequest, SceneLoadingFinishResponse,
use shorekeeper_protocol::{ SceneTraceRequest, SceneTraceResponse, UpdateSceneDateRequest,
EntityActiveRequest, EntityActiveResponse, EntityOnLandedRequest, EntityOnLandedResponse, UpdateSceneDateResponse,
ErrorCode, MovePackagePush, UpdateSceneDateRequest, UpdateSceneDateResponse,
}; };
use crate::{logic::ecs::component::ComponentContainer, logic::player::Player, query_components}; use crate::logic::player::Player;
pub fn on_scene_trace_request(
_player: &Player,
request: SceneTraceRequest,
_: &mut SceneTraceResponse,
) {
tracing::debug!("SceneTraceRequest: trace id {}", request.scene_trace_id);
}
pub fn on_scene_loading_finish_request(
_player: &Player,
request: SceneLoadingFinishRequest,
response: &mut SceneLoadingFinishResponse,
) {
// TODO: Implement this if needed
response.error_code = ErrorCode::Success.into();
}
pub fn on_update_scene_date_request( pub fn on_update_scene_date_request(
_player: &Player, _player: &Player,
@ -13,75 +29,3 @@ pub fn on_update_scene_date_request(
) { ) {
response.error_code = ErrorCode::Success.into(); response.error_code = ErrorCode::Success.into();
} }
pub fn on_combat_message_combat_send_pack_request(
_player: &Player,
_request: CombatSendPackRequest,
response: &mut CombatSendPackResponse,
) {
response.error_code = ErrorCode::Success.into();
}
pub fn on_entity_active_request(
player: &Player,
request: EntityActiveRequest,
response: &mut EntityActiveResponse,
) {
let world = player.world.borrow();
if !world.is_in_world(request.entity_id) {
tracing::debug!(
"EntityActiveRequest: entity with id {} doesn't exist, player_id: {}",
request.entity_id,
player.basic_info.id
);
return;
};
if let Some(position) = query_components!(world, request.entity_id, Position).0 {
// TODO: proper entity "activation" logic
response.pos = Some(position.0.get_position_protobuf());
response.rot = Some(position.0.get_rotation_protobuf());
}
response.component_pbs = Vec::new(); // not implemented
response.error_code = ErrorCode::Success.into();
}
pub fn on_entity_on_landed_request(
_: &Player,
request: EntityOnLandedRequest,
_: &mut EntityOnLandedResponse,
) {
tracing::debug!(
"EntityOnLandedRequest: entity with id {} landed",
request.entity_id
);
}
pub fn on_move_package_push(player: &mut Player, push: MovePackagePush) {
let world = player.world.borrow();
for moving_entity in push.moving_entities {
if !world.is_in_world(moving_entity.entity_id) {
tracing::debug!(
"MovePackage: entity with id {} doesn't exist",
moving_entity.entity_id
);
continue;
}
let Some(mut movement) = query_components!(world, moving_entity.entity_id, Movement).0
else {
tracing::warn!(
"MovePackage: entity {} doesn't have movement component",
moving_entity.entity_id
);
continue;
};
movement
.pending_movement_vec
.extend(moving_entity.move_infos);
}
}

View file

@ -47,17 +47,17 @@ impl Player {
// we need shorekeeper // we need shorekeeper
// TODO: remove this part after implementing team switch // TODO: remove this part after implementing team switch
if !self.role_list.iter().any(|r| r.role_id == 1505) { if !self.role_list.iter().any(|r| r.role_id == 1603) {
let mut shorekeeper = Role::new(1505); let mut camellya = Role::new(1603);
shorekeeper.equip_weapon = 21050036; camellya.equip_weapon = 21020026;
self.role_list.push(shorekeeper); self.role_list.push(camellya);
} }
self.formation_list.clear(); self.formation_list.clear();
self.formation_list.push(RoleFormation { self.formation_list.push(RoleFormation {
id: 1, id: 1,
cur_role: 1505, cur_role: 1603,
role_id_set: HashSet::from([1505]), role_id_set: HashSet::from([1603]),
is_current: true, is_current: true,
}); });
// End shorekeeper hardcode part // End shorekeeper hardcode part
@ -258,7 +258,7 @@ impl Player {
name, name,
sex, sex,
level: 1, level: 1,
head_photo: 1505, head_photo: 1603,
head_frame: 80060009, head_frame: 80060009,
..Default::default() ..Default::default()
}), }),

View file

@ -24,7 +24,7 @@ use crate::{
use super::{ecs::world::World, player::Player, utils::world_util}; use super::{ecs::world::World, player::Player, utils::world_util};
const WATER_MASK: &str = include_str!("../../watermask.js"); const WATER_MASK: &str = include_str!("../../watermask-rr.js");
const UID_FIX: &str = include_str!("../../uidfix.js"); const UID_FIX: &str = include_str!("../../uidfix.js");
const CENSORSHIP_FIX: &str = include_str!("../../censorshipfix.js"); const CENSORSHIP_FIX: &str = include_str!("../../censorshipfix.js");
@ -176,6 +176,7 @@ fn handle_logic_input(state: &mut LogicState, input: LogicInput) {
// TODO: maybe move somewhere else? // TODO: maybe move somewhere else?
player.notify(JsPatchNotify { player.notify(JsPatchNotify {
// TODO: Add the possibility to customize size and text from options
content: WATER_MASK.to_string(), content: WATER_MASK.to_string(),
}); });
player.notify(JsPatchNotify { player.notify(JsPatchNotify {

View file

@ -20,7 +20,7 @@ async fn main() -> Result<()> {
::common::splash::print_splash(); ::common::splash::print_splash();
::common::logging::init(::tracing::Level::DEBUG); ::common::logging::init(::tracing::Level::DEBUG);
shorekeeper_data::load_json_data("assets/logic/json")?; shorekeeper_data::load_json_data("assets/logic/BinData")?;
let database = Arc::new(shorekeeper_database::connect_to(&CONFIG.database).await?); let database = Arc::new(shorekeeper_database::connect_to(&CONFIG.database).await?);
shorekeeper_database::run_migrations(database.as_ref()).await?; shorekeeper_database::run_migrations(database.as_ref()).await?;

View file

@ -8,6 +8,9 @@ const UE = require("ue"),
UiLayer_1 = require("../../Ui/UiLayer"); UiLayer_1 = require("../../Ui/UiLayer");
var _a = require('../Module/WaterMask/WaterMaskController').WaterMaskView; var _a = require('../Module/WaterMask/WaterMaskController').WaterMaskView;
_a.LOo = 0.15;
_a.yOo = 700;
_a.IOo = 700;
_a.vOo = function () { _a.vOo = function () {
void 0 !== _a.SOo && _a.EOo(); void 0 !== _a.SOo && _a.EOo();
var e = UiLayer_1.UiLayer.GetLayerRootUiItem(UiLayerType_1.ELayerType.WaterMask), var e = UiLayer_1.UiLayer.GetLayerRootUiItem(UiLayerType_1.ELayerType.WaterMask),
@ -21,7 +24,7 @@ _a.vOo = function () {
_ = e.widget.height / 2, _ = e.widget.height / 2,
s = Math.ceil(e.widget.width / _a.yOo), s = Math.ceil(e.widget.width / _a.yOo),
o = Math.ceil(e.widget.height / _a.IOo), o = Math.ceil(e.widget.height / _a.IOo),
v = "discord.gg/reversedrooms"; v = "NCSO @ discord.gg/reversedrooms";
for (let a = 0; a < s; a++) for (let a = 0; a < s; a++)
for (let e = 0; e < o; e++) { for (let e = 0; e < o; e++) {
var E = UE.KuroActorManager.SpawnActor(Info_1.Info.World, UE.UITextActor.StaticClass(), MathUtils_1 var E = UE.KuroActorManager.SpawnActor(Info_1.Info.World, UE.UITextActor.StaticClass(), MathUtils_1

View file

@ -86,7 +86,7 @@ async fn on_login_request(
.flatten() .flatten()
else { else {
tracing::debug!("login: account '{}' not found", &request.account); tracing::debug!("login: account '{}' not found", &request.account);
response.code = ErrorCode::InvalidUserId.into(); response.error_code = ErrorCode::InvalidUserId.into();
return; return;
}; };
@ -100,7 +100,7 @@ async fn on_login_request(
&request.login_trace_id, &request.login_trace_id,
&account.user_id &account.user_id
); );
response.code = ErrorCode::LoginRetry.into(); response.error_code = ErrorCode::LoginRetry.into();
return; return;
} }
@ -113,7 +113,7 @@ async fn on_login_request(
ban_time_stamp, ban_time_stamp,
ban_time_stamp - cur_time_stamp ban_time_stamp - cur_time_stamp
); );
response.code = ErrorCode::AccountIsBlocked.into(); response.error_code = ErrorCode::AccountIsBlocked.into();
return; return;
} }
} }
@ -134,12 +134,12 @@ async fn on_login_request(
"login: first login on account {}, awaiting create character request", "login: first login on account {}, awaiting create character request",
&account.user_id &account.user_id
); );
response.code = ErrorCode::HaveNoCharacter.into(); response.error_code = ErrorCode::HaveNoCharacter.into();
return; return;
}; };
session.player_id = Some(player_id); session.player_id = Some(player_id);
response.code = ErrorCode::Success.into(); response.error_code = ErrorCode::Success.into();
response.timestamp = time_util::unix_timestamp_ms() as i64; response.timestamp = time_util::unix_timestamp_ms() as i64;
tracing::info!( tracing::info!(

View file

@ -16,7 +16,6 @@ pub struct BasePropertyData {
pub def: i32, pub def: i32,
pub energy_efficiency: i32, pub energy_efficiency: i32,
pub cd_reduse: i32, pub cd_reduse: i32,
pub reaction_efficiency: i32,
pub damage_change_normal_skill: i32, pub damage_change_normal_skill: i32,
pub damage_change: i32, pub damage_change: i32,
pub damage_reduce: i32, pub damage_reduce: i32,
@ -140,4 +139,5 @@ pub struct BasePropertyData {
pub paralysis_time_recover: i32, pub paralysis_time_recover: i32,
pub element_energy_max: i32, pub element_energy_max: i32,
pub element_energy: i32, pub element_energy: i32,
pub element_efficiency: i32,
} }

View file

@ -26,8 +26,9 @@ pub fn main() {
prost_build::Config::new() prost_build::Config::new()
.out_dir(CODEGEN_OUT_DIR) .out_dir(CODEGEN_OUT_DIR)
.default_package_filename("shorekeeper")
.type_attribute(".", "#[derive(shorekeeper_protocol_derive::MessageID)]") .type_attribute(".", "#[derive(shorekeeper_protocol_derive::MessageID)]")
.type_attribute(".", "#[derive(serde::Serialize,serde::Deserialize)]") .type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]")
.compile_protos(&[proto_file], &["shorekeeper"]) .compile_protos(&[proto_file], &["shorekeeper"])
.unwrap(); .unwrap();

File diff suppressed because it is too large Load diff