找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: Handama

用于AI和地图debug的实时单位信息显示

[复制链接]
发表于 2024-10-23 20:08:34 | 显示全部楼层
Handama 发表于 2024-10-23 16:22
看不懂这几个东西,感觉加不上去了)

5C4、5C8和5CC是偏移,就是yrpp里FootClass的成员unknown_int_5C4、unknown_5C8和unknown_5CC
回复

使用道具 举报

发表于 2024-10-23 20:10:52 | 显示全部楼层
Handama 发表于 2024-10-23 16:22
看不懂这几个东西,感觉加不上去了)

yrpp里定义的类型应该是int、DWORD、DWORD,你给它们转换成Mission、AbstractClass*、AbstractClass*,然后log就可以
回复

使用道具 举报

 楼主| 发表于 2024-10-23 22:15:02 | 显示全部楼层
航味麻酱 发表于 2024-10-23 20:10
yrpp里定义的类型应该是int、DWORD、DWORD,你给它们转换成Mission、AbstractClass*、AbstractClass*,然 ...

这三个都加上了,但是我没看到有变化,原版里有用到吗?

代码是这样的
  1. append("Mega Mission = %d (%s)", pFoot->unknown_int_5C4, getMissionName((int)pFoot->unknown_int_5C4));
  2. display();


  3. auto megaTarget = (AbstractClass*)pFoot->unknown_5CC;
  4. if (megaTarget)
  5. {
  6.         auto mapCoords = CellStruct::Empty;
  7.         auto ID = "N/A";

  8.         if (auto const pObject = abstract_cast<ObjectClass*>(megaTarget))
  9.         {
  10.                 mapCoords = pObject->GetMapCoords();
  11.                 ID = pObject->GetType()->get_ID();
  12.         }
  13.         else if (auto const pCell = abstract_cast<CellClass*>(megaTarget))
  14.         {
  15.                 mapCoords = pCell->MapCoords;
  16.                 ID = "Cell";
  17.         }

  18.         append("Mega Target = %s, Distance = %d, Location = (%d, %d)", ID, (pFoot->DistanceFrom(megaTarget) / 256), mapCoords.X, mapCoords.Y);
  19.         display();
  20. }


  21. auto megaDestination = (AbstractClass*)pFoot->unknown_5C8;
  22. auto pDestination = abstract_cast<TechnoClass*>(megaDestination);
  23. if (pDestination)
  24. {
  25.         append("Destination = %s, Distance = %d, Location = (%d, %d)", pDestination->GetTechnoType()->ID, (pDestination->DistanceFrom(pFoot) / 256), pDestination->GetMapCoords().X, pDestination->GetMapCoords().Y);
  26.         display();
  27. }
  28. else
  29. {
  30.         if (megaDestination)
  31.         {
  32.                 auto destCell = CellClass::Coord2Cell(pFoot->Destination->GetCoords());
  33.                 append("Mega Destination = (%d, %d)", destCell.X, destCell.Y);
  34.                 display();
  35.         }
  36. }
复制代码


回复

使用道具 举报

发表于 2024-10-23 23:49:19 | 显示全部楼层
更正:我意思是选中显示,取消选中时不显示,不过大概没误解吧
回复

使用道具 举报

 楼主| 发表于 2024-10-24 00:26:51 | 显示全部楼层
kenosis 发表于 2024-10-23 23:49
更正:我意思是选中显示,取消选中时不显示,不过大概没误解吧

没误解
回复

使用道具 举报

发表于 2024-10-24 10:28:33 | 显示全部楼层
Handama 发表于 2024-10-23 22:15
这三个都加上了,但是我没看到有变化,原版里有用到吗?

代码是这样的

看上去是对的,具体怎么个没变化,输出不出来东西?
回复

使用道具 举报

发表于 2024-10-24 10:34:47 | 显示全部楼层
Handama 发表于 2024-10-23 22:15
这三个都加上了,但是我没看到有变化,原版里有用到吗?

代码是这样的

Mega应该是鼠标给的指令,FootClass的vt_entry_4A4到4B4都是处理Mega相关的。具体可以参考热茶的https://github.com/CrimRecya/YRpp4ida
回复

使用道具 举报

 楼主| 发表于 2024-10-24 11:02:15 来自手机 | 显示全部楼层
航味麻酱 发表于 2024-10-24 10:34
Mega应该是鼠标给的指令,FootClass的vt_entry_4A4到4B4都是处理Mega相关的。具体可以参考热茶的https:// ...

megamission一直输出的-1,其他两个由于先做了if判断,所以没有输出
回复

使用道具 举报

发表于 2024-10-24 11:06:08 | 显示全部楼层
Handama 发表于 2024-10-24 11:02
megamission一直输出的-1,其他两个由于先做了if判断,所以没有输出

手动给指令之后也是这样吗?
回复

使用道具 举报

 楼主| 发表于 2024-10-24 11:14:06 | 显示全部楼层
航味麻酱 发表于 2024-10-24 11:06
手动给指令之后也是这样吗?

是的,坦克步兵飞行器都试了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY论坛 |网站地图

GMT+8, 2025-10-7 13:20 , Processed in 0.066903 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表