反正也就几行代码我就不发附件了直接发帖子
0秒嗑药
一般看别人的0秒嗑药/汽油是把药的时间改成0
我这里实现是直接patch时间函数过滤,这个功能得落地开不然会导致跳伞时不能动,不过这也引发了一个很好玩的bug,机器人也不会动,因为机器人的动作是本地运算的
好了直接上代码
[C++] 纯文本查看 复制代码
DWORD addrTimeFilter = gameBase + 0xC460ED;
DWORD addrRetTimeFilter = addrTimeFilter + 0x5;
_declspec(naked) void timeFilter()
{
static double time;
__asm {
movsd xmm0, [eax + 0x8]
movsd[time], xmm0
}
if (time == 12.0 || time == 8.0 || time == 6.0 || time == 3.0)time = 0.0;
__asm {
movsd xmm0, [time]
jmp dword ptr[addrRetTimeFilter]
}
}
void TooNaive(bool Switch)
{
if (Switch)
{
MH_EnableHook((LPVOID)addrTimeFilter);
}
else
{
MH_DisableHook((LPVOID)addrTimeFilter);
}
}
锁定准星
这个没啥BUG能一直开着 开启后左右弹道振幅降低了些 但是上下振幅没有改变
算是一个没啥卵用的功能,上图里面也开启了锁定准星功能
[C++] 纯文本查看 复制代码
DWORD addrForceLock = gameBase + 0xF4E6BD;
DWORD addrRetForceLock = addrForceLock + 0xC;
MH_CreateHook((LPVOID)addrForceLock, ForceFilter, NULL);
_declspec(naked) void ForceFilter()
{
__asm
{
cmp dword ptr[ecx + 0x30], 0x41A00000
jne orgX
cmp byte ptr[ecx + 0x1F], 0x3F
jne noLeft
mov dword ptr[ecx + 0x2C], 0x4181999A
jmp noX
noLeft :
cmp byte ptr[ecx + 0x1F], 0xBF
jne orgX
mov dword ptr[ecx + 0x2C], 0x42033334
jmp noX
orgX :
movss[ecx + 0x2C], xmm2
noX :
mov al, 1
cmp dword ptr[ecx + 0x2C], 0x41C4E148
jne orgY
cmp byte ptr[ecx + 0x1B], 0x42
jne noTop
mov dword ptr[ecx + 0x30], 0x41E1999A
jmp end
noTop :
cmp byte ptr[ecx + 0x1B], 0xC2
jne orgY
mov dword ptr[ecx + 0x30], 0x413B3334
jmp end
orgY :
movss[ecx + 0x30], xmm1
end :
jmp dword ptr[addrRetForceLock]
}
}
void LockForce(bool Switch)
{
if (Switch)
{
MH_EnableHook((LPVOID)addrForceLock);
}
else
{
MH_DisableHook((LPVOID)addrForceLock);
}
} |