diff --git a/Common/Data/Excel/DressDataExcel.cs b/Common/Data/Excel/DressDataExcel.cs index f64679f..f569306 100644 --- a/Common/Data/Excel/DressDataExcel.cs +++ b/Common/Data/Excel/DressDataExcel.cs @@ -5,16 +5,16 @@ namespace KianaBH.Data.Excel; [ResourceEntity("DressData.json")] public class DressDataExcel : ExcelResource { - [JsonPropertyName("dressID")] public uint DressID { get; set; } - [JsonPropertyName("avatarIDList")] public List AvatarIDList { get; set; } = []; + [JsonPropertyName("dressID")] public int DressID { get; set; } + [JsonPropertyName("avatarIDList")] public List AvatarIDList { get; set; } = []; public override int GetId() { - return (int)DressID; + return DressID; } public override void Loaded() { - GameData.DressData.Add(GetId(), this); + GameData.DressData.Add(DressID, this); } } \ No newline at end of file diff --git a/Common/Internationalization/Message/LanguageEN.cs b/Common/Internationalization/Message/LanguageEN.cs index 9dd1556..9cb9033 100644 --- a/Common/Internationalization/Message/LanguageEN.cs +++ b/Common/Internationalization/Message/LanguageEN.cs @@ -43,6 +43,7 @@ public class WordTextEN public string Banner => "Gacha"; public string Activity => "Activity"; public string Elf => "Elf"; + public string Dress => "Outfit"; // server info public string Config => "Config File"; @@ -208,7 +209,9 @@ public class GiveAllTextEN public string Usage => "Usage: /giveall weapon\n\n" + - "Usage: /giveall stigmata"; + "Usage: /giveall stigmata\n\n" + + "Usage: /giveall material\n\n" + + "Usage: /giveall dress\n"; public string GiveAllItems => "Granted all {0}"; } diff --git a/GameServer/Command/Commands/CommandGiveAll.cs b/GameServer/Command/Commands/CommandGiveAll.cs index fbd1da9..b639c78 100644 --- a/GameServer/Command/Commands/CommandGiveAll.cs +++ b/GameServer/Command/Commands/CommandGiveAll.cs @@ -44,4 +44,23 @@ public class CommandGiveall : ICommands await arg.Target!.Player!.SyncInventory(); await arg.SendMsg(I18NManager.Translate("Game.Command.GiveAll.GiveAllItems", I18NManager.Translate("Word.Material"))); } + + [CommandMethod("dress")] + public async ValueTask GiveDress(CommandArg arg) + { + if (!await arg.CheckOnlineTarget()) return; + foreach (var config in GameData.DressData.Values) + { + foreach (var valkId in config.AvatarIDList) + { + var valk = arg.Target!.Player!.AvatarManager!.GetAvatar(valkId); + if (valk == null) continue; + if (valk.DressList.Contains(config.DressID)) continue; + valk.DressList.Add(config.DressID); + } + } + await arg.Target!.Player!.SyncValk(); + await arg.SendMsg(I18NManager.Translate("Game.Command.GiveAll.GiveAllItems", I18NManager.Translate("Word.Dress"))); + } } + diff --git a/GameServer/Server/Packet/Recv/Avatar/HandlerSetDressReq.cs b/GameServer/Server/Packet/Recv/Avatar/HandlerSetDressReq.cs new file mode 100644 index 0000000..c3f8af3 --- /dev/null +++ b/GameServer/Server/Packet/Recv/Avatar/HandlerSetDressReq.cs @@ -0,0 +1,17 @@ +using KianaBH.Proto; + +namespace KianaBH.GameServer.Server.Packet.Recv.Avatar; + +[Opcode(CmdIds.SetDressReq)] +public class HandlerSetDressReq : Handler +{ + public override async Task OnHandle(Connection connection, byte[] header, byte[] data) + { + var req = SetDressReq.Parser.ParseFrom(data); + var player = connection.Player!; + var valk = player.AvatarManager!.GetAvatar((int)req.AvatarId); + if (valk == null) return; + valk.DressId = (int)req.DressId; + await connection.SendPacket(CmdIds.SetDressRsp); + } +} diff --git a/GameServer/Server/Packet/Recv/Test/HandlerSetDressReq.cs b/GameServer/Server/Packet/Recv/Test/HandlerSetDressReq.cs deleted file mode 100644 index ca163be..0000000 --- a/GameServer/Server/Packet/Recv/Test/HandlerSetDressReq.cs +++ /dev/null @@ -1,13 +0,0 @@ -using KianaBH.GameServer.Server.Packet.Send.Test; -using KianaBH.Proto; - -namespace KianaBH.GameServer.Server.Packet.Recv.Test; - -[Opcode(CmdIds.SetDressReq)] -public class HandlerSetDressReq : Handler -{ - public override async Task OnHandle(Connection connection, byte[] header, byte[] data) - { - await connection.SendPacket(new PacketSetDressRsp()); - } -} diff --git a/GameServer/Server/Packet/Send/Test/PacketSetDressRsp.cs b/GameServer/Server/Packet/Send/Test/PacketSetDressRsp.cs deleted file mode 100644 index f16ba3d..0000000 --- a/GameServer/Server/Packet/Send/Test/PacketSetDressRsp.cs +++ /dev/null @@ -1,17 +0,0 @@ -using KianaBH.KcpSharp; -using KianaBH.Proto; - -namespace KianaBH.GameServer.Server.Packet.Send.Test; - -public class PacketSetDressRsp : BasePacket -{ - public PacketSetDressRsp() : base(CmdIds.SetDressRsp) - { - var proto = new SetDressRsp - { - - }; - - SetData(proto); - } -}