fork from 1.3

This commit is contained in:
moux23333
2024-01-27 21:06:07 +08:00
commit 22fc0b0848
1507 changed files with 24139 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
using FreeSR.Gateserver.Manager.Handlers.Core;
using FreeSR.Gateserver.Network;
using FreeSR.Proto;
internal static class AvatarReqGroup
{
[Handler(CmdType.GetAvatarDataCsReq)]
public static void OnGetAvatarDataCsReq(NetSession session, int cmdId, object data)
{
var request = data as GetAvatarDataCsReq;
var response = new GetAvatarDataScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
IsAll = request.IsGetAll,
AvatarList = new List<Avatar>()
};
int[] characters = new int[] { 8001, 1005, 1003 };
foreach (int id in characters)
{
response.AvatarList.Add(new Avatar
{
BaseAvatarId = id,
Exp = 0,
Level = 1,
Promotion = 0,
Rank = 6,
SkilltreeList = new List<AvatarSkillTree>(),
EquipmentUniqueId = 0
});
}
session.Send(CmdType.GetAvatarDataScRsp, response);
}
}
}

View File

@@ -0,0 +1,7 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
internal static class ChallengeReqGroup
{
// ChallengeReqGroup.
}
}

View File

@@ -0,0 +1,18 @@
namespace FreeSR.Gateserver.Manager.Handlers.Core
{
using FreeSR.Gateserver.Network;
using FreeSR.Proto;
[AttributeUsage(AttributeTargets.Method)]
internal class HandlerAttribute : Attribute
{
public int CmdID { get; }
public HandlerAttribute(CmdType cmdID)
{
this.CmdID = (int)cmdID;
}
public delegate void HandlerDelegate(NetSession session, int cmdId, object data);
}
}

View File

