как переместить мышь на неполный пиксель?
Есть код:
Sleep(11);
mouse_event((0x0001), -3, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), -3, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), -3, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), -3, 4, 0, 0);
Sleep(11);
Но проблема в том что,если я задам какой нибудь коэффициент для какой нибудь оси,типа 1.2,то произойдет ошибка округления.Я понимаю,что чисто физически невозможно переместить мышь на пол пикселя,так как это "базис".Но может быть есть какие нибудь способы переместить мышь например не на -3 ,а на -3.6?
P.S уточнение. Программа представляет из себя макрос для контроля отдачи в игре.У меня функция которая вызывается когда мы нажимаем ЛКМ,и в ней перемещения записаны таким образом,что отдача оружия в игре гасится и как будто ее нету:
void ak47()
{
Sleep(11);
mouse_event((0x0001), -3, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), -3, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), -3, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), -3, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), -3, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), -3, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), -2, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), -2, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), -2, 3, 0, 0);
Sleep(11);
mouse_event((0x0001), -2, 3, 0, 0);
Sleep(11);
mouse_event((0x0001), 1, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), 1, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), 1, 4, 0, 0);
Sleep(11);
mouse_event((0x0001), 1, 4, 0, 0);
}
Но проблема в том,что в некоторых случаях,отдача может меняться на несколько процентов,в таких случаях идеально было бы умножать смещения на процент/100,то так нельзя,в этом то и проблема.
Ответы (1 шт):
В общем, как и писал @Kromster, используйте накопление
void ak47()
{
double coefficient = 1.2;
double step1 = -3.0 * coefficient;
double step2 = -2.0 * coefficient;
double step3 = 1.0 * coefficient;
double current = 0;
Sleep(11);
current += step1; // current ~ -3.6; mouse moved -3px
mouse_event((0x0001), (long)current, 4, 0, 0);
Sleep(11);
current -= (long)step1; // current ~ -0.6
current += step1; // current ~ -4.2; mouse moved -4px
mouse_event((0x0001), (long)current, 4, 0, 0);
...
}