Приветствую, начал изучать vjass, появился первый вопрос, как забиндить способность на клавиши 1, 2 и.т.д. видел на ютубе реализовать ума не хватает научился пока только с интерфейсом работать.

Survivalist,
как забиндить способность на клавиши 1, 2,3 итд
можно по-разному реализовывать. как у него реализовано мне неведомо
  1. Можно отслеживать положение курсора, находится ли он внутри кнопки. И одновременно отслеживать нажатие кнопки клавиатуры 1,2,3,4,5 итд. И менять.
  2. Можно перетаскивать фрейм. Допустим, у вас есть панель способностей как на скрине, а есть еше большое окно со всеми способностями и описанием.
  3. 2.1. Можно фрейм тащить за курсором, у вас есть куча ячеек, и их нужно тоже проверять на присутствие курсора внутри. и когда курсор окажется в ячейке 1, отслеживаем клик, и меняете. Но реализация сложна из-за трудности определения положения мыши
  4. 2.2. Можно просто в большом окне изменить. Там кнопочка изменить. И когда жмете на фрейм-кнопку, вам открывают прицел, и вы выбираете.
что мы помним про клавиши
Если нужно зафокусить какую-нибудь клавишу, то можно применить два способа:
  1. указать в самом fdf-file (как на хайве учат)
  1. или попробовать отслеживать событиями нажатия на клавиши (пример специальные клавиши вроде Shift и похожие нельзя будет отслеживать). Но найдено решение
пример с Shift - нажатие и отпускание
do
    local InitGlobalsOrigin = InitGlobals -- хукаем функцию InitGlobals

	function InitGlobals()
		InitGlobalsOrigin()
        --чекаем отпускание Shift
            --https://www.hiveworkshop.com/threads/oskey-player-key-event.319903/
            local ShiftOn = 0
            TimerStart(CreateTimer(),0,false, function()
                print("Create Keys")
                for index = 8,255 do
                    local trigger = CreateTrigger()
                            
                    TriggerAddAction(trigger, function()
                        if index == 160 and ShiftOn ~= BlzGetTriggerPlayerMetaKey() then
                            if BlzGetTriggerPlayerMetaKey() == 1 then
                                ShiftOn = 1
                                print("Shift нажат")
                            elseif BlzGetTriggerPlayerMetaKey() == 0 then
                                ShiftOn = 0
                                print("Shift отпущен")
                            end
                            --if GetLocalPlayer() ~= nil then
                            --    ShiftOn = BlzGetTriggerPlayerMetaKey()
                            --end
                        end
                                
                        --print("OsKey:",index, "meta",BlzGetTriggerPlayerMetaKey())
                    end)
                    local key = ConvertOsKeyType(index)
                        for metaKey = 0,15,1 do
                            BlzTriggerRegisterPlayerKeyEvent(trigger, Player(0), key, metaKey, true)
                            BlzTriggerRegisterPlayerKeyEvent(trigger, Player(0), key, metaKey, false)
                        end

                end
                        
                print("Done")
                print("Press Keys to show the index of that oskey and its metakey")
            end)
	end
end
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Есть в варике. ctrl + 1,2,3,4,5,6,7.. - бинд отряда
Ещё в справке описаны подобные возможности.
ответ
Uint32, да даже на ходу, ну именно в моей карте этого не было, но это возможно... на всё том же мемхаке
выгружаем библиотеку из памяти
правим конфиг
снова подгружаем библиотеку
Вуаля хоткей изменен
Но это всё мемхак и только 126 патч
На 131+ есть более крутая фишка, это смена хоткея вообще и смена описания
Только я так и не пойму зачем тебе это.. на мемхаке это всё сложно и не актуально, ибо есть инструменты по круче

Кстати я не замечал в 131, в 132 заметил, что хоткей способности дописывается сам, достаточно его указать лишь в параметрах РО

32
А причем тут жасс то, это сторонний софт, отдельные программы иди длл которые подгружаются в игру.
1
quq_CCCP, это скорее всего как-то на фреймах делают и биндят их

Карта на рефордже сделана.
Загруженные файлы
27
Survivalist,
как забиндить способность на клавиши 1, 2,3 итд
можно по-разному реализовывать. как у него реализовано мне неведомо
  1. Можно отслеживать положение курсора, находится ли он внутри кнопки. И одновременно отслеживать нажатие кнопки клавиатуры 1,2,3,4,5 итд. И менять.
  2. Можно перетаскивать фрейм. Допустим, у вас есть панель способностей как на скрине, а есть еше большое окно со всеми способностями и описанием.
  3. 2.1. Можно фрейм тащить за курсором, у вас есть куча ячеек, и их нужно тоже проверять на присутствие курсора внутри. и когда курсор окажется в ячейке 1, отслеживаем клик, и меняете. Но реализация сложна из-за трудности определения положения мыши
  4. 2.2. Можно просто в большом окне изменить. Там кнопочка изменить. И когда жмете на фрейм-кнопку, вам открывают прицел, и вы выбираете.
что мы помним про клавиши
Если нужно зафокусить какую-нибудь клавишу, то можно применить два способа:
  1. указать в самом fdf-file (как на хайве учат)
  1. или попробовать отслеживать событиями нажатия на клавиши (пример специальные клавиши вроде Shift и похожие нельзя будет отслеживать). Но найдено решение
пример с Shift - нажатие и отпускание
do
    local InitGlobalsOrigin = InitGlobals -- хукаем функцию InitGlobals

	function InitGlobals()
		InitGlobalsOrigin()
        --чекаем отпускание Shift
            --https://www.hiveworkshop.com/threads/oskey-player-key-event.319903/
            local ShiftOn = 0
            TimerStart(CreateTimer(),0,false, function()
                print("Create Keys")
                for index = 8,255 do
                    local trigger = CreateTrigger()
                            
                    TriggerAddAction(trigger, function()
                        if index == 160 and ShiftOn ~= BlzGetTriggerPlayerMetaKey() then
                            if BlzGetTriggerPlayerMetaKey() == 1 then
                                ShiftOn = 1
                                print("Shift нажат")
                            elseif BlzGetTriggerPlayerMetaKey() == 0 then
                                ShiftOn = 0
                                print("Shift отпущен")
                            end
                            --if GetLocalPlayer() ~= nil then
                            --    ShiftOn = BlzGetTriggerPlayerMetaKey()
                            --end
                        end
                                
                        --print("OsKey:",index, "meta",BlzGetTriggerPlayerMetaKey())
                    end)
                    local key = ConvertOsKeyType(index)
                        for metaKey = 0,15,1 do
                            BlzTriggerRegisterPlayerKeyEvent(trigger, Player(0), key, metaKey, true)
                            BlzTriggerRegisterPlayerKeyEvent(trigger, Player(0), key, metaKey, false)
                        end

                end
                        
                print("Done")
                print("Press Keys to show the index of that oskey and its metakey")
            end)
	end
end
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.