mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 08:04:01 +00:00
can enter 1st story quest
This commit is contained in:
@@ -1,6 +1,4 @@
|
|||||||
using MikuSB.Common.Util;
|
using MikuSB.Util.Extensions;
|
||||||
using MikuSB.Proto;
|
|
||||||
using MikuSB.Util.Extensions;
|
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
|
||||||
namespace MikuSB.Database.Player;
|
namespace MikuSB.Database.Player;
|
||||||
@@ -14,10 +12,63 @@ public class PlayerGameData : BaseDatabaseDataHelper
|
|||||||
public int Exp { get; set; } = 0;
|
public int Exp { get; set; } = 0;
|
||||||
public long RegisterTime { get; set; } = Extensions.GetUnixSec();
|
public long RegisterTime { get; set; } = Extensions.GetUnixSec();
|
||||||
public long LastActiveTime { get; set; }
|
public long LastActiveTime { get; set; }
|
||||||
|
[SugarColumn(IsJson = true)] public List<PlayerAttrs> Attrs { get; set; } = [];
|
||||||
|
|
||||||
public static PlayerGameData? GetPlayerByUid(long uid)
|
public static PlayerGameData? GetPlayerByUid(long uid)
|
||||||
{
|
{
|
||||||
var result = DatabaseHelper.GetInstance<PlayerGameData>((int)uid);
|
var result = DatabaseHelper.GetInstance<PlayerGameData>((int)uid);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Proto.Player ToProto()
|
||||||
|
{
|
||||||
|
var proto = new Proto.Player
|
||||||
|
{
|
||||||
|
Pid = (ulong)Uid,
|
||||||
|
Account = Name,
|
||||||
|
Name = Name,
|
||||||
|
Level = Level,
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var x in Attrs)
|
||||||
|
{
|
||||||
|
uint gid = x.Gid;
|
||||||
|
uint sid = x.Sid;
|
||||||
|
uint val = x.Val;
|
||||||
|
|
||||||
|
if (gid == 0)
|
||||||
|
{
|
||||||
|
proto.Attrs[sid] = val;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
proto.Attrs[ToPackedAttrKey(gid, sid)] = val;
|
||||||
|
proto.Attrs[ToShiftedAttrKey(gid, sid)] = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
return proto;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static uint ToPackedAttrKey(uint gid, uint sid)
|
||||||
|
{
|
||||||
|
if (gid == 0)
|
||||||
|
return sid;
|
||||||
|
|
||||||
|
return (gid * 10000) + sid;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static uint ToShiftedAttrKey(uint gid, uint sid)
|
||||||
|
{
|
||||||
|
if (gid == 0)
|
||||||
|
return sid;
|
||||||
|
|
||||||
|
return (gid << 16) | sid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PlayerAttrs
|
||||||
|
{
|
||||||
|
public uint Gid { get; set; }
|
||||||
|
public uint Sid { get; set; }
|
||||||
|
public uint Val { get; set; }
|
||||||
}
|
}
|
||||||
27
GameServer/Server/Packet/Recv/Player/HandlerNtfSetAttr.cs
Normal file
27
GameServer/Server/Packet/Recv/Player/HandlerNtfSetAttr.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
using MikuSB.Database.Player;
|
||||||
|
using MikuSB.Proto;
|
||||||
|
|
||||||
|
namespace MikuSB.GameServer.Server.Packet.Recv.Login;
|
||||||
|
|
||||||
|
[Opcode(CmdIds.NtfSetAttr)]
|
||||||
|
public class HandlerNtfSetAttr : Handler
|
||||||
|
{
|
||||||
|
public override async Task OnHandle(Connection connection, byte[] data, ushort seqNo)
|
||||||
|
{
|
||||||
|
var req = NtfSetAttr.Parser.ParseFrom(data);
|
||||||
|
var player = connection.Player!;
|
||||||
|
var attr = player.Data.Attrs
|
||||||
|
.FirstOrDefault(x => x.Gid == req.Gid && x.Sid == req.Sid);
|
||||||
|
if (attr != null) attr.Val = req.Val;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player.Data.Attrs.Add(new PlayerAttrs
|
||||||
|
{
|
||||||
|
Gid = req.Gid,
|
||||||
|
Sid = req.Sid,
|
||||||
|
Val = req.Val
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await player.OnHeartBeat();
|
||||||
|
}
|
||||||
|
}
|
||||||
12
GameServer/Server/Packet/Recv/Player/HandlerReqRename.cs
Normal file
12
GameServer/Server/Packet/Recv/Player/HandlerReqRename.cs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
using MikuSB.Proto;
|
||||||
|
|
||||||
|
namespace MikuSB.GameServer.Server.Packet.Recv.Login;
|
||||||
|
|
||||||
|
[Opcode(CmdIds.ReqRename)]
|
||||||
|
public class HandlerReqRename : Handler
|
||||||
|
{
|
||||||
|
public override async Task OnHandle(Connection connection, byte[] data, ushort seqNo)
|
||||||
|
{
|
||||||
|
await connection.SendPacket(CmdIds.RspRename);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,13 +14,7 @@ public class PacketRspLogin : BasePacket
|
|||||||
Timestamp = (uint)Extensions.GetUnixSec(),
|
Timestamp = (uint)Extensions.GetUnixSec(),
|
||||||
WorldChannel = 1,
|
WorldChannel = 1,
|
||||||
AreaId = 1,
|
AreaId = 1,
|
||||||
Data = new Player
|
Data = player.Data.ToProto(),
|
||||||
{
|
|
||||||
Pid = (ulong)player.Data.Uid,
|
|
||||||
Account = player.Data.Name,
|
|
||||||
Name = player.Data.Name,
|
|
||||||
Level = 80
|
|
||||||
},
|
|
||||||
NeedRename = false
|
NeedRename = false
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ public class CmdIds
|
|||||||
public const int RspReconnect = 4;
|
public const int RspReconnect = 4;
|
||||||
public const int ReqRename = 5;
|
public const int ReqRename = 5;
|
||||||
public const int RspRename = 6;
|
public const int RspRename = 6;
|
||||||
public const int ReqCallGs = 7;
|
public const int ReqCallGS = 7;
|
||||||
public const int RspCallGs = 8;
|
public const int RspCallGS = 8;
|
||||||
public const int ReqUseItem = 9;
|
public const int ReqUseItem = 9;
|
||||||
public const int RspUseItem = 10;
|
public const int RspUseItem = 10;
|
||||||
public const int ReqReadMail = 11;
|
public const int ReqReadMail = 11;
|
||||||
|
|||||||
Reference in New Issue
Block a user