@@ -0,0 +1,343 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
using FreeSR.Gateserver.Manager.Handlers.Core;
using FreeSR.Gateserver.Network;
using FreeSR.Proto;
using static System.Net.WebRequestMethods;
using System.Collections.Generic;
using System.Net.Http.Headers;
using System.ComponentModel.Design;
internal static class GachaReqGroup
{
[Handler(CmdType.GetGachaInfoCsReq)]
public static void OnGetGachaInfoCsReq(NetSession session, int cmdId, object data)
{
var Gacha1List = new List<int>();
session.Send(CmdType.GetGachaInfoScRsp, new GetGachaInfoScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
GachaRandom = 0,
GachaInfoList = new List<GachaInfo>
{
new GachaInfo
{
//ENJHJHKNGOG = "https://webstatic-sea.hoyoverse.com/hkrpg/event/e20211215gacha-v2/index.html?authkey_ver=1&sign_type=2&auth_appid=webview_gacha&win_mode=fullscreen#/log",
Dmdldgldfdj = new List<int>(1208),
//JDMIIMJFAPK = "https://webstatic-sea.hoyoverse.com/hkrpg/event/e20211215gacha-v2/index.html?authkey_ver=1&sign_type=2&auth_appid=webview_gacha&win_mode=fullscreen&gacha_id=ad9815cdf2308104c377aac42c7f0cdd8d&timestamp=1689725163",
Pldioknjpjj = new List<int>{1208, 1110, 1109, 1106},
BeginTime = 1689719400,
EndTime = 4070880000,
GachaId = 2010
}
}
});
}
[Handler(CmdType.DoGachaCsReq)]
public static void OnDoGachaCsReq(NetSession session, int cmdId, object data)
{
var gachaReq = data as DoGachaCsReq;
if (gachaReq.GachaNum == 1)
{
session.Send(CmdType.DoGachaScRsp, new DoGachaScRsp
{
GachaId = gachaReq.GachaId,
Nmaojeiedak = gachaReq.GachaRandom + 1,
GachaNum = gachaReq.GachaNum,
GachaItemList = new List<GachaItem>
{
new GachaItem
{
Item = new List<Item>
{
new Item
{
ItemId = 1107,
Num = 1,
}
}[0],
Dpjjnjflnjm = new List<ItemList>
{
new ItemList
{
List = new List<Item>
{
new Item
{
ItemId = 252,
Num = 40,
}
}
}
}[0]
}
},
});
}
if (gachaReq.GachaNum == 10)
{
session.Send(CmdType.DoGachaScRsp, new DoGachaScRsp
{
GachaId = gachaReq.GachaId,
Nmaojeiedak = gachaReq.GachaRandom + 10,
GachaNum = gachaReq.GachaNum,
GachaItemList = new List<GachaItem>
{
new GachaItem
{
Item = new List<Item>
{
new Item
{
ItemId = 1208,
Num = 1,
}
}[0],
Dpjjnjflnjm = new List<ItemList>
{
new ItemList
{
List = new List<Item>
{
new Item
{
ItemId = 252,
Num = 40,
}
}
}
}[0]
},
new GachaItem
{
Item = new List<Item>
{
new Item
{
ItemId = 1208,
Num = 1,
}
}[0],
Dpjjnjflnjm = new List<ItemList>
{
new ItemList
{
List = new List<Item>
{
new Item
{
ItemId = 252,
Num = 40,
}
}
}
}[0]
},
new GachaItem
{
Item = new List<Item>
{
new Item
{
ItemId = 1208,
Num = 1,
}
}[0],
Dpjjnjflnjm = new List<ItemList>
{
new ItemList
{
List = new List<Item>
{
new Item
{
ItemId = 252,
Num = 40,
}
}
}
}[0]
},
new GachaItem
{
Item = new List<Item>
{
new Item
{
ItemId = 1208,
Num = 1,
}
}[0],
Dpjjnjflnjm = new List<ItemList>
{
new ItemList
{
List = new List<Item>
{
new Item
{
ItemId = 252,
Num = 40,
}
}
}
}[0]
},
new GachaItem
{
Item = new List<Item>
{
new Item
{
ItemId = 1208,
Num = 1,
}
}[0],
Dpjjnjflnjm = new List<ItemList>
{
new ItemList
{
List = new List<Item>
{
new Item
{
ItemId = 252,
Num = 40,
}
}
}
}[0]
},
new GachaItem
{
Item = new List<Item>
{
new Item
{
ItemId = 1208,
Num = 1,
}
}[0],
Dpjjnjflnjm = new List<ItemList>
{
new ItemList
{
List = new List<Item>
{
new Item
{
ItemId = 252,
Num = 40,
}
}
}
}[0]
},
new GachaItem
{
Item = new List<Item>
{
new Item
{
ItemId = 1208,
Num = 1,
}
}[0],
Dpjjnjflnjm = new List<ItemList>
{
new ItemList
{
List = new List<Item>
{
new Item
{
ItemId = 252,
Num = 40,
}
}
}
}[0]
},
new GachaItem
{
Item = new List<Item>
{
new Item
{
ItemId = 1208,
Num = 1,
}
}[0],
Dpjjnjflnjm = new List<ItemList>
{
new ItemList
{
List = new List<Item>
{
new Item
{
ItemId = 252,
Num = 40,
}
}
}
}[0]
},
new GachaItem
{
Item = new List<Item>
{
new Item
{
ItemId = 1208,
Num = 1,
}
}[0],
Dpjjnjflnjm = new List<ItemList>
{
new ItemList
{
List = new List<Item>
{
new Item
{
ItemId = 252,
Num = 40,
}
}
}
}[0]
},
new GachaItem
{
Item = new List<Item>
{
new Item
{
ItemId = 1208,
Num = 1,
}
}[0],
Dpjjnjflnjm = new List<ItemList>
{
new ItemList
{
List = new List<Item>
{
new Item
{
ItemId = 252,
Num = 40,
}
}
}
}[0]
}
},
});
}
}
}
}

View File

