Приветствую читателей!
Автор статьи HummerGame Maker не ограничивается только встроенными функциями. Можно подключить достаточно много других интересных и полезных функций. Их можно подключить с помощью Lib'ов, DLL'ок и gex'ов.
Статья о либах уже есть. Поэтому разумно написать о Dll и gex.
DLL (Dynamic-Link Library) является одним из расширений GM. Их великое множество, но все они подключаются к ГМ одинаково.
1) Нужно чтобы Dll лежала в папке с игрой, либо находилась по известному вам пути.
Например моя DLL находится по адресу "resourses\dlls" и называется add.dll. Она будет просто складывать введёные числа Учтём это на будущее
2) В каждой DLL находятся своеобразные хранилища функций. Поэтому нам нужно уметь обращаться к ним.
3) Подключение библиотеки осуществляется при помощи функции
external_define(dll,name,calltype,restype,argnumb,arg1type,arg2type, ...)
Где dll - имя библиотеки (или адресс к ней)
name - имя "хранилища"
calltype - тип вызова
restype - тип выхода (ty_real - числовое значение, ty_string - строковое)
argnumb - количество аргументов в вызове функции(!), и затем они перечисляются.
В нашем примере будет выглядеть так (создадим скрипт add_init)
adding=external_define('resourses\dlls\add.dll', "add", dll_stdcall, ty_real, 2, ty_real, ty_real)
То есть мы загрузили нашу библиотеку, результат будет числом (сумма чисел есть число), 2 аргумента в вызове функции и каждый тоже будет числом. Эта функция возвращает индекс "хранилища", поэтому занесём его в переменную (adding).
Что дальше? А дальше мы должны использовать вызванное "хранилище".
Чтобы исполнить то, что должно случиться, заюзаем этот код.
external_call(id,arg1,arg2,...)
id - индекс, вызванного "хранилища", и аргументы через запятую.
Напишем новый скрипт do_add (выполнить сложение)
return external_call(adding, argument0, argument1)
Вот и всё по части dll. Теперь создадим объект. В событии Create напишем
add_init()
Значит мы загрузили "хранилище".
В событии Press <Space> пишем
num1=get_integer('Ваше первое число', 0)
num2=get_integer('Ваше второе число', 0)
itog=do_add(num1, num2)
show_message(string(num1)+' + '+string(num2)+' = '+string(itog))//выводим результат
Вот и всё. Не страшно? Пример прилагается.
Итог 1: Скачивая dll для GM проследите, чтоб обязательно был пример со скриптами по его использованию! Иначе вы никак не сможете его заюзать
Итог 2: То dll, которое мы рассмотрели является примитивным. Совет используйте только нужные dll'ки, без которых действительно не обойтись, поскольку выемка и исполнение функций может сильно отразиться на fps игры, и производительность спадёт.
Итог-совет 3: в событии завершения игры воспользуйтесь функцией
external_free(dll)//выгружает dll с указаным именем
Переходим к gex'ам. С ними намного проще. Гексы (джексы, gex) это просто пакеты новых функций. Достаточно загрузить их.
Вот алгоритм действий
1. Если вы ещё не загружали скачанную gex, то
а) нажмите на зелёный плюсик на панели инструментов.
б) Нажмите кнопку
в) найдите и выберите ваш файл (.gex)
г) Выберите его из нового списка доступных пакетов и нажмите синюю стрелку (подключение) и ОК
2 Если же вы этот пакет загружали, то выполните только пункт
г)Всё! Также можно посмотреть список доступных функций и переменный (из пакета)
Скрипты->Показать расширенные функции/переменные. Теперь это обычный код)
Также проконтролируйте, чтобы был пример по функциям, или хотя бы справка.
Поздравляю, ваш лексикон пополнен двумя новыми словами! Теперь вам их бояться нечего! Удачи в игрострое!
Полезно почитать
http://forum.hellroom.ru/index.php/topic,3173.0.html - Статья о либ-библиотеках. (Автор
VeGaS)
http://forum.hellroom.ru/index.php/board,26.0.html - подраздел с dll библиотеками
http://forum.hellroom.ru/index.php/board,23.0.html - подраздел расширениями (.gex)