Блог ☯

пятница, 12 мая 2017 г.

Функция «sleep» для Game Maker (DLL)

Многие, наверное, помнят старую добрую функцию из Game Maker 8 «sleep». Она позволяла на определенное время прекращать весь процесс игры. Но к сожалению, ее убрали в GMS, и для того, чтобы ее реализовать, приходится писать собственный велосипед.

Функция «sleep» для Game Maker (DLL)

На днях решил набросать простую DLL-ку, которая вернет эту функцию. Все возможности этого метода остаются такими же, какими и были в GM8.

Инструкция по установке:

Сначала добавляем fsleep.dll в проект.

Далее создаем скрипт «dll_init», в нем прописываем:

dll_sleep = external_define("lsleep.dll","sleep",dll_cdecl,ty_real,1,ty_real);

Тут мы создаем переменную-ссылку на функцию из нашего dll.

Первый аргумент – это название самой dll, как ни странно, второй – название самой функции, прописанной в исходном коде, третий – тип возвращаемого значение, оно по умолчанию всегда будет возвращать 0, четвертый – тип вызова, в нашем случае dll_cdecl, так как DLL писалась на C++, пятое – количество аргументов, в нашем случае 1, а далее уже по количеству аргументов вводим их типы по порядку.

После этого создаем саму функцию «sleep», в ней прописываем:

return external_call(dll_sleep,argument0);

Тут думаю все понятно, возвращаемое значение по умолчанию будет равно 0, аргумент этой функции – время, на которое приостановится игра.

После использования, в конце игры не забываем удалить наш dll, очистив память:

external_free("lsleep.dll");

Пример использования:

#Step
if keyboard_check_pressed(ord("1"))
{
sleep(5000);
show_message("DLL Work!");
}

При нажатии на клавишу «1», игра приостановится на 5 секунд, после этого выведет сообщение «DLL Work».

Все нужные файлы вы можете найти вот тут:

https://vk.com/wall-130796011_865

За функцию «sleep»в видо DLL для любых версий Game Maker спасибо Даниле Рафикову и ютуб каналу Having Team.