Fixed an issue where adding too many support cards could prevent users from logging in.

This commit is contained in:
Kei-Luna
2026-05-19 16:32:25 +09:00
parent 5a8e45a44c
commit 132355d76b
3 changed files with 51 additions and 5 deletions

View File

@@ -10,18 +10,41 @@ public class PacketRspLogin : BasePacket
{
private static readonly Logger Logger = new("RspLogin");
public PacketRspLogin(PlayerInstance player) : base(CmdIds.RspLogin)
public PacketRspLogin(PlayerInstance player, bool includeSupportCards = true) : base(CmdIds.RspLogin)
{
var characterCount = player.CharacterManager.CharacterData.Characters.Count;
var itemCount = player.InventoryManager.InventoryData.Items.Count;
var skinCount = player.InventoryManager.InventoryData.Skins.Count;
var weaponCount = player.InventoryManager.InventoryData.Weapons.Count;
var supportCardCount = player.InventoryManager.InventoryData.SupportCards.Count;
var attrCount = player.Data.Attrs.Count;
var strAttrCount = player.Data.StrAttrs.Count;
var showItemCount = player.Data.ShowItems.Count;
var proto = new RspLogin
{
Timestamp = (uint)Extensions.GetUnixSec(),
WorldChannel = 1,
AreaId = 1,
Data = player.ToPlayerProto(),
Data = player.ToPlayerProto(includeSupportCards),
NeedRename = false
};
var bytes = Google.Protobuf.MessageExtensions.ToByteArray(proto);
Logger.Info(
"RspLogin content: " +
$"characters={characterCount}, " +
$"items={itemCount}, " +
$"skins={skinCount}, " +
$"weapons={weaponCount}, " +
$"supportCards={supportCardCount}, " +
$"supportCardsInRspLogin={(includeSupportCards ? supportCardCount : 0)}, " +
$"attrs={attrCount}, " +
$"strAttrs={strAttrCount}, " +
$"showItems={showItemCount}, " +
$"protoItems={proto.Data.Items.Count}, " +
$"protoAttrs={proto.Data.Attrs.Count}, " +
$"protoStrAttrs={proto.Data.StrAttrs.Count}");
Logger.Info($"RspLogin proto size: {bytes.Length} bytes");
SetData(bytes);