diff --git a/README.md b/README.md index 26c109c..1b5a6a4 100644 --- a/README.md +++ b/README.md @@ -26,13 +26,13 @@ Stage, character, outpost and story information is saved and works, as well as p - [X] Save team info - [X] Profile UI - [X] Open Archives UI + - [X] Inventory system - [ ] Outpost jukebox / relics saving - [ ] Field obtain object - [ ] Admin panel - [ ] Test hard stage support - [ ] Event system - [ ] Download all game assets ahead of time - - [ ] Fix inventory / gear - [ ] Level up/skill level up support - [ ] Basic friend list support / allow using other servers except 127.0.0.1 - [ ] Aegis Diver minigame, MOG minigame, etc diff --git a/nksrv/LobbyServer/Msgs/Inventory/ClearAllEquipment.cs b/nksrv/LobbyServer/Msgs/Inventory/ClearAllEquipment.cs new file mode 100644 index 0000000..0e7c8d2 --- /dev/null +++ b/nksrv/LobbyServer/Msgs/Inventory/ClearAllEquipment.cs @@ -0,0 +1,36 @@ +using nksrv.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace nksrv.LobbyServer.Msgs.Inventory +{ + [PacketPath("/inventory/allclearequipment")] + public class ClearAllEquipment : LobbyMsgHandler + { + protected override async Task HandleAsync() + { + var req = await ReadData(); + var user = GetUser(); + + var response = new ResAllClearEquipment(); + response.Csn = req.Csn; + + foreach (var item in user.Items.ToArray()) + { + if (item.Csn == req.Csn) + { + // update character id + item.Csn = 0; + + response.Items.Add(NetUtils.ToNet(item)); + } + } + JsonDb.Save(); + + WriteData(response); + } + } +} diff --git a/nksrv/LobbyServer/Msgs/Inventory/ClearEquipment.cs b/nksrv/LobbyServer/Msgs/Inventory/ClearEquipment.cs new file mode 100644 index 0000000..80a1e7a --- /dev/null +++ b/nksrv/LobbyServer/Msgs/Inventory/ClearEquipment.cs @@ -0,0 +1,37 @@ +using nksrv.LobbyServer.Msgs.User; +using nksrv.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace nksrv.LobbyServer.Msgs.Inventory +{ + [PacketPath("/inventory/clearequipment")] + public class ClearEquipment : LobbyMsgHandler + { + protected override async Task HandleAsync() + { + var req = await ReadData(); + var user = GetUser(); + + var response = new ResClearEquipment(); + + foreach (var item in user.Items.ToArray()) + { + if (item.Isn == req.Isn) + { + // update character id + item.Csn = 0; + + response.Item = NetUtils.ToNet(item); + } + } + + JsonDb.Save(); + + WriteData(response); + } + } +} diff --git a/nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs b/nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs index adbf7dd..abd0f8d 100644 --- a/nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs +++ b/nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs @@ -34,7 +34,7 @@ namespace nksrv.LobbyServer.Msgs.Inventory response.Items.Add(NetUtils.ToNet(item)); } } - + JsonDb.Save(); WriteData(response); } } diff --git a/nksrv/LobbyServer/Msgs/Inventory/WearEquipmentList.cs b/nksrv/LobbyServer/Msgs/Inventory/WearEquipmentList.cs new file mode 100644 index 0000000..892bbca --- /dev/null +++ b/nksrv/LobbyServer/Msgs/Inventory/WearEquipmentList.cs @@ -0,0 +1,38 @@ +using nksrv.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace nksrv.LobbyServer.Msgs.Inventory +{ + [PacketPath("/inventory/wearequipmentlist")] + public class WearEquipmentList : LobbyMsgHandler + { + protected override async Task HandleAsync() + { + var req = await ReadData(); + var user = GetUser(); + + var response = new ResWearEquipmentList(); + + foreach (var item in user.Items.ToArray()) + { + foreach (var item2 in req.IsnList) + { + if (item2 == item.Isn) + { + item.Csn = req.Csn; + + response.Items.Add(NetUtils.ToNet(item)); + } + } + } + + JsonDb.Save(); + + WriteData(response); + } + } +} diff --git a/nksrv/Protos/allmsgs.proto b/nksrv/Protos/allmsgs.proto index f792ebb..0461cbb 100644 --- a/nksrv/Protos/allmsgs.proto +++ b/nksrv/Protos/allmsgs.proto @@ -2170,4 +2170,29 @@ message ReqReadMail { } message ResReadMail { +} + +message ReqClearEquipment { + int64 isn = 2; + int64 csn = 3; +} + +message ResClearEquipment { + NetUserItemData item = 4; +} + +message ReqWearEquipmentList { + int64 Csn = 2; + repeated int64 IsnList = 3; +} +message ResWearEquipmentList { + repeated NetUserItemData Items = 3; +} + +message ReqAllClearEquipment { + int64 Csn = 2; +} +message ResAllClearEquipment { + int64 Csn = 2; + repeated NetUserItemData Items = 3; } \ No newline at end of file