💀 strictly necessary login nitifies

This commit is contained in:
rfi
2024-02-21 10:46:58 +07:00
parent 11263bd61e
commit d052bd1935
12 changed files with 162 additions and 18 deletions

View File

@@ -1,4 +1,5 @@
using BLHX.Server.Common.Database;
using BLHX.Server.Common.Data;
using BLHX.Server.Common.Database;
using BLHX.Server.Common.Proto;
using BLHX.Server.Common.Utils;
using BLHX.Server.Game.Handlers;
@@ -117,11 +118,35 @@ namespace BLHX.Server.Game
ns.Write(sendBuf);
}
void SendPacket(Packet packet)
{
var ns = tcpClient.GetStream();
byte[] sendBuf = GC.AllocateUninitializedArray<byte>(Packet.LENGTH_SIZE + Packet.HEADER_SIZE + packet.bytes.Length);
BinaryPrimitives.WriteUInt16BigEndian(sendBuf, (ushort)(packet.bytes.Length + Packet.HEADER_SIZE));
sendBuf[Packet.LENGTH_SIZE] = 0;
BinaryPrimitives.WriteUInt16BigEndian(sendBuf.AsSpan(Packet.LENGTH_SIZE + 1), (ushort)packet.command);
BinaryPrimitives.WriteUInt16BigEndian(sendBuf.AsSpan(Packet.HEADER_SIZE), NextPacketIdx);
packet.bytes.CopyTo(sendBuf.AsSpan(Packet.LENGTH_SIZE + Packet.HEADER_SIZE));
ns.Write(sendBuf);
}
public void InitClientData()
{
this.NotifyPlayerData();
this.NotifyRefluxData();
this.NotifyGameRoom();
this.NotifyStatisticsInit();
this.NotifyShipData();
this.NotifyShipSkinData();
this.NotifyFleetData();
this.NotifyShopMonthData();
this.NotifyChapterData();
this.NotifyBagData();
this.NotifyDormData();
this.NotifyNavalAcademy();
// SendPacket(new() { bytes = Convert.FromBase64String("CAEQABgAIAAyBQjqBxABMgUI6QcQATIFCNcIEAEyBQjQCBABMgUIlQoQATIFCJoKEAEyBQjTCBABMgUIzggQATIFCM8IEAEyBQiYChABMgUIlgoQATIFCNEIEAEyBQjSCBABMgUI2AgQATgBQAJK/gEIARIQCgQxMTEyEBYYDSABMAA4ABIQCgQxMTA2EAwYFyABMAA4ABIQCgQxMTA1EBYYDyABMAA4ABIQCgQxMzAyEBgYDCABMAA4ABIQCgQxMzA0EBgYFCABMAA4ABIQCgQxMTAzEAwYDCABMAA4ABIQCgQxMTAyEBEYDCABMAA4ABIQCgQxMTA3EBcYFCABMAA4ABIQCgQxMzA2EBAYGCABMAA4ABIQCgQxMzAxEBQYGCABMAA4ABIQCgQxMTA0EBAYDCABMAA4ABIQCgQxMTExEBYYFiACMAA4ABIQCgQxMDAxEAAYACABMAA4ABIQCgQxMDAyEAAYACABMAA4AFAAWABgAGj/o82uBnIA"), command = Command.Sc19001 });
}
public void SendHttpResponse(string rsp, string type = "text/plain")

View File

@@ -70,5 +70,10 @@ namespace BLHX.Server.Game.Handlers
});
}
}
public static void NotifyRefluxData(this Connection connection)
{
connection.Send(new Sc11752());
}
}
}

View File

@@ -19,6 +19,11 @@ namespace BLHX.Server.Game.Handlers
}
}
public static void NotifyShipSkinData(this Connection connection)
{
connection.Send(new Sc12201());
}
public static void NotifyFleetData(this Connection connection)
{
if (connection.player is not null)
@@ -26,7 +31,10 @@ namespace BLHX.Server.Game.Handlers
connection.Send(new Sc12101()
{
GroupLists = [
new Groupinfo() { Id = 1, ShipLists = [1, 2] }
new Groupinfo() { Id = 1, ShipLists = [1, 2] },
new Groupinfo() { Id = 2 },
new Groupinfo() { Id = 11 },
new Groupinfo() { Id = 12 }
]
});
}

