跳转至

创建其他类型的光照破解

还有许多其他创建光照破解的方法,但它们因游戏而异。影响游戏光照的一种创造性方法是 NOP 掉游戏用来调用 device->SetRenderState() 函数的代码。由于这个函数用于设置全局环境光强度,禁用对它的调用会让 Direct3D 保持默认光照设置,使一切可见。这也许是最强大的光照破解类型,但它要求你的机器人知道要 NOP 的光照代码地址。

还有基于内存的光照破解。在一些游戏中,玩家和生物会发出不同颜色和强度的光,通常取决于它们的装备、坐骑或激活的法术等属性。如果你理解游戏生物列表的结构,你可以直接修改决定生物光照级别的值。

例如,想象一款游戏中角色在治疗或强化法术下会发出淡蓝色光球。游戏内存中某处有与每个生物相关的值,告诉游戏生物应该发出的光的颜色和强度。如果你能在内存中找到这些值,就可以更改它们,让生物有效地发出光球。这类光照破解常用于 2D 俯视风格的游戏,因为单个生物周围的光球会产生酷炫的艺术效果,同时照亮屏幕的重要部分。不过在 3D 游戏中,这类破解只会把生物变成跑来跑去的光球。

你也可以钩住游戏 Direct3D 设备 VF 表索引 51 处的 SetLight() 成员函数。然后,每次调用钩子回调时,你可以在把拦截的 D3DLIGHT9 光照结构传给原始函数前修改它的属性。例如,你可以把所有光改为 D3DLIGHT_POINT 类型,让游戏中任何现有光源像灯泡一样向各个方向辐射光线。这种光照破解非常强大和精确,但可能产生令人不安的视觉效果。它在任何没有光照的环境中往往也会失效,而且不透明的障碍物仍然会阻挡点光源。

光照破解非常强大,但它们不会揭示任何东西。如果信息藏在障碍物后面,而不是被黑暗遮挡,你需要透视(wallhack)来揭示它。