refactor manager & add giveall command

- giveall only weapon for now
- move all item into SyncPlayer to prevent RspLogin too large
This commit is contained in:
Naruse
2026-04-27 14:33:25 +08:00
parent ac087f240b
commit 4bf3f0d715
15 changed files with 205 additions and 72 deletions

View File

@@ -22,12 +22,6 @@ public class Lineup_Update : ICallGSHandler
await CallGSRouter.SendScript(connection, "UpdateLineup", "{}");
return;
}
var rsp = new NtfSyncLineup
{
Lineup = formation.ToProto()
};
await connection.SendPacket(CmdIds.NtfSyncLineup, rsp);
await CallGSRouter.SendScript(connection, "UpdateLineup", "{}");
}
}

View File

@@ -6,6 +6,7 @@ using MikuSB.GameServer.Game.Player;
using MikuSB.GameServer.Server.CallGS;
using MikuSB.GameServer.Server.Packet.Send.Friend;
using MikuSB.GameServer.Server.Packet.Send.Login;
using MikuSB.GameServer.Server.Packet.Send.Misc;
using MikuSB.Proto;
using MikuSB.TcpSharp;
using MikuSB.Util;
@@ -49,13 +50,8 @@ public class HandlerReqLogin : Handler
connection.Player.Connection = connection;
await connection.SendPacket(new PacketRspLogin(connection.Player!));
var supplySync = new MikuSB.Proto.NtfSyncPlayer();
foreach (var item in connection.Player.GetSupplyItems())
supplySync.Items.Add(item.ToProto());
if (supplySync.Items.Count > 0)
await CallGSRouter.SendScript(connection, "", "{}", supplySync);
await connection.Player.OnHeartBeat();
await connection.SendPacket(new PacketNtfUpdateFriend(connection.Player!));
await connection.SendPacket(new PacketNtfCallScript(connection.Player!.InventoryManager.InventoryData));
}
}

View File

@@ -0,0 +1,19 @@
using MikuSB.Database.Lineup;
using MikuSB.Proto;
using MikuSB.TcpSharp;
namespace MikuSB.GameServer.Server.Packet.Send.Lineup;
public class PacketNtfSyncLineup : BasePacket
{
public PacketNtfSyncLineup(LineupDataInfo lineup) : base(CmdIds.NtfSyncLineup)
{
var proto = new NtfSyncLineup
{
Lineup = lineup.ToProto()
};
SetData(proto);
}
}

View File

@@ -1,4 +1,6 @@
using MikuSB.Database.Character;
using MikuSB.Database.Inventory;
using MikuSB.GameServer.Game.Inventory;
using MikuSB.Proto;
using MikuSB.TcpSharp;
@@ -6,7 +8,7 @@ namespace MikuSB.GameServer.Server.Packet.Send.Misc;
public class PacketNtfCallScript : BasePacket
{
public PacketNtfCallScript(List<CharacterInfo> Characters) : base(CmdIds.NtfScript)
public PacketNtfCallScript(List<CharacterInfo> characters) : base(CmdIds.NtfScript)
{
var proto = new NtfCallScript
{
@@ -14,10 +16,55 @@ public class PacketNtfCallScript : BasePacket
Arg = "{}",
ExtraSync = new NtfSyncPlayer
{
Items = { Characters.Select(x => x.ToProto()) }
Items = { characters.Select(x => x.ToProto()) }
}
};
SetData(proto);
}
public PacketNtfCallScript(List<GameWeaponInfo> weapons) : base(CmdIds.NtfScript)
{
var proto = new NtfCallScript
{
Api = "",
Arg = "{}",
ExtraSync = new NtfSyncPlayer
{
Items = { weapons.Select(x => x.ToProto()) }
}
};
SetData(proto);
}
public PacketNtfCallScript(List<BaseGameItemInfo> items) : base(CmdIds.NtfScript)
{
var proto = new NtfCallScript
{
Api = "",
Arg = "{}",
ExtraSync = new NtfSyncPlayer
{
Items = { items.Select(x => x.ToProto()) }
}
};
SetData(proto);
}
public PacketNtfCallScript(InventoryData inventory) : base(CmdIds.NtfScript)
{
var proto = new NtfCallScript
{
Api = "",
Arg = "{}"
};
var extraSync = new NtfSyncPlayer();
foreach (var item in inventory.Items.Values) if ((item.TemplateId & 0xFFFF) != 5) extraSync.Items.Add(item.ToProto());
foreach (var weapon in inventory.Weapons.Values) extraSync.Items.Add(weapon.ToProto());
proto.ExtraSync = extraSync;
SetData(proto);
}
}