EvonyのMAPを走査する(手動)


なぜなのか

Evonyといったらボス探し/蛮族探し/高レベル資源探しなどなど画面をスクロールして見つける大変な作業があります。これをPC版Evonyを使って比較的楽をしようという試みです。

用意するもの(環境)

・BepInEx
・VisualStudio2022

何をやるのか

BepInExを使ってEvony用MODを作る感じです。Harmonyパッチとかいうとか言わないとか・・・よくわかりません。

出来上がりイメージ

GIFだとさっぱり分かりませんね・・・

参考)実行画面

プログラム解説

Plugin.cs

作成したプログラムをロードするやつ・・・だと思います。

    [BepInPlugin(MyPluginInfo.PLUGIN_GUID, MyPluginInfo.PLUGIN_NAME, MyPluginInfo.PLUGIN_VERSION)]
    public class Plugin : BasePlugin
    {
        private readonly Harmony harmony = new Harmony(MyPluginInfo.PLUGIN_GUID);
        public override void Load()
        {
            System.Console.OutputEncoding = Encoding.GetEncoding("utf-8");
            harmony.PatchAll();
        }
    }

EvonyDownSerializer.cs

サーバーからダウンロードしてきた情報のデシリアライズ処理をフックしてデシリアライズ後に自分で書いた処理を実行させます。
この処理が動くようになれば欲しい情報が自由に取れるようになります。

    [HarmonyPatch]
    public class _EvonyDownSerializer
    {
        private static int _token = 0;

        [HarmonyPatch(typeof(EvonyDownSerializer), nameof(EvonyDownSerializer.Deserialize))]
        [HarmonyPostfix]
        public static void Deserialize(ref Il2CppSystem.Object __result, int __0)
        {
            var myServerId = 999;  // ← 自分のサーバーのID

            var options = new JsonSerializerOptions
            {
                IncludeFields = true,
                IgnoreReadOnlyProperties = true,
                WriteIndented = true,
                NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals,
                DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
            };


・・・

参考情報(__mapinfo._items)

モンスターはtype=2、ピラミッドはtype=5などとなっているようです。

蛮族:type=36
アゲロペ:type=2 id=1751
・・・

おわりに

書いてる途中ですが、そのまま続き書かない可能性を考えて公開してしまいます。
手動だし読みたい人もいないと思いますけど一応メモということで。

いいなと思ったら応援しよう!