|
Misc Uopilot - GML Прибамбасы к пилоту |
|
|
EL-GReeN |
29.7.2012, 19:58
|

    
Journeyman
Сообщений: 474
Регистрация: 18.7.2011 Группа: Пользователи Наличность: 0 Из: Россия
Пользователь №: 13.815
Возраст: 32

|
Misc Uopilot ловит из буфера спец ключ misc и то что после него исполняет, функции и синтаксис должны быть на GML (это JS подобный язык в движке Game Maker).
Код set linedelay 20 set clipboard misc window_set_showborder(0) //Границы вокруг окна (0-1). set clipboard misc window_set_rectangle(600,0,400,20) //Позиция и растягивание размера окна (x, y, w, h). set clipboard misc window_set_stayontop(1) //Поверх всего (0-1). set clipboard misc t1x=4; t1y=2; t1t='Хп:' //Обьект текст1 (t1x=x, t1y=y, t1t=text) set clipboard misc t2x=100; t2y=2; t2t='Мп:' //Обьект текст2 set clipboard misc t3x=200; t3y=2; t3t='Стам:' //Обьект текст3 set clipboard misc t4x=300; t4y=2; t4t='Голд:' //Обьект текст4 set #hp 0 :re2 set clipboard misc t1t='Хп: ' + '#hp' //Динамическое изменение текста1 wait 100 set #hp #hp + 5 if #hp < 101 goto re2 end_if end_script Вариант 2: Код set linedelay 2 set #handleWin findwindow (Misc_uopilot) //Получение хендла окна миска set #result setwindowtext (#handleWin, misc window_set_showborder(0)) //Границы вокруг окна (0-1). set #result setwindowtext (#handleWin, misc window_set_rectangle(600,0,400,20)) //Позиция и растягивание размера окна (x, y, w, h). set #result setwindowtext (#handleWin, misc window_set_stayontop(1)) //Поверх всего (0-1). set #result setwindowtext (#handleWin, misc t1x=4; t1y=2; t1t='Хп:') //Обьект текст1 (t1x=x, t1y=y, t1t=text) set #result setwindowtext (#handleWin, misc t2x=100; t2y=2; t2t='Мп:') //Обьект текст2 set #result setwindowtext (#handleWin, misc t3x=200; t3y=2; t3t='Стам:') //Обьект текст3 set #result setwindowtext (#handleWin, misc t4x=300; t4y=2; t4t='Голд:') //Обьект текст4 set #hp 0 :re2 set #result setwindowtext (#handleWin, misc t1t='Хп: ' + '#hp') //Динамическое изменение текста1 wait 100 set #hp #hp + 5 if #hp < 101 goto re2 end_if end_script Выключается нажатием искейпа если активно его окно, либо из скрипта:
Код set clipboard misc game_end() Изменение размера окна:
Код set clipboard misc room_set_width(0,400) //Ширина (0, w). wait 20 set clipboard misc room_set_height(0,20) //Высота (0, h). wait 20 set clipboard misc room_restart()//Перезапуск окна, после этого все настройки сбиваются, поэтому делается в первую очередь. wait 20 end_script
Выполнение кода в миске происходит 1 раз при таком обращении: Код set clipboard misc room_set_height(0,20) или в альтернативном: set #handleWin findwindow (Misc_uopilot) //Получение хендла окна миска set #result setwindowtext (#handleWin, misc e_stp0='draw_rect_screen(1100,0,1150,20)') (Функция room_set_height(0,20) заносится в строковую переменную и выполняется, после чего переменная очищается(это может быть и не функция а большой кусок кода)) Для многократного выполнения есть спец переменные в которых код не очищается и выполняется 1 раз каждый шаг, шаг можно изменить, и пока он по умолчанию 5мс (200 раз в секунду=фпс 200) Обычные функции требующие постоянного выполнения должны быть в событии Step: e_stp0, e_stp1, e_stp2... e_stp10 Функции рисования должны быть в событии Draw:(за исключением функций рисования вне окна, они могут быть в step) e_drw0, e_drw1, e_drw2... e_drw10 Также есть таймерные события отличающиеся от step только тем что выполняются раз в 10, 100, 1000 шагов(IMG: style_emoticons/default/sad.gif)для повышения производительности) e_slow10 e_slow100 e_slow1000 Таким образом можно засунуть свой код в строковую переменную(например e_slow10), обработчик будет постоянно его выполнять до тех пор пока не завершена программа или не будет очищена переменная: Код set clipboard misc e_slow10='room_set_height(0,20)' set clipboard misc e_slow10=''
Отличие лишь в том что при таком обращении код помещается не в буфер а в заголовок окна миска, где он успешно отлавливается и выполняется, затем заголовок возвращается в исходное состояние:(misc_uopilot). Код set linedelay 0 set #handleWin findwindow (Misc_uopilot) //Получение хендла окна миска set #result setwindowtext (#handleWin, misc e_stp0='draw_rect_screen(1100,0,1150,20)') //Установка кода в качестве заголовка, через несколько мс вернется обратно //Обратная связь set $x 100 set #result setwindowtext (#handleWin, misc clipboard_set_text(string(random($x)))// Ответ будет в буфере set #result setwindowtext (#handleWin, misc room_caption=string(random($x))//Ответ будет в заголовке wait 2 set $x2 GetWindowtext (#handleWin) //Получаем ответ из заголовка, можно не успеть забрать или опоздать, до изменения заголовка обратно wait 20 get clipboard $x //Получаем ответ из буфера, намного надежнее msg $x $x2 end_script Графика на экране:
Есть функции рисования которых нет в документации (потому что они из дллки), полезны тем что в отличие от стандартных позволяют рисовать вне окна то есть в любом месте экрана: (линии, текст, прямоугольники) Код set linedelay 20 set clipboard misc set_pen(1,c_red) //Установка ширины линии и цвета(ширина, цвет). set clipboard misc set_brush(c_lime) //Установка цвета прямоугольника(цвет). set clipboard misc e_slow100='draw_rect_screen(1100,0,1150,20)' //Функция рисования прямоугольников на экране(лево, право, верх, низ). set clipboard misc e_drw0='draw_rect_screen(1155,0,1175,20)' set clipboard misc e_slow10='draw_line_screen(10,10,300,10)' //Функция рисования линий на экране(x1, y1, x2, y2). set clipboard misc e_stp0='draw_text_screen(1000,1,"Misc Uopilot",c_aqua)'//Функция рисования текста на экране(x, y, текст, цвет). //еще есть рисование текстуры но по крайней мере у меня оно начинает глючить через несколько минут //set clipboard misc pic = load_bitmap("1test.bmp") //Загрузка текстуры. //set clipboard misc e_stp1='draw_bitmap_screen(pic,400,0)'//Функция рисования текстуры на экране(x, y, текст, цвет). end_script Пример обратной связи:
Код set $x 100 set clipboard misc clipboard_set_text(string(random($x))) wait 20 get clipboard $x set clipboard "" msg $x end_script Скачать Misc Uopilot и документацию:
Дополнительное дополнение добавленное позже:
Дополнительно по миску, это отдельная программка, может взаимодействовать с пилотом, скомпилирована в движке game maker 8.0(или 8.1) . Миск может ВСЕ что есть в этом движке через выполнение кода движка (GML внутренний язык движка для программирования), именно этот код посылается из пилота в миск. Из этого следует, что для того что бы хорошо понять как работать с миском нужно знать этот движок. Если вы не знаете этот двиг, вы все равно можете хорошо понять что к чему если вы программист, по примерам, по приложенной документации движка. Если вы не знаете ни движок ни программирование (нормальное), вы не сможете хорошо понять как использовать миск, если только не потратите много времени на осознание и медитацию над пилотом и GM (время может быть меньше если вы уже знаете пилот, javascript и зашкаливает мотивация). Под "хорошо понять что к чему" имеется ввиду возможность делать действительно сложные вещи, такие как сеть, навороченный интерфейс или сложная игровая графика с логикой. Развивать миск можно но только в направлении уменьшения кода задач пользователей и удобства. http://rutracker.org/forum/viewtopic.php?t=2573603 Game Maker v8.0 Pro
--------------------
|
|
|
|
Сообщений в этой теме
EL-GReeN Misc Uopilot - GML Прибамбасы к пилоту 29.7.2012, 19:58 DarkMaster А более приземленно можно пояснить что это такое? ... 29.7.2012, 22:16 EL-GReeN
А более приземленно можно пояснить что это такое?... 29.7.2012, 22:32 Zeleax Мне тоже и интересно - что там есть такого, чего н... 29.7.2012, 22:24 DarkMaster Дык есть плагины, которые позволяют передавать стр... 29.7.2012, 22:34 DarkMaster EL-GReeN, я те в глаз дам. Сейчас сижу смотрю на ф... 29.7.2012, 23:59 Zeleax А не лучше ли направить усилия на разработку соотв... 30.7.2012, 11:28 EL-GReeN
А не лучше ли направить усилия на разработку соот... 30.7.2012, 12:24 WKnight Начиная с версии 1.07 beta x, пилот умеет общаться... 30.7.2012, 12:31 Zeleax Буфер сегодня ковырял, подозреваю что ускорить его... 30.7.2012, 12:37 WKnight Буфер как-раз по этому поводу и ковырял.
Есть зар... 30.7.2012, 12:58 EL-GReeN Добавил еще 1 способ обращения через заголовок, от... 30.7.2012, 16:10 DarkMaster Собственно с темой надо что-то делать. Терять ее в... 2.8.2012, 3:56 EL-GReeN Предлагаю эту тему оставить как есть найти не проб... 2.8.2012, 12:01 DarkMaster шибко не вчитывался, вроде норм. Завтра тему поле... 2.8.2012, 12:45 WKnight Буфер поправлен, а про какие операции с файлами и ... 3.8.2012, 2:37 Zeleax Да это я для обощения ситуации написал. Траблов вр... 3.8.2012, 9:13 asdvo1ty Ссылки побились. Перезалейте, пожалуйста. 4.9.2012, 12:38 Zeleax EL-GReeN писал:
Попробуйте скачать и запустить пр... 2.11.2012, 16:37 EL-GReeN Добавлена возможность(через расширение) посылать н... 3.11.2012, 10:13 Zeleax Хороший пример использования проверки зажатых клав... 17.3.2013, 14:15 IvaniuS скажу больше - для удобства можно писать текст про... 18.3.2013, 16:05 Zeleax так ведь можно просто одну длинную строку разбить ... 18.3.2013, 20:30
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|