@@ -0,0 +1,30 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
using FreeSR.Gateserver.Manager.Handlers.Core;
using FreeSR.Gateserver.Network;
using FreeSR.Proto;
internal static class ItemReqGroup
{
[Handler(CmdType.GetBagCsReq)]
public static void OnGetBagCsReq(NetSession session, int cmdId, object _)
{
session.Send(CmdType.GetBagScRsp, new GetBagScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
MaterialList = new List<Material>
{
new Material
{
Tid = 101,
Num = 10
},
new Material
{
Tid = 102,
Num = 10
}
}
});
}
}
}

View File

@@ -0,0 +1,92 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
using FreeSR.Gateserver.Manager.Handlers.Core;
using FreeSR.Gateserver.Network;
using FreeSR.Proto;
internal static class LineupReqGroup
{
[Handler(CmdType.GetCurLineupDataCsReq)]
public static void OnGetCurLineupDataCsReq(NetSession session, int cmdId, object _)
{
var response = new GetCurLineupDataScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC
};
response.Lineup = new LineupInfo
{
ExtraLineupType = ExtraLineupType.LINEUP_NONE,
Name = "Squad 1",
AvatarList = new List<LineupAvatar>(),
LeaderSlot = 5,
Foafdgjflmc = 5
};
var characters = new int[] { 8001, 1005, 1003 };
foreach (int id in characters)
{
response.Lineup.AvatarList.Add(new LineupAvatar
{
AvatarType = AvatarType.AVATAR_FORMAL_TYPE,
CurHealth = new HealthBarInfo { CurHp = 10000, MaxHp = 10000 },
Sp = 10000,
Satiety = 100,
Id = id,
Slot = response.Lineup.AvatarList.Count
});
}
session.Send(CmdType.GetCurLineupDataScRsp, response);
}
[Handler(CmdType.GetAllLineupDataCsReq)]
public static void OnGetAllLineupDataCsReq(NetSession session, int cmdId, object data)
{
var response = new GetAllLineupDataScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
CurIndex = 0,
LineupList = new List<LineupInfo>()
};
response.LineupList.Add(new LineupInfo
{
ExtraLineupType = ExtraLineupType.LINEUP_NONE,
Name = "Squad 1",
AvatarList = new List<LineupAvatar>(),
Foafdgjflmc = 5,
LeaderSlot = 3
});
var characters = new int[] { 8001, 1005, 1003 };
foreach (int id in characters)
{
response.LineupList[0].AvatarList.Add(new LineupAvatar
{
AvatarType = AvatarType.AVATAR_FORMAL_TYPE,
CurHealth = new HealthBarInfo { CurHp = 10000, MaxHp = 10000 },
Sp = 10000,
Satiety = 100,
Id = id,
Slot = response.LineupList[0].AvatarList.Count
});
}
session.Send(CmdType.GetAllLineupDataScRsp, response);
}
[Handler(CmdType.ChangeLineupLeaderCsReq)]
public static void OnChangeLineupLeaderCsReq(NetSession session, int cmdId, object data)
{
var request = data as ChangeLineupLeaderCsReq;
session.Send(CmdType.ChangeLineupLeaderScRsp, new ChangeLineupLeaderScRsp
{
Slot = request.Slot,
Retcode = Retcode.RETCODE_RET_SUCC
});
}
}
}

View File

@@ -0,0 +1,7 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
internal static class MailReqGroup
{
// MailReqGroup
}
}

View File

