МЕМХАК ОБЯЗАТЕЛЕН
1, 2, 3 погнали ....
Значит так первое что нужно это создать два файла через блокнот, один говорит какие файлы подгружать (сохраните его как [Имя файла].toc), другой описывает фреймы (сохраните его как [Имя файла].fdf)
1, 2, 3 погнали ....
Значит так первое что нужно это создать два файла через блокнот, один говорит какие файлы подгружать (сохраните его как [Имя файла].toc), другой описывает фреймы (сохраните его как [Имя файла].fdf)
Сделали, молодцы, а теперь бегом что-то писать внутри пустых файлов, для тупых говорю что изменяем все через блокнот, либо через другой редактор что работает с текстовыми файлами.
Содержание [Имя файла].toc
[Имя файла].fdf
Все просто ибо он просто подключает файлы, идем дальше
Содержание [Имя файла].fdf
Содержание [Имя файла].fdf
Frame "BACKDROP" "Backdrop" {
}
Frame "BUTTON" "Button" {
}
Frame "TEXT" "Text" {
}
Первое в создании это тип фрейма, второе это имя, вы их здесь можете заранее расписать, но у нас быстрый гайд
теперь импортируем оба файла в кастомку
Теперь переходим к коду, для примера мы создадим кнопку и текст, что будет скрываться и показываться по нажатию
Прежде всего мы запихаем в код мемхака запуск нашего тригера, чтобы с начала загрузился мемхак и ничего не сломалось, хотя сейчас найдутся более умные и мне палку засунут во внутренний мир.
Короче ищем это в папке мемхака (InitMemoryHack)
Короче ищем это в папке мемхака (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
А там ещё ТД по приколу с примером ловите
Ред. Useless cultist