Добрый день, многоуважаемые мапмейкеры. Я в гуи не нашёл способ отслеживать горячие клавиши, кроме стрелок клавиатуры и положения мышки. Как на Jass отслеживать клавишу, нажимаемую любым игроком??

Принятый ответ

Так я знаю что тут рефордж патч. Кстати какая ирония. Если человек на рефе - то на него думают что он на 126, если на 126, то ему предлагают реф решения. (Экстрасенсы мы так себе).
Кароче Сергей Пичугов, дело всё в том что в ГУИ рефорджа, нет примерно 80% функционала, что по факту добавлен в рефордж, он доступен только из кода на jass или lua/
Опять таки, я уже расписывал, что можно добавить все недостающие гуи функции
но видимо всеми игнорируется, ссылка за этот месяц проскакивает 3й раз
Если по сабжу, то на луа это выглядит вот так
Код будет выдран из каждой моей карты или на работке, везде тоже самое, видимо тоже никому не надо, зачем вообще всё открытым делаю
    -----------------------------------------------------------------OSKEY_Q
    local TrigPressQ = CreateTrigger()
    for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
        BlzTriggerRegisterPlayerKeyEvent(TrigPressQ, Player(i), OSKEY_Q, 0, true)
    end
    TriggerAddAction(TrigPressQ, function()
			print("кнопка нажата")
    end)
    local TrigDePressQ = CreateTrigger()
    for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
        BlzTriggerRegisterPlayerKeyEvent(TrigDePressQ, Player(i), OSKEY_Q, 0, false)

    end
    TriggerAddAction(TrigDePressQ, function()
			print("кнопка отжата")
    end)

На джасе попробую, но не обещаю ибо он слишком сложен для меня

Получилось, проверил, работает
function Trig_Q_Actions takes nothing returns nothing
call BJDebugMsg("Кнопка Q нажата")
endfunction

//===========================================================================
function InitTrig_Q takes nothing returns nothing
    set gg_trg_Q = CreateTrigger(  )
    call BlzTriggerRegisterPlayerKeyEvent(gg_trg_Q, Player(0), OSKEY_Q, 0, true)
    call TriggerAddAction(gg_trg_Q, function Trig_Q_Actions)   
endfunction

Там ещё 5000 нюансов, ибо в патче 132.2 добавили залипание на это событие
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
22
3 года назад
1
В мемхаке можно отследить нажатие любой клавиши, но только локально... То есть, подойдет только для изменений камеры, мультибордов и все, собственно. Можно синхронизировать, но будет задержка 2 секунды в ленивом варианте, и 0.2 в прошаренном.
Уже задавал похожий вопрос, ответы схожи, вот ссылочка
1
8
3 года назад
1
В патчах выше 1.26 добавили прочие кнопки и мышь. В старых картах извращались через способности, но такое себе.
2
32
3 года назад
2
Какой Патч? На 1.26 кроме стрелок и ескейпа ничего не отследить стандартными средствами, в наработке именуемой - мемхак такая опция есть, но не без проблем и для начинающего человека сложновато.
2
32
3 года назад
2
Так я знаю что тут рефордж патч. Кстати какая ирония. Если человек на рефе - то на него думают что он на 126, если на 126, то ему предлагают реф решения. (Экстрасенсы мы так себе).
Кароче Сергей Пичугов, дело всё в том что в ГУИ рефорджа, нет примерно 80% функционала, что по факту добавлен в рефордж, он доступен только из кода на jass или lua/
Опять таки, я уже расписывал, что можно добавить все недостающие гуи функции
но видимо всеми игнорируется, ссылка за этот месяц проскакивает 3й раз
Если по сабжу, то на луа это выглядит вот так
Код будет выдран из каждой моей карты или на работке, везде тоже самое, видимо тоже никому не надо, зачем вообще всё открытым делаю
    -----------------------------------------------------------------OSKEY_Q
    local TrigPressQ = CreateTrigger()
    for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
        BlzTriggerRegisterPlayerKeyEvent(TrigPressQ, Player(i), OSKEY_Q, 0, true)
    end
    TriggerAddAction(TrigPressQ, function()
			print("кнопка нажата")
    end)
    local TrigDePressQ = CreateTrigger()
    for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
        BlzTriggerRegisterPlayerKeyEvent(TrigDePressQ, Player(i), OSKEY_Q, 0, false)

    end
    TriggerAddAction(TrigDePressQ, function()
			print("кнопка отжата")
    end)

На джасе попробую, но не обещаю ибо он слишком сложен для меня

Получилось, проверил, работает
function Trig_Q_Actions takes nothing returns nothing
call BJDebugMsg("Кнопка Q нажата")
endfunction

//===========================================================================
function InitTrig_Q takes nothing returns nothing
    set gg_trg_Q = CreateTrigger(  )
    call BlzTriggerRegisterPlayerKeyEvent(gg_trg_Q, Player(0), OSKEY_Q, 0, true)
    call TriggerAddAction(gg_trg_Q, function Trig_Q_Actions)   
endfunction

Там ещё 5000 нюансов, ибо в патче 132.2 добавили залипание на это событие
Загруженные файлы
Принятый ответ
0
3
3 года назад
Отредактирован Сергей Пичугов
0
Спасибо, и крайне извиняюсь за дилетантизм и нежелание искать информацию, но чем вы пользуетесь, что бы скрипты выглядели так, как на скрине и работает ли это в редакторе Рефорджа? (Да речь в вопросе про реф)
Загруженные файлы
0
22
3 года назад
0
Сергей Пичугов:
Спасибо, и крайне извиняюсь за дилетантизм и нежелание искать информацию, но чем вы пользуетесь, что бы скрипты выглядели так, как на скрине и работает ли это в редакторе Рефорджа? (Да речь в вопросе про реф)
Скорее всего, это TESH, вот ссылочка
0
32
3 года назад
0
я использую Intellej Idea вместо WE
и у меня этот код вообще вот так выглядит
На скриншоте где jass там используется TESH
Загруженные файлы
0
3
3 года назад
Отредактирован Сергей Пичугов
0
У меня возникла непонятная ошибка, казалось бы, в стандартном коду, который работал и объяснялся здесь - xgm.guru/p/wc3/jass_triggers. Но мне как будто нужно заранее объявлять триггер. Я пробовал делать через создание переменной вручную и замену gg_trg на udg, но скрипт не работал при нажатии клавиши.
Загруженные файлы
0
32
3 года назад
0
Не шарю за джасс, скорее всего переменная gg_trg_selectUnit не существует в глобальном скопе, по причине переименования триггера. И реальное название триггера не selectUnit

Сделай скрин триггера как у меня
я же вот прикладывал спецом с именем самого тригера
0
22
3 года назад
0
Сергей Пичугов:
У меня возникла непонятная ошибка, казалось бы, в стандартном коду, который работал и объяснялся здесь - xgm.guru/p/wc3/jass_triggers. Но мне как будто нужно заранее объявлять триггер. Я пробовал делать через создание переменной вручную и замену gg_trg на udg, но скрипт не работал при нажатии клавиши.
Название триггера, то что слева, не совпадает с названием переменной, которая в коде
Можешь написать local trigger gg_trg_selectUnit и все заработает
Чтобы оставить комментарий, пожалуйста, войдите на сайт.