Многие, наверное, помнят старую добрую функцию из Game Maker 8 «sleep». Она позволяла на определенное время прекращать весь процесс игры.
Но к сожалению, ее убрали в GMS, и для того, чтобы ее реализовать, приходится писать собственный велосипед.
На днях решил набросать простую DLL-ку, которая вернет эту функцию. Все возможности этого метода остаются такими же, какими и были в GM8.
Инструкция по установке:
Далее создаем скрипт «dll_init», в нем прописываем:
Тут мы создаем переменную-ссылку на функцию из нашего dll.
Первый аргумент – это название самой dll, как ни странно, второй – название самой функции, прописанной в исходном коде, третий – тип возвращаемого значение, оно по умолчанию всегда будет возвращать 0, четвертый – тип вызова, в нашем случае dll_cdecl, так как DLL писалась на C++, пятое – количество аргументов, в нашем случае 1, а далее уже по количеству аргументов вводим их типы по порядку.
После этого создаем саму функцию «sleep», в ней прописываем:
Тут думаю все понятно, возвращаемое значение по умолчанию будет равно 0, аргумент этой функции – время, на которое приостановится игра.
После использования, в конце игры не забываем удалить наш dll, очистив память:
Пример использования:
При нажатии на клавишу «1», игра приостановится на 5 секунд, после этого выведет сообщение «DLL Work» через всплывающее окно.
Все нужные файлы вы можете найти вот тут:
За функцию «sleep»в видо DLL для любых версий Game Maker спасибо Даниле Рафикову и ютуб каналу Having Team.
Но к сожалению, ее убрали в GMS, и для того, чтобы ее реализовать, приходится писать собственный велосипед.

На днях решил набросать простую 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.