msew11 / FakeName

9 stars 0 forks source link

[Bug][TargetInfoComponent] Target & TargetsTarget not working #11

Closed A2uria closed 3 months ago

A2uria commented 3 months ago

问题和 https://github.com/AtmoOmen/DailyRoutines/issues/91 一样,目标和目标的目标并未被替换,其他正常。

我这边是 wg 和 sq 端都试过了不行。

msew11 commented 3 months ago

8DA16BB8FCAD6B60D1AF6FD45A7759EC A891FA79C00AF19C8E3A0AC699D6F914 876E1E7208BC0C61645ED5E838841B5C 585200F8051D624D1B77E55B8D862977 我在主城找了俩互相看的其他玩家测试的,无法复现。是不是和其他插件冲突了。可以尝试复制一份dalamud,在复制后的dalamud插件目录中仅保留fakename,重启游戏并注入,看看是否能复现。 目前已知一种情况是,目标在切换目标时,object的target不会第一时间刷新,导致addon刷新时,目标的目标获取到的对象object,仍然为上一个目标的object,因此无法找到对应配置。这只会导致目标的目标无法正常替换,但不会造成目标无法替换。与你的描述不符。

A2uria commented 3 months ago

全新安装的 Dalamud 也有一样的问题。

过几天我可能会下个全新的 sq 端看看能不能复现,目前本地是 wg 端和转化的 sq 端都有这个问题。

msew11 commented 3 months ago

试一下/xldata命令,然后选择第二个Addon Inspector,搜索“_TargetInfoMainTarget”,在Res Node中定位到这个,看下NodeId是否为10 ec13fb40-3273-4ae2-86a8-130ff47f8eeb

A2uria commented 3 months ago

似乎我这里更新的是 _TargetInfo 而非 _TargetInfoMainTarget,我这边选中目标的时候 _TargetInfoMainTarget 总是 Not Visible

patch 了一下 FakeName.dll 然后我这边功能就正常了。

https://github.com/msew11/FakeName/blob/d0057c329ae441a23b833d3979a35ca548bdaf97/FakeName/Component/TargetInfoComponent.cs#L20-L21

https://github.com/msew11/FakeName/blob/d0057c329ae441a23b833d3979a35ca548bdaf97/FakeName/Component/TargetInfoComponent.cs#L103

--- /dev/fd/63  2024-05-28 09:29:16.000000000 +0800
+++ /dev/fd/62  2024-05-28 09:29:16.000000000 +0800
@@ -653,7 +653,7 @@
 000028c0: 2a06 752d 0000 010b 072d 0216 2a02 7b4c  *.u-.....-..*.{L
 000028d0: 0000 0407 6f31 0000 0a6f 3200 000a 076f  ....o1...o2....o
 000028e0: 3300 000a 6f34 0000 0a12 026f 7a00 0006  3...o4.....oz...
-000028f0: 2c03 082d 0216 2a03 1f0a 28ff 0000 0a25  ,..-..*...(....%
+000028f0: 2c03 082d 0216 2a03 1f10 28ff 0000 0a25  ,..-..*...(....%
 00002900: 7cd4 0000 0afe 1680 0000 016f a900 000a  |..........o....
 00002910: 0d08 6f71 0000 066f 8f00 000a 1630 0d07  ..oq...o.....0..
 00002920: 6f31 0000 0a6f 3200 000a 2b06 086f 7100  o1...o2...+..oq.
@@ -2164,10 +2164,10 @@
 00008730: 2900 3f00 2800 3f00 3a00 0200 1200 0200  ).?.(.?.:.......
 00008740: 5900 0300 2900 3f00 5c00 7300 3f00 2800  Y...).?.\.s.?.(.
 00008750: 2e00 2a00 3f00 2900 2800 3f00 3a00 0200  ..*.?.).(.?.:...
-00008760: 1a00 0200 0100 0300 2900 3f00 2400 012b  ........).?.$..+
+00008760: 1a00 0200 0100 0300 2900 3f00 2400 0117  ........).?.$...
 00008770: 5f00 5400 6100 7200 6700 6500 7400 4900  _.T.a.r.g.e.t.I.
-00008780: 6e00 6600 6f00 4d00 6100 6900 6e00 5400  n.f.o.M.a.i.n.T.
-00008790: 6100 7200 6700 6500 7400 0021 5f00 4600  a.r.g.e.t..!_.F.
+00008780: 6e00 6600 6f00 0000 0000 0000 0000 0000  n.f.o...........
+00008790: 0000 0000 0000 0000 0000 0021 5f00 4600  ...........!_.F.
 000087a0: 6f00 6300 7500 7300 5400 6100 7200 6700  o.c.u.s.T.a.r.g.
 000087b0: 6500 7400 4900 6e00 6600 6f00 0013 5f00  e.t.I.n.f.o..._.
 000087c0: 5700 6900 6400 6500 5400 6500 7800 7400  W.i.d.e.T.e.x.t.

字符串我手动改的,参考的 https://ntcore.com/files/dotnetformat.htm

US Array of unicode strings. The name stands for User Strings, and these strings are referenced directly by code instructions (ldstr). This stream starts with a null byte exactly like the #Blob one. Each entry of this stream begins with a 7bit encoded integer which tells us the size of the following string (the size is in bytes, not characters). Moreover, there's an additional byte at the end of the string (so that every string size is odd and not even). This last byte tells the framework if any of the characters in the string has its high byte set or if the low byte is any of these particular values: 0x01–0x08, 0x0E–0x1F, 0x27, 0x2D.

效果:

所以感觉是客户端问题?

反正等更新完再研究还是老样子。

A2uria commented 3 months ago

跟目标情报分别显示有关,关闭目标情报分别显示可复现。

单独处理 _TargetInfo 应该能解决。