View File

@@ -0,0 +1,16 @@
using BLHX.Server.Common.Proto.p13;
namespace BLHX.Server.Game.Handlers
{
internal static class P13
{
}
static class P13ConnectionNotifyExtensions
{
public static void NotifyChapterData(this Connection connection)
{
connection.Send(new Sc13001() { ReactChapter = new() });
}
}
}

View File

@@ -0,0 +1,24 @@
using BLHX.Server.Common.Proto.p15;
namespace BLHX.Server.Game.Handlers
{
internal static class P15
{
}
static class P15ConnectionNotifyExtensions
{
public static void NotifyBagData(this Connection connection)
{
connection.Send(new Sc15001()
{
ItemLists = [
new Iteminfo() { Id = 20001, Count = 5 },
new Iteminfo() { Id = 15003, Count = 10 },
new Iteminfo() { Id = 50002, Count = 10 },
new Iteminfo() { Id = 50001, Count = 10 }
]
});
}
}
}

View File

@@ -0,0 +1,16 @@
using BLHX.Server.Common.Proto.p16;
namespace BLHX.Server.Game.Handlers
{
internal static class P16
{
}
static class P16ConnectionNotifyExtensions
{
public static void NotifyShopMonthData(this Connection connection)
{
connection.Send(new Sc16200() { Month = (uint)DateTime.Now.Month });
}
}
}

View File

@@ -0,0 +1,22 @@
using BLHX.Server.Common.Proto.p19;
namespace BLHX.Server.Game.Handlers
{
internal static class P19
{
}
static class P19ConnectionNotifyExtensions
{
public static void NotifyDormData(this Connection connection)
{
connection.Send(new Sc19001()
{
Lv = 1,
FloorNum = 1,
ExpPos = 2,
LoadTime = (uint)DateTimeOffset.Now.ToUnixTimeSeconds()
});
}
}
}

View File

@@ -0,0 +1,23 @@
using BLHX.Server.Common.Proto.p22;
namespace BLHX.Server.Game.Handlers
{
internal static class P22
{
}
static class P22ConnectionNotifyExtensions
{
public static void NotifyNavalAcademy(this Connection connection)
{
connection.Send(new Sc22001()
{
OilWellLevel = 1,
GoldWellLevel = 1,
ClassLv = 1,
Class = new(),
SkillClassNum = 2
});
}
}
}

View File

@@ -11,4 +11,11 @@ namespace BLHX.Server.Game.Handlers
connection.Send(new Sc26102());
}
}
static class P26ConnectionNotifyExtensions
{
public static void NotifyGameRoom(this Connection connection)
{
connection.Send(new Sc26120());
}
}
}

View File

@@ -6,15 +6,15 @@ using System.Reflection;
namespace BLHX.Server.Game
{
readonly struct Packet
struct Packet
{
public const int LENGTH_SIZE = 2;
public const int HEADER_SIZE = 5;
public readonly ushort length;
public readonly byte flag;
public readonly Command command;
public readonly ushort id;
public readonly byte[] bytes;
public ushort length;
public byte flag;
public Command command;
public ushort id;
public byte[] bytes;
public Packet(byte[] recv)
{
@@ -26,7 +26,7 @@ namespace BLHX.Server.Game
Array.Copy(recv, HEADER_SIZE + LENGTH_SIZE, bytes, 0, length - HEADER_SIZE);
}
public T Decode<T>() where T : IExtensible => Serializer.Deserialize<T>(bytes.AsSpan());
public readonly T Decode<T>() where T : IExtensible => Serializer.Deserialize<T>(bytes.AsSpan());
}
static class PacketFactory