mirror of
https://github.com/rafi1212122/BLHX.Server.git
synced 2025-12-12 14:34:39 +01:00
💀 strictly necessary login nitifies
This commit is contained in:
@@ -4,6 +4,7 @@ namespace BLHX.Server.Common.Data;
|
|||||||
|
|
||||||
public static class JSON
|
public static class JSON
|
||||||
{
|
{
|
||||||
|
public static JsonSerializerOptions serializerOptions = new() { IncludeFields = true, WriteIndented = true };
|
||||||
public static string ConfigPath => Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json");
|
public static string ConfigPath => Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json");
|
||||||
public static string ShareConfigPath => Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources\\sharecfgdata\\");
|
public static string ShareConfigPath => Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources\\sharecfgdata\\");
|
||||||
|
|
||||||
@@ -15,22 +16,16 @@ public static class JSON
|
|||||||
Save(path, obj);
|
Save(path, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
return JsonSerializer.Deserialize<T>(File.ReadAllText(path));
|
return JsonSerializer.Deserialize<T>(File.ReadAllText(path), serializerOptions) ?? new T();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Save<T>(string path, T obj)
|
public static void Save<T>(string path, T obj)
|
||||||
{
|
{
|
||||||
File.WriteAllText(path, JsonSerializer.Serialize(obj, new JsonSerializerOptions()
|
File.WriteAllText(path, JsonSerializer.Serialize(obj, serializerOptions));
|
||||||
{
|
|
||||||
WriteIndented = true
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string Stringify<T>(T obj)
|
public static string Stringify<T>(T obj)
|
||||||
{
|
{
|
||||||
return JsonSerializer.Serialize(obj, new JsonSerializerOptions()
|
return JsonSerializer.Serialize(obj, serializerOptions);
|
||||||
{
|
|
||||||
WriteIndented = true
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.Proto;
|
||||||
using BLHX.Server.Common.Utils;
|
using BLHX.Server.Common.Utils;
|
||||||
using BLHX.Server.Game.Handlers;
|
using BLHX.Server.Game.Handlers;
|
||||||
@@ -117,11 +118,35 @@ namespace BLHX.Server.Game
|
|||||||
ns.Write(sendBuf);
|
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()
|
public void InitClientData()
|
||||||
{
|
{
|
||||||
this.NotifyPlayerData();
|
this.NotifyPlayerData();
|
||||||
|
this.NotifyRefluxData();
|
||||||
|
this.NotifyGameRoom();
|
||||||
this.NotifyStatisticsInit();
|
this.NotifyStatisticsInit();
|
||||||
this.NotifyShipData();
|
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")
|
public void SendHttpResponse(string rsp, string type = "text/plain")
|
||||||
|
|||||||
@@ -70,5 +70,10 @@ namespace BLHX.Server.Game.Handlers
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void NotifyRefluxData(this Connection connection)
|
||||||
|
{
|
||||||
|
connection.Send(new Sc11752());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
public static void NotifyFleetData(this Connection connection)
|
||||||
{
|
{
|
||||||
if (connection.player is not null)
|
if (connection.player is not null)
|
||||||
@@ -26,7 +31,10 @@ namespace BLHX.Server.Game.Handlers
|
|||||||
connection.Send(new Sc12101()
|
connection.Send(new Sc12101()
|
||||||
{
|
{
|
||||||
GroupLists = [
|
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 }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
16
BLHX.Server.Game/Handlers/P13.cs
Normal file
16
BLHX.Server.Game/Handlers/P13.cs
Normal 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() });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
BLHX.Server.Game/Handlers/P15.cs
Normal file
24
BLHX.Server.Game/Handlers/P15.cs
Normal 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 }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
16
BLHX.Server.Game/Handlers/P16.cs
Normal file
16
BLHX.Server.Game/Handlers/P16.cs
Normal 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 });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
22
BLHX.Server.Game/Handlers/P19.cs
Normal file
22
BLHX.Server.Game/Handlers/P19.cs
Normal 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()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
BLHX.Server.Game/Handlers/P22.cs
Normal file
23
BLHX.Server.Game/Handlers/P22.cs
Normal 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
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,4 +11,11 @@ namespace BLHX.Server.Game.Handlers
|
|||||||
connection.Send(new Sc26102());
|
connection.Send(new Sc26102());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static class P26ConnectionNotifyExtensions
|
||||||
|
{
|
||||||
|
public static void NotifyGameRoom(this Connection connection)
|
||||||
|
{
|
||||||
|
connection.Send(new Sc26120());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,15 +6,15 @@ using System.Reflection;
|
|||||||
|
|
||||||
namespace BLHX.Server.Game
|
namespace BLHX.Server.Game
|
||||||
{
|
{
|
||||||
readonly struct Packet
|
struct Packet
|
||||||
{
|
{
|
||||||
public const int LENGTH_SIZE = 2;
|
public const int LENGTH_SIZE = 2;
|
||||||
public const int HEADER_SIZE = 5;
|
public const int HEADER_SIZE = 5;
|
||||||
public readonly ushort length;
|
public ushort length;
|
||||||
public readonly byte flag;
|
public byte flag;
|
||||||
public readonly Command command;
|
public Command command;
|
||||||
public readonly ushort id;
|
public ushort id;
|
||||||
public readonly byte[] bytes;
|
public byte[] bytes;
|
||||||
|
|
||||||
public Packet(byte[] recv)
|
public Packet(byte[] recv)
|
||||||
{
|
{
|
||||||
@@ -26,7 +26,7 @@ namespace BLHX.Server.Game
|
|||||||
Array.Copy(recv, HEADER_SIZE + LENGTH_SIZE, bytes, 0, length - HEADER_SIZE);
|
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
|
static class PacketFactory
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using BLHX.Server.Common.Data;
|
using BLHX.Server.Common.Data;
|
||||||
|
using BLHX.Server.Common.Database;
|
||||||
using BLHX.Server.Common.Utils;
|
using BLHX.Server.Common.Utils;
|
||||||
using BLHX.Server.Game;
|
using BLHX.Server.Game;
|
||||||
using BLHX.Server.Sdk;
|
using BLHX.Server.Sdk;
|
||||||
@@ -14,6 +15,8 @@ internal class Program
|
|||||||
Logger.c.Log($"Version {Assembly.GetEntryAssembly()?.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion}");
|
Logger.c.Log($"Version {Assembly.GetEntryAssembly()?.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion}");
|
||||||
Logger.c.Log("Starting...");
|
Logger.c.Log("Starting...");
|
||||||
|
|
||||||
|
// Preload
|
||||||
|
System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(DBManager).TypeHandle);
|
||||||
Config.Load();
|
Config.Load();
|
||||||
if (Config.Instance.Address == "127.0.0.1")
|
if (Config.Instance.Address == "127.0.0.1")
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user