mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 15:44:01 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bdb4ee3d51 |
@@ -1,4 +1,4 @@
|
|||||||
using Google.Protobuf;
|
using Google.Protobuf;
|
||||||
using MikuSB.Data;
|
using MikuSB.Data;
|
||||||
using MikuSB.Database;
|
using MikuSB.Database;
|
||||||
using MikuSB.Database.Account;
|
using MikuSB.Database.Account;
|
||||||
@@ -230,6 +230,11 @@ public class PlayerInstance(PlayerGameData data)
|
|||||||
proto.Attrs[ToShiftedAttrKey(gid, sid)] = val;
|
proto.Attrs[ToShiftedAttrKey(gid, sid)] = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var x in Data.StrAttrs)
|
||||||
|
{
|
||||||
|
proto.StrAttrs[ToShiftedAttrKey(x.Gid, x.Sid)] = x.Val;
|
||||||
|
}
|
||||||
|
|
||||||
proto.ShowItems.AddRange(Data.ShowItems);
|
proto.ShowItems.AddRange(Data.ShowItems);
|
||||||
|
|
||||||
return proto;
|
return proto;
|
||||||
@@ -251,6 +256,22 @@ public class PlayerInstance(PlayerGameData data)
|
|||||||
Data.ShowItems[index - 1] = itemId;
|
Data.ShowItems[index - 1] = itemId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetStrAttr(uint gid, uint sid, string value)
|
||||||
|
{
|
||||||
|
var attr = Data.StrAttrs.FirstOrDefault(x => x.Gid == gid && x.Sid == sid);
|
||||||
|
if (attr == null)
|
||||||
|
{
|
||||||
|
attr = new PlayerStrAttr
|
||||||
|
{
|
||||||
|
Gid = gid,
|
||||||
|
Sid = sid
|
||||||
|
};
|
||||||
|
Data.StrAttrs.Add(attr);
|
||||||
|
}
|
||||||
|
|
||||||
|
attr.Val = value;
|
||||||
|
}
|
||||||
|
|
||||||
public uint ToPackedAttrKey(uint gid, uint sid)
|
public uint ToPackedAttrKey(uint gid, uint sid)
|
||||||
{
|
{
|
||||||
if (gid == 0)
|
if (gid == 0)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using MikuSB.Database;
|
||||||
using MikuSB.Enums.Player;
|
using MikuSB.Enums.Player;
|
||||||
using MikuSB.Proto;
|
using MikuSB.Proto;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
@@ -22,6 +23,7 @@ public class PlayerSetting_ChangeShowCard : ICallGSHandler
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
player.SetShowItem((int)ProfileShowItemTypeEnum.SHOWITEM_GIRL, card.Guid);
|
player.SetShowItem((int)ProfileShowItemTypeEnum.SHOWITEM_GIRL, card.Guid);
|
||||||
|
DatabaseHelper.SaveDatabaseType(player.Data);
|
||||||
var sync = new NtfSyncPlayer();
|
var sync = new NtfSyncPlayer();
|
||||||
sync.ShowItems.AddRange(player.Data.ShowItems);
|
sync.ShowItems.AddRange(player.Data.ShowItems);
|
||||||
await CallGSRouter.SendScript(connection, "PlayerSetting_ChangeShowCard", "{}", sync);
|
await CallGSRouter.SendScript(connection, "PlayerSetting_ChangeShowCard", "{}", sync);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using MikuSB.Enums.Player;
|
using MikuSB.Database;
|
||||||
|
using MikuSB.Enums.Player;
|
||||||
using MikuSB.Proto;
|
using MikuSB.Proto;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
@@ -35,7 +36,7 @@ public class PlayerSetting_SetProfileFace : ICallGSHandler
|
|||||||
}
|
}
|
||||||
player.SetShowItem((int)ProfileShowItemTypeEnum.SHOWITEM_FRAME, item.UniqueId);
|
player.SetShowItem((int)ProfileShowItemTypeEnum.SHOWITEM_FRAME, item.UniqueId);
|
||||||
}
|
}
|
||||||
|
DatabaseHelper.SaveDatabaseType(player.Data);
|
||||||
var sync = new NtfSyncPlayer();
|
var sync = new NtfSyncPlayer();
|
||||||
sync.ShowItems.AddRange(player.Data.ShowItems);
|
sync.ShowItems.AddRange(player.Data.ShowItems);
|
||||||
await CallGSRouter.SendScript(connection, "PlayerSetting_SetProfileFace", "null", sync);
|
await CallGSRouter.SendScript(connection, "PlayerSetting_SetProfileFace", "null", sync);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using MikuSB.Enums.Player;
|
using MikuSB.Database;
|
||||||
|
using MikuSB.Enums.Player;
|
||||||
using MikuSB.Proto;
|
using MikuSB.Proto;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
@@ -30,6 +31,8 @@ public class PlayerSetting_SetShowBadge : ICallGSHandler
|
|||||||
player.SetShowItem((int)slots[i], uniqueId);
|
player.SetShowItem((int)slots[i], uniqueId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DatabaseHelper.SaveDatabaseType(player.Data);
|
||||||
|
|
||||||
var sync = new NtfSyncPlayer();
|
var sync = new NtfSyncPlayer();
|
||||||
sync.ShowItems.AddRange(player.Data.ShowItems);
|
sync.ShowItems.AddRange(player.Data.ShowItems);
|
||||||
await CallGSRouter.SendScript(connection, "PlayerSetting_SetShowBadge", "null", sync);
|
await CallGSRouter.SendScript(connection, "PlayerSetting_SetShowBadge", "null", sync);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using MikuSB.Enums.Player;
|
using MikuSB.Database;
|
||||||
|
using MikuSB.Enums.Player;
|
||||||
using MikuSB.Proto;
|
using MikuSB.Proto;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
@@ -23,6 +24,8 @@ public class PlayerSetting_SetShowBubble : ICallGSHandler
|
|||||||
}
|
}
|
||||||
|
|
||||||
player.SetShowItem((int)ProfileShowItemTypeEnum.SHOWITEM_BUBBLE, item.UniqueId);
|
player.SetShowItem((int)ProfileShowItemTypeEnum.SHOWITEM_BUBBLE, item.UniqueId);
|
||||||
|
DatabaseHelper.SaveDatabaseType(player.Data);
|
||||||
|
|
||||||
var sync = new NtfSyncPlayer();
|
var sync = new NtfSyncPlayer();
|
||||||
sync.ShowItems.AddRange(player.Data.ShowItems);
|
sync.ShowItems.AddRange(player.Data.ShowItems);
|
||||||
await CallGSRouter.SendScript(connection, "PlayerSetting_SetShowBubble", "null", sync);
|
await CallGSRouter.SendScript(connection, "PlayerSetting_SetShowBubble", "null", sync);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using MikuSB.Enums.Player;
|
using MikuSB.Database;
|
||||||
|
using MikuSB.Enums.Player;
|
||||||
using MikuSB.Proto;
|
using MikuSB.Proto;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
@@ -23,6 +24,8 @@ public class PlayerSetting_SetShowCover : ICallGSHandler
|
|||||||
}
|
}
|
||||||
|
|
||||||
player.SetShowItem((int)ProfileShowItemTypeEnum.SHOWITEM_COVER, item.UniqueId);
|
player.SetShowItem((int)ProfileShowItemTypeEnum.SHOWITEM_COVER, item.UniqueId);
|
||||||
|
DatabaseHelper.SaveDatabaseType(player.Data);
|
||||||
|
|
||||||
var sync = new NtfSyncPlayer();
|
var sync = new NtfSyncPlayer();
|
||||||
sync.ShowItems.AddRange(player.Data.ShowItems);
|
sync.ShowItems.AddRange(player.Data.ShowItems);
|
||||||
await CallGSRouter.SendScript(connection, "PlayerSetting_SetShowCover", "null", sync);
|
await CallGSRouter.SendScript(connection, "PlayerSetting_SetShowCover", "null", sync);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using MikuSB.Enums.Player;
|
using MikuSB.Database;
|
||||||
|
using MikuSB.Enums.Player;
|
||||||
using MikuSB.Proto;
|
using MikuSB.Proto;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
@@ -23,6 +24,8 @@ public class PlayerSetting_SetShowNameCard : ICallGSHandler
|
|||||||
}
|
}
|
||||||
|
|
||||||
player.SetShowItem((int)ProfileShowItemTypeEnum.SHOWITEM_NAMECARD, item.UniqueId);
|
player.SetShowItem((int)ProfileShowItemTypeEnum.SHOWITEM_NAMECARD, item.UniqueId);
|
||||||
|
DatabaseHelper.SaveDatabaseType(player.Data);
|
||||||
|
|
||||||
var sync = new NtfSyncPlayer();
|
var sync = new NtfSyncPlayer();
|
||||||
sync.ShowItems.AddRange(player.Data.ShowItems);
|
sync.ShowItems.AddRange(player.Data.ShowItems);
|
||||||
await CallGSRouter.SendScript(connection, "PlayerSetting_SetShowNameCard", "null", sync);
|
await CallGSRouter.SendScript(connection, "PlayerSetting_SetShowNameCard", "null", sync);
|
||||||
|
|||||||
39
GameServer/Server/CallGS/Handlers/Misc/SettingChange.cs
Normal file
39
GameServer/Server/CallGS/Handlers/Misc/SettingChange.cs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
using MikuSB.Proto;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace MikuSB.GameServer.Server.CallGS.Handlers.Misc;
|
||||||
|
|
||||||
|
[CallGSApi("SettingChange")]
|
||||||
|
public class SettingChange : ICallGSHandler
|
||||||
|
{
|
||||||
|
private const uint PlayerSettingGid = 44;
|
||||||
|
|
||||||
|
public async Task Handle(Connection connection, string param, ushort seqNo)
|
||||||
|
{
|
||||||
|
var changes = JsonSerializer.Deserialize<List<SettingChangeParam>>(param) ?? [];
|
||||||
|
var player = connection.Player!;
|
||||||
|
var sync = new NtfSyncPlayer();
|
||||||
|
|
||||||
|
foreach (var change in changes)
|
||||||
|
{
|
||||||
|
var value = player.Data.StrAttrs
|
||||||
|
.FirstOrDefault(x => x.Gid == PlayerSettingGid && x.Sid == change.Id)?
|
||||||
|
.Val;
|
||||||
|
|
||||||
|
if (value == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sync.CustomStr[player.ToShiftedAttrKey(PlayerSettingGid, change.Id)] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sync.CustomStr.Count > 0)
|
||||||
|
await connection.SendPacket(CmdIds.NtfSyncAttr, sync);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed class SettingChangeParam
|
||||||
|
{
|
||||||
|
[JsonPropertyName("id")]
|
||||||
|
public uint Id { get; set; }
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using MikuSB.Database.Player;
|
using MikuSB.Database;
|
||||||
|
using MikuSB.Database.Player;
|
||||||
using MikuSB.Proto;
|
using MikuSB.Proto;
|
||||||
|
|
||||||
namespace MikuSB.GameServer.Server.Packet.Recv.Login;
|
namespace MikuSB.GameServer.Server.Packet.Recv.Login;
|
||||||
@@ -12,7 +13,11 @@ public class HandlerNtfSetAttr : Handler
|
|||||||
var player = connection.Player!;
|
var player = connection.Player!;
|
||||||
var attr = player.Data.Attrs
|
var attr = player.Data.Attrs
|
||||||
.FirstOrDefault(x => x.Gid == req.Gid && x.Sid == req.Sid);
|
.FirstOrDefault(x => x.Gid == req.Gid && x.Sid == req.Sid);
|
||||||
if (attr != null) attr.Val = req.Val;
|
|
||||||
|
if (attr != null)
|
||||||
|
{
|
||||||
|
attr.Val = req.Val;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.Data.Attrs.Add(new PlayerAttr
|
player.Data.Attrs.Add(new PlayerAttr
|
||||||
@@ -22,6 +27,7 @@ public class HandlerNtfSetAttr : Handler
|
|||||||
Val = req.Val
|
Val = req.Val
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
DatabaseHelper.SaveDatabaseType(player.Data);
|
||||||
await player.OnHeartBeat();
|
await player.OnHeartBeat();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
19
GameServer/Server/Packet/Recv/Player/HandlerNtfSetStrAttr.cs
Normal file
19
GameServer/Server/Packet/Recv/Player/HandlerNtfSetStrAttr.cs
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
using MikuSB.Database;
|
||||||
|
using MikuSB.Proto;
|
||||||
|
|
||||||
|
namespace MikuSB.GameServer.Server.Packet.Recv.Login;
|
||||||
|
|
||||||
|
[Opcode(CmdIds.NtfSetStrAttr)]
|
||||||
|
public class HandlerNtfSetStrAttr : Handler
|
||||||
|
{
|
||||||
|
public override async Task OnHandle(Connection connection, byte[] data, ushort seqNo)
|
||||||
|
{
|
||||||
|
var req = NtfSetStrAttr.Parser.ParseFrom(data);
|
||||||
|
var player = connection.Player!;
|
||||||
|
|
||||||
|
player.SetStrAttr(req.Gid, req.Sid, req.Val);
|
||||||
|
DatabaseHelper.SaveDatabaseType(player.Data);
|
||||||
|
|
||||||
|
await player.OnHeartBeat();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1 +1 @@
|
|||||||
v=2.0
|
v=2.1
|
||||||
Reference in New Issue
Block a user