dota_ability_execute nТак в доте можно и не эмулировать нажатие кнопки, там вроде есть функция, отвечающая за взаимодействие скиллов и предметов
сейчас же это вроде запретили делать по алиасам и другой хуйне, не?dota_ability_execute n
const auto helper_PressKey = [&dota_hwnd](DWORD vkey)
{
if (GetForegroundWindow() == dota_hwnd)
{
const auto key_scancode = WindowsAPI::mapVKey(vkey);
WindowsAPI::sendInput(std::to_array(
{
INPUT{.type = INPUT_KEYBOARD, .ki{.wScan = key_scancode, .dwFlags = KEYEVENTF_SCANCODE} },
INPUT{.type = INPUT_KEYBOARD, .ki{.wScan = key_scancode, .dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP }}
}
));
}
};
пт на жёлтыйSendInput
Пожалуйста, авторизуйтесь для просмотра ссылки.INPUT.type = INPUT_KEYBOARD
INPUT.ki.wScan = сканкод_твоей_кнопки
INPUT.ki.dwFlags = KEYEVENTF_SCANCODE и при отжатии клавиши заодно KEYEVENTF_KEYUP
вкоды(VK_F1 например) мапить в сканкоды через
MapVirtualKeyA
Пожалуйста, авторизуйтесь для просмотра ссылки.SendInput посылает в текущее окно(ну поэтому и чек что дота на переднем плане иначе смысла нет что-то отсылать).
главное именно сканкоды отсылать а не вкоды(иначе доте похуй будет на твои нажатия)
helper_PressKey('Q');C++:const auto helper_PressKey = [&dota_hwnd](DWORD vkey) { if (GetForegroundWindow() == dota_hwnd) { const auto key_scancode = WindowsAPI::mapVKey(vkey); WindowsAPI::sendInput(std::to_array( { INPUT{.type = INPUT_KEYBOARD, .ki{.wScan = key_scancode, .dwFlags = KEYEVENTF_SCANCODE} }, INPUT{.type = INPUT_KEYBOARD, .ki{.wScan = key_scancode, .dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP }} } )); } };
helper_PressKey('E');
helper_PressKey('Z');
helper_PressKey('X');
helper_PressKey('C');
helper_PressKey('V');
helper_PressKey('B');
helper_PressKey('N');
это режим для дальтоников(dota_hud_colorblind 1), меня прикалывают эти цвета больше чем дефолтные) там и хп синий а не зеленыйпт на жёлтый
можешь показать что находиться в sendInput?SendInput
Пожалуйста, авторизуйтесь для просмотра ссылки.INPUT.type = INPUT_KEYBOARD
INPUT.ki.wScan = сканкод_твоей_кнопки
INPUT.ki.dwFlags = KEYEVENTF_SCANCODE и при отжатии клавиши заодно KEYEVENTF_KEYUP
вкоды(VK_F1 например) мапить в сканкоды через
MapVirtualKeyA
Пожалуйста, авторизуйтесь для просмотра ссылки.SendInput посылает в текущее окно(ну поэтому и чек что дота на переднем плане иначе смысла нет что-то отсылать).
главное именно сканкоды отсылать а не вкоды(иначе доте похуй будет на твои нажатия)
helper_PressKey('Q');C++:const auto helper_PressKey = [&dota_hwnd](DWORD vkey) { if (GetForegroundWindow() == dota_hwnd) { const auto key_scancode = WindowsAPI::mapVKey(vkey); WindowsAPI::sendInput(std::to_array( { INPUT{.type = INPUT_KEYBOARD, .ki{.wScan = key_scancode, .dwFlags = KEYEVENTF_SCANCODE} }, INPUT{.type = INPUT_KEYBOARD, .ki{.wScan = key_scancode, .dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP }} } )); } };
helper_PressKey('E');
helper_PressKey('Z');
helper_PressKey('X');
helper_PressKey('C');
helper_PressKey('V');
helper_PressKey('B');
helper_PressKey('N');
можешь показать что находиться в sendInput?
//warning: shitcode!
template<std::size_t inputs_size>
void sendInput(const std::array<INPUT, inputs_size>& inputs)
{
if(
const auto& [sent, loc] = WrapAPI(SendInput(inputs_size, SmartCast<LPINPUT>(inputs.data()), sizeof(INPUT)));
sent != inputs_size
)
{
throw WinApiError{ loc };
}
}
можно пожалуйста скинуть откуда берётся dota_hwnd?C++://warning: shitcode! template<std::size_t inputs_size> void sendInput(const std::array<INPUT, inputs_size>& inputs) { if( const auto& [sent, loc] = WrapAPI(SendInput(inputs_size, SmartCast<LPINPUT>(inputs.data()), sizeof(INPUT))); sent != inputs_size ) { throw WinApiError{ loc }; } }
//данный архив содержит ужасный быдлокод написанный быстро по фану на коленках и на говняный манер и на который не стоит ориентироватьсяможно пожалуйста скинуть фулл код в лс? разобраться не могу ;(
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz