mirror of
https://git.lewd.wtf/PGR/ascnet
synced 2025-12-14 06:34:36 +01:00
sussy 2.9 changes, and finally shard unlock implementation
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -194,6 +194,12 @@ namespace AscNet.GameServer.Handlers
|
||||
session.SendResponse(new TeamSetTeamResponse(), packet.Id);
|
||||
}
|
||||
|
||||
[RequestPacketHandler("EnterChallengeRequest")]
|
||||
public static void HandleEnterChallengeRequestHandler(Session session, Packet.Request packet)
|
||||
{
|
||||
session.SendResponse(new EnterChallengeResponse(), packet.Id);
|
||||
}
|
||||
|
||||
[RequestPacketHandler("FightSettleRequest")]
|
||||
public static void FightSettleRequestHandler(Session session, Packet.Request packet)
|
||||
{
|
||||
|
||||
35
AscNet.GameServer/Handlers/ItemModule.cs
Normal file
35
AscNet.GameServer/Handlers/ItemModule.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using MessagePack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AscNet.GameServer.Handlers
|
||||
{
|
||||
#region MsgPackScheme
|
||||
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||
[MessagePackObject(true)]
|
||||
public class GetAndroidOrIosMoneyCardResponse
|
||||
{
|
||||
public int Code;
|
||||
public int MoneyCard;
|
||||
public int Count;
|
||||
}
|
||||
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||
#endregion
|
||||
|
||||
internal class ItemModule
|
||||
{
|
||||
[RequestPacketHandler("GetAndroidOrIosMoneyCardRequest")]
|
||||
public static void GetAndroidOrIosMoneyCardRequestHandler(Session session, Packet.Request packet)
|
||||
{
|
||||
session.SendResponse(new GetAndroidOrIosMoneyCardResponse()
|
||||
{
|
||||
Code = 0,
|
||||
Count = 0,
|
||||
MoneyCard = 0
|
||||
}, packet.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,17 @@ namespace AscNet.GameServer.Handlers
|
||||
public int Code;
|
||||
}
|
||||
|
||||
[MessagePackObject(true)]
|
||||
public class TouchBoardMutualRequest
|
||||
{
|
||||
public int CharacterId;
|
||||
}
|
||||
|
||||
[MessagePackObject(true)]
|
||||
public class TouchBoardMutualResponse
|
||||
{
|
||||
}
|
||||
|
||||
[MessagePackObject(true)]
|
||||
public class ChangeCommunicationRequest
|
||||
{
|
||||
@@ -51,5 +62,13 @@ namespace AscNet.GameServer.Handlers
|
||||
|
||||
session.SendResponse(new ChangeCommunicationResponse(), packet.Id);
|
||||
}
|
||||
|
||||
[RequestPacketHandler("TouchBoardMutualRequest")]
|
||||
public static void TouchBoardMutualRequestHandler(Session session, Packet.Request packet)
|
||||
{
|
||||
TouchBoardMutualRequest request = MessagePackSerializer.Deserialize<TouchBoardMutualRequest>(packet.Content);
|
||||
|
||||
session.SendResponse(new TouchBoardMutualResponse(), packet.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user