@@ -0,0 +1,87 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
using FreeSR.Gateserver.Manager.Handlers.Core;
using FreeSR.Gateserver.Network;
using FreeSR.Proto;
internal static class MissionReqGroup
{
[Handler(CmdType.GetMissionStatusCsReq)]
public static void OnGetMissionStatusCsReq(NetSession session, int cmdId, object data)
{
var request = data as GetMissionStatusCsReq;
GetMissionStatusScRsp response = new GetMissionStatusScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
DisabledMainMissionIdList = new List<int>(),
FinishedMainMissionIdList = new List<int>(),
MissionEventStatusList = new List<Mission>(),
SubMissionStatusList = new List<Mission>(),
UnfinishedMainMissionIdList = new List<int>()
};
response.FinishedMainMissionIdList = new List<int>
{
1000101,
1000112,
1000113,
1000201,
1000202,
1000204,
1000301,
1000401,
1000402,
1000410,
1000510,
1000601,
1010301,
1010302,
1010401,
1010403,
1010701,
1011403,
1010202,
1010902,
1011102,
4010101
};
if (request.MissionEventIdList != null)
{
foreach (int id in request.MissionEventIdList)
{
response.UnfinishedMainMissionIdList.Add(id);
}
}
if (request.SubMissionIdList != null)
{
foreach (int id in request.SubMissionIdList)
{
response.MissionEventStatusList.Add(new Mission()
{
Id = id,
Progress = 0,
Status = MissionStatus.MISSION_FINISH
});
}
}
if (request.MainMissionIdList != null)
{
foreach (int id in request.MainMissionIdList)
{
response.SubMissionStatusList.Add(new Mission()
{
Id = id,
Progress = 0,
Status = MissionStatus.MISSION_FINISH
});
}
}
session.Send(CmdType.GetMissionStatusScRsp, response);
}
}
}

View File

@@ -0,0 +1,41 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
using FreeSR.Gateserver.Manager.Handlers.Core;
using FreeSR.Gateserver.Network;
using FreeSR.Proto;
using System.ComponentModel.Design;
internal static class NPCReqGroup
{
//maybe useless
[Handler(CmdType.GetNpcTakenRewardCsReq)]
public static void OnGetNpcTakenRewardCsReq(NetSession session, int cmdId, object data)
{
var npcRewardReq = data as GetNpcTakenRewardCsReq;
session.Send(CmdType.GetNpcTakenRewardScRsp, new GetNpcTakenRewardScRsp
{
NpcId = npcRewardReq.NpcId,
Retcode = Retcode.RETCODE_RET_SUCC
});
}
[Handler(CmdType.GetFirstTalkByPerformanceNpcCsReq)]
public static void OnGetFirstTalkByPerformanceNpcCsReq(NetSession session, int cmdId, object data)
{
session.Send(CmdType.GetFirstTalkByPerformanceNpcScRsp, new GetFirstTalkByPerformanceNpcScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
NpcMeetStatusList = new List<OCLEPLBNNPA>
{
new OCLEPLBNNPA
{
IsMeet = true,
Jljhobhmaof = 1
},
}
});
}
}
}

View File

