mirror of
https://gitlab.com/Syroot/Worms.git
synced 2025-03-04 17:35:22 +03:00
Name several unknown properties.
This commit is contained in:
parent
c33e1f7987
commit
645db214ca
@ -134,27 +134,31 @@ namespace Syroot.Worms.OnlineWorms.Server
|
|||||||
Player = new ChannelConnectPlayerInfo
|
Player = new ChannelConnectPlayerInfo
|
||||||
{
|
{
|
||||||
ID = packet.Players[0].ID,
|
ID = packet.Players[0].ID,
|
||||||
|
Name = "Your Name",
|
||||||
|
Experience = 1337,
|
||||||
|
Gold = 1000000,
|
||||||
Rank = 19,
|
Rank = 19,
|
||||||
GuildMarkIndex = 1
|
GuildMarkIndex = 1,
|
||||||
|
GuildName = "Your Guild"
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void HandleChannelUnkInfo(ChannelUnkInfoQuery packet)
|
public void HandleChannelTop20Players(ChannelTop20PlayersQuery packet)
|
||||||
{
|
{
|
||||||
// Send player rank infos.
|
// Send some simulated player rank infos.
|
||||||
ChannelUnkInfoReply reply = new ChannelUnkInfoReply
|
ChannelTop20PlayersReply reply = new ChannelTop20PlayersReply
|
||||||
{
|
{
|
||||||
UnknownA = "Test",
|
UnknownA = "Test",
|
||||||
UnkInfos = new List<ChannelUnkInfo>(20)
|
Top20 = new List<ChannelTop20Player>(20)
|
||||||
};
|
};
|
||||||
for (int i = 0; i < 20; i++)
|
for (int i = 0; i < 20; i++)
|
||||||
{
|
{
|
||||||
reply.UnkInfos.Add(new ChannelUnkInfo
|
reply.Top20.Add(new ChannelTop20Player
|
||||||
{
|
{
|
||||||
UnknownA = (ushort)i,
|
Rank = (ushort)((i + 6) / 3),
|
||||||
UnknownB = $"Bla {i + 1}",
|
Name = $"GoodPlayer{(char)('A' + i)}",
|
||||||
UnknownC = (ulong)i
|
Experience = (ulong)(20 - i) * 957
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
SendPacket(reply);
|
SendPacket(reply);
|
||||||
@ -165,7 +169,10 @@ namespace Syroot.Worms.OnlineWorms.Server
|
|||||||
|
|
||||||
public void HandleStartSingleGameQuery(StartSingleGameQuery packet)
|
public void HandleStartSingleGameQuery(StartSingleGameQuery packet)
|
||||||
{
|
{
|
||||||
SendPacket(new StartSingleGameReply());
|
SendPacket(new StartSingleGameReply
|
||||||
|
{
|
||||||
|
Success = packet.RoundType == GameStartRoundType.First
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
@ -27,7 +27,7 @@ namespace Syroot.Worms.OnlineWorms.Server.Net
|
|||||||
stream.WriteUInt16(0); // field_1E710
|
stream.WriteUInt16(0); // field_1E710
|
||||||
stream.WriteUInt32(0); // field_1E714
|
stream.WriteUInt32(0); // field_1E714
|
||||||
stream.WriteString(Player.ID, 12);
|
stream.WriteString(Player.ID, 12);
|
||||||
stream.WriteString(Player.UnknownA, 10);
|
stream.WriteString(Player.Name, 10);
|
||||||
stream.WriteUInt16(Player.UnknownB);
|
stream.WriteUInt16(Player.UnknownB);
|
||||||
stream.WriteUInt16(Player.UnknownC);
|
stream.WriteUInt16(Player.UnknownC);
|
||||||
stream.WriteUInt16(Player.UnknownD);
|
stream.WriteUInt16(Player.UnknownD);
|
||||||
@ -42,11 +42,11 @@ namespace Syroot.Worms.OnlineWorms.Server.Net
|
|||||||
stream.WriteUInt16(Player.UnknownM);
|
stream.WriteUInt16(Player.UnknownM);
|
||||||
stream.WriteUInt16(Player.UnknownN);
|
stream.WriteUInt16(Player.UnknownN);
|
||||||
stream.WriteUInt16(Player.UnknownO);
|
stream.WriteUInt16(Player.UnknownO);
|
||||||
stream.WriteUInt64(Player.UnknownP);
|
stream.WriteUInt64(Player.Experience);
|
||||||
stream.WriteUInt64(Player.UnknownQ);
|
stream.WriteUInt64(Player.Gold);
|
||||||
stream.WriteUInt16(Player.Rank);
|
stream.WriteUInt16(Player.Rank);
|
||||||
stream.WriteUInt16(Player.GuildMarkIndex);
|
stream.WriteUInt16(Player.GuildMarkIndex);
|
||||||
stream.WriteString(Player.UnknownR, 12);
|
stream.WriteString(Player.GuildName, 12);
|
||||||
stream.WriteUInt32(Player.UnknownS);
|
stream.WriteUInt32(Player.UnknownS);
|
||||||
stream.WriteUInt32(0); // v29
|
stream.WriteUInt32(0); // v29
|
||||||
stream.WriteUInt16(0); // v30
|
stream.WriteUInt16(0); // v30
|
||||||
@ -73,7 +73,7 @@ namespace Syroot.Worms.OnlineWorms.Server.Net
|
|||||||
internal class ChannelConnectPlayerInfo
|
internal class ChannelConnectPlayerInfo
|
||||||
{
|
{
|
||||||
public string ID { get; set; } // Max. 12 chars
|
public string ID { get; set; } // Max. 12 chars
|
||||||
public string UnknownA { get; set; } // Max. 10 chars
|
public string Name { get; set; } // Max. 10 chars
|
||||||
public ushort UnknownB { get; set; }
|
public ushort UnknownB { get; set; }
|
||||||
public ushort UnknownC { get; set; }
|
public ushort UnknownC { get; set; }
|
||||||
public ushort UnknownD { get; set; }
|
public ushort UnknownD { get; set; }
|
||||||
@ -88,11 +88,11 @@ namespace Syroot.Worms.OnlineWorms.Server.Net
|
|||||||
public ushort UnknownM { get; set; }
|
public ushort UnknownM { get; set; }
|
||||||
public ushort UnknownN { get; set; }
|
public ushort UnknownN { get; set; }
|
||||||
public ushort UnknownO { get; set; }
|
public ushort UnknownO { get; set; }
|
||||||
public ulong UnknownP { get; set; }
|
public ulong Experience { get; set; }
|
||||||
public ulong UnknownQ { get; set; }
|
public ulong Gold { get; set; }
|
||||||
public ushort Rank { get; set; }
|
public ushort Rank { get; set; }
|
||||||
public ushort GuildMarkIndex { get; set; }
|
public ushort GuildMarkIndex { get; set; }
|
||||||
public string UnknownR { get; set; } // Max. 12 chars
|
public string GuildName { get; set; } // Max. 12 chars
|
||||||
public uint UnknownS { get; set; } // 4 bytes
|
public uint UnknownS { get; set; } // 4 bytes
|
||||||
public ushort UnknownT { get; set; }
|
public ushort UnknownT { get; set; }
|
||||||
public ushort UnknownU { get; set; }
|
public ushort UnknownU { get; set; }
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
namespace Syroot.Worms.OnlineWorms.Server.Net
|
namespace Syroot.Worms.OnlineWorms.Server.Net
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents an additional server response to a <see cref="ChannelUnkInfoQuery"/>, causing the client to switch
|
/// Represents an additional server response to a <see cref="ChannelTop20PlayersQuery"/>, causing the client to switch
|
||||||
/// to the channel screen (game lobby).
|
/// to the channel screen (game lobby).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Packet(PacketType.Channel, 0x44)]
|
[Packet(PacketType.Channel, 0x44)]
|
||||||
|
@ -7,7 +7,7 @@ namespace Syroot.Worms.OnlineWorms.Server.Net
|
|||||||
/// Represents the client request for a <see cref="ChannelConnectReply"/>.
|
/// Represents the client request for a <see cref="ChannelConnectReply"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Packet(PacketType.Channel, 0x37)]
|
[Packet(PacketType.Channel, 0x37)]
|
||||||
internal class ChannelUnkInfoQuery : Packet
|
internal class ChannelTop20PlayersQuery : Packet
|
||||||
{
|
{
|
||||||
// ---- PROPERTIES ---------------------------------------------------------------------------------------------
|
// ---- PROPERTIES ---------------------------------------------------------------------------------------------
|
||||||
|
|
@ -5,16 +5,16 @@ using Syroot.BinaryData;
|
|||||||
namespace Syroot.Worms.OnlineWorms.Server.Net
|
namespace Syroot.Worms.OnlineWorms.Server.Net
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents the server response to a <see cref="ChannelUnkInfoQuery"/>.
|
/// Represents the server response to a <see cref="ChannelTop20PlayersQuery"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Packet(PacketType.Channel, 0x36)]
|
[Packet(PacketType.Channel, 0x36)]
|
||||||
internal class ChannelUnkInfoReply : Packet
|
internal class ChannelTop20PlayersReply : Packet
|
||||||
{
|
{
|
||||||
// ---- PROPERTIES ---------------------------------------------------------------------------------------------
|
// ---- PROPERTIES ---------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
public string UnknownA { get; set; } // Max. 30 chars
|
public string UnknownA { get; set; } // Max. 30 chars
|
||||||
|
|
||||||
public IList<ChannelUnkInfo> UnkInfos { get; set; } // Apparently ranks. Client always requests 20 elements.
|
public IList<ChannelTop20Player> Top20 { get; set; } // 20 elements.
|
||||||
|
|
||||||
// ---- METHODS (INTERNAL) -------------------------------------------------------------------------------------
|
// ---- METHODS (INTERNAL) -------------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -23,11 +23,11 @@ namespace Syroot.Worms.OnlineWorms.Server.Net
|
|||||||
internal override void Serialize(PacketStream stream)
|
internal override void Serialize(PacketStream stream)
|
||||||
{
|
{
|
||||||
stream.WriteString(UnknownA, 30);
|
stream.WriteString(UnknownA, 30);
|
||||||
foreach (ChannelUnkInfo unkInfo in UnkInfos)
|
foreach (ChannelTop20Player top20Player in Top20)
|
||||||
{
|
{
|
||||||
stream.WriteUInt16(unkInfo.UnknownA);
|
stream.WriteUInt16(top20Player.Rank);
|
||||||
stream.WriteString(unkInfo.UnknownB, 12);
|
stream.WriteString(top20Player.Name, 12);
|
||||||
stream.WriteUInt64(unkInfo.UnknownC);
|
stream.WriteUInt64(top20Player.Experience);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -35,10 +35,10 @@ namespace Syroot.Worms.OnlineWorms.Server.Net
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents a player channel rank, apparently.
|
/// Represents a player channel rank, apparently.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ChannelUnkInfo
|
public class ChannelTop20Player
|
||||||
{
|
{
|
||||||
public ushort UnknownA { get; set; }
|
public ushort Rank { get; set; }
|
||||||
public string UnknownB { get; set; } // Max. 12 chars
|
public string Name { get; set; } // Max. 12 chars
|
||||||
public ulong UnknownC { get; set; }
|
public ulong Experience { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,19 +11,25 @@ namespace Syroot.Worms.OnlineWorms.Server.Net
|
|||||||
{
|
{
|
||||||
// ---- PROPERTIES ---------------------------------------------------------------------------------------------
|
// ---- PROPERTIES ---------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
public byte UnknownA { get; set; }
|
public GameStartRoundType RoundType { get; set; }
|
||||||
public byte UnknownB { get; set; }
|
public byte UnknownB { get; set; }
|
||||||
public byte UnknownC { get; set; }
|
public byte UnknownC { get; set; } // 0x3D on first round, 0x3E on any other
|
||||||
|
|
||||||
// ---- METHODS (INTERNAL) -------------------------------------------------------------------------------------
|
// ---- METHODS (INTERNAL) -------------------------------------------------------------------------------------
|
||||||
|
|
||||||
internal override void Deserialize(PacketStream stream)
|
internal override void Deserialize(PacketStream stream)
|
||||||
{
|
{
|
||||||
UnknownA = stream.Read1Byte();
|
RoundType = stream.ReadEnum<GameStartRoundType>(true);
|
||||||
UnknownB = stream.Read1Byte();
|
UnknownB = stream.Read1Byte();
|
||||||
UnknownC = stream.Read1Byte();
|
UnknownC = stream.Read1Byte();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal override void Serialize(PacketStream stream) => throw new NotImplementedException();
|
internal override void Serialize(PacketStream stream) => throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal enum GameStartRoundType : byte
|
||||||
|
{
|
||||||
|
First = 1,
|
||||||
|
Next = 2
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user