diff --git a/src/Syroot.Worms.Mgame.GameServer/Client.WorldPartyAqua.Channel.cs b/src/Syroot.Worms.Mgame.GameServer/Client.WorldPartyAqua.Channel.cs index f9fd870..1b16019 100644 --- a/src/Syroot.Worms.Mgame.GameServer/Client.WorldPartyAqua.Channel.cs +++ b/src/Syroot.Worms.Mgame.GameServer/Client.WorldPartyAqua.Channel.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel; namespace Syroot.Worms.Mgame.GameServer @@ -7,7 +8,31 @@ namespace Syroot.Worms.Mgame.GameServer { // ---- METHODS (PUBLIC) --------------------------------------------------------------------------------------- - public void HandleWwpaChannelCmd(CmdStartSingleGameQuery packet) + public void HandleWwpaChannelCmdFindUser(CmdFindUserQuery packet) + { + SendPacket(new CmdFindUserReply + { + Success = true, + NickName = "Fuckerman", + Gender = UserGender.Male, + GamesWon = 12, + GamesLost = 17, + GamesDrawn = 8, + Level = 15, + Guild = "Shitterguild", + Experience = 2350, + Currency = 12000, + + Phone = "081 892 0242", + Address = "Asshole Road 13", + Birthday = new DateTime(1997, 11, 3), + Introduction = "Hello I'm sooo gay", + + MaybeAvatar = new int[13] + }); + } + + public void HandleWwpaChannelCmdStartSingleGame(CmdStartSingleGameQuery packet) { SendPacket(new CmdStartSingleGameReply { @@ -25,7 +50,7 @@ namespace Syroot.Worms.Mgame.GameServer }); } - public void HandleWwpaChannelCmd(CmdUnknown6Query packet) + public void HandleWwpaChannelCmdUnknown6(CmdUnknown6Query packet) { SendPacket(new CmdUnknown6Reply { diff --git a/src/Syroot.Worms.Mgame.GameServer/Core/ObjectDumper.cs b/src/Syroot.Worms.Mgame.GameServer/Core/ObjectDumper.cs index d8c1a7d..d7929ff 100644 --- a/src/Syroot.Worms.Mgame.GameServer/Core/ObjectDumper.cs +++ b/src/Syroot.Worms.Mgame.GameServer/Core/ObjectDumper.cs @@ -48,6 +48,9 @@ namespace Syroot.Worms.Mgame.GameServer.Core case Byte byteValue: sb.Append($"{indent}0x{byteValue:X2}"); break; + case DateTime dateTimeValue: + sb.Append($"{indent}{dateTimeValue}"); + break; case Int16 int16Value: sb.Append($"{indent}0x{int16Value:X4}"); break; diff --git a/src/Syroot.Worms.Mgame.GameServer/Packets/WorldPartyAqua/Channel/CmdFindUserQuery.cs b/src/Syroot.Worms.Mgame.GameServer/Packets/WorldPartyAqua/Channel/CmdFindUserQuery.cs new file mode 100644 index 0000000..72348f4 --- /dev/null +++ b/src/Syroot.Worms.Mgame.GameServer/Packets/WorldPartyAqua/Channel/CmdFindUserQuery.cs @@ -0,0 +1,25 @@ +using System; +using Syroot.BinaryData.Memory; + +namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel +{ + /// + /// Represents the client request for a . + /// + [WwpaPacket(0x10A, Command = 1)] + internal class CmdFindUserQuery : IPacket + { + // ---- PROPERTIES --------------------------------------------------------------------------------------------- + + public string UserName { get; set; } + + // ---- METHODS (PUBLIC) --------------------------------------------------------------------------------------- + + public void Load(ref SpanReader reader) + { + UserName = reader.ReadString2(); + } + + public void Save(ref SpanWriter writer) => throw new NotImplementedException(); + } +} diff --git a/src/Syroot.Worms.Mgame.GameServer/Packets/WorldPartyAqua/Channel/CmdFindUserReply.cs b/src/Syroot.Worms.Mgame.GameServer/Packets/WorldPartyAqua/Channel/CmdFindUserReply.cs new file mode 100644 index 0000000..dd93987 --- /dev/null +++ b/src/Syroot.Worms.Mgame.GameServer/Packets/WorldPartyAqua/Channel/CmdFindUserReply.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using Syroot.BinaryData.Memory; + +namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel +{ + /// + /// Represents the server response to a . + /// + [WwpaPacket(0x10B, Command = 1)] + internal class CmdFindUserReply : IPacket + { + // ---- PROPERTIES --------------------------------------------------------------------------------------------- + + public bool Success { get; set; } + + public string NickName { get; set; } + + public UserGender Gender { get; set; } + + public int GamesWon { get; set; } + + public int GamesLost { get; set; } + + public int GamesDrawn { get; set; } + + public ushort Level { get; set; } + + public uint MaybeClass { get; set; } + + public string Guild { get; set; } + + public long Experience { get; set; } + + public long Currency { get; set; } + + public uint MaybeLocation { get; set; } + + public string Phone { get; set; } + + public string Address { get; set; } + + public DateTime Birthday { get; set; } + + public string Introduction { get; set; } + + public IList MaybeAvatar { get; set; } // 13 elements + + // ---- METHODS (PUBLIC) --------------------------------------------------------------------------------------- + + public void Load(ref SpanReader reader) => throw new NotImplementedException(); + + public void Save(ref SpanWriter writer) + { + writer.WriteInt32(Success ? 1 : 2); + if (Success) + { + writer.WriteString2(NickName); + writer.WriteEnumSafe(Gender); + writer.WriteInt32(GamesWon); + writer.WriteInt32(GamesLost); + writer.WriteInt32(GamesDrawn); + writer.WriteUInt16(Level); + writer.WriteUInt32(MaybeClass); + writer.WriteString2(Guild); + writer.WriteInt64(Experience); + writer.WriteInt64(Currency); + writer.WriteString2(Phone); + writer.WriteString2(Address); + writer.WriteString2(Birthday.ToShortDateString()); + writer.WriteString2(Introduction); + writer.WriteUInt32(MaybeLocation); + for (int i = 0; i < 13; i++) + writer.WriteInt32(MaybeAvatar[i]); + } + } + } + + internal enum UserGender : byte + { + Male = 1, + Female = 2 + } +} diff --git a/src/Syroot.Worms.Mgame.GameServer/Packets/WorldPartyAqua/Channel/CmdUnknown6Query.cs b/src/Syroot.Worms.Mgame.GameServer/Packets/WorldPartyAqua/Channel/CmdUnknown6Query.cs index fd56fca..25b8cdc 100644 --- a/src/Syroot.Worms.Mgame.GameServer/Packets/WorldPartyAqua/Channel/CmdUnknown6Query.cs +++ b/src/Syroot.Worms.Mgame.GameServer/Packets/WorldPartyAqua/Channel/CmdUnknown6Query.cs @@ -1,4 +1,5 @@ -using System.Net; +using System; +using System.Net; using Syroot.BinaryData.Memory; namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel @@ -23,6 +24,6 @@ namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel ClientIP = IPAddress.Parse(reader.ReadString2()); } - public void Save(ref SpanWriter writer) { } + public void Save(ref SpanWriter writer) => throw new NotImplementedException(); } }