@@ -0,0 +1,113 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
using FreeSR.Gateserver.Manager.Handlers.Core;
using FreeSR.Gateserver.Network;
using FreeSR.Proto;
using NLog;
internal static class PlayerReqGroup
{
private static readonly Logger s_log = LogManager.GetCurrentClassLogger();
[Handler(CmdType.PlayerHeartBeatCsReq)]
public static void OnPlayerHeartBeatCsReq(NetSession session, int cmdId, object data)
{
var heartbeatReq = data as PlayerHeartBeatCsReq;
session.Send(CmdType.PlayerHeartBeatScRsp, new PlayerHeartBeatScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
DownloadData = new ClientDownloadData(),
ClientTimeMs = heartbeatReq.ClientTimeMs,
ServerTimeMs = DateTimeOffset.Now.ToUnixTimeMilliseconds()
});
}
[Handler(CmdType.GetHeroBasicTypeInfoCsReq)]
public static void OnGetHeroBasicTypeInfoCsReq(NetSession session, int cmdId, object _)
{
session.Send(CmdType.GetHeroBasicTypeInfoScRsp, new GetHeroBasicTypeInfoScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
Gender = Gender.GenderMan,
BasicTypeInfoList = new List<HeroBasicTypeInfo>
{
new HeroBasicTypeInfo
{
BasicType = HeroBasicType.BoyWarrior,
Rank = 1,
SkillTreeList = new List<AvatarSkillTree>()
}
},
CurBasicType = HeroBasicType.BoyWarrior,
IsPlayerInfoModified = false,
IsGenderModified = false
});
}
[Handler(CmdType.GetBasicInfoCsReq)]
public static void OnGetBasicInfoCsReq(NetSession session, int cmdId, object _)
{
session.Send(CmdType.GetBasicInfoScRsp, new GetBasicInfoScRsp
{
CurDay = 1,
ExchangeTimes = 0,
Retcode = 0,
NextRecoverTime = 2281337,
WeekCocoonFinishedCount = 0
});
}
[Handler(CmdType.PlayerLoginCsReq)]
public static void OnPlayerLoginCsReq(NetSession session, int cmdId, object data)
{
var request = data as PlayerLoginCsReq;
session.Send(CmdType.PlayerLoginScRsp, new PlayerLoginScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
IsNewPlayer = false,
LoginRandom = request.LoginRandom,
Stamina = 100,
ServerTimestampMs = DateTimeOffset.Now.ToUnixTimeSeconds() * 1000,
BasicInfo = new PlayerBasicInfo
{
Nickname = "xeondev",
Level = 30,
Exp = 0,
Stamina = 100,
MCoin = 0,
HCoin = 0,
SCoin = 0,
WorldLevel = 0
}
});
}
[Handler(CmdType.PlayerGetTokenCsReq)]
public static void OnPlayerGetTokenCsReq(NetSession session, int cmdId, object data)
{
var request = data as PlayerGetTokenCsReq;
session.Send(CmdType.PlayerGetTokenScRsp, new PlayerGetTokenScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
Uid = int.Parse(request.AccountUid),
BlackInfo = null,
Msg = null,
SecretKeySeed = 0
});
session.Send(CmdType.BattlePassInfoNotify, new BattlePassInfoNotify
{
Ibkdaabmege = ILGFODEJBBH.BP_TIER_TYPE_PREMIUM_2,
Caajdlolcml = 0,
Ipneaeepcmk = 4,
Okffhjicndl = 0,
Exp = 1000,
Level = 50
});
}
}
}

View File

@@ -0,0 +1,7 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
internal static class QuestReqGroup
{
// QuestReqGroup
}
}

View File

@@ -0,0 +1,45 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
using FreeSR.Gateserver.Manager.Handlers.Core;
using FreeSR.Gateserver.Network;
using FreeSR.Proto;
internal static class SceneReqGroup
{
[Handler(CmdType.GetCurSceneInfoCsReq)]
public static void OnGetCurSceneInfoCsReq(NetSession session, int cmdId, object data)
{
SceneInfo scene = new SceneInfo
{
GameModeType = 1,
Bkmbkahohif = 1,
Admbbnbnibk = 1,
EntryId = 1000101,
PlaneId = 10001,
FloorId = 10001001,
EntityList = new List<SceneEntityInfo>(),
EnvBuffList = new List<BuffInfo>(),
LightenSectionList = new List<int>()
};
scene.EntityList.Add(new SceneEntityInfo
{
EntityId = 0,
GroupId = 0,
InstId = 0,
Motion = new MotionInfo()
{
Pos = new Vector(),
Rot = new Vector()
}
});
session.Send(CmdType.GetCurSceneInfoScRsp, new GetCurSceneInfoScRsp
{
Scene = scene,
Retcode = Retcode.RETCODE_RET_SUCC
});
}
}
}

View File

