public SimulationKeys(MemRWer g, CallTool.Function f) { WinIo.KeyUpEx(VKKey.VK_DOWN); WinIo.KeyUpEx(VKKey.VK_UP); WinIo.KeyUpEx(VKKey.VK_LEFT); WinIo.KeyUpEx(VKKey.VK_RIGHT); gMrw = g; fun = f; }
public void moveThread() { if (targetX > 0 && targetY > 0) { int addr = gMrw.readInt32(baseAddr.dwBase_Character); int currX, currY; //当前x , y if (firstMovDir) //上下优先模式 { if (Math.Abs((currY = fun.getObjPos(addr).y) - targetY) > alwY) //当y轴当前坐标小于容差 { if (currY - targetY > 0) // 当前坐标位于目标坐标上边 { WinIo.KeyPressEx(VKKey.VK_UP); } else { WinIo.KeyPressEx(VKKey.VK_DOWN); } } if (Math.Abs((currX = fun.getObjPos(addr).x) - targetX) > alwX) //当x轴当前坐标小于容差 { if (currX - targetX > 0) // 当前坐标位于目标坐标上边 { WinIo.KeyPressEx(VKKey.VK_LEFT); } else { WinIo.KeyPressEx(VKKey.VK_RIGHT); } } WinIo.KeyUpEx(VKKey.VK_LEFT); WinIo.KeyUpEx(VKKey.VK_RIGHT); WinIo.KeyUpEx(VKKey.VK_DOWN); WinIo.KeyUpEx(VKKey.VK_UP); } else { if (Math.Abs((currX = fun.getObjPos(addr).x) - targetX) > alwX) //当x轴当前坐标小于容差 { if (currX - targetX > 0) // 当前坐标位于目标坐标上边 { WinIo.KeyPressEx(VKKey.VK_LEFT); } else { WinIo.KeyPressEx(VKKey.VK_RIGHT); } } if (Math.Abs((currY = fun.getObjPos(addr).y) - targetY) > alwY) //当y轴当前坐标小于容差 { if (currY - targetY > 0) // 当前坐标位于目标坐标上边 { WinIo.KeyPressEx(VKKey.VK_UP); } else { WinIo.KeyPressEx(VKKey.VK_DOWN); } } WinIo.KeyUpEx(VKKey.VK_LEFT); WinIo.KeyUpEx(VKKey.VK_RIGHT); WinIo.KeyUpEx(VKKey.VK_DOWN); WinIo.KeyUpEx(VKKey.VK_UP); } } }