sussy 2.9 changes, and finally shard unlock implementation

This commit is contained in:
rfi
2023-12-02 14:28:19 +07:00
parent 228dacb901
commit e69b8541af
11 changed files with 223 additions and 21 deletions

View File

@@ -22,11 +22,85 @@ namespace AscNet.GameServer.Handlers
{
public int Code;
}
[MessagePackObject(true)]
public class CharacterExchangeRequest
{
public int TemplateId;
}
[MessagePackObject(true)]
public class CharacterExchangeResponse
{
public int Code;
}
[MessagePackObject(true)]
public class FashionSyncNotify
{
public List<FashionList> FashionList = new();
}
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
#endregion
internal class CharacterModule
{
[RequestPacketHandler("CharacterExchangeRequest")]
public static void CharacterExchangeRequestHandler(Session session, Packet.Request packet)
{
CharacterExchangeRequest request = packet.Deserialize<CharacterExchangeRequest>();
CharacterTable? characterData = TableReaderV2.Parse<CharacterTable>().FirstOrDefault(x => x.Id == request.TemplateId);
if (characterData is null)
{
CharacterExchangeResponse rsp = new()
{
// CharacterManagerGetCharacterTemplateNotFound
Code = 20009001
};
session.SendResponse(rsp, packet.Id);
return;
}
if (!session.inventory.Items.Any(x => x.Id == characterData.ItemId && x.Count >= 50))
{
CharacterExchangeResponse rsp = new()
{
// ItemCountNotEnough
Code = 20012004
};
session.SendResponse(rsp, packet.Id);
return;
}
NotifyItemDataList notifyItemData = new();
// idk if it's always 50, please investigate later...
notifyItemData.ItemDataList.Add(session.inventory.Do(characterData.ItemId, 50 * -1));
session.SendPush(notifyItemData);
try
{
NotifyEquipDataList notifyEquipData = new();
FashionSyncNotify fashionSync = new();
NotifyCharacterDataList notifyCharacterData = new();
var addRet = session.character.AddCharacter((uint)request.TemplateId);
notifyEquipData.EquipDataList.Add(addRet.Equip);
fashionSync.FashionList.Add(addRet.Fashion);
notifyCharacterData.CharacterDataList.Add(addRet.Character);
session.SendPush(notifyEquipData);
session.SendPush(notifyCharacterData);
}
catch (ServerCodeException ex)
{
CharacterExchangeResponse rsp = new() { Code = ex.Code };
session.SendResponse(rsp, packet.Id);
return;
}
session.SendResponse(new CharacterExchangeResponse(), packet.Id);
}
[RequestPacketHandler("CharacterUpgradeSkillGroupRequest")]
public static void CharacterUpgradeSkillGroupRequestHandler(Session session, Packet.Request packet)
{