@@ -0,0 +1,70 @@
namespace FreeSR.Gateserver.Manager.Handlers
{
using FreeSR.Gateserver.Manager.Handlers.Core;
using FreeSR.Gateserver.Network;
using FreeSR.Proto;
using NLog;
internal static class TutorialReqGroup
{
private static readonly Logger s_log = LogManager.GetCurrentClassLogger();
[Handler(CmdType.GetTutorialGuideCsReq)]
public static void OnGetTutorialGuideCsReq(NetSession session, int cmdId, object _)
{
var response = new GetTutorialGuideScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
TutorialGuideList = new List<TutorialGuide>()
};
int[] guides = new int[]
{
1101, 1102, 1104, 1105, 1116, 1117, 2006, 2007, 2101, 2105, 2106, 2107, 3007, 3105, 3106, 4001, 4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 5101, 5102, 5103, 5104, 5105, 6001, 6002, 6003, 6004, 6005, 6006, 6007, 9101, 9102, 9103, 9104, 9105, 9106, 9107, 9108
};
foreach (int id in guides)
{
response.TutorialGuideList.Add(new TutorialGuide
{
Id = id,
Status = TutorialStatus.TUTORIAL_FINISH
});
}
session.Send(CmdType.GetTutorialGuideScRsp, response);
}
[Handler(CmdType.GetTutorialCsReq)]
public static void OnGetTutorialCsReq(NetSession session, int cmdId, object _)
{
int[] completedTutorials = new int[]
{
1001, 1002, 1003, 1004, 1005, 1007, 1008, 1010, 1011,
2001, 2002, 2003, 2004, 2005, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
3001, 3002, 3003, 3004, 3005, 3006,
4002, 4003, 4004, 4005, 4006, 4007, 4008, 4009,
5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012,
7001,
9001, 9002, 9003, 9004, 9005, 9006
};
var response = new GetTutorialScRsp
{
Retcode = Retcode.RETCODE_RET_SUCC,
TutorialList = new List<Tutorial>()
};
foreach (int id in completedTutorials)
{
response.TutorialList.Add(new Tutorial
{
Id = id,
Status = TutorialStatus.TUTORIAL_FINISH
});
}
session.Send(CmdType.GetTutorialScRsp, response);
}
}
}

View File

@@ -0,0 +1,68 @@
namespace FreeSR.Gateserver.Manager
{
using FreeSR.Gateserver.Manager.Handlers.Core;
using FreeSR.Gateserver.Network;
using Nito.AsyncEx;
using NLog;
using System.Collections.Immutable;
using System.Linq.Expressions;
using System.Reflection;
internal static class NotifyManager
{
private static readonly Logger s_log = LogManager.GetCurrentClassLogger();
private static List<Type> s_handlerTypes = new List<Type>();
private static ImmutableDictionary<int, (HandlerAttribute, HandlerAttribute.HandlerDelegate)> s_notifyReqGroup;
public static void Init()
{
var handlers = ImmutableDictionary.CreateBuilder<int, (HandlerAttribute, HandlerAttribute.HandlerDelegate)>();
foreach (var type in s_handlerTypes)
{
foreach (var method in type.GetMethods())
{
var attribute = method.GetCustomAttribute<HandlerAttribute>();
if (attribute == null)
continue;
var parameterInfo = method.GetParameters();
var sessionParameter = Expression.Parameter(typeof(NetSession));
var cmdIdParameter = Expression.Parameter(typeof(int));
var dataParameter = Expression.Parameter(typeof(object));
var call = Expression.Call(method,
Expression.Convert(sessionParameter, parameterInfo[0].ParameterType),
Expression.Convert(cmdIdParameter, parameterInfo[1].ParameterType),
Expression.Convert(dataParameter, parameterInfo[2].ParameterType));
var lambda = Expression.Lambda<HandlerAttribute.HandlerDelegate>(call, sessionParameter, cmdIdParameter, dataParameter);
if (!handlers.TryGetKey(attribute.CmdID, out _))
handlers.Add(attribute.CmdID, (attribute, lambda.Compile()));
}
}
s_notifyReqGroup = handlers.ToImmutable();
}
public static void Notify(NetSession session, int cmdId, object data)
{
if (s_notifyReqGroup.TryGetValue(cmdId, out var handler))
{
AsyncContext.Run(() => handler.Item2.Invoke(session, cmdId, data));
}
else
{
s_log.Warn($"Can't find handler, cmdId: {cmdId}");
}
}
public static void AddReqGroupHandler(Type type)
{
s_handlerTypes.Add(type);
}
}
}