Бинд клавиш в Interface.u

BadStealth

Величайший
Партнер
Emu-Dev
Победитель в номинации 2023
Победитель в номинации 2022
Победитель в номинации 2021
Победитель в номинации 2020
Просветитель
Клиент разработчик
Старожил I степени
Преподаватель
За веру и верность форуму
Победитель в номинации 2019
Сообщения
309
Розыгрыши
0
Репутация
419
Реакции
528
Баллы
1 573
Ребят хотел спросить!
Как назначают клавиши к примеру Shift+Click для того чтобы можно было при таком клике выполнять какое-то действие.
Просто до этого чет все руки не доходили а сейчас задался вопросом и немного застопорился. Давно не занимался- туплю наверное. Буду рад пинку в нужную сторону!
Просто хотел чтобы при Шифт+Клик по окну таргета ставилась метка на радаре и стрелочка над головой указывала.
 
Шифт+Клик по дефолту уже кореяками сделан. Вроде Action пакет, а в нем один из байтов должен отвечать за зажатие Shift.
 
  • Мне нравится
Реакции: kick
Есть экшены связанные с мышью. Поищи в сорсах упоминание мыши.
 
В сурсах есть такое
Код:
// Mouse events
event OnLButtonDown( WindowHandle a_WindowHandle, int X, int Y );
event OnLButtonUp( WindowHandle a_WindowHandle, int X, int Y );
event OnLButtonDblClick( WindowHandle a_WindowHandle, int X, int Y );
event OnRButtonDown( WindowHandle a_WindowHandle, int X, int Y );
event OnRButtonUp( WindowHandle a_WindowHandle, int X, int Y );
event OnRButtonDblClick( WindowHandle a_WindowHandle, int X, int Y );
event OnMButtonDown( WindowHandle a_WindowHandle, int X, int Y );
event OnMButtonUp( WindowHandle a_WindowHandle, int X, int Y );
event OnMouseOver( WindowHandle a_WindowHandle );
event OnMouseOut( WindowHandle a_WindowHandle );
event OnMouseMove( WindowHandle a_WindowHandle, int X, int Y );
Но как к этому к примеру Шифт прикрутить- вот о чем я спрашиваю.
 
Работать с исходниками l2p и иметь реализацию shift+click, но при этом нельзя посмотреть как там сделано.
 
В сурсах есть такое
Код:
// Mouse events
event OnLButtonDown( WindowHandle a_WindowHandle, int X, int Y );
event OnLButtonUp( WindowHandle a_WindowHandle, int X, int Y );
event OnLButtonDblClick( WindowHandle a_WindowHandle, int X, int Y );
event OnRButtonDown( WindowHandle a_WindowHandle, int X, int Y );
event OnRButtonUp( WindowHandle a_WindowHandle, int X, int Y );
event OnRButtonDblClick( WindowHandle a_WindowHandle, int X, int Y );
event OnMButtonDown( WindowHandle a_WindowHandle, int X, int Y );
event OnMButtonUp( WindowHandle a_WindowHandle, int X, int Y );
event OnMouseOver( WindowHandle a_WindowHandle );
event OnMouseOut( WindowHandle a_WindowHandle );
event OnMouseMove( WindowHandle a_WindowHandle, int X, int Y );
Но как к этому к примеру Шифт прикрутить- вот о чем я спрашиваю.
Там есть события OnKeyUp/OnKeyDown? Как вариант - создаешь глобальную переменную и в нее записываешь текущее состояние нажатия Shift в этих событиях. Ну а уже в OnLButtonDown чекаешь эту переменную.
Если там можно использовать WinAPI, то возможно можно это дело упростить (там вроде какая-то функция была, если не ошибаюсь).
 
Вобщем решил вопрос. ХЗ правильно или нет, но работает.
Была функция написания в ПМ нажатием правой кнопки мышки по окну таргета.
Код:
function OnRButtonUp( WindowHandle a_WindowHandle, int X, int Y )
{
    local Rect rectWnd;
    local UserInfo userinfo;

    dlgText = DialogGetString();
    
    rectWnd = Me.GetRect();
    if (X > rectWnd.nX)
    {
        GetTargetInfo(userinfo);
        SetChatMessage( "\"" $ userinfo.Name $ " " );
        ChatEditBox.ReleaseFocus();
    }
}
Поискав по сурсу сделал так и все работает.
Код:
function OnRButtonUp( WindowHandle a_WindowHandle, int X, int Y )
{
    local Rect rectWnd;
    local UserInfo userinfo;
    
    local bool subkey;
    subkeybool3 = false;

    dlgText = DialogGetString();
    
    subkey = class'InputAPI'.static.IsShiftPressed();
    
    if (subkey)
    {   
        rectWnd = Me.GetRect();
        if (X > rectWnd.nX)
        {
            GetTargetInfo(userinfo);
            SetChatMessage( "\"" $ userinfo.Name $ " " );
            ChatEditBox.ReleaseFocus();
        }
    }
}
Проверил все работает и всего 3 строчки кода.
 
Назад
Сверху Снизу