diff --git a/MHHelper.cs b/MHHelper.cs index af0a3fd..5d624f7 100644 --- a/MHHelper.cs +++ b/MHHelper.cs @@ -22,7 +22,12 @@ namespace MHFQuestToMH2Dos public static bool CheckEnd(byte[] data, int Ptr) { - return HexHelper.bytesToUInt(data, 2, Ptr) == 0xFFFF || HexHelper.bytesToUInt(data, 1, Ptr) == 0xFF; + return HexHelper.bytesToUInt(data, 2, Ptr) == 0xFFFF; + } + + public static bool CheckEndWith1Byte(byte[] data, int Ptr) + { + return HexHelper.bytesToUInt(data, 1, Ptr) == 0xFF; } diff --git a/ModifyQuest.cs b/ModifyQuest.cs index 82921ab..49ad849 100644 --- a/ModifyQuest.cs +++ b/ModifyQuest.cs @@ -782,7 +782,7 @@ namespace MHFQuestToMH2Dos //若遇到结束符或无数据 if (MHHelper.CheckEnd(target, _SuppliesItem_CurrPtr) || - HexHelper.bytesToInt(target, 1, _SuppliesItem_CurrPtr) == 0 + HexHelper.bytesToInt(target, 4, _SuppliesItem_CurrPtr) == 0 ) { Log.HexInfo(_SuppliesItem_CurrPtr, "主线支援道具,结束符"); @@ -812,7 +812,7 @@ namespace MHFQuestToMH2Dos //若遇到结束符或无数据 if (MHHelper.CheckEnd(target, _SuppliesItem_Zhi_1_CurrPtr) || - HexHelper.bytesToInt(target, 1, _SuppliesItem_Zhi_1_CurrPtr) == 0 + HexHelper.bytesToInt(target, 4, _SuppliesItem_Zhi_1_CurrPtr) == 0 ) { Log.HexInfo(_SuppliesItem_Zhi_1_CurrPtr, "支线1支援道具,结束符"); @@ -842,7 +842,7 @@ namespace MHFQuestToMH2Dos //若遇到结束符或无数据 if (MHHelper.CheckEnd(target, _SuppliesItem_Zhi_2_CurrPtr) || - HexHelper.bytesToInt(target, 1, _SuppliesItem_Zhi_2_CurrPtr) == 0 + HexHelper.bytesToInt(target, 4, _SuppliesItem_Zhi_2_CurrPtr) == 0 ) { Log.HexInfo(_SuppliesItem_Zhi_2_CurrPtr, "支线2支援道具,结束符"); @@ -889,10 +889,14 @@ namespace MHFQuestToMH2Dos for (int i = 0; i < 90; i++) { + if (i == 44) + { + + } //若遇到结束符或无数据 if (MHHelper.CheckEnd(target, _ItemPoint_CurrPtr) - || - HexHelper.bytesToInt(target, 1, _ItemPoint_CurrPtr) == 0 + //|| + //HexHelper.bytesToInt(target, 1, _ItemPoint_CurrPtr) == 0 // 不能判断头部为0 否则当前道具概率为0时,会跳过 ) { Log.HexInfo(_ItemPoint_CurrPtr, "采集点结束"); @@ -909,11 +913,11 @@ namespace MHFQuestToMH2Dos { //若遇到结束符或无数据 if (MHHelper.CheckEnd(target, ItemCurrPtr) - || - HexHelper.bytesToInt(target, 1, ItemCurrPtr) == 0 + //|| + //HexHelper.bytesToInt(target, 1, ItemCurrPtr) == 0 // 不能判断值为0 否则当前道具概率为0时,会跳过 ) { - Log.HexInfo(ItemCurrPtr, "第" + i + "个采集点,第" + setCount + "个素材 结束符"); + Log.HexInfo(ItemCurrPtr, "第{0}个采集代号,第" + setCount + "个素材 结束符",i); break; } int Pr = HexHelper.bytesToInt(target, 2, ItemCurrPtr);//概率 @@ -922,12 +926,14 @@ namespace MHFQuestToMH2Dos //判断道具ID是否超限 if (ItemID > cMax_ItemID) { - Log.HexWar(ItemCurrPtr, "第" + i + "个采集点,第" + setCount + "个素材,ID->{0}道具ID超出最大可能{1},属于MHF道具【" + MHHelper.Get2MHFItemName(ItemID) + "】,将其修正为【不可燃烧的废物】ID->{2}", ItemID, cMax_ItemID, cModify_OutOfItemID); + Log.HexWar(ItemCurrPtr, "第{0}个采集代号,第" + setCount + "个素材,ID->{1}道具ID超出最大可能{2},属于MHF道具【" + MHHelper.Get2MHFItemName(ItemID) + "】,将其修正为【不可燃烧的废物】ID->{3}", i,ItemID, cMax_ItemID, cModify_OutOfItemID); HexHelper.ModifyIntHexToBytes(target, cModify_OutOfItemID, ItemCurrPtr + 0x02, 2); + ItemID = HexHelper.bytesToInt(target, 2, ItemCurrPtr + 0x02);//道具ID + Log.HexTips(ItemCurrPtr, "重新读取 第{0}个采集代号,第" + setCount + "个素材,道具ID->{1} 【" + MHHelper.Get2DosItemName(ItemID) + "】 概率->{2}", i,ItemID, Pr); } else { - Log.HexColor(ConsoleColor.Green, ItemCurrPtr, "第" + i + "个采集点,第" + setCount + "个素材,道具ID->{0} 【" + MHHelper.Get2DosItemName(ItemID) + "】 概率->{1}", ItemID, Pr); + Log.HexColor(ConsoleColor.Green, ItemCurrPtr, "第{0}个采集代号,第" + setCount + "个素材,道具ID->{1} 【" + MHHelper.Get2DosItemName(ItemID) + "】 概率->{2}", i,ItemID, Pr); } setCount++; ItemCurrPtr += 0x04; @@ -965,7 +971,7 @@ namespace MHFQuestToMH2Dos || MHHelper.CheckEnd(target, _FishGroup_CurrPtr) || - HexHelper.bytesToInt(target, 1, _FishGroup_CurrPtr) == 0 + HexHelper.bytesToInt(target, 4, _FishGroup_CurrPtr) == 0 ) { Log.HexInfo(_FishGroup_CurrPtr, $"第{setFishGroup}鱼群代号 结束符"); @@ -980,7 +986,7 @@ namespace MHFQuestToMH2Dos //鱼群季节循环 for (int i = 0; i < 6; i++) { - //鱼群代号结束符 + //鱼群季节结束符 if ( _FishSeason_CurrPtr >= target.Length || @@ -999,13 +1005,13 @@ namespace MHFQuestToMH2Dos int setFish = 0; while (true) { - //鱼群代号结束符 + //鱼结束符 if ( _FishStart_CurrPtr >= target.Length || - MHHelper.CheckEnd(target, _FishStart_CurrPtr) - || - HexHelper.bytesToInt(target, 1, _FishStart_CurrPtr) == 0 + MHHelper.CheckEndWith1Byte(target, _FishStart_CurrPtr) + //|| + //HexHelper.bytesToInt(target, 1, _FishStart_CurrPtr) == 0 ) { Log.HexInfo(_FishStart_CurrPtr, $"第{setFishGroup}鱼群代号 第{i}个季节昼夜 第" + setFish + "个鱼 结束符"); diff --git a/README.md b/README.md index 92c5a49..43458b0 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ 关联 皓月PS2 联机服务器,和 皓月MHF 怪物猎人边境服务器。 + ### 大致描述 ### 通过一系列,数据处理,指针处理。 @@ -15,11 +16,11 @@ YouTuBe: - + Bilibili: - + ### 使用前提 ### diff --git a/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs b/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs new file mode 100644 index 0000000..4257f4b --- /dev/null +++ b/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v7.0", FrameworkDisplayName = ".NET 7.0")] diff --git a/obj/Debug/net7.0/MHFQuestToMH2Dos.AssemblyInfo.cs b/obj/Debug/net7.0/MHFQuestToMH2Dos.AssemblyInfo.cs new file mode 100644 index 0000000..fc9dd95 --- /dev/null +++ b/obj/Debug/net7.0/MHFQuestToMH2Dos.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("MHFQuestToMH2Dos")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("MHFQuestToMH2Dos")] +[assembly: System.Reflection.AssemblyTitleAttribute("MHFQuestToMH2Dos")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/obj/Debug/net7.0/MHFQuestToMH2Dos.GlobalUsings.g.cs b/obj/Debug/net7.0/MHFQuestToMH2Dos.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/obj/Debug/net7.0/MHFQuestToMH2Dos.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks;