Добавлен , опубликован
МЕМХАК ОБЯЗАТЕЛЕН
1, 2, 3 погнали ....
Значит так первое что нужно это создать два файла через блокнот, один говорит какие файлы подгружать (сохраните его как [Имя файла].toc), другой описывает фреймы (сохраните его как [Имя файла].fdf)
Сделали, молодцы, а теперь бегом что-то писать внутри пустых файлов, для тупых говорю что изменяем все через блокнот, либо через другой редактор что работает с текстовыми файлами.
Содержание [Имя файла].toc
[Имя файла].fdf
Все просто ибо он просто подключает файлы, идем дальше
Содержание [Имя файла].fdf
Frame "BACKDROP" "Backdrop" {

}

Frame "BUTTON" "Button" {

}

Frame "TEXT" "Text" {

}
Первое в создании это тип фрейма, второе это имя, вы их здесь можете заранее расписать, но у нас быстрый гайд
теперь импортируем оба файла в кастомку
Теперь переходим к коду, для примера мы создадим кнопку и текст, что будет скрываться и показываться по нажатию
Прежде всего мы запихаем в код мемхака запуск нашего тригера, чтобы с начала загрузился мемхак и ничего не сломалось, хотя сейчас найдутся более умные и мне палку засунут во внутренний мир.
Короче ищем это в папке мемхака (InitMemoryHack)
После ищем строку (Your Stuff) P.s. Почти в самом низу
После этого вызываем свой тригер (call gg_trg_[Имя тригера])
Поздравляю вы близки к суициду
В самом тригере с начала создадим переменные
globals
    integer FrameGlobalId = -1 // айдишники для фреймов - их уникальный номер
    boolean ButtonShow = false // просто переменная которая помнит скрыта кнопка или нет
    integer bj_lastClickedFrame = 0 // запись последнего нажатого фрейма
    integer ButtonBackdrop //  фрейм что будет отвечать как фундамент на котором будет все строиться - родитель для последующих фреймов
    integer Text // фрейм для текста
    integer Button // фрейм для кнопки
    boolean LMBTap = true // будем запоминать жали мы или ещё по какому-то фрейму или нет
endglobals

// функция что в принципе не обязательна если хотите писать айдишники всем фреймам вручную, но если вам в падлу то надо
function CreateFFrame takes string baseframe, integer parent returns integer
    set FrameGlobalId = FrameGlobalId + 1
    return CreateFrame( baseframe, parent, FrameGlobalId )
endfunction


//проверка нажатия
function Check takes nothing returns nothing
    local integer frame = FindCLayerUnderCursor( ) // находим фрейм под курсором
    if IsKeyPressed( 0x01 ) then // проверяем нажата ли ЛЕВАЯ клавиша мыши в данный момент, если нужна правая то 0x02
        if LMBTap then // проверяем нажимали ли ранее (Check ведь каждые 0.1 секунду происхjlbn)
            set LMBTap = false //Если нет, говорим что нажимаем
            
            set bj_lastClickedFrame = frame // записываем последний фрейм что нажали
            
            if bj_lastClickedFrame == Button then // проверяем кнопка ли фрейм
                call SetFrameSize( ButtonBackdrop, 0.04, 0.04 ) // Если да то уменьшаем (Типо анимация)
            endif
        endif
    else
        set LMBTap = true //говорим что отпустили
        
        if bj_lastClickedFrame == Button then //если последний нажатый фрейм кнопка
            set bj_lastClickedFrame = 0 //стираем из переменой последний фрейм
            call SetFrameSize( ButtonBackdrop, 0.05, 0.05 ) // восстанавливаем размер
            if ButtonShow then //Проверяем показан ли текст
                call HideFrame(Text) //Если да то прячем
                set ButtonShow = false //Меняем на состояние текста, что он спрятан
            else
                call ShowFrame(Text) //Если нет, показываем
                set ButtonShow = true //Меняем на состояние текста, что он показан
            endif
        endif
    endif
endfunction

// ускоряемся
function Trig_MyFrame_Actions takes nothing returns nothing
    call LoadTOCFile( "FramesTOC.toc" ) //подключение файла
    // все имена такие же как вы их написали в .fdf файле
    set ButtonBackdrop = CreateFFrame( "Backdrop", pGameUI ) //создаем основу для последующих фреймов
    call SetFrameAbsolutePoint( ButtonBackdrop, ANCHOR_CENTER, 0.40, 0.40 ) 
    call SetFrameSize( ButtonBackdrop, 0.05, 0.05 ) // размеры
    call SetFrameTexture( ButtonBackdrop, "ReplaceableTextures\\CommandButtons\\BTNAssassin.blp", false ) // Чисто текстура
    
    set Text = CreateFFrame( "Text", ButtonBackdrop ) // Создаем текст
    call SetFramePoint( Text, ANCHOR_TOP, ButtonBackdrop, ANCHOR_BOTTOM, 0.00, 0.00 )
    call SetFrameSize( Text, 0.10, 0.00 ) //Опять размеры шаманим
    call SetFrameFont( Text, "Fonts\\FRIZQT__.TTF", 0.015, 0 ) //Шрифт, все шрифты лежат в файлах игры и я не отвечаю за их непонятные имена, ну там размер шрифта потом и типо тень, но она плохо работает 
    call SetFrameText( Text, "I love TD" ) // Установление текста фрейму
    call HideFrame( Text ) //Прячем
    set Button = CreateFFrame( "Button", ButtonBackdrop ) // Создали кнопку, повторюсь что имя из fdf файла
    call SetFramePoint( Button, ANCHOR_CENTER, ButtonBackdrop, ANCHOR_CENTER, 0.00, 0.00 ) 
    call SetFrameSize( Button, 0.05, 0.05 ) //Опять размеры шаманим
    
    call TimerStart( CreateTimer( ), 0.01, true, function Check ) // Запускаем Check каждые 0.01 сек
endfunction

//Ну теперь если хотим запускать это не как функцию а как тригер
function InitTrig_MyFrame takes nothing returns nothing
    set gg_trg_MyFrame = CreateTrigger(  )
    call TriggerAddAction( gg_trg_MyFrame, function Trig_MyFrame_Actions )
endfunction
А там ещё ТД по приколу с примером ловите
`
ОЖИДАНИЕ РЕКЛАМЫ...
22
А где фреймы для глупых?
Чтобы оставить комментарий, пожалуйста, войдите на сайт.