2023-11-12 01:58:59 +00:00
|
|
|
|
using AscNet.Common.MsgPack;
|
2023-11-11 07:28:21 +00:00
|
|
|
|
using AscNet.Common.Util;
|
|
|
|
|
using AscNet.Table.share.fuben;
|
2023-10-14 17:16:45 +00:00
|
|
|
|
using MessagePack;
|
|
|
|
|
|
|
|
|
|
namespace AscNet.GameServer.Handlers
|
|
|
|
|
{
|
2023-11-12 01:58:59 +00:00
|
|
|
|
[MessagePackObject(true)]
|
|
|
|
|
public class Operation
|
|
|
|
|
{
|
|
|
|
|
public bool? MoveOperated { get; set; }
|
|
|
|
|
public int MoveOperation { get; set; }
|
|
|
|
|
public int CameraRotationX { get; set; }
|
|
|
|
|
public int CameraRotationY { get; set; }
|
|
|
|
|
public int CameraInput { get; set; }
|
|
|
|
|
public long IncId { get; set; }
|
|
|
|
|
public int[] ClickOperation { get; set; }
|
|
|
|
|
public int[] SpecialOperation { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
2023-10-14 17:16:45 +00:00
|
|
|
|
[MessagePackObject(true)]
|
|
|
|
|
public class NpcHp
|
|
|
|
|
{
|
|
|
|
|
public int CharacterId { get; set; }
|
|
|
|
|
public int NpcId { get; set; }
|
|
|
|
|
public int Type { get; set; }
|
|
|
|
|
public int Level { get; set; }
|
|
|
|
|
public List<int> BuffIds { get; set; }
|
2023-11-12 01:58:59 +00:00
|
|
|
|
public Dictionary<int, dynamic> AttrTable { get; set; }
|
2023-10-14 17:16:45 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[MessagePackObject(true)]
|
2023-11-12 01:58:59 +00:00
|
|
|
|
public partial class NpcDpsTable
|
2023-10-14 17:16:45 +00:00
|
|
|
|
{
|
|
|
|
|
public int Value { get; set; }
|
|
|
|
|
public int MaxValue { get; set; }
|
|
|
|
|
public int RoleId { get; set; }
|
|
|
|
|
public int NpcId { get; set; }
|
|
|
|
|
public int CharacterId { get; set; }
|
|
|
|
|
public int DamageTotal { get; set; }
|
|
|
|
|
public int DamageNormal { get; set; }
|
2023-11-12 01:58:59 +00:00
|
|
|
|
public List<int> DamageMagic { get; set; } = new();
|
2023-10-14 17:16:45 +00:00
|
|
|
|
public int BreakEndure { get; set; }
|
|
|
|
|
public int Cure { get; set; }
|
|
|
|
|
public int Hurt { get; set; }
|
|
|
|
|
public int Type { get; set; }
|
|
|
|
|
public int Level { get; set; }
|
2023-11-12 01:58:59 +00:00
|
|
|
|
public List<int> BuffIds { get; set; } = new();
|
2023-10-14 17:16:45 +00:00
|
|
|
|
public dynamic AttrTable { get; set; }
|
|
|
|
|
}
|
2023-11-12 01:58:59 +00:00
|
|
|
|
|
2023-10-14 17:16:45 +00:00
|
|
|
|
[MessagePackObject(true)]
|
|
|
|
|
public class FightSettleResult
|
|
|
|
|
{
|
|
|
|
|
public bool IsWin { get; set; }
|
|
|
|
|
public bool IsForceExit { get; set; }
|
|
|
|
|
public int StageId { get; set; }
|
|
|
|
|
public int StageLevel { get; set; }
|
2023-11-12 01:58:59 +00:00
|
|
|
|
public long FightId { get; set; }
|
2023-10-14 17:16:45 +00:00
|
|
|
|
public int RebootCount { get; set; }
|
|
|
|
|
public int AddStars { get; set; }
|
2023-11-12 01:58:59 +00:00
|
|
|
|
public long StartFrame { get; set; }
|
|
|
|
|
public long SettleFrame { get; set; }
|
|
|
|
|
public long PauseFrame { get; set; }
|
|
|
|
|
public long ExSkillPauseFrame { get; set; }
|
|
|
|
|
public long SettleCode { get; set; }
|
2023-10-14 17:16:45 +00:00
|
|
|
|
public int DodgeTimes { get; set; }
|
|
|
|
|
public int NormalAttackTimes { get; set; }
|
|
|
|
|
public int ConsumeBallTimes { get; set; }
|
|
|
|
|
public int StuntSkillTimes { get; set; }
|
|
|
|
|
public int PauseTimes { get; set; }
|
|
|
|
|
public int HighestCombo { get; set; }
|
|
|
|
|
public int DamagedTimes { get; set; }
|
|
|
|
|
public int MatrixTimes { get; set; }
|
2023-11-12 01:58:59 +00:00
|
|
|
|
public long HighestDamage { get; set; }
|
|
|
|
|
public long TotalDamage { get; set; }
|
|
|
|
|
public long TotalDamaged { get; set; }
|
|
|
|
|
public long TotalCure { get; set; }
|
|
|
|
|
public long[] PlayerIds { get; set; }
|
|
|
|
|
public dynamic[] PlayerData { get; set; }
|
|
|
|
|
public dynamic? IntToIntRecord { get; set; }
|
|
|
|
|
public dynamic? StringToIntRecord { get; set; }
|
|
|
|
|
public Dictionary<long, Operation> Operations { get; set; }
|
|
|
|
|
public long[] Codes { get; set; }
|
|
|
|
|
public long LeftTime { get; set; }
|
2023-10-14 17:16:45 +00:00
|
|
|
|
public Dictionary<int, NpcHp> NpcHpInfo { get; set; }
|
2023-11-12 01:58:59 +00:00
|
|
|
|
public Dictionary<int, NpcDpsTable> NpcDpsTable { get; set; }
|
|
|
|
|
public dynamic[] EventSet { get; set; }
|
|
|
|
|
public long DeathTotalMyTeam { get; set; }
|
|
|
|
|
public long DeathTotalEnemy { get; set; }
|
|
|
|
|
public Dictionary<int, int> DeathRecord { get; set; } = new();
|
|
|
|
|
public dynamic[] GroupDropDatas { get; set; }
|
|
|
|
|
public dynamic? EpisodeFightResults { get; set; }
|
|
|
|
|
public dynamic? CustomData { get; set; }
|
2023-10-14 17:16:45 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[MessagePackObject(true)]
|
|
|
|
|
public class FightSettleRequest
|
|
|
|
|
{
|
|
|
|
|
public FightSettleResult Result { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
internal class FightModule
|
|
|
|
|
{
|
|
|
|
|
[RequestPacketHandler("PreFightRequest")]
|
|
|
|
|
public static void PreFightRequestHandler(Session session, Packet.Request packet)
|
|
|
|
|
{
|
|
|
|
|
PreFightRequest req = MessagePackSerializer.Deserialize<PreFightRequest>(packet.Content);
|
2023-10-14 17:34:14 +00:00
|
|
|
|
|
2023-11-11 07:28:21 +00:00
|
|
|
|
StageTable? stageTable = StageTableReader.Instance.FromStageId((int)req.PreFightData.StageId);
|
|
|
|
|
if (stageTable is null)
|
|
|
|
|
{
|
|
|
|
|
// FubenManagerCheckPreFightStageInfoNotFound
|
|
|
|
|
session.SendResponse(new PreFightResponse() { Code = 20003012 }, packet.Id);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PreFightResponse rsp = new()
|
|
|
|
|
{
|
|
|
|
|
Code = 0,
|
|
|
|
|
FightData = new()
|
|
|
|
|
{
|
|
|
|
|
Online = false,
|
|
|
|
|
FightId = req.PreFightData.StageId + (uint)Random.Shared.NextInt64(0, uint.MaxValue - req.PreFightData.StageId),
|
|
|
|
|
OnlineMode = 0,
|
|
|
|
|
Seed = (uint)Random.Shared.NextInt64(0, uint.MaxValue),
|
|
|
|
|
StageId = req.PreFightData.StageId,
|
|
|
|
|
RebootId = Miscs.ParseIntOr(stageTable.RebootId, 0),
|
|
|
|
|
PassTimeLimit = Miscs.ParseIntOr(stageTable.PassTimeLimit, 300),
|
|
|
|
|
StarsMark = 0
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
rsp.FightData.RoleData.Add(new()
|
|
|
|
|
{
|
|
|
|
|
Id = (uint)session.player.PlayerData.Id,
|
|
|
|
|
Camp = 1,
|
|
|
|
|
Name = session.player.PlayerData.Name,
|
|
|
|
|
IsRobot = false,
|
|
|
|
|
NpcData = new()
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < req.PreFightData.CardIds.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
uint cardId = req.PreFightData.CardIds[i];
|
|
|
|
|
var characterData = session.character.Characters.FirstOrDefault(x => x.Id == cardId);
|
|
|
|
|
if (characterData is null)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
rsp.FightData.RoleData.First(x => x.Id == session.player.PlayerData.Id).NpcData.Add(i, new
|
|
|
|
|
{
|
|
|
|
|
Character = characterData,
|
|
|
|
|
Equips = session.character.Equips.Where(x => x.CharacterId == cardId)
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2023-10-14 17:34:14 +00:00
|
|
|
|
session.SendResponse(rsp, packet.Id);
|
2023-10-14 17:16:45 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[RequestPacketHandler("TeamSetTeamRequest")]
|
|
|
|
|
public static void HandleTeamSetTeamRequestHandler(Session session, Packet.Request packet)
|
|
|
|
|
{
|
|
|
|
|
session.SendResponse(new TeamSetTeamResponse(), packet.Id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[RequestPacketHandler("FightSettleRequest")]
|
|
|
|
|
public static void FightSettleRequestHandler(Session session, Packet.Request packet)
|
|
|
|
|
{
|
|
|
|
|
FightSettleRequest req = MessagePackSerializer.Deserialize<FightSettleRequest>(packet.Content);
|
|
|
|
|
|
|
|
|
|
session.SendPush("NotifyStageData", MessagePackSerializer.ConvertFromJson($"{{\"StageList\": [{{\"StageId\": {req.Result.StageId}, \"StarsMark\": 7, \"Passed\": true, \"PassTimesToday\": 1, \"PassTimesTotal\": 2, \"BuyCount\": 0, \"Score\": 0, \"LastPassTime\": {DateTimeOffset.UtcNow.ToUnixTimeSeconds()}, \"RefreshTime\": {DateTimeOffset.UtcNow.ToUnixTimeSeconds()}, \"CreateTime\": 1626546618, \"BestRecordTime\": 17, \"LastRecordTime\": 17, \"BestCardIds\": [1021001, 1031003, 1051001], \"LastCardIds\": [1021001, 1031003, 1051001]}}]}}"));
|
2023-11-12 01:58:59 +00:00
|
|
|
|
session.SendResponse(MessagePackSerializer.Deserialize<FightSettleResponse>(MessagePackSerializer.ConvertFromJson($"{{\"Code\": 0, \"Settle\": {{\"IsWin\": true, \"StageId\": {req.Result.StageId}, \"StarsMark\": 7, \"RewardGoodsList\": [{{\"RewardType\": 1, \"TemplateId\": 1, \"Count\": 1947, \"Level\": 0, \"Quality\": 0, \"Grade\": 0, \"Breakthrough\": 0, \"ConvertFrom\": 0, \"Id\": 0}}, {{\"RewardType\": 1, \"TemplateId\": 30011, \"Count\": 1, \"Level\": 0, \"Quality\": 0, \"Grade\": 0, \"Breakthrough\": 0, \"ConvertFrom\": 0, \"Id\": 0}}, {{\"RewardType\": 1, \"TemplateId\": 30011, \"Count\": 1, \"Level\": 0, \"Quality\": 0, \"Grade\": 0, \"Breakthrough\": 0, \"ConvertFrom\": 0, \"Id\": 0}}, {{\"RewardType\": 3, \"TemplateId\": 3052001, \"Count\": 1, \"Level\": 1, \"Quality\": 0, \"Grade\": 0, \"Breakthrough\": 0, \"ConvertFrom\": 0, \"Id\": 0}}, {{\"RewardType\": 3, \"TemplateId\": 3034002, \"Count\": 1, \"Level\": 1, \"Quality\": 0, \"Grade\": 0, \"Breakthrough\": 0, \"ConvertFrom\": 0, \"Id\": 0}}], \"LeftTime\": 282, \"NpcHpInfo\": {{\"9\": {{\"CharacterId\": 0, \"NpcId\": 91030, \"Type\": 4, \"Level\": 7, \"BuffIds\": [9003, 900007, 900050, 701022, 900011, 900051, 910300, 715531, 700053, 715075, 700007, 900080, 700045, 100062, 700030, 700029, 710076, 700027, 700215, 700028], \"AttrTable\": {{\"1\": {{\"Value\": 1, \"MaxValue\": 751}}, \"2\": {{\"Value\": 0, \"MaxValue\": 100}}, \"3\": {{\"Value\": 84, \"MaxValue\": 84}}, \"4\": {{\"Value\": 84, \"MaxValue\": 84}}, \"5\": {{\"Value\": 418, \"MaxValue\": 418}}, \"11\": {{\"Value\": 50, \"MaxValue\": 50}}, \"12\": {{\"Value\": 50, \"MaxValue\": 50}}, \"13\": {{\"Value\": 50, \"MaxValue\": 50}}, \"14\": {{\"Value\": 50, \"MaxValue\": 50}}, \"15\": {{\"Value\": 50, \"MaxValue\": 50}}, \"23\": {{\"Value\": 31, \"MaxValue\": 31}}, \"24\": {{\"Value\": 37, \"MaxValue\": 37}}, \"32\": {{\"Value\": 30, \"MaxValue\": 30}}, \"34\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"35\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"36\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"37\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 1, \"MaxValue\": 1}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}}}}}, \"10\": {{\"CharacterId\": 0, \"NpcId\": 92090, \"Type\": 4, \"Level\": 7, \"BuffIds\": [9009, 900007, 900050, 900055, 900011, 900051, 900072, 715531, 700053, 715075, 700007, 900080, 700028, 700045, 100062, 700030, 700029, 701022, 710076, 700027, 700215], \"AttrTable\": {{\"1\": {{\"Value\": 1, \"MaxValue\": 301}}, \"2\": {{\"Value\": 0, \"MaxValue\": 100}}, \"3\": {{\"Value\": 84, \"MaxValue\": 84}}, \"4\": {{\"Value\": 84, \"MaxValue\": 84}}, \"5\": {{\"Value\": 418, \"MaxValue\": 418}}, \"11\": {{\"Value\": 50, \"MaxValue\": 50}}, \"12\": {{\"Value\": 50, \"MaxValue\": 50}}, \"13\": {{\"Value\": 50, \"MaxValue\": 50}}, \"14\": {{\"Value\": 50, \"MaxValue\": 50}}, \"15\": {{\"Value\": 50, \"MaxValue\": 50}}, \"23\": {{\"Value\": 31, \"MaxValue\": 31}}, \"24\": {{\"Value\": 37, \"MaxValue\": 37}}, \"32\": {{\"Value\": 30, \"MaxValue\": 30}}, \"34\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"35\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"36\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"37\": {{\"Value\": 2030, \"MaxValue\": 2030}}, \"40\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"41\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"42\": {{\"Value\": 10000, \"MaxValue\": 10000}}, \"44\": {{\"Value\": 1, \"MaxValue\": 1}}, \"46\": {{\"Value\": 20000, \"MaxValue\": 20000}}, \"54\": {{\"Value\": 1000, \"MaxValue\": 1000}}, \"68\": {{\"Value\": 99, \"MaxValue\": 99}}, \"74\": {{\"Value\": 349, \"MaxValue\": 349}}}}}}, \"11\": {{\"CharacterId\": 0, \"NpcId\": 92090, \"Type\": 4, \"Level\": 7, \"BuffIds\": [9009, 900007, 900050, 900072, 900011, 900051, 700028, 715531
|
2023-10-14 17:16:45 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|