mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 12:23:59 +00:00
Keep username changes
This commit is contained in:
@@ -43,6 +43,8 @@ public class HandlerReqLogin : Handler
|
||||
connection.State = SessionStateEnum.WAITING_FOR_LOGIN;
|
||||
var pd = DatabaseHelper.GetInstance<PlayerGameData>(account.Uid);
|
||||
connection.Player = pd == null ? new PlayerInstance(account.Uid) : new PlayerInstance(pd);
|
||||
if (connection.Player.Data.EnsureDisplayName())
|
||||
DatabaseHelper.UpdateInstance(connection.Player.Data);
|
||||
|
||||
connection.DebugFile = Path.Combine(ConfigManager.Config.Path.LogPath, "Debug/", $"{account.Uid}/",
|
||||
$"Debug-{DateTime.Now:yyyy-MM-dd HH-mm-ss}.log");
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using MikuSB.Proto;
|
||||
using Google.Protobuf;
|
||||
using MikuSB.Database;
|
||||
using MikuSB.Proto;
|
||||
|
||||
namespace MikuSB.GameServer.Server.Packet.Recv.Login;
|
||||
|
||||
@@ -7,6 +9,57 @@ public class HandlerReqRename : Handler
|
||||
{
|
||||
public override async Task OnHandle(Connection connection, byte[] data, ushort seqNo)
|
||||
{
|
||||
var player = connection.Player;
|
||||
if (player != null)
|
||||
{
|
||||
var requestedName = ParseDisplayName(data);
|
||||
player.SetDisplayName(requestedName);
|
||||
DatabaseHelper.UpdateInstance(player.Data);
|
||||
await player.OnHeartBeat();
|
||||
}
|
||||
|
||||
await connection.SendPacket(CmdIds.RspRename);
|
||||
}
|
||||
|
||||
private static string? ParseDisplayName(byte[] data)
|
||||
{
|
||||
if (data.Length == 0)
|
||||
return null;
|
||||
|
||||
try
|
||||
{
|
||||
var input = new CodedInputStream(data);
|
||||
while (!input.IsAtEnd)
|
||||
{
|
||||
var tag = input.ReadTag();
|
||||
if (tag == 0)
|
||||
break;
|
||||
|
||||
if (WireFormat.GetTagWireType(tag) == WireFormat.WireType.LengthDelimited)
|
||||
{
|
||||
var value = input.ReadString();
|
||||
if (!string.IsNullOrWhiteSpace(value))
|
||||
return value;
|
||||
}
|
||||
else
|
||||
{
|
||||
input.SkipLastField();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Fall back to raw UTF-8 payload handling below.
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var rawText = System.Text.Encoding.UTF8.GetString(data).Trim('\0', ' ', '\r', '\n', '\t');
|
||||
return string.IsNullOrWhiteSpace(rawText) ? null : rawText;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user