mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-12 23:14:34 +01:00
Fix add slots in synchro device. (#49)
This commit is contained in:
39
EpinelPS/LobbyServer/Character/SynchroAddSlotByItem.cs
Normal file
39
EpinelPS/LobbyServer/Character/SynchroAddSlotByItem.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using EpinelPS.Database;
|
||||
using EpinelPS.Utils;
|
||||
|
||||
namespace EpinelPS.LobbyServer.Character
|
||||
{
|
||||
[PacketPath("/character/synchrodevice/addslotbyitem")]
|
||||
public class SynchroAddSlotByItem : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
// Broken protocol so we didn't validate request data.
|
||||
// May fix later.
|
||||
ReqSynchroAddSlot req = await ReadData<ReqSynchroAddSlot>();
|
||||
|
||||
User user = GetUser();
|
||||
ResSynchroAddSlot response = new();
|
||||
|
||||
NetSynchroSlot newSlot = new()
|
||||
{
|
||||
Csn = 0,
|
||||
Slot = user.SynchroSlots.Last().Slot + 1, // any upper bound?
|
||||
AvailableRegisterAt = 0
|
||||
};
|
||||
|
||||
user.SynchroSlots.Add(new SynchroSlot()
|
||||
{
|
||||
Slot = newSlot.Slot,
|
||||
CharacterSerialNumber = newSlot.Csn,
|
||||
AvailableAt = newSlot.AvailableRegisterAt
|
||||
});
|
||||
|
||||
response.Slot = newSlot;
|
||||
|
||||
JsonDb.Save();
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user