Compare commits

..

4 commits

Author SHA1 Message Date
44b9bf8580 Merge pull request 'Auto .NET version Roll-Forward for skill issue people' (#1) from YYHEggEgg/FreeSR:main into main
Reviewed-on: #1
2024-03-25 16:06:30 +00:00
Soldier 11
a8bdaa63a5 Auto .NET version Roll-Forward 2024-02-26 19:44:46 +08:00
moux23333
ec84048099 Update README.md 2024-02-21 15:04:17 +08:00
moux23333
205cc9e120 support 2.0.5 2024-02-21 14:41:22 +08:00
25 changed files with 6580 additions and 32802 deletions

View file

@ -5,6 +5,7 @@
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable> <Nullable>disable</Nullable>
<RollForward>Major</RollForward>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View file

@ -28,7 +28,7 @@
context.Response.StatusCode = HttpStatusCode.OK; context.Response.StatusCode = HttpStatusCode.OK;
context.Response.ContentType = "application/json"; context.Response.ContentType = "application/json";
await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create() await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create()
.Retcode((int)RetcodeStatus.RetSucc) .Retcode(0)
.Message("OK") .Message("OK")
.Object("data", dataObject) .Object("data", dataObject)
.Build()); .Build());

View file

@ -12,7 +12,7 @@
context.Response.StatusCode = HttpStatusCode.OK; context.Response.StatusCode = HttpStatusCode.OK;
context.Response.ContentType = "application/json"; context.Response.ContentType = "application/json";
await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create() await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create()
.Retcode((int)RetcodeStatus.RetSucc) .Retcode(0)
.Message("OK") .Message("OK")
.Object("data", Data) .Object("data", Data)
.Build()); .Build());

View file

@ -11,7 +11,7 @@
context.Response.StatusCode = HttpStatusCode.OK; context.Response.StatusCode = HttpStatusCode.OK;
context.Response.ContentType = "application/json"; context.Response.ContentType = "application/json";
await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create() await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create()
.Retcode((int)RetcodeStatus.RetSucc) .Retcode(0)
.Boolean("success", true) .Boolean("success", true)
.String("message", "") .String("message", "")
.Build()); .Build());

View file

@ -22,7 +22,7 @@
var accountData = DispatchHelper.ToLoginResponseData(); var accountData = DispatchHelper.ToLoginResponseData();
await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create() await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create()
.Retcode((int)RetcodeStatus.RetSucc) .Retcode(0)
.Message("OK") .Message("OK")
.Object("data", new JObject .Object("data", new JObject
{ {

View file

@ -25,7 +25,7 @@
context.Response.ContentType = "text/plain"; context.Response.ContentType = "text/plain";
await context.Response.WriteAllAsync(Convert.ToBase64String(ProtobufUtil.Serialize(new RegionList await context.Response.WriteAllAsync(Convert.ToBase64String(ProtobufUtil.Serialize(new RegionList
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
TopServerRegionName = RegionManager.GetTopServerRegionName(), TopServerRegionName = RegionManager.GetTopServerRegionName(),
RegionInfoLists = { RegionManager.GetRegionList() } RegionInfoLists = { RegionManager.GetRegionList() }
}))); })));

View file

@ -25,10 +25,13 @@
B5 = true, B5 = true,
B6 = true, B6 = true,
B7 = true, B7 = true,
Gfemaboifee = true, B8 = true,
useTcp = true,
//MdkResVersion = "5335706", //MdkResVersion = "5335706",
AssetBundleUrl = "https://autopatchcn.bhsr.com/asb/BetaLive/output_6355877_591cdefefe9b", AssetBundleUrl = "https://autopatchos.starrails.com/asb/BetaLive/output_6510636_cb4da670a18a",
ExResourceUrl = "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6367879_26191d7cc23b", ExResourceUrl = "https://autopatchos.starrails.com/design_data/BetaLive/output_6519585_2be8ac313835",
IfixVersion = "https://autopatchos.starrails.com/ifix/BetaLive/output_6523427_28cc5c21c689",
LuaUrl = "https://autopatchos.starrails.com/lua/BetaLive/output_6516960_dede96733b5b",
}))); })));
return true; return true;

View file

@ -13,7 +13,7 @@
context.Response.StatusCode = HttpStatusCode.OK; context.Response.StatusCode = HttpStatusCode.OK;
context.Response.ContentType = "application/json"; context.Response.ContentType = "application/json";
await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create() await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create()
.Retcode((int)RetcodeStatus.RetSucc) .Retcode(0)
.Message("OK") .Message("OK")
.Object("data", CaptchaData) .Object("data", CaptchaData)
.Build()); .Build());

View file

@ -13,7 +13,7 @@
var accountData = DispatchHelper.ToLoginResponseData(); var accountData = DispatchHelper.ToLoginResponseData();
await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create() await context.Response.WriteAllJsonAsync(DispatchResponseBuilder.Create()
.Retcode((int)RetcodeStatus.RetSucc) .Retcode(0)
.Message("OK") .Message("OK")
.Object("data", new JObject .Object("data", new JObject
{ {

View file

@ -5,6 +5,7 @@
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable> <Nullable>disable</Nullable>
<RollForward>Major</RollForward>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View file

@ -13,7 +13,7 @@
var response = new GetAvatarDataScRsp var response = new GetAvatarDataScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
IsAll = request.IsGetAll IsAll = request.IsGetAll
}; };
@ -21,7 +21,7 @@
1001,1002,1003,1004,1005,1006,1008,1009,1013, 1001,1002,1003,1004,1005,1006,1008,1009,1013,
1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112, 1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,
1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1217, 1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1217,
1302,1303,1305,1306,1307,1312}; 1301,1302,1303,1304,1305,1306,1307,1308,1312};
foreach (uint id in characters) foreach (uint id in characters)
{ {

View file

@ -50,10 +50,10 @@ namespace FreeSR.Gateserver.Manager.Handlers
GroupId = 19, GroupId = 19,
InstId = 300001, InstId = 300001,
EntityId = 4194583, EntityId = 4194583,
Prop = new Mpdmfpohnnc Prop = new ScenePropInfo
{ {
Hdmeecedleh = 1, PropState = 1,
Kkjiblpgfpa = 808 PropId = 808
}, },
Motion = new MotionInfo Motion = new MotionInfo
{ {
@ -100,7 +100,7 @@ namespace FreeSR.Gateserver.Manager.Handlers
session.Send(CmdType.CmdSetLineupNameScRsp, new SetLineupNameScRsp session.Send(CmdType.CmdSetLineupNameScRsp, new SetLineupNameScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
Name = request.Name, Name = request.Name,
Index = request.Index Index = request.Index
}); });
@ -114,18 +114,14 @@ namespace FreeSR.Gateserver.Manager.Handlers
Dictionary<uint, List<uint>> monsterIds = new Dictionary<uint, List<uint>> Dictionary<uint, List<uint>> monsterIds = new Dictionary<uint, List<uint>>
{ {
{ 1, new List<uint> { 3001010, 3001020, 3001020, 3001010 } }, { 1, new List<uint> { 3013010, 3012010, 3013010, 3001010 } },
{ 2, new List<uint> { 3002030, 3002010, 3002010, 3002030 } }, { 2, new List<uint> { 8034010 } },
{ 3, new List<uint> { 3011010, 3012020, 3011010 } }, { 3, new List<uint> { 3014022 } },
{ 4, new List<uint> { 3003010, 3003020 } },
{ 5, new List<uint> { 3024020 } },
{ 6, new List<uint> { 3014020 } },
{ 7, new List<uint> { 3002050 } }
}; };
Dictionary<uint, uint> monsterLevels = new Dictionary<uint, uint> Dictionary<uint, uint> monsterLevels = new Dictionary<uint, uint>
{ {
{1,70},{2,70},{3,60},{4,65},{5,55},{6,60},{7,75} {1,70},{2,70},{3,60}
}; };
//basic //basic
@ -190,11 +186,11 @@ namespace FreeSR.Gateserver.Manager.Handlers
} }
//monster //monster
for (uint i = 1; i <= 7; i++) for (uint i = 1; i <= monsterIds.Count; i++)
{ {
SceneMonsterWave monsterInfo = new SceneMonsterWave SceneMonsterWave monsterInfo = new SceneMonsterWave
{ {
Knkmjldpekj = i, Pkgenfbhofi = i,
MonsterParam = new SceneMonsterParam MonsterParam = new SceneMonsterParam
{ {
Level = monsterLevels[i], Level = monsterLevels[i],
@ -219,7 +215,7 @@ namespace FreeSR.Gateserver.Manager.Handlers
var response = new StartCocoonStageScRsp var response = new StartCocoonStageScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
CocoonId = request.CocoonId, CocoonId = request.CocoonId,
Wave = request.Wave, Wave = request.Wave,
PropEntityId = request.PropEntityId, PropEntityId = request.PropEntityId,
@ -235,7 +231,7 @@ namespace FreeSR.Gateserver.Manager.Handlers
var request = data as PVEBattleResultCsReq; var request = data as PVEBattleResultCsReq;
session.Send(CmdType.CmdPVEBattleResultScRsp, new PVEBattleResultScRsp session.Send(CmdType.CmdPVEBattleResultScRsp, new PVEBattleResultScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
EndStatus = request.EndStatus EndStatus = request.EndStatus
}); });
} }

View file

@ -7,15 +7,15 @@
internal static class LineupReqGroup internal static class LineupReqGroup
{ {
public static uint Avatar1 = 8001; public static uint Avatar1 = 8001;
public static uint Avatar2 = 1307; public static uint Avatar2 = 1308;
public static uint Avatar3 = 1306; public static uint Avatar3 = 1304;
public static uint Avatar4 = 1312; public static uint Avatar4 = 1301;
[Handler(CmdType.CmdGetCurLineupDataCsReq)] [Handler(CmdType.CmdGetCurLineupDataCsReq)]
public static void OnGetCurLineupDataCsReq(NetSession session, int cmdId, object _) public static void OnGetCurLineupDataCsReq(NetSession session, int cmdId, object _)
{ {
var response = new GetCurLineupDataScRsp var response = new GetCurLineupDataScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc Retcode = 0
}; };
response.Lineup = new LineupInfo response.Lineup = new LineupInfo
@ -50,7 +50,7 @@
{ {
var response = new GetAllLineupDataScRsp var response = new GetAllLineupDataScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
CurIndex = 0, CurIndex = 0,
}; };
@ -88,7 +88,7 @@
session.Send(CmdType.CmdChangeLineupLeaderScRsp, new ChangeLineupLeaderScRsp session.Send(CmdType.CmdChangeLineupLeaderScRsp, new ChangeLineupLeaderScRsp
{ {
Slot = request.Slot, Slot = request.Slot,
Retcode = (uint)RetcodeStatus.RetSucc Retcode = 0
}); });
} }
@ -104,7 +104,7 @@
session.Send(CmdType.CmdJoinLineupScRsp, new JoinLineupScRsp session.Send(CmdType.CmdJoinLineupScRsp, new JoinLineupScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc Retcode = 0
}); });
} }
@ -116,7 +116,6 @@
Avatar1 = 0; Avatar2 = 0; Avatar3 = 0; Avatar4 = 0; Avatar1 = 0; Avatar2 = 0; Avatar3 = 0; Avatar4 = 0;
foreach (LineupSlotData slotData in request.LineupSlotLists) foreach (LineupSlotData slotData in request.LineupSlotLists)
{ {
Console.WriteLine($"Replace Slot:{slotData.Slot} Id:{slotData.Id}");
if (slotData.Slot == 0) Avatar1 = slotData.Id; if (slotData.Slot == 0) Avatar1 = slotData.Id;
if (slotData.Slot == 1) Avatar2 = slotData.Id; if (slotData.Slot == 1) Avatar2 = slotData.Id;
if (slotData.Slot == 2) Avatar3 = slotData.Id; if (slotData.Slot == 2) Avatar3 = slotData.Id;
@ -126,7 +125,7 @@
RefreshLineup(session); RefreshLineup(session);
session.Send(CmdType.CmdReplaceLineupScRsp, new ReplaceLineupScRsp session.Send(CmdType.CmdReplaceLineupScRsp, new ReplaceLineupScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc Retcode = 0
}); });
} }
@ -134,7 +133,6 @@
public static void OnQuitLineupCsReq(NetSession session, int cmdId, object data) public static void OnQuitLineupCsReq(NetSession session, int cmdId, object data)
{ {
var request = data as QuitLineupCsReq; var request = data as QuitLineupCsReq;
Console.WriteLine($"CmdQuitLineupCsReq BaseAvatarId:{request.BaseAvatarId} Index:{request.Index} PlaneId:{request.PlaneId}");
if (request.BaseAvatarId == Avatar1) Avatar1 = 0; if (request.BaseAvatarId == Avatar1) Avatar1 = 0;
if (request.BaseAvatarId == Avatar2) Avatar2 = 0; if (request.BaseAvatarId == Avatar2) Avatar2 = 0;
if (request.BaseAvatarId == Avatar3) Avatar3 = 0; if (request.BaseAvatarId == Avatar3) Avatar3 = 0;
@ -143,13 +141,12 @@
RefreshLineup(session); RefreshLineup(session);
session.Send(CmdType.CmdQuitLineupScRsp, new QuitLineupScRsp session.Send(CmdType.CmdQuitLineupScRsp, new QuitLineupScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
BaseAvatarId = request.BaseAvatarId, BaseAvatarId = request.BaseAvatarId,
IsVirtual = request.IsVirtual IsVirtual = request.IsVirtual
}); });
} }
public static void RefreshLineup(NetSession session) { public static void RefreshLineup(NetSession session) {
Console.WriteLine($"Team refreshed!{Avatar1} {Avatar2} {Avatar3} {Avatar4}");
var characters = new uint[] { Avatar1, Avatar2, Avatar3, Avatar4 }; var characters = new uint[] { Avatar1, Avatar2, Avatar3, Avatar4 };
var response = new SyncLineupNotify var response = new SyncLineupNotify
{ {

View file

@ -12,7 +12,7 @@
var request = data as GetMissionStatusCsReq; var request = data as GetMissionStatusCsReq;
GetMissionStatusScRsp response = new GetMissionStatusScRsp GetMissionStatusScRsp response = new GetMissionStatusScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
}; };
response.FinishedMainMissionIdLists = new uint[] { response.FinishedMainMissionIdLists = new uint[] {
@ -113,7 +113,7 @@
{ {
foreach (uint id in request.SubMissionIdLists) foreach (uint id in request.SubMissionIdLists)
{ {
response.MissionEventStatusLists.Add(new Mission() response.SubMissionStatusLists.Add(new Mission()
{ {
Id = id, Id = id,
Progress = 0, Progress = 0,
@ -126,7 +126,7 @@
{ {
foreach (uint id in request.MainMissionIdLists) foreach (uint id in request.MainMissionIdLists)
{ {
response.SubMissionStatusLists.Add(new Mission() response.MissionEventStatusLists.Add(new Mission()
{ {
Id = id, Id = id,
Progress = 0, Progress = 0,

View file

@ -12,31 +12,31 @@
public static void OnGetNpcTakenRewardCsReq(NetSession session, int cmdId, object data) public static void OnGetNpcTakenRewardCsReq(NetSession session, int cmdId, object data)
{ {
var npcRewardReq = data as Eddbhmdjadb; var npcRewardReq = data as GetNpcTakenRewardCsReq;
session.Send(CmdType.CmdGetNpcTakenRewardScRsp, new Nikhfbniagb session.Send(CmdType.CmdGetNpcTakenRewardScRsp, new GetNpcTakenRewardScRsp
{ {
NpcId = npcRewardReq.Okonlennkfb, NpcId = npcRewardReq.NpcId,
Retcode = (uint)RetcodeStatus.RetSucc Retcode = 0
}); });
} }
[Handler(CmdType.CmdGetFirstTalkByPerformanceNpcCsReq)] [Handler(CmdType.CmdGetFirstTalkByPerformanceNpcCsReq)]
public static void OnGetFirstTalkByPerformanceNpcCsReq(NetSession session, int cmdId, object data) public static void OnGetFirstTalkByPerformanceNpcCsReq(NetSession session, int cmdId, object data)
{ {
var npcPerformanceReq = data as Jknjlicadhe; var npcPerformanceReq = data as GetFirstTalkByPerformanceNpcCsReq;
var response = new Kpbeklbbihd var response = new GetFirstTalkByPerformanceNpcScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc Retcode = 0
}; };
foreach(uint id in npcPerformanceReq.Ffgeablhjmms) foreach(uint id in npcPerformanceReq.FirstTalkIdLists)
{ {
response.Hhldcbegobcs.Add(new NpcMeetStatusInfo response.NpcMeetStatusLists.Add(new NpcMeetStatusInfo
{ {
Jgndlkbohij = true, IsMeet = true,
Okonlennkfb = id MeetId = id
}); });
} }

View file

@ -22,9 +22,14 @@
session.Send(CmdType.CmdPlayerHeartBeatScRsp, new PlayerHeartBeatScRsp session.Send(CmdType.CmdPlayerHeartBeatScRsp, new PlayerHeartBeatScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
DownloadData = new ClientDownloadData(), DownloadData = new ClientDownloadData
{
Version = 51,
Time = DateTimeOffset.Now.ToUnixTimeMilliseconds(),
Data = Convert.FromBase64String("G0x1YVMBGZMNChoKBAQICHhWAAAAAAAAAAAAAAAod0ABD0BGcmVlU1JMdWEudHh0AAAAAAAAAAAAAQccAAAAJABAAClAQAApgEAAKcBAAFYAAQAsgAABXUBBAOSAQQAkAUAAKcFBAikBQgIpQUIC7AAAAWyAAACWgAIA6cDCAMEAwwEWAQMAqoABgKlBgQCpQUMDqYFDAxLAQwMRQACAqUGBAJ9BRIiewP1/GQCAABIAAAAEA0NTBAxVbml0eUVuZ2luZQQLR2FtZU9iamVjdAQFRmluZAQpVUlSb290L0Fib3ZlRGlhbG9nL0JldGFIaW50RGlhbG9nKENsb25lKQQYR2V0Q29tcG9uZW50c0luQ2hpbGRyZW4EB3R5cGVvZgQEUlBHBAdDbGllbnQEDkxvY2FsaXplZFRleHQTAAAAAAAAAAAEB0xlbmd0aBMBAAAAAAAAAAQLZ2FtZU9iamVjdAQFbmFtZQQJSGludFRleHQEBXRleHQUYTxiPkZyZWVTUiBpcyBhIGZyZWUgc29mdHdhcmUuRnJlZVNS5piv5LiA5Liq5YWN6LS56L2v5Lu244CCIGh0dHBzOi8vZGlzY29yZC5nZy9yZXZlcnNlZHJvb21zPC9iPgEAAAABAAAAAAAcAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAAAAFAAAABgAAAAYAAAAEAAAACQAAAAYAAAAEb2JqBgAAABwAAAAHY29tcHRzDgAAABwAAAAMKGZvciBpbmRleCkSAAAAGwAAAAwoZm9yIGxpbWl0KRIAAAAbAAAACyhmb3Igc3RlcCkSAAAAGwAAAAJpEwAAABoAAAABAAAABV9FTlY=")
},
ClientTimeMs = heartbeatReq.ClientTimeMs, ClientTimeMs = heartbeatReq.ClientTimeMs,
ServerTimeMs = (ulong)DateTimeOffset.Now.ToUnixTimeMilliseconds() ServerTimeMs = (ulong)DateTimeOffset.Now.ToUnixTimeMilliseconds()
}); });
@ -35,19 +40,17 @@
{ {
session.Send(CmdType.CmdGetHeroBasicTypeInfoScRsp, new GetHeroBasicTypeInfoScRsp session.Send(CmdType.CmdGetHeroBasicTypeInfoScRsp, new GetHeroBasicTypeInfoScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
Gender = Gender.GenderMan, Gender = Gender.GenderMan,
Cdkjkpnjjjas ={ BasicTypeInfoLists ={
new Hlbbodklpbo new PlayerHeroBasicTypeInfo
{ {
Peihhlcchfj = HeroBasicType.BoyWarrior, BasicType = HeroBasicType.BoyWarrior,
Rank = 1, Rank = 1,
Chmeifanmags = {} Knhaecbafbas = {}
} }
}, },
CurBasicType = HeroBasicType.BoyWarrior, CurBasicType = HeroBasicType.BoyWarrior,
Bhepmbpaojp = false,
Cnlbajkmnbn = false
}); });
} }
@ -71,10 +74,10 @@
session.Send(CmdType.CmdPlayerLoginScRsp, new PlayerLoginScRsp session.Send(CmdType.CmdPlayerLoginScRsp, new PlayerLoginScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
//IsNewPlayer = false, //IsNewPlayer = false,
LoginRandom = request.LoginRandom, LoginRandom = request.LoginRandom,
Stamina = 100, Stamina = 240,
ServerTimestampMs = (ulong)DateTimeOffset.Now.ToUnixTimeSeconds() * 1000, ServerTimestampMs = (ulong)DateTimeOffset.Now.ToUnixTimeSeconds() * 1000,
BasicInfo = new PlayerBasicInfo BasicInfo = new PlayerBasicInfo
{ {
@ -95,24 +98,12 @@
{ {
session.Send(CmdType.CmdPlayerGetTokenScRsp, new PlayerGetTokenScRsp session.Send(CmdType.CmdPlayerGetTokenScRsp, new PlayerGetTokenScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
Uid = 1337, Uid = 1337,
//BlackInfo = null, //BlackInfo = null,
Msg = "OK", Msg = "OK",
SecretKeySeed = 0 SecretKeySeed = 0
}); });
var annData = new AnnounceData
{
BeginTime = 0,
EndTime = DateTimeOffset.Now.ToUnixTimeSeconds() + 10,
Jhjbgmmpccj = Encoding.UTF8.GetString(Convert.FromBase64String("RnJlZVNSIGlzIGEgZnJlZSBhbmQgb3Blbi1zb3VyY2Ugc29mdHdhcmUsIGlmIHlvdSBwYWlkIGZvciB0aGlzLCB5b3UgaGF2ZSBiZWVuIHNjYW1tZWQhIEZyZWVTUuaYr+S4gOS4quWFjei0ueS4lOW8gOa6kOeahOi9r+S7tu+8jOWmguaenOS9oOaYr+iKsemSseS5sOadpeeahO+8jOivtOaYjuS9oOiiq+mql+S6hu+8gXJlcG9zaXRvcnkgbGluayDku5PlupPlnLDlnYA6aHR0cHM6Ly9naXQueGVvbmRldi5jb20vTW91eDIzMzMzL0ZyZWVTUg=="))
};
session.Send(CmdType.CmdServerAnnounceNotify, new ServerAnnounceNotify
{
Opgimnkoknjs = {annData},
});
} }
} }
} }

View file

@ -3,6 +3,7 @@
using FreeSR.Gateserver.Manager.Handlers.Core; using FreeSR.Gateserver.Manager.Handlers.Core;
using FreeSR.Gateserver.Network; using FreeSR.Gateserver.Network;
using FreeSR.Proto; using FreeSR.Proto;
using System.Numerics;
internal static class SceneReqGroup internal static class SceneReqGroup
@ -15,9 +16,9 @@
GameModeType = 1, GameModeType = 1,
//Bkmbkahohif = 1, //Bkmbkahohif = 1,
//Admbbnbnibk = 1, //Admbbnbnibk = 1,
EntryId = 1030101, EntryId = 2032101,
PlaneId = 10301, PlaneId = 20321,
FloorId = 10301001, FloorId = 20321001,
}; };
/*scene.EntityLists.Add(new SceneEntityInfo /*scene.EntityLists.Add(new SceneEntityInfo
@ -35,8 +36,47 @@
session.Send(CmdType.CmdGetCurSceneInfoScRsp, new GetCurSceneInfoScRsp session.Send(CmdType.CmdGetCurSceneInfoScRsp, new GetCurSceneInfoScRsp
{ {
Scene = scene, Scene = scene,
Retcode = (uint)RetcodeStatus.RetSucc Retcode = 0
}); });
} }
[Handler(CmdType.CmdGetSceneMapInfoCsReq)]
public static void OnGetSceneMapInfoCsReq(NetSession session, int cmdId, object data)
{
var request = data as GetSceneMapInfoCsReq;
uint[] back = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0 };
var mapinfo = new SceneMapInfo
{
Retcode = 0,
LightenSectionLists = back,
ChestLists = {
new ChestInfo
{
ChestType = ChestType.MapInfoChestTypeNormal
},
new ChestInfo
{
ChestType = ChestType.MapInfoChestTypePuzzle
},
new ChestInfo
{
ChestType = ChestType.MapInfoChestTypeChallenge
}
},
};
var response = new GetSceneMapInfoScRsp
{
Retcode = 0,
EntryId = request.EntryIdLists[0],
CurMapEntryId = request.EntryId,
SceneMapInfoes = { mapinfo },
LightenSectionLists = back,
};
session.Send(CmdType.CmdGetSceneMapInfoScRsp, response);
}
} }
} }

View file

@ -14,7 +14,7 @@
{ {
var response = new GetTutorialGuideScRsp var response = new GetTutorialGuideScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc Retcode = 0
}; };
uint[] guides = new uint[] uint[] guides = new uint[]
@ -50,7 +50,7 @@
var response = new GetTutorialScRsp var response = new GetTutorialScRsp
{ {
Retcode = (uint)RetcodeStatus.RetSucc, Retcode = 0,
}; };
foreach (uint id in completedTutorials) foreach (uint id in completedTutorials)

View file

@ -25,16 +25,17 @@
//{CmdType.CmdGetQuestDataCsReq, typeof(GetQuestDataCsReq)}, //{CmdType.CmdGetQuestDataCsReq, typeof(GetQuestDataCsReq)},
//{CmdType.CmdGetChallengeCsReq, typeof(GetChallengeCsReq)}, //{CmdType.CmdGetChallengeCsReq, typeof(GetChallengeCsReq)},
{CmdType.CmdGetCurSceneInfoCsReq, typeof(GetCurSceneInfoCsReq)}, {CmdType.CmdGetCurSceneInfoCsReq, typeof(GetCurSceneInfoCsReq)},
{CmdType.CmdGetSceneMapInfoCsReq, typeof(GetSceneMapInfoCsReq)},
{CmdType.CmdGetBasicInfoCsReq, typeof(GetBasicInfoCsReq)}, {CmdType.CmdGetBasicInfoCsReq, typeof(GetBasicInfoCsReq)},
{CmdType.CmdGetHeroBasicTypeInfoCsReq, typeof(Hlbbodklpbo)}, {CmdType.CmdGetHeroBasicTypeInfoCsReq, typeof(GetHeroBasicTypeInfoCsReq)},
{CmdType.CmdPlayerHeartBeatCsReq, typeof(PlayerHeartBeatCsReq)}, {CmdType.CmdPlayerHeartBeatCsReq, typeof(PlayerHeartBeatCsReq)},
//{CmdType.CmdGetGachaInfoCsReq, typeof(GetGachaInfoCsReq)}, //{CmdType.CmdGetGachaInfoCsReq, typeof(GetGachaInfoCsReq)},
//{CmdType.CmdDoGachaCsReq, typeof(DoGachaCsReq)}, //{CmdType.CmdDoGachaCsReq, typeof(DoGachaCsReq)},
{CmdType.CmdGetNpcTakenRewardCsReq, typeof(Eddbhmdjadb)}, {CmdType.CmdGetNpcTakenRewardCsReq, typeof(GetNpcTakenRewardCsReq)},
{CmdType.CmdGetFirstTalkByPerformanceNpcCsReq, typeof(Jknjlicadhe)}, {CmdType.CmdGetFirstTalkByPerformanceNpcCsReq, typeof(GetFirstTalkByPerformanceNpcCsReq)},
{CmdType.CmdSceneEntityMoveCsReq, typeof(SceneEntityMoveCsReq)}, {CmdType.CmdSceneEntityMoveCsReq, typeof(SceneEntityMoveCsReq)},
{CmdType.CmdReplaceLineupCsReq, typeof(ReplaceLineupCsReq)}, {CmdType.CmdReplaceLineupCsReq, typeof(ReplaceLineupCsReq)},

File diff suppressed because it is too large Load diff

View file

@ -4,6 +4,7 @@
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable> <Nullable>disable</Nullable>
<RollForward>Major</RollForward>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

File diff suppressed because it is too large Load diff

View file

@ -4,6 +4,7 @@
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable> <Nullable>disable</Nullable>
<RollForward>Major</RollForward>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View file

@ -5,6 +5,7 @@
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable> <Nullable>disable</Nullable>
<RollForward>Major</RollForward>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View file

@ -1,14 +1,14 @@
# FreeSR - Server Software Reimplementation for a Certain Turn-Based Anime Game # FreeSR - Server Software Reimplementation for a Certain Turn-Based Anime Game
**FreeSR** is an open-source server software reimplementation for a certain turn-based anime game, specifically version 1.6.5 developed by xeondev. This project aims to provide a platform for running private servers, enabling players to enjoy the game in a controlled environment with modified or additional features. The open-source version of FreeSR missing some and has empty classes, inviting contributors to actively participate by raising issues or submitting pull requests. **FreeSR** is an open-source server software reimplementation for a certain turn-based anime game, specifically version 2.0.5 developed by xeondev. This project aims to provide a platform for running private servers, enabling players to enjoy the game in a controlled environment with modified or additional features. The open-source version of FreeSR missing some and has empty classes, inviting contributors to actively participate by raising issues or submitting pull requests.
## Introduction ## Introduction
The "FreeSR" project is an initiative to recreate the server-side functionality of a certain turn-based anime game, version 1.6.5, which was originally developed by xeondev. The "FreeSR" project is an initiative to recreate the server-side functionality of a certain turn-based anime game, version 2.0.5, which was originally developed by xeondev.
## Features ## Features
- Server software reimplementation for a certain turn-based anime game (version 1.6.5) - Server software reimplementation for a certain turn-based anime game (version 2.0.5)
- Open-source with permissive licensing - Open-source with permissive licensing
- Extensible architecture allowing for custom modifications and additional features - Extensible architecture allowing for custom modifications and additional features
- Regular updates and maintenance to address issues and improve functionality - Regular updates and maintenance to address issues